On Wed, Apr 21, 2010 at 4:07 PM, Timur Tabi timur@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.