i.MX6 および Buildroot/Busybox、カーネル v4.19.169 で次の DT をテストしました。これを機能させる DT スニペットを次に示しますが、ユーザー空間ではピンを使用できなくなります。ところで、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
欠落している場合でも、ピンを Low に駆動するのに十分です。しかし、ピンはまだ入力として設定されています。
ピン構成を確認します ( [使用]文字列に注意してください) :
# gpioinfo 6 | grep "line 11"
line 11: unnamed "SYS_STAT" output active-high [used]
別の方法は、sysstat@11
ノードを削除して、ピンの多重化とピンの構成だけを行うことです。ただし、それが非常に賢いかどうかはわかりません。
ピンはデフォルトで GPIO として構成されているため、さらに別のオプションとして、DT をまったく変更せず、代わりに /etc/init.d スクリプトをコマンドで使用することもできますgpioset 6 11=0
。これも機能しますが、DT オプションほど高速ではありません。
私は最後の選択肢に行くと思います。