* [PATCH v2] serial: 8250_uniphier: add earlycon support
@ 2015-10-30 2:46 Masahiro Yamada
2015-10-30 13:30 ` Peter Hurley
0 siblings, 1 reply; 2+ messages in thread
From: Masahiro Yamada @ 2015-10-30 2:46 UTC (permalink / raw)
To: linux-serial
Cc: Peter Hurley, Masahiro Yamada, Jiri Slaby, linux-kernel,
Greg Kroah-Hartman, linux-arm-kernel
This reuses the code of drivers/tty/serial/8250/8250_early.c except
- Overwrite device->port.iotype and device->port.regshift for
UPIO_MEM32 because of_setup_earlycon() has set them for UPIO_MEM.
- Set device->baud to zero to prevent early8250_setup() from
initializing the divisor register because port->uartclk does not
match the frequency expected by this hardware.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---
Changes in v2:
- #if IS_ENABLED(...) -> #ifdef ...
- Change earlycon name from uniphier_uart to uniphier
drivers/tty/serial/8250/8250_uniphier.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/drivers/tty/serial/8250/8250_uniphier.c b/drivers/tty/serial/8250/8250_uniphier.c
index 245edbb..bab6b3a 100644
--- a/drivers/tty/serial/8250/8250_uniphier.c
+++ b/drivers/tty/serial/8250/8250_uniphier.c
@@ -13,6 +13,7 @@
*/
#include <linux/clk.h>
+#include <linux/console.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/of.h>
@@ -34,6 +35,29 @@ struct uniphier8250_priv {
spinlock_t atomic_write_lock;
};
+#ifdef CONFIG_SERIAL_8250_CONSOLE
+static int __init uniphier_early_console_setup(struct earlycon_device *device,
+ const char *options)
+{
+ if (!device->port.membase)
+ return -ENODEV;
+
+ /* This hardware always expects MMIO32 register interface. */
+ device->port.iotype = UPIO_MEM32;
+ device->port.regshift = 2;
+
+ /*
+ * Do not touch the divisor register in early_serial8250_setup();
+ * we assume it has been initialized by a boot loader.
+ */
+ device->baud = 0;
+
+ return early_serial8250_setup(device, options);
+}
+OF_EARLYCON_DECLARE(uniphier, "socionext,uniphier-uart",
+ uniphier_early_console_setup);
+#endif
+
/*
* The register map is slightly different from that of 8250.
* IO callbacks must be overridden for correct access to FCR, LCR, and MCR.
--
1.9.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v2] serial: 8250_uniphier: add earlycon support
2015-10-30 2:46 [PATCH v2] serial: 8250_uniphier: add earlycon support Masahiro Yamada
@ 2015-10-30 13:30 ` Peter Hurley
0 siblings, 0 replies; 2+ messages in thread
From: Peter Hurley @ 2015-10-30 13:30 UTC (permalink / raw)
To: Masahiro Yamada
Cc: linux-serial, Jiri Slaby, linux-kernel, Greg Kroah-Hartman,
linux-arm-kernel
On 10/29/2015 10:46 PM, Masahiro Yamada wrote:
> This reuses the code of drivers/tty/serial/8250/8250_early.c except
>
> - Overwrite device->port.iotype and device->port.regshift for
> UPIO_MEM32 because of_setup_earlycon() has set them for UPIO_MEM.
>
> - Set device->baud to zero to prevent early8250_setup() from
> initializing the divisor register because port->uartclk does not
> match the frequency expected by this hardware.
Reviewed-by: Peter Hurley <peter@hurleysoftware.com>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-10-30 13:30 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-30 2:46 [PATCH v2] serial: 8250_uniphier: add earlycon support Masahiro Yamada
2015-10-30 13:30 ` Peter Hurley
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).