[alsa-devel] codec->card removed

Lars-Peter Clausen lars at metafoo.de
Fri Sep 26 21:25:10 CEST 2014


On 09/26/2014 09:19 PM, jonsmirl at gmail.com wrote:
> How should I rewrite this to reflect that codec->card has been removed?

> This is codec is on the SOC chip, not an external one.
>
> static int sunxi_codec_trigger(struct snd_pcm_substream *substream, int
> cmd, struct snd_soc_dai *dai) {
> struct snd_soc_pcm_runtime *rtd = substream->private_data;
> struct snd_soc_dai *codec_dai = rtd->codec_dai;
> struct snd_soc_codec *codec = codec_dai->codec;
> struct snd_soc_card *card = codec->card;
> struct sunxi_priv *priv = snd_soc_card_get_drvdata(card);


It was moved to the component sub-structure in the CODEC struct. So

codec->component.card

But you really shouldn't access the card from the CODEC driver, that is a 
layering violation.

Similarly accessing rtd->codec_dai from the CODEC driver is not correct, 
since codec_dai may not necessarily point to the CODEC DAI of your CODEC. 
(E.g. for multi-codec links or codec-to-codec links).

- Lars



More information about the Alsa-devel mailing list