public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: Kenneth Heitke <kheitke@codeaurora.org>,
	sdharia@codeaurora.org, David Brown <davidb@codeaurora.org>,
	bryanh@codeaurora.org, linux-arm-msm@vger.kernel.org,
	rdunlap@xenotime.net, rmk+kernel@arm.linux.org.uk,
	john.stultz@linaro.org, akpm@linux-foundation.org,
	ohad@wizery.com, gregkh@suse.de, stefanr@s5r6.in-berlin.de,
	lethal@linux-sh.org, linville@tuxdriver.com, zajec5@gmail.com,
	linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH] slimbus: Linux driver framework for SLIMbus.
Date: Wed, 17 Aug 2011 16:00:37 +0200	[thread overview]
Message-ID: <201108171600.37791.arnd@arndb.de> (raw)
In-Reply-To: <1313586241.19990.94.camel@finisterre.wolfsonmicro.main>

On Wednesday 17 August 2011, Mark Brown wrote:
> On Wed, 2011-08-17 at 12:42 +0200, Arnd Bergmann wrote:
> > > I'd expect that bringing the device out of reset is going to be largely
> > > unrelated to the host controller, it's going to be GPIOs, clocks and
> > > regulators.  The individual drivers are going to want to manage this
> > > stuff dynamically at runtime too.
> 
> > But it's even less related to the individual driver than to the host.
> 
> No, not at all - all the bus specifies is the two wire control
> interface, if a device on the bus requires power or anything else that's
> not something the CPU Slimbus (I keep wanting to typo that as
> Slumbus...) controller has any idea about. In this respect Slimbus is
> much more like I2C than USB where there's a standard provision for power
> even if embedded systems routinely ignore it.
>
> The device driver will know what power supplies and other signals the
> device has, and it will know how and when to use them. This can
> generally be done independently of the board with just some platform or
> device tree data to configure GPIOs.

Ok, I think you've managed to get through to me ;-)

> > The way I see this working is that something outside of the driver
> > should provide a way to enable each device in order for it to get
> > probed, and the driver's ->probe callback does a pm_runtime_get()
> > call when it wants to keep the device enabled.
> 
> Some pre-cooked off the shelf device wide power management is definitely
> useful for simple cases but I don't think that scales to high end
> devices - it's too binary. Like I said I really do want to have some
> transparent device model way of handling the simple cases but we need to
> leave room for devices which want to do more complicated things.
> 
> It also occurs to me that if we're supporting going down to cold with
> runtime PM anyway the kernel is going to have to be able to understand
> the idea that devices it already knows about are going to hotplug in and
> out while staying registered. If we're doing that then it seems like the
> bus is going to have pretty much all the concepts required for explicit
> registration anyway.

How about a mixed model then?

I can see three relevant cases to consider:

1. A simple potentially hotplugged device that registers itself to the bus
   can be automatically matched to the driver.
2. A device tree representation for hardwired devices that require
   something to happen in order to register to the bus (clock, regulator,
   ...).
3. A hardcoded list of devices on a slimbus host for stuff that is known
   to be there, e.g. on a PCI card that has its own driver and that
   also need some special setup as in case 2.

I think in all three cases, we should identify the device by its EA and
match that to the device driver. We create the slim_device and register
it to the bus as soon as one of the three above is found, but in case 2
and 3, the driver is responsible for the device to actually become active
on the bus before it's allowed to send any commands to it.

For the device tree binding, I would suggest defining a slimbus bus to
have #address-cells=1, #size-cells=0 and just put the EA into the reg
property. This is enough for the host driver to add create a
slim_device and match a driver to it. The driver can access all the
properties from the device_node (or platform_data in case of statically
defined devices). When the physical device shows up on the bus, it is
automatically associated with the existing slim_device.

	Arnd

  parent reply	other threads:[~2011-08-17 14:01 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-10 23:31 [RFC PATCH] slimbus: Linux driver framework for SLIMbus Kenneth Heitke
2011-08-11 12:55 ` Arnd Bergmann
2011-08-11 20:51   ` Kenneth Heitke
2011-08-12 16:46   ` Mark Brown
2011-08-16 13:37     ` Arnd Bergmann
2011-08-16 13:50       ` David Brown
2011-08-16 14:32         ` Arnd Bergmann
2011-08-16 15:40           ` Mark Brown
2011-08-16 17:13           ` Kenneth Heitke
2011-08-16 17:16             ` Kenneth Heitke
2011-08-16 17:44             ` sdharia
2011-08-16 19:49               ` Arnd Bergmann
2011-08-16 23:27                 ` Kenneth Heitke
2011-08-17  0:59                   ` Mark Brown
2011-08-17  1:54                     ` Sagar Dharia
2011-08-17  6:32                       ` Mark Brown
2011-08-17  7:09                   ` Arnd Bergmann
2011-08-17  8:03                     ` Mark Brown
2011-08-17 10:42                       ` Arnd Bergmann
2011-08-17 13:04                         ` Mark Brown
2011-08-17 13:17                           ` Linus Walleij
2011-08-18  3:00                             ` Mark Brown
2011-08-24  9:15                               ` Linus Walleij
2011-08-24  9:21                                 ` Mark Brown
2011-08-25  7:10                                   ` Linus Walleij
2011-08-25  9:44                                     ` Mark Brown
2011-08-17 14:00                           ` Arnd Bergmann [this message]
2011-08-19  3:24                             ` Mark Brown
2011-08-21 22:10                               ` Sagar Dharia
2011-08-22 13:47                                 ` Arnd Bergmann
2011-08-16 15:23       ` Mark Brown
2011-08-14 14:34 ` Mark Brown
2011-08-15 17:55   ` Kenneth Heitke
2011-08-15 19:37 ` Russell King
2011-08-15 20:12   ` Kenneth Heitke
2011-08-16 19:33   ` Jean Delvare
2011-08-17 13:12   ` Mark Brown
2011-08-23 23:24 ` Randy Dunlap
2011-08-23 23:32   ` Kenneth Heitke

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=201108171600.37791.arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=akpm@linux-foundation.org \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=bryanh@codeaurora.org \
    --cc=davidb@codeaurora.org \
    --cc=gregkh@suse.de \
    --cc=john.stultz@linaro.org \
    --cc=kheitke@codeaurora.org \
    --cc=lethal@linux-sh.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    --cc=ohad@wizery.com \
    --cc=rdunlap@xenotime.net \
    --cc=rmk+kernel@arm.linux.org.uk \
    --cc=sdharia@codeaurora.org \
    --cc=stefanr@s5r6.in-berlin.de \
    --cc=zajec5@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox