设备树 之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";        # 既是名字,也是statepinctrl-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_probepinctrl_bind_pins  pinctrl_lookup_state #获取default状态的pinctrlpinctrl_select_state
  3. 手动获取状态的api:

    devm_pinctrl_get_select_default 使用default状态的引脚
    pinctrl_get_select 根据name选取某种状态的引脚
    pinctrl_put 不再使用退出时调用

设备树 之pinctrl[通俗易懂]相关推荐

  1. 设备树 之pinctrl

    三个重要概念 bank : gpa0, gpa1, gpa31等 group: 以功能划分,比如uart的tx和rx state: 设备的某种状态,比如"default", &qu ...

  2. 设备树和pinctrl粗解

    上次文章中 我以DS18b20为例,在设备树中定义了ds18b20的资源(device),当时是依葫芦画瓢,没有深入探究,本文主要探讨下pin在设备树中的描述 参考文章:Linux内核中的GPIO系统 ...

  3. 设备树学习之(二)点灯【转】

    本文转载自:http://blog.csdn.net/lizuobin2/article/details/54563829 开发板:tiny4412SDK + S702 + 4GB Flash  要移 ...

  4. Linux设备模型、平台设备驱动、设备树(device tree)、GPIO子系统以及pinctrl子系统介绍

    文章目录 一.Linux设备模型介绍 (1)设备驱动模型总体介绍 (2)设备驱动模型文件表现 (3)设备驱动模型工作原理 [1]总线 [2]设备 [3]驱动 [4]注册流程 二.平台设备驱动介绍 (1 ...

  5. Linux pinctrl子系统框架流程详解(基于Kernel 3.16,arm,设备树)

    以下讲的pinctrl子系统框架包括3点,1. pinctrl子系统简介:2.pinctrl子系统的注册:3. 设备驱动匹配时,probe执行前的管脚自动配置.写博客不易,如若转载,请注明出处. 一. ...

  6. 设备中的c语言代码文件,设备树编译器无法识别包含文件的C语法

    这不是设备树语法问题,您只需使用c预处理器cpp预处理.dts文件,就可以获得设备树编译器可以按原样消化的文件. 在特定情况下,假设当前目录是内核根目录,则必须使用以下两个命令: cpp -nostd ...

  7. 设备树之GPIO和中断实例

    概述 设备树不仅仅描述常规硬件信息,还可以描述中断,GPIO,DMA,PINCTRL,时钟,电源管理等内核基础设施信息及其使用情况,下面重点介绍中断,GPIO等结点属性 中断控制器 对于中断控制器结点 ...

  8. echarts树状图点击展开子节点_CPU眼里的结构设备树节点及属性详解

    1 设备树(device tree)简介DTSpec定义一个devicetree的约束来描述硬件设备,boot引导程序将设备树传递给用户程序的内存空间中,并传递给用户相应设备树的指针.设备树为一个树形 ...

  9. 【Device Tree】设备树(一)——GPIO

    以RK3328为例,介绍设备树在GPIO方面的应用. 引脚图如下 一.首先在DTS文件中增加GPIO资源描述: gpio_demo: gpio_demo {status = "okay&qu ...

最新文章

  1. 再论JavaScript原型继承和对象继承
  2. JOOMLA中文安装时 数据库发生错误解块办法
  3. 高仿真的类-DefaultListableBeanFactory
  4. 理解面向连接和无连接协议之间的区别
  5. 100个高低压配电知识!网络弱电必备知识~
  6. wxml报错原因_C#生成、解析xml文件以及处理报错原因
  7. 第十七章 扩展Python
  8. 【Matplotlib】【Python】如何使用matplotlib绘制散点图
  9. YSlow[转:大众点评]
  10. 原生微信小程序添加背景音乐
  11. 利用Java-JACOB操作WORD文档2
  12. HeadFirstJava 10数字与静态
  13. 别找了,这就是你心心念念想要的年会活动抽奖软件
  14. jQuery--表单校验
  15. 教你怎么录制电脑内部发出的声音
  16. C语言链表详解(通俗易懂)
  17. 解决JSON页面乱码
  18. casquette swagg:泉州故事
  19. win10u盘被写保护怎么解除_磁盘被写保护怎么解除,小编告诉你如何解决U盘磁盘被写保护...
  20. RobotStudio动态夹具的创建

热门文章

  1. 【PTA】数据结构与算法->6-13 LinkList10-带头结点的单链表逆置【有题解视频,可本地编译器调试】作者 通信DS课程组单位 成都信息工程大学
  2. 电脑自动重启是什么原因?详细解说
  3. Nao6 - Nao Recode 录音
  4. 使用Python+opencv+k-means根据扫描图片计算叶片面积-续
  5. 零基础学习Python:基础阶段
  6. 剪映导入本地音乐找不到的解决方案
  7. MySQL的(IF、IFNULL、NULLIF、ISNULL)函数
  8. 联想u450与部分操作系统不兼容的解决办法
  9. Windows11连接共享打印机指定的网络名不再可用
  10. 微信小程序 播放音频