All of lore.kernel.org
 help / color / mirror / Atom feed
From: Aleksey Makarov <aleksey.makarov@linaro.org>
To: Russell King <linux@arm.linux.org.uk>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Aleksey Makarov <aleksey.makarov@linaro.org>,
	"Rafael J . Wysocki" <rjw@rjwysocki.net>,
	linux-serial@vger.kernel.org, linux-acpi@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, Len Brown <lenb@kernel.org>,
	Leif Lindholm <leif.lindholm@linaro.org>,
	Graeme Gregory <graeme.gregory@linaro.org>,
	Al Stone <ahs3@redhat.com>,
	Christopher Covington <cov@codeaurora.org>,
	Yury Norov <ynorov@caviumnetworks.com>,
	Peter Hurley <peter@hurleysoftware.com>,
	Andy Shevchenko <andy.shevchenko@gmail.com>,
	"Zheng, Lv" <lv.zheng@intel.com>,
	Mark Salter <msalter@redhat.com>,
	Kefeng Wang <wangkefeng.wang@huawei.com>,
	Russell King <linux@armlinux.org.uk>,
	Jiri Slaby <jslaby@suse.com>
Subject: Re: [PATCH v8 4/4] serial: pl011: add console matching function
Date: Mon, 20 Jun 2016 15:26:39 +0300	[thread overview]
Message-ID: <fd9443e7-67f1-93e7-834b-445f9c29d876@linaro.org> (raw)
In-Reply-To: <c37d62c7-1e1b-0b10-a083-c5207fbbb820@gmail.com>


On 06/02/2016 09:02 PM, Aleksey Makarov wrote:
> 
> On 05/20/2016 04:03 PM, Aleksey Makarov wrote:

Hi Russell,

Can you review this patch please?

Thank you
Aleksey Makarov

