2015年9月15日火曜日

OpenWrt の ADM6996 の GPIO 設定

バッファロー WAPS-HP-AM54G54 が OpenWrt の Barrier Breaker 14.07 でイーサネット・スイッチの設定が上手く動作しない問題で GPIO 関係を調べてみました。

放熱器が取り付けられているのがイーサネット・スイッチのチップ ADM6996L です。

どうも OpenWrt では ADM6996L を使用している場合、GPIO の設定を NVRAM から設定値を読み取って必要な設定を行なっているようです。なお NVRAM から設定値を読み出すことが出来ない場合には初期値を設定するようになっています。

OpenWrt の ADM6996L への設定初期値

eecs=2 -- (adm_eecs)
eesk=3 -- (adm_eesk)
eedi=4 -- (adm_eedi)
eerc=5 -- (adm_rc)

WAPS-HP-AM54G54 の GPIO 設定値

nvram コマンドを使って GPIO 設定値を読みだしてみました。
# nvram show | grep gpio
gpio2=adm_eecs
gpio3=adm_eesk
gpio4=adm_eedi
gpio6=adm_rc

WAPS-HP-AM54G54 では eerc となる adm_rc が gpio6 となっており、初期値(gpio5)と異なっていました。

WRT54GS の GPIO 設定値

そして ADM6996 が搭載されていてイーサネット・スイッチが動作している リンクシス WRT54GS の GPIO 設定値を調べてみました。
gpio2=adm_eecs
gpio3=adm_eesk
gpio5=adm_eedi
gpio6=adm_rc

WRT54GS では adm_eedi と adm_rc が初期値と異なっていました。この状態においても Barrier Breaker 14.07 が動作することから NVRAM の GPIO 設定値を読みだして ADM6996 を設定することに問題はなさそうです。

ADM6996L 搭載の WRT54GS です。


WBR2-G54, WBR2-B11 の GPIO 設定値

OpenWrt Barrier Breaker 14.07 をインストールはしていませんが、参考として ADM6996 を搭載している バッファロー WBR2-G54 と WBR2-B11 の GPIO 設定値を調べてみました。
gpio2=adm_eecs
gpio3=adm_eesk
gpio4=adm_eedi
gpio5=adm_rc

両機種とも同じ GPIO 設定値を持っていて、OpenWrt の初期値と同じ値となっていました。この二機種もシステムメモリを 32MB へ拡張して OpenWrt Barrier Breaker 14.07 をインストールすれば動作するのでしょうか?

ADM6996L 搭載の WBR2-G54 と WBR2-B11 です。

結果

機種ごとに ADM6996L へ割り当てられる GPIO ピンの配置は異なっているようですが、その値は NVRAM に記録されており、その値を使って ADM6996L の設定を行う動作は基本的に正常に行われているようです。

余計に原因が解らなくなってしまいました(苦笑)。

参考ウェブサイト

trunk/target/linux/brcm47xx/patches-3.10/209-b44-register-adm-switch.patch
https://dev.openwrt.org/changeset/41517

bcm47xx_nvram_gpio_pin
http://lxr.free-electrons.com/ident?i=bcm47xx_nvram_gpio_pin

0 件のコメント:

コメントを投稿