[alsa-devel] [PATCH] ASoC: Convert wm8731 to a new-style i2c driver (testers wanted)

Jean Delvare khali at linux-fr.org
Thu Aug 28 19:37:54 CEST 2008

Hi Manuel,

On Thu, 28 Aug 2008 19:25:40 +0200, Manuel Lauss wrote:
> Hi Mark,
> On Tue, Aug 26, 2008 at 08:37:28PM +0100, Mark Brown wrote:
> > On Tue, Aug 26, 2008 at 09:20:43PM +0200, Manuel Lauss wrote:
> > 
> > > I don't know about other wm8731 users, but I'd prefer to let the board
> > > code register the codec i2c device.  Then you could also get rid
> > > of "struct wm8731_setup_data" altogether.
> > 
> > Yes, that would have been the ideal thing with the old I2C API too IIRC.
> > Unfortunately ASoC v1 requires that all the devices comprising the ASoC
> > system be registered in one fell swoop.  Once enough of v2 has been
> > merged to allow the codec drivers to register their DAIs independantly
> > of everything else the codecs can be instantiated from wherever the
> > platform feels like doing it.
> I modified Jean's newest patch a bit to just register the i2c driver and
> leave the actual device registration to the board code.  It works as
> intended!

Great, thanks for testing this. Could you please post an incremental
patch going on top of mine? So that I see what it looks like and also
so that both patches can be pushed upstream.

> The only difference is that udev loads the wm8731 module at boot
> but that is expected due to the set owner field in struct i2c_driver;

What makes the wm8731 driver load at boot is the module alias that is
now exported by the wm8731 module ("i2c:wm8731"). When you create the
wm8731 I2C device from your platform code, udev and the surrounding
scripts notice it and basically call "modprobe i2c:wm8731".

This is one of the various benefits of the new i2c device driver
binding model.

> after loading the platform sound module all is working well.
> (tried with asoc all-modular and all-builtin).

Jean Delvare

More information about the Alsa-devel mailing list