* [PATCH 0/3] tty: serial: make of_serial work on Ralink SoC
@ 2013-04-13 9:33 John Crispin
2013-04-13 9:33 ` [PATCH 1/3] tty: of_serial: allow rt288x-uart to load from OF John Crispin
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: John Crispin @ 2013-04-13 9:33 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: linux-mips, linux-serial, John Crispin
Ralink SoC uses the same 8250 iotype as AU1x00. In order to make this work form
a devicetree, the correct iotype needs to be probed inside
of_platform_serial_setup().
Ralink SoC has a different iosize than AU1x00, which causes
serial8250_port_size() to return 0x1000 instead of the correct 0x100. Instead of
adding another static if statement we probe the real iosize from the resource
inside the devicetree.
Gabor Juhos (2):
tty: serial: add iosize field to struct uart_port
tty: of_serial: initialize port.iosize from resource
John Crispin (1):
tty: of_serial: allow rt288x-uart to load from OF
drivers/tty/serial/8250/8250_core.c | 3 +++
drivers/tty/serial/of_serial.c | 11 +++++++++--
include/linux/serial_core.h | 1 +
3 files changed, 13 insertions(+), 2 deletions(-)
--
1.7.10.4
^ permalink raw reply [flat|nested] 9+ messages in thread* [PATCH 1/3] tty: of_serial: allow rt288x-uart to load from OF 2013-04-13 9:33 [PATCH 0/3] tty: serial: make of_serial work on Ralink SoC John Crispin @ 2013-04-13 9:33 ` John Crispin 2013-04-15 18:14 ` Greg Kroah-Hartman 2013-04-13 9:33 ` [PATCH 2/3] tty: serial: add iosize field to struct uart_port John Crispin 2013-04-13 9:33 ` [PATCH 3/3] tty: of_serial: initialize port.iosize from resource John Crispin 2 siblings, 1 reply; 9+ messages in thread From: John Crispin @ 2013-04-13 9:33 UTC (permalink / raw) To: Greg Kroah-Hartman; +Cc: linux-mips, linux-serial, John Crispin In order to make serial_8250 loadable via OF on Ralink WiSoC we need to default the iotype to UPIO_RT. Signed-off-by: John Crispin <blogic@openwrt.org> --- drivers/tty/serial/of_serial.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/tty/serial/of_serial.c b/drivers/tty/serial/of_serial.c index b025d54..42f8550 100644 --- a/drivers/tty/serial/of_serial.c +++ b/drivers/tty/serial/of_serial.c @@ -98,7 +98,10 @@ static int of_platform_serial_setup(struct platform_device *ofdev, port->regshift = prop; port->irq = irq_of_parse_and_map(np, 0); - port->iotype = UPIO_MEM; + if (of_device_is_compatible(np, "ralink,rt2880-uart")) + port->iotype = UPIO_AU; + else + port->iotype = UPIO_MEM; if (of_property_read_u32(np, "reg-io-width", &prop) == 0) { switch (prop) { case 1: -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] tty: of_serial: allow rt288x-uart to load from OF 2013-04-13 9:33 ` [PATCH 1/3] tty: of_serial: allow rt288x-uart to load from OF John Crispin @ 2013-04-15 18:14 ` Greg Kroah-Hartman 2013-04-16 3:55 ` John Crispin 0 siblings, 1 reply; 9+ messages in thread From: Greg Kroah-Hartman @ 2013-04-15 18:14 UTC (permalink / raw) To: John Crispin; +Cc: linux-mips, linux-serial On Sat, Apr 13, 2013 at 11:33:36AM +0200, John Crispin wrote: > In order to make serial_8250 loadable via OF on Ralink WiSoC we need to default > the iotype to UPIO_RT. > > Signed-off-by: John Crispin <blogic@openwrt.org> > --- > drivers/tty/serial/of_serial.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/tty/serial/of_serial.c b/drivers/tty/serial/of_serial.c > index b025d54..42f8550 100644 > --- a/drivers/tty/serial/of_serial.c > +++ b/drivers/tty/serial/of_serial.c > @@ -98,7 +98,10 @@ static int of_platform_serial_setup(struct platform_device *ofdev, > port->regshift = prop; > > port->irq = irq_of_parse_and_map(np, 0); > - port->iotype = UPIO_MEM; > + if (of_device_is_compatible(np, "ralink,rt2880-uart")) > + port->iotype = UPIO_AU; > + else > + port->iotype = UPIO_MEM; Why are you putting device-specific things into a generic driver? Shouldn't this be able to be described in device tree without relying on an vendor-specific test in this driver? greg k-h ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] tty: of_serial: allow rt288x-uart to load from OF 2013-04-15 18:14 ` Greg Kroah-Hartman @ 2013-04-16 3:55 ` John Crispin 2013-04-16 4:05 ` Greg Kroah-Hartman 0 siblings, 1 reply; 9+ messages in thread From: John Crispin @ 2013-04-16 3:55 UTC (permalink / raw) To: Greg Kroah-Hartman; +Cc: linux-mips, linux-serial On 15/04/13 20:14, Greg Kroah-Hartman wrote: > On Sat, Apr 13, 2013 at 11:33:36AM +0200, John Crispin wrote: >> In order to make serial_8250 loadable via OF on Ralink WiSoC we need to default >> the iotype to UPIO_RT. >> >> Signed-off-by: John Crispin<blogic@openwrt.org> >> --- >> drivers/tty/serial/of_serial.c | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/tty/serial/of_serial.c b/drivers/tty/serial/of_serial.c >> index b025d54..42f8550 100644 >> --- a/drivers/tty/serial/of_serial.c >> +++ b/drivers/tty/serial/of_serial.c >> @@ -98,7 +98,10 @@ static int of_platform_serial_setup(struct platform_device *ofdev, >> port->regshift = prop; >> >> port->irq = irq_of_parse_and_map(np, 0); >> - port->iotype = UPIO_MEM; >> + if (of_device_is_compatible(np, "ralink,rt2880-uart")) >> + port->iotype = UPIO_AU; >> + else >> + port->iotype = UPIO_MEM; > Why are you putting device-specific things into a generic driver? > Shouldn't this be able to be described in device tree without relying on > an vendor-specific test in this driver? > > greg k-h > > Hi Greg, would 'reg-io-type = "au";' sound better to you ? John ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] tty: of_serial: allow rt288x-uart to load from OF 2013-04-16 3:55 ` John Crispin @ 2013-04-16 4:05 ` Greg Kroah-Hartman 2013-04-16 4:04 ` John Crispin 0 siblings, 1 reply; 9+ messages in thread From: Greg Kroah-Hartman @ 2013-04-16 4:05 UTC (permalink / raw) To: John Crispin; +Cc: linux-mips, linux-serial On Tue, Apr 16, 2013 at 05:55:38AM +0200, John Crispin wrote: > On 15/04/13 20:14, Greg Kroah-Hartman wrote: > >On Sat, Apr 13, 2013 at 11:33:36AM +0200, John Crispin wrote: > >>In order to make serial_8250 loadable via OF on Ralink WiSoC we need to default > >>the iotype to UPIO_RT. > >> > >>Signed-off-by: John Crispin<blogic@openwrt.org> > >>--- > >> drivers/tty/serial/of_serial.c | 5 ++++- > >> 1 file changed, 4 insertions(+), 1 deletion(-) > >> > >>diff --git a/drivers/tty/serial/of_serial.c b/drivers/tty/serial/of_serial.c > >>index b025d54..42f8550 100644 > >>--- a/drivers/tty/serial/of_serial.c > >>+++ b/drivers/tty/serial/of_serial.c > >>@@ -98,7 +98,10 @@ static int of_platform_serial_setup(struct platform_device *ofdev, > >> port->regshift = prop; > >> > >> port->irq = irq_of_parse_and_map(np, 0); > >>- port->iotype = UPIO_MEM; > >>+ if (of_device_is_compatible(np, "ralink,rt2880-uart")) > >>+ port->iotype = UPIO_AU; > >>+ else > >>+ port->iotype = UPIO_MEM; > >Why are you putting device-specific things into a generic driver? > >Shouldn't this be able to be described in device tree without relying on > >an vendor-specific test in this driver? > > > >greg k-h > > > > > Hi Greg, > > would 'reg-io-type = "au";' sound better to you ? I don't know, run it by the device tree people, they know this stuff, I don't :( greg k-h ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] tty: of_serial: allow rt288x-uart to load from OF 2013-04-16 4:05 ` Greg Kroah-Hartman @ 2013-04-16 4:04 ` John Crispin 0 siblings, 0 replies; 9+ messages in thread From: John Crispin @ 2013-04-16 4:04 UTC (permalink / raw) To: Greg Kroah-Hartman; +Cc: linux-mips, linux-serial On 16/04/13 06:05, Greg Kroah-Hartman wrote: > On Tue, Apr 16, 2013 at 05:55:38AM +0200, John Crispin wrote: >> On 15/04/13 20:14, Greg Kroah-Hartman wrote: >>> On Sat, Apr 13, 2013 at 11:33:36AM +0200, John Crispin wrote: >>>> In order to make serial_8250 loadable via OF on Ralink WiSoC we need to default >>>> the iotype to UPIO_RT. >>>> >>>> Signed-off-by: John Crispin<blogic@openwrt.org> >>>> --- >>>> drivers/tty/serial/of_serial.c | 5 ++++- >>>> 1 file changed, 4 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/drivers/tty/serial/of_serial.c b/drivers/tty/serial/of_serial.c >>>> index b025d54..42f8550 100644 >>>> --- a/drivers/tty/serial/of_serial.c >>>> +++ b/drivers/tty/serial/of_serial.c >>>> @@ -98,7 +98,10 @@ static int of_platform_serial_setup(struct platform_device *ofdev, >>>> port->regshift = prop; >>>> >>>> port->irq = irq_of_parse_and_map(np, 0); >>>> - port->iotype = UPIO_MEM; >>>> + if (of_device_is_compatible(np, "ralink,rt2880-uart")) >>>> + port->iotype = UPIO_AU; >>>> + else >>>> + port->iotype = UPIO_MEM; >>> Why are you putting device-specific things into a generic driver? >>> Shouldn't this be able to be described in device tree without relying on >>> an vendor-specific test in this driver? >>> >>> greg k-h >>> >>> >> Hi Greg, >> >> would 'reg-io-type = "au";' sound better to you ? > I don't know, run it by the device tree people, they know this stuff, I > don't :( > > greg k-h > OK ... i don't know either, both proposals look crappy John ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 2/3] tty: serial: add iosize field to struct uart_port 2013-04-13 9:33 [PATCH 0/3] tty: serial: make of_serial work on Ralink SoC John Crispin 2013-04-13 9:33 ` [PATCH 1/3] tty: of_serial: allow rt288x-uart to load from OF John Crispin @ 2013-04-13 9:33 ` John Crispin 2013-04-15 18:10 ` Greg Kroah-Hartman 2013-04-13 9:33 ` [PATCH 3/3] tty: of_serial: initialize port.iosize from resource John Crispin 2 siblings, 1 reply; 9+ messages in thread From: John Crispin @ 2013-04-13 9:33 UTC (permalink / raw) To: Greg Kroah-Hartman; +Cc: linux-mips, linux-serial, Gabor Juhos From: Gabor Juhos <juhosg@openwrt.org> Signed-off-by: Gabor Juhos <juhosg@openwrt.org> --- drivers/tty/serial/8250/8250_core.c | 3 +++ include/linux/serial_core.h | 1 + 2 files changed, 4 insertions(+) diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c index 35f9c96..25b917a 100644 --- a/drivers/tty/serial/8250/8250_core.c +++ b/drivers/tty/serial/8250/8250_core.c @@ -2498,6 +2498,8 @@ serial8250_pm(struct uart_port *port, unsigned int state, static unsigned int serial8250_port_size(struct uart_8250_port *pt) { + if (pt->port.iosize) + return pt->port.iosize; if (pt->port.iotype == UPIO_AU) return 0x1000; if (is_omap1_8250(pt)) @@ -3233,6 +3235,7 @@ int serial8250_register_8250_port(struct uart_8250_port *up) uart->port.iobase = up->port.iobase; uart->port.membase = up->port.membase; + uart->port.iosize = up->port.iosize; uart->port.irq = up->port.irq; uart->port.irqflags = up->port.irqflags; uart->port.uartclk = up->port.uartclk; diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index 87d4bbc..d3aa18b 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h @@ -194,6 +194,7 @@ struct uart_port { unsigned char irq_wake; unsigned char unused[2]; void *private_data; /* generic platform data pointer */ + unsigned int iosize; /* for ioremap */ }; static inline int serial_port_in(struct uart_port *up, int offset) -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] tty: serial: add iosize field to struct uart_port 2013-04-13 9:33 ` [PATCH 2/3] tty: serial: add iosize field to struct uart_port John Crispin @ 2013-04-15 18:10 ` Greg Kroah-Hartman 0 siblings, 0 replies; 9+ messages in thread From: Greg Kroah-Hartman @ 2013-04-15 18:10 UTC (permalink / raw) To: John Crispin; +Cc: linux-mips, linux-serial, Gabor Juhos On Sat, Apr 13, 2013 at 11:33:37AM +0200, John Crispin wrote: > From: Gabor Juhos <juhosg@openwrt.org> > > Signed-off-by: Gabor Juhos <juhosg@openwrt.org> Why? You provide no justification for this patch here, so I guess I can't accept it. sorry, greg k-h ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 3/3] tty: of_serial: initialize port.iosize from resource 2013-04-13 9:33 [PATCH 0/3] tty: serial: make of_serial work on Ralink SoC John Crispin 2013-04-13 9:33 ` [PATCH 1/3] tty: of_serial: allow rt288x-uart to load from OF John Crispin 2013-04-13 9:33 ` [PATCH 2/3] tty: serial: add iosize field to struct uart_port John Crispin @ 2013-04-13 9:33 ` John Crispin 2 siblings, 0 replies; 9+ messages in thread From: John Crispin @ 2013-04-13 9:33 UTC (permalink / raw) To: Greg Kroah-Hartman; +Cc: linux-mips, linux-serial, Gabor Juhos From: Gabor Juhos <juhosg@openwrt.org> Signed-off-by: Gabor Juhos <juhosg@openwrt.org> --- drivers/tty/serial/of_serial.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/tty/serial/of_serial.c b/drivers/tty/serial/of_serial.c index 42f8550..e4be45b 100644 --- a/drivers/tty/serial/of_serial.c +++ b/drivers/tty/serial/of_serial.c @@ -88,10 +88,14 @@ static int of_platform_serial_setup(struct platform_device *ofdev, spin_lock_init(&port->lock); port->mapbase = resource.start; + port->iosize = resource_size(&resource); /* Check for shifted address mapping */ - if (of_property_read_u32(np, "reg-offset", &prop) == 0) + if (of_property_read_u32(np, "reg-offset", &prop) == 0) { port->mapbase += prop; + if (prop > port->iosize) + port->iosize -= prop; + } /* Check for registers offset within the devices address range */ if (of_property_read_u32(np, "reg-shift", &prop) == 0) -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
end of thread, other threads:[~2013-04-16 4:08 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-04-13 9:33 [PATCH 0/3] tty: serial: make of_serial work on Ralink SoC John Crispin 2013-04-13 9:33 ` [PATCH 1/3] tty: of_serial: allow rt288x-uart to load from OF John Crispin 2013-04-15 18:14 ` Greg Kroah-Hartman 2013-04-16 3:55 ` John Crispin 2013-04-16 4:05 ` Greg Kroah-Hartman 2013-04-16 4:04 ` John Crispin 2013-04-13 9:33 ` [PATCH 2/3] tty: serial: add iosize field to struct uart_port John Crispin 2013-04-15 18:10 ` Greg Kroah-Hartman 2013-04-13 9:33 ` [PATCH 3/3] tty: of_serial: initialize port.iosize from resource John Crispin
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).