[PATCHv3] ARM: mvebu: use regulator-boot-on for SATA regulators on Armada 388 GP
Gregory CLEMENT
gregory.clement at free-electrons.com
Tue Dec 22 06:40:00 PST 2015
Hi Thomas,
On mar., déc. 22 2015, Thomas Petazzoni <thomas.petazzoni at free-electrons.com> wrote:
> Really, what we meant by regulator-always-on is that the regulators
> are already turned on by the bootloader, for which regulator-boot-on
> is a better description.
>
> A net advantage of using regulator-boot-on is that the regulator is
> not touched at boot time by the kernel, which avoids having the hard
> drives spinning down and then up again, taking several (~5) seconds of
> additional boot time.
>
> In addition, there is no need to have such properties on the child
> regulators used for SATA. Having it on the parent regulator that
> really controls the GPIO is sufficient.
>
> Without the patch:
>
> [ 3.945866] ata2: SATA link down (SStatus 0 SControl 300)
> [ 3.995862] ata3: SATA link down (SStatus 0 SControl 300)
> [ 4.005863] ata4: SATA link down (SStatus 0 SControl 300)
> [ 9.125861] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
> [ 9.144575] ata1.00: ATA-8: WDC WD5003ABYX-01WERA1, 01.01S02, max UDMA/133
> [ 9.151471] ata1.00: 976773168 sectors, multi 0: LBA48 NCQ (depth 31/32)
>
> (and you can hear the disk spinning down and up during this 5.1
> seconds delay)
>
> With the patch:
>
> [ 3.945988] ata2: SATA link down (SStatus 0 SControl 300)
> [ 4.005980] ata4: SATA link down (SStatus 0 SControl 300)
> [ 4.011404] ata3: SATA link down (SStatus 0 SControl 300)
> [ 4.145978] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
> [ 4.153701] ata1.00: ATA-8: WDC WD5003ABYX-01WERA1, 01.01S02, max UDMA/133
> [ 4.160597] ata1.00: 976773168 sectors, multi 0: LBA48 NCQ (depth 31/32)
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
Applied on mvebu/dt
Thanks,
Gregory
> ---
> Changes since v2:
> - Use regulator-boot-on only for SATA regulators, not for USB
> regulators.
> ---
> arch/arm/boot/dts/armada-388-gp.dts | 16 ++++------------
> 1 file changed, 4 insertions(+), 12 deletions(-)
>
> diff --git a/arch/arm/boot/dts/armada-388-gp.dts b/arch/arm/boot/dts/armada-388-gp.dts
> index d8dab0f..5e47291 100644
> --- a/arch/arm/boot/dts/armada-388-gp.dts
> +++ b/arch/arm/boot/dts/armada-388-gp.dts
> @@ -319,7 +319,7 @@
> regulator-min-microvolt = <12000000>;
> regulator-max-microvolt = <12000000>;
> enable-active-high;
> - regulator-always-on;
> + regulator-boot-on;
> gpio = <&expander0 2 GPIO_ACTIVE_HIGH>;
> };
>
> @@ -328,7 +328,6 @@
> regulator-name = "v5.0-sata0";
> regulator-min-microvolt = <5000000>;
> regulator-max-microvolt = <5000000>;
> - regulator-always-on;
> vin-supply = <®_sata0>;
> };
>
> @@ -337,7 +336,6 @@
> regulator-name = "v12.0-sata0";
> regulator-min-microvolt = <12000000>;
> regulator-max-microvolt = <12000000>;
> - regulator-always-on;
> vin-supply = <®_sata0>;
> };
>
> @@ -347,7 +345,7 @@
> regulator-min-microvolt = <12000000>;
> regulator-max-microvolt = <12000000>;
> enable-active-high;
> - regulator-always-on;
> + regulator-boot-on;
> gpio = <&expander0 3 GPIO_ACTIVE_HIGH>;
> };
>
> @@ -356,7 +354,6 @@
> regulator-name = "v5.0-sata1";
> regulator-min-microvolt = <5000000>;
> regulator-max-microvolt = <5000000>;
> - regulator-always-on;
> vin-supply = <®_sata1>;
> };
>
> @@ -365,7 +362,6 @@
> regulator-name = "v12.0-sata1";
> regulator-min-microvolt = <12000000>;
> regulator-max-microvolt = <12000000>;
> - regulator-always-on;
> vin-supply = <®_sata1>;
> };
>
> @@ -373,7 +369,7 @@
> compatible = "regulator-fixed";
> regulator-name = "pwr_en_sata2";
> enable-active-high;
> - regulator-always-on;
> + regulator-boot-on;
> gpio = <&expander0 11 GPIO_ACTIVE_HIGH>;
> };
>
> @@ -382,7 +378,6 @@
> regulator-name = "v5.0-sata2";
> regulator-min-microvolt = <5000000>;
> regulator-max-microvolt = <5000000>;
> - regulator-always-on;
> vin-supply = <®_sata2>;
> };
>
> @@ -391,7 +386,6 @@
> regulator-name = "v12.0-sata2";
> regulator-min-microvolt = <12000000>;
> regulator-max-microvolt = <12000000>;
> - regulator-always-on;
> vin-supply = <®_sata2>;
> };
>
> @@ -399,7 +393,7 @@
> compatible = "regulator-fixed";
> regulator-name = "pwr_en_sata3";
> enable-active-high;
> - regulator-always-on;
> + regulator-boot-on;
> gpio = <&expander0 12 GPIO_ACTIVE_HIGH>;
> };
>
> @@ -408,7 +402,6 @@
> regulator-name = "v5.0-sata3";
> regulator-min-microvolt = <5000000>;
> regulator-max-microvolt = <5000000>;
> - regulator-always-on;
> vin-supply = <®_sata3>;
> };
>
> @@ -417,7 +410,6 @@
> regulator-name = "v12.0-sata3";
> regulator-min-microvolt = <12000000>;
> regulator-max-microvolt = <12000000>;
> - regulator-always-on;
> vin-supply = <®_sata3>;
> };
> };
> --
> 2.6.4
>
--
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
More information about the linux-arm-kernel
mailing list