Hi Boris: On 2016?09?19? 17:44, Boris Brezillon wrote: > On Mon, 19 Sep 2016 17:38:10 +0800 > Andy Yan <andy.yan at rock-chips.com> wrote: > >> On 2016?09?19? 17:25, Boris Brezillon wrote: >>> On Mon, 19 Sep 2016 16:44:56 +0800 >>> Andy Yan <andy.yan at rock-chips.com> wrote: >>> >>>> The current rk3066a based boards(Rayeager, Bqcurie2, Marsboard) use >>>> pwm modulate vdd_logic voltage, but the pwm is default disabled and >>>> the pwm pin acts as a gpio before pwm regulator probed, so the pwm >>>> regulator driver will get a zero dutycycle at probe time, so change >>>> the initial dutycycle to zero to match pwm_regulator_init_state check. >>>> >>>> Signed-off-by: Andy Yan <andy.yan at rock-chips.com> >>>> >>>> --- >>>> >>>> arch/arm/boot/dts/rk3066a-bqcurie2.dts | 2 +- >>>> arch/arm/boot/dts/rk3066a-marsboard.dts | 2 +- >>>> arch/arm/boot/dts/rk3066a-rayeager.dts | 2 +- >>>> 3 files changed, 3 insertions(+), 3 deletions(-) >>>> >>>> diff --git a/arch/arm/boot/dts/rk3066a-bqcurie2.dts b/arch/arm/boot/dts/rk3066a-bqcurie2.dts >>>> index bc674ee..618450d 100644 >>>> --- a/arch/arm/boot/dts/rk3066a-bqcurie2.dts >>>> +++ b/arch/arm/boot/dts/rk3066a-bqcurie2.dts >>>> @@ -61,7 +61,7 @@ >>>> regulator-min-microvolt = <1200000>; >>>> regulator-max-microvolt = <1200000>; >>>> regulator-always-on; >>>> - voltage-table = <1000000 100>, >>>> + voltage-table = <1000000 0>, >>>> <1200000 42>; >>> So, it seems you are reversing the PWM polarity here. Are you sure you >>> shouldn't change the 2nd entry of this table (<1200000 58>)? >> >> no, 42% duty cycle give a stable 1.2v vdd_logic voltage on my >> board. As i explained in the commit, the pwm was default at a disabled >> state before regulator_register success at pwm_regulator probe, so >> pwm_regulator_init_state function will get a zero dutycycle from >> pwm_get_relative_dutycycle. I have to change the dutycycle of fist >> table to zero to match the following check, other wise the function will >> return defualt value(-EINVAL), then the pwm regulator register failed. > Is 0% duty really producing a 1V output, or are you just changing it to > make it work? no, I'm not sure 0% duty is really producing a 1v output, maybe the 100% duty producing a 1v output, I just changing it to make it work on your Patch. Before the pwm regulator registered success, the pwm output pin act as a stable gpio at a hight or low level(depends on the soc power on state) to control a 1v output. > > BTW, I'm not sure we should fail when the current PWM state does not > match one of the value in the voltage-table. Yes, the previous version don't have the state check, so the regulator can register success. > >>> >>>> status = "okay"; >>>> }; >>>> diff --git a/arch/arm/boot/dts/rk3066a-marsboard.dts b/arch/arm/boot/dts/rk3066a-marsboard.dts >>>> index a2b763e..ddc680b 100644 >>>> --- a/arch/arm/boot/dts/rk3066a-marsboard.dts >>>> +++ b/arch/arm/boot/dts/rk3066a-marsboard.dts >>>> @@ -59,7 +59,7 @@ >>>> regulator-min-microvolt = <1200000>; >>>> regulator-max-microvolt = <1200000>; >>>> regulator-always-on; >>>> - voltage-table = <1000000 100>, >>>> + voltage-table = <1000000 0>, >>>> <1200000 42>; >>>> status = "okay"; >>>> }; >>>> diff --git a/arch/arm/boot/dts/rk3066a-rayeager.dts b/arch/arm/boot/dts/rk3066a-rayeager.dts >>>> index 2536b3a..30aee99 100644 >>>> --- a/arch/arm/boot/dts/rk3066a-rayeager.dts >>>> +++ b/arch/arm/boot/dts/rk3066a-rayeager.dts >>>> @@ -84,7 +84,7 @@ >>>> regulator-min-microvolt = <1200000>; >>>> regulator-max-microvolt = <1200000>; >>>> regulator-always-on; >>>> - voltage-table = <1000000 100>, >>>> + voltage-table = <1000000 0>, >>>> <1200000 42>; >>>> status = "okay"; >>>> }; >>> >>> >> > > _______________________________________________ > Linux-rockchip mailing list > Linux-rockchip at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-rockchip