All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jamie Iles <jamie@jamieiles.com>
To: Jamie Iles <jamie@jamieiles.com>
Cc: Stephen Warren <swarren@nvidia.com>,
	Erik Gilling <konkers@android.com>,
	devicetree-discuss@lists.ozlabs.org,
	linux-kernel@vger.kernel.org,
	Grant Likely <grant.likely@secretlab.ca>,
	linux-tegra@vger.kernel.org, Colin Cross <ccross@android.com>,
	Olof Johansson <olof@lixom.net>,
	Russell King <linux@arm.linux.org.uk>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [RFC PATCH 10/12] arm/tegra: Add device tree support to pinmux driver
Date: Sat, 13 Aug 2011 11:48:50 +0100	[thread overview]
Message-ID: <20110813104850.GD2643@pulham.picochip.com> (raw)
In-Reply-To: <20110813104323.GC2643@pulham.picochip.com>

On Sat, Aug 13, 2011 at 11:43:23AM +0100, Jamie Iles wrote:
> Hi Stephen,
> 
> On Fri, Aug 12, 2011 at 04:54:55PM -0600, Stephen Warren wrote:
> > Signed-off-by: Stephen Warren <swarren@nvidia.com>
> > ---
> >  arch/arm/mach-tegra/pinmux.c |  115 ++++++++++++++++++++++++++++++++++++++++++
> >  1 files changed, 115 insertions(+), 0 deletions(-)
> > 
> > diff --git a/arch/arm/mach-tegra/pinmux.c b/arch/arm/mach-tegra/pinmux.c
> > index 05fa1a3..33246c2 100644
> > --- a/arch/arm/mach-tegra/pinmux.c
> > +++ b/arch/arm/mach-tegra/pinmux.c
> > @@ -20,6 +20,7 @@
> >  #include <linux/errno.h>
> >  #include <linux/spinlock.h>
> >  #include <linux/io.h>
> > +#include <linux/of.h>
> >  #include <linux/platform_device.h>
> >  
> >  #include <mach/iomap.h>
> > @@ -147,6 +148,41 @@ static const char *func_name(enum tegra_mux_func func)
> >  	return tegra_mux_names[func];
> >  }
> >  
> > +#ifdef CONFIG_OF
> > +static int func_enum(const char *name, enum tegra_mux_func *func_out)
> > +{
> > +	int func;
> > +
> > +	if (!strcmp(name, "RSVD1")) {
> > +		*func_out = TEGRA_MUX_RSVD1;
> > +		return 0;
> > +	}
> > +	if (!strcmp(name, "RSVD2")) {
> > +		*func_out = TEGRA_MUX_RSVD2;
> > +		return 0;
> > +	}
> > +	if (!strcmp(name, "RSVD3")) {
> > +		*func_out = TEGRA_MUX_RSVD3;
> > +		return 0;
> > +	}
> > +	if (!strcmp(name, "RSVD4")) {
> > +		*func_out = TEGRA_MUX_RSVD4;
> > +		return 0;
> > +	}
> > +	if (!strcmp(name, "NONE")) {
> > +		*func_out = TEGRA_MUX_NONE;
> > +		return 0;
> > +	}
> > +
> > +	for (func = 0; func < TEGRA_MAX_MUX; func++)
> > +		if (!strcmp(name, tegra_mux_names[func])) {
> > +			*func_out = func;
> > +			return 0;
> > +		}
> > +
> > +	return -EINVAL;
> > +}
> > +#endif
> >  
> >  static const char *tri_name(unsigned long val)
> >  {
> > @@ -666,15 +702,94 @@ void tegra_pinmux_config_pullupdown_table(const struct tegra_pingroup_config *co
> >  	}
> >  }
> >  
> > +#ifdef CONFIG_OF
> > +static void __init tegra_pinmux_probe_dt(struct platform_device *pdev)
> > +{
> > +	int pg;
> > +
> > +	for (pg = 0; pg < TEGRA_MAX_PINGROUP; pg++) {
> > +		const char *pg_name = pingroup_name(pg);
> > +		struct tegra_pingroup_config config;
> > +		struct device_node *pg_node;
> > +		int ret;
> > +		const char *s;
> > +
> > +		pg_node = of_find_child_node_by_name(pdev->dev.of_node,
> > +						     pg_name);
> > +		if (pg_node == NULL)
> > +			continue;
> 
> Rather than iterating over all of the mux names in the pinmux driver and 
> searching for a matching DT node, could you not do it the other way 
> round?  So do an for_each_child_of_node() on the pinmux node then find 
> the matching pingroup keyed by the node name?  This would eliminate 
> of_find_child_node_by_name().  You could also catch invalid 
> configurations for non-existent pins this way.

I just re-read your introduction email and saw you've already discussed 
this!  Would this require an explicit pin name property though or could 
you just key off of the pg_node->name?

Jamie

WARNING: multiple messages have this Message-ID (diff)
From: Jamie Iles <jamie@jamieiles.com>
To: Jamie Iles <jamie@jamieiles.com>
Cc: Stephen Warren <swarren@nvidia.com>,
	Grant Likely <grant.likely@secretlab.ca>,
	Colin Cross <ccross@android.com>,
	Erik Gilling <konkers@android.com>,
	Olof Johansson <olof@lixom.net>,
	Russell King <linux@arm.linux.org.uk>,
	devicetree-discuss@lists.ozlabs.org,
	linux-kernel@vger.kernel.org, linux-tegra@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [RFC PATCH 10/12] arm/tegra: Add device tree support to pinmux driver
Date: Sat, 13 Aug 2011 11:48:50 +0100	[thread overview]
Message-ID: <20110813104850.GD2643@pulham.picochip.com> (raw)
In-Reply-To: <20110813104323.GC2643@pulham.picochip.com>

On Sat, Aug 13, 2011 at 11:43:23AM +0100, Jamie Iles wrote:
> Hi Stephen,
> 
> On Fri, Aug 12, 2011 at 04:54:55PM -0600, Stephen Warren wrote:
> > Signed-off-by: Stephen Warren <swarren@nvidia.com>
> > ---
> >  arch/arm/mach-tegra/pinmux.c |  115 ++++++++++++++++++++++++++++++++++++++++++
> >  1 files changed, 115 insertions(+), 0 deletions(-)
> > 
> > diff --git a/arch/arm/mach-tegra/pinmux.c b/arch/arm/mach-tegra/pinmux.c
> > index 05fa1a3..33246c2 100644
> > --- a/arch/arm/mach-tegra/pinmux.c
> > +++ b/arch/arm/mach-tegra/pinmux.c
> > @@ -20,6 +20,7 @@
> >  #include <linux/errno.h>
> >  #include <linux/spinlock.h>
> >  #include <linux/io.h>
> > +#include <linux/of.h>
> >  #include <linux/platform_device.h>
> >  
> >  #include <mach/iomap.h>
> > @@ -147,6 +148,41 @@ static const char *func_name(enum tegra_mux_func func)
> >  	return tegra_mux_names[func];
> >  }
> >  
> > +#ifdef CONFIG_OF
> > +static int func_enum(const char *name, enum tegra_mux_func *func_out)
> > +{
> > +	int func;
> > +
> > +	if (!strcmp(name, "RSVD1")) {
> > +		*func_out = TEGRA_MUX_RSVD1;
> > +		return 0;
> > +	}
> > +	if (!strcmp(name, "RSVD2")) {
> > +		*func_out = TEGRA_MUX_RSVD2;
> > +		return 0;
> > +	}
> > +	if (!strcmp(name, "RSVD3")) {
> > +		*func_out = TEGRA_MUX_RSVD3;
> > +		return 0;
> > +	}
> > +	if (!strcmp(name, "RSVD4")) {
> > +		*func_out = TEGRA_MUX_RSVD4;
> > +		return 0;
> > +	}
> > +	if (!strcmp(name, "NONE")) {
> > +		*func_out = TEGRA_MUX_NONE;
> > +		return 0;
> > +	}
> > +
> > +	for (func = 0; func < TEGRA_MAX_MUX; func++)
> > +		if (!strcmp(name, tegra_mux_names[func])) {
> > +			*func_out = func;
> > +			return 0;
> > +		}
> > +
> > +	return -EINVAL;
> > +}
> > +#endif
> >  
> >  static const char *tri_name(unsigned long val)
> >  {
> > @@ -666,15 +702,94 @@ void tegra_pinmux_config_pullupdown_table(const struct tegra_pingroup_config *co
> >  	}
> >  }
> >  
> > +#ifdef CONFIG_OF
> > +static void __init tegra_pinmux_probe_dt(struct platform_device *pdev)
> > +{
> > +	int pg;
> > +
> > +	for (pg = 0; pg < TEGRA_MAX_PINGROUP; pg++) {
> > +		const char *pg_name = pingroup_name(pg);
> > +		struct tegra_pingroup_config config;
> > +		struct device_node *pg_node;
> > +		int ret;
> > +		const char *s;
> > +
> > +		pg_node = of_find_child_node_by_name(pdev->dev.of_node,
> > +						     pg_name);
> > +		if (pg_node == NULL)
> > +			continue;
> 
> Rather than iterating over all of the mux names in the pinmux driver and 
> searching for a matching DT node, could you not do it the other way 
> round?  So do an for_each_child_of_node() on the pinmux node then find 
> the matching pingroup keyed by the node name?  This would eliminate 
> of_find_child_node_by_name().  You could also catch invalid 
> configurations for non-existent pins this way.

I just re-read your introduction email and saw you've already discussed 
this!  Would this require an explicit pin name property though or could 
you just key off of the pg_node->name?

Jamie

WARNING: multiple messages have this Message-ID (diff)
From: jamie@jamieiles.com (Jamie Iles)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH 10/12] arm/tegra: Add device tree support to pinmux driver
Date: Sat, 13 Aug 2011 11:48:50 +0100	[thread overview]
Message-ID: <20110813104850.GD2643@pulham.picochip.com> (raw)
In-Reply-To: <20110813104323.GC2643@pulham.picochip.com>

On Sat, Aug 13, 2011 at 11:43:23AM +0100, Jamie Iles wrote:
> Hi Stephen,
> 
> On Fri, Aug 12, 2011 at 04:54:55PM -0600, Stephen Warren wrote:
> > Signed-off-by: Stephen Warren <swarren@nvidia.com>
> > ---
> >  arch/arm/mach-tegra/pinmux.c |  115 ++++++++++++++++++++++++++++++++++++++++++
> >  1 files changed, 115 insertions(+), 0 deletions(-)
> > 
> > diff --git a/arch/arm/mach-tegra/pinmux.c b/arch/arm/mach-tegra/pinmux.c
> > index 05fa1a3..33246c2 100644
> > --- a/arch/arm/mach-tegra/pinmux.c
> > +++ b/arch/arm/mach-tegra/pinmux.c
> > @@ -20,6 +20,7 @@
> >  #include <linux/errno.h>
> >  #include <linux/spinlock.h>
> >  #include <linux/io.h>
> > +#include <linux/of.h>
> >  #include <linux/platform_device.h>
> >  
> >  #include <mach/iomap.h>
> > @@ -147,6 +148,41 @@ static const char *func_name(enum tegra_mux_func func)
> >  	return tegra_mux_names[func];
> >  }
> >  
> > +#ifdef CONFIG_OF
> > +static int func_enum(const char *name, enum tegra_mux_func *func_out)
> > +{
> > +	int func;
> > +
> > +	if (!strcmp(name, "RSVD1")) {
> > +		*func_out = TEGRA_MUX_RSVD1;
> > +		return 0;
> > +	}
> > +	if (!strcmp(name, "RSVD2")) {
> > +		*func_out = TEGRA_MUX_RSVD2;
> > +		return 0;
> > +	}
> > +	if (!strcmp(name, "RSVD3")) {
> > +		*func_out = TEGRA_MUX_RSVD3;
> > +		return 0;
> > +	}
> > +	if (!strcmp(name, "RSVD4")) {
> > +		*func_out = TEGRA_MUX_RSVD4;
> > +		return 0;
> > +	}
> > +	if (!strcmp(name, "NONE")) {
> > +		*func_out = TEGRA_MUX_NONE;
> > +		return 0;
> > +	}
> > +
> > +	for (func = 0; func < TEGRA_MAX_MUX; func++)
> > +		if (!strcmp(name, tegra_mux_names[func])) {
> > +			*func_out = func;
> > +			return 0;
> > +		}
> > +
> > +	return -EINVAL;
> > +}
> > +#endif
> >  
> >  static const char *tri_name(unsigned long val)
> >  {
> > @@ -666,15 +702,94 @@ void tegra_pinmux_config_pullupdown_table(const struct tegra_pingroup_config *co
> >  	}
> >  }
> >  
> > +#ifdef CONFIG_OF
> > +static void __init tegra_pinmux_probe_dt(struct platform_device *pdev)
> > +{
> > +	int pg;
> > +
> > +	for (pg = 0; pg < TEGRA_MAX_PINGROUP; pg++) {
> > +		const char *pg_name = pingroup_name(pg);
> > +		struct tegra_pingroup_config config;
> > +		struct device_node *pg_node;
> > +		int ret;
> > +		const char *s;
> > +
> > +		pg_node = of_find_child_node_by_name(pdev->dev.of_node,
> > +						     pg_name);
> > +		if (pg_node == NULL)
> > +			continue;
> 
> Rather than iterating over all of the mux names in the pinmux driver and 
> searching for a matching DT node, could you not do it the other way 
> round?  So do an for_each_child_of_node() on the pinmux node then find 
> the matching pingroup keyed by the node name?  This would eliminate 
> of_find_child_node_by_name().  You could also catch invalid 
> configurations for non-existent pins this way.

I just re-read your introduction email and saw you've already discussed 
this!  Would this require an explicit pin name property though or could 
you just key off of the pg_node->name?

Jamie

  reply	other threads:[~2011-08-13 10:48 UTC|newest]

Thread overview: 90+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-12 22:54 [RFC PATCH 00/12] arm/tegra: Initialize GPIO & pinmux from DT Stephen Warren
2011-08-12 22:54 ` Stephen Warren
2011-08-12 22:54 ` Stephen Warren
     [not found] ` <1313189697-21287-1-git-send-email-swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-08-12 22:54   ` [RFC PATCH 01/12] dt: Add of_find_child_node_by_name() Stephen Warren
2011-08-12 22:54     ` Stephen Warren
2011-08-12 22:54     ` Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 02/12] arm/tegra: Prep boards for gpio/pinmux conversion to pdevs Stephen Warren
2011-08-12 22:54     ` Stephen Warren
2011-08-12 22:54     ` Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 03/12] arm/tegra: Avoid duplicate gpio/pinmux devices with dt Stephen Warren
2011-08-12 22:54     ` Stephen Warren
2011-08-12 22:54     ` Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 04/12] arm/tegra: board-dt: Add AUXDATA for tegra-gpio and tegra-pinmux Stephen Warren
2011-08-12 22:54     ` Stephen Warren
2011-08-12 22:54     ` Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 05/12] arm/dt: Tegra: Add nvidia, gpios property to GPIO controller Stephen Warren
2011-08-12 22:54     ` Stephen Warren
2011-08-12 22:54     ` [RFC PATCH 05/12] arm/dt: Tegra: Add nvidia,gpios " Stephen Warren
     [not found]     ` <1313189697-21287-6-git-send-email-swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-08-14  7:01       ` Olof Johansson
2011-08-14  7:01         ` Olof Johansson
2011-08-14  7:01         ` Olof Johansson
     [not found]         ` <CAOesGMj8firxDz-kqkh=jwsbC_QRW+YSFpf7dh3WaOhseCg91w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-08-15 16:15           ` Stephen Warren
2011-08-15 16:15             ` Stephen Warren
2011-08-15 16:15             ` Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 06/12] arm/dt: Tegra: Add pinmux node Stephen Warren
2011-08-12 22:54     ` Stephen Warren
2011-08-12 22:54     ` Stephen Warren
     [not found]     ` <1313189697-21287-7-git-send-email-swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-08-14  7:24       ` Olof Johansson
2011-08-14  7:24         ` Olof Johansson
2011-08-14  7:24         ` Olof Johansson
     [not found]         ` <CAOesGMheuUfSe1uUA6LxZ71V0-DR3XX7bEJqhVxJ-ZqrWWa1bA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-08-15 16:41           ` Stephen Warren
2011-08-15 16:41             ` Stephen Warren
2011-08-15 16:41             ` Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 07/12] gpio/tegra: Convert to a platform device Stephen Warren
2011-08-12 22:54     ` Stephen Warren
2011-08-12 22:54     ` Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 08/12] gpio/tegra: Add device tree support Stephen Warren
2011-08-12 22:54     ` Stephen Warren
2011-08-12 22:54     ` Stephen Warren
     [not found]     ` <1313189697-21287-9-git-send-email-swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-08-13  9:49       ` Belisko Marek
