All of lore.kernel.org
 help / color / mirror / Atom feed
From: marek.vasut@gmail.com (Marek Vasut)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/3] ARM: pxa: Add DT support to pxa2xx-uart
Date: Wed, 2 Nov 2011 15:30:24 +0100	[thread overview]
Message-ID: <201111021530.24941.marek.vasut@gmail.com> (raw)
In-Reply-To: <4EB14B25.5050606@gmail.com>

> On 11/01/2011 03:15 PM, Marek Vasut wrote:
> >> On 11/01/2011 01:32 PM, Marek Vasut wrote:
> >>> Add device tree binding for PXA2xx UARTs. Tested on Vpac270 board.
> >>> 
> >>> Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
> >>> Cc: Arnd Bergmann <arnd@arndb.de>
> >>> Cc: Grant Likely <grant.likely@secretlab.ca>
> >>> ---
> >>> 
> >>>  drivers/tty/serial/pxa.c |   50
> >>>  +++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 47
> >>>  insertions(+), 3 deletions(-)
> >>> 
> >>> diff --git a/drivers/tty/serial/pxa.c b/drivers/tty/serial/pxa.c
> >>> index 531931c..836cbb4 100644
> >>> --- a/drivers/tty/serial/pxa.c
> >>> +++ b/drivers/tty/serial/pxa.c
> >>> @@ -43,6 +43,8 @@
> >>> 
> >>>  #include <linux/clk.h>
> >>>  #include <linux/io.h>
> >>>  #include <linux/slab.h>
> >>> 
> >>> +#include <linux/of.h>
> >>> +#include <linux/of_device.h>
> >>> 
> >>>  struct uart_pxa_port {
> >>>  
> >>>  	struct uart_port        port;
> >>> 
> >>> @@ -761,11 +763,50 @@ static const struct dev_pm_ops serial_pxa_pm_ops
> >>> = {
> >>> 
> >>>  };
> >>>  #endif
> >>> 
> >>> +#ifdef CONFIG_OF
> >>> +static struct of_device_id serial_pxa_dt_ids[] = {
> >>> +	{ .compatible = "marvell,pxa2xx-uart" },
> >>> +	{ /* sentinel */ }
> >>> +};
> >>> +MODULE_DEVICE_TABLE(of, serial_pxa_dt_ids);
> >>> +
> >>> +static int serial_pxa_probe_dt(struct platform_device *pdev, int
> >>> *portid) +{
> >>> +	struct device_node *np = pdev->dev.of_node;
> >>> +	static int portnum;
> >>> +
> >>> +	if (!np)
> >>> +		return -ENODEV;
> >>> +
> >>> +	/* PXA has up to four UART ports */
> >>> +	*portid = portnum++;
> >> 
> >> You have no guarantee of the probe ordering yet are dependent on the
> >> number later on to set the name.
> > 
> > The probe order should be the one according to the order of ports in DT,
> > right ?
> 
> Maybe so, but there is no guarantee of that. If you can avoid it that
> would be best, but I think most serial drivers end up with some sort of
> index. Look at the recent DT support for i.MX uart and the alias support.
> 
> >>> +	if (*portid >= 4)
> >>> +		return -ENODEV;
> >>> +
> >>> +	/* Check if we're probing compatible ports only! */
> >>> +	if (of_get_property(np, "marvell,pxa250", NULL))
> >>> +		if (!cpu_is_pxa25x())
> >>> +			return -EINVAL;
> >> 
> >> if dev->of_node is set, then you already know you matched against
> >> marvell,pxa2xx-uart,
> > 
> > Yes, I'm checking if the port has an additional parameter
> > "marvell,pxa250" set, which means it should check if the CPU is pxa250.
> 
> If you have differences between pxa250 uart and other pxa2xx uart
> versions, then the compatible string should reflect this (i.e.
> marvell,pxa250-uart). Generally, you want to be specific with compatible
> strings. To do it generically, use the oldest chip name and newer chips
> can be compatible. For example, a pxa250 uart can use
> marvell,pxa250-uart and every other chip can use marvell,pxa210-uart.
> 
> >>> +
> >>> +	return 0;
> >>> +}
> >>> +#else
> >>> +static inline int serial_pxa_probe_dt(struct platform_device *pdev,
> >>> int *portid) +{
> >>> +	return 0;
> >>> +}
> >>> +#endif
> >>> +
> >>> 
> >>>  static int serial_pxa_probe(struct platform_device *dev)
> >>>  {
> >>>  
> >>>  	struct uart_pxa_port *sport;
> >>>  	struct resource *mmres, *irqres;
> >>>  	int ret;
> >>> 
> >>> +	int portid = dev->id;
> >>> +
> >>> +	ret = serial_pxa_probe_dt(dev, &portid);
> >>> +	if (ret == -EINVAL)
> >>> +		return 0;
> >> 
> >> What about non-DT probing when CONFIG_OF is enabled?
> > 
> > Then ret isn't -EINVAL and it should be ok ?
> 
> Ahh, yes you're right.
> 
> Rob

Thanks Rob,

I'm quite new to this DT stuff. This was very helpful though, expect new load of 
patches soon. Thanks!

  reply	other threads:[~2011-11-02 14:30 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-01 18:32 [PATCH 0/3] Initial PXA DT bindings Marek Vasut
2011-11-01 18:32 ` [PATCH 1/3] ARM: pxa: Add DT support to pxa2xx-uart Marek Vasut
2011-11-01 20:00   ` Rob Herring
2011-11-01 20:15     ` Marek Vasut
2011-11-02 13:52       ` Rob Herring
2011-11-02 14:30         ` Marek Vasut [this message]
2011-11-07 22:24   ` Grant Likely
2011-11-07 22:25     ` Marek Vasut
2011-11-01 18:32 ` [PATCH 2/3] ARM: pxa: Add DT testing machine Marek Vasut
2011-11-07 22:18   ` Grant Likely
2011-11-07 22:24     ` Marek Vasut
2011-11-01 18:32 ` [PATCH 3/3] ARM: pxa: Add basic DTS files for PXA/Vpac270 " Marek Vasut
2011-11-07 21:31 ` [PATCH 0/3 V2] Initial PXA DT bindings Marek Vasut
2011-11-07 21:31   ` [PATCH 1/3 V2] ARM: pxa: Add DT support to pxa2xx-uart Marek Vasut
2011-11-07 21:37     ` Rob Herring
2011-11-07 21:53       ` Marek Vasut
2011-11-10 12:00     ` Russell King - ARM Linux
2011-11-10 16:59       ` Marek Vasut
2011-11-10 17:07         ` Rob Herring
2011-11-07 21:31   ` [PATCH 2/3 RESEND] ARM: pxa: Add DT testing machine Marek Vasut
2011-11-07 21:59     ` Rob Herring
2011-11-07 22:06       ` Marek Vasut
2011-11-07 22:30         ` Grant Likely
2011-11-07 22:31           ` Marek Vasut
2011-11-07 22:38             ` Rob Herring
2011-11-07 22:32         ` Rob Herring
2011-11-08  1:12           ` Grant Likely
2011-11-07 21:31   ` [PATCH 3/3 V2] ARM: pxa: Add basic DTS files for PXA/Vpac270 " Marek Vasut
2011-11-07 21:45     ` Rob Herring
2011-11-07 21:55       ` Marek Vasut
2011-11-07 22:03         ` Rob Herring
2012-07-17 13:30   ` [PATCH 0/3 V2] Initial PXA DT bindings Daniel Mack
2012-07-17 14:03     ` Arnd Bergmann
2012-07-17 14:47       ` Daniel Mack
2012-07-17 15:31         ` Arnd Bergmann
2012-07-17 18:04           ` Eric Miao
2012-07-17 19:57             ` Daniel Mack
2012-07-17 20:02               ` Eric Miao
2012-07-19  3:11               ` Haojian Zhuang
2012-07-17 19:14           ` Daniel Mack
2012-07-18 12:58             ` Marek Vasut

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=201111021530.24941.marek.vasut@gmail.com \
    --to=marek.vasut@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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.