ブログ

Armadillo-640:デバイスツリーで、GPIOのデフォルトを出力に設定する(その1)

at_kazutaka.bito
2019年8月27日 10時58分

Armadillo-640で、デバイスツリーで、GPIOのデフォルトを出力に設定する方法です。
備考)
この方法の場合、ユーザー領域で、GPIO出力のLow/Highの切り替えができません。
ユーザー領域からGPIO出力のLow/Highの切り替えを行う場合は、
Armadillo-640:デバイスツリーで、GPIOのデフォルトを出力に設定する(その2)
を参照ください。


Armadillo-640 製品マニュアル
6.7. GPIO
には、GPIOクラスディレクトリで、GPIOの入出力を切り替える方法が表記されています。

デフォルトは、GPIO入力になっていますので、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つの記述を追加します。
&iomuxc
の中に、

/* CON9_2: GPIO */
    pinctrl_ext_hog_1: ext_hoggrp-1 {
        fsl,pins = <
            MX6UL_PAD_UART2_RTS_B__GPIO1_IO23    0x00008 // CON9_2
        >;
    };

を追加します。

ファイルの末尾に

/* CON9_2: GPIO */
&gpio1 {
    con9_2 {
        gpio-hog;
        gpios = <23 GPIO_ACTIVE_HIGH>;
        output-low;
        line-name = "CON9_2";
    };
};

を追加します。

補足)
GPIOのデフォルトをHigh出力にするには、"output-low"の箇所を"output-high"にします。

上記の設定後、ビルドして生成されたデバイスツリー
linux-v4.14-at[version]/arch/arm/boot/dts/armadillo-640.dtb
をArmadillo-640に書き込みます。

Armadillo-640を再起動すると、CON9_2のデフォルトはLow出力になります。

ただ、この方法ですと、CON9_2の出力のLow/Highを切り替えようとしても

root@armadillo:/sys/class/gpio# echo 23 > export
-bash: echo: write error: Device or resource busy

となり、ユーザー領域からは、切り替えることができなくなります。

GPIOのデフォルトを出力に設定、かつ、ユーザー領域から設定する方法は、
Armadillo-640:デバイスツリーで、GPIOのデフォルトを出力に設定する(その2)
を参照ください。