GPIO - Pinctrl 控制器
Linux Pinctrl(引脚控制)子系统是 Linux 内核中用于管理和控制硬件引脚(GPIO、I2C、SPI等)的一个子系统。它允许 Linux 内核与底层硬件交互,配置和控制系统中的各种引脚以实现特定的功能。
模块配置
驱动配置
Allwinner BSP --->
Device Drivers --->
Pinctrl Drivers --->
<*> Pinctrl Support for Allwinner SoCs
<*> {CHIP_PLATFORM} PIO
<*> {CHIP_PLATFORM} RTC_PIO
提示
备注
提示
备注
{CHIP_PLATFORM} 为对应芯片平台的标识符(如 V821 对应 SUN300IW1),具体名称请参考对应芯片的 SDK 驱动配置菜单。
:::

设备树配置
对于 Pinctrl,设备树公共配置如下,这部分是定义控制器资源,中断,时钟,开发一般无需修改
pio: pinctrl@42000000 {
compatible = "allwinner,{chip_platform}-pinctrl";
reg = <0x0 0x42000000 0x0 0x500>;
interrupts-extended = <&plic0 68 IRQ_TYPE_LEVEL_HIGH>,
<&plic0 72 IRQ_TYPE_LEVEL_HIGH>,
<&plic0 74 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&aon_ccu CLK_APB0>, <&aon_ccu CLK_DCXO>, <&losc>;
clock-names = "apb", "hosc", "losc";
device_type = "pio";
gpio-controller;
interrupt-controller;
#interrupt-cells = <3>;
#address-cells = <0>;
#gpio-cells = <3>;
};