加入收藏 | 设为首页 | 会员中心 | 我要投稿 宿州站长网 (https://www.0557zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

基于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, 最终目的来到这里.可以自定义写代码了.
    ...

(编辑:宿州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章