From: Grant Likely <grant.likely@secretlab.ca>
To: Tobias Klauser <tklauser@distanz.ch>
Cc: Greg Kroah-Hartman <gregkh@suse.de>,
linux-serial@vger.kernel.org, nios2-dev@sopc.et.ntust.edu.tw,
devicetree-discuss@lists.ozlabs.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/4] tty: serial: altera_uart: Add devicetree support
Date: Tue, 15 Feb 2011 21:32:01 -0700 [thread overview]
Message-ID: <20110216043201.GA11684@angua.secretlab.ca> (raw)
In-Reply-To: <c7a7085602687d2f1b6ac505c030f19bafda04e3.1297245277.git.tklauser@distanz.ch>
On Wed, Feb 09, 2011 at 10:58:13AM +0100, Tobias Klauser wrote:
> 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 <tklauser@distanz.ch>
> ---
> .../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
>
> diff --git a/Documentation/devicetree/bindings/serial/altera_uart.txt b/Documentation/devicetree/bindings/serial/altera_uart.txt
> new file mode 100644
> index 0000000..2ab151c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/serial/altera_uart.txt
> @@ -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
> diff --git a/drivers/tty/serial/altera_uart.c b/drivers/tty/serial/altera_uart.c
> index 3a57352..5b46ca7 100644
> --- a/drivers/tty/serial/altera_uart.c
> +++ b/drivers/tty/serial/altera_uart.c
> @@ -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;
> +
> + 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.
> +
> 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;
> }
>
> +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.
> +
> 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,
> },
> };
>
> --
> 1.7.0.4
>
next prev parent reply other threads:[~2011-02-16 4:32 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-09 9:51 [PATCH 0/4] *** SUBJECT HERE *** Tobias Klauser
2011-02-09 9:51 ` [PATCH 1/4] tty: serial: altera_uart: Handle pdev->id == -1 in altera_uart_remove Tobias Klauser
2011-02-09 9:56 ` Tobias Klauser
2011-02-09 9:53 ` [PATCH 0/4] *** SUBJECT HERE *** Tobias Klauser
2011-02-09 9:55 ` [PATCH 0/4] tty: serial: Updates for altera_uart driver Tobias Klauser
2011-02-09 9:56 ` [PATCH 1/4] tty: serial: altera_uart: Handle pdev->id == -1 in altera_uart_remove Tobias Klauser
2011-02-09 10:46 ` Anton Vorontsov
2011-02-09 9:57 ` [PATCH 2/4] tty: serial: altera_uart: Use port->regshift to store bus shift Tobias Klauser
2011-02-09 10:46 ` Anton Vorontsov
2011-02-09 9:58 ` [PATCH 3/4] tty: serial: altera_uart: Add devicetree support Tobias Klauser
2011-02-16 4:32 ` Grant Likely [this message]
2011-02-16 7:43 ` Tobias Klauser
2011-02-16 12:07 ` Grant Likely
2011-02-16 16:12 ` [PATHV v2] " Tobias Klauser
2011-02-17 2:24 ` [Nios2-dev] " Thomas Chou
2011-02-17 7:48 ` Tobias Klauser
2011-02-18 1:28 ` Thomas Chou
2011-02-18 8:08 ` Grant Likely
2011-02-18 8:15 ` Tobias Klauser
2011-02-18 10:35 ` [PATCH 3/4 v3] " Tobias Klauser
2011-02-25 17:58 ` Greg KH
[not found] ` <20110225175856.GA17072-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2011-02-28 8:31 ` Grant Likely
2011-02-28 8:31 ` Grant Likely
2011-02-09 9:58 ` [PATCH 4/4] MAINTAINERS: Add myself as a maintainer for altera_uart/altera_jtaguart Tobias Klauser
2011-02-17 3:16 ` [Nios2-dev] " Thomas Chou
2011-02-17 7:51 ` Tobias Klauser
2011-02-17 18:02 ` Arnd Bergmann
2011-02-17 19:29 ` Tobias Klauser
2011-02-17 19:32 ` [PATCH 0/4] tty: serial: Updates for altera_uart driver Greg KH
2011-02-17 19:38 ` Tobias Klauser
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=20110216043201.GA11684@angua.secretlab.ca \
--to=grant.likely@secretlab.ca \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=gregkh@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=nios2-dev@sopc.et.ntust.edu.tw \
--cc=tklauser@distanz.ch \
/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.