因自己做的板子上把SD3_DAT6和SD3_DAT7复用成uart1的调试口,公版代码里是用于usdhc3,需修改device tree中的管脚配置,方法如下:
1、修改arch/arm/boot/dts/imx6qdl-sabresd.dtsi(此文件作为头文件被imx6q-sabresd.dts包含):
在&iomuxc子结点的pinctrl_uart1: uart1grp中,修改pin脚定义(pin脚名可在kernel代码中imx6q-pinfunc.h查找):
将MX6QDL_PAD_CSI0_DAT10__UART1_TX_DATA、MX6QDL_PAD_CSI0_DAT11__UART1_RX_DATA
改为:MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA、MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA
同时将子结点pinctrl_usdhc3: usdhc3grp中的MX6QDL_PAD_SD3_DAT6__SD3_DATA6、MX6QDL_PAD_SD3_DAT7__SD3_DATA7屏蔽掉,否则会有io申请失败的报错。
2、在imx6qdl-sabresd.dtsi后面会调用到:
&uart1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart1>;
status = "okay";
};
3、编译device tree:
$make imx6q-sabresd.dtb
将生成的imx6q-sabresd.dtb烧录即可。