itop-3568开发板驱动学习笔记(27)设备树(六)pinctrl

《【北京迅为】itop-3568开发板驱动开发指南.pdf》 学习笔记

文章目录

  • pinctrl 子系统简介
  • pinctrl 设备树语法
    • pinctrl 客户端
    • pinctrl 服务端
      • 瑞星微平台
      • 全志平台
      • 三星平台
      • iMX 平台

pinctrl 子系统简介

Linux pinctrl 子系统用来管理 GPIO 引脚,它主要完成了以下三种功能:

  1. 引脚枚举与命名
  2. 引脚复用
  3. 引脚配置

pinctrl 子系统的驱动由芯片原厂 BSP 工程师编写(包括设备树)。

pinctrl 设备树语法

pinctrl 客户端

客户端语法是固定的,所有平台都是相同的,主要包括两个属性:pinctrl-names 和 pinctrl-x(x 为数字 0,1,2…)

pinctrl-name 属性表示设备的状态,
pinctrl-x 表示第 x 个状态对应的引脚配置。

示例1:

itop-3568开发板驱动学习笔记(27)设备树(六)pinctrl_第1张图片

示例2:(下面的 pinctrl 有两个状态,每个状态里有三个引脚,引脚配置由 pinctrl-x 决定)

itop-3568开发板驱动学习笔记(27)设备树(六)pinctrl_第2张图片

pinctrl 服务端

pinctrl 服务端在不同平台有不同的语法,

瑞星微平台

这里拿 RK3568 举例:

在 pinctrl 节点内存在一个 pwm0子节点,pwm0 的 pwm0m0-pins 子节点对应 pinctrl 客户端的 pinctrl-x,rockchip,pins 是瑞星微 pinctrl pin 属性。
itop-3568开发板驱动学习笔记(27)设备树(六)pinctrl_第3张图片

瑞星微 rockchip,pins 属性的第一个参数表示 GPIO组,第二个参数表示 pin 脚在该 GPIO 组的编号,第三个参数为引脚复用功能,第四个参数是 GPIO 驱动强度。

前两个参数之前的笔记已经见过很多次,但复用功能是第一次遇到,该参数值需要查数据手册或用户手册,比如上面的 <0 RK_PB7 1 &pcfg_pull_none> 中,复用功能为 1,通过查阅芯片 datasheet,可以知晓复用功能 1 对应的是 PWM_M0 功能。第四个参数暂时不去研究(基本都是填这个)。

在这里插入图片描述

上面提到不同平台 pin 属性的语法不同,我们可以查看内核 bindings 文档 (kernel/Documentation/devicetree/bindings/pinctrl)来了解设备树的语法,

比如瑞星微 pin 属性的介绍:

在这里插入图片描述

全志平台

全志平台的 pinctrl bindings 文档:

itop-3568开发板驱动学习笔记(27)设备树(六)pinctrl_第4张图片
全志平台的 pinctrl 服务端相对瑞星微来说更加通俗易懂。

三星平台

三星平台的 pin 属性和全志类似:

在这里插入图片描述

iMX 平台

iMX 平台 pins 属性相对比较复杂,

itop-3568开发板驱动学习笔记(27)设备树(六)pinctrl_第5张图片

该属性有六个参数,分别是:mux_reg conf_reg input_reg mux_mode input_val 和 CONFIG
前五个参数是写在一起的(用 ‘_’ 连接,见下图),用来表示引脚复用功能,第六个参数用来设置引脚电气属性。
(前五个参数的对应关系我没搞明白,直接分析例子吧)

示例1:

itop-3568开发板驱动学习笔记(27)设备树(六)pinctrl_第6张图片
MX6QDL_PAD_SD4_DAT0__SD4_DATA0 的作用是将引脚 “SD4_DAT0” 设置为 “SD4_DATA0” 复用功能。

示例2:

itop-3568开发板驱动学习笔记(27)设备树(六)pinctrl_第7张图片

MX7D_PAD_GPIO1_IO04__I2C1_SCL 的作用是将 GPIO1_IO04 引脚设置为 I2C1_SCL 复用功能。

你可能感兴趣的:(#,驱动开发(学习笔记),linux,设备树)