* [U-Boot] Enabling smc911x driver
@ 2009-04-21 15:11 Steve Sakoman
2009-04-21 16:32 ` Ben Warren
0 siblings, 1 reply; 9+ messages in thread
From: Steve Sakoman @ 2009-04-21 15:11 UTC (permalink / raw)
To: u-boot
I'm attempting to enable the smc911x driver for the overo omap3 board.
Looking at the README and a couple of board config files, it seems
that defining CONFIG_DRIVER_SMC911X, CONFIG_DRIVER_SMC911X_16_BIT (or
32_BIT), and CONFIG_DRIVER_SMC911X_BASE is all that is required. I
have also enabled CONFIG_CMD_NET, CONFIG_CMD_DHCP and CONFIG_CMD_PING.
The build completes successfully, but it seems that the driver init is
never called, so I assume I am missing something.
Do I need to add an explicit init call to my board or cpu file? At
first glance I don't see that other boards are doing this.
Thanks!
Steve
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] Enabling smc911x driver
2009-04-21 15:11 [U-Boot] Enabling smc911x driver Steve Sakoman
@ 2009-04-21 16:32 ` Ben Warren
2009-04-22 14:52 ` Steve Sakoman
0 siblings, 1 reply; 9+ messages in thread
From: Ben Warren @ 2009-04-21 16:32 UTC (permalink / raw)
To: u-boot
Steve,
Steve Sakoman wrote:
> I'm attempting to enable the smc911x driver for the overo omap3 board.
>
> Looking at the README and a couple of board config files, it seems
> that defining CONFIG_DRIVER_SMC911X, CONFIG_DRIVER_SMC911X_16_BIT (or
> 32_BIT), and CONFIG_DRIVER_SMC911X_BASE is all that is required. I
> have also enabled CONFIG_CMD_NET, CONFIG_CMD_DHCP and CONFIG_CMD_PING.
>
> The build completes successfully, but it seems that the driver init is
> never called, so I assume I am missing something.
>
> Do I need to add an explicit init call to my board or cpu file? At
> first glance I don't see that other boards are doing this.
>
>
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!
>
> Steve
> ________
regards,
Ben
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] Enabling smc911x driver
2009-04-21 16:32 ` Ben Warren
@ 2009-04-22 14:52 ` Steve Sakoman
2009-04-22 15:51 ` Daniel Mack
0 siblings, 1 reply; 9+ messages in thread
From: Steve Sakoman @ 2009-04-22 14:52 UTC (permalink / raw)
To: u-boot
On Tue, Apr 21, 2009 at 9:32 AM, Ben Warren <biggerbadderben@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
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [U-Boot] Enabling smc911x driver
2009-04-22 14:52 ` Steve Sakoman
@ 2009-04-22 15:51 ` Daniel Mack
2009-04-22 15:54 ` Daniel Mack
0 siblings, 1 reply; 9+ messages in thread
From: Daniel Mack @ 2009-04-22 15:51 UTC (permalink / raw)
To: u-boot
On Wed, Apr 22, 2009 at 07:52:40AM -0700, Steve Sakoman wrote:
> 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
How did you set this MAC address? Does the hardware read it from a
connected EEPROM or did you manually set it in your environment. If you
face the latter case, you could try applying the patch I sent in some
days ago. Without that patch, the hardware is not made aware of the
configured address and hence the internal filter will drop all
non-broadcast packets it receives.
With this patch applied, however, the LAN9220 chip works well on our own
PXA design.
Maybe that helps.
Daniel
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] Enabling smc911x driver
2009-04-22 15:51 ` Daniel Mack
@ 2009-04-22 15:54 ` Daniel Mack
2009-04-22 17:31 ` Steve Sakoman
0 siblings, 1 reply; 9+ messages in thread
From: Daniel Mack @ 2009-04-22 15:54 UTC (permalink / raw)
To: u-boot
On Wed, Apr 22, 2009 at 05:51:44PM +0200, Daniel Mack wrote:
> On Wed, Apr 22, 2009 at 07:52:40AM -0700, Steve Sakoman wrote:
> > 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
>
> How did you set this MAC address? Does the hardware read it from a
> connected EEPROM or did you manually set it in your environment. If you
> face the latter case, you could try applying the patch I sent in some
> days ago. Without that patch, the hardware is not made aware of the
> configured address and hence the internal filter will drop all
> non-broadcast packets it receives.
Here's a pointer to the patch:
http://www.mail-archive.com/u-boot at lists.denx.de/msg12038.html
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] Enabling smc911x driver
2009-04-22 15:54 ` Daniel Mack
@ 2009-04-22 17:31 ` Steve Sakoman
2009-04-22 18:08 ` Daniel Mack
2009-04-23 4:20 ` Steve Sakoman
0 siblings, 2 replies; 9+ messages in thread
From: Steve Sakoman @ 2009-04-22 17:31 UTC (permalink / raw)
To: u-boot
On Wed, Apr 22, 2009 at 8:54 AM, Daniel Mack <daniel@caiaq.de> wrote:
>> How did you set this MAC address? Does the hardware read it from a
>> connected EEPROM or did you manually set it in your environment.
It is manually set in the environment since the prototype hardware
doesn't have the eeprom.
>> If you
>> face the latter case, you could try applying the patch I sent in some
>> days ago. Without that patch, the hardware is not made aware of the
>> configured address and hence the internal filter will drop all
>> non-broadcast packets it receives.
Applying the patch helped a great deal:
Overo # ping 192.168.0.1
smc911x: initializing
smc911x: detected LAN9221 controller
smc911x: phy initialized
smc911x: MAC 4a:18:56:55:9d:38
host 192.168.0.1 is alive
Attempting dhcp still fails, but this is a big step forward.
Thanks much!
Steve
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] Enabling smc911x driver
2009-04-22 17:31 ` Steve Sakoman
@ 2009-04-22 18:08 ` Daniel Mack
2009-04-23 4:20 ` Steve Sakoman
1 sibling, 0 replies; 9+ messages in thread
From: Daniel Mack @ 2009-04-22 18:08 UTC (permalink / raw)
To: u-boot
On Wed, Apr 22, 2009 at 10:31:52AM -0700, Steve Sakoman wrote:
> >> How did you set this MAC address? Does the hardware read it from a
> >> connected EEPROM or did you manually set it in your environment.
>
> It is manually set in the environment since the prototype hardware
> doesn't have the eeprom.
Assuming you're going to boot Linux on that board, you will face the
next problem that U-Boot will reset the controller before the kernel
boots and thus vanishes the MAC address from the chip. I sent in another
patch for that which contionally disables this reset so that the Linux
driver can actually read the address again and use it (with the
SMSC911X_SAVE_MAC_ADDRESS flag set). But as Mike Frysinger pointed out,
this is not the intended way to go as the MAC is only programmed if
U-Boot ever performed any network transaction. So there is need for some
other approach, just wanted to let you know.
Daniel
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] Enabling smc911x driver
2009-04-22 17:31 ` Steve Sakoman
2009-04-22 18:08 ` Daniel Mack
@ 2009-04-23 4:20 ` Steve Sakoman
2009-04-23 6:43 ` Daniel Mack
1 sibling, 1 reply; 9+ messages in thread
From: Steve Sakoman @ 2009-04-23 4:20 UTC (permalink / raw)
To: u-boot
On Wed, Apr 22, 2009 at 10:31 AM, Steve Sakoman <sakoman@gmail.com> wrote:
> On Wed, Apr 22, 2009 at 8:54 AM, Daniel Mack <daniel@caiaq.de> wrote:
>
>>> How did you set this MAC address? Does the hardware read it from a
>>> connected EEPROM or did you manually set it in your environment.
>
> It is manually set in the environment since the prototype hardware
> doesn't have the eeprom.
>
>>> If you
>>> face the latter case, you could try applying the patch I sent in some
>>> days ago. Without that patch, the hardware is not made aware of the
>>> configured address and hence the internal filter will drop all
>>> non-broadcast packets it receives.
>
> Applying the patch helped a great deal:
>
> Overo # ping 192.168.0.1
> smc911x: initializing
> smc911x: detected LAN9221 controller
> smc911x: phy initialized
> smc911x: MAC 4a:18:56:55:9d:38
> host 192.168.0.1 is alive
>
> Attempting dhcp still fails, but this is a big step forward.
As a next step I attempted to load a file via tftp. This works fine
if the file is <= 544 bytes in length:
Overo # tftp test.txt
smc911x: initializing
smc911x: detected LAN9221 controller
smc911x: phy initialized
smc911x: MAC aa:bb:cc:dd:ee:ff
TFTP from server 192.168.0.210; our IP address is 192.168.0.223
Filename 'test.txt'.
Load address: 0x82000000
Loading: #
done
Bytes transferred = 544 (220 hex)
Files longer that 544 bytes result in a timeout error:
Overo # tftp test.txt
smc911x: initializing
smc911x: detected LAN9221 controller
smc911x: phy initialized
smc911x: MAC aa:bb:cc:dd:ee:ff
TFTP from server 192.168.0.210; our IP address is 192.168.0.223
Filename 'test.txt'.
Load address: 0x82000000
Loading: T T T T T T T T T T
Retry count exceeded; starting again
Any ideas what might be going wrong here?
Steve
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] Enabling smc911x driver
2009-04-23 4:20 ` Steve Sakoman
@ 2009-04-23 6:43 ` Daniel Mack
0 siblings, 0 replies; 9+ messages in thread
From: Daniel Mack @ 2009-04-23 6:43 UTC (permalink / raw)
To: u-boot
On Wed, Apr 22, 2009 at 09:20:15PM -0700, Steve Sakoman wrote:
> Files longer that 544 bytes result in a timeout error:
>
> Overo # tftp test.txt
> smc911x: initializing
> smc911x: detected LAN9221 controller
> smc911x: phy initialized
> smc911x: MAC aa:bb:cc:dd:ee:ff
> TFTP from server 192.168.0.210; our IP address is 192.168.0.223
> Filename 'test.txt'.
> Load address: 0x82000000
> Loading: T T T T T T T T T T
> Retry count exceeded; starting again
>
> Any ideas what might be going wrong here?
Hmm. I had a similar issue a while ago and the reason was that on PXA3xx
CPUs, the timer register behaved differently than on PXA2xxs and that
was never tested. In fact, it was counting magnitudes faster there which
made the network code bail out way to early. This was fixed for the
platform I'm working with, but maybe you got a similar problem.
Other than that, there might be something weird with your network. I'd
suggest running wireshark on some host on that LAN and have a close look
on the packets.
Daniel
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2009-04-23 6:43 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-04-21 15:11 [U-Boot] Enabling smc911x driver Steve Sakoman
2009-04-21 16:32 ` Ben Warren
2009-04-22 14:52 ` Steve Sakoman
2009-04-22 15:51 ` Daniel Mack
2009-04-22 15:54 ` Daniel Mack
2009-04-22 17:31 ` Steve Sakoman
2009-04-22 18:08 ` Daniel Mack
2009-04-23 4:20 ` Steve Sakoman
2009-04-23 6:43 ` Daniel Mack
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox