Thread (7 messages) read the whole thread 7 messages, 2 authors, 2019-02-26

Re: [PATCH RESEND V6 2/2] clk: imx: scu: add cpu frequency scaling support

From: Stephen Boyd <sboyd@kernel.org>
Date: 2019-02-22 19:08:13
Also in: linux-clk, linux-devicetree, lkml

Quoting Anson Huang (2019-02-21 18:32:10)
On NXP's i.MX SoCs with system controller inside, CPU frequency
scaling can ONLY be done by system controller firmware, and it
can ONLY be requested from secure mode, so Linux kernel has to
call ARM SMC to trap to ARM-Trusted-Firmware to request system
controller firmware to do CPU frequency scaling.

This patch adds i.MX system controller CPU frequency scaling support,
it reuses cpufreq-dt driver and implement the CPU frequency scaling
inside SCU clock driver.

Signed-off-by: Anson Huang <redacted>
Ah I missed one thing, see below.
quoted hunk ↗ jump to hunk
@@ -180,6 +185,23 @@ static long clk_scu_round_rate(struct clk_hw *hw, unsigned long rate,
        return rate;
 }
 
+static int clk_scu_atf_set_cpu_rate(struct clk_hw *hw, unsigned long rate,
+                                   unsigned long parent_rate)
+{
+       struct clk_scu *clk = to_clk_scu(hw);
+       struct arm_smccc_res res;
+       unsigned long cluster_id;
+
+       if (clk->rsrc_id == IMX_SC_R_A35)
+               cluster_id = 0;
Do we still need to check this anymore? Why not just always use
cluster_id 0?
+
+       /* CPU frequency scaling can ONLY be done by ARM-Trusted-Firmware */
+       arm_smccc_smc(IMX_SIP_CPUFREQ, IMX_SIP_SET_CPUFREQ,
+                     cluster_id, rate, 0, 0, 0, 0, &res);
Because not checking would make this work, vs. checking causes this code
to sometimes use an uninitialized value from the stack.
+
+       return 0;
+}
+
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help