All of lore.kernel.org
 help / color / mirror / Atom feed
From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: Pinmux bindings proposal V2
Date: Mon, 30 Jan 2012 09:20:42 -0800	[thread overview]
Message-ID: <20120130172042.GE9339@atomide.com> (raw)
In-Reply-To: <20120130015607.GA10470@S2101-09.ap.freescale.net>

* Shawn Guo <shawn.guo@linaro.org> [120129 17:13]:
> On Fri, Jan 27, 2012 at 09:05:45AM -0800, Tony Lindgren wrote:
> > Hi,
> > 
> > * Shawn Guo <shawn.guo@linaro.org> [120126 22:15]:
> > > On Thu, Jan 26, 2012 at 06:08:33PM -0800, Tony Lindgren wrote:
> > > > * Stephen Warren <swarren@nvidia.com> [120126 11:03]:
> > > ...
> > > > > Second, as I mentioned before, while some of the states are certainly
> > > > > PM-related, I don't think all will be, e.g. the case of running an SD
> > > > > controller at different clock rates to the SD card, and needing to
> > > > > set different pin parameters based on the clock rate. Is runtime PM
> > > > > intended cover that kind of thing? The idea here is that the common
> > > > > pinctrl binding can allow the driver to require different named states
> > > > > for those different clock rate cases.
> > > > 
> > > > For the PM related states, those should be Linux generic. For rate
> > > > setting sounds like that's really something you should set up as clocks
> > > > in the Tegra wrapper driver for SDHCI?
> > > > 
> > > That's right.
> > > 
> > > > Ideally the SDHCI driver would be completely arch independent, and
> > > > then the SoC specific wrapper driver would know how to communicate to
> > > > the pinmux/pinconf framwork or clock framework what it needs using
> > > > Linux generic APIs.
> > > 
> > > But that wrapper driver should not be bothered to call pinmux/pinconf
> > > APIs on pin basis to change the pinctrl configuration.  The elegant
> > > way would be something like the following in case that it switches
> > > the bus frequency from 50 MHz to 100 MHz.
> > > 
> > > 	pmx = pinmux_get(dev, "esdhc_50mhz");
> > > 	...
> > > 	pinmux_put(pmx);
> > > 	pmx = pinmux_get(dev, "esdhc_100mhz");
> > > 	...
> > > 
> > > The specific mux and config settings of states esdhc_50mhz and
> > > esdhc_100mhz would be retrieved from device tree.
> > 
> > Yes whatever mux names can be used, same as with clock framework
> > for clock names. But that means you'll have to constantly get/put
> > the mux which is not efficient.
> > 
> The most important reason that we want to move to pinctrl subsystem
> is we need its run-time configuration feature for cases like esdhc
> here.  I do not think the switch here is so constant to be inefficient.
> 
> > Wouldn't it be cleaner to just clk_get esdhc_clk during init, then
> > do clk_set_rate on it to toggle the rates?
> >  
> It's not an init-time switch but run-time one.  That said,
> sdhci_ops.set_clock will be called during run-time.

Right, basically you don't want to do clk_get or pinmux_get during
runtime, you do that once one during init. Then do clk_set_rate or
whaterver during runtime.

Is there anything stopping from implementing sdhci_ops.set_rate
using clock framework and clk_set_rate in this case BTW?
 
> > > > So I'd rather stay out of random named states for
> > > > the pins coming from device tree; If we still need them, they should
> > > > be common bindings rather than things like "xyz_clock_hack".
> > > > 
> > > The binding defines the syntax, and I do not see the necessity to
> > > force the particular state name, which is really pinctrl client
> > > device specific.
> > 
> > Do you have some other custom pin state example other than the
> > clock rate change example above?
> > 
> I have another case PM related.  To aggressively save power, the pins
> configured for particular function during active mode need to be
> muxed on gpio mode and output 0 in low-power mode.

OK, but basically only a small subset of pins of the total pins?

Regards,

Tony

WARNING: multiple messages have this Message-ID (diff)
From: Tony Lindgren <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
To: Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: Dong Aisheng <dongas86-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	"devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org"
	<devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org>,
	"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org"
	<rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>,
	"Sascha Hauer (s.hauer-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org)"
	<s.hauer-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>,
	"kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org"
	<kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>,
	"cjb-2X9k7bc8m7Mdnm+yROfE0A@public.gmane.org"
	<cjb-2X9k7bc8m7Mdnm+yROfE0A@public.gmane.org>,
	"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: Pinmux bindings proposal V2
