Linux设备树设备节点compatible属性和驱动compatible(驱动加载)
2017-01-12 09:33
218 查看
Linux设备树设备节点compatible属性和驱动compatible(驱动加载)
比如按键驱动kernel\drivers\input\keyboard\gpio_keys.c下按键驱动的定义
static struct of_device_idgpio_keys_of_match[] = {
{.compatible = "gpio-keys", },
{},
};
static struct platform_drivergpio_keys_device_driver = {
.probe = gpio_keys_probe,
.remove = gpio_keys_remove,
.driver = {
.name ="gpio-keys",
.owner = THIS_MODULE,
.pm = &gpio_keys_pm_ops,
.of_match_table= of_match_ptr(gpio_keys_of_match),
}
};
static int __init gpio_keys_init(void)
{
returnplatform_driver_register(&gpio_keys_device_driver);
}
late_initcall(gpio_keys_init);
这里按驱动name为gpio-keys,设备树按键这个设备节点名字也要是一样的
&soc {
gpio_keys{
compatible = "gpio-keys";
input-name= "gpio-keys";
pinctrl-names= "tlmm_gpio_key_active","tlmm_gpio_key_suspend";
pinctrl-0= <&gpio_key_active>;
pinctrl-1= <&gpio_key_suspend>;
vol_up{
label= "volume_up";
gpios= <&msm_gpio 90 0x1>;
linux,input-type= <1>;
linux,code= <115>;
gpio-key,wakeup;
debounce-interval= <15>;
};
};
};
在linux内核启动过程中,这两个名字匹配了,就调用驱动的probe函数。
设备树中的每一个代表了一个设备的节点都要有一个compatible属性。compatible是系统用来决定绑定到设备的设备驱动的关键。compatible属性是用来查找节点的方法之一,另外还可以通过节点名或节点路径查找指定节点。
系统初始化时会初始化platform总线上的设备(按键驱动表现为Platform驱动),根据设备节点"compatible"属性和驱动中of_match_table对应的值,匹配了就加载对应的驱动
比如按键驱动kernel\drivers\input\keyboard\gpio_keys.c下按键驱动的定义
static struct of_device_idgpio_keys_of_match[] = {
{.compatible = "gpio-keys", },
{},
};
static struct platform_drivergpio_keys_device_driver = {
.probe = gpio_keys_probe,
.remove = gpio_keys_remove,
.driver = {
.name ="gpio-keys",
.owner = THIS_MODULE,
.pm = &gpio_keys_pm_ops,
.of_match_table= of_match_ptr(gpio_keys_of_match),
}
};
static int __init gpio_keys_init(void)
{
returnplatform_driver_register(&gpio_keys_device_driver);
}
late_initcall(gpio_keys_init);
这里按驱动name为gpio-keys,设备树按键这个设备节点名字也要是一样的
&soc {
gpio_keys{
compatible = "gpio-keys";
input-name= "gpio-keys";
pinctrl-names= "tlmm_gpio_key_active","tlmm_gpio_key_suspend";
pinctrl-0= <&gpio_key_active>;
pinctrl-1= <&gpio_key_suspend>;
vol_up{
label= "volume_up";
gpios= <&msm_gpio 90 0x1>;
linux,input-type= <1>;
linux,code= <115>;
gpio-key,wakeup;
debounce-interval= <15>;
};
};
};
在linux内核启动过程中,这两个名字匹配了,就调用驱动的probe函数。
设备树中的每一个代表了一个设备的节点都要有一个compatible属性。compatible是系统用来决定绑定到设备的设备驱动的关键。compatible属性是用来查找节点的方法之一,另外还可以通过节点名或节点路径查找指定节点。
系统初始化时会初始化platform总线上的设备(按键驱动表现为Platform驱动),根据设备节点"compatible"属性和驱动中of_match_table对应的值,匹配了就加载对应的驱动
相关文章推荐
- 编写嵌入式linux驱动时,如何才能自动加载设备并生成节点
- gendisk,request与bio结构体;以及块设备驱动注册与注销,以及加载与卸载
- gendisk,request与bio结构体,以及块设备驱动注册与注销,以及加载与卸载
- Linux驱动编程 step-by-step (四) 字符设备的注册与设备节点的自动创建
- Linux 设备和驱动加载的先后顺序 2
- Linux字符驱动中动态分配设备号与动态生成设备节点
- [OpenSolaris][kernel]Solaris内核加载设备驱动过程
- Linux 设备和驱动加载的先后顺序 .
- linux设备和驱动加载的先后顺序
- linux字符设备驱动 自动创建设备节点的的方法
- Linux字符驱动中动态分配设备号与动态生成设备节点
- WinCE 存储设备驱动加载_接口调用过程
- android 字符设备驱动模块及在 /dev 下自动创建设备节点问题
- 如何修改设备驱动的加载顺序
- EXT关于树节点的children属性加载的问题
- linux设备和驱动加载的先后顺序
- WinCE 存储设备驱动加载_接口调用过程
- Linux字符设备驱动-globalmem驱动编译加载遇到的问题及解决办法
- 即插即用型设备驱动的加载过程
- 浅谈设备、驱动的加载和匹配