Hi,

I'm trying to enable ethernet on a custom board with an am335x soc, and a VSC8601 connected through RGMII. The plan is to use u-boot as a first stage loader to load a proprietary application (called "the app"). The app already has its own ethernet stack and drivers, and can successfully do network talk.

I started with the am3355x config, and with a few trivial hacks, [1], [2], and [3], I was able to get the PHY recognized in u-boot. Auto-negotiation works correctly on 100Mbit link. The issue is that while packets seem to get transmitted when doing DHCP queries (light on the switch blinks), they aren't legible. I tried hooking up the board to an ethernet port with static IPs, and watching traffic with wireshark, but did not observe any packets.

I also probed the RGMII link and it seems the TX clock is running at 10 MHz, instead of 25MHz, when the app is running. At this point I suspect either a gross misconfiguration on my part, or a bug in the cpsw code.

I was hoping someone here might have an idea what to do to get ethernet working.

Thanks,
Alex

[1]
diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
index ec70b72..63a5b29 100644
--- a/include/configs/am335x_evm.h
+++ b/include/configs/am335x_evm.h
@@ -433,6 +433,7 @@
 #define CONFIG_PHY_SMSC
 /* Enable Atheros phy driver */
 #define CONFIG_PHY_ATHEROS
+#define CONFIG_PHY_VITESSE

 /*
  * NOR Size = 16 MiB

[2]
diff --git a/arch/arm/dts/am335x-evm.dts b/arch/arm/dts/am335x-evm.dts
index c1a53e2..153a06f 100644
--- a/arch/arm/dts/am335x-evm.dts
+++ b/arch/arm/dts/am335x-evm.dts
@@ -585,8 +585,8 @@
 };

 &cpsw_emac0 {
-       phy_id = <&davinci_mdio>, <0>;
-       phy-mode = "rgmii-txid";
+       phy_id = <&davinci_mdio>, <8>;
+       phy-mode = "rgmii";
 };

 &cpsw_emac1 {

[3]
diff --git a/board/ti/am335x/mux.c b/board/ti/am335x/mux.c
index 27979bd..e758429 100644
--- a/board/ti/am335x/mux.c
+++ b/board/ti/am335x/mux.c
@@ -341,7 +341,7 @@ static unsigned short detect_daughter_board_profile(void)
 void enable_board_pin_mux(void)
 {
        /* Do board-specific muxes. */
-       if (board_is_bone()) {
+       if (0 && board_is_bone()) {
                /* Beaglebone pinmux */
                configure_module_pin_mux(mii1_pin_mux);
                configure_module_pin_mux(mmc0_pin_mux);
@@ -352,7 +352,7 @@ void enable_board_pin_mux(void)
 #else
                configure_module_pin_mux(mmc1_pin_mux);
 #endif
-       } else if (board_is_gp_evm()) {
+       } else if (1 || board_is_gp_evm()) {
                /* General Purpose EVM */
                unsigned short profile = detect_daughter_board_profile();
                configure_module_pin_mux(rgmii1_pin_mux);
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to