]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
clk: clk-imx8qm: Add LPUART IPG entries
authorFabio Estevam <festevam@gmail.com>
Fri, 8 Mar 2024 20:13:16 +0000 (17:13 -0300)
committerTom Rini <trini@konsulko.com>
Fri, 22 Mar 2024 15:10:39 +0000 (11:10 -0400)
Since commit cc7df0b9e8bc ("serial: lpuart: Enable IPG clock")
the apalis-imx8qm board no longer boots.

The reason is that the imx8qm clock driver does not handle the
LPUART IPG clocks inside get_rate(), set_rate() and enable() functions.

Fix the boot regression by adding the LPUART IPG entries.

Fixes: cc7df0b9e8bc ("serial: lpuart: Enable IPG clock")
Reported-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Fabio Estevam <festevam@gmail.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
drivers/clk/imx/clk-imx8qm.c

index 6c05d07c3409d1a21b3d2d935af40dca5a9b90be..01e33de9d63f26eb9b0c3bae0b48e443b3b473e1 100644 (file)
@@ -95,20 +95,23 @@ ulong imx8_clk_get_rate(struct clk *clk)
                resource = SC_R_SDHC_2;
                pm_clk = SC_PM_CLK_PER;
                break;
-       case IMX8QM_UART0_IPG_CLK:
        case IMX8QM_UART0_CLK:
+       case IMX8QM_UART0_IPG_CLK:
                resource = SC_R_UART_0;
                pm_clk = SC_PM_CLK_PER;
                break;
        case IMX8QM_UART1_CLK:
+       case IMX8QM_UART1_IPG_CLK:
                resource = SC_R_UART_1;
                pm_clk = SC_PM_CLK_PER;
                break;
        case IMX8QM_UART2_CLK:
+       case IMX8QM_UART2_IPG_CLK:
                resource = SC_R_UART_2;
                pm_clk = SC_PM_CLK_PER;
                break;
        case IMX8QM_UART3_CLK:
+       case IMX8QM_UART3_IPG_CLK:
                resource = SC_R_UART_3;
                pm_clk = SC_PM_CLK_PER;
                break;
@@ -181,18 +184,22 @@ ulong imx8_clk_set_rate(struct clk *clk, unsigned long rate)
                pm_clk = SC_PM_CLK_PER;
                break;
        case IMX8QM_UART0_CLK:
+       case IMX8QM_UART0_IPG_CLK:
                resource = SC_R_UART_0;
                pm_clk = SC_PM_CLK_PER;
                break;
        case IMX8QM_UART1_CLK:
+       case IMX8QM_UART1_IPG_CLK:
                resource = SC_R_UART_1;
                pm_clk = SC_PM_CLK_PER;
                break;
        case IMX8QM_UART2_CLK:
+       case IMX8QM_UART2_IPG_CLK:
                resource = SC_R_UART_2;
                pm_clk = SC_PM_CLK_PER;
                break;
        case IMX8QM_UART3_CLK:
+       case IMX8QM_UART3_IPG_CLK:
                resource = SC_R_UART_3;
                pm_clk = SC_PM_CLK_PER;
                break;
@@ -283,18 +290,22 @@ int __imx8_clk_enable(struct clk *clk, bool enable)
                pm_clk = SC_PM_CLK_PER;
                break;
        case IMX8QM_UART0_CLK:
+       case IMX8QM_UART0_IPG_CLK:
                resource = SC_R_UART_0;
                pm_clk = SC_PM_CLK_PER;
                break;
        case IMX8QM_UART1_CLK:
+       case IMX8QM_UART1_IPG_CLK:
                resource = SC_R_UART_1;
                pm_clk = SC_PM_CLK_PER;
                break;
        case IMX8QM_UART2_CLK:
+       case IMX8QM_UART2_IPG_CLK:
                resource = SC_R_UART_2;
                pm_clk = SC_PM_CLK_PER;
                break;
        case IMX8QM_UART3_CLK:
+       case IMX8QM_UART3_IPG_CLK:
                resource = SC_R_UART_3;
                pm_clk = SC_PM_CLK_PER;
                break;