[Nios2-dev] [PATCHv2] Add devicetree support to altera_jtaguart
Tobias Klauser
klto at zhaw.ch
Wed Jan 19 03:35:57 EST 2011
Hi Walter
A small comment on the patch is below, though I have not run it yet
(need some more time to get everything started with devicetree here).
On Thu, 13 Jan 2011 02:18:55 +0100 Walter Goossens <waltergoossens at home.nl> wrote:
> This patch adds devicetree support to the altera_jtaguart driver.
> Tested on hardware on the nios2 architecture.
>
> diff --git a/drivers/serial/altera_jtaguart.c b/drivers/serial/altera_jtaguart.c
> index f9b49b5..238348e 100644
> --- a/drivers/serial/altera_jtaguart.c
> +++ b/drivers/serial/altera_jtaguart.c
> @@ -433,15 +433,33 @@ static int __devinit altera_jtaguart_probe(struct platform_device *pdev)
> struct uart_port *port;
> int i;
>
> - for (i = 0; i < ALTERA_JTAGUART_MAXPORTS && platp[i].mapbase; i++) {
> + for (i = 0; i < ALTERA_JTAGUART_MAXPORTS; i++) {
> port = &altera_jtaguart_ports[i].port;
>
> + if(platp)
> + {
> + if(!platp[i].mapbase)
> + break;
> +
> + port->mapbase = platp[i].mapbase;
> + port->irq = platp[i].irq;
> + } else {
> +#ifdef CONFIG_OF
> + struct resource *res_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> + struct resource *res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> + if((!res_mem) || (!res_irq))
> + break;
We should return -ENODEV here if we fail to get the resources. If we
break here, we would return 0, which means the probe function was
successful, but this isn't the case.
> +
> + port->mapbase = res_mem->start;
> + port->irq = res_irq->start;
> +#else
> + break;
> +#endif
> + }
> port->line = i;
> port->type = PORT_ALTERA_JTAGUART;
> - port->mapbase = platp[i].mapbase;
> port->membase = ioremap(port->mapbase, ALTERA_JTAGUART_SIZE);
> port->iotype = SERIAL_IO_MEM;
> - port->irq = platp[i].irq;
> port->ops = &altera_jtaguart_ops;
> port->flags = ASYNC_BOOT_AUTOCONF;
>
> @@ -464,6 +482,15 @@ static int __devexit altera_jtaguart_remove(struct platform_device *pdev)
>
> return 0;
> }
> +#ifdef CONFIG_OF
> +static struct of_device_id altera_jtaguart_match[] = {
> + {
> + .compatible = "altera,altera_juart",
> + },
> + {},
> +}
> +MODULE_DEVICE_TABLE(of, altera_jtaguart_match);
> +#endif /* CONFIG_OF */
>
> static struct platform_driver altera_jtaguart_platform_driver = {
> .probe = altera_jtaguart_probe,
> @@ -471,6 +498,9 @@ static struct platform_driver altera_jtaguart_platform_driver = {
> .driver = {
> .name = DRV_NAME,
> .owner = THIS_MODULE,
> +#ifdef CONFIG_OF
> + .of_match_table = altera_jtaguart_match,
> +#endif
> },
> };
More information about the devicetree-discuss
mailing list