PINCTRL
介绍 PIN 的功能和使用方法。
模块介绍
PINCTRL 是 PIN模块的控制器。
功能介绍
Linux pinctrl模块包括两部分: pinctrl core 和 pin 控制器驱动。
-
pinctrl core 主要有两个功能:
- 提供 pinctrl 功能接口给其它驱动使用
- 提供 pin 控制器设备注册与注销接口
-
pinctrl 控制器驱动 主要功能:
- 驱动 pin 控制器硬件
- 实现 pin 的管理和配置
源码结构介绍
控制器驱动代码在 drivers/pinctrl
目录下:
drivers/pinctrl
|-- pinctrl-single.c
关键特性
特性 | 特性说明 |
---|---|
支持pin复用选择 | 支持将pin设置成复用功能中一种 |
支持设置pin的属性 | 支持设置pin的边沿检测、上下拉和驱动能力 |
配置介绍
主要包括 驱动使能配置 和 dts配置
CONFIG配置
- CONFIG_PINCTRL: 为 pin 控制器提供支持,默认值为
Y
Device Drivers
Pin controllers (PINCTRL [=y])
- CONFIG_PINCTRL_SINGLE: 为 K1 pinctrl 控制器提供支持,默认值为
Y
Device Drivers
Pin controllers (PINCTRL [=y])
One-register-per-pin type device tree based pinctrl driver (PINCTRL_SINGLE [=y])
pin使用说明
介绍在dts设备节点里使用pin。
pin 配置参数
对 pin id、复用功能 和 属性 进行定义。
详细定义内核目录 include/dt-bindings/pinctrl/k1-x-pinctrl.h
。
pin id
即 pin 编号。
K1 pin 编号范围 1~147,对应宏定义 GPIO_00 ~ GPIO_127
。
pin 功能
K1 pin 支持复用选择。
K1 pin 复用功能列表见 K1 Pin Multiplex。
pin 的复用功能号为 0~7,分别定义为 MUX_MODE0 ~ MUX_MODE7
。
pin 属性
pin 的属性包括 边沿检测、上下拉 和 驱动能力。