Linux 内核 - Beagle Bone - PWM Pin Muxing - 设备树

Linux Kernel - Beagle Bone - PWM Pin Muxing - Device Tree

我正在尝试通过设备树在 PWM 模式下复用 gpmc_ad9 引脚

文件:arch/arm/boot/dts/am335x-boneblack.dts

&am33xx_pinmux {
    hw_pins: hw_pins {
        pinctrl-single,pins = <
             AM33XX_IOPAD(0x824, PIN_OUTPUT | MUX_MODE4)    /* gpmc_ad9.ehrpwm2B  */
        >;
     };
};

/ {
    soc {
        pinctrl-names = "default";
        pinctrl-0 = <&hw_pins>;
    };
};

但是 debugfs 仍然显示 pin 的模式 7

/sys/kernel/debug/pinctrl/44e10800.pinmux-pinctrl-single # cat pins | grep 824
pin 9 (PIN9) 44e10824 00000027 pinctrl-single

我在设备树中没有看到此引脚被重新定义

我哪里做错了?

我找到了解决方案,我不得不将 pinctrl 属性放在另一个节点中。 我想那是因为 soc 节点已经定义了 pinctrl 属性。

&am33xx_pinmux {
    hw_pins: hw_pins {
        pinctrl-single,pins = <
             AM33XX_IOPAD(0x824, PIN_OUTPUT | MUX_MODE4)    /* gpmc_ad9.ehrpwm2B  */
        >;
     };
};

/ {
    soc {
        mydriver {
              compatible = "mydriver";

              pinctrl-names = "default";
              pinctrl-0 = <&hw_pins>;
        };
       
    };
};