注册函数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的设备 名字和驱动匹配上就能触发了