]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
serial: mediatek: add support for bus clock and enable it
authorChristian Marangi <ansuelsmth@gmail.com>
Mon, 24 Jun 2024 21:03:32 +0000 (23:03 +0200)
committerTom Rini <trini@konsulko.com>
Mon, 8 Jul 2024 17:45:50 +0000 (11:45 -0600)
Upstream linux also provide the additional optional bus clock.

Add support for it and also enable the baud and bus clock on probe.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
drivers/serial/serial_mtk.c

index 3f569c68f22a2fb5dec24d1185792e17bb5f8d71..78e8d9dc7357eedfd83ef321446adf5af3ee076d 100644 (file)
@@ -76,6 +76,7 @@ struct mtk_serial_regs {
  *                             driver
  * @regs:                      Register base of the serial port
  * @clk:                       The baud clock device
+ * @clk_bus:                   The bus clock device
  * @fixed_clk_rate:            Fallback fixed baud clock rate if baud clock
  *                             device is not specified
  * @force_highspeed:           Force using high-speed mode
@@ -83,6 +84,7 @@ struct mtk_serial_regs {
 struct mtk_serial_priv {
        struct mtk_serial_regs __iomem *regs;
        struct clk clk;
+       struct clk clk_bus;
        u32 fixed_clk_rate;
        bool force_highspeed;
 };
@@ -220,6 +222,10 @@ static int mtk_serial_probe(struct udevice *dev)
        writel(UART_MCRVAL, &priv->regs->mcr);
        writel(UART_FCRVAL, &priv->regs->fcr);
 
+       clk_enable(&priv->clk);
+       if (priv->clk_bus.dev)
+               clk_enable(&priv->clk_bus);
+
        return 0;
 }
 
@@ -250,6 +256,8 @@ static int mtk_serial_of_to_plat(struct udevice *dev)
                }
        }
 
+       clk_get_by_name(dev, "bus", &priv->clk_bus);
+
        priv->force_highspeed = dev_read_bool(dev, "mediatek,force-highspeed");
 
        return 0;