>> This patch adds function pl011_console_match() that implements
>> method match of struct console.  It allows to match consoles against
>> data specified in a string, for example taken from command line or
>> compiled by ACPI SPCR table handler.
>>
>> Signed-off-by: Aleksey Makarov <aleksey.makarov@linaro.org>
>> Reviewed-by: Peter Hurley <peter@hurleysoftware.com>
> 
> Hi Greg, Russell,
> 
> Can you review this patch and consider ACKing it please?
> It had an ACK from Greg in v7 but since then I changed it a bit.
> 
> The patch by Christopher Covington [1] specifies that SBSA uart 
> does 32-bit access to registers and this breaks the match function.  
> In this series the function was changed to match when SPCR specifies
> both mmio32 and mmio access.  I removed Acked-by: Greg from this
> patch because of these changes.
> 
> The difference between v7 and v8:
> 
> diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
> index 4139b64..388edc8 100644
> --- a/drivers/tty/serial/amba-pl011.c
> +++ b/drivers/tty/serial/amba-pl011.c
> @@ -2328,10 +2329,10 @@ static int __init pl011_console_match(struct console *co, char *name, int idx,
>  
>                 port = &amba_ports[i]->port;
>  
> -               if (port->iotype != iotype)
> +               if (iotype != UPIO_MEM && iotype != UPIO_MEM32)
>                         continue;
> -               if ((iotype == UPIO_MEM || iotype == UPIO_MEM32) &&
> -                   (port->mapbase != addr))
> +
> +               if (port->mapbase != addr)
>                         continue;
>  
>                 co->index = i;
> 
> [1] https://lkml.kernel.org/g/1457415800-8799-1-git-send-email-cov@codeaurora.org
> 
> Thank you
> Aleksey Makarov
> 
>> ---
>>  drivers/tty/serial/amba-pl011.c | 56 +++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 56 insertions(+)
>>
>> diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
>> index a2aa655..388edc8 100644
>> --- a/drivers/tty/serial/amba-pl011.c
>> +++ b/drivers/tty/serial/amba-pl011.c
>> @@ -2288,12 +2288,68 @@ static int __init pl011_console_setup(struct console *co, char *options)
>>  	return uart_set_options(&uap->port, co, baud, parity, bits, flow);
>>  }
>>  
>> +/**
>> + *	pl011_console_match - non-standard console matching
>> + *	@co:	  registering console
>> + *	@name:	  name from console command line
>> + *	@idx:	  index from console command line
>> + *	@options: ptr to option string from console command line
>> + *
>> + *	Only attempts to match console command lines of the form:
>> + *	    console=pl011,mmio|mmio32,<addr>[,<options>]
>> + *	    console=pl011,0x<addr>[,<options>]
>> + *	This form is used to register an initial earlycon boot console and
>> + *	replace it with the amba_console at pl011 driver init.
>> + *
>> + *	Performs console setup for a match (as required by interface)
>> + *	If no <options> are specified, then assume the h/w is already setup.
>> + *
>> + *	Returns 0 if console matches; otherwise non-zero to use default matching
>> + */
>> +static int __init pl011_console_match(struct console *co, char *name, int idx,
>> +				      char *options)
>> +{
>> +	char match[] = "pl011";	/* pl011-specific earlycon name */
>> +	unsigned char iotype;
>> +	unsigned long addr;
>> +	int i;
>> +
>> +	if (strncmp(name, match, 5) != 0)
>> +		return -ENODEV;
>> +
>> +	if (uart_parse_earlycon(options, &iotype, &addr, &options))
>> +		return -ENODEV;
>> +
>> +	/* try to match the port specified on the command line */
>> +	for (i = 0; i < ARRAY_SIZE(amba_ports); i++) {
>> +		struct uart_port *port;
>> +
>> +		if (!amba_ports[i])
>> +			continue;
>> +
>> +		port = &amba_ports[i]->port;
>> +
>> +		if (iotype != UPIO_MEM && iotype != UPIO_MEM32)
>> +			continue;
>> +
>> +		if (port->mapbase != addr)
>> +			continue;
>> +
>> +		co->index = i;
>> +		port->cons = co;
>> +		return pl011_console_setup(co, options);
>> +	}
>> +
>> +	return -ENODEV;
>> +}
>> +
>>  static struct uart_driver amba_reg;
>>  static struct console amba_console = {
>>  	.name		= "ttyAMA",
>>  	.write		= pl011_console_write,
>>  	.device		= uart_console_device,
>>  	.setup		= pl011_console_setup,
>> +	.match		= pl011_console_match,
>>  	.flags		= CON_PRINTBUFFER,
>>  	.index		= -1,
>>  	.data		= &amba_reg,
>>

WARNING: multiple messages have this Message-ID (diff)
From: aleksey.makarov@linaro.org (Aleksey Makarov)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v8 4/4] serial: pl011: add console matching function
Date: Mon, 20 Jun 2016 15:26:39 +0300	[thread overview]
Message-ID: <fd9443e7-67f1-93e7-834b-445f9c29d876@linaro.org> (raw)
In-Reply-To: <c37d62c7-1e1b-0b10-a083-c5207fbbb820@gmail.com>


On 06/02/2016 09:02 PM, Aleksey Makarov wrote:
> 
> On 05/20/2016 04:03 PM, Aleksey Makarov wrote:

Hi Russell,

Can you review this patch please?

Thank you
Aleksey Makarov

