diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2016-11-10 15:14:32 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-11-10 15:14:32 -0800 |
commit | dc30c737b083a283221628514759c220c9c9087f (patch) | |
tree | 74e51e5d572a91e7130cc826e4ac5704e9abcd20 | |
parent | 803c0239eed0d4c046dc0737866cbab304748221 (diff) | |
parent | bcac9ef54a175f8b3e1a2dd1be68e6e97afa7ac3 (diff) |
Merge "regulator: qpnp-labibb: Rename properties to reflect the vendor"
-rw-r--r-- | Documentation/devicetree/bindings/regulator/qpnp-labibb-regulator.txt | 12 | ||||
-rw-r--r-- | arch/arm/boot/dts/qcom/apq8096-auto-dragonboard.dtsi | 2 | ||||
-rw-r--r-- | arch/arm/boot/dts/qcom/apq8096-dragonboard.dtsi | 2 | ||||
-rw-r--r-- | arch/arm/boot/dts/qcom/apq8096-sbc.dtsi | 2 | ||||
-rw-r--r-- | arch/arm/boot/dts/qcom/msm8996-cdp.dtsi | 2 | ||||
-rw-r--r-- | arch/arm/boot/dts/qcom/msm8996-dtp.dtsi | 4 | ||||
-rw-r--r-- | arch/arm/boot/dts/qcom/msm8996-fluid.dtsi | 2 | ||||
-rw-r--r-- | arch/arm/boot/dts/qcom/msm8996-liquid.dtsi | 2 | ||||
-rw-r--r-- | arch/arm/boot/dts/qcom/msm8996-mtp.dtsi | 2 | ||||
-rw-r--r-- | arch/arm/boot/dts/qcom/msmcobalt-cdp.dtsi | 2 | ||||
-rw-r--r-- | arch/arm/boot/dts/qcom/msmcobalt-mtp.dtsi | 2 | ||||
-rw-r--r-- | arch/arm/boot/dts/qcom/msmcobalt-qrd-skuk.dtsi | 2 | ||||
-rw-r--r-- | arch/arm/boot/dts/qcom/msmcobalt-qrd.dtsi | 2 | ||||
-rw-r--r-- | drivers/regulator/qpnp-labibb-regulator.c | 154 |
14 files changed, 109 insertions, 83 deletions
diff --git a/Documentation/devicetree/bindings/regulator/qpnp-labibb-regulator.txt b/Documentation/devicetree/bindings/regulator/qpnp-labibb-regulator.txt index 7be400da0d62..b3775ae44de0 100644 --- a/Documentation/devicetree/bindings/regulator/qpnp-labibb-regulator.txt +++ b/Documentation/devicetree/bindings/regulator/qpnp-labibb-regulator.txt @@ -8,7 +8,7 @@ display panels, LCD or AMOLED. Main node required properties: - compatible: Must be "qcom,qpnp-labibb-regulator" -- qpnp,qpnp-labibb-mode: A string used to specify the working mode of LAB/IBB +- qcom,qpnp-labibb-mode: A string used to specify the working mode of LAB/IBB regulators when bootloader does not turned on the display panel. Could be "lcd" or "amoled". "lcd" means using LAB and IBB regulators are @@ -26,9 +26,9 @@ Main node optional properties: in LAB and IBB modules. Make sure the hardware has needed support before enabling this property. -- qpnp,swire-control: A bool property which indicates if the LAB/IBB is +- qcom,swire-control: A bool property which indicates if the LAB/IBB is controlled by the SWIRE interface. Enable only - if qpnp,qpnp-labibb-mode = "amoled". + if qcom,qpnp-labibb-mode = "amoled". - qcom,labibb-ttw-force-lab-on: A boolean property which forces LAB to be always on during TTW mode. - qcom,skip-2nd-swire-cmd: A boolean property which indicates if @@ -95,7 +95,7 @@ LAB subnode required properties: LAB subnode optional properties: -- qpnp,qpnp-lab-current-sense: If this property is specified, the LAB current +- qcom,qpnp-lab-current-sense: If this property is specified, the LAB current sense gain will be programmed for LAB regulator. Otherwise, LAB current sense gain will be default to "1x". A string is used to specify the @@ -209,7 +209,7 @@ IBB subnode optional properties: any value in the allowed limit. - qcom,output-voltage-one-pulse The expected voltage (in mV) of VDISN signal on the first SWIRE pulse. This property - can be specified only if 'qpnp,swire-control' + can be specified only if 'qcom,swire-control' is defined. The minimum and maximum values are 1400mV and 7700mV. @@ -219,7 +219,7 @@ Example: compatible = "qcom,qpnp-labibb-regulator"; #address-cells = <1>; #size-cells = <1>; - qpnp,qpnp-labibb-mode = "lcd"; + qcom,qpnp-labibb-mode = "lcd"; qcom,pmic-revid = <&pmi8994_revid>; qcom,skip-2nd-swire-cmd; diff --git a/arch/arm/boot/dts/qcom/apq8096-auto-dragonboard.dtsi b/arch/arm/boot/dts/qcom/apq8096-auto-dragonboard.dtsi index 9083c89802f3..70156b1f8493 100644 --- a/arch/arm/boot/dts/qcom/apq8096-auto-dragonboard.dtsi +++ b/arch/arm/boot/dts/qcom/apq8096-auto-dragonboard.dtsi @@ -361,7 +361,7 @@ &labibb { status = "ok"; - qpnp,qpnp-labibb-mode = "lcd"; + qcom,qpnp-labibb-mode = "lcd"; }; &ibb_regulator { diff --git a/arch/arm/boot/dts/qcom/apq8096-dragonboard.dtsi b/arch/arm/boot/dts/qcom/apq8096-dragonboard.dtsi index a2085945ac33..a7482bcce112 100644 --- a/arch/arm/boot/dts/qcom/apq8096-dragonboard.dtsi +++ b/arch/arm/boot/dts/qcom/apq8096-dragonboard.dtsi @@ -361,7 +361,7 @@ &labibb { status = "ok"; - qpnp,qpnp-labibb-mode = "lcd"; + qcom,qpnp-labibb-mode = "lcd"; }; &rpm_bus { diff --git a/arch/arm/boot/dts/qcom/apq8096-sbc.dtsi b/arch/arm/boot/dts/qcom/apq8096-sbc.dtsi index 4e7379d9e164..0ee28c2c427e 100644 --- a/arch/arm/boot/dts/qcom/apq8096-sbc.dtsi +++ b/arch/arm/boot/dts/qcom/apq8096-sbc.dtsi @@ -364,7 +364,7 @@ &labibb { status = "ok"; - qpnp,qpnp-labibb-mode = "lcd"; + qcom,qpnp-labibb-mode = "lcd"; }; &ibb_regulator { diff --git a/arch/arm/boot/dts/qcom/msm8996-cdp.dtsi b/arch/arm/boot/dts/qcom/msm8996-cdp.dtsi index 1c85e13aa0f8..165c7de039e5 100644 --- a/arch/arm/boot/dts/qcom/msm8996-cdp.dtsi +++ b/arch/arm/boot/dts/qcom/msm8996-cdp.dtsi @@ -387,7 +387,7 @@ &labibb { status = "ok"; - qpnp,qpnp-labibb-mode = "lcd"; + qcom,qpnp-labibb-mode = "lcd"; }; &dsi_dual_sharp_video { diff --git a/arch/arm/boot/dts/qcom/msm8996-dtp.dtsi b/arch/arm/boot/dts/qcom/msm8996-dtp.dtsi index 19d052791c9a..5c62766b1a26 100644 --- a/arch/arm/boot/dts/qcom/msm8996-dtp.dtsi +++ b/arch/arm/boot/dts/qcom/msm8996-dtp.dtsi @@ -1,4 +1,4 @@ -/* Copyright (c) 2015, The Linux Foundation. All rights reserved. +/* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -452,7 +452,7 @@ &labibb { status = "ok"; - qpnp,qpnp-labibb-mode = "lcd"; + qcom,qpnp-labibb-mode = "lcd"; }; &mdss_mdp { diff --git a/arch/arm/boot/dts/qcom/msm8996-fluid.dtsi b/arch/arm/boot/dts/qcom/msm8996-fluid.dtsi index 550da56520f8..baecf4b8574e 100644 --- a/arch/arm/boot/dts/qcom/msm8996-fluid.dtsi +++ b/arch/arm/boot/dts/qcom/msm8996-fluid.dtsi @@ -636,7 +636,7 @@ &labibb { status = "ok"; - qpnp,qpnp-labibb-mode = "lcd"; + qcom,qpnp-labibb-mode = "lcd"; }; &pmi8994_mpps { diff --git a/arch/arm/boot/dts/qcom/msm8996-liquid.dtsi b/arch/arm/boot/dts/qcom/msm8996-liquid.dtsi index 33397e3e4762..dae7306cdd07 100644 --- a/arch/arm/boot/dts/qcom/msm8996-liquid.dtsi +++ b/arch/arm/boot/dts/qcom/msm8996-liquid.dtsi @@ -319,7 +319,7 @@ &labibb { status = "ok"; - qpnp,qpnp-labibb-mode = "lcd"; + qcom,qpnp-labibb-mode = "lcd"; }; &dsi_dual_jdi_4k_nofbc_video { diff --git a/arch/arm/boot/dts/qcom/msm8996-mtp.dtsi b/arch/arm/boot/dts/qcom/msm8996-mtp.dtsi index 07cb98860498..27d3eea5bc20 100644 --- a/arch/arm/boot/dts/qcom/msm8996-mtp.dtsi +++ b/arch/arm/boot/dts/qcom/msm8996-mtp.dtsi @@ -368,7 +368,7 @@ &labibb { status = "ok"; - qpnp,qpnp-labibb-mode = "lcd"; + qcom,qpnp-labibb-mode = "lcd"; }; &dsi_dual_sharp_video { diff --git a/arch/arm/boot/dts/qcom/msmcobalt-cdp.dtsi b/arch/arm/boot/dts/qcom/msmcobalt-cdp.dtsi index 9b9b863c1847..fd4799f29370 100644 --- a/arch/arm/boot/dts/qcom/msmcobalt-cdp.dtsi +++ b/arch/arm/boot/dts/qcom/msmcobalt-cdp.dtsi @@ -299,7 +299,7 @@ &labibb { status = "ok"; - qpnp,qpnp-labibb-mode = "lcd"; + qcom,qpnp-labibb-mode = "lcd"; }; &pmicobalt_wled { diff --git a/arch/arm/boot/dts/qcom/msmcobalt-mtp.dtsi b/arch/arm/boot/dts/qcom/msmcobalt-mtp.dtsi index 81f53f1512fd..88a584cf8964 100644 --- a/arch/arm/boot/dts/qcom/msmcobalt-mtp.dtsi +++ b/arch/arm/boot/dts/qcom/msmcobalt-mtp.dtsi @@ -362,7 +362,7 @@ &labibb { status = "ok"; - qpnp,qpnp-labibb-mode = "lcd"; + qcom,qpnp-labibb-mode = "lcd"; }; &pmicobalt_wled { diff --git a/arch/arm/boot/dts/qcom/msmcobalt-qrd-skuk.dtsi b/arch/arm/boot/dts/qcom/msmcobalt-qrd-skuk.dtsi index 58471f6d0fd1..b15b25d076e4 100644 --- a/arch/arm/boot/dts/qcom/msmcobalt-qrd-skuk.dtsi +++ b/arch/arm/boot/dts/qcom/msmcobalt-qrd-skuk.dtsi @@ -184,7 +184,7 @@ &labibb { status = "ok"; - qpnp,qpnp-labibb-mode = "lcd"; + qcom,qpnp-labibb-mode = "lcd"; }; &dsi_dual_jdi_a407_cmd { diff --git a/arch/arm/boot/dts/qcom/msmcobalt-qrd.dtsi b/arch/arm/boot/dts/qcom/msmcobalt-qrd.dtsi index 682ea8a260ef..6483453ec5fa 100644 --- a/arch/arm/boot/dts/qcom/msmcobalt-qrd.dtsi +++ b/arch/arm/boot/dts/qcom/msmcobalt-qrd.dtsi @@ -260,7 +260,7 @@ &labibb { status = "ok"; - qpnp,qpnp-labibb-mode = "lcd"; + qcom,qpnp-labibb-mode = "lcd"; }; &pmicobalt_wled { diff --git a/drivers/regulator/qpnp-labibb-regulator.c b/drivers/regulator/qpnp-labibb-regulator.c index 2e41401f8580..445dfa6fc513 100644 --- a/drivers/regulator/qpnp-labibb-regulator.c +++ b/drivers/regulator/qpnp-labibb-regulator.c @@ -253,12 +253,6 @@ #define SWIRE_DEFAULT_2ND_CMD_DLY_MS 20 #define SWIRE_DEFAULT_IBB_PS_ENABLE_DLY_MS 200 -enum pmic_subtype { - PMI8994 = 10, - PMI8950 = 17, - PMI8996 = 19, -}; - /** * enum qpnp_labibb_mode - working mode of LAB/IBB regulators * %QPNP_LABIBB_LCD_MODE: configure LAB and IBB regulators @@ -539,60 +533,58 @@ static struct settings lab_settings[LAB_SETTINGS_MAX] = { SETTING(LAB_RDSON_MNGMNT, false), }; -static int -qpnp_labibb_read(struct qpnp_labibb *labibb, u8 *val, - u16 base, int count) +static int qpnp_labibb_read(struct qpnp_labibb *labibb, u8 *val, u16 address, + int count) { int rc = 0; struct platform_device *pdev = labibb->pdev; - if (base == 0) { - pr_err("base cannot be zero base=0x%02x sid=0x%02x rc=%d\n", - base, to_spmi_device(pdev->dev.parent)->usid, rc); + if (address == 0) { + pr_err("address cannot be zero address=0x%02x sid=0x%02x rc=%d\n", + address, to_spmi_device(pdev->dev.parent)->usid, rc); return -EINVAL; } - rc = regmap_bulk_read(labibb->regmap, base, val, count); + rc = regmap_bulk_read(labibb->regmap, address, val, count); if (rc) { - pr_err("SPMI read failed base=0x%02x sid=0x%02x rc=%d\n", base, - to_spmi_device(pdev->dev.parent)->usid, rc); + pr_err("SPMI read failed address=0x%02x sid=0x%02x rc=%d\n", + address, to_spmi_device(pdev->dev.parent)->usid, rc); return rc; } + return 0; } -static int -qpnp_labibb_write(struct qpnp_labibb *labibb, u16 base, - u8 *val, int count) +static int qpnp_labibb_write(struct qpnp_labibb *labibb, u16 address, u8 *val, + int count) { int rc = 0; struct platform_device *pdev = labibb->pdev; - if (base == 0) { - pr_err("base cannot be zero base=0x%02x sid=0x%02x rc=%d\n", - base, to_spmi_device(pdev->dev.parent)->usid, rc); + if (address == 0) { + pr_err("address cannot be zero address=0x%02x sid=0x%02x rc=%d\n", + address, to_spmi_device(pdev->dev.parent)->usid, rc); return -EINVAL; } - rc = regmap_bulk_write(labibb->regmap, base, val, count); + rc = regmap_bulk_write(labibb->regmap, address, val, count); if (rc) { - pr_err("write failed base=0x%02x sid=0x%02x rc=%d\n", - base, to_spmi_device(pdev->dev.parent)->usid, rc); + pr_err("write failed address=0x%02x sid=0x%02x rc=%d\n", + address, to_spmi_device(pdev->dev.parent)->usid, rc); return rc; } return 0; } -static int -qpnp_labibb_masked_write(struct qpnp_labibb *labibb, u16 base, - u8 mask, u8 val) +static int qpnp_labibb_masked_write(struct qpnp_labibb *labibb, u16 address, + u8 mask, u8 val) { int rc; - rc = regmap_update_bits(labibb->regmap, base, mask, val); + rc = regmap_update_bits(labibb->regmap, address, mask, val); if (rc) { - pr_err("spmi write failed: addr=%03X, rc=%d\n", base, rc); + pr_err("spmi write failed: addr=%03X, rc=%d\n", address, rc); return rc; } @@ -709,18 +701,24 @@ static int qpnp_lab_dt_init(struct qpnp_labibb *labibb, u8 i, val; u32 tmp; - if (labibb->mode == QPNP_LABIBB_LCD_MODE) - val = REG_LAB_IBB_LCD_MODE; - else - val = REG_LAB_IBB_AMOLED_MODE; + /* + * Do not configure LCD_AMOLED_SEL for pmicobalt as it will be done by + * GPIO selector. + */ + if (labibb->pmic_rev_id->pmic_subtype != PMICOBALT_SUBTYPE) { + if (labibb->mode == QPNP_LABIBB_LCD_MODE) + val = REG_LAB_IBB_LCD_MODE; + else + val = REG_LAB_IBB_AMOLED_MODE; - rc = qpnp_labibb_sec_write(labibb, labibb->lab_base, - REG_LAB_LCD_AMOLED_SEL, &val, 1); + rc = qpnp_labibb_sec_write(labibb, labibb->lab_base, + REG_LAB_LCD_AMOLED_SEL, &val, 1); - if (rc) { - pr_err("qpnp_lab_sec_write register %x failed rc = %d\n", - REG_LAB_LCD_AMOLED_SEL, rc); - return rc; + if (rc) { + pr_err("qpnp_lab_sec_write register %x failed rc = %d\n", + REG_LAB_LCD_AMOLED_SEL, rc); + return rc; + } } val = 0; @@ -1172,7 +1170,7 @@ static int qpnp_labibb_regulator_ttw_mode_enter(struct qpnp_labibb *labibb) } val = LAB_SPARE_DISABLE_SCP_BIT; - if (labibb->pmic_rev_id->pmic_subtype != PMI8950) + if (labibb->pmic_rev_id->pmic_subtype != PMI8950_SUBTYPE) val |= LAB_SPARE_TOUCH_WAKE_BIT; rc = qpnp_labibb_write(labibb, labibb->lab_base + REG_LAB_SPARE_CTL, &val, 1); @@ -1199,10 +1197,10 @@ static int qpnp_labibb_regulator_ttw_mode_enter(struct qpnp_labibb *labibb) } switch (labibb->pmic_rev_id->pmic_subtype) { - case PMI8996: + case PMI8996_SUBTYPE: rc = qpnp_labibb_ttw_enter_ibb_pmi8996(labibb); break; - case PMI8950: + case PMI8950_SUBTYPE: rc = qpnp_labibb_ttw_enter_ibb_pmi8950(labibb); break; } @@ -1282,9 +1280,9 @@ static int qpnp_labibb_regulator_ttw_mode_exit(struct qpnp_labibb *labibb) } switch (labibb->pmic_rev_id->pmic_subtype) { - case PMI8996: - case PMI8994: - case PMI8950: + case PMI8996_SUBTYPE: + case PMI8994_SUBTYPE: + case PMI8950_SUBTYPE: rc = qpnp_labibb_ttw_exit_ibb_common(labibb); break; } @@ -1784,16 +1782,16 @@ static int register_qpnp_lab_regulator(struct qpnp_labibb *labibb, } if (of_find_property(of_node, - "qpnp,qpnp-lab-current-sense", NULL)) { + "qcom,qpnp-lab-current-sense", NULL)) { config_current_sense = true; rc = of_property_read_string(of_node, - "qpnp,qpnp-lab-current-sense", + "qcom,qpnp-lab-current-sense", ¤t_sense_str); if (!rc) { val = qpnp_labibb_get_matching_idx( current_sense_str); } else { - pr_err("qpnp,qpnp-lab-current-sense configured incorrectly rc = %d\n", + pr_err("qcom,qpnp-lab-current-sense configured incorrectly rc = %d\n", rc); return rc; } @@ -1966,18 +1964,37 @@ static int qpnp_ibb_dt_init(struct qpnp_labibb *labibb, u32 i, tmp; u8 val; - if (labibb->mode == QPNP_LABIBB_LCD_MODE) - val = REG_LAB_IBB_LCD_MODE; - else - val = REG_LAB_IBB_AMOLED_MODE; + /* + * Do not configure LCD_AMOLED_SEL for pmicobalt as it will be done by + * GPIO selector. Override the labibb->mode with what was configured + * by the bootloader. + */ + if (labibb->pmic_rev_id->pmic_subtype == PMICOBALT_SUBTYPE) { + rc = qpnp_labibb_read(labibb, &val, + labibb->ibb_base + REG_IBB_LCD_AMOLED_SEL, 1); + if (rc) { + pr_err("qpnp_labibb_read register %x failed rc = %d\n", + REG_IBB_LCD_AMOLED_SEL, rc); + return rc; + } - rc = qpnp_labibb_sec_write(labibb, labibb->ibb_base, - REG_LAB_LCD_AMOLED_SEL, &val, 1); + if (val == REG_LAB_IBB_AMOLED_MODE) + labibb->mode = QPNP_LABIBB_AMOLED_MODE; + else + labibb->mode = QPNP_LABIBB_LCD_MODE; + } else { + if (labibb->mode == QPNP_LABIBB_LCD_MODE) + val = REG_LAB_IBB_LCD_MODE; + else + val = REG_LAB_IBB_AMOLED_MODE; - if (rc) { - pr_err("qpnp_labibb_sec_write register %x failed rc = %d\n", - REG_IBB_LCD_AMOLED_SEL, rc); - return rc; + rc = qpnp_labibb_sec_write(labibb, labibb->ibb_base, + REG_LAB_LCD_AMOLED_SEL, &val, 1); + if (rc) { + pr_err("qpnp_labibb_sec_write register %x failed rc = %d\n", + REG_IBB_LCD_AMOLED_SEL, rc); + return rc; + } } rc = of_property_read_u32(of_node, "qcom,qpnp-ibb-lab-pwrdn-delay", @@ -2482,6 +2499,13 @@ static int register_qpnp_ibb_regulator(struct qpnp_labibb *labibb, return rc; } + /* + * For pmicobalt, override swire_control with what was configured + * before by the bootloader. + */ + if (labibb->pmic_rev_id->pmic_subtype == PMICOBALT_SUBTYPE) + labibb->swire_control = val & IBB_ENABLE_CTL_SWIRE_RDY; + if (ibb_enable_ctl & (IBB_ENABLE_CTL_SWIRE_RDY | IBB_ENABLE_CTL_MODULE_EN)) { /* SWIRE_RDY or IBB_MODULE_EN enabled */ @@ -2684,7 +2708,7 @@ static int qpnp_labibb_check_ttw_supported(struct qpnp_labibb *labibb) u8 val; switch (labibb->pmic_rev_id->pmic_subtype) { - case PMI8996: + case PMI8996_SUBTYPE: rc = qpnp_labibb_read(labibb, &val, labibb->ibb_base + REG_IBB_REVISION4, 1); if (rc) { @@ -2702,7 +2726,7 @@ static int qpnp_labibb_check_ttw_supported(struct qpnp_labibb *labibb) /* FORCE_LAB_ON in TTW is not required for PMI8996 */ labibb->ttw_force_lab_on = false; break; - case PMI8950: + case PMI8950_SUBTYPE: /* TTW supported for all revisions */ break; default: @@ -2753,19 +2777,19 @@ static int qpnp_labibb_regulator_probe(struct platform_device *pdev) } rc = of_property_read_string(labibb->dev->of_node, - "qpnp,qpnp-labibb-mode", &mode_name); + "qcom,qpnp-labibb-mode", &mode_name); if (!rc) { if (strcmp("lcd", mode_name) == 0) { labibb->mode = QPNP_LABIBB_LCD_MODE; } else if (strcmp("amoled", mode_name) == 0) { labibb->mode = QPNP_LABIBB_AMOLED_MODE; } else { - pr_err("Invalid device property in qpnp,qpnp-labibb-mode: %s\n", + pr_err("Invalid device property in qcom,qpnp-labibb-mode: %s\n", mode_name); return -EINVAL; } } else { - pr_err("qpnp_labibb: qpnp,qpnp-labibb-mode is missing.\n"); + pr_err("qpnp_labibb: qcom,qpnp-labibb-mode is missing.\n"); return rc; } @@ -2783,11 +2807,12 @@ static int qpnp_labibb_regulator_probe(struct platform_device *pdev) labibb->dev->of_node, "qcom,labibb-ttw-force-lab-on"); labibb->swire_control = of_property_read_bool(labibb->dev->of_node, - "qpnp,swire-control"); + "qcom,swire-control"); if (labibb->swire_control && labibb->mode != QPNP_LABIBB_AMOLED_MODE) { pr_err("Invalid mode for SWIRE control\n"); return -EINVAL; } + if (labibb->swire_control) { labibb->skip_2nd_swire_cmd = of_property_read_bool(labibb->dev->of_node, @@ -2811,6 +2836,7 @@ static int qpnp_labibb_regulator_probe(struct platform_device *pdev) pr_err("no child nodes\n"); return -ENXIO; } + for_each_available_child_of_node(pdev->dev.of_node, child) { rc = of_property_read_u32(child, "reg", &base); if (rc < 0) { |