Linux设备树设备节点compatible属性和驱动compatible(驱动加载)

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对应的值,匹配了就加载对应的驱动

原文链接:https://blog.csdn.net/chenmiaowu88/article/details/54375069

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值