]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
serial: lpuart: Enable IPG clock
authorYe Li <ye.li@nxp.com>
Tue, 25 Jul 2023 08:08:55 +0000 (10:08 +0200)
committerStefano Babic <sbabic@denx.de>
Mon, 16 Oct 2023 12:02:38 +0000 (14:02 +0200)
Current codes only ennable the PER clock. However on iMX8 the LPUART
also needs IPG clock which is an LPCG. Should not depend on the default
LPCG setting.

Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
drivers/serial/serial_lpuart.c

index 51e66abdbc15fd282e422886f987774e5332c620..ce08a6b4486c9e441a51092d69b94c3f3b60baee 100644 (file)
@@ -480,18 +480,30 @@ static int lpuart_serial_probe(struct udevice *dev)
 {
 #if CONFIG_IS_ENABLED(CLK)
        struct clk per_clk;
+       struct clk ipg_clk;
        int ret;
 
        ret = clk_get_by_name(dev, "per", &per_clk);
        if (!ret) {
                ret = clk_enable(&per_clk);
                if (ret) {
-                       dev_err(dev, "Failed to get per clk: %d\n", ret);
+                       dev_err(dev, "Failed to enable per clk: %d\n", ret);
                        return ret;
                }
        } else {
                debug("%s: Failed to get per clk: %d\n", __func__, ret);
        }
+
+       ret = clk_get_by_name(dev, "ipg", &ipg_clk);
+       if (!ret) {
+               ret = clk_enable(&ipg_clk);
+               if (ret) {
+                       dev_err(dev, "Failed to enable ipg clk: %d\n", ret);
+                       return ret;
+               }
+       } else {
+               debug("%s: Failed to get ipg clk: %d\n", __func__, ret);
+       }
 #endif
 
        if (is_lpuart32(dev))