[alsa-devel] ASoC legacy i2c client driver probing issue

Feng Ye fye at broadcom.com
Wed May 4 07:52:36 CEST 2011

I didn't call i2c_attach_client(), it's called from i2c_add_numbered_adapter().

I think the problem is in I2C side: i2c_add_numbered_adapter() is a new interface while attach_adapter() is legacy interface, these two can not work together.
I am trying to port the kernel to newer version so the drivers in sound/soc/codecs uses the new interface (probe()).


-----Original Message-----
From: rajeev [mailto:rajeev-dlh.kumar at st.com] 
Sent: Tuesday, May 03, 2011 9:56 PM
To: Feng Ye
Cc: alsa-devel at alsa-project.org
Subject: Re: [alsa-devel] ASoC legacy i2c client driver probing issue

Hi Freg

On 5/2/2011 11:48 PM, Feng Ye wrote:
> Hello,
> I have a legacy i2c client driver probing issue.
> I use kernel version 2.6.27, and wm8750 external codec. The wm8750.c in sound/soc/codecs has a legacy i2c interface (e.g. use attach_adapter() callback). The callback just calls to i2c_probe(). Inside i2c_probe() it checks if the i2c address already been used, and fails there.
> In our i2c bus driver, we used i2c_register_board_info() with a static i2c_board_info structure. And then i2c_add_numbered_adapter() is called.

>>From code trace, it eventually calls i2c_attach_client(). So I think the probe function will for sure to fail.
How does these two related ? You are calling  i2c_attach_client() then why your probe function will fail.
In fact it will never called. 

> I wonder how this would work? How can i2c_probe() succeed if it checks for address in use?
If it is not called then how can you decide whether it succeeded or not?

> This question is more related to i2c instead of alsa soc. I am sure the SoC part is good, the i2c address is passed to wm8750 through snd_soc_codec_device.
> Thanks,
> Feng
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

More information about the Alsa-devel mailing list