Ethernet doesn't work in linux for PPC440GP?

Eugene Surovegin ebs at ebshome.net
Wed Feb 23 20:38:50 EST 2005


On Wed, Feb 23, 2005 at 12:02:04AM -0800, Shawn Jin wrote:
> > > zmii0: input 0 in SMII mode
> > > eth0: IBM emac, MAC 00:04:ac:e3:1b:bb
> > > eth0: Found Generic MII PHY (0x08)
> > > zmii0: input 1 in RMII mode
> > > eth1: IBM emac, MAC FF:FF:FF:FF:FF:FF
> > > eth1: Found Generic MII PHY (0x09)
> > 
> > I already told you that this is wrong, why are you asking again?
> > Please, if you asking questions, spend some time reading answers
> > given to you, before asking again.
> 
> Well, don't be mad at me first. The question may bring out another
> round of arguments whether it's a bug related to uboot or linux EMAC
> driver. Wolfgang makes it very clear that this is a bug in linux
> ethernet driver. And I agree with him. This argument happened before
> and I just forgot what specific ethernet driver was in the argument.

This is really irrelevant.

> 
> > Ebony uses RMII, so SMII is obviously wrong. Most probably your
> > firmware doesn't set correct mode and autodetection in the EMAC driver
> > fails.
> 
> So the EMAC driver does expect a boot loader (the firmware you
> mentioned here) to set something for it. Then I think I need to fix it
> in this driver instead of in uboot.

Current EMAC driver uses autodetection logic if PHY mode wasn't 
specified by the board support code. It works for Ebony + OpenBIOS. 
You can try the following patch (untested) to set PHY mode explicitly:

===== arch/ppc/platforms/4xx/ebony.c 1.10 vs edited =====
--- 1.10/arch/ppc/platforms/4xx/ebony.c	2005-02-03 06:42:41 -08:00
+++ edited/arch/ppc/platforms/4xx/ebony.c	2005-02-23 01:28:04 -08:00
@@ -52,6 +52,13 @@
 
 #include <syslib/gen550.h>
 
+/*
+ * This is a horrible kludge, we eventually need to abstract this
+ * generic PHY stuff, so the  standard phy mode defines can be
+ * easily used from arch code.
+ */
+#include "../../../../drivers/net/ibm_emac/ibm_emac_phy.h"
+
 static struct ibm44x_clocks clocks __initdata;
 
 /*
@@ -267,9 +274,11 @@
 	def = ocp_get_one_device(OCP_VENDOR_IBM, OCP_FUNC_EMAC, 0);
 	emacdata = def->additions;
 	memcpy(emacdata->mac_addr, EBONY_NA0_ADDR(vpd_base), 6);
+	emacdata->phy_mode = PHY_MODE_RMII;
 	def = ocp_get_one_device(OCP_VENDOR_IBM, OCP_FUNC_EMAC, 1);
 	emacdata = def->additions;
 	memcpy(emacdata->mac_addr, EBONY_NA1_ADDR(vpd_base), 6);
+	emacdata->phy_mode = PHY_MODE_RMII;
 	iounmap(vpd_base);
 
 	/*


--
Eugene



More information about the Linuxppc-embedded mailing list