*** SUBJECT HERE ***
Subsystems (3)
Tobias Klauser
maintainercover *** SUBJECT HERE ***
*** BLURB HERE ***
Tobias Klauser (4):
tty: serial: altera_uart: Handle pdev->id == -1 in altera_uart_remove
tty: serial: altera_uart: Use port->regshift to store bus shift
tty: serial: altera_uart: Add devicetree support
MAINTAINERS: Add myself as a maintainer for
altera_uart/altera_jtaguart
.../devicetree/bindings/serial/altera_uart.txt | 7 ++ MAINTAINERS | 10 +++ drivers/tty/serial/altera_uart.c | 69 ++++++++++++++++---- 3 files changed, 74 insertions(+), 12 deletions(-) create mode 100644 Documentation/devicetree/bindings/serial/altera_uart.txt
Tobias Klauser
maintainerPATCH 1/4 tty: serial: altera_uart: Handle pdev->id == -1 in altera_uart_remove
Commit 6b5756f176568a710d008d3b478128fafb6707f0 introduced the possibility for pdev->id being -1 but the change was not done equally in altera_uart_remove. This patch fixes this.
--- drivers/tty/serial/altera_uart.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-)
drivers/tty/serial/altera_uart.c +7 -1
@@ -561,9 +561,15 @@ static int __devinit altera_uart_probe(struct platform_device *pdev) static int __devexit altera_uart_remove(struct platform_device *pdev) { -struct uart_port *port = &altera_uart_ports[pdev->id].port; +struct uart_port *port; +int i = pdev->id; +if (i ==-1 ) + i =0 ; + + port = &altera_uart_ports[i].port;uart_remove_one_port (&altera_uart_driver, port); +return 0 ; }
Signature · 1 line
1.7.0.4
Tobias Klauser
maintainerRe: [PATCH 1/4] tty: serial: altera_uart: Handle pdev->id == -1 in altera_uart_remove
Quoted 3 lines · Tobias Klauser
Commit
6b5756f176568a710d008d3b478128fafb6707f0introduced the possibility forpdev->idbeing -1 but the change was not done equally inaltera_uart_remove. This patch fixes this.
Please disregard this patch. I'll send it again as a follow up to the correct cover letter.
Sorry for the mess
Tobias
Quoted 31 lines
Cc Anton Vorontsov <[email protected]>Signed-off-by Tobias Klauser <[email protected]>--- drivers/tty/serial/altera_uart.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-)drivers/tty/serial/altera_uart.c +7
-1@@ -561,9 +561,15 @@ static int __devinit altera_uart_probe(struct platform_device *pdev) static int __devexit altera_uart_remove(struct platform_device *pdev) { -struct uart_port *port = &altera_uart_ports[pdev->id].port; +struct uart_port *port; +int i = pdev->id; +if (i ==-1 ) + i =0 ; + + port = &altera_uart_ports[i].port;uart_remove_one_port (&altera_uart_driver, port); +return 0 ; }Signature · 1 line
1.7.0.4
Tobias Klauser
maintainerQuoted 1 line · Tobias Klauser
*** BLURB HERE ***
Sorry for this mess. I've accidentialy overwritten my original cover letter. Will send again with the correct subject and text (and better test my submissions in the future).
Quoted 14 lines
Tobias Klauser (4):
tty: serial:altera_uart: Handlepdev->id== -1 inaltera_uart_remove
tty: serial:altera_uart: Useport->regshiftto store bus shift
tty: serial:altera_uart: Add devicetree support
MAINTAINERS: Add myself as a maintainer for
altera_uart/altera_jtaguart.../devicetree/bindings/serial/altera_uart.txt | 7 ++ MAINTAINERS | 10 +++ drivers/tty/serial/altera_uart.c | 69 ++++++++++++++++---- 3 files changed, 74 insertions(+), 12 deletions(-) create mode 100644 Documentation/devicetree/bindings/serial/altera_uart.txt
Tobias Klauser
maintainercover tty: serial: Updates for altera_uart driver
In reply to Tobias KlauserThis patchset adds some updates to the altera_uart taken from the Nios2 Linux port (currently out-of-tree) repository, the most important one probably being the added devicetree support.
Tobias Klauser (4):
tty: serial: altera_uart: Handle pdev->id == -1 in altera_uart_remove
tty: serial: altera_uart: Use port->regshift to store bus shift
tty: serial: altera_uart: Add devicetree support
MAINTAINERS: Add myself as a maintainer for
altera_uart/altera_jtaguart
.../devicetree/bindings/serial/altera_uart.txt | 7 ++ MAINTAINERS | 10 +++ drivers/tty/serial/altera_uart.c | 69 ++++++++++++++++---- 3 files changed, 74 insertions(+), 12 deletions(-) create mode 100644 Documentation/devicetree/bindings/serial/altera_uart.txt
Tobias Klauser
maintainerPATCH 1/4 tty: serial: altera_uart: Handle pdev->id == -1 in altera_uart_remove
Commit 6b5756f176568a710d008d3b478128fafb6707f0 introduced the possibility for pdev->id being -1 but the change was not done equally in altera_uart_remove. This patch fixes this.
--- drivers/tty/serial/altera_uart.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-)
drivers/tty/serial/altera_uart.c +7 -1
@@ -561,9 +561,15 @@ static int __devinit altera_uart_probe(struct platform_device *pdev) static int __devexit altera_uart_remove(struct platform_device *pdev) { -struct uart_port *port = &altera_uart_ports[pdev->id].port; +struct uart_port *port; +int i = pdev->id; +if (i ==-1 ) + i =0 ; + + port = &altera_uart_ports[i].port;uart_remove_one_port (&altera_uart_driver, port); +return 0 ; }
Signature · 1 line
1.7.0.4
Re: [PATCH 1/4] tty: serial: altera_uart: Handle pdev->id == -1 in altera_uart_remove
Quoted 6 lines · Tobias Klauser
Commit
6b5756f176568a710d008d3b478128fafb6707f0introduced the possibility forpdev->idbeing -1 but the change was not done equally inaltera_uart_remove. This patch fixes this.Cc Anton Vorontsov <[email protected]>Signed-off-by Tobias Klauser <[email protected]>
Thanks!
Signature · 2 lines
Anton Vorontsov Email: [email protected]
Tobias Klauser
maintainerPATCH 2/4 tty: serial: altera_uart: Use port->regshift to store bus shift
In reply to Tobias KlauserUse the regshift member of struct uart_port to store the address stride from platform data. This way we can save one dereference per call of altera_uart_readl and altera_uart_writel.
This also allows us to use the driver without platform data, which is needed for device tree support in the Nios2 port.
--- drivers/tty/serial/altera_uart.c | 14 +++++++------- 1 files changed, 7 insertions(+), 7 deletions(-)
drivers/tty/serial/altera_uart.c +7 -7
@@ -86,16 +86,12 @@ struct altera_uart {static u32 altera_uart_readl (struct uart_port *port,int reg) { -struct altera_uart_platform_uart *platp = port->private_data; - -return readl (port->membase + (reg << platp->bus_shift)); +return readl (port->membase + (reg << port->regshift)); }static void altera_uart_writel (struct uart_port *port,u32 dat,int reg) { -struct altera_uart_platform_uart *platp = port->private_data; - -writel (dat, port->membase + (reg << platp->bus_shift)); +writel (dat, port->membase + (reg << port->regshift)); }static unsigned int altera_uart_tx_empty (struct uart_port *port)
@@ -546,13 +542,17 @@ static int __devinit altera_uart_probe(struct platform_device *pdev)if (!port->membase)return -ENOMEM ; +if (platp) + port->regshift = platp->bus_shift; +else + port->regshift =0 ; + port->line = i; port->type =PORT_ALTERA_UART ; port->iotype =SERIAL_IO_MEM ; port->uartclk = platp->uartclk; port->ops = &altera_uart_ops; port->flags =UPF_BOOT_AUTOCONF ; - port->private_data = platp;uart_add_one_port (&altera_uart_driver, port);
Signature · 1 line
1.7.0.4
Re: [PATCH 2/4] tty: serial: altera_uart: Use port->regshift to store bus shift
Quoted 9 lines · Tobias Klauser
Use the regshift member of struct
uart_portto store the address stride from platform data. This way we can save one dereference per call ofaltera_uart_readlandaltera_uart_writel.This also allows us to use the driver without platform data, which is needed for device tree support in the Nios2 port.
Cc Anton Vorontsov <[email protected]>Signed-off-by Tobias Klauser <[email protected]>
Thanks!
Signature · 2 lines
Anton Vorontsov Email: [email protected]
Tobias Klauser
maintainerPATCH 3/4 tty: serial: altera_uart: Add devicetree support
In reply to Tobias KlauserWith the recent switch of the (currently still out-of-tree) Nios2 Linux port to devicetree we want to be able to retreive the resources and properties from dts.
The old method to retreive resources and properties from platform data is still supported.
--- .../devicetree/bindings/serial/altera_uart.txt | 7 +++ drivers/tty/serial/altera_uart.c | 47 ++++++++++++++++++-- 2 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 Documentation/devicetree/bindings/serial/altera_uart.txt
Documentation/devicetree/bindings/serial/altera_uart.txt new file +7 -0
@@ -0,0 +1,7 @@ +Altera UART + +Required properties: +- compatible : should be "ALTR,uart-1.0" + +Optional properties: +- clock-frequency : frequency of the clock input to the UART
drivers/tty/serial/altera_uart.c +43 -4
87 lines not on this page · raw message
Signature · 1 line
1.7.0.4
Re: [PATCH 3/4] tty: serial: altera_uart: Add devicetree support
Quoted 60 lines · Tobias Klauser
With the recent switch of the (currently still out-of-tree) Nios2 Linux port to devicetree we want to be able to retreive the resources and properties from dts.
The old method to retreive resources and properties from platform data is still supported.
Signed-off-by Tobias Klauser <[email protected]>--- .../devicetree/bindings/serial/altera_uart.txt | 7 +++ drivers/tty/serial/altera_uart.c | 47 ++++++++++++++++++-- 2 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 Documentation/devicetree/bindings/serial/altera_uart.txtDocumentation/devicetree/bindings/serial/altera_uart.txt new file +7
-0@@ -0,0 +1,7 @@ +Altera UART + +Required properties: +- compatible : should be "ALTR,uart-1.0" + +Optional properties: +- clock-frequency : frequency of the clock input to the UARTdrivers/tty/serial/altera_uart.c +18
-0@@ -24,6 +24,7 @@#include <linux/serial.h> #include <linux/serial_core.h> #include <linux/platform_device.h> +#include <linux/of.h> #include <linux/io.h> #include <linux/altera_uart.h> @@ -507,6 +508,34 @@ static struct uart_driver altera_uart_driver = { .cons = ALTERA_UART_CONSOLE, }; +#ifdef CONFIG_OF +static int altera_uart_get_uartclk (struct platform_device *pdev, +struct uart_port *port) +{ +const __be32 *clk =of_get_property (pdev->dev.of_node,"clock-frequency" ,NULL ); + +if (!clk) +return -ENODEV ; + + port->uartclk =be32_to_cpup (clk); + +return 0 ; +} +#else +static int altera_uart_get_uartclk (struct platform_device *pdev, +struct uart_port *port) +{
drivers/tty/serial/altera_uart.c static struct uart_driver altera_uart_driver = { · line 537
Quoted 10 lines
drivers/tty/serial/altera_uart.c +10
-0+struct altera_uart_platform_uart *platp = pdev->dev.platform_data; + +if (!platp) +return -ENODEV ; + + port->uartclk = platp->uartclk; + + return 0; +} +#endif /* CONFIG_OF */
This either/or situation isn't really desirable. The driver should be written so that platform_data works regardless of whether or not CONFIG_OF is set. So, if the of_node pointer is set, use it to get the configuration, but fall back to platform data if it is NULL.
Quoted 32 lines
drivers/tty/serial/altera_uart.c +6
-1+static int __devinit altera_uart_probe (struct platform_device *pdev) {struct altera_uart_platform_uart *platp = pdev->dev.platform_data;@@ -514,6 +543,7 @@ static int __devinit altera_uart_probe(struct platform_device *pdev)struct resource *res_mem;struct resource *res_irq;int i = pdev->id; +int ret;/* -1 emphasizes that the platform must have one port, no .N suffix */ if (i ==-1 )@@ -538,6 +568,10 @@ static int __devinit altera_uart_probe(struct platform_device *pdev)else if (platp->irq) port->irq = platp->irq; + ret =altera_uart_get_uartclk (pdev, port); +if (ret) +return ret; + port->membase =ioremap (port->mapbase,ALTERA_UART_SIZE );if (!port->membase)return -ENOMEM ;@@ -550,7 +584,6 @@ static int __devinit altera_uart_probe(struct platform_device *pdev) port->line = i; port->type =PORT_ALTERA_UART ; port->iotype =SERIAL_IO_MEM ; - port->uartclk = platp->uartclk; port->ops = &altera_uart_ops; port->flags =UPF_BOOT_AUTOCONF ;
drivers/tty/serial/altera_uart.c static int __devexit altera_uart_remove(struct platform_device *pdev) · line 613
Quoted 8 lines
drivers/tty/serial/altera_uart.c +5
-0@@ -573,13 +606,19 @@ static int __devexit altera_uart_remove(struct platform_device *pdev)return 0 ; } +static struct of_device_id altera_uart_match[] = { + { .compatible ="altr,uart-1.0" , }, + {}, +}; +MODULE_DEVICE_TABLE (of, altera_uart_match);
Need to protect the MODULE_DEVICE_TABLE with #ifdef/#endif. You don't want to advertise device tree support when CONFIG_OF isn't selected.
Quoted 17 lines
drivers/tty/serial/altera_uart.c +4
-3+static struct platform_driver altera_uart_platform_driver = { .probe = altera_uart_probe, .remove =__devexit_p (altera_uart_remove), .driver = { - .name =DRV_NAME , - .owner =THIS_MODULE , - .pm =NULL , + .name =DRV_NAME , + .owner =THIS_MODULE , + .of_match_table = altera_uart_match, }, };Signature · 1 line
1.7.0.4
Tobias Klauser
maintainerRe: [PATCH 3/4] tty: serial: altera_uart: Add devicetree support
Quoted 68 lines · Grant Likely
Quoted 67 lines · Tobias Klauser
With the recent switch of the (currently still out-of-tree) Nios2 Linux port to devicetree we want to be able to retreive the resources and properties from dts.
The old method to retreive resources and properties from platform data is still supported.
Signed-off-by Tobias Klauser <[email protected]>--- .../devicetree/bindings/serial/altera_uart.txt | 7 +++ drivers/tty/serial/altera_uart.c | 47 ++++++++++++++++++-- 2 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 Documentation/devicetree/bindings/serial/altera_uart.txtDocumentation/devicetree/bindings/serial/altera_uart.txt new file +7
-0@@ -0,0 +1,7 @@ +Altera UART + +Required properties: +- compatible : should be "ALTR,uart-1.0" + +Optional properties: +- clock-frequency : frequency of the clock input to the UARTdrivers/tty/serial/altera_uart.c +25
-0@@ -24,6 +24,7 @@#include <linux/serial.h> #include <linux/serial_core.h> #include <linux/platform_device.h> +#include <linux/of.h> #include <linux/io.h> #include <linux/altera_uart.h> @@ -507,6 +508,34 @@ static struct uart_driver altera_uart_driver = { .cons = ALTERA_UART_CONSOLE, }; +#ifdef CONFIG_OF +static int altera_uart_get_uartclk (struct platform_device *pdev, +struct uart_port *port) +{ +const __be32 *clk =of_get_property (pdev->dev.of_node,"clock-frequency" ,NULL ); + +if (!clk) +return -ENODEV ; + + port->uartclk =be32_to_cpup (clk); + +return 0 ; +} +#else +static int altera_uart_get_uartclk (struct platform_device *pdev, +struct uart_port *port) +{ +struct altera_uart_platform_uart *platp = pdev->dev.platform_data; + +if (!platp) +return -ENODEV ; + + port->uartclk = platp->uartclk; +
Quoted 8 lines
drivers/tty/serial/altera_uart.c static struct uart_driver altera_uart_driver = { · line 537
Quoted 3 lines
drivers/tty/serial/altera_uart.c +3
-0+ return 0; +} +#endif /* CONFIG_OF */ This either/or situation isn't really desirable. The driver should be written so that
platform_dataworks regardless of whether or notCONFIG_OFis set. So, if theof_nodepointer is set, use it to get the configuration, but fall back to platform data if it is NULL.
Agreed, I'll fix this. Though that case will most probably never happen, we either use device tree data or platform data.
Quoted 35 lines
Quoted 35 lines
drivers/tty/serial/altera_uart.c +6
-1+static int __devinit altera_uart_probe (struct platform_device *pdev) {struct altera_uart_platform_uart *platp = pdev->dev.platform_data;@@ -514,6 +543,7 @@ static int __devinit altera_uart_probe(struct platform_device *pdev)struct resource *res_mem;struct resource *res_irq;int i = pdev->id; +int ret;/* -1 emphasizes that the platform must have one port, no .N suffix */ if (i ==-1 )@@ -538,6 +568,10 @@ static int __devinit altera_uart_probe(struct platform_device *pdev)else if (platp->irq) port->irq = platp->irq; + ret =altera_uart_get_uartclk (pdev, port); +if (ret) +return ret; + port->membase =ioremap (port->mapbase,ALTERA_UART_SIZE );if (!port->membase)return -ENOMEM ;@@ -550,7 +584,6 @@ static int __devinit altera_uart_probe(struct platform_device *pdev) port->line = i; port->type =PORT_ALTERA_UART ; port->iotype =SERIAL_IO_MEM ; - port->uartclk = platp->uartclk; port->ops = &altera_uart_ops; port->flags =UPF_BOOT_AUTOCONF ;@@ -573,13 +606,19 @@ static int __devexit altera_uart_remove(struct platform_device *pdev)return 0 ; }
Quoted 8 lines
drivers/tty/serial/altera_uart.c static int __devexit altera_uart_remove(struct platform_device *pdev) · line 613
Quoted 5 lines
drivers/tty/serial/altera_uart.c +5
-0+static struct of_device_id altera_uart_match[] = { + { .compatible ="altr,uart-1.0" , }, + {}, +}; +MODULE_DEVICE_TABLE (of, altera_uart_match);Need to protect the
MODULE_DEVICE_TABLEwith #ifdef/#endif. You don't want to advertise device tree support whenCONFIG_OFisn't selected.
Shall I put the #ifdef around the whole table and define it as NULL if CONFIG_OF is not defined - like this:
#ifdef CONFIG_OF
static struct of_device_id altera_uart_match[] = {
{ .compatible = "altr,uart-1.0", },
{},
};
MODULE_DEVICE_TABLE(of, altera_uart_match);
#else
#define altera_uart_match NULL
#endif /* CONFIG_OF */or will it be sufficient to just #ifdef the MODULE_DEVICE_TABLE:
static struct of_device_id altera_uart_match[] = {
{ .compatible = "altr,uart-1.0", },
{},
};
#ifdef CONFIG_OF
MODULE_DEVICE_TABLE(of, altera_uart_match);
#endifQuoted 18 lines
Quoted 17 lines
drivers/tty/serial/altera_uart.c +4
-3+static struct platform_driver altera_uart_platform_driver = { .probe = altera_uart_probe, .remove =__devexit_p (altera_uart_remove), .driver = { - .name =DRV_NAME , - .owner =THIS_MODULE , - .pm =NULL , + .name =DRV_NAME , + .owner =THIS_MODULE , + .of_match_table = altera_uart_match, }, };Signature · 1 line
1.7.0.4
Re: [PATCH 3/4] tty: serial: altera_uart: Add devicetree support
Quoted 11 lines · Tobias Klauser
Quoted 10 lines · Grant Likely
Quoted 9 lines · Tobias Klauser
With the recent switch of the (currently still out-of-tree) Nios2 Linux port to devicetree we want to be able to retreive the resources and properties from dts.
The old method to retreive resources and properties from platform data is still supported.
Signed-off-by Tobias Klauser <[email protected]>---
[...]
Quoted 24 lines
Quoted 8 lines
drivers/tty/serial/altera_uart.c static int __devexit altera_uart_remove(struct platform_device *pdev) · line 613
Quoted 5 lines
drivers/tty/serial/altera_uart.c +5
-0+static struct of_device_id altera_uart_match[] = { + { .compatible ="altr,uart-1.0" , }, + {}, +}; +MODULE_DEVICE_TABLE (of, altera_uart_match);Need to protect the
MODULE_DEVICE_TABLEwith #ifdef/#endif. You don't want to advertise device tree support whenCONFIG_OFisn't selected.Shall I put the #ifdef around the whole table and define it as NULL if
CONFIG_OFis not defined - like this:#ifdef CONFIG_OF static struct of_device_id altera_uart_match[] = { { .compatible = "altr,uart-1.0", }, {}, }; MODULE_DEVICE_TABLE(of, altera_uart_match); #else #define altera_uart_match NULL #endif /* CONFIG_OF */or will it be sufficient to just #ifdef the
MODULE_DEVICE_TABLE:
Quoted 7 lines
static struct of_device_id altera_uart_match[] = {
{ .compatible = "altr,uart-1.0", },
{},
};
#ifdef CONFIG_OF
MODULE_DEVICE_TABLE(of, altera_uart_match);
#endifEither is fine, but the first will have a smaller memory footprint when CONFIG_OF is deselected.
g.
Tobias Klauser
maintainerPATCH v2 1/1 tty: serial: altera_uart: Add devicetree support
In reply to Tobias KlauserWith the recent switch of the (currently still out-of-tree) Nios2 Linux port to devicetree we want to be able to retreive the resources and properties from dts.
The old method to retreive resources and properties from platform data is still supported.
---
Thanks to Grant Likely for the review.
changes in v2:
- fall back to uartclk from platform data if the device tree property is not available.
- Only include MODULE_DEVICE_TABLE if CONFIG_OF is set so we don't advertise device tree support if CONFIG_OF isn't active.
- change vendor prefix in match table to be uppercase for consistency with documentation
.../devicetree/bindings/serial/altera_uart.txt | 7 +++ drivers/tty/serial/altera_uart.c | 50 ++++++++++++++++++-- 2 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 Documentation/devicetree/bindings/serial/altera_uart.txt
Documentation/devicetree/bindings/serial/altera_uart.txt new file +7 -0
@@ -0,0 +1,7 @@ +Altera UART + +Required properties: +- compatible : should be "ALTR,uart-1.0" + +Optional properties: +- clock-frequency : frequency of the clock input to the UART
drivers/tty/serial/altera_uart.c +46 -4
90 lines not on this page · raw message
Signature · 1 line
1.7.0.4
Re: [Nios2-dev] [PATHV v2] tty: serial: altera_uart: Add devicetree support
Hi Tobias,
Quoted 89 lines · Tobias Klauser
With the recent switch of the (currently still out-of-tree) Nios2 Linux port to devicetree we want to be able to retreive the resources and properties from dts.
The old method to retreive resources and properties from platform data is still supported.
Cc Grant Likely<[email protected]>Signed-off-by Tobias Klauser<[email protected]>---
Thanks to Grant Likely for the review.changes in v2:
- fall back to uartclk from platform data if the device tree property is not available.
- Only includeMODULE_DEVICE_TABLEifCONFIG_OFis set so we don't advertise device tree support ifCONFIG_OFisn't active.
- change vendor prefix in match table to be uppercase for consistency with documentation.../devicetree/bindings/serial/altera_uart.txt | 7 +++ drivers/tty/serial/altera_uart.c | 50 ++++++++++++++++++-- 2 files changed, 53 insertions(+), 4 deletions(-)create mode 100644
Documentation/devicetree/bindings/serial/altera_uart.txtDocumentation/devicetree/bindings/serial/altera_uart.txt new file +7
-0@@ -0,0 +1,7 @@ +Altera UART + +Required properties: +- compatible : should be "ALTR,uart-1.0" + +Optional properties: +- clock-frequency : frequency of the clock input to the UARTdrivers/tty/serial/altera_uart.c +25
-0@@ -24,6 +24,7 @@#include <linux/serial.h> #include <linux/serial_core.h> #include <linux/platform_device.h> +#include <linux/of.h> #include <linux/io.h> #include <linux/altera_uart.h> @@ -484,6 +485,29 @@ static struct uart_driver altera_uart_driver = { .cons = ALTERA_UART_CONSOLE, }; +#ifdef CONFIG_OF +static int altera_uart_get_of_uartclk (struct platform_device *pdev, +struct uart_port *port) +{ +int len; +const __be32 *clk; + + clk =of_get_property (pdev->dev.of_node,"clock-frequency" ,&len); +if (!clk || len<sizeof (__be32)) +return -ENODEV ; + + port->uartclk =be32_to_cpup (clk); + +return 0 ; +} +#else +static int altera_uart_get_of_uartclk (struct platform_device *pdev, +struct uart_port *port) +{ +return -ENODEV ; +} +#endif /* CONFIG_OF */ +static int __devinit altera_uart_probe (struct platform_device *pdev) {struct altera_uart_platform_uart *platp = pdev->dev.platform_data;@@ -491,6 +515,7 @@ static int __devinit altera_uart_probe(struct platform_device *pdev)struct resource *res_mem;struct resource *res_irq;int i = pdev->id; +int ret;/* -1 emphasizes that the platform must have one port, no .N suffix */ if (i ==-1 )
drivers/tty/serial/altera_uart.c static int __devinit altera_uart_probe(struct platform_device *pdev) · line 544
Quoted 5 lines
drivers/tty/serial/altera_uart.c +2
-0@@ -515,6 +540,14 @@ static int __devinit altera_uart_probe(struct platform_device *pdev)else if (platp->irq) port->irq = platp->irq; +/* Try to get the uartclk from devicetree, fall back to platform data +* otherwise */
Please follow multi-line comment style.
/*
* xxxx
* xxxx
*/
drivers/tty/serial/altera_uart.c static int __devinit altera_uart_probe(struct platform_device *pdev) · line 550
Quoted 6 lines
drivers/tty/serial/altera_uart.c +6
-0+ ret =altera_uart_get_of_uartclk (pdev, port); +if (ret&& platp) + port->uartclk = platp->uartclk; +else if (ret) +return ret; +
Better reverse the priority, with platform data checked first.
if (platp)
port->uartclk = platp->uartclk;
else {
ret = altera_uart_get_of_uartclk(pdev, port);
if (ret)
return ret;
}Quoted 28 lines
drivers/tty/serial/altera_uart.c +10
-1port->membase =ioremap (port->mapbase,ALTERA_UART_SIZE );if (!port->membase)return -ENOMEM ;@@ -527,7 +560,6 @@ static int __devinit altera_uart_probe(struct platform_device *pdev) port->line = i; port->type =PORT_ALTERA_UART ; port->iotype =SERIAL_IO_MEM ; - port->uartclk = platp->uartclk; port->ops =&altera_uart_ops; port->flags =UPF_BOOT_AUTOCONF ;@@ -550,13 +582,23 @@ static int __devexit altera_uart_remove(struct platform_device *pdev)return 0 ; } +#ifdef CONFIG_OF +static struct of_device_id altera_uart_match[] = { + { .compatible ="ALTR,uart-1.0" , }, + {}, +}; +MODULE_DEVICE_TABLE (of, altera_uart_match); +#else +#define altera_uart_match NULL +#endif /* CONFIG_OF */ +static struct platform_driver altera_uart_platform_driver = { .probe = altera_uart_probe, .remove =__devexit_p (altera_uart_remove),
drivers/tty/serial/altera_uart.c static int __devexit altera_uart_remove(struct platform_device *pdev) · line 604
Quoted 10 lines
drivers/tty/serial/altera_uart.c +3
-3.driver = { - .name = DRV_NAME, - .owner = THIS_MODULE, - .pm = NULL, + .name = DRV_NAME, + .owner = THIS_MODULE, + .of_match_table = altera_uart_match, }, };
Regards,
Thomas
Tobias Klauser
maintainerRe: [Nios2-dev] [PATHV v2] tty: serial: altera_uart: Add devicetree support
Hi Thomas,
Thanks a lot for your comments.
Quoted 98 lines · Thomas Chou
Quoted 89 lines · Tobias Klauser
With the recent switch of the (currently still out-of-tree) Nios2 Linux port to devicetree we want to be able to retreive the resources and properties from dts.
The old method to retreive resources and properties from platform data is still supported.
Cc Grant Likely<[email protected]>Signed-off-by Tobias Klauser<[email protected]>---
Thanks to Grant Likely for the review.changes in v2:
- fall back to uartclk from platform data if the device tree property is not available.
- Only includeMODULE_DEVICE_TABLEifCONFIG_OFis set so we don't advertise device tree support ifCONFIG_OFisn't active.
- change vendor prefix in match table to be uppercase for consistency with documentation.../devicetree/bindings/serial/altera_uart.txt | 7 +++ drivers/tty/serial/altera_uart.c | 50 ++++++++++++++++++-- 2 files changed, 53 insertions(+), 4 deletions(-)create mode 100644
Documentation/devicetree/bindings/serial/altera_uart.txtDocumentation/devicetree/bindings/serial/altera_uart.txt new file +7
-0@@ -0,0 +1,7 @@ +Altera UART + +Required properties: +- compatible : should be "ALTR,uart-1.0" + +Optional properties: +- clock-frequency : frequency of the clock input to the UARTdrivers/tty/serial/altera_uart.c +25
-0@@ -24,6 +24,7 @@#include <linux/serial.h> #include <linux/serial_core.h> #include <linux/platform_device.h> +#include <linux/of.h> #include <linux/io.h> #include <linux/altera_uart.h> @@ -484,6 +485,29 @@ static struct uart_driver altera_uart_driver = { .cons = ALTERA_UART_CONSOLE, }; +#ifdef CONFIG_OF +static int altera_uart_get_of_uartclk (struct platform_device *pdev, +struct uart_port *port) +{ +int len; +const __be32 *clk; + + clk =of_get_property (pdev->dev.of_node,"clock-frequency" ,&len); +if (!clk || len<sizeof (__be32)) +return -ENODEV ; + + port->uartclk =be32_to_cpup (clk); + +return 0 ; +} +#else +static int altera_uart_get_of_uartclk (struct platform_device *pdev, +struct uart_port *port) +{ +return -ENODEV ; +} +#endif /* CONFIG_OF */ +static int __devinit altera_uart_probe (struct platform_device *pdev) {struct altera_uart_platform_uart *platp = pdev->dev.platform_data;@@ -491,6 +515,7 @@ static int __devinit altera_uart_probe(struct platform_device *pdev)struct resource *res_mem;struct resource *res_irq;int i = pdev->id; +int ret;/* -1 emphasizes that the platform must have one port, no .N suffix */ if (i ==-1 )drivers/tty/serial/altera_uart.c static int __devinit altera_uart_probe(struct platform_device *pdev) · line 544
Quoted 5 lines
drivers/tty/serial/altera_uart.c +2
-0@@ -515,6 +540,14 @@ static int __devinit altera_uart_probe(struct platform_device *pdev)else if (platp->irq) port->irq = platp->irq; +/* Try to get the uartclk from devicetree, fall back to platform data +* otherwise */ Please follow multi-line comment style.
Quoted 4 lines
/*
* xxxx
* xxxx
*/
I will fix this.
Quoted 9 lines
drivers/tty/serial/altera_uart.c static int __devinit altera_uart_probe(struct platform_device *pdev) · line 550
Quoted 6 lines
drivers/tty/serial/altera_uart.c +6
-0+ ret =altera_uart_get_of_uartclk (pdev, port); +if (ret&& platp) + port->uartclk = platp->uartclk; +else if (ret) +return ret; +Better reverse the priority, with platform data checked first.
Quoted 7 lines
if (platp)
port->uartclk = platp->uartclk;
else {
ret = altera_uart_get_of_uartclk(pdev, port);
if (ret)
return ret;
}Do you have a specific reasoning for this? I thought it might make sense to do it in the same order as with the resources above, but I have no problem changing it to the way you suggest.
Quoted 30 lines
Quoted 30 lines
drivers/tty/serial/altera_uart.c +10
-1port->membase =ioremap (port->mapbase,ALTERA_UART_SIZE );if (!port->membase)return -ENOMEM ;@@ -527,7 +560,6 @@ static int __devinit altera_uart_probe(struct platform_device *pdev) port->line = i; port->type =PORT_ALTERA_UART ; port->iotype =SERIAL_IO_MEM ; - port->uartclk = platp->uartclk; port->ops =&altera_uart_ops; port->flags =UPF_BOOT_AUTOCONF ;@@ -550,13 +582,23 @@ static int __devexit altera_uart_remove(struct platform_device *pdev)return 0 ; } +#ifdef CONFIG_OF +static struct of_device_id altera_uart_match[] = { + { .compatible ="ALTR,uart-1.0" , }, + {}, +}; +MODULE_DEVICE_TABLE (of, altera_uart_match); +#else +#define altera_uart_match NULL +#endif /* CONFIG_OF */ +static struct platform_driver altera_uart_platform_driver = { .probe = altera_uart_probe, .remove =__devexit_p (altera_uart_remove), .driver = {
Quoted 8 lines
drivers/tty/serial/altera_uart.c static int __devexit altera_uart_remove(struct platform_device *pdev) · line 603
Quoted 8 lines
drivers/tty/serial/altera_uart.c +3
-3- .name = DRV_NAME, - .owner = THIS_MODULE, - .pm = NULL, + .name = DRV_NAME, + .owner = THIS_MODULE, + .of_match_table = altera_uart_match, }, };
Cheers
Tobias
Re: [Nios2-dev] [PATHV v2] tty: serial: altera_uart: Add devicetree support
Quoted 17 lines · Tobias Klauser
Quoted 9 lines
drivers/tty/serial/altera_uart.c static int __devinit altera_uart_probe(struct platform_device *pdev) · line 550
Quoted 6 lines
drivers/tty/serial/altera_uart.c +6
-0+ ret =altera_uart_get_of_uartclk (pdev, port); +if (ret&& platp) + port->uartclk = platp->uartclk; +else if (ret) +return ret; +Better reverse the priority, with platform data checked first.
Quoted 7 lines
if (platp) port->uartclk = platp->uartclk; else { ret = altera_uart_get_of_uartclk(pdev, port); if (ret) return ret; }
Quoted 3 lines
Do you have a specific reasoning for this? I thought it might make sense to do it in the same order as with the resources above, but I have no problem changing it to the way you suggest.
Not quite sure. But I see some drivers follow this order, and I just followed, too.
- Thomas
Re: [Nios2-dev] [PATHV v2] tty: serial: altera_uart: Add devicetree support
Quoted 19 lines · Thomas Chou
Quoted 18 lines · Tobias Klauser
Quoted 17 lines
drivers/tty/serial/altera_uart.c static int __devinit altera_uart_probe(struct platform_device *pdev) · line 550
Quoted 7 lines
drivers/tty/serial/altera_uart.c +6
-0+ ret =altera_uart_get_of_uartclk (pdev, port); +if (ret&& platp) + port->uartclk = platp->uartclk; +else if (ret) +return ret; +Better reverse the priority, with platform data checked first.
if (platp) port->uartclk = platp->uartclk; else { ret = altera_uart_get_of_uartclk(pdev, port); if (ret) return ret; }
Quoted 6 lines
Quoted 3 lines
Do you have a specific reasoning for this? I thought it might make sense to do it in the same order as with the resources above, but I have no problem changing it to the way you suggest.
Not quite sure. But I see some drivers follow this order, and I just followed, too.
The reason to check for platform_data first is that if a device has *both* platform data and a device node pointer, then more than likely the platform_data is indented to override the device node data.
g.
Tobias Klauser
maintainerRe: [Nios2-dev] [PATHV v2] tty: serial: altera_uart: Add devicetree support
Quoted 24 lines · Grant Likely
Quoted 23 lines · Thomas Chou
Quoted 21 lines · Tobias Klauser
Quoted 10 lines
drivers/tty/serial/altera_uart.c static int __devinit altera_uart_probe(struct platform_device *pdev) · line 550
Quoted 7 lines
drivers/tty/serial/altera_uart.c +6
-0+ ret =altera_uart_get_of_uartclk (pdev, port); +if (ret&& platp) + port->uartclk = platp->uartclk; +else if (ret) +return ret; +Better reverse the priority, with platform data checked first.
Quoted 7 lines
if (platp) port->uartclk = platp->uartclk; else { ret = altera_uart_get_of_uartclk(pdev, port); if (ret) return ret; }Do you have a specific reasoning for this? I thought it might make sense to do it in the same order as with the resources above, but I have no problem changing it to the way you suggest.
Quoted 6 lines
Quoted 2 lines
Not quite sure. But I see some drivers follow this order, and I just followed, too.
The reason to check for
platform_datafirst is that if a device has *both* platform data and a device node pointer, then more than likely theplatform_datais indented to override the device node data.
Thanks Grant and Thomas for the explanation. I was just wondering. I'll send an updated patch including the changes suggested by Thomas.
Tobias
Tobias Klauser
maintainerPATCH v3 3/4 tty: serial: altera_uart: Add devicetree support
In reply to Tobias KlauserWith the recent switch of the (currently still out-of-tree) Nios2 Linux port to devicetree we want to be able to retreive the resources and properties from dts.
The old method to retreive resources and properties from platform data is still supported.
---
Greg: This patch will have the same compile problem in your tree as the altera_jtaguart patch has. As this patch depends on the previous ones of this series it might be best to apply it once commit c9e358dfc "driver-core: remove conditionals around devicetree pointers" from Grant's tree is merged.
Thanks to Grant Likely and Thomas Chou for their comments.
v3:
- Change order for getting uartclk.
v2:
- fall back to uartclk from platform data if the device tree property is not available.
- Only include MODULE_DEVICE_TABLE if CONFIG_OF is set so we don't advertise device tree support if CONFIG_OF isn't active.
- change vendor prefix in match table to be uppercase for consistency with documentation
.../devicetree/bindings/serial/altera_uart.txt | 7 +++ drivers/tty/serial/altera_uart.c | 51 ++++++++++++++++++-- 2 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 Documentation/devicetree/bindings/serial/altera_uart.txt
Documentation/devicetree/bindings/serial/altera_uart.txt new file +7 -0
@@ -0,0 +1,7 @@ +Altera UART + +Required properties: +- compatible : should be "ALTR,uart-1.0" + +Optional properties: +- clock-frequency : frequency of the clock input to the UART
drivers/tty/serial/altera_uart.c +47 -4
91 lines not on this page · raw message
Signature · 1 line
1.7.0.4
Re: [PATCH 3/4 v3] tty: serial: altera_uart: Add devicetree support
Quoted 9 lines · Tobias Klauser
With the recent switch of the (currently still out-of-tree) Nios2 Linux port to devicetree we want to be able to retreive the resources and properties from dts.
The old method to retreive resources and properties from platform data is still supported.
Cc Grant Likely <[email protected]>Signed-off-by Tobias Klauser <[email protected]>
Quoted 7 lines
---
Greg: This patch will have the same compile problem in your tree as the
altera_jtaguartpatch has. As this patch depends on the previous ones of this series it might be best to apply it once commitc9e358dfc"driver-core: remove conditionals around devicetree pointers" from Grant's tree is merged.
Ok, I can't take this then, Grant, can you?
Please feel free to add:
to it.
thanks,
greg k-h
Grant Likely
AppliedRe: [PATCH 3/4 v3] tty: serial: altera_uart: Add devicetree support
Quoted 18 lines · Greg KH
Quoted 9 lines · Tobias Klauser
With the recent switch of the (currently still out-of-tree) Nios2 Linux port to devicetree we want to be able to retreive the resources and properties from dts.
The old method to retreive resources and properties from platform data is still supported.
Cc Grant Likely <grant.likely-s3s/[email protected]>Signed-off-by Tobias Klauser <[email protected]>Quoted 7 lines
---
Greg: This patch will have the same compile problem in your tree as the
altera_jtaguartpatch has. As this patch depends on the previous ones of this series it might be best to apply it once commitc9e358dfc"driver-core: remove conditionals around devicetree pointers" from Grant's tree is merged.
Quoted 5 lines
Ok, I can't take this then, Grant, can you?
Please feel free to add:
to it.
Merged, thanks,
g.
Tobias Klauser
maintainerPATCH 4/4 MAINTAINERS: Add myself as a maintainer for altera_uart/altera_jtaguart
In reply to Tobias Klauser--- MAINTAINERS | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-)
MAINTAINERS +10 -0
@@ -465,6 +465,16 @@ M: Matt Turner <[email protected]> L: [email protected] F: arch/alpha/ +ALTERA UART/JTAG UART SERIAL DRIVERS +M: Tobias Klauser <[email protected]> +L: [email protected] +L: [email protected] (moderated for non-subscribers) +S: Maintained +F: drivers/tty/serial/altera_uart.c +F: drivers/tty/serial/altera_jtaguart.c +F: include/linux/altera_uart.h +F: include/linux/altera_jtaguart.h + AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER M: Thomas Dahlmann <[email protected]> L: [email protected] (moderated for non-subscribers)
Signature · 1 line
1.7.0.4
Re: [Nios2-dev] [PATCH 4/4] MAINTAINERS: Add myself as a maintainer for altera_uart/altera_jtaguart
Quoted 16 lines · Tobias Klauser
Signed-off-by Tobias Klauser<[email protected]>--- MAINTAINERS | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-)MAINTAINERS +3
-0@@ -465,6 +465,16 @@ M: Matt Turner<[email protected]> L: [email protected] F: arch/alpha/ +ALTERA UART/JTAG UART SERIAL DRIVERS +M: Tobias Klauser<[email protected]> +L: [email protected]
MAINTAINERS M: Matt Turner<[email protected]> · line 480
Quoted 10 lines
MAINTAINERS +7
-0+L: [email protected] (moderated for non-subscribers) +S: Maintained +F: drivers/tty/serial/altera_uart.c +F: drivers/tty/serial/altera_jtaguart.c +F: include/linux/altera_uart.h +F: include/linux/altera_jtaguart.h + AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER M: Thomas Dahlmann<[email protected]> L: [email protected] (moderated for non-subscribers)
Hi Tobias,
As we get more drivers merged into mainline, we might consider adding a general entry for all altera related drivers to our mailing list. We could add "F: arch/nios2" to this entry in the near future.
1) subject: MAINTAINERS: add Altera related drivers entry send this to Andrew Morton.
ALTERA EMBEDDED ARCH AND PERIPHERALS DRIVERS
L: [email protected] (moderated for non-subscribers)
S: Maintained
K: altera
2) subject: MAINTAINERS: add Altera UART/JTAG UART maintainer
ALTERA UART/JTAG UART SERIAL DRIVERS
M: Tobias Klauser <[email protected]>
L: [email protected]
S: Maintained
F: drivers/tty/serial/altera_uart.c
F: drivers/tty/serial/altera_jtaguart.c
F: include/linux/altera_uart.h
F: include/linux/altera_jtaguart.h
Regards,
Thomas
Tobias Klauser
maintainerRe: [Nios2-dev] [PATCH 4/4] MAINTAINERS: Add myself as a maintainer for altera_uart/altera_jtaguart
Hi Thomas
Quoted 30 lines · Thomas Chou
Quoted 16 lines · Tobias Klauser
Signed-off-by Tobias Klauser<[email protected]>--- MAINTAINERS | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-)MAINTAINERS +3
-0@@ -465,6 +465,16 @@ M: Matt Turner<[email protected]> L: [email protected] F: arch/alpha/ +ALTERA UART/JTAG UART SERIAL DRIVERS +M: Tobias Klauser<[email protected]> +L: [email protected]MAINTAINERS M: Matt Turner<[email protected]> · line 480
Quoted 10 lines
MAINTAINERS +7
-0+L: [email protected] (moderated for non-subscribers) +S: Maintained +F: drivers/tty/serial/altera_uart.c +F: drivers/tty/serial/altera_jtaguart.c +F: include/linux/altera_uart.h +F: include/linux/altera_jtaguart.h + AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER M: Thomas Dahlmann<[email protected]> L: [email protected] (moderated for non-subscribers)Hi Tobias,
Quoted 3 lines
As we get more drivers merged into mainline, we might consider adding a general entry for all altera related drivers to our mailing list. We could add "F:
arch/nios2" to this entry in the near future.
That's great. I didn't know about the K: section entry.
I will send a patch as below.
Quoted 10 lines
1) subject:
MAINTAINERS: add Altera related drivers entry send this to Andrew Morton.ALTERA EMBEDDED ARCH AND PERIPHERALS DRIVERS
L: [email protected] (moderated for non-subscribers)
S: Maintained
K: altera2) subject:
MAINTAINERS: add Altera UART/JTAG UART maintainer
Quoted 8 lines
ALTERA UART/JTAG UART SERIAL DRIVERS
M: Tobias Klauser <[email protected]>
L: [email protected]
S: Maintained
F:drivers/tty/serial/altera_uart.c
F:drivers/tty/serial/altera_jtaguart.c
F:include/linux/altera_uart.h
F:include/linux/altera_jtaguart.h
Thanks
Tobias
Re: [Nios2-dev] [PATCH 4/4] MAINTAINERS: Add myself as a maintainer for altera_uart/altera_jtaguart
In reply to Thomas ChouQuoted 3 lines · Thomas Chou
As we get more drivers merged into mainline, we might consider adding a general entry for all altera related drivers to our mailing list. We could add "F:
arch/nios2" to this entry in the near future.
On a related topic, are there plans to submit the nios2 arch code for review any time soon?
I'm usually reviewing all architectures that come in, and unicore32 is almost ready to go in, so there is room to start reviewing the next one.
I expect nios2, lm32 and c64x to be submitted this year, but I'll probably only be able to review one at time. First come, first serve.
Arnd
Tobias Klauser
maintainerRe: [Nios2-dev] [PATCH 4/4] MAINTAINERS: Add myself as a maintainer for altera_uart/altera_jtaguart
Hi Arnd,
Quoted 7 lines · Arnd Bergmann
Quoted 3 lines · Thomas Chou
As we get more drivers merged into mainline, we might consider adding a general entry for all altera related drivers to our mailing list. We could add "F:
arch/nios2" to this entry in the near future.On a related topic, are there plans to submit the nios2 arch code for review any time soon?
I'm currently in contact with Altera on exactly this matter. We're planning to submit the nios2 architecture code for review really soon now.
Quoted 3 lines
I'm usually reviewing all architectures that come in, and unicore32 is almost ready to go in, so there is room to start reviewing the next one.
That's great to hear. I followed the submission and review of unicore32 a bit and read some of your replies on how to proceed. I already learned a lot from that and will try to apply it for the nios2 submission.
Quoted 3 lines
I expect nios2, lm32 and c64x to be submitted this year, but I'll probably only be able to review one at time. First come, first serve.
So I hope we'll be the first ones then :-)
Thanks a lot for your notice
Tobias
Re: [PATCH 0/4] tty: serial: Updates for altera_uart driver
In reply to Tobias KlauserQuoted 10 lines · Tobias Klauser
This patchset adds some updates to the
altera_uarttaken from the Nios2 Linux port (currently out-of-tree) repository, the most important one probably being the added devicetree support.Tobias Klauser (4):
tty: serial:altera_uart: Handlepdev->id== -1 inaltera_uart_remove
tty: serial:altera_uart: Useport->regshiftto store bus shift
tty: serial:altera_uart: Add devicetree support
MAINTAINERS: Add myself as a maintainer for
altera_uart/altera_jtaguart
I've applied 3 of these patches, skipping the device tree patch, as it looks like you are going to rework it.
thanks,
greg k-h
Tobias Klauser
maintainerRe: [PATCH 0/4] tty: serial: Updates for altera_uart driver
Quoted 12 lines · Greg KH
Quoted 10 lines · Tobias Klauser
This patchset adds some updates to the
altera_uarttaken from the Nios2 Linux port (currently out-of-tree) repository, the most important one probably being the added devicetree support.Tobias Klauser (4):
tty: serial:altera_uart: Handlepdev->id== -1 inaltera_uart_remove
tty: serial:altera_uart: Useport->regshiftto store bus shift
tty: serial:altera_uart: Add devicetree support
MAINTAINERS: Add myself as a maintainer for
altera_uart/altera_jtaguart
Quoted 2 lines
I've applied 3 of these patches, skipping the device tree patch, as it looks like you are going to rework it.
Yup, I'm currently waiting for a reply from Thomas and will update it accordingly then. I'll send the updated patch later on (hopefully with correct subject line this time).
Thanks a lot
Tobias