]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
serial: 8250_of: add support for an optional bus clock
authorAlex Elder <elder@riscstar.com>
Wed, 9 Apr 2025 19:22:12 +0000 (14:22 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 11 Apr 2025 14:52:47 +0000 (16:52 +0200)
The SpacemiT UART requires a bus clock to be enabled, in addition to
it's "normal" core clock.  Look up the optional bus clock by name,
and if that's found, look up the core clock using the name "core".

Supplying a bus clock is optional.  If no bus clock is needed, the
the first/only clock is used for the core clock.

Signed-off-by: Alex Elder <elder@riscstar.com>
Link: https://lore.kernel.org/r/20250409192213.1130181-3-elder@riscstar.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_of.c

index 11c860ea80f60f3d24c368b4efcad35a5fcc3c67..a90a5462aa72a112d12124ee90d15c77f254d0fc 100644 (file)
@@ -123,7 +123,16 @@ static int of_platform_serial_setup(struct platform_device *ofdev,
 
        /* Get clk rate through clk driver if present */
        if (!port->uartclk) {
-               info->clk = devm_clk_get_enabled(dev, NULL);
+               struct clk *bus_clk;
+
+               bus_clk = devm_clk_get_optional_enabled(dev, "bus");
+               if (IS_ERR(bus_clk)) {
+                       ret = dev_err_probe(dev, PTR_ERR(bus_clk), "failed to get bus clock\n");
+                       goto err_pmruntime;
+               }
+
+               /* If the bus clock is required, core clock must be named */
+               info->clk = devm_clk_get_enabled(dev, bus_clk ? "core" : NULL);
                if (IS_ERR(info->clk)) {
                        ret = dev_err_probe(dev, PTR_ERR(info->clk), "failed to get clock\n");
                        goto err_pmruntime;