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

Reply via email to