tvp5158 音频驱动,在内核2.6.32-rt版本上移值后,启动找不到
ALSA device list:
No soundcards found.
我移植的是DM365_DVR_DVSDK3_00.02.00.00下的tvp5158_audio.c
然后修改个人内核代码如下
davinci-evm.c文件中
#ifdef CONFIG_SND_SOC_TVP5158AUDIO
static struct snd_soc_dai_link dm6467_evm_dai_tvp5158[] = {
{
.name = "tvp5158_audio",
.stream_name = "tvp5158",
.cpu_dai = &davinci_mcasp_dai[DAVINCI_MCASP_TVP5158_DAI],
.codec_dai = &tvp5158_audio_dai,
.init = evm_tvp5158_init,
.ops = &evm_ops,
},
};
#endif
/* davinci dm6467 evm audio machine driver TVP */
#ifdef CONFIG_SND_SOC_TVP5158AUDIO
static struct snd_soc_card dm6467_snd_soc_card_evm_tvp5158 = {
.name = "DaVinci DM6467 EVM",
.platform = &davinci_soc_platform,
.dai_link = dm6467_evm_dai_tvp5158,
.num_links = ARRAY_SIZE(dm6467_evm_dai_tvp5158),
};
#endif
/* evm audio subsystem with tvp5158 */
#ifdef CONFIG_SND_SOC_TVP5158AUDIO
static struct snd_soc_device dm6467_evm_tvp5158_snd_devdata = {
.card = &dm6467_snd_soc_card_evm_tvp5158,
.codec_dev = &soc_codec_dev_tvp5158_audio,
};
#endif
static struct platform_device *evm_snd_device, *evm_snd_device_tvp5158;
static int __init evm_init(void)
{
struct snd_soc_device *evm_snd_dev_data, *evm_snd_dev_data_tvp5158;
int index;
int ret;
..
..
/* platform data for tvp5158-audio-codec driver */
#ifdef CONFIG_SND_SOC_TVP5158AUDIO
evm_snd_device_tvp5158 = platform_device_alloc("soc-audio-tvp5158", index);
if (!evm_snd_device_tvp5158)
return -ENOMEM;
platform_set_drvdata(evm_snd_device_tvp5158, evm_snd_dev_data_tvp5158);
evm_snd_dev_data_tvp5158->dev = &evm_snd_device_tvp5158->dev;
ret = platform_device_add(evm_snd_device_tvp5158);
if (ret)
{
platform_device_put(evm_snd_device_tvp5158);
}
#endif
.....
}
在davinci_mcasp.c中增加
struct snd_soc_dai davinci_mcasp_dai[] = {
{
.name = "davinci-i2s",
.id = 0,
.playback = {
.channels_min = 2,
.channels_max = 2,
.rates = DAVINCI_MCASP_RATES,
.formats = SNDRV_PCM_FMTBIT_S8 |
SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S32_LE,
},
.capture = {
.channels_min = 2,
.channels_max = 8,
.rates = DAVINCI_MCASP_RATES,
.formats = SNDRV_PCM_FMTBIT_S8 |
SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S32_LE,
},
.ops = &davinci_mcasp_dai_ops,
},
{
.name = "davinci-dit",
.id = 1,
.playback = {
.channels_min = 2,
.channels_max = 384,
.rates = DAVINCI_MCASP_RATES,
.formats = SNDRV_PCM_FMTBIT_S16_LE,
},
.ops = &davinci_mcasp_dai_ops,
},
{
.name = "davinci-tvp5158",
.id = 2,
.capture = {
.channels_min = 2,
.channels_max = 8,
.rates = DAVINCI_MCASP_RATES,
.formats = SNDRV_PCM_FMTBIT_S16_LE,
},
.ops = &davinci_mcasp_dai_ops,
},
};
EXPORT_SYMBOL_GPL(davinci_mcasp_dai);
其中