DTS:覆盖引脚配置

问题描述 投票:0回答:2

我正在设置一个自定义设备,我需要禁用 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 */
    };
};

我阅读了以下文档

linux hardware device-tree
2个回答
1
投票

只要标记了节点,您就可以覆盖它。标签的形式为

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 中一样,您将标头包含在文件顶部。

我希望这有帮助;-)


0
投票

即使在.dtsi文件中写入了pin,我们是否可以覆盖它

因为在上面的例子中文件是.dts文件。

© www.soinside.com 2019 - 2024. All rights reserved.