基于Linux 3.10.49内核的gpio步骤分析
发布时间:2021-12-07 16:07:30 所属栏目:教程 来源:互联网
导读:Linux kernel 3.10.49+ 在这里, 我们说说linux 是怎么通过platform_driver驱动代码匹配到platform_device的. static const struct of_device_id ***_gpio_of_match[] = { { .compatible = ******,***-gpio, }, // 这个字符串就是dts里的compatible字符串 {}
// 加入到list_add_tail(&p->node, &pinctrl_list); // 每一个驱动注册时, alloc的struct pinctrl都会加入到全局变量pinctrl_list列表中. if (IS_ERR(dev->pins->p)) { dev_dbg(dev, "no pinctrl handlen"); ret = PTR_ERR(dev->pins->p); goto cleanup_alloc; } dev->pins->default_state = pinctrl_lookup_state(dev->pins->p, PINCTRL_STATE_DEFAULT); // gpio是没有state, 一般只有pinctrl-0的dts节点设备才存在. if (IS_ERR(dev->pins->default_state)) { dev_dbg(dev, "no default pinctrl staten"); /* printk(">>>>>>>>>>>>>>>>>>>>>>>>>>>> dev_name(dev) = %sn", dev_name(dev)); */ ret = 0; goto cleanup_get; // 没有state, ret = 0; 直接goto cleanup_get; } 8-2-2-2-1. drivers/base/platform.c : platform_drv_probe(...) ... ret = drv->probe(dev); // struct platform_driver ***_gpio_driver的probe函数.也就是***_gpio_probe, 最终目的来到这里.可以自定义写代码了. ... ![]() (编辑:宿州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