All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rob Herring <robherring2@gmail.com>
To: Catalin Marinas <catalin.marinas@arm.com>
Cc: "linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-serial@vger.kernel.org" <linux-serial@vger.kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Jiri Slaby <jslaby@suse.cz>,
	Russell King <linux@arm.linux.org.uk>,
	Will Deacon <Will.Deacon@arm.com>,
	"x86@kernel.org" <x86@kernel.org>, Arnd Bergmann <arnd@arndb.de>
Subject: Re: [PATCH 6/8] tty/serial: pl011: add generic earlycon support
Date: Wed, 16 Apr 2014 17:14:28 -0500	[thread overview]
Message-ID: <CAL_Jsq+rQA8p9oYk-Urh_z6MTqCy0RNr=k0nz7r0OTuMCPUNWA@mail.gmail.com> (raw)
In-Reply-To: <20140324112821.GE3850@arm.com>

On Mon, Mar 24, 2014 at 6:28 AM, Catalin Marinas
<catalin.marinas@arm.com> wrote:
> On Fri, Mar 21, 2014 at 09:08:46PM +0000, Rob Herring wrote:
>> 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.
>
> I think the last line is a bit misleading. Or did you intend to leave it
> with the uart[8250] parameter? See below:

How about this (excuse the gmail lack of tabs):

earlycon= [KNL] Output early console device and options.

 uart[8250],io,<addr>[,options]
 uart[8250],mmio,<addr>[,options]
 uart[8250],mmio32,<addr>[,options]
  Start an early, polled-mode console on an 8250 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.

 pl011,<addr>
  Start an early, polled-mode console on a pl011 serial
  port at the specified address. The pl011 serial port
  must already be setup and configured. Options are not
  yet supported.

 smh Use ARM semihosting calls for early console.


>
>> 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
> [...]
>> +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);
>
> Here we expect the PL011 to be already initialised by the boot loader
> and the kernel continues using the same settings. So maybe clarify this
> in the pl011 kernel parameter doc and we can add proper configuration
> using a separate patch.

Enabling and setup would not be too hard, but either baud rate will
always have to be configured or we'll have to specify the input clock
rate too. The 8250 driver basically does the former or assumes a fixed
clock.

Adding any setup will also break any non-pl011 based SBSA compliant
uart since the configuration registers are not standardized. I guess
we can add "sbsauart" when/if that happens.

Rob

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: Wed, 16 Apr 2014 17:14:28 -0500	[thread overview]
Message-ID: <CAL_Jsq+rQA8p9oYk-Urh_z6MTqCy0RNr=k0nz7r0OTuMCPUNWA@mail.gmail.com> (raw)
In-Reply-To: <20140324112821.GE3850@arm.com>

On Mon, Mar 24, 2014 at 6:28 AM, Catalin Marinas
<catalin.marinas@arm.com> wrote:
> On Fri, Mar 21, 2014 at 09:08:46PM +0000, Rob Herring wrote:
>> 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.
>
> I think the last line is a bit misleading. Or did you intend to leave it
> with the uart[8250] parameter? See below:

How about this (excuse the gmail lack of tabs):

earlycon= [KNL] Output early console device and options.

 uart[8250],io,<addr>[,options]
 uart[8250],mmio,<addr>[,options]
 uart[8250],mmio32,<addr>[,options]
  Start an early, polled-mode console on an 8250 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.

 pl011,<addr>
  Start an early, polled-mode console on a pl011 serial
  port at the specified address. The pl011 serial port
  must already be setup and configured. Options are not
  yet supported.

 smh Use ARM semihosting calls for early console.


>
>> 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
> [...]
>> +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);
>
> Here we expect the PL011 to be already initialised by the boot loader
> and the kernel continues using the same settings. So maybe clarify this
> in the pl011 kernel parameter doc and we can add proper configuration
> using a separate patch.

Enabling and setup would not be too hard, but either baud rate will
always have to be configured or we'll have to specify the input clock
rate too. The 8250 driver basically does the former or assumes a fixed
clock.

Adding any setup will also break any non-pl011 based SBSA compliant
uart since the configuration registers are not standardized. I guess
we can add "sbsauart" when/if that happens.

Rob

  reply	other threads:[~2014-04-16 22:14 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 ` [PATCH 6/8] tty/serial: pl011: add generic earlycon support Rob Herring
2014-03-21 21:08   ` 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 [this message]
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='CAL_Jsq+rQA8p9oYk-Urh_z6MTqCy0RNr=k0nz7r0OTuMCPUNWA@mail.gmail.com' \
    --to=robherring2@gmail.com \
    --cc=Will.Deacon@arm.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=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: link
Be 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.