RK3588 IOMUX、Pull、Drive 与 Schmitt

RK3588 IOMUX、Pull、Drive 与 Schmitt

1. Pin范围

五个 banks,每 bank 32 pins:

1
2
3
4
GPIO0_A0..D7 = 0..31
GPIO1_A0..D7 = 32..63
...
GPIO4_A0..D7 = 128..159

每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-0drv-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
2
3
4
global_pin = bank * 32 + pin
从区域起点表逆向找最大 <= global_pin
reg += group_offset
bit = pin within register * bits_per_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配置。

文章互动

阅读 --

留言

0 条留言

正在加载留言…