我刚刚在 i.MX6 和 Buildroot/Busybox、内核 v4.19.169 上测试了以下 DT。这是使它工作的 DT 片段,但是您不能再在用户空间中使用该 pin。请注意,顺便说一下,该gpios =
属性的复杂语法。那个把我逼疯了!
&gpio7 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio_en>;
sysstat@11 {
gpio-hog;
gpios = <11 GPIO_ACTIVE_HIGH>;
output-low;
line-name = "SYS_STAT";
};
};
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpios>;
pinctrl_gpio_en: gpiostatgrp {
fsl,pins = <
MX6QDL_PAD_GPIO_16__GPIO7_IO11 0x130b0
>;
};
};
0x130b0 表示:迟滞,100K 下拉,PUE=1(上拉使能),PKE=1(保持器使能)。这足以将引脚驱动为低电平,即使sysstat@11
缺少。但该引脚仍配置为输入。
检查引脚配置(注意[used]字符串):
# gpioinfo 6 | grep "line 11"
line 11: unnamed "SYS_STAT" output active-high [used]
另一种方法是删除sysstat@11
节点以仅执行引脚复用和引脚配置。不过,我不确定它是否非常聪明。
另一个选项,因为默认情况下将引脚配置为 GPIO,所以根本不更改 DT,而是使用 /etc/init.d 脚本,使用 command gpioset 6 11=0
。它也可以,但不如 DT 选项快。
我想我会选择最后一个选项。