Davicom DM9000A on MPC5200B (powerpc) works using a dirty offsetting and byte trick

Juergen Beisert jbe at pengutronix.de
Sat Mar 7 21:09:48 EST 2009


Henk,

On Freitag, 20. Februar 2009, Henk Stegeman wrote:
> - Any suggestions to what could be wrong here? Or does the MPC5200 in
> this case only byte swap u16 reads, but a u8 read is unchanged?

You should not follow the Freescale bus signal names when you connect your 
external little endian device. Otherwise the offsets are always wrong.

Do it in this way instead:

    MPC          LE Device
  D[0..7]   <->  D[24..31]
  D[8..15]  <->  D[16..23]
  D[16..23] <->  D[8..15]
  D[24..31] <->  D[0..7]

If you connect your device in such a way, just enable CS's byte swap feature 
depending on your bus size and you are done (no additional software 
manipulation required). Now you can write bytes, words or longs and you will 
always write the correct data into the corresponding device register.

Hope it helps
Juergen

-- 
Pengutronix e.K.                              | Juergen Beisert             |
Linux Solutions for Science and Industry      | Phone: +49-8766-939 228     |
Vertretung Sued/Muenchen, Germany             | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686              | http://www.pengutronix.de/  |



More information about the Linuxppc-dev mailing list