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

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

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:

在这里插入图片描述

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

在这里插入图片描述

pinctrl 服务端

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

瑞星微平台

这里拿 RK3568 举例:

在 pinctrl 节点内存在一个 pwm0子节点,pwm0 的 pwm0m0-pins 子节点对应 pinctrl 客户端的 pinctrl-x,rockchip,pins 是瑞星微 pinctrl pin 属性。
在这里插入图片描述

瑞星微 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 文档:

在这里插入图片描述
全志平台的 pinctrl 服务端相对瑞星微来说更加通俗易懂。

三星平台

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

在这里插入图片描述

iMX 平台

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

在这里插入图片描述

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

示例1:

在这里插入图片描述
MX6QDL_PAD_SD4_DAT0__SD4_DATA0 的作用是将引脚 “SD4_DAT0” 设置为 “SD4_DATA0” 复用功能。

示例2:

在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小辉_Super

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值