RK3588 IOMUX、Pull、Drive 与 Schmitt
1. Pin范围
五个 banks,每 bank 32 pins:
1 | GPIO0_A0..D7 = 0..31 |
每8 pins分 A/B/C/D port。
2. IOMUX
RK3588 bank data声明 IOMUX_WIDTH_4BIT,每 pin mux字段4 bit,可表达0–15。Mux 0为 GPIO,外设值由 rk3588s-pinctrl.dtsi给出。
3. IOC区域
Pad属性按 pin范围分散在:
- PMU1 IOC;
- PMU2 IOC;
- BUS IOC;
- VCCIO1_4;
- VCCIO3_5;
- VCCIO2;
- VCCIO6;
- EMMC IOC。
Driver用统一 regmap base加区域 offset访问。
4. Pull
-每 pin 2 bits;
-每寄存器8 pins;
-RK3588 bank标记 PULL_TYPE_IO_1V8_ONLY;
-实际编码由 Rockchip pull转换表处理。
bias-pull-up/down/disable不能按 raw编码直接推断。
5. Drive
-每 pin 4 bits;
-每寄存器4 pins;
-rk3588_ds_regs列出各 pin段起始寄存器;
-set路径把 DT drive-strength参数直接作为4-bit编码写入。
rk3588s-pinconf.dtsi也明确把这些节点命名为 drv-level-0至 drv-level-6并传0–6。该做法偏离通用 binding的 mA语义。且本树 get路径没有对应 RK3588 4-bit特判,可能只按默认较窄字段/查表解释;调试时优先核对寄存器、该 pinconf文件和TRM,不依赖通用 pinconf回读值。
6. Schmitt
-每 pin 1 bit;
-每寄存器8 pins;
-rk3588_smt_regs处理特殊区域边界,如 GPIO0_B5、GPIO4_C2。
7. Register计算
算法:
1 | global_pin = bank * 32 + pin |
表驱动处理电源域分裂,不应简化为单一连续公式。
8. Mux编码
RK3588部分 mux值高达11/12。当前 DT binding最大10与实际DTS不一致。本树 RK3588 controller data没有额外 route/recalced表,具体路径由4-bit mux编码表达。
9. 电气
VCCIO domain电压、drive strength和外设标准需一致。eMMC/SD、PCIe sideband、高速 clock等应使用官方 pin group和推荐 drive,不宜复制普通 GPIO配置。
正在加载留言…