繁体   English   中英

声音/ soc /编解码器i2c驱动程序无法探测

[英]sound/soc/codec i2c driver won't probe

我正在用sound/soc/codecs编写音频编sound/soc/codecs 它会编译并调用init函数,但不会调用probe()函数。 我尝试了这样的问题建议,但没有成功。

我还尝试了切换到sgtl5000.c编解码器,并将其包含在我的I2C_BOARD_INFO的I2C_BOARD_INFO中,只是为了查看能否调用probe()函数。

static struct i2c_board_info mxc_i2c0_board_info[] __initdata = {
    {
            I2C_BOARD_INFO("sgtl5000", 0x14),
    },
};

static const struct i2c_device_id sgtl5000_id[] = {
    {"sgtl5000", 0},
    {},
};

MODULE_DEVICE_TABLE(i2c, sgtl5000_id);

static struct i2c_driver sgtl5000_i2c_driver = {
    .driver = {
               .name = "sgtl5000",
               .owner = THIS_MODULE,
               },
    .probe = sgtl5000_i2c_probe,
    .remove = __devexit_p(sgtl5000_i2c_remove),
    .id_table = sgtl5000_id,
};

我怎样才能解决这个问题?

您是否要在您的电路板文件中使用“ i2c_register_board_info”之类的东西来注册i2c_device。(我无法直接对此问题发表评论,因为它需要50个声望才能拥有该特权,所以我唯一的选择就是回答这个问题以分享我的观点)。

找到了问题。 我正在使用'sabresd'boardfile。 从该代码段mx6_sabresd_board_init被重写的第一个元素mxc_i2c0_board_info

if (board_is_mx6_reva()) {
            strcpy(mxc_i2c0_board_info[0].type, "wm8958");
            mxc_i2c0_board_info[0].platform_data = &wm8958_config_data;
    } else {
            strcpy(mxc_i2c0_board_info[0].type, "wm8962");
            mxc_i2c0_board_info[0].platform_data = &wm8962_config_data;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM