Armadilloフォーラム

LANのLED設定について

rmttt

2024年4月15日 15時59分

以前、「KSZ9131RNXのピン割り当てについて」を確認させて頂きました。
https://armadillo.atmark-techno.com/forum/armadillo/18675

そこでIOMUXC_SAI1_RXFS_GPIO4_IO00(LED_MODE)を設定することで
LAN スピードLEDを緑と橙に設定できる話を伺いました。

そこでPHYのLED-MODEとピン(GPIO4_IO00)を組み合わせて
設定(M7コアで実施)をしたのですが、期待通りのLEDになりませんでした。
ここでの期待とは、LAN スピードLEDは1Gで橙、100Mで緑、切断で消です。
LAN リンクアクティビティLEDは1Gで黄、100Mで黄、切断で消です。

ファームウェアではどのような設定でLEDを変化させているのでしょうか?

コメント

at_dominique.m…

2024年4月15日 17時02分

rmtttさん、

マルティネです。

> そこでIOMUXC_SAI1_RXFS_GPIO4_IO00(LED_MODE)を設定することで
> LAN スピードLEDを緑と橙に設定できる話を伺いました。

これですね:
(細かいですが、ここは mode というより、左の LED はこのピンと phy の LED ピンの差で色が決まりますので、これを設定することで 1gps (緑)と 100mbps (オレンジ)の設定ができます。phy の LED制御の設定は imx-boot の uboot-imx/board/atmark-techno/armadillo_x2/board.c の ksz9131_setup_led で確認できます。)

> そこでPHYのLED-MODEとピン(GPIO4_IO00)を組み合わせて
> 設定(M7コアで実施)をしたのですが、期待通りのLEDになりませんでした。
> ここでの期待とは、LAN スピードLEDは1Gで橙、100Mで緑、切断で消です。
> LAN リンクアクティビティLEDは1Gで黄、100Mで黄、切断で消です。
>
> ファームウェアではどのような設定でLEDを変化させているのでしょうか?

コードのとおりの説明しかできませんが、
* スピードの LED は link up/down の際に固定していますので、phy側で一度設定して自動的に正しい色で点灯されるのではなく、毎回設定しています(KSZ9131_LINK100 で 100M の場合に phy 側を設定して、board_phy_startup() での gpio_direction_output(led, 0/1)GPIO4_IO00 の制御します)
* アクティビティの LED はファームウェアに任せています(KSZ9131_LINK_ACTIVITY)

具体的に何を設定していて、どういう動作を見ているのかを説明していただければアドバイスできるかもしれませんが、確認したところで uboot でもちゃんと動作していますので、同じ作りにすれば動くはずです。
(必要になったら linux での実装も説明できますが、uboot の方が読みやすいと思います)

よろしくお願いします。

マルティネさん

返信ありがとうございます。

具体的な設定は以下になります。

・KSZ9031 LED MODE REGISTER(26)
 KSZ9031 LED Mode を1にしてKSZ9031 LED modeにします。
・STRAP STATUS REGISTER(2.1)
 LED_MODE Strap-In Status を1にしてIndividual LED modeにします。
・GPIO4_IO00はHigh

上記の設定で下記の状態になります。
LAN スピードLED       1G:緑、100M:緑、切断:消
LAN リンクアクティビティLED 1G:黄、100M:黄、切断:黄

ここでLAN リンクアクティビティLEDが切断で黄になりますが
こちらはErrataを確認して消の表示にすることが出来ました。

LAN スピードLEDが1Gで緑なのでGPIO4_IO00をLowに変化させると
消の表示になり、橙になりません。
→切断すると橙になります。

次に
・KSZ9031 LED MODE REGISTER(26)
 KSZ9031 LED Mode を1にしてKSZ9031 LED modeにします。
・STRAP STATUS REGISTER(2.1)
 LED_MODE Strap-In Status を0にしてTri-color LED modeにします。
・GPIO4_IO00はLow

上記の設定で下記の状態になります。
LAN スピードLED       1G:橙、100M:橙、切断:橙
LAN リンクアクティビティLED 1G:黄、100M:消、切断:消

こうすると今度は1Gの表示はいいですが、100Mが橙なので
GPIO4_IO00をHighに変化させると消の表示になり、緑になりません。

Extendedの場合は全然違う表示になります。

設定は最初に設定したのみでピンの設定だけ変えていました。
link up/downで毎回PHY側の設定からやり直す必要があるのですね。

またuboot の設定はどのファイルを確認すればいいでしょうか。

at_dominique.m…

2024年4月16日 15時10分

rmtttさん

マルティネです。

> またuboot の設定はどのファイルを確認すればいいでしょうか。
https://armadillo.atmark-techno.com/resources/software/armadillo-iot-g4… の「ブートローダー ソース(u-boot等)」の uboot-imx/board/atmark-techno/armadillo_x2/board.c をご参照ください。

> 具体的な設定は以下になります。
> ・KSZ9031 LED MODE REGISTER(26)
>  KSZ9031 LED Mode を1にしてKSZ9031 LED modeにします。

こちらは逆にクリアしています(LED_MODE を読んで、bit 14 をクリアして書き直しています)。datasheet によると enhanced モードに入ります。

> ・STRAP STATUS REGISTER(2.1)
>  LED_MODE Strap-In Status を1にしてIndividual LED modeにします。

「STRAP STATUS REGISTER(2.1)」の LED_MODE Strap-In Status は RO になっていますのでここからは変更できません。
「COMMON CONTROL REGISTER(2.0)」からは変更できるかもしれませんが、弊社のコードでは設定してません。ボードにある pull-down によって tri-color になっているはずですが、結局 led mode の変更で関係なさそうです。

他に:
- LED MODE SELECT REGISTER (22) に LED1 を KSZ9131_LINK_ACTIVITY (0), LED2 を KSZ9131_LINK100 (0x2 << 4) に設定しています (0x20)。詳細は ENHANCED LED MODE テーブルを参考してください。
- LED BEHAVIOR REGISTER (23) に (bit 15) と LED2 Combination Disables (bit 1) (0x8002)。
bit 15 についてはマニュアルでは RESERVED として記載されてますが、必要です。microchip のフォーラムでは以下の回答ありました:
https://microchip.my.site.com/s/article/How-to-configure-KSZ9131-for-En…
> Register 23d (0x17) bit 15 is set to 1 to enable Enhanced LED Mode configuration (default is 0)

> ・GPIO4_IO00はHigh

GPIO4_IO00 については
- link 1000 の場合に low
- link 100 と link down の場合に high
を設定しています。

よろしくお願いします。

マルティネさん

返信ありがとうございます。

> 「STRAP STATUS REGISTER(2.1)」の LED_MODE Strap-In Status は RO になっていますのでここからは変更できません。
すみません、こちら間違っていました。
「COMMON CONTROL REGISTER(2.0)」から変更していました。

教えていただいたやり方で期待通りにLEDが変わることが確認出来ました。
ENHANCED LED MODEも試していたのですが、下記が設定されておらず動作していませんでした。
> bit 15 についてはマニュアルでは RESERVED として記載されてますが、必要です。microchip のフォーラムでは以下の回答ありました:
> https://microchip.my.site.com/s/article/How-to-configure-KSZ9131-for-En

アドバイスありがとうございます。