我正在设置自定义设备,我需要禁用dts中的一些引脚。我可以覆盖dts文件中的引脚,还是需要在dtsi文件中更改它们。请注意,我确实要保留其他引脚分配。
dtsi文件包含以下内容。
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog>;
imx6qdl-var-som-mx6 {
pinctrl_hog: hoggrp {
fsl,pins = <
/* CTW6120 IRQ */
MX6QDL_PAD_EIM_DA7__GPIO3_IO07 0x80000000
/* for Bluetooth/wifi enable */
MX6QDL_PAD_SD3_DAT6__GPIO6_IO18 0x1b0b1
/* SDMMC2 CD/WP */
MX6QDL_PAD_KEY_COL4__GPIO4_IO14 0x80000000
MX6QDL_PAD_KEY_ROW4__GPIO4_IO15 0x80000000
/* USBOTG ID pin */
/*MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x80000000*/
/* PMIC INT */
MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x80000000
/* Wifi Slow Clock */
MX6QDL_PAD_ENET_RXD0__OSC32K_32K_OUT 0x000b0
/* Audio Clock */
MX6QDL_PAD_GPIO_0__CCM_CLKO1 0x130b0
/* Audio reset */
MX6QDL_PAD_GPIO_19__GPIO4_IO05 0x178b0
/* Camera Clock */
MX6QDL_PAD_GPIO_3__CCM_CLKO2 0x130b0
/* Resistive touch irq */
MX6QDL_PAD_DISP0_DAT4__GPIO4_IO25 0x178b0
>;
};
... /* Other definitions */
};
};
我阅读了以下documentation
答案 0 :(得分:0)
只要标记了节点,就可以覆盖它。标签的形式为label: node@0x1 { /* data */ };
让我们以一个名为main.dts
的设备树为例:
$ cat main.dts
/dts-v1/;
/ {
model = "Test device tree";
#address-cells = <0>;
#size-cells = <1>;
iomuxc: iomuxc@0x1 {
reg = <0x1>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog>;
imx6qdl-var-som-mx6 {
pinctrl_hog: hoggrp {
fsl,pins = <
0x1b8 0x588 0x000 0x5 0x0 0x80000000
/* more pins */
>;
};
};
};
};
&pinctrl_hog {
fsl,pins = <
0x1b8 0x588 0x000 0x5 0x0 0x89999999
/* more pins */
>;
};
在这里,我覆盖了标签pinctrl_hog
的引脚控制。您可以通过编译和反编译设备树来验证输出:
$ dtc -I dts -O dtb -o out.dtb main.dts # compile
$ dtc -I dtb -O dts out.dtb
/dts-v1/;
/ {
model = "Test device tree";
#address-cells = <0x0>;
#size-cells = <0x1>;
iomuxc@0x1 {
reg = <0x1>;
pinctrl-names = "default";
pinctrl-0 = <0x1>;
imx6qdl-var-som-mx6 {
hoggrp {
fsl,pins = <0x1b8 0x588 0x0 0x5 0x0 0x89999999>;
linux,phandle = <0x1>;
phandle = <0x1>;
};
};
};
};
如您所见,引脚设置为0x89999999
,而不是原始的0x80000000
。使用前,只需确保标签存在即可。通常,就像在C语言中一样,您可以在文件顶部添加标头。
我希望这会有所帮助;-)