【android 驱动开发十一】pinctrl 子系统
pinctrl 是 Linux 内核中一个非常重要的子系统,用于管理 SoC 上的引脚复用、上下拉、电平驱动能力等配置。
它是驱动与硬件之间的“引脚控制抽象层”,几乎所有平台(高通、MTK、Rockchip、NXP 等)都依赖它。
原理 → 核心函数 → 驱动示例 的系统讲解。
🧠 一、pinctrl 子系统总体原理
1️⃣ 为什么要有 pinctrl
在 SoC 上,每个引脚(pin)往往有多个功能复用(GPIO / UART_TX / I2C_SDA / PWM 等)。
pinctrl 子系统统一负责:
功能 | 描述 |
---|---|
pinmux | 选择某个 pin 的复用功能(Function) |
pinconf | 配置该 pin 的电气属性(如上拉/下拉/驱动强度) |
gpio | 控制引脚作为 GPIO 使用时的值和方向 |
groups/functions | 把多个 pin 组成 group,以 function 名义配置 |