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 <ansuels...@gmail.com>
---
 drivers/serial/serial_mtk.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/serial/serial_mtk.c b/drivers/serial/serial_mtk.c
index 3f569c68f22..78e8d9dc735 100644
--- a/drivers/serial/serial_mtk.c
+++ b/drivers/serial/serial_mtk.c
@@ -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;
-- 
2.45.1

Reply via email to