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).