[alsa-devel] ASoC - Support for multiple components
Timur Tabi
timur at freescale.com
Thu Apr 22 00:13:00 CEST 2010
On Wed, Apr 21, 2010 at 4:07 PM, Timur Tabi <timur at freescale.com> wrote:
> Cirrus Logic CS4270 ALSA SoC Codec Driver
> cs4270 0-004f: found device at i2c address 4F
> cs4270 0-004f: hardware revision 3
> cs4270 0-004f: codec register CS4270 79
> cs4270 0-004f: dai register cs4270 0
> Registered DAI 'cs4270.0'
> Registered codec 'CS4270.79'
> ...
>
> soc-audio soc-audio: CODEC CS4270 not registered
>
> Does this mean that my fabric driver should be looking for "CS4270.79"
> instead of just "CS4270"?
Ok, I figured out the solution. I need to add this to mpc8610_hpcd_probe():
+ iprop = of_get_property(codec_np, "reg", NULL);
+ if (!iprop) {
+ dev_err(&ofdev->dev, "codec node is missing 'reg' property\n");
+ goto error;
+ }
+ machine_data->dai.codec_id = *iprop;
So I have another question. Currently, I need to do this:
machine_data->dai.codec_dai_drv = &cs4270_dai; /* The codec_dai we want */
In other words, I still need to have a global variable in my codec
driver called "cs4270_dai" that the fabric driver has to access. This
is a real problem because it means that my fabric driver has to be
hard-coded with the information on the codec that's attached to the
SSI. However, I already have that information in the device tree, I
can extract all the information I need from the device tree. If I can
get rid of the assignment of "cs4270_dai", I can make my machine
driver completely codec-independent.
--
Timur Tabi
Linux kernel developer at Freescale
More information about the Alsa-devel
mailing list