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的主要内容,如果未能解决你的问题,请参考以下文章