2011-08-13  9:49         ` Belisko Marek
2011-08-13  9:49         ` Belisko Marek
     [not found]         ` <CAAfyv34kOtwjerB0gMhEKNTwGd9w-LCE52MCUuvzTyYkXLY-dg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-08-15 15:47           ` Stephen Warren
2011-08-15 15:47             ` Stephen Warren
2011-08-15 15:47             ` Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 09/12] arm/tegra: Convert pinmux driver to a platform device Stephen Warren
2011-08-12 22:54     ` Stephen Warren
2011-08-12 22:54     ` Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 10/12] arm/tegra: Add device tree support to pinmux driver Stephen Warren
2011-08-12 22:54     ` Stephen Warren
2011-08-12 22:54     ` Stephen Warren
     [not found]     ` <1313189697-21287-11-git-send-email-swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-08-13 10:43       ` Jamie Iles
2011-08-13 10:43         ` Jamie Iles
2011-08-13 10:43         ` Jamie Iles
2011-08-13 10:48         ` Jamie Iles [this message]
2011-08-13 10:48           ` Jamie Iles
2011-08-13 10:48           ` Jamie Iles
     [not found]           ` <20110813104850.GD2643-apL1N+EY0C9YtYNIL7UdTEEOCMrvLtNR@public.gmane.org>
