Armadillo-640で、デバイスツリーで、GPIOのデフォルトを出力に設定する方法です。
備考)
Armadillo-640:デバイスツリーで、GPIOのデフォルトを出力に設定する(その1)
の方法では、ユーザー領域からは、Low/High出力を切り替えることができません。
ここでは、簡易的にGPIO 接続用LED ドライバ (leds-gpio)を活用して、
ユーザー領域から、Low/High出力を切り替えれるようにします。
Armadillo-640 製品マニュアル
6.7. GPIO
には、GPIOクラスディレクトリで、GPIOの入出力を切り替える方法が表記されています。
デフォルトは、GPIO入力になっていますので、GPIO出力にするには、上記の方法で切り替える必要があります。
ここでは、例として、GPIO 接続用LED ドライバ (leds-gpio)を活用して、
Armadillo-640のCON9の2ピン(GPIO1_IO23)を簡易的にGPIOのデフォルトを出力(Low)に設定する方法を検討してみました。
参考)
Armadillo-640 製品マニュアル
表6.9 CON9 ピンとGPIO番号の対応
デバイスツリーの設定
linux-v4.14-at[version]/arch/arm/boot/dts/armadillo-640.dts
で、下記2つの変更を行います。
gpio-leds
を、
gpio-leds {
compatible = "gpio-leds";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio_leds>;
red {
label = "red";
gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "default-on";
};
green {
label = "green";
gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "default-on";
};
yellow {
label = "yellow";
gpios = <&gpio1 18 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "none";
};
/* CON9_2: GPIO */
con9_2 {
label = "con9_2";
gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "none";
default-state = "off";
};
};
のように修正します。
(/* CON9_2: GPIO */以降が、追加した記述です。)
pinctrl_gpio_leds: gpioledsgrp
を、
pinctrl_gpio_leds: gpioledsgrp {
fsl,pins = <
MX6UL_PAD_GPIO1_IO05__GPIO1_IO05 0x00008
MX6UL_PAD_GPIO1_IO08__GPIO1_IO08 0x00008
MX6UL_PAD_UART1_CTS_B__GPIO1_IO18 0x00008
/* CON9_2: GPIO */
MX6UL_PAD_UART2_RTS_B__GPIO1_IO23 0x00008 // CON9_2
>;
};
のように修正します。
(/* CON9_2: GPIO */以降が、追加した記述です。)
補足)
GPIOのデフォルトをHigh出力にするには、default-state = "off"の箇所をdefault-state = "on"にします。
上記の設定後、ビルドして生成されたデバイスツリー
linux-v4.14-at[version]/arch/arm/boot/dts/armadillo-640.dtb
をArmadillo-640に書き込みます。
Armadillo-640を再起動すると、CON9_2のデフォルトはLow出力になります。
Low/High出力を切り替えるには、LEDのクラスディレクトリのbrightnessで設定します。
上記のデバイスツリーの場合、CON9の2ピンは、
root@armadillo:~# cd /sys/class/leds/
root@armadillo:/sys/class/leds# ls
con9_2 green mmc0:: mmc1:: red yellow
のように、con9_2という名前で見えます。
Low出力にするには、brightnessに0を設定します。
root@armadillo:/sys/class/leds# echo 0 > con9_2/brightness
High出力にするには、brightnessに1を設定します。
root@armadillo:/sys/class/leds# echo 1 > con9_2/brightness