[alsa-devel] ASoC legacy i2c client driver probing issue
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.
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?
Rgds Rajeev
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@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
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()).
Feng
-----Original Message----- From: rajeev [mailto:rajeev-dlh.kumar@st.com] Sent: Tuesday, May 03, 2011 9:56 PM To: Feng Ye Cc: alsa-devel@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?
Rgds Rajeev
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@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
On Wed, May 04, 2011 at 10:25:41AM +0530, rajeev wrote:
On 5/2/2011 11:48 PM, Feng Ye wrote:
Please always CC maintainers on mails, and fix your MUA to word wrap within paragraphs so your mails are legible. I've reflowed your text.
I use kernel version 2.6.27, and wm8750 external codec. The wm8750.c
Version 2.6.27 is extremely old, none of these issues exist in current kernels.
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.
With these very old kernels you shouldn't do this. With modern kernels you can register the I2C devices normally.
participants (3)
-
Feng Ye
-
Mark Brown
-
rajeev