>> This patch adds function pl011_console_match() that implements
>> method match of struct console.  It allows to match consoles against
>> data specified in a string, for example taken from command line or
>> compiled by ACPI SPCR table handler.
>>
>> Signed-off-by: Aleksey Makarov <aleksey.makarov@linaro.org>
>> Reviewed-by: Peter Hurley <peter@hurleysoftware.com>
> 
> Hi Greg, Russell,
> 
> Can you review this patch and consider ACKing it please?
> It had an ACK from Greg in v7 but since then I changed it a bit.
> 
> The patch by Christopher Covington [1] specifies that SBSA uart 
> does 32-bit access to registers and this breaks the match function.  
> In this series the function was changed to match when SPCR specifies
> both mmio32 and mmio access.  I removed Acked-by: Greg from this
> patch because of these changes.
> 
> The difference between v7 and v8:
> 
> diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
> index 4139b64..388edc8 100644
> --- a/drivers/tty/serial/amba-pl011.c
> +++ b/drivers/tty/serial/amba-pl011.c
> @@ -2328,10 +2329,10 @@ static int __init pl011_console_match(struct console *co, char *name, int idx,
>  
>                 port = &amba_ports[i]->port;
>  
> -               if (port->iotype != iotype)
> +               if (iotype != UPIO_MEM && iotype != UPIO_MEM32)
>                         continue;
> -               if ((iotype == UPIO_MEM || iotype == UPIO_MEM32) &&
> -                   (port->mapbase != addr))
> +
> +               if (port->mapbase != addr)
>                         continue;
>  
>                 co->index = i;
> 
> [1] https://lkml.kernel.org/g/1457415800-8799-1-git-send-email-cov at codeaurora.org
> 
> Thank you
> Aleksey Makarov
> 
>> ---
>>  drivers/tty/serial/amba-pl011.c | 56 +++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 56 insertions(+)
>>
>> diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
>> index a2aa655..388edc8 100644
>> --- a/drivers/tty/serial/amba-pl011.c
>> +++ b/drivers/tty/serial/amba-pl011.c
>> @@ -2288,12 +2288,68 @@ static int __init pl011_console_setup(struct console *co, char *options)
>>  	return uart_set_options(&uap->port, co, baud, parity, bits, flow);
>>  }
>>  
>> +/**
>> + *	pl011_console_match - non-standard console matching
>> + *	@co:	  registering console
>> + *	@name:	  name from console command line
>> + *	@idx:	  index from console command line
>> + *	@options: ptr to option string from console command line
>> + *
>> + *	Only attempts to match console command lines of the form:
>> + *	    console=pl011,mmio|mmio32,<addr>[,<options>]
>> + *	    console=pl011,0x<addr>[,<options>]
>> + *	This form is used to register an initial earlycon boot console and
>> + *	replace it with the amba_console at pl011 driver init.
>> + *
>> + *	Performs console setup for a match (as required by interface)
>> + *	If no <options> are specified, then assume the h/w is already setup.
>> + *
>> + *	Returns 0 if console matches; otherwise non-zero to use default matching
>> + */
>> +static int __init pl011_console_match(struct console *co, char *name, int idx,
>> +				      char *options)
>> +{
>> +	char match[] = "pl011";	/* pl011-specific earlycon name */
>> +	unsigned char iotype;
>> +	unsigned long addr;
>> +	int i;
>> +
>> +	if (strncmp(name, match, 5) != 0)
>> +		return -ENODEV;
>> +
>> +	if (uart_parse_earlycon(options, &iotype, &addr, &options))
>> +		return -ENODEV;
>> +
>> +	/* try to match the port specified on the command line */
>> +	for (i = 0; i < ARRAY_SIZE(amba_ports); i++) {
>> +		struct uart_port *port;
>> +
>> +		if (!amba_ports[i])
>> +			continue;
>> +
>> +		port = &amba_ports[i]->port;
>> +
>> +		if (iotype != UPIO_MEM && iotype != UPIO_MEM32)
>> +			continue;
>> +
>> +		if (port->mapbase != addr)
>> +			continue;
>> +
>> +		co->index = i;
>> +		port->cons = co;
>> +		return pl011_console_setup(co, options);
>> +	}
>> +
>> +	return -ENODEV;
>> +}
>> +
>>  static struct uart_driver amba_reg;
>>  static struct console amba_console = {
>>  	.name		= "ttyAMA",
>>  	.write		= pl011_console_write,
>>  	.device		= uart_console_device,
>>  	.setup		= pl011_console_setup,
>> +	.match		= pl011_console_match,
>>  	.flags		= CON_PRINTBUFFER,
>>  	.index		= -1,
>>  	.data		= &amba_reg,
>>

  reply	other threads:[~2016-06-20 12:26 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-20 13:03 [PATCH v8 0/4] ACPI: parse the SPCR table Aleksey Makarov
2016-05-20 13:03 ` Aleksey Makarov
2016-05-20 13:03 ` [PATCH v8 1/4] of/serial: move earlycon early_param handling to serial Aleksey Makarov
2016-05-20 13:03   ` Aleksey Makarov
2016-05-20 13:03 ` [PATCH v8 2/4] ACPI: parse SPCR and enable matching console Aleksey Makarov
2016-05-20 13:03   ` Aleksey Makarov
2016-05-20 20:42   ` Rafael J. Wysocki
2016-05-20 20:42     ` Rafael J. Wysocki
2016-05-20 20:42     ` Rafael J. Wysocki
2016-05-20 13:03 ` [PATCH v8 3/4] ARM64: ACPI: enable ACPI_SPCR_TABLE Aleksey Makarov
2016-05-20 13:03   ` Aleksey Makarov
2016-05-20 13:03 ` [PATCH v8 4/4] serial: pl011: add console matching function Aleksey Makarov
2016-05-20 13:03   ` Aleksey Makarov
2016-06-02 18:02   ` Aleksey Makarov
2016-06-02 18:02     ` Aleksey Makarov
2016-06-20 12:26     ` Aleksey Makarov [this message]
2016-06-20 12:26       ` Aleksey Makarov
2016-06-20 15:19       ` Russell King - ARM Linux
2016-06-20 15:19         ` Russell King - ARM Linux
2016-06-20 15:19         ` Russell King - ARM Linux
2016-08-03  8:33         ` Graeme Gregory
2016-08-03  8:33           ` Graeme Gregory
2016-08-03  8:33           ` Graeme Gregory
2016-06-22 10:35   ` Aleksey Makarov
2016-06-22 10:35     ` Aleksey Makarov
2016-06-22 10:35     ` Aleksey Makarov
2016-06-22 12:18   ` Yury Norov
2016-06-22 12:18     ` Yury Norov
2016-06-22 12:18     ` Yury Norov
2016-06-22 14:08     ` Peter Hurley
2016-06-22 14:08       ` Peter Hurley
2016-06-22 20:45       ` Yury Norov
2016-06-22 20:45         ` Yury Norov
2016-06-22 20:45         ` Yury Norov
2016-07-11 14:40         ` Matthias Brugger
2016-07-11 14:40           ` Matthias Brugger
2016-07-11 15:50           ` Matthias Brugger
2016-07-11 15:50             ` Matthias Brugger
2016-05-27 13:41 ` [PATCH v8 0/4] ACPI: parse the SPCR table Aleksey Makarov
2016-05-27 13:41   ` Aleksey Makarov
2016-06-17 23:24 ` Timur Tabi
2016-06-17 23:24   ` Timur Tabi
2016-06-17 23:24   ` Timur Tabi
2016-06-20 16:04 ` Aleksey Makarov
2016-06-20 16:04   ` Aleksey Makarov
2016-06-20 16:04   ` Aleksey Makarov

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=fd9443e7-67f1-93e7-834b-445f9c29d876@linaro.org \
    --to=aleksey.makarov@linaro.org \
    --cc=ahs3@redhat.com \
    --cc=andy.shevchenko@gmail.com \
    --cc=cov@codeaurora.org \
    --cc=graeme.gregory@linaro.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=jslaby@suse.com \
    --cc=leif.lindholm@linaro.org \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --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=linux@armlinux.org.uk \
    --cc=lv.zheng@intel.com \
    --cc=msalter@redhat.com \
    --cc=peter@hurleysoftware.com \
    --cc=rjw@rjwysocki.net \
    --cc=wangkefeng.wang@huawei.com \
    --cc=ynorov@caviumnetworks.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.