diff mbox series

ARM: imx: Make PLL settings configurable at board level

Message ID 20240827200441.217109-1-marex@denx.de
State Accepted
Delegated to: Fabio Estevam
Headers show
Series ARM: imx: Make PLL settings configurable at board level | expand

Commit Message

Marek Vasut Aug. 27, 2024, 8:04 p.m. UTC
Staticize intpll_configure(). Add weak board_imx_intpll_override()
function which can be defined at board level to override specific
PLL frequency settings early during boot. This can be used to for
example force faster CPU core clock frequency if the hardware can
handle it.

Example of increasing CPU core clock to 1600 MHz on i.MX8M Plus:
```
int board_imx_intpll_override(enum pll_clocks pll, ulong *freq)
{
       if (pll == ANATOP_ARM_PLL)
               *freq = MHZ(1600);
       return 0;
}
```

Signed-off-by: Marek Vasut <marex@denx.de>
---
Cc: "NXP i.MX U-Boot Team" <uboot-imx@nxp.com>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: Peng Fan <peng.fan@nxp.com>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Tom Rini <trini@konsulko.com>
Cc: u-boot@lists.denx.de
---
 arch/arm/mach-imx/imx8m/clock_imx8mm.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

Comments

Fabio Estevam Sept. 2, 2024, 5:44 p.m. UTC | #1
On Tue, Aug 27, 2024 at 5:04 PM Marek Vasut <marex@denx.de> wrote:
>
> Staticize intpll_configure(). Add weak board_imx_intpll_override()
> function which can be defined at board level to override specific
> PLL frequency settings early during boot. This can be used to for
> example force faster CPU core clock frequency if the hardware can
> handle it.
>
> Example of increasing CPU core clock to 1600 MHz on i.MX8M Plus:
> ```
> int board_imx_intpll_override(enum pll_clocks pll, ulong *freq)
> {
>        if (pll == ANATOP_ARM_PLL)
>                *freq = MHZ(1600);
>        return 0;
> }
> ```
>
> Signed-off-by: Marek Vasut <marex@denx.de>

Applied, thanks.
diff mbox series

Patch

diff --git a/arch/arm/mach-imx/imx8m/clock_imx8mm.c b/arch/arm/mach-imx/imx8m/clock_imx8mm.c
index de630e940c9..d7fd102c955 100644
--- a/arch/arm/mach-imx/imx8m/clock_imx8mm.c
+++ b/arch/arm/mach-imx/imx8m/clock_imx8mm.c
@@ -181,10 +181,19 @@  void dram_disable_bypass(void)
 }
 #endif
 
-int intpll_configure(enum pll_clocks pll, ulong freq)
+__weak int board_imx_intpll_override(enum pll_clocks pll, ulong *freq)
+{
+	return 0;
+}
+
+static int intpll_configure(enum pll_clocks pll, ulong freq)
 {
 	void __iomem *pll_gnrl_ctl, __iomem *pll_div_ctl;
 	u32 pll_div_ctl_val, pll_clke_masks;
+	int ret = board_imx_intpll_override(pll, &freq);
+
+	if (ret)
+		return ret;
 
 	switch (pll) {
 	case ANATOP_SYSTEM_PLL1: