Armadilloフォーラム

KSZ9131RNXのピン割り当てについて

rmttt

2024年1月25日 10時20分

お世話になります。

ENET_QOSと接続されているKSZ9131RNXのピン割り当てについてご教授いただけますでしょうか。
知りたい理由としては、M7コアでENET_QOSを使って通信を行いたいためです。

① 以下で合っていますか?(armadillo_iotg_g4.dtsを参考)
IOMUXC_ENET_MDC_ENET_QOS_MDC - MDC
IOMUXC_ENET_MDIO_ENET_QOS_MDIO - MDIO
IOMUXC_ENET_RD0_ENET_QOS_RGMII_RD0 - RXD0
IOMUXC_ENET_RD1_ENET_QOS_RGMII_RD1 - RXD1
IOMUXC_ENET_RD2_ENET_QOS_RGMII_RD2 - RXD2
IOMUXC_ENET_RD3_ENET_QOS_RGMII_RD3 - RXD3
IOMUXC_ENET_RX_CTL_ENET_QOS_RGMII_RX_CTL - RX_CTL
IOMUXC_ENET_RXC_CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK - RXC
IOMUXC_ENET_TD0_ENET_QOS_RGMII_TD0 - TXD0
IOMUXC_ENET_TD1_ENET_QOS_RGMII_TD1 - TXD1
IOMUXC_ENET_TD2_ENET_QOS_RGMII_TD2 - TXD2
IOMUXC_ENET_TD3_ENET_QOS_RGMII_TD3 - TXD3
IOMUXC_ENET_TX_CTL_ENET_QOS_RGMII_TX_CTL - TX_CTL
IOMUXC_ENET_TXC_CCM_ENET_QOS_CLOCK_GENERATE_TX_CLK - TXC
IOMUXC_SAI2_RXC_GPIO4_IO22 - RESET_N
IOMUXC_SAI1_RXFS_GPIO4_IO00 - LED_MODE

② 他に動かすために必要なピンはありますか?

コメント

at_dominique.m…

2024年1月26日 17時37分

rmtttさん

お世話になっています、
マルティネです。

> ENET_QOSと接続されているKSZ9131RNXのピン割り当てについてご教授いただけますでしょうか。
> 知りたい理由としては、M7コアでENET_QOSを使って通信を行いたいためです。

> ① 以下で合っていますか?(armadillo_iotg_g4.dtsを参考)

はい、あっています。

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

> ② 他に動かすために必要なピンはありますか?

u-boot 側で操作していますので M7 コアでも不要ですが、参考までに以下のピンも関係しています:

SAI1_TXD6__GPIO4_IO18 -> EQOS 用の regulator ON
SAI2_RXFS__GPIO4_IO21 -> interrupt (INT_N, linux のドライバで使用されていないようにみえます)

よろしくお願いします。

マルティネさん

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

追加で教えてください。
PHYAD0~2は、それぞれpull-upかpull-downのどちらか教えてもらいますか?

アクセスするためにPHYアドレスが必要になるため、こちらの情報が必要になります。

at_dominique.m…

2024年1月30日 11時38分

rmtttさん、

マルティネです。

> PHYAD0~2は、それぞれpull-upかpull-downのどちらか教えてもらいますか?
>
> アクセスするためにPHYアドレスが必要になるため、こちらの情報が必要になります。

ひとまずその点だけを返事させてください。
アドレスは armadillo_iotg_g4.dts のとおりに 3 です。

u-boot で確認できます:

u-boot=> mii device 
MII devices: 'FEC0' 'ethernet@30bf0000' 
Current device: 'FEC0'
# eqos の方に切り替え
u-boot=> mii device ethernet@30bf0000
u-boot=> mii device
MII devices: 'FEC0' 'ethernet@30bf0000' 
Current device: 'ethernet@30bf0000'
u-boot=> mii info 3
PHY 0x03: OUI = 0x0885, Model = 0x24, Rev = 0x02,  10baseT, HDX
# phy id 確認:0022, 164X で KSZ9131 となります。
u-boot=> mii read 3 2-3
addr=03 reg=02 data=0022
addr=03 reg=03 data=1642

(まだ必要でしたら PHYAD の設定も確認できますので、言ってください)

よろしくお願いします。

マルティネさん

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

ひとまずKSZ9131RNXにアクセスできることが確認できました。
u-boot で確認ができたのですね、勉強になります。

> アドレスは armadillo_iotg_g4.dts のとおりに 3 です。
ちなみに参考までにどこに書かれていたのでしょうか、気づきませんでした。

at_dominique.m…

2024年1月30日 17時23分

rmtttさん

> > アドレスは armadillo_iotg_g4.dts のとおりに 3 です。
> ちなみに参考までにどこに書かれていたのでしょうか、気づきませんでした。

分かりにくいですが、phy のアドレスは「reg = <3>」で設定してあります (&eqosphy-handle である mdio { eqosphy0: eqos-phy@3 {}} の方の reg です;ものすごく分かりにくいですが、eqosphy1 は Armadillo X2 の場合(厳密では phy id の確認した際)に u-boot で自動的に切り替えていますので Armadillo IoT G4 で無視していいです)

(eqos-phy@3 の @3 部分も phy のアドレスですが、デバグ用だけで使われてません)

確認してみたら、reg の設定が無くても linux が自動的にデバイスを認識すると思いますが、その reg で device tree の情報をつなぎます:

drivers/net/phy/mdio_bus.c:
/* Walk the list of subnodes of a mdio bus and look for a node that
 * matches the mdio device's address with its 'reg' property. If
 * found, set the of_node pointer for the mdio device. This allows
 * auto-probed phy devices to be supplied with information passed in
 * via DT.
 */

マニアックな話ですので、簡単に「dts のとおり」を言っておいて失礼しました。
また何かあれば遠慮なく聞いてください。

よろしくお願いします。