当前位置: 代码迷 >> 驱动开发 >> 音频驱动,ALSA解决办法
  详细解决方案

音频驱动,ALSA解决办法

热度:310   发布时间:2016-04-28 10:02:28.0
音频驱动,ALSA
注册函数snd_soc_register_codec 中的 第二个参数 snd_soc_codec_driver 的probe 没有被探测到,请问各位遇到过吗?我用的是LINUX 3.10内核,没有板级文件,都是dtb文件。IC是RLC5616。

static struct snd_soc_codec_driver soc_codec_dev_rt5616 = {
.probe = rt5616_probe,
.remove = rt5616_remove,
.suspend = rt5616_suspend,
.resume = rt5616_resume,
.set_bias_level = rt5616_set_bias_level,
.reg_cache_size = RT5616_DEVICE_ID + 1,
.reg_word_size = sizeof(u16),
.reg_cache_default = rt5616_reg,
.volatile_register = rt5616_volatile_register,
.readable_register = rt5616_readable_register,
.reg_cache_step = 1,
};
static int __devinit rt5616_i2c_probe(struct i2c_client *i2c,
    const struct i2c_device_id *id)
{
struct rt5616_priv *rt5616;
int ret;
printk("enter %s\n",__func__);

rt5616 = kzalloc(sizeof(struct rt5616_priv), GFP_KERNEL);
if (NULL == rt5616)
return -ENOMEM;

i2c_set_clientdata(i2c, rt5616);

ret = snd_soc_register_codec(&i2c->dev, &soc_codec_dev_rt5616,
rt5616_dai, ARRAY_SIZE(rt5616_dai));
if (ret < 0)
kfree(rt5616);

return ret;
}
------解决思路----------------------
到设备树里注册这个codec的设备   名字和驱动匹配上就能触发了
  相关解决方案