2011-08-15 16:09             ` Stephen Warren
2011-08-15 16:09               ` Stephen Warren
2011-08-15 16:09               ` Stephen Warren
2011-08-15 20:07       ` Jamie Iles
2011-08-15 20:07         ` Jamie Iles
2011-08-15 20:07         ` Jamie Iles
2011-08-15 20:36         ` Jamie Iles
2011-08-15 20:36           ` Jamie Iles
2011-08-15 20:36           ` Jamie Iles
2011-08-15 20:44           ` Stephen Warren
2011-08-15 20:44             ` Stephen Warren
2011-08-15 20:44             ` Stephen Warren
     [not found]             ` <74CDBE0F657A3D45AFBB94109FB122FF04AEA25174-C7FfzLzN0UxDw2glCA4ptUEOCMrvLtNR@public.gmane.org>
2011-08-15 20:50               ` Jamie Iles
2011-08-15 20:50                 ` Jamie Iles
2011-08-15 20:50                 ` Jamie Iles
2011-08-12 22:54   ` [RFC PATCH 11/12] arm/tegra: board-dt: Remove dependency on non-dt pinmux functions Stephen Warren
2011-08-12 22:54     ` Stephen Warren
2011-08-12 22:54     ` Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 12/12] arm/tegra: Remove temporary gpio/pinmux registration workaround Stephen Warren
2011-08-12 22:54     ` Stephen Warren
2011-08-12 22:54     ` Stephen Warren
     [not found]     ` <1313189697-21287-13-git-send-email-swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-08-15 11:12       ` Sergei Shtylyov
2011-08-15 11:12         ` Sergei Shtylyov
2011-08-15 11:12         ` Sergei Shtylyov
     [not found]         ` <4E48FF29.1030208-hkdhdckH98+B+jHODAdFcQ@public.gmane.org>
2011-08-15 16:03           ` Stephen Warren
2011-08-15 16:03             ` Stephen Warren
2011-08-15 16:03             ` Stephen Warren
2011-08-13 13:08   ` [RFC PATCH 00/12] arm/tegra: Initialize GPIO & pinmux from DT Shawn Guo
2011-08-13 13:08     ` Shawn Guo
2011-08-13 13:08     ` Shawn Guo
     [not found]     ` <20110813130858.GC7244-+NayF8gZjK2ctlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2011-08-15 16:07       ` Stephen Warren
2011-08-15 16:07         ` Stephen Warren
2011-08-15 16:07         ` Stephen Warren

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=20110813104850.GD2643@pulham.picochip.com \
    --to=jamie@jamieiles.com \
    --cc=ccross@android.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=grant.likely@secretlab.ca \
    --cc=konkers@android.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=olof@lixom.net \
    --cc=swarren@nvidia.com \
    /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.