History

tty: serial: imx: enable imx serial console port as module

Add support for building i.MX serial driver as module. The changes of the patch: - imx console driver can be built as module. - move out earlycon code to separated driver like imx_earlycon.c, and imx earlycon driver only support build-in.

Fugang Duan committed 6 years ago

Commit 0db4f9b1 parent a5e06912 files · +6 −40Browse files

Unified · Split

2 files
  1. drivers/tty/serial/Kconfig +4 −5
  2. drivers/tty/serial/imx.c +2 −35
drivers/tty/serial/Kconfig+4−5
@@ -502,15 +502,14 @@ config SERIAL_IMX · 501 unmodified lines
502 can enable its onboard serial port by enabling this option.502 can enable its onboard serial port by enabling this option.
503 503
504config SERIAL_IMX_CONSOLE504config SERIAL_IMX_CONSOLE
505 bool "Console on IMX serial port"505 tristate "Console on IMX serial port"
506 depends on SERIAL_IMX=y506 depends on SERIAL_IMX
507 select SERIAL_CORE_CONSOLE507 select SERIAL_CORE_CONSOLE
508 select SERIAL_EARLYCON if OF
509 help508 help
510 If you have enabled the serial port on the Freescale IMX509 If you have enabled the serial port on the Freescale IMX
511 CPU you can make it the console by answering Y to this option.510 CPU you can make it the console by answering Y/M to this option.
512 511
513 Even if you say Y here, the currently visible virtual console512 Even if you say Y/M here, the currently visible virtual console
514 (/dev/tty0) will still be used as the system console by default, but513 (/dev/tty0) will still be used as the system console by default, but
515 you can alter that using a kernel command line option such as514 you can alter that using a kernel command line option such as
516 "console=ttymxc0". (Try "man bootparam" or see the documentation of515 "console=ttymxc0". (Try "man bootparam" or see the documentation of
drivers/tty/serial/imx.c+2−35
@@ -373,7 +373,7 @@ static inline int imx_uart_is_imx6q(struct imx_port *sport) · 372 unmodified lines
373/*373/*
374 * Save and restore functions for UCR1, UCR2 and UCR3 registers374 * Save and restore functions for UCR1, UCR2 and UCR3 registers
375 */375 */
376#if defined(CONFIG_SERIAL_IMX_CONSOLE)376#if IS_ENABLED(CONFIG_SERIAL_IMX_CONSOLE)
377static void imx_uart_ucrs_save(struct imx_port *sport,377static void imx_uart_ucrs_save(struct imx_port *sport,
378 struct imx_port_ucrs *ucr)378 struct imx_port_ucrs *ucr)
379{379{
@@ -1979,7 +1979,7 @@ static const struct uart_ops imx_uart_pops = { · 1599 unmodified lines
1979 1979
1980static struct imx_port *imx_uart_ports[UART_NR];1980static struct imx_port *imx_uart_ports[UART_NR];
1981 1981
1982#ifdef CONFIG_SERIAL_IMX_CONSOLE1982#if IS_ENABLED(CONFIG_SERIAL_IMX_CONSOLE)
1983static void imx_uart_console_putchar(struct uart_port *port, int ch)1983static void imx_uart_console_putchar(struct uart_port *port, int ch)
1984{1984{
1985 struct imx_port *sport = (struct imx_port *)port;1985 struct imx_port *sport = (struct imx_port *)port;
@@ -2176,39 +2176,6 @@ static struct console imx_uart_console = { · 190 unmodified lines
2176 2176
2177#define IMX_CONSOLE &imx_uart_console2177#define IMX_CONSOLE &imx_uart_console
2178 2178
2179#ifdef CONFIG_OF
2180static void imx_uart_console_early_putchar(struct uart_port *port, int ch)
2181{
2182 struct imx_port *sport = (struct imx_port *)port;
2183
2184 while (imx_uart_readl(sport, IMX21_UTS) & UTS_TXFULL)
2185 cpu_relax();
2186
2187 imx_uart_writel(sport, ch, URTX0);
2188}
2189
2190static void imx_uart_console_early_write(struct console *con, const char *s,
2191 unsigned count)
2192{
2193 struct earlycon_device *dev = con->data;
2194
2195 uart_console_write(&dev->port, s, count, imx_uart_console_early_putchar);
2196}
2197
2198static int __init
2199imx_console_early_setup(struct earlycon_device *dev, const char *opt)
2200{
2201 if (!dev->port.membase)
2202 return -ENODEV;
2203
2204 dev->con->write = imx_uart_console_early_write;
2205
2206 return 0;
2207}
2208OF_EARLYCON_DECLARE(ec_imx6q, "fsl,imx6q-uart", imx_console_early_setup);
2209OF_EARLYCON_DECLARE(ec_imx21, "fsl,imx21-uart", imx_console_early_setup);
2210#endif
2211
2212#else2179#else
2213#define IMX_CONSOLE NULL2180#define IMX_CONSOLE NULL
2214#endif2181#endif