diff options
author | Alexander Shiyan <eagle.alexander923@gmail.com> | 2022-06-07 13:03:36 +0300 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2022-06-09 09:26:08 +0200 |
commit | e5154fb788f19cdf8ce6950402f5a8e3e39af9a4 (patch) | |
tree | 12c09d414ef0187502171194c023a05da26af844 /drivers/serial | |
parent | 2a2f149a6dbb7aff85db34281b3c55e7663932a5 (diff) | |
download | barebox-e5154fb788f19cdf8ce6950402f5a8e3e39af9a4.tar.gz barebox-e5154fb788f19cdf8ce6950402f5a8e3e39af9a4.tar.xz |
serial: ns16550: Adding compatibility for the AM437X platforms
Adding compatibility for AM437X platforms.
Since the serial node is not populated with a clock node,
let's add an additional driver variable to set the default clock speed.
Signed-off-by: Alexander Shiyan <eagle.alexander923@gmail.com>
Link: https://lore.barebox.org/20220607100337.18277-1-eagle.alexander923@gmail.com
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/serial')
-rw-r--r-- | drivers/serial/serial_ns16550.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/drivers/serial/serial_ns16550.c b/drivers/serial/serial_ns16550.c index f93a89ab95..fb6af42e00 100644 --- a/drivers/serial/serial_ns16550.c +++ b/drivers/serial/serial_ns16550.c @@ -42,8 +42,9 @@ struct ns16550_priv { }; struct ns16550_drvdata { - void (*init_port)(struct console_device *cdev); - const char *linux_console_name; + void (*init_port)(struct console_device *cdev); + const char *linux_console_name; + unsigned int clk_default; }; static inline struct ns16550_priv *to_ns16550_priv(struct console_device *cdev) @@ -362,6 +363,12 @@ static __maybe_unused struct ns16550_drvdata omap_drvdata = { .linux_console_name = "ttyO", }; +static __maybe_unused struct ns16550_drvdata am43xx_drvdata = { + .init_port = ns16550_omap_init_port, + .linux_console_name = "ttyO", + .clk_default = 48000000, +}; + static __maybe_unused struct ns16550_drvdata jz_drvdata = { .init_port = ns16550_jz_init_port, }; @@ -472,6 +479,9 @@ static int ns16550_probe(struct device_d *dev) else ns16550_probe_dt(dev, priv); + if (devtype->clk_default && !priv->plat.clock) + priv->plat.clock = devtype->clk_default; + if (!priv->plat.clock) { priv->clk = clk_get(dev, NULL); if (IS_ERR(priv->clk)) { @@ -537,6 +547,9 @@ static struct of_device_id ns16550_serial_dt_ids[] = { }, { .compatible = "ti,omap4-uart", .data = &omap_drvdata, + }, { + .compatible = "ti,am4372-uart", + .data = &am43xx_drvdata, }, #endif #if IS_ENABLED(CONFIG_MACH_MIPS_XBURST) |