紧随其后, snd_soc_platform_driver结构的ops->hw_params回调利用api: snd_soc_dai_get_dma_data获得这些dai的dma信息,其中就包括了dma的目的地址信息。这些dma信息通常还会被保存在substream->runtime->private_data中,以便在substream的整个生命周期中可以随时获得这些信息,从而完成对dma的配置和操作 dma ...
snd_soc_device结构引出了snd_soc_card和soc_codec_device两个结构,然后snd_soc_card又引出了snd_soc_platform、snd_soc_dai_link和snd_soc_codec结构。如上所述,ASoC被划分为Machine、Platform和Codec三大部分,如果从这些数据结构看来,snd_codec_device和snd_soc_card代表着Machine驱动,snd_soc_platform则代表着Pla...
snd_soc_dai_set_fmt() 实际上会调用snd_soc_dai_ops或者codec driver中的set_fmt回调; snd_soc_dai_set_pll() 实际上会调用snd_soc_dai_ops或者codec driver中的set_pll回调; snd_soc_dai_set_sysclk() 实际上会调用snd_soc_dai_ops或者codec driver中的set_sysclk回调; snd_soc_dai_set_clkdiv()...
snd_soc_write(es8323_codec, reg, val); printk("%s(): set 0x%04x=0x%04x\n", __FUNCTION__, reg, val); } else printk("%s(): Bad string format input!\n", __FUNCTION__); } else printk("%s(): Bad string format input!\n", __FUNCTION__); return _count; } 1. 2. 3. 4....
write = snd_soc_codec_drv_write; if (codec_drv->read) codec->component.read = snd_soc_codec_drv_read; codec->component.ignore_pmdown_time = codec_drv->ignore_pmdown_time; codec->dapm.idle_bias_off = codec_drv->idle_bias_off; codec->dapm.suspend_bias_off = codec_drv->suspend_...
紧随其后, snd_soc_platform_driver结构的ops->hw_params回调利用api: snd_soc_dai_get_dma_data获得这些dai的dma信息,其中就包括了dma的目的地址信息。这些dma信息通常还会被保存在substream->runtime->private_data中,以便在substream的整个生命周期中可以随时获得这些信息,从而完成对dma的配置和操作...
在声卡的hw_params阶段, snd_soc_platform_driver结构的ops->hw_params会被调用,在该回调用,通常会使用api: snd_pcm_set_runtime_buffer()把substream->dma_buffer的数值拷贝到substream->runtime的相关字段中( .dma_area, .dma_addr, .dma_bytes),这样以后就可以通过substream->runtime获得这些地址和大小信...
在platform_driver的probe回调中利用ASoC的API:snd_soc_register_platform()注册上面定义的实例; 实现snd_soc_platform_driver中的各个回调函数; 以kernel3.3中的/sound/soc/samsung/dma.c为例: staticstructsnd_soc_platform_driver samsung_asoc_platform = { ...
Codec 层主要结构体包括 snd_soc_codec、snd_soc_codec_driver、snd_soc_dai、snd_soc_dai_driver snd_soc_codec 代表一个 Codec 设备, 其主要字段如下: struct snd_soc_codec { struct device *dev; /* 指向 Codec 设备的指针 */ const struct snd_soc_codec_driver *driver; /* 该 Codec 对应的驱动...
The structure snd_soc_dai_link, in ASoC core, defines a link that connects two DAIs from different modules. Such a link is called a DAI link. A given machine driver can have one or more of DAI links, which are connected at runtime to form an audio path. In brief, the ASoC m...