I should have written it differently :) The default mode is indeed
little endian (however snapgear (distro), redboot and uClinux default
use big endian unless you change it), but I run the processor in big
endian. For word accesses the IXP425 automatically does the byteswapping
part to ensure that the PCI bus gets written as little endian. So in
short, the bcm4306 which is connected to the PCI bus (little endian)
gets written to by the processor running in big endian mode. I wasn't
aware about the PCI bus being treated in a different endianness, that
one I had to look up :)
My actual mac address should be 00904BB9238F. Lately though, the MAC
address the driver reports is fe:dd:06:00:fe:dd, although that one has
varied before also.
Looking more into the issue (and asking around) I found the IXP425
processor has a problem whenever 16 bit pci reads are done (described
here: http://developer.intel.com/design/network/applnots/300375.htm).
Could this be causing the problem?
As the driver uses 16 bit PCI reads rather regularly (bcm43xx_read16), I
was wondering if it was possible to do byte or dword reads instead, then
converting this to 16 bit. As an experiment I have tried modifying the
bcm43xx_read16 routine to do two byte reads then converting this to a
word, and also 1 dword read (checking for correct address alignment) and
converting this to a word. But so far I have not been successfull yet.
In fact, doing this conversion (2x8bit or 1x32) read instead still gives
me an SPROM checksum error (same as with 16 bit reads), but also an
error that the tssi2dbm table could not be generated.
If anyone has some suggestions, I'd be very much open to it. Also note,
I tried doing the 32 bit and 2x 8 bit read in the hopes that the
hardware supports it (something which (according to PCI specification
2.2) is up to the hardware implementer). I'm not even sure it does.
Thanks for any help you can give.
Regards,
Rogier
Erik Mouw wrote:
On Fri, May 12, 2006 at 02:20:24PM +0200, Johannes Berg wrote:
I suspect endian issues, but I'm not familiar enough with the driver. Can
anyone confirm this?
Very unlikely, it is after all developed mainly on big-endian systems
(ppc).
An IXP425 isn't really a big-endian system but rather a little endian
system in which the CPU core is basically little endian, but on request
can run in big-endian mode. Here's an explanation on what's going on:
http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2001-November/006141.html
How is the card connected to your system?
Through a little endian bus.
Erik
_______________________________________________
Bcm43xx-dev mailing list
[email protected]
http://lists.berlios.de/mailman/listinfo/bcm43xx-dev