Hi Fabien, Could you please add CPUIDLE support: diff --git a/arch/arm64/boot/dts/mediatek/mt8365.dtsi b/arch/arm64/boot/dts/mediatek/mt8365.dtsi index 323c814c10cc..1df4075db58f 100644 --- a/arch/arm64/boot/dts/mediatek/mt8365.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt8365.dtsi @@ -59,6 +59,7 @@ cpu0: cpu@0 { clocks = <&mcucfg CLK_MCU_BUS_SEL>, <&apmixedsys CLK_APMIXED_MAINPLL>; clock-names = "cpu", "intermediate"; + cpu-idle-states = <&MCDI_CPU &MCDI_CLUSTER &DPIDLE>; operating-points-v2 = <&cluster0_opp>; #cooling-cells = <2>; enable-method = "psci"; @@ -72,6 +73,7 @@ cpu1: cpu@1 { clocks = <&mcucfg CLK_MCU_BUS_SEL>, <&apmixedsys CLK_APMIXED_MAINPLL>; clock-names = "cpu", "intermediate", "armpll"; + cpu-idle-states = <&MCDI_CPU &MCDI_CLUSTER &DPIDLE>; operating-points-v2 = <&cluster0_opp>; #cooling-cells = <2>; enable-method = "psci"; @@ -85,6 +87,7 @@ cpu2: cpu@2 { clocks = <&mcucfg CLK_MCU_BUS_SEL>, <&apmixedsys CLK_APMIXED_MAINPLL>; clock-names = "cpu", "intermediate", "armpll"; + cpu-idle-states = <&MCDI_CPU &MCDI_CLUSTER &DPIDLE>; operating-points-v2 = <&cluster0_opp>; #cooling-cells = <2>; enable-method = "psci"; @@ -98,10 +101,42 @@ cpu3: cpu@3 { clocks = <&mcucfg CLK_MCU_BUS_SEL>, <&apmixedsys CLK_APMIXED_MAINPLL>; clock-names = "cpu", "intermediate", "armpll"; + cpu-idle-states = <&MCDI_CPU &MCDI_CLUSTER &DPIDLE>; operating-points-v2 = <&cluster0_opp>; #cooling-cells = <2>; enable-method = "psci"; }; + + idle-states { + entry-method = "psci"; + + MCDI_CPU: mcdi-cpu { + compatible = "arm,idle-state"; + local-timer-stop; + arm,psci-suspend-param = <0x00010001>; + entry-latency-us = <300>; + exit-latency-us = <200>; + min-residency-us = <1000>; + }; + + MCDI_CLUSTER: mcdi-cluster { + compatible = "arm,idle-state"; + local-timer-stop; + arm,psci-suspend-param = <0x01010001>; + entry-latency-us = <350>; + exit-latency-us = <250>; + min-residency-us = <1200>; + }; + + DPIDLE: dpidle { + compatible = "arm,idle-state"; + local-timer-stop; + arm,psci-suspend-param = <0x01010004>; + entry-latency-us = <300>; + exit-latency-us = <800>; + min-residency-us = <3300>; + }; + }; }; cluster0_opp: opp-table-0 { I have tested it on i350 evk and each idle state is used properly. Regards, Amjad