On Thu, Oct 10, 2013 at 02:41:36AM +0100, Chanwoo Choi wrote: > The s5m8767 regulator driver parse always the voltage table of buck2/3/4. > If gpio_dvs feature isn't used and dts haven't included the voltage table > of buck2/3/4, s5m8767 regulator driver return error and file probe state. > > This patch check only voltage table of buck on s5m8767_pmic_dt_parse_pdata() > if buck[2-4]_gpiodvs is true. > > Signed-off-by: Chanwoo Choi <cw00.choi@xxxxxxxxxxx> > Signed-off-by: YoungJun Cho <yj44.cho@xxxxxxxxxxx> > Signed-off-by: Kyungmin Park <kyungmin.park@xxxxxxxxxxx> > --- > drivers/regulator/s5m8767.c | 54 +++++++++++++++++++++++---------------------- > 1 file changed, 28 insertions(+), 26 deletions(-) > > diff --git a/drivers/regulator/s5m8767.c b/drivers/regulator/s5m8767.c > index cb6cdb3..29999c0 100644 > --- a/drivers/regulator/s5m8767.c > +++ b/drivers/regulator/s5m8767.c > @@ -522,7 +522,7 @@ static int s5m8767_pmic_dt_parse_pdata(struct platform_device *pdev, > struct device_node *pmic_np, *regulators_np, *reg_np; > struct sec_regulator_data *rdata; > struct sec_opmode_data *rmode; > - unsigned int i, dvs_voltage_nr = 1, ret; > + unsigned int i, dvs_voltage_nr = 8, ret; > > pmic_np = iodev->dev->of_node; > if (!pmic_np) { > @@ -586,15 +586,39 @@ static int s5m8767_pmic_dt_parse_pdata(struct platform_device *pdev, > rmode++; > } > > - if (of_get_property(pmic_np, "s5m8767,pmic-buck2-uses-gpio-dvs", NULL)) > + if (of_get_property(pmic_np, "s5m8767,pmic-buck2-uses-gpio-dvs", NULL)) { > pdata->buck2_gpiodvs = true; As this line is being changed, please switch to of_property_read_bool. > > - if (of_get_property(pmic_np, "s5m8767,pmic-buck3-uses-gpio-dvs", NULL)) > + if (of_property_read_u32_array(pmic_np, > + "s5m8767,pmic-buck2-dvs-voltage", > + pdata->buck2_voltage, dvs_voltage_nr)) { Won't this break existing (not conforming to the binding) dts? $(git grep s5m8767,pmic-buck2-dvs-voltage) shows me arch/arm/boot/dts/exynos5250-arndale.dts is only has one entry in its s5m8767,pmic-buck3-uses-gpio-dvs property's list. > + dev_err(iodev->dev, "buck2 voltages not specified\n"); > + return -EINVAL; > + } > + } > + > + if (of_get_property(pmic_np, "s5m8767,pmic-buck3-uses-gpio-dvs", NULL)) { > pdata->buck3_gpiodvs = true; Another of_proeprty_read_bool candidate. > > - if (of_get_property(pmic_np, "s5m8767,pmic-buck4-uses-gpio-dvs", NULL)) > + if (of_property_read_u32_array(pmic_np, > + "s5m8767,pmic-buck3-dvs-voltage", > + pdata->buck3_voltage, dvs_voltage_nr)) { > + dev_err(iodev->dev, "buck3 voltages not specified\n"); > + return -EINVAL; > + } > + } > + > + if (of_get_property(pmic_np, "s5m8767,pmic-buck4-uses-gpio-dvs", NULL)) { > pdata->buck4_gpiodvs = true; Similarly. In general I'm confused by the need for the *-uses-gpio-dvs properties. Are they not implied by the presence of *-dvs-voltage properties? Cheers, Mark. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html