• 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 复用功能。

  • 相关阅读:
    ShareSDK 第三方平台分享参数说明
    Vue项目中v-bind动态绑定src路径不成功问题及解决
    ffmpeg在windows的安装、合并、切片、.m4s、.m3u8处理
    分界线-积木游戏 demo
    前端框架的演进之路:从静态网页到现代交互体验的探索
    JVM进阶(2)
    二叉树中的层遍历
    26k Star, 理解Git太轻松了。。。
    通过stream流实现分页、模糊搜索、按列过滤功能
    ros2与windows入门教程-windows上安装ROS2 foxy
  • 原文地址:https://blog.csdn.net/weixin_43772810/article/details/130419358