From: Peter Hurley <peter@hurleysoftware.com>
To: Masahiro Yamada <yamada.masahiro@socionext.com>,
linux-serial@vger.kernel.org
Cc: Jiri Slaby <jslaby@suse.com>,
linux-kernel@vger.kernel.org,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] serial: 8250_uniphier: add earlycon support
Date: Wed, 28 Oct 2015 11:21:00 -0400 [thread overview]
Message-ID: <5630E7DC.3050506@hurleysoftware.com> (raw)
In-Reply-To: <1445503154-14340-1-git-send-email-yamada.masahiro@socionext.com>
Hi Masahiro,
On 10/22/2015 04:39 AM, 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.
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> ---
>
> 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..c1075c5 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;
> };
>
> +#if IS_ENABLED(CONFIG_SERIAL_8250_CONSOLE)
#ifdef CONFIG_SERIAL_8250_CONSOLE
Customarily, IS_ENABLED() is only used in-function with control flow
statements; eg.,
if (IS_ENABLED() && .... )
....
> +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_uart, "socionext,uniphier-uart",
> + uniphier_early_console_setup);
Please change the earlycon name to just "uniphier" or "uniphier8250"; eg.,
OF_EARLYCON_DECLARE(uniphier, "socionext,uniphier-uart",
uniphier_early_console_setup);
My earlycon series merges OF_EARLYCON_DECLARE() => EARLYCON_DECLARE()
and "uniphier" is simpler on the command line.
Regards,
Peter Hurley
> +#endif
> +
> /*
> * The register map is slightly different from that of 8250.
> * IO callbacks must be overridden for correct access to FCR, LCR, and MCR.
>
WARNING: multiple messages have this Message-ID (diff)
From: peter@hurleysoftware.com (Peter Hurley)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] serial: 8250_uniphier: add earlycon support
Date: Wed, 28 Oct 2015 11:21:00 -0400 [thread overview]
Message-ID: <5630E7DC.3050506@hurleysoftware.com> (raw)
In-Reply-To: <1445503154-14340-1-git-send-email-yamada.masahiro@socionext.com>
Hi Masahiro,
On 10/22/2015 04:39 AM, 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.
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> ---
>
> 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..c1075c5 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;
> };
>
> +#if IS_ENABLED(CONFIG_SERIAL_8250_CONSOLE)
#ifdef CONFIG_SERIAL_8250_CONSOLE
Customarily, IS_ENABLED() is only used in-function with control flow
statements; eg.,
if (IS_ENABLED() && .... )
....
> +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_uart, "socionext,uniphier-uart",
> + uniphier_early_console_setup);
Please change the earlycon name to just "uniphier" or "uniphier8250"; eg.,
OF_EARLYCON_DECLARE(uniphier, "socionext,uniphier-uart",
uniphier_early_console_setup);
My earlycon series merges OF_EARLYCON_DECLARE() => EARLYCON_DECLARE()
and "uniphier" is simpler on the command line.
Regards,
Peter Hurley
> +#endif
> +
> /*
> * The register map is slightly different from that of 8250.
> * IO callbacks must be overridden for correct access to FCR, LCR, and MCR.
>
next prev parent reply other threads:[~2015-10-28 15:21 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-22 8:39 [PATCH] serial: 8250_uniphier: add earlycon support Masahiro Yamada
2015-10-22 8:39 ` Masahiro Yamada
2015-10-28 15:21 ` Peter Hurley [this message]
2015-10-28 15:21 ` Peter Hurley
2015-10-29 1:49 ` Masahiro Yamada
2015-10-29 1:49 ` Masahiro Yamada
2015-11-05 16:48 ` Peter Hurley
2015-11-05 16:48 ` Peter Hurley
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=5630E7DC.3050506@hurleysoftware.com \
--to=peter@hurleysoftware.com \
--cc=gregkh@linuxfoundation.org \
--cc=jslaby@suse.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=yamada.masahiro@socionext.com \
/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.