From: Rob Herring <robherring2@gmail.com> To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Jiri Slaby <jslaby@suse.cz>, Catalin Marinas <catalin.marinas@arm.com>, Russell King <linux@arm.linux.org.uk>, Will Deacon <will.deacon@arm.com>, x86@kernel.org, Arnd Bergmann <arnd@arndb.de>, Rob Herring <robh@kernel.org> Subject: [PATCH 6/8] tty/serial: pl011: add generic earlycon support Date: Fri, 21 Mar 2014 16:08:46 -0500 [thread overview] Message-ID: <1395436128-11244-7-git-send-email-robherring2@gmail.com> (raw) In-Reply-To: <1395436128-11244-1-git-send-email-robherring2@gmail.com> From: Rob Herring <robh@kernel.org> Add earlycon support for the pl011 serial port. This allows enabling the pl011 for console when early_params are processed. This is based on the arm64 earlyprintk support and is intended to replace it. Signed-off-by: Rob Herring <robh@kernel.org> Cc: Russell King <linux@arm.linux.org.uk> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Jiri Slaby <jslaby@suse.cz> --- Documentation/kernel-parameters.txt | 5 +++-- drivers/tty/serial/amba-pl011.c | 30 +++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 5ce8b7a..81bdd52 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt @@ -887,8 +887,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted. uart[8250],io,<addr>[,options] uart[8250],mmio,<addr>[,options] uart[8250],mmio32,<addr>[,options] - Start an early, polled-mode console on the 8250/16550 - UART at the specified I/O port or MMIO address. + pl011,<addr> + Start an early, polled-mode console on a serial port + at the specified I/O port or MMIO address. 8250 MMIO inter-register address stride is either 8-bit (mmio) or 32-bit (mmio32). The options are the same as for ttyS, above. diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c index d4eda24..4227c0a 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c @@ -303,7 +303,7 @@ static void pl011_dma_probe_initcall(struct device *dev, struct uart_amba_port * /* Optionally make use of an RX channel as well */ chan = dma_request_slave_channel(dev, "rx"); - + if (!chan && plat->dma_rx_param) { chan = dma_request_channel(mask, plat->dma_filter, plat->dma_rx_param); @@ -2045,6 +2045,34 @@ static struct console amba_console = { }; #define AMBA_CONSOLE (&amba_console) + +static void pl011_putc(struct uart_port *port, int c) +{ + while (readl(port->membase + UART01x_FR) & UART01x_FR_TXFF) + ; + writeb(c, port->membase + UART01x_DR); + while (readl(port->membase + UART01x_FR) & UART01x_FR_BUSY) + ; +} + +static void pl011_early_write(struct console *con, const char *s, unsigned n) +{ + struct earlycon_device *dev = con->data; + + uart_console_write(&dev->port, s, n, pl011_putc); +} + +static int __init pl011_early_console_setup(struct earlycon_device *device, + const char *opt) +{ + if (!device->port.membase) + return -ENODEV; + + device->con->write = pl011_early_write; + return 0; +} +EARLYCON_DECLARE(pl011, pl011_early_console_setup); + #else #define AMBA_CONSOLE NULL #endif -- 1.8.3.2
WARNING: multiple messages have this Message-ID (diff)
From: robherring2@gmail.com (Rob Herring) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 6/8] tty/serial: pl011: add generic earlycon support Date: Fri, 21 Mar 2014 16:08:46 -0500 [thread overview] Message-ID: <1395436128-11244-7-git-send-email-robherring2@gmail.com> (raw) In-Reply-To: <1395436128-11244-1-git-send-email-robherring2@gmail.com> From: Rob Herring <robh@kernel.org> Add earlycon support for the pl011 serial port. This allows enabling the pl011 for console when early_params are processed. This is based on the arm64 earlyprintk support and is intended to replace it. Signed-off-by: Rob Herring <robh@kernel.org> Cc: Russell King <linux@arm.linux.org.uk> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Jiri Slaby <jslaby@suse.cz> --- Documentation/kernel-parameters.txt | 5 +++-- drivers/tty/serial/amba-pl011.c | 30 +++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 5ce8b7a..81bdd52 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt @@ -887,8 +887,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted. uart[8250],io,<addr>[,options] uart[8250],mmio,<addr>[,options] uart[8250],mmio32,<addr>[,options] - Start an early, polled-mode console on the 8250/16550 - UART at the specified I/O port or MMIO address. + pl011,<addr> + Start an early, polled-mode console on a serial port + at the specified I/O port or MMIO address. 8250 MMIO inter-register address stride is either 8-bit (mmio) or 32-bit (mmio32). The options are the same as for ttyS, above. diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c index d4eda24..4227c0a 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c @@ -303,7 +303,7 @@ static void pl011_dma_probe_initcall(struct device *dev, struct uart_amba_port * /* Optionally make use of an RX channel as well */ chan = dma_request_slave_channel(dev, "rx"); - + if (!chan && plat->dma_rx_param) { chan = dma_request_channel(mask, plat->dma_filter, plat->dma_rx_param); @@ -2045,6 +2045,34 @@ static struct console amba_console = { }; #define AMBA_CONSOLE (&amba_console) + +static void pl011_putc(struct uart_port *port, int c) +{ + while (readl(port->membase + UART01x_FR) & UART01x_FR_TXFF) + ; + writeb(c, port->membase + UART01x_DR); + while (readl(port->membase + UART01x_FR) & UART01x_FR_BUSY) + ; +} + +static void pl011_early_write(struct console *con, const char *s, unsigned n) +{ + struct earlycon_device *dev = con->data; + + uart_console_write(&dev->port, s, n, pl011_putc); +} + +static int __init pl011_early_console_setup(struct earlycon_device *device, + const char *opt) +{ + if (!device->port.membase) + return -ENODEV; + + device->con->write = pl011_early_write; + return 0; +} +EARLYCON_DECLARE(pl011, pl011_early_console_setup); + #else #define AMBA_CONSOLE NULL #endif -- 1.8.3.2
next prev parent reply other threads:[~2014-03-21 21:11 UTC|newest] Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-03-21 21:08 [PATCH 0/8] Generic serial earlycon Rob Herring 2014-03-21 21:08 ` Rob Herring [not found] ` < 201403221054.39799.arnd@arndb.de> [not found] ` < CAL_JsqKjGjyYypwneCmNc1qeKe0ZOG9gz3QSJ37-HwHXKu3iRA@mail.gmail.com> [not found] ` < 20140329001732.BECE2C41FF4@trevor.secretlab.ca> 2014-03-21 21:08 ` [PATCH 1/8] x86: move FIX_EARLYCON_MEM kconfig into x86 Rob Herring 2014-03-21 21:08 ` Rob Herring 2014-03-21 21:08 ` Rob Herring 2014-03-21 21:08 ` [PATCH 2/8] arm64: add FIXMAP_PAGE_NOCACHE definition Rob Herring 2014-03-21 21:08 ` Rob Herring 2014-03-24 11:13 ` Catalin Marinas 2014-03-24 11:13 ` Catalin Marinas 2014-03-24 11:13 ` Catalin Marinas 2014-03-21 21:08 ` [PATCH 3/8] arm64: enable FIX_EARLYCON_MEM kconfig Rob Herring 2014-03-21 21:08 ` Rob Herring 2014-03-24 11:38 ` Catalin Marinas 2014-03-24 11:38 ` Catalin Marinas 2014-03-24 11:38 ` Catalin Marinas 2014-03-21 21:08 ` [PATCH 4/8] tty/serial: add generic serial earlycon Rob Herring 2014-03-21 21:08 ` Rob Herring 2014-03-24 11:22 ` Catalin Marinas 2014-03-24 11:22 ` Catalin Marinas 2014-03-24 11:22 ` Catalin Marinas 2014-03-24 11:29 ` Arnd Bergmann 2014-03-24 11:29 ` Arnd Bergmann 2014-03-24 13:36 ` Rob Herring 2014-03-24 13:36 ` Rob Herring 2014-03-24 13:36 ` Rob Herring 2014-03-24 15:42 ` Arnd Bergmann 2014-03-24 15:42 ` Arnd Bergmann 2014-03-24 15:42 ` Arnd Bergmann 2014-04-17 18:27 ` Rob Herring 2014-04-17 18:27 ` Rob Herring 2014-04-17 18:27 ` Rob Herring 2014-04-17 20:16 ` Alan Cox 2014-04-17 20:16 ` Alan Cox 2014-04-17 20:16 ` Alan Cox 2014-04-19 11:32 ` Arnd Bergmann 2014-04-19 11:32 ` Arnd Bergmann 2014-04-19 11:32 ` Arnd Bergmann 2014-03-21 21:08 ` [PATCH 5/8] tty/serial: convert 8250 to generic earlycon Rob Herring 2014-03-21 21:08 ` Rob Herring 2014-03-21 21:08 ` Rob Herring [this message] 2014-03-21 21:08 ` [PATCH 6/8] tty/serial: pl011: add generic earlycon support Rob Herring 2014-03-24 11:28 ` Catalin Marinas 2014-03-24 11:28 ` Catalin Marinas 2014-03-24 11:28 ` Catalin Marinas 2014-04-16 22:14 ` Rob Herring 2014-04-16 22:14 ` Rob Herring 2014-04-16 22:14 ` Rob Herring 2014-04-23 16:39 ` Catalin Marinas 2014-04-23 16:39 ` Catalin Marinas 2014-04-23 16:39 ` Catalin Marinas 2014-03-21 21:08 ` [PATCH 7/8] tty/serial: add arm64 semihosting earlycon Rob Herring 2014-03-21 21:08 ` Rob Herring 2014-03-23 20:04 ` Nicolas Pitre 2014-03-23 20:04 ` Nicolas Pitre 2014-03-23 20:23 ` Arnd Bergmann 2014-03-23 20:23 ` Arnd Bergmann 2014-03-23 21:48 ` Nicolas Pitre 2014-03-23 21:48 ` Nicolas Pitre 2014-03-24 11:38 ` Catalin Marinas 2014-03-24 11:38 ` Catalin Marinas 2014-03-24 11:38 ` Catalin Marinas 2014-03-24 11:48 ` Catalin Marinas 2014-03-24 11:48 ` Catalin Marinas 2014-03-24 11:48 ` Catalin Marinas 2014-03-21 21:08 ` [PATCH 8/8] arm64: remove arch specific earlyprintk Rob Herring 2014-03-21 21:08 ` Rob Herring 2014-03-22 9:54 ` [PATCH 0/8] Generic serial earlycon Arnd Bergmann 2014-03-22 9:54 ` Arnd Bergmann 2014-03-22 9:54 ` Arnd Bergmann 2014-03-22 14:14 ` Rob Herring 2014-03-22 14:14 ` Rob Herring 2014-03-22 14:14 ` Rob Herring 2014-03-22 22:01 ` Arnd Bergmann 2014-03-22 22:01 ` Arnd Bergmann 2014-03-22 22:01 ` Arnd Bergmann 2014-03-23 15:09 ` Rob Herring 2014-03-23 15:09 ` Rob Herring 2014-03-23 15:09 ` Rob Herring 2014-03-23 19:49 ` Arnd Bergmann 2014-03-23 19:49 ` Arnd Bergmann 2014-03-23 19:49 ` Arnd Bergmann 2014-03-29 0:17 ` Grant Likely 2014-03-29 0:17 ` Grant Likely 2014-03-29 0:17 ` Grant Likely 2014-03-29 14:33 ` Rob Herring 2014-03-29 14:33 ` Rob Herring 2014-03-29 14:33 ` Rob Herring 2014-03-29 15:34 ` Grant Likely 2014-03-29 15:34 ` Grant Likely 2014-03-29 15:34 ` Grant Likely
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1395436128-11244-7-git-send-email-robherring2@gmail.com \ --to=robherring2@gmail.com \ --cc=arnd@arndb.de \ --cc=catalin.marinas@arm.com \ --cc=gregkh@linuxfoundation.org \ --cc=jslaby@suse.cz \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-serial@vger.kernel.org \ --cc=linux@arm.linux.org.uk \ --cc=robh@kernel.org \ --cc=will.deacon@arm.com \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.