All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lee Jones <lee.jones@linaro.org>
To: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	STEricsson_nomadik_linux@list.st.com,
	linus.walleij@stericsson.com, arnd@arndb.de,
	sameo@linux.intel.com, olalilja@yahoo.se,
	ola.o.lilja@stericsson.com, alsa-devel@alsa-project.org,
	lrg@ti.com
Subject: Re: [PATCH 20/21] ASoC: codecs: Enable AB8500 CODEC for Device Tree
Date: Thu, 26 Jul 2012 16:19:33 +0100	[thread overview]
Message-ID: <50116005.6050008@linaro.org> (raw)
In-Reply-To: <20120726144336.GL3099@opensource.wolfsonmicro.com>

On 26/07/12 15:43, Mark Brown wrote:
> On Thu, Jul 26, 2012 at 03:15:01PM +0100, Lee Jones wrote:
>> Sorry missed this:
>
>>> Why are we doing this?  The MFD cells are a totally Linux specific
>>> thing, there's no reason to represent them in the device tree unless
>>> they're in some way reusable and the "ab8500-codec" name suggests that's
>>> unlikely.  Just put the properties on the parent node and instantiate
>>> the MFD cell as normal.
>
>> We have all of the AB8500 devices into the Device Tree to accurately
>> represent the hardware. We will also be passing configuration
>> information into the AB8500 Codec from Device Tree. The only reason
>> we're still registering them using the MFD API is to overcome
>> addressing issues encountered earlier. Each 'device' still belongs
>> in the 'device' tree.
>
> The device here is the AB8500.  The fact that Linux chooses to represent
> it as an MFD with a particular set of subdrivers is a Linux specific
> decision and may well change over time.  For example it's likely that
> we'll want to migrate the clocks out of the audio driver and into the
> clock API when that becomes useful.  Similarly currently a lot of these
> devices use ASoC level jack detection but that's going to move over to
> extcon over time.
>
> There's no way you're going to be able to reuse this for anything that
> isn't an AB8500, there's no abstraction of the SoC integration here.  If
> you had clearly identifiable, repeatable IPs which you could reasonably
> bind to a different bit of silicon then that'd be different but there's
> nothing like that here.  We already know that the functionality covered
> by the driver is going to be present simply by virtue of knowing that
> there's an AB8500 and similarly there's no real way this driver could
> ever be used without the core driver.  All the "device" in the device
> tree is doing is serving as a container to place some of the DT
> properties into, this needs to be separated out from the instantiation
> of the Linux device driver.  There's nothing stopping the driver from
> looking at the OF node of its parent here.
>
> The goal here isn't just to copy the Linux device model and platform
> data into device tree bindings, the device tree bindings need to think
> about what the chip actually is so they can be reused by other OSs and
> by future versions of Linux.
>
>> If we were to take this Device Tree and use it on something
>> non-Linux, that OS will still need to know about each of the AB8500
>> devices and every associated configuration option. Only in Linux do
>> we continue to register them though a different API, which doesn't
>> affect any other OS.
>
> Another OS might have a different idea about how it's going to split up
> the chip which better fits with the models which that OS has for the
> functions present on the device.  The reason this is a distinct device
> in Linux is all to do with how Linux models the hardware.

Okay, so your suggestion is to strip out all of the sub-devices under 
the AB8500. It's doable, but will take some restructuring and thinking 
about. This is a job for another day. I think it's okay to continue with 
the current semantics for the time-being. The line we're discussing does 
need to be split out though. I didn't mean to merge it in with the ASoC 
stuff.

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

WARNING: multiple messages have this Message-ID (diff)
From: lee.jones@linaro.org (Lee Jones)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 20/21] ASoC: codecs: Enable AB8500 CODEC for Device Tree
Date: Thu, 26 Jul 2012 16:19:33 +0100	[thread overview]
Message-ID: <50116005.6050008@linaro.org> (raw)
In-Reply-To: <20120726144336.GL3099@opensource.wolfsonmicro.com>

On 26/07/12 15:43, Mark Brown wrote:
> On Thu, Jul 26, 2012 at 03:15:01PM +0100, Lee Jones wrote:
>> Sorry missed this:
>
>>> Why are we doing this?  The MFD cells are a totally Linux specific
>>> thing, there's no reason to represent them in the device tree unless
>>> they're in some way reusable and the "ab8500-codec" name suggests that's
>>> unlikely.  Just put the properties on the parent node and instantiate
>>> the MFD cell as normal.
>
>> We have all of the AB8500 devices into the Device Tree to accurately
>> represent the hardware. We will also be passing configuration
>> information into the AB8500 Codec from Device Tree. The only reason
>> we're still registering them using the MFD API is to overcome
>> addressing issues encountered earlier. Each 'device' still belongs
>> in the 'device' tree.
>
> The device here is the AB8500.  The fact that Linux chooses to represent
> it as an MFD with a particular set of subdrivers is a Linux specific
> decision and may well change over time.  For example it's likely that
> we'll want to migrate the clocks out of the audio driver and into the
> clock API when that becomes useful.  Similarly currently a lot of these
> devices use ASoC level jack detection but that's going to move over to
> extcon over time.
>
> There's no way you're going to be able to reuse this for anything that
> isn't an AB8500, there's no abstraction of the SoC integration here.  If
> you had clearly identifiable, repeatable IPs which you could reasonably
> bind to a different bit of silicon then that'd be different but there's
> nothing like that here.  We already know that the functionality covered
> by the driver is going to be present simply by virtue of knowing that
> there's an AB8500 and similarly there's no real way this driver could
> ever be used without the core driver.  All the "device" in the device
> tree is doing is serving as a container to place some of the DT
> properties into, this needs to be separated out from the instantiation
> of the Linux device driver.  There's nothing stopping the driver from
> looking at the OF node of its parent here.
>
> The goal here isn't just to copy the Linux device model and platform
> data into device tree bindings, the device tree bindings need to think
> about what the chip actually is so they can be reused by other OSs and
> by future versions of Linux.
>
>> If we were to take this Device Tree and use it on something
>> non-Linux, that OS will still need to know about each of the AB8500
>> devices and every associated configuration option. Only in Linux do
>> we continue to register them though a different API, which doesn't
>> affect any other OS.
>
> Another OS might have a different idea about how it's going to split up
> the chip which better fits with the models which that OS has for the
> functions present on the device.  The reason this is a distinct device
> in Linux is all to do with how Linux models the hardware.

Okay, so your suggestion is to strip out all of the sub-devices under 
the AB8500. It's doable, but will take some restructuring and thinking 
about. This is a job for another day. I think it's okay to continue with 
the current semantics for the time-being. The line we're discussing does 
need to be split out though. I didn't mean to merge it in with the ASoC 
stuff.

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

  reply	other threads:[~2012-07-26 15:19 UTC|newest]