Date: Mon, 30 Jan 2012 09:20:42 -0800	[thread overview]
Message-ID: <20120130172042.GE9339@atomide.com> (raw)
In-Reply-To: <20120130015607.GA10470-rvtDTF3kK1ictlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>

* Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> [120129 17:13]:
> On Fri, Jan 27, 2012 at 09:05:45AM -0800, Tony Lindgren wrote:
> > Hi,
> > 
> > * Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> [120126 22:15]:
> > > On Thu, Jan 26, 2012 at 06:08:33PM -0800, Tony Lindgren wrote:
> > > > * Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> [120126 11:03]:
> > > ...
> > > > > Second, as I mentioned before, while some of the states are certainly
> > > > > PM-related, I don't think all will be, e.g. the case of running an SD
> > > > > controller at different clock rates to the SD card, and needing to
> > > > > set different pin parameters based on the clock rate. Is runtime PM
> > > > > intended cover that kind of thing? The idea here is that the common
> > > > > pinctrl binding can allow the driver to require different named states
> > > > > for those different clock rate cases.
> > > > 
> > > > For the PM related states, those should be Linux generic. For rate
> > > > setting sounds like that's really something you should set up as clocks
> > > > in the Tegra wrapper driver for SDHCI?
> > > > 
> > > That's right.
> > > 
> > > > Ideally the SDHCI driver would be completely arch independent, and
> > > > then the SoC specific wrapper driver would know how to communicate to
> > > > the pinmux/pinconf framwork or clock framework what it needs using
> > > > Linux generic APIs.
> > > 
> > > But that wrapper driver should not be bothered to call pinmux/pinconf
> > > APIs on pin basis to change the pinctrl configuration.  The elegant
> > > way would be something like the following in case that it switches
> > > the bus frequency from 50 MHz to 100 MHz.
> > > 
> > > 	pmx = pinmux_get(dev, "esdhc_50mhz");
> > > 	...
> > > 	pinmux_put(pmx);
> > > 	pmx = pinmux_get(dev, "esdhc_100mhz");
> > > 	...
> > > 
> > > The specific mux and config settings of states esdhc_50mhz and
> > > esdhc_100mhz would be retrieved from device tree.
> > 
> > Yes whatever mux names can be used, same as with clock framework
> > for clock names. But that means you'll have to constantly get/put
> > the mux which is not efficient.
> > 
> The most important reason that we want to move to pinctrl subsystem
> is we need its run-time configuration feature for cases like esdhc
> here.  I do not think the switch here is so constant to be inefficient.
> 
> > Wouldn't it be cleaner to just clk_get esdhc_clk during init, then
> > do clk_set_rate on it to toggle the rates?
> >  
> It's not an init-time switch but run-time one.  That said,
> sdhci_ops.set_clock will be called during run-time.

Right, basically you don't want to do clk_get or pinmux_get during
runtime, you do that once one during init. Then do clk_set_rate or
whaterver during runtime.

Is there anything stopping from implementing sdhci_ops.set_rate
using clock framework and clk_set_rate in this case BTW?
 
> > > > So I'd rather stay out of random named states for
> > > > the pins coming from device tree; If we still need them, they should
> > > > be common bindings rather than things like "xyz_clock_hack".
> > > > 
> > > The binding defines the syntax, and I do not see the necessity to
> > > force the particular state name, which is really pinctrl client
> > > device specific.
> > 
> > Do you have some other custom pin state example other than the
> > clock rate change example above?
> > 
> I have another case PM related.  To aggressively save power, the pins
> configured for particular function during active mode need to be
> muxed on gpio mode and output 0 in low-power mode.

OK, but basically only a small subset of pins of the total pins?

Regards,

Tony

WARNING: multiple messages have this Message-ID (diff)
From: Tony Lindgren <tony@atomide.com>
To: Shawn Guo <shawn.guo@linaro.org>
Cc: Stephen Warren <swarren@nvidia.com>,
	Dong Aisheng <dongas86@gmail.com>,
	"devicetree-discuss@lists.ozlabs.org" 
	<devicetree-discuss@lists.ozlabs.org>,
	"Linus Walleij (linus.walleij@linaro.org)"
	<linus.walleij@linaro.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"rob.herring@calxeda.com" <rob.herring@calxeda.com>,
	"Grant Likely (grant.likely@secretlab.ca)" 
	<grant.likely@secretlab.ca>,
	Thomas Abraham <thomas.abraham@linaro.org>,
	"kernel@pengutronix.de" <kernel@pengutronix.de>,
	"Simon Glass (sjg@chromium.org)" <sjg@chromium.org>,
	"cjb@laptop.org" <cjb@laptop.org>,
	Dong Aisheng-B29396 <B29396@freescale.com>,
	"Sascha Hauer (s.hauer@pengutronix.de)" <s.hauer@pengutronix.de>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: Pinmux bindings proposal V2
Date: Mon, 30 Jan 2012 09:20:42 -0800	[thread overview]
Message-ID: <20120130172042.GE9339@atomide.com> (raw)
In-Reply-To: <20120130015607.GA10470@S2101-09.ap.freescale.net>

* Shawn Guo <shawn.guo@linaro.org> [120129 17:13]:
> On Fri, Jan 27, 2012 at 09:05:45AM -0800, Tony Lindgren wrote:
> > Hi,
> > 
> > * Shawn Guo <shawn.guo@linaro.org> [120126 22:15]:
> > > On Thu, Jan 26, 2012 at 06:08:33PM -0800, Tony Lindgren wrote:
> > > > * Stephen Warren <swarren@nvidia.com> [120126 11:03]:
> > > ...
> > > > > Second, as I mentioned before, while some of the states are certainly
> > > > > PM-related, I don't think all will be, e.g. the case of running an SD
> > > > > controller at different clock rates to the SD card, and needing to
> > > > > set different pin parameters based on the clock rate. Is runtime PM
> > > > > intended cover that kind of thing? The idea here is that the common
> > > > > pinctrl binding can allow the driver to require different named states
> > > > > for those different clock rate cases.
> > > > 
> > > > For the PM related states, those should be Linux generic. For rate
> > > > setting sounds like that's really something you should set up as clocks
> > > > in the Tegra wrapper driver for SDHCI?
> > > > 
> > > That's right.
> > > 
> > > > Ideally the SDHCI driver would be completely arch independent, and
> > > > then the SoC specific wrapper driver would know how to communicate to
> > > > the pinmux/pinconf framwork or clock framework what it needs using
> > > > Linux generic APIs.
> > > 
> > > But that wrapper driver should not be bothered to call pinmux/pinconf
> > > APIs on pin basis to change the pinctrl configuration.  The elegant
> > > way would be something like the following in case that it switches
> > > the bus frequency from 50 MHz to 100 MHz.
> > > 
> > > 	pmx = pinmux_get(dev, "esdhc_50mhz");
> > > 	...
> > > 	pinmux_put(pmx);
> > > 	pmx = pinmux_get(dev, "esdhc_100mhz");
> > > 	...
> > > 
> > > The specific mux and config settings of states esdhc_50mhz and
> > > esdhc_100mhz would be retrieved from device tree.
> > 
> > Yes whatever mux names can be used, same as with clock framework
> > for clock names. But that means you'll have to constantly get/put
> > the mux which is not efficient.
> > 
> The most important reason that we want to move to pinctrl subsystem
> is we need its run-time configuration feature for cases like esdhc
> here.  I do not think the switch here is so constant to be inefficient.
> 
> > Wouldn't it be cleaner to just clk_get esdhc_clk during init, then
> > do clk_set_rate on it to toggle the rates?
> >  
> It's not an init-time switch but run-time one.  That said,
> sdhci_ops.set_clock will be called during run-time.

Right, basically you don't want to do clk_get or pinmux_get during
runtime, you do that once one during init. Then do clk_set_rate or
whaterver during runtime.

Is there anything stopping from implementing sdhci_ops.set_rate
using clock framework and clk_set_rate in this case BTW?
 
> > > > So I'd rather stay out of random named states for
> > > > the pins coming from device tree; If we still need them, they should
> > > > be common bindings rather than things like "xyz_clock_hack".
> > > > 
> > > The binding defines the syntax, and I do not see the necessity to
> > > force the particular state name, which is really pinctrl client
> > > device specific.
> > 
> > Do you have some other custom pin state example other than the
> > clock rate change example above?
> > 
> I have another case PM related.  To aggressively save power, the pins
> configured for particular function during active mode need to be
> muxed on gpio mode and output 0 in low-power mode.

OK, but basically only a small subset of pins of the total pins?

Regards,

Tony

  reply	other threads:[~2012-01-30 17:20 UTC|newest]

Thread overview: 146+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-20 22:22 Pinmux bindings proposal V2 Stephen Warren
2012-01-20 22:22 ` Stephen Warren
2012-01-23 21:00 ` Tony Lindgren
2012-01-23 21:00   ` Tony Lindgren
2012-01-23 21:00   ` Tony Lindgren
2012-01-23 23:08   ` Stephen Warren
2012-01-23 23:08     ` Stephen Warren
2012-01-23 23:08     ` Stephen Warren
2012-01-24  1:20     ` Tony Lindgren
2012-01-24  1:20       ` Tony Lindgren
2012-01-24  1:20       ` Tony Lindgren
2012-01-24 22:29       ` Stephen Warren
2012-01-24 22:29         ` Stephen Warren
2012-01-24 22:29         ` Stephen Warren
2012-01-25  0:04         ` Tony Lindgren
2012-01-25  0:04           ` Tony Lindgren
2012-01-26 19:33           ` Stephen Warren
2012-01-26 19:33             ` Stephen Warren
2012-01-26 19:33             ` Stephen Warren
2012-01-27  2:08             ` Tony Lindgren
2012-01-27  2:08               ` Tony Lindgren
2012-01-27  6:57               ` Shawn Guo
2012-01-27  6:57                 ` Shawn Guo
2012-01-27  6:57                 ` Shawn Guo
2012-01-27 17:05                 ` Tony Lindgren
2012-01-27 17:05                   ` Tony Lindgren
2012-01-27 17:05                   ` Tony Lindgren
2012-01-30  1:56                   ` Shawn Guo
2012-01-30  1:56                     ` Shawn Guo
2012-01-30  1:56                     ` Shawn Guo
2012-01-30 17:20                     ` Tony Lindgren [this message]
2012-01-30 17:20                       ` Tony Lindgren
2012-01-30 17:20                       ` Tony Lindgren
2012-01-31  1:32                       ` Shawn Guo
2012-01-31  1:32                         ` Shawn Guo
2012-01-31  2:29                         ` Tony Lindgren
2012-01-31  2:29                           ` Tony Lindgren
2012-01-31  2:29                           ` Tony Lindgren
2012-01-31 14:35                           ` Reg pinmux driver for OMAP based SoC- AM335X Mohammed, Afzal
2012-01-31 17:05                             ` Tony Lindgren
2012-01-31 17:05                               ` Tony Lindgren
2012-02-01 10:04                               ` Hiremath, Vaibhav
2012-02-01 10:04                                 ` Hiremath, Vaibhav
2012-02-01 18:14                                 ` Tony Lindgren
2012-02-01 18:14                                   ` Tony Lindgren
2012-02-03 20:57                                   ` Tony Lindgren
2012-02-03 20:57                                     ` Tony Lindgren
2012-02-01 11:00                               ` Mohammed, Afzal
2012-02-01 11:00                                 ` Mohammed, Afzal
2012-02-01  5:36                           ` Pinmux bindings proposal V2 Shawn Guo
2012-02-01  5:36                             ` Shawn Guo
2012-02-01  5:36                             ` Shawn Guo
2012-01-27 17:36               ` Stephen Warren
2012-01-27 17:36                 ` Stephen Warren
2012-01-27 17:36                 ` Stephen Warren
2012-01-27 17:42                 ` Tony Lindgren
2012-01-27 17:42                   ` Tony Lindgren
2012-01-27 17:42                   ` Tony Lindgren
2012-01-26  9:36   ` Shawn Guo
2012-01-26  9:36     ` Shawn Guo
2012-01-26  9:36     ` Shawn Guo
2012-01-26 17:51     ` Tony Lindgren
2012-01-26 17:51       ` Tony Lindgren
2012-01-26 17:51       ` Tony Lindgren
2012-01-27  7:19       ` Shawn Guo
2012-01-27  7:19         ` Shawn Guo
2012-01-27  7:19         ` Shawn Guo
2012-01-27 17:16         ` Tony Lindgren
2012-01-27 17:16           ` Tony Lindgren
2012-01-27 17:16           ` Tony Lindgren
2012-01-30  2:10           ` Shawn Guo
2012-01-30  2:10             ` Shawn Guo
2012-01-30  2:10             ` Shawn Guo
2012-01-30 17:43             ` Tony Lindgren
2012-01-30 17:43               ` Tony Lindgren
2012-01-30 17:43               ` Tony Lindgren
2012-01-31  1:07               ` Shawn Guo
2012-01-31  1:07                 ` Shawn Guo
2012-01-31  1:07                 ` Shawn Guo
2012-01-26  9:24 ` Shawn Guo
2012-01-26  9:24   ` Shawn Guo
2012-01-26 17:42 ` Simon Glass
2012-01-26 17:42   ` Simon Glass
2012-01-27  2:21   ` Tony Lindgren
2012-01-27  2:21     ` Tony Lindgren
2012-01-27  2:21     ` Tony Lindgren
2012-01-27 15:43     ` Simon Glass
2012-01-27 15:43       ` Simon Glass
2012-01-27 17:37       ` Tony Lindgren
2012-01-27 17:37         ` Tony Lindgren
2012-01-27 17:37         ` Tony Lindgren
2012-01-27 17:51         ` Stephen Warren
2012-01-27 17:51           ` Stephen Warren
2012-01-27 17:51           ` Stephen Warren
2012-01-27 18:10           ` Tony Lindgren
2012-01-27 18:10             ` Tony Lindgren
2012-01-27 18:10             ` Tony Lindgren
2012-01-30  3:27           ` Shawn Guo
2012-01-30  3:27             ` Shawn Guo
2012-01-30  3:27             ` Shawn Guo
2012-01-30  3:13       ` Shawn Guo
2012-01-30  3:13         ` Shawn Guo
2012-01-30 17:49         ` Tony Lindgren
2012-01-30 17:49           ` Tony Lindgren
2012-01-30 17:49           ` Tony Lindgren
2012-01-27 17:38     ` Stephen Warren
2012-01-27 17:38       ` Stephen Warren
2012-01-27 17:38       ` Stephen Warren
2012-01-27 17:29   ` Stephen Warren
2012-01-27 17:29     ` Stephen Warren
2012-01-27 17:29     ` Stephen Warren
2012-01-30  2:31     ` Shawn Guo
2012-01-30  2:31       ` Shawn Guo
2012-01-30  2:31       ` Shawn Guo
2012-02-01 14:35 ` Shawn Guo
2012-02-01 14:35   ` Shawn Guo
2012-02-02 18:36   ` Stephen Warren
2012-02-02 18:36     ` Stephen Warren
2012-02-02 18:36     ` Stephen Warren
2012-02-02 20:07     ` Dong Aisheng
2012-02-02 20:07       ` Dong Aisheng
2012-02-02 20:07       ` Dong Aisheng
2012-02-03 14:02       ` Shawn Guo
2012-02-03 14:02         ` Shawn Guo
2012-02-03 14:02         ` Shawn Guo
2012-02-03 17:21         ` Dong Aisheng
2012-02-03 17:21           ` Dong Aisheng
2012-02-03 17:21           ` Dong Aisheng
2012-02-03 17:32       ` Tony Lindgren
2012-02-03 17:32         ` Tony Lindgren
2012-02-03 17:32         ` Tony Lindgren
2012-02-03 18:13         ` Dong Aisheng
2012-02-03 18:13           ` Dong Aisheng
2012-02-03 18:13           ` Dong Aisheng
2012-02-03 21:05           ` Tony Lindgren
2012-02-03 21:05             ` Tony Lindgren
2012-02-04 16:55             ` Dong Aisheng
2012-02-04 16:55               ` Dong Aisheng
2012-02-04 17:15               ` Tony Lindgren
2012-02-04 17:15                 ` Tony Lindgren
2012-02-04 17:15                 ` Tony Lindgren
2012-02-03  8:46     ` Shawn Guo
2012-02-03  8:46       ` Shawn Guo
2012-02-13 19:58 ` Stephen Warren
2012-02-13 19:58   ` Stephen Warren
2012-02-13 19:58   ` 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=20120130172042.GE9339@atomide.com \
    --to=tony@atomide.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.