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