Re: [PATCH] ARM: dts: rockchip: correct regular setting for act8846

From: Robin Murphy
Date: Wed May 24 2017 - 08:29:24 EST


On 24/05/17 12:34, Heiko Stuebner wrote:
> Am Mittwoch, 24. Mai 2017, 11:26:10 CEST schrieb Robin Murphy:
>> On 24/05/17 09:17, Heiko Stuebner wrote:
>>> Hi Eddie,
>>>
>>> Am Mittwoch, 24. Mai 2017, 15:33:41 CEST schrieb Eddie Cai:
>>>> the previous setting of act8846 is just copy from firefly board. but
>>>> the reload board is a little different from firefly board. let's correct
>>>> it.
>>>>
>>>> Signed-off-by: Eddie Cai <eddie.cai.linux@xxxxxxxxx>
>>>> ---
>>>> arch/arm/boot/dts/rk3288-firefly-reload-core.dtsi | 21 +++++++++++----------
>>>> 1 file changed, 11 insertions(+), 10 deletions(-)
>>>>
>>>> diff --git a/arch/arm/boot/dts/rk3288-firefly-reload-core.dtsi b/arch/arm/boot/dts/rk3288-firefly-reload-core.dtsi
>>>> index 8134966..4cfa109 100644
>>>> --- a/arch/arm/boot/dts/rk3288-firefly-reload-core.dtsi
>>>> +++ b/arch/arm/boot/dts/rk3288-firefly-reload-core.dtsi
>>>> @@ -179,6 +179,7 @@
>>>> regulator-name = "vccio_sd";
>>>> regulator-min-microvolt = <3300000>;
>>>> regulator-max-microvolt = <3300000>;
>>>> + regulator-always-on;
>>>
>>> the rest below looks pretty straight forward, but why does vccio_sd
>>> need to be always on?
>>>
>>> I've checked the reload's schematics but did not find any further users
>>> of vccio_sd that may warant this attribute.
>>
>> It looks like the card detect line is pulled up externally to vcc_sd,
>> which isn't always-on either, so you probably do want this - on the
>> (unrelated) rk3288 TV box I've been hacking on, I discovered that
>> powering off the sdmmc-supply domain also kills the internal pull-up and
>> leaves sdmmc_cd floating. The resulting stochastic card polling
>> mechanism is amusing, but probably undesirable ;)
>
> Hmm, are you mixing up vcc_sd and vccio_sd?
>
> vccio_sd is the io supply (vqmmc in mmc-terms) to the mmc-host itself
> while vcc_sd is the actual card supply (vmmc in mmc-terms).

Yes, that is what I meant, although I was implicitly assuming the case
where the MMC host driver has already turned off vcc_sd due to no card
being present. I'll double-check, but I'm 99% certain that *unlike*
Firefly, the Hotack board I've got (seemingly a straight implementation
of the "Box" reference design based on what I've managed to
reverse-engineer from scouring the internet) has no external pull-ups
for anything on its microSD socket, so is entirely reliant on everything
being pulled up internally to SDMMC0_VDD, i.e. vccio_sd.

> After looking through some schematics, the pull-up to vcc_sd seems to be
> the common pattern for rk3288 devices. So I guess this means the fixed
> regulator vcc_sd should get an regulator-always-on instead to stabilize
> the card-detect?

That might make sense, especially where vcc_sd is just vcc_io behind a
MOSFET switch, so turning it "off" when there's no card to draw power
anyway probably doesn't achieve much. Plus if you can then rely on
vcc_sd not going away it might be worth disabling the internal pull-ups
which are still being set by all the sdmmc_* pinctrl configs as well.

Robin.

>>>> };
>>>>
>>>> vdd10_lcd: REG6 {
>>>> @@ -187,24 +188,23 @@
>>>> regulator-max-microvolt = <1000000>;
>>>> };
>>>>
>>>> - vcca_18: REG7 {
>>>> - regulator-name = "vcca_18";
>>>> - regulator-min-microvolt = <1800000>;
>>>> - regulator-max-microvolt = <1800000>;
>>>> - regulator-always-on;
>>>> + vcca_33: REG7 {
>>>> + regulator-name = "vcca_33";
>>>> + regulator-min-microvolt = <3300000>;
>>>> + regulator-max-microvolt = <3300000>;
>>>> };
>>>>
>>>> - vcca_33: REG8 {
>>>> - regulator-name = "vcca_33";
>>>> + vcc_lan: REG8 {
>>>> + regulator-name = "vcc_lan";
>>>> regulator-min-microvolt = <3300000>;
>>>> regulator-max-microvolt = <3300000>;
>>>> - regulator-always-on;
>>>> };
>>>>
>>>> - vcc_lan: REG9 {
>>>> - regulator-name = "vcca_lan";
>>>> + vccio_pmu: REG9 {
>>>> + regulator-name = "vccio_pmu";
>>>> regulator-min-microvolt = <3300000>;
>>>> regulator-max-microvolt = <3300000>;
>>>> + regulator-always-on;
>>>> };
>>>>
>>>> vdd_10: REG10 {
>>>> @@ -218,6 +218,7 @@
>>>> regulator-name = "vcc_18";
>>>> regulator-min-microvolt = <1800000>;
>>>> regulator-max-microvolt = <1800000>;
>>>> + regulator-always-on;
>>>> };
>>>>
>>>> vcc18_lcd: REG12 {
>>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> linux-arm-kernel mailing list
>>> linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
>>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>>>
>>
>>
>>
>
>