gpio子系统和pinctrl子系统(一)
发布日期:2021-07-01 01:01:26 浏览次数:2 分类:技术文章

本文共 691 字,大约阅读时间需要 2 分钟。

前言

 

  随着内核的发展,linux驱动框架在不断的变化。很早很早以前,出现了gpio子系统,后来又出现了pinctrl子系统。在网上很难看到一篇讲解这类子系统的文章。就拿gpio操作来说吧,很多时候都是简单的调用gpio子系统提供的api,然后根据sdk说明文档写明的gpio号传参数,至于里面的工作过程对于驱动工程师而言就像个黑盒子。当我们自己设计的板子和demo板有很大变动时,问题就出现了。首先遇到的是怎么配置pin(是基于设备树还是不基于设备树,基于设备树的话,怎么修改设备树关于pinctrl部分的内容,里面各个字段什么意思,怎么改),然后是在哪里配置pin(内核部分有哪些需要相应修改,还是不需要一点修改呢),接着就是怎么调试等等。我想只有清楚了尽量多的gpio子系统和pinctrl子系统细节,才会更快更好的完成这些工作。有些平台的实现没有使用内核提供的pinctrl子系统,而是继续采用在内核提供pinctrl子系统前自己实现的那套机制来pinmux操作,如omap,有些平台则基于pinctrl子系统来实现pinmux、pinconf的控制。本文以gpio子系统为入口慢慢深入,最后分析pinctrl子系统。

如果有错误的地方,欢迎大家直接指出

gpio子系统

  gpio子系统帮助我们管理整个系统gpio的使用情况,同时通过sys文件系统导出了调试信息和应用层控制接口。它内部实现主要提供了两类接口,一类给bsp工程师,用于注册gpio chip(也就是所谓的gpio控制器驱动),另一部分给驱动工程师使用,为驱动工程师屏蔽了不同gpio chip之间的区别

转载地址:https://mao0514.blog.csdn.net/article/details/115508560 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:devres in linux driver
下一篇:devm_gpio_request_one申请gpio失败,错误代码

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月17日 20时40分48秒