Linux kernel Linux模块与平台数据不正确匹配

Linux kernel Linux模块与平台数据不正确匹配,linux-kernel,linux-device-driver,embedded-linux,Linux Kernel,Linux Device Driver,Embedded Linux,我很难让pca955x模块与我的pca9552芯片正常工作。该模块从未实际运行过探测功能 我的平台数据 struct led_platform_data pca552_data = { .num_leds = 7, }; static struct i2c_board_info mxc_i2c1_board_info[] __initdata = { { I2C_BOARD_INFO("leds-pca955x", 0x61), .p

我很难让pca955x模块与我的pca9552芯片正常工作。该模块从未实际运行过探测功能

我的平台数据

struct led_platform_data pca552_data = {
     .num_leds = 7,
};

static struct i2c_board_info mxc_i2c1_board_info[] __initdata = {
     {
          I2C_BOARD_INFO("leds-pca955x", 0x61),
          .platform_data = &pca552_data,
     },
}
打电话给我

i2c_register_board_info(1, mxc_i2c1_board_info,
        ARRAY_SIZE(mxc_i2c1_board_info));
模块数据

static struct i2c_driver pca955x_driver = {
    .driver = {
        .name   = "leds-pca955x",
        .owner  = THIS_MODULE,
    },
    .probe  = pca955x_probe,
    .remove = __devexit_p(pca955x_remove),
    .id_table = pca955x_id,
};
我在内核中构建了模块。我知道那里有一个设备,因为我可以使用i2c工具拨动/读取和切换LED。但是linux在找到设备时没有初始化驱动程序


据我所知,驱动程序名称应与board info中的平台数据名称相匹配。我有一个键盘驱动程序,它与mxc_i2c1_board_信息相同,工作正常。

如果您试图将驱动程序的名称用作设备id,则支持的id在驱动程序的
.id_表中给出,在您的情况下:

static const struct i2c_device_id pca955x_id[] = {
    { "pca9550", pca9550 },
    { "pca9551", pca9551 },
    { "pca9552", pca9552 },
    { "pca9553", pca9553 },
    { }
};
因此,在您的情况下,更新您的董事会信息如下:

static struct i2c_board_info mxc_i2c1_board_info[] __initdata = {
     {
          I2C_BOARD_INFO("pca9552", 0x61),
          .platform_data = &pca552_data,
     },
}
应该会导致驱动程序探测设备。

我应该将ID放在哪里,但实际上ID上没有任何内容作为电路板信息的一部分