drivers/pinctrl 源码目录与控制器索引
Core文件
| 文件 | 作用 |
|---|---|
core.c |
controller/consumer/state/map |
pinmux.c |
function/group和mux ownership |
pinconf.c |
pin/group config |
pinconf-generic.c |
通用参数、DT解析、debug |
devicetree.c |
pinctrl-N到 maps |
pinctrl-utils.c |
map内存辅助 |
Rockchip
pinctrl-rockchip.c:SoC pinmux/pinconf;pinctrl-rockchip.h:bank/register/SoC结构;pinctrl-rk805.c;pinctrl-rk806.c。
更准确地说,pinctrl-rockchip.c实现SoC pinmux/pinconf,GPIO data/IRQ/debounce位于目录外的 drivers/gpio/gpio-rockchip.c。RK3588没有单独 pinctrl-rk3588.c,pinctrl数据表和算法内嵌于通用Rockchip文件。
其它平台
目录约500文件,包括 Qualcomm、Samsung、Tegra、Renesas、Sunxi、Intel、STM32等。它们不参与 RK3588构建。
Makefile
1 | core.o + pinctrl-utils.o |
Kconfig
PINCTRL_ROCKCHIP:
- depends ARCH_ROCKCHIP/COMPILE_TEST;
- depends OF;
- select GPIOLIB;
- select PINMUX;
- select GENERIC_PINCONF;
- select GENERIC_IRQ_CHIP;
- select MFD_SYSCON;
- select OF_GPIO;
- default ARCH_ROCKCHIP。
主 defconfig只显式出现 RK805/RK806 pinctrl,但 SoC pinctrl由 ARCH_ROCKCHIP默认选中,不能因文本未出现就判断关闭。
DT文件
- controller binding:
rockchip,pinctrl.yaml; - GPIO bank binding:
rockchip,gpio-bank.yaml; - pin definitions:
rk3588s-pinctrl.dtsi; - config nodes通常来自公共 Rockchip pinctrl include。
Binding差异
当前 binding对 mux字段声明最大10,但 rk3588s-pinctrl.dtsi中存在 mux 11/12。说明该厂商树的 schema与RK3588数据未完全同步;应以驱动和芯片 TRM验证,同时修订 schema,而非删除有效组。
正在加载留言…