Johannes Berg wrote:
Hey,
As promised the output. The data read is the data read from the SPROM. As
you can see the default read16 routine outputs only useless information.
Yeah. That sucks.
Bcm43xx_read32 only outputs the low 16 bits for the 4 byte aligned
addresses (as expected), and only doing 2 8 bit accesses (one for the low
byte and one for the high byte) clearly doesn't work very well either.
Using the code as described in the previous post, the data in the last
table looks promising, but for the low byte on the word boundary
addresses.
Hmm. I'm not sure it is correct. Please check the specs and see if the
mac address is correct. Still, I think you should be taking this up with
the generic pci support in your kernel... It can hardly be bcm specific.
johannes
Hi Johannes,
Thanks for the reply. Yeah its not BCM specific. It's a bug in the
silicon. Basically put, for every byte in a 32 bit word you have one
byte enable line. Depending on if you transfer a byte, a word or a dword
one or more of these byte enable lines will be active high for the ones
that transfer, and active low for the ones that don't (i'm not sure if
it is a low voltage level or a high one, for the explanation of this bug
it doesn't matter). However when doing a 16 bit word, the IXP425 will
set all 4 byte enable lines high on a memory read transaction. That's
where it goes wrong....... The problem is that the PCI card in question
(in this case the bcm4306) must allow you to do byte or dword reads
instead to work around. It's not a guarantee that if it works for one
it'll work for another card. The official workaround requires a hardware
modification and a kernel modification, but as most of these boards are
already done, that's not a very good solution. My hope is that it is
possible with a workaround instead.
As for the MAC address, it is 00:90:4B:B9:23:8F. If you check in the
table I pasted before, it'll read 00:49:4B:B9:23:4D. Thats how I know
which words are correct and which are not. It's close, but not close
enough :S
Do you have any idea if all 16 bit registers on the card work in the
same way (e.g cannot be read 32 bit or 8 bit at a time) or if this only
goes for the SPROM?
Regards,
Rogier
_______________________________________________
Bcm43xx-dev mailing list
[email protected]
http://lists.berlios.de/mailman/listinfo/bcm43xx-dev