[U-Boot] Enabling smc911x driver

Steve Sakoman sakoman at gmail.com
Wed Apr 22 16:52:40 CEST 2009


On Tue, Apr 21, 2009 at 9:32 AM, Ben Warren <biggerbadderben at gmail.com> wrote:

> This driver uses the old-style API and so requires board/cpu init code to
> call eth_init().  I'm not familiar with your architecture, so don't know how
> or if this is implemented, but it should be easy to find another example
> that does this.

Thanks for the hint!  That helped quite a bit.

The hardware uses the new LAN9221 chip, so I needed to add the
following patch to the driver:

diff --git a/drivers/net/smc911x.h b/drivers/net/smc911x.h
index 80d2ce0..a756142 100644
--- a/drivers/net/smc911x.h
+++ b/drivers/net/smc911x.h
@@ -378,6 +378,7 @@ static inline void smc911x_reg_write(u32 addr, u32 val)
 #define CHIP_9117	0x117
 #define CHIP_9118	0x118
 #define CHIP_9211	0x9211
+#define CHIP_9221	0x9221
 #define CHIP_9215	0x115a
 #define CHIP_9216	0x116a
 #define CHIP_9217	0x117a
@@ -394,6 +395,7 @@ static const struct chip_id chip_ids[] =  {
 	{ CHIP_9117, "LAN9117" },
 	{ CHIP_9118, "LAN9118" },
 	{ CHIP_9211, "LAN9211" },
+	{ CHIP_9221, "LAN9221" },
 	{ CHIP_9215, "LAN9215" },
 	{ CHIP_9216, "LAN9216" },
 	{ CHIP_9217, "LAN9217" },

Now things seem to initialize properly:

U-Boot 2009.03 (Apr 22 2009 - 07:28:04)

OMAP3503-GP rev 2, CPU-OPP2 L3-165MHz
Gumstix Overo board + LPDDR/NAND
DRAM:  256 MB
NAND:  256 MiB
In:    serial
Out:   serial
Err:   serial
Initializing ethernet smc911x
smc911x: initializing
smc911x: detected LAN9221 controller
smc911x: phy initialized
smc911x: MAC 4a:18:56:55:9d:38
Die ID #4a4800020000000004031c1302012001
Hit any key to stop autoboot:  0
Overo #

But the interface doesn't seem to function:

Overo # dhcp
smc911x: initializing
smc911x: detected LAN9221 controller
smc911x: phy initialized
smc911x: MAC 4a:18:56:55:9d:38
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
BOOTP broadcast 4
BOOTP broadcast 5

Retry count exceeded; starting again
<repeats>

I've also tried setting the ip address, net mask, etc explicitly.
This also has issues:

Overo # ping 192.168.0.1
smc911x: initializing
smc911x: detected LAN9221 controller
smc911x: phy initialized
smc911x: MAC 4a:18:56:55:9d:38
ping failed; host 192.168.0.1 is not alive

If I allow linux to boot, the net interface functions properly, so I
know that cabling, dhcp server, etc are not an issue.

Any advice on how to debug this?  I don't see any DEBUG flag in the code.

Thanks!

Steve


More information about the U-Boot mailing list