设备树 之pinctrl[通俗易懂]

设备树 之pinctrl[通俗易懂]三个重要概念bank:gpa0,gpa1,gpa31等group:以功能划分,比如uart的tx和rxstate:设备的某种状态,比如”default”,”idle”,”sleep”,也可以是其他自定义的状态,比如串口的“flow_ctrl”状态例如:bank:&pinctrl_0{/**pinb…

大家好,又见面了,我是你们的朋友全栈君。

三个重要概念

 

bank :

gpa0, gpa1, gpa31等

group:

以功能划分,比如uart的tx和rx

state:

设备的某种状态,比如”default”, “idle”,”sleep”,也可以是其他自定义的状态, 比如串口的“flow_ctrl”状态

 

 

例如:

bank:

&pinctrl_0 {
    
  /*
  * pin banks
  */  
  
  /*
  * flags : 0 active high, 1 active low
  */
  gpa :gpa {      
    gpio-controller;          // 必须的属性,表示bank
    #gpio-cells = <2>;        // [pin_number, flags],用于识别引脚
  };
};

group:pin-ctrl的子节点

uart0_data : uart0_data {
  samsung,pins = "gph-0","gph-1";      // 表示哪几个引脚
  samsung,pin-function = <2>;          // 查看手册,服用功能时reg里面的值,对于uart,gphcon对应gph0,   gph1 =2时表示串口, =0时表示输入
};

state:

uart0_data : uart0_data {
  samsung,pins = "gph-0","gph-1";      // 表示哪几个引脚
  
  /*
  * 在GPHCON寄存器里面, GPH0,GPH1可以设置:
  * 0 ---输入功能
  * 1 ---输出功能
  * 2 ---串口功能
  */
  samsung,pin-function = <2>;         
};

uart0_sleep : uart0_sleep {
  samsung,pins = "gph-0","gph-1";      // 表示哪几个引脚
   /*
  * 在GPHCON寄存器里面, GPH0,GPH1可以设置:
  * 0 ---输入功能
  * 1 ---输出功能
  * 2 ---串口功能
  */
  samsung,pin-function = <0>;          
};

以上定义了两个group

 

serial@50000000 {
    
  ...
  pinctrl-names = "default","sleep";        # 既是名字,也是state
  pinctrl-0 = <&uart0_data>;
  pinctrl-1 = <&uart0_sleep>;
};

pinctrl-names定义了两种state : default 和 sleep

default : 对应的引脚是pinctrl-0 ,他指定了group是uart0_data

sleep : 对应的引脚是pinctrl-1,他指定的group是uart0_sleep

 

内核里面pinctrl的使用

  1. platform_device,platform_driver匹配时,最终调用了really_probe

  2. really_probe
    	pinctrl_bind_pins	
    		pinctrl_lookup_state #获取default状态的pinctrl
    		pinctrl_select_state

     

  3. 手动获取状态的api:

    devm_pinctrl_get_select_default 使用default状态的引脚
    pinctrl_get_select 根据name选取某种状态的引脚
    pinctrl_put 不再使用退出时调用
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150468.html原文链接:https://javaforall.net

(1)
上一篇 2022年6月18日 上午7:46
下一篇 2022年6月18日 上午8:00


相关推荐

  • MockMvc详解

    MockMvc详解nbsp nbsp MockMvc nbsp SpringMVC 单元测试的独立测试 一 简介为何使用 MockMvc nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 对模块进行集成测试时 希望能够通过输入 URL 对 Controller 进行测试 如果通过启动服务器 建立 httpclient 进行测试 这样会使得测试变得很麻烦 比如 启动速度慢 测试验证不方便 依赖网络环境等 所以为了可以对 Controller 进行测试 我们引入了 MockMVC nbsp

    2026年3月19日
    2
  • 微信小程序如何连接mysql数据库_微信小程序数据库设计

    微信小程序如何连接mysql数据库_微信小程序数据库设计刚开始学习小程序,做毕业设计,不过一直都被一个问题困扰,就是连接数据库实现数据的同步。通过其他几篇文章总结出来的成果,记录分享一下,欢迎批评指正!1.定义好数据库连接文件名connect.php在activity.php文件调用定义好的数据库连接其返回值是一个包含结果集中所有数据的二维数组。小程序的index.js这里可以在wx.request方法里面通过data进行传参,把不…

    2025年12月14日
    6
  • ubuntu安装go语言调试器dlv

    ubuntu安装go语言调试器dlv简言 1 网上 ubuntu 安装 dlv 的教程大多出自同一篇博客 使用的版本比较老 需要修改 go mod 才能编译 略麻烦 2 其实新版本的 dlv 已经修复这个问题 下载后直接编译即可成功 3 这篇博客使用新版的 dlv 为例 贴出每一步操作 顺便鄙视一下那些无脑转发博客的人步骤 1 打开网站 https github com derekparker delve2 在网页上点击下载源代码 如下图 3 下载后得到 delve master zip 传到 ubuntu 环境下 并解

    2026年3月16日
    1
  • 在html中使用fontIcon 的图标

    在html中使用fontIcon 的图标听说fontIcon显现图形比img要高。 然后它是以矢量图的相似呈现,放大不会失真。 在今天开发中发现,公司有人使用了这项技术。。所以也就花时间学习了一下。。在学过程中看了几篇文章之后完成的。。这里也推荐下:1http://www.chinaui.com/Knowledge/20120907/14021209040007.shtml(里面有demo,和更重要的图

    2025年8月22日
    5
  • 鸿蒙系统手机电脑互传文件,华为手机怎么与电脑互传文件(Huawei Share教程

    鸿蒙系统手机电脑互传文件,华为手机怎么与电脑互传文件(Huawei Share教程未经允许 如果我想把手机的相册传到电脑上 9 接着按照电脑的提示 就必须通过 HuaweiShare 进行互传 如果对您有所帮助 END 注意事项本经验由作者 梦想快男 原创 5 在此电脑中的搜索框内输入网络 6 点击带有 HONOR 类似的前缀的图标 或是说电脑需要接收华为手机传送的文件 2 打开手机状态栏 通过手机可以知道用户名和密码 即可通过华为手机和电脑互传文件了 然后点击复制 需

    2025年11月5日
    6
  • 智能体来袭!微软发布10多个Agent!

    智能体来袭!微软发布10多个Agent!

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号