Enable cpuidle for i.MX7S/D using generic ARM cpuidle
driver, below 2 idle states enabled:
1. ARM WFI;
2. SoC WAIT mode.
Signed-off-by: Anson Huang <[email protected]>
---
arch/arm/boot/dts/imx7d.dtsi | 1 +
arch/arm/boot/dts/imx7s.dtsi | 14 ++++++++++++++
2 files changed, 15 insertions(+)
diff --git a/arch/arm/boot/dts/imx7d.dtsi b/arch/arm/boot/dts/imx7d.dtsi
index 7cbc2ff..4d0d0f6 100644
--- a/arch/arm/boot/dts/imx7d.dtsi
+++ b/arch/arm/boot/dts/imx7d.dtsi
@@ -20,6 +20,7 @@
reg = <1>;
clock-frequency = <996000000>;
operating-points-v2 = <&cpu0_opp_table>;
+ cpu-idle-states = <&CPU_SLEEP>;
};
};
diff --git a/arch/arm/boot/dts/imx7s.dtsi b/arch/arm/boot/dts/imx7s.dtsi
index 93884ce..cf5570b 100644
--- a/arch/arm/boot/dts/imx7s.dtsi
+++ b/arch/arm/boot/dts/imx7s.dtsi
@@ -54,6 +54,19 @@
#address-cells = <1>;
#size-cells = <0>;
+ idle-states {
+ entry-method = "psci";
+
+ CPU_SLEEP: WAIT {
+ compatible = "arm,idle-state";
+ arm,psci-suspend-param = <0x0010000>;
+ local-timer-stop;
+ entry-latency-us = <100>;
+ exit-latency-us = <50>;
+ min-residency-us = <1000>;
+ };
+ };
+
cpu0: cpu@0 {
compatible = "arm,cortex-a7";
device_type = "cpu";
@@ -61,6 +74,7 @@
clock-frequency = <792000000>;
clock-latency = <61036>; /* two CLK32 periods */
clocks = <&clks IMX7D_CLK_ARM>;
+ cpu-idle-states = <&CPU_SLEEP>;
};
};
--
2.7.4
Some i.MX platforms like i.MX7S/D uses generic ARM cpuidle
driver and psci method to support cpuidle feature, select
CONFIG_ARM_CPUIDLE by default for such platforms.
Signed-off-by: Anson Huang <[email protected]>
---
arch/arm/configs/imx_v6_v7_defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/configs/imx_v6_v7_defconfig b/arch/arm/configs/imx_v6_v7_defconfig
index e2c1276..65df4b2 100644
--- a/arch/arm/configs/imx_v6_v7_defconfig
+++ b/arch/arm/configs/imx_v6_v7_defconfig
@@ -62,6 +62,7 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
CONFIG_CPUFREQ_DT=y
CONFIG_ARM_IMX6Q_CPUFREQ=y
CONFIG_CPU_IDLE=y
+CONFIG_ARM_CPUIDLE=y
CONFIG_VFP=y
CONFIG_NEON=y
CONFIG_BINFMT_MISC=m
--
2.7.4
On Wed, Aug 29, 2018 at 01:00:46PM +0800, Anson Huang wrote:
> Enable cpuidle for i.MX7S/D using generic ARM cpuidle
> driver, below 2 idle states enabled:
>
> 1. ARM WFI;
> 2. SoC WAIT mode.
>
> Signed-off-by: Anson Huang <[email protected]>
> ---
> arch/arm/boot/dts/imx7d.dtsi | 1 +
> arch/arm/boot/dts/imx7s.dtsi | 14 ++++++++++++++
> 2 files changed, 15 insertions(+)
>
> diff --git a/arch/arm/boot/dts/imx7d.dtsi b/arch/arm/boot/dts/imx7d.dtsi
> index 7cbc2ff..4d0d0f6 100644
> --- a/arch/arm/boot/dts/imx7d.dtsi
> +++ b/arch/arm/boot/dts/imx7d.dtsi
> @@ -20,6 +20,7 @@
> reg = <1>;
> clock-frequency = <996000000>;
> operating-points-v2 = <&cpu0_opp_table>;
> + cpu-idle-states = <&CPU_SLEEP>;
> };
> };
>
> diff --git a/arch/arm/boot/dts/imx7s.dtsi b/arch/arm/boot/dts/imx7s.dtsi
> index 93884ce..cf5570b 100644
> --- a/arch/arm/boot/dts/imx7s.dtsi
> +++ b/arch/arm/boot/dts/imx7s.dtsi
> @@ -54,6 +54,19 @@
> #address-cells = <1>;
> #size-cells = <0>;
>
> + idle-states {
> + entry-method = "psci";
> +
> + CPU_SLEEP: WAIT {
I understand uppercase is allowed, but we conventionally use lowercase
for label and node name. Can we do something like below?
cpu_sleep_wait: cpu-sleep-wait {
...
}
Shawn
> + compatible = "arm,idle-state";
> + arm,psci-suspend-param = <0x0010000>;
> + local-timer-stop;
> + entry-latency-us = <100>;
> + exit-latency-us = <50>;
> + min-residency-us = <1000>;
> + };
> + };
> +
> cpu0: cpu@0 {
> compatible = "arm,cortex-a7";
> device_type = "cpu";
> @@ -61,6 +74,7 @@
> clock-frequency = <792000000>;
> clock-latency = <61036>; /* two CLK32 periods */
> clocks = <&clks IMX7D_CLK_ARM>;
> + cpu-idle-states = <&CPU_SLEEP>;
> };
> };
>
> --
> 2.7.4
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
On Wed, Aug 29, 2018 at 01:00:47PM +0800, Anson Huang wrote:
> Some i.MX platforms like i.MX7S/D uses generic ARM cpuidle
> driver and psci method to support cpuidle feature, select
> CONFIG_ARM_CPUIDLE by default for such platforms.
>
> Signed-off-by: Anson Huang <[email protected]>
Applied, thanks.
Anson Huang
Best Regards!
> -----Original Message-----
> From: Shawn Guo <[email protected]>
> Sent: Monday, September 3, 2018 9:16 AM
> To: Anson Huang <[email protected]>
> Cc: [email protected]; [email protected]; Fabio Estevam
> <[email protected]>; [email protected]; [email protected];
> [email protected]; [email protected];
> [email protected]; [email protected]; dl-linux-imx
> <[email protected]>
> Subject: Re: [PATCH 1/2] ARM: dts: imx7s: enable cpuidle driver
>
> On Wed, Aug 29, 2018 at 01:00:46PM +0800, Anson Huang wrote:
> > Enable cpuidle for i.MX7S/D using generic ARM cpuidle driver, below 2
> > idle states enabled:
> >
> > 1. ARM WFI;
> > 2. SoC WAIT mode.
> >
> > Signed-off-by: Anson Huang <[email protected]>
> > ---
> > arch/arm/boot/dts/imx7d.dtsi | 1 +
> > arch/arm/boot/dts/imx7s.dtsi | 14 ++++++++++++++
> > 2 files changed, 15 insertions(+)
> >
> > diff --git a/arch/arm/boot/dts/imx7d.dtsi
> > b/arch/arm/boot/dts/imx7d.dtsi index 7cbc2ff..4d0d0f6 100644
> > --- a/arch/arm/boot/dts/imx7d.dtsi
> > +++ b/arch/arm/boot/dts/imx7d.dtsi
> > @@ -20,6 +20,7 @@
> > reg = <1>;
> > clock-frequency = <996000000>;
> > operating-points-v2 = <&cpu0_opp_table>;
> > + cpu-idle-states = <&CPU_SLEEP>;
> > };
> > };
> >
> > diff --git a/arch/arm/boot/dts/imx7s.dtsi
> > b/arch/arm/boot/dts/imx7s.dtsi index 93884ce..cf5570b 100644
> > --- a/arch/arm/boot/dts/imx7s.dtsi
> > +++ b/arch/arm/boot/dts/imx7s.dtsi
> > @@ -54,6 +54,19 @@
> > #address-cells = <1>;
> > #size-cells = <0>;
> >
> > + idle-states {
> > + entry-method = "psci";
> > +
> > + CPU_SLEEP: WAIT {
>
> I understand uppercase is allowed, but we conventionally use lowercase for
> label and node name. Can we do something like below?
>
> cpu_sleep_wait: cpu-sleep-wait {
> ...
> }
Sure, please review V2 patch, thanks!
Anson
>
> Shawn
>
> > + compatible = "arm,idle-state";
> > + arm,psci-suspend-param = <0x0010000>;
> > + local-timer-stop;
> > + entry-latency-us = <100>;
> > + exit-latency-us = <50>;
> > + min-residency-us = <1000>;
> > + };
> > + };
> > +
> > cpu0: cpu@0 {
> > compatible = "arm,cortex-a7";
> > device_type = "cpu";
> > @@ -61,6 +74,7 @@
> > clock-frequency = <792000000>;
> > clock-latency = <61036>; /* two CLK32 periods */
> > clocks = <&clks IMX7D_CLK_ARM>;
> > + cpu-idle-states = <&CPU_SLEEP>;
> > };
> > };
> >
> > --
> > 2.7.4
> >
> >
> > _______________________________________________
> > linux-arm-kernel mailing list
> > [email protected]
> > https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2Flist
> >
> s.infradead.org%2Fmailman%2Flistinfo%2Flinux-arm-kernel&data=02%7C
> >
> 01%7CAnson.Huang%40nxp.com%7C8ce1cddcac05444edc1408d6113b0a76%7
> C686ea1
> >
> d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C636715342610651079&sda
> ta=x9l%
> >
> 2FrkV8Uo8CtSa0jJsBZ%2FXt2DE3ZRQ5TWXm5%2Fbwvag%3D&reserved=
> 0