return psec->attached_phydev->attached_dev;
 }
 
+/**
+ * pse_pi_is_hw_enabled - Is PI enabled at the hardware level
+ * @pcdev: a pointer to the PSE controller device
+ * @id: Index of the PI
+ *
+ * Return: 1 if the PI is enabled at the hardware level, 0 if not, and
+ *        a failure value on error
+ */
+static int pse_pi_is_hw_enabled(struct pse_controller_dev *pcdev, int id)
+{
+       struct pse_admin_state admin_state = {0};
+       int ret;
+
+       ret = pcdev->ops->pi_get_admin_state(pcdev, id, &admin_state);
+       if (ret < 0)
+               return ret;
+
+       /* PI is well enabled at the hardware level */
+       if (admin_state.podl_admin_state == ETHTOOL_PODL_PSE_ADMIN_STATE_ENABLED ||
+           admin_state.c33_admin_state == ETHTOOL_C33_PSE_ADMIN_STATE_ENABLED)
+               return 1;
+
+       return 0;
+}
+
 static int pse_pi_is_enabled(struct regulator_dev *rdev)
 {
        struct pse_controller_dev *pcdev = rdev_get_drvdata(rdev);
-       struct pse_admin_state admin_state = {0};
        const struct pse_controller_ops *ops;
        int id, ret;
 
 
        id = rdev_get_id(rdev);
        mutex_lock(&pcdev->lock);
-       ret = ops->pi_get_admin_state(pcdev, id, &admin_state);
-       if (ret)
-               goto out;
-
-       if (admin_state.podl_admin_state == ETHTOOL_PODL_PSE_ADMIN_STATE_ENABLED ||
-           admin_state.c33_admin_state == ETHTOOL_C33_PSE_ADMIN_STATE_ENABLED)
-               ret = 1;
-
-out:
+       ret = pse_pi_is_hw_enabled(pcdev, id);
        mutex_unlock(&pcdev->lock);
 
        return ret;