Thread overview: 130+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-26 10:28 [PATCH 00/21] Some fixes and DT enablement for ux500 audio Lee Jones
2012-07-26 10:28 ` Lee Jones
2012-07-26 10:28 ` [PATCH 01/21] ARM: ux500: Remove unused snowball_of_platform_devs struct Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 10:28 ` [PATCH 02/21] MFD: db8500-prcmu: Ensure AB8500 platform data is passed through MFD Core Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 10:28 ` [PATCH 03/21] ARM: ux500: Clean-up MSP platform code Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 10:28 ` [PATCH 04/21] ASoC: ux500: Strengthen error checking after memory allocation Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 11:57   ` Mark Brown
2012-07-26 11:57     ` Mark Brown
2012-07-26 11:57     ` Mark Brown
2012-07-26 10:28 ` [PATCH 05/21] ASoC: ux500: Include the correct header files Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 11:58   ` Mark Brown
2012-07-26 11:58     ` Mark Brown
2012-07-26 11:58     ` Mark Brown
2012-07-26 10:28 ` [PATCH 06/21] ASoC: dapm: If one widget fails, do not force all subsequent widgets to fail too Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 11:54   ` Mark Brown
2012-07-26 11:54     ` Mark Brown
2012-07-26 11:54     ` Mark Brown
2012-07-26 10:28 ` [PATCH 07/21] ASoC: io: Prevent use of regmap if request fails Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 11:32   ` Mark Brown
2012-07-26 11:32     ` Mark Brown
2012-07-26 11:32     ` Mark Brown
2012-07-26 11:38     ` Lee Jones
2012-07-26 11:38       ` Lee Jones
2012-07-26 11:42       ` Mark Brown
2012-07-26 11:42         ` Mark Brown
2012-07-26 11:42         ` Mark Brown
2012-07-26 14:51         ` Lee Jones
2012-07-26 14:51           ` Lee Jones
2012-07-26 15:12           ` Mark Brown
2012-07-26 15:12             ` Mark Brown
2012-07-26 15:12             ` Mark Brown
2012-07-26 15:23             ` Lee Jones
2012-07-26 15:23               ` Lee Jones
2012-07-26 15:25               ` Mark Brown
2012-07-26 15:25                 ` Mark Brown
2012-07-26 15:25                 ` Mark Brown
2012-07-26 16:05                 ` Lee Jones
2012-07-26 16:05                   ` Lee Jones
2012-07-26 20:23                   ` Mark Brown
2012-07-26 20:23                     ` Mark Brown
2012-07-26 20:23                     ` Mark Brown
2012-07-26 10:28 ` [PATCH 08/21] ARM: ux500: Add AB8500 CODEC node to DB8500 Device Tree Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 10:28 ` [PATCH 09/21] ARM: ux500: Add MSP devices " Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 10:28 ` [PATCH 10/21] ARM: ux500: Add ux500 PCM " Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 10:28 ` [PATCH 11/21] ARM: ux500: Add all encompassing Sound node " Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 10:28 ` [PATCH 12/21] ARM: ux500: Fork MSP platform registration for step-by-step DT enablement Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 10:28 ` [PATCH 13/21] ARM: ux500: Ensure probing of Audio devices when Device Tree is enabled Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 10:28 ` [PATCH 14/21] ARM: ux500: Enable HIGHMEM on all mop500 platforms Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 10:28 ` [PATCH 15/21] ARM: ux500: Pass MSP DMA platform data though AUXDATA Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 10:28 ` [PATCH 16/21] ASoC: Ux500: Enable MOP500 driver for Device Tree Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 11:37   ` Mark Brown
2012-07-26 11:37     ` Mark Brown
2012-07-26 11:37     ` Mark Brown
2012-07-26 13:51     ` Lee Jones
2012-07-26 13:51       ` Lee Jones
2012-07-26 13:53       ` Mark Brown
2012-07-26 13:53         ` Mark Brown
2012-07-26 13:53         ` Mark Brown
2012-07-26 14:51         ` Lee Jones
2012-07-26 14:51           ` Lee Jones
2012-07-26 10:28 ` [PATCH 17/21] ASoC: Ux500: Enable ux500 PCM " Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 11:38   ` Mark Brown
2012-07-26 11:38     ` Mark Brown
2012-07-26 11:38     ` Mark Brown
2012-07-26 13:52     ` Lee Jones
2012-07-26 13:52       ` Lee Jones
2012-07-26 14:22       ` Mark Brown
2012-07-26 14:22         ` Mark Brown
2012-07-26 14:22         ` Mark Brown
2012-07-26 14:55         ` Lee Jones
2012-07-26 14:55           ` Lee Jones
2012-07-26 10:28 ` [PATCH 18/21] ASoC: Ux500: Move MSP pinctrl setup into the MSP driver Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 10:28 ` [PATCH 19/21] ASoC: Ux500: Enable ux500 MSP driver for Device Tree Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 11:45   ` Mark Brown
2012-07-26 11:45     ` Mark Brown
2012-07-26 11:45     ` Mark Brown
2012-07-26 10:28 ` [PATCH 20/21] ASoC: codecs: Enable AB8500 CODEC " Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 11:50   ` Mark Brown
2012-07-26 11:50     ` Mark Brown
2012-07-26 11:50     ` Mark Brown
2012-07-26 14:00     ` Lee Jones
2012-07-26 14:00       ` Lee Jones
2012-07-26 14:28       ` Mark Brown
2012-07-26 14:28         ` Mark Brown
2012-07-26 14:28         ` Mark Brown
2012-07-26 15:01         ` Lee Jones
2012-07-26 15:01           ` Lee Jones
2012-07-26 15:14           ` Mark Brown
2012-07-26 15:14             ` Mark Brown
2012-07-26 15:14             ` Mark Brown
2012-07-26 15:17             ` Lee Jones
2012-07-26 15:17               ` Lee Jones
2012-07-26 14:15     ` Lee Jones
2012-07-26 14:15       ` Lee Jones
2012-07-26 14:43       ` Mark Brown
2012-07-26 14:43         ` Mark Brown
2012-07-26 14:43         ` Mark Brown
2012-07-26 15:19         ` Lee Jones [this message]
2012-07-26 15:19           ` Lee Jones
2012-07-26 15:24           ` Mark Brown
2012-07-26 15:24             ` Mark Brown
2012-07-26 15:24             ` Mark Brown
2012-07-26 10:28 ` [PATCH 21/21] ARM: ux500: Rename MSP board file to something more meaningful Lee Jones
2012-07-26 10:28   ` Lee Jones
2012-07-26 11:28 ` [PATCH 00/21] Some fixes and DT enablement for ux500 audio Mark Brown
2012-07-26 11:28   ` Mark Brown
2012-07-26 11:28   ` Mark Brown
2012-07-26 11:36   ` Lee Jones
2012-07-26 11:36     ` Lee Jones

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=50116005.6050008@linaro.org \
    --to=lee.jones@linaro.org \
    --cc=STEricsson_nomadik_linux@list.st.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=arnd@arndb.de \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=linus.walleij@stericsson.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lrg@ti.com \
    --cc=ola.o.lilja@stericsson.com \
    --cc=olalilja@yahoo.se \
    --cc=sameo@linux.intel.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.