IO-DOMAIN调试指南
IO-Domain用来配置X5部分模块的电压域,以RGMII接口为例,如果电路设计时外接电压域为3.3V,则需要配置RGMII模块的IO-DOMAIN为3.3V,如果电路设计时外接电压域为1.8V,则需要配置为1.8v,需要注意的是:
- 外接电压域为3.3V而对应的IO-DOMAIN配置为1.8V时,可能会对芯片有损伤;
- 外接电压域为1.8V而对应的IO-DOMAIN配置为3.3V时,相应的模块可能无法正常工作;
驱动代码
代码位置
drivers/pinctrl/hobot/ # pinctrl 驱动代码源文件所在文件夹
include/linux/platform_data/pinctrl-single.h # pinctrl 驱动代码头文件
IO-DOMAIN的DTS
X5的Pinctrl功能相关定义位于SDK包kernel文件夹下的arch/arm64/boot/dts/hobot/pinmux-func.dtsi文件内。
由于IO-Domain在pinctrl-single的框架下实现,因此其DTS和pinctrl的类似,在IO-Domain的DTS里已经列出了所有模块1.8V和3.3V的配置组,客户一般不需要修改,在具体开发时根据实际情况选择使用即可。
比较特殊的是SD和SDIO两组IO-Domain的配置。由于在芯片PAD上SD与SDIO的电压域会被同时配置,我们默认使用SD及SDIO的MMC控制器来独立控制SD/SDIO的PIN的电压域,配置选项为自定义的“power-source”宏,如下所示:
...
pconf_sd_sdio_ds12_padctrl_3v3: pconf-sd-sdio-ds12-padctrl-3v3 {
bias-pull-up;
power-source = <HORIZON_IO_PAD_CTRL_VOLTAGE_3V3>;
drive-strength = <12>;
};
pconf_sd_sdio_pu_ds12_padctrl_1v8: pconf-sd-sdio-ds12-padctrl-1v8 {
bias-pull-up;
power-source = <HORIZON_IO_PAD_CTRL_VOLTAGE_1V8>;
drive-strength = <12>;
};
...
pinctrl_sd: sdgrp {
horizon,pins = <
HSIO_SD_WP HSIO_PINMUX_2 BIT_OFFSET24 MUX_ALT0 &pconf_sd_sdio_pu_ds12_ipctrl
HSIO_SD_CLK HSIO_PINMUX_2 BIT_OFFSET22 MUX_ALT0 &pconf_sd_sdio_pu_ds12_ipctrl
HSIO_SD_CMD HSIO_PINMUX_2 BIT_OFFSET20 MUX_ALT0 &pconf_sd_sdio_pu_ds12_ipctrl
HSIO_SD_CDN HSIO_PINMUX_2 BIT_OFFSET18 MUX_ALT0 &pconf_sd_sdio_pu_ds12_ipctrl
HSIO_SD_DATA0 HSIO_PINMUX_2 BIT_OFFSET16 MUX_ALT0 &pconf_sd_sdio_pu_ds12_ipctrl
HSIO_SD_DATA1 HSIO_PINMUX_2 BIT_OFFSET14 MUX_ALT0 &pconf_sd_sdio_pu_ds12_ipctrl
HSIO_SD_DATA2 HSIO_PINMUX_2 BIT_OFFSET12 MUX_ALT0 &pconf_sd_sdio_pu_ds12_ipctrl
HSIO_SD_DATA3 HSIO_PINMUX_2 BIT_OFFSET10 MUX_ALT0 &pconf_sd_sdio_pu_ds12_ipctrl
>;
};
pinctrl_sdio: sdiogrp {
horizon,pins = <
HSIO_SDIO_WP HSIO_PINMUX_2 BIT_OFFSET8 MUX_ALT0 &pconf_sd_sdio_pu_ds12_ipctrl
HSIO_SDIO_CLK HSIO_PINMUX_0 BIT_OFFSET30 MUX_ALT0 &pconf_sd_sdio_pu_ds12_ipctrl
HSIO_SDIO_CMD HSIO_PINMUX_0 BIT_OFFSET28 MUX_ALT0 &pconf_sd_sdio_pu_ds12_ipctrl
HSIO_SDIO_DATA0 HSIO_PINMUX_1 BIT_OFFSET0 MUX_ALT0 &pconf_sd_sdio_pu_ds12_ipctrl
HSIO_SDIO_DATA1 HSIO_PINMUX_2 BIT_OFFSET30 MUX_ALT0 &pconf_sd_sdio_pu_ds12_ipctrl
HSIO_SDIO_DATA2 HSIO_PINMUX_2 BIT_OFFSET28 MUX_ALT0 &pconf_sd_sdio_pu_ds12_ipctrl
HSIO_SDIO_DATA3 HSIO_PINMUX_2 BIT_OFFSET26 MUX_ALT0 &pconf_sd_sdio_pu_ds12_ipctrl
>;
};
...