serial: 8250_of: add support for an optional bus clock
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>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
2c0594f9f0
commit
81e4de4ba2
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user