* [PATCH 1/2] [v2] tty: amba-pl011: fix earlycon register offsets @ 2016-01-04 21:37 Timur Tabi 2016-01-04 21:37 ` [PATCH 2/2] tty: amba-pl011: use iotype instead of access_32b to track 32-bit I/O Timur Tabi 2016-01-06 2:43 ` [PATCH 1/2] [v2] tty: amba-pl011: fix earlycon register offsets Greg Kroah-Hartman 0 siblings, 2 replies; 6+ messages in thread From: Timur Tabi @ 2016-01-04 21:37 UTC (permalink / raw) To: Greg Kroah-Hartman, Russell King, andre.przywara, Linus Walleij, jslaby, jun.nie, shijie.huang, peter, andrew.jackson, linux-serial, linux-arm-msm From: Russell King <rmk+kernel@arm.linux.org.uk> The REG_x macros are indices into a table, not register offsets. Since earlycon does not have access to the vendor data, we can currently only support standard ARM PL011 devices. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Tested-by: Huang Shijie <shijie.huang@arm.com> Signed-off-by: Timur Tabi <timur@codeaurora.org> --- drivers/tty/serial/amba-pl011.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c index f6ad383..42aabb84 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c @@ -2302,10 +2302,10 @@ static struct console amba_console = { static void pl011_putc(struct uart_port *port, int c) { - while (readl(port->membase + REG_FR) & UART01x_FR_TXFF) + while (readl(port->membase + UART01x_FR) & UART01x_FR_TXFF) ; - writeb(c, port->membase + REG_DR); - while (readl(port->membase + REG_FR) & UART01x_FR_BUSY) + writeb(c, port->membase + UART01x_DR); + while (readl(port->membase + UART01x_FR) & UART01x_FR_BUSY) ; } -- Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project. ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] tty: amba-pl011: use iotype instead of access_32b to track 32-bit I/O 2016-01-04 21:37 [PATCH 1/2] [v2] tty: amba-pl011: fix earlycon register offsets Timur Tabi @ 2016-01-04 21:37 ` Timur Tabi 2016-01-07 8:09 ` Geert Uytterhoeven 2016-01-06 2:43 ` [PATCH 1/2] [v2] tty: amba-pl011: fix earlycon register offsets Greg Kroah-Hartman 1 sibling, 1 reply; 6+ messages in thread From: Timur Tabi @ 2016-01-04 21:37 UTC (permalink / raw) To: Greg Kroah-Hartman, Russell King, andre.przywara, Linus Walleij, jslaby, jun.nie, shijie.huang, peter, andrew.jackson, linux-serial, linux-arm-msm Instead of defining a new field in the uart_amba_port structure, use the existing iotype field of the uart_port structure, which is intended for this purpose. If we need to use 32-bit register access, we set iotype to UPIO_MEM32, otherwise we set it to UPIO_MEM. For early console, specify the "mmio32" option on the kernel command-line. Example: earlycon=pl011,mmio32,0x3ced1000 Signed-off-by: Timur Tabi <timur@codeaurora.org> --- Documentation/kernel-parameters.txt | 5 ++++- drivers/tty/serial/amba-pl011.c | 16 +++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 474ce69..ab11d5c 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt @@ -995,10 +995,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted. unspecified, the h/w is not initialized. pl011,<addr> + pl011,mmio32,<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. + yet supported. If 'mmio32' is specified, then only + the driver will use only 32-bit accessors to read/write + the device registers. msm_serial,<addr> Start an early, polled-mode console on an msm serial diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c index 42aabb84..80df184 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c @@ -239,7 +239,6 @@ struct uart_amba_port { unsigned int fifosize; /* vendor-specific */ unsigned int old_cr; /* state during shutdown */ bool autorts; - bool access_32b; unsigned int fixed_baud; /* vendor-set fixed baud rate */ char type[12]; #ifdef CONFIG_DMA_ENGINE @@ -263,7 +262,8 @@ static unsigned int pl011_read(const struct uart_amba_port *uap, { void __iomem *addr = uap->port.membase + pl011_reg_to_offset(uap, reg); - return uap->access_32b ? readl_relaxed(addr) : readw_relaxed(addr); + return (uap->port.iotype == UPIO_MEM32) ? + readl_relaxed(addr) : readw_relaxed(addr); } static void pl011_write(unsigned int val, const struct uart_amba_port *uap, @@ -271,7 +271,7 @@ static void pl011_write(unsigned int val, const struct uart_amba_port *uap, { void __iomem *addr = uap->port.membase + pl011_reg_to_offset(uap, reg); - if (uap->access_32b) + if (uap->port.iotype == UPIO_MEM32) writel_relaxed(val, addr); else writew_relaxed(val, addr); @@ -2304,7 +2304,10 @@ 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); + if (port->iotype == UPIO_MEM32) + writel(c, port->membase + UART01x_DR); + else + writeb(c, port->membase + UART01x_DR); while (readl(port->membase + UART01x_FR) & UART01x_FR_BUSY) ; } @@ -2417,7 +2420,6 @@ static int pl011_setup_port(struct device *dev, struct uart_amba_port *uap, uap->port.dev = dev; uap->port.mapbase = mmiobase->start; uap->port.membase = base; - uap->port.iotype = UPIO_MEM; uap->port.fifosize = uap->fifosize; uap->port.flags = UPF_BOOT_AUTOCONF; uap->port.line = index; @@ -2471,9 +2473,9 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id) return PTR_ERR(uap->clk); uap->reg_offset = vendor->reg_offset; - uap->access_32b = vendor->access_32b; uap->vendor = vendor; uap->fifosize = vendor->get_fifosize(dev); + uap->port.iotype = vendor->access_32b ? UPIO_MEM32 : UPIO_MEM; uap->port.irq = dev->irq[0]; uap->port.ops = &amba_pl011_pops; @@ -2552,9 +2554,9 @@ static int sbsa_uart_probe(struct platform_device *pdev) return -ENOMEM; uap->reg_offset = vendor_sbsa.reg_offset; - uap->access_32b = vendor_sbsa.access_32b; uap->vendor = &vendor_sbsa; uap->fifosize = 32; + uap->port.iotype = vendor_sbsa.access_32b ? UPIO_MEM32 : UPIO_MEM; uap->port.irq = platform_get_irq(pdev, 0); uap->port.ops = &sbsa_uart_pops; uap->fixed_baud = baudrate; -- Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project. ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] tty: amba-pl011: use iotype instead of access_32b to track 32-bit I/O 2016-01-04 21:37 ` [PATCH 2/2] tty: amba-pl011: use iotype instead of access_32b to track 32-bit I/O Timur Tabi @ 2016-01-07 8:09 ` Geert Uytterhoeven 0 siblings, 0 replies; 6+ messages in thread From: Geert Uytterhoeven @ 2016-01-07 8:09 UTC (permalink / raw) To: Timur Tabi Cc: Greg Kroah-Hartman, Russell King, Andre Przywara, Linus Walleij, Jiri Slaby, jun.nie, shijie.huang, Peter Hurley, andrew.jackson, linux-serial@vger.kernel.org, linux-arm-msm@vger.kernel.org On Mon, Jan 4, 2016 at 10:37 PM, Timur Tabi <timur@codeaurora.org> wrote: > --- a/Documentation/kernel-parameters.txt > +++ b/Documentation/kernel-parameters.txt > @@ -995,10 +995,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted. > unspecified, the h/w is not initialized. > > pl011,<addr> > + pl011,mmio32,<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. > + yet supported. If 'mmio32' is specified, then only Bogus "only" > + the driver will use only 32-bit accessors to read/write > + the device registers. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] [v2] tty: amba-pl011: fix earlycon register offsets 2016-01-04 21:37 [PATCH 1/2] [v2] tty: amba-pl011: fix earlycon register offsets Timur Tabi 2016-01-04 21:37 ` [PATCH 2/2] tty: amba-pl011: use iotype instead of access_32b to track 32-bit I/O Timur Tabi @ 2016-01-06 2:43 ` Greg Kroah-Hartman 2016-01-06 2:46 ` Timur Tabi 1 sibling, 1 reply; 6+ messages in thread From: Greg Kroah-Hartman @ 2016-01-06 2:43 UTC (permalink / raw) To: Timur Tabi Cc: Russell King, andre.przywara, Linus Walleij, jslaby, jun.nie, shijie.huang, peter, andrew.jackson, linux-serial, linux-arm-msm On Mon, Jan 04, 2016 at 03:37:41PM -0600, Timur Tabi wrote: > From: Russell King <rmk+kernel@arm.linux.org.uk> > > The REG_x macros are indices into a table, not register offsets. Since earlycon > does not have access to the vendor data, we can currently only support standard > ARM PL011 devices. > > Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> > Tested-by: Huang Shijie <shijie.huang@arm.com> > Signed-off-by: Timur Tabi <timur@codeaurora.org> > --- > drivers/tty/serial/amba-pl011.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) What changed in v2? thanks, greg k-h ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] [v2] tty: amba-pl011: fix earlycon register offsets 2016-01-06 2:43 ` [PATCH 1/2] [v2] tty: amba-pl011: fix earlycon register offsets Greg Kroah-Hartman @ 2016-01-06 2:46 ` Timur Tabi 2016-01-06 2:51 ` Greg Kroah-Hartman 0 siblings, 1 reply; 6+ messages in thread From: Timur Tabi @ 2016-01-06 2:46 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: Russell King, andre.przywara, Linus Walleij, jslaby, jun.nie, shijie.huang, peter, andrew.jackson, linux-serial, linux-arm-msm Greg Kroah-Hartman wrote: >> >Signed-off-by: Russell King<rmk+kernel@arm.linux.org.uk> >> >Tested-by: Huang Shijie<shijie.huang@arm.com> >> >Signed-off-by: Timur Tabi<timur@codeaurora.org> >> >--- >> > drivers/tty/serial/amba-pl011.c | 6 +++--- >> > 1 file changed, 3 insertions(+), 3 deletions(-) > What changed in v2? I fixed a typo with a macro name (UART01x_FR_BUSY instead of UART011_FR_BUSY). -- Sent by an employee of the Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] [v2] tty: amba-pl011: fix earlycon register offsets 2016-01-06 2:46 ` Timur Tabi @ 2016-01-06 2:51 ` Greg Kroah-Hartman 0 siblings, 0 replies; 6+ messages in thread From: Greg Kroah-Hartman @ 2016-01-06 2:51 UTC (permalink / raw) To: Timur Tabi Cc: Russell King, andre.przywara, Linus Walleij, jslaby, jun.nie, shijie.huang, peter, andrew.jackson, linux-serial, linux-arm-msm On Tue, Jan 05, 2016 at 08:46:11PM -0600, Timur Tabi wrote: > Greg Kroah-Hartman wrote: > >>>Signed-off-by: Russell King<rmk+kernel@arm.linux.org.uk> > >>>Tested-by: Huang Shijie<shijie.huang@arm.com> > >>>Signed-off-by: Timur Tabi<timur@codeaurora.org> > >>>--- > >>> drivers/tty/serial/amba-pl011.c | 6 +++--- > >>> 1 file changed, 3 insertions(+), 3 deletions(-) > >What changed in v2? > > I fixed a typo with a macro name (UART01x_FR_BUSY instead of > UART011_FR_BUSY). Please always document this below the --- line, you know this... ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-01-07 8:09 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-01-04 21:37 [PATCH 1/2] [v2] tty: amba-pl011: fix earlycon register offsets Timur Tabi 2016-01-04 21:37 ` [PATCH 2/2] tty: amba-pl011: use iotype instead of access_32b to track 32-bit I/O Timur Tabi 2016-01-07 8:09 ` Geert Uytterhoeven 2016-01-06 2:43 ` [PATCH 1/2] [v2] tty: amba-pl011: fix earlycon register offsets Greg Kroah-Hartman 2016-01-06 2:46 ` Timur Tabi 2016-01-06 2:51 ` Greg Kroah-Hartman
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).