MODULE_DEVICE_TABLE

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MODULE_DEVICE_TABLE相关的知识,希望对你有一定的参考价值。

参考技术A 这个函数的主要功能是 注册设备表

主要有以下几种类型

将其中用到的设备表注册到内核,虽然不注册也可以工作,但是注册可以将我们表加入到相关文件中,便于内核管理设备。

MODULE_DEVICE_TABLE(类型, ID表);

设备树ID表

类型:of

C写的platform_device的ID表

类型:platform

C写的i2c设备的ID表

类型:i2c

C写的USB设备的ID表

类型:usb

以我目前遇到一个I2C实例说下比较清晰点

1、注册设备表,说明支持的类型

static const struct i2c_device_id kxcjk1013_id[] =

"kxcjk1013", KXCJK1013,

"kxcj91008", KXCJ91008,

"kxtj21009", KXTJ21009,



;

MODULE_DEVICE_TABLE(i2c, kxcjk1013_id);

2、假如我在dts中定义支持设备为 第二组  "kxcj91008", KXCJ91008,

DTS 参数如下

kxcj9@1e

status = "disabled";

compatible = "kionix,kxcj91008";

reg = <0x1e>;

interrupts = <0 65 1>;

interrupt-names = "kxcj_irq";

irq_type = "GPIO_IRQ_RISING";

kxcj9,irq-gpio = <&gpio GPIODV_6  GPIO_ACTIVE_HIGH>;

;

3、那么在设备probe的时候可以获取到对应的设备 Name 和 ID

static int kxcjk1013_probe(struct i2c_client *client,

                          const struct i2c_device_id *id)

....

if (id)

data->chipset = (enum kx_chipset)(id->driver_data);

name = id->name;

dev_info(&client->dev, "name:%s id:%d\n", name, data->chipset);



....

以上是关于MODULE_DEVICE_TABLE的主要内容,如果未能解决你的问题,请参考以下文章