]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
phy: qcom-qmp-combo: Use regulator_bulk_data with init_load_uA for regulator setup
authorFaisal Hassan <faisal.hassan@oss.qualcomm.com>
Mon, 22 Sep 2025 13:59:01 +0000 (19:29 +0530)
committerVinod Koul <vkoul@kernel.org>
Thu, 20 Nov 2025 13:56:30 +0000 (19:26 +0530)
Replace the custom qmp_regulator_data structure with the standard
regulator_bulk_data and use the init_load_uA field to set regulator
load during initialization.

This change simplifies the regulator setup by removing manual
allocation and load configuration logic, and leverages
devm_regulator_bulk_get_const() to automatically apply load settings
before enabling regulators.

Signed-off-by: Faisal Hassan <faisal.hassan@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Bjorn Andersson <andersson@kernel.org>
Link: https://patch.msgid.link/20250922135901.2067-1-faisal.hassan@oss.qualcomm.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/qualcomm/phy-qcom-qmp-combo.c

index 7b5af30f1d028c592500e723ecd27b54ed554709..19a72fb1b8356498c6a6769eb240e4575a6536ef 100644 (file)
@@ -1643,14 +1643,9 @@ static const struct qmp_phy_init_tbl x1e80100_usb43dp_pcs_usb_tbl[] = {
 };
 
 /* list of regulators */
-struct qmp_regulator_data {
-       const char *name;
-       unsigned int enable_load;
-};
-
-static struct qmp_regulator_data qmp_phy_vreg_l[] = {
-       { .name = "vdda-phy", .enable_load = 21800 },
-       { .name = "vdda-pll", .enable_load = 36000 },
+static struct regulator_bulk_data qmp_phy_vreg_l[] = {
+       { .supply = "vdda-phy", .init_load_uA = 21800, },
+       { .supply = "vdda-pll", .init_load_uA = 36000, },
 };
 
 static const u8 qmp_dp_v3_pre_emphasis_hbr3_hbr2[4][4] = {
@@ -1808,7 +1803,7 @@ struct qmp_phy_cfg {
        const char * const *reset_list;
        int num_resets;
        /* regulators to be requested */
-       const struct qmp_regulator_data *vreg_list;
+       const struct regulator_bulk_data *vreg_list;
        int num_vregs;
 
        /* array of registers with different offsets */
@@ -3439,39 +3434,6 @@ static const struct dev_pm_ops qmp_combo_pm_ops = {
                           qmp_combo_runtime_resume, NULL)
 };
 
-static int qmp_combo_vreg_init(struct qmp_combo *qmp)
-{
-       const struct qmp_phy_cfg *cfg = qmp->cfg;
-       struct device *dev = qmp->dev;
-       int num = cfg->num_vregs;
-       int ret, i;
-
-       qmp->vregs = devm_kcalloc(dev, num, sizeof(*qmp->vregs), GFP_KERNEL);
-       if (!qmp->vregs)
-               return -ENOMEM;
-
-       for (i = 0; i < num; i++)
-               qmp->vregs[i].supply = cfg->vreg_list[i].name;
-
-       ret = devm_regulator_bulk_get(dev, num, qmp->vregs);
-       if (ret) {
-               dev_err(dev, "failed at devm_regulator_bulk_get\n");
-               return ret;
-       }
-
-       for (i = 0; i < num; i++) {
-               ret = regulator_set_load(qmp->vregs[i].consumer,
-                                       cfg->vreg_list[i].enable_load);
-               if (ret) {
-                       dev_err(dev, "failed to set load at %s\n",
-                               qmp->vregs[i].supply);
-                       return ret;
-               }
-       }
-
-       return 0;
-}
-
 static int qmp_combo_reset_init(struct qmp_combo *qmp)
 {
        const struct qmp_phy_cfg *cfg = qmp->cfg;
@@ -4144,7 +4106,8 @@ static int qmp_combo_probe(struct platform_device *pdev)
        if (ret)
                return ret;
 
-       ret = qmp_combo_vreg_init(qmp);
+       ret = devm_regulator_bulk_get_const(dev, qmp->cfg->num_vregs,
+                                       qmp->cfg->vreg_list, &qmp->vregs);
        if (ret)
                return ret;