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

Henk Stegeman henk.stegeman at gmail.com
Mon Mar 9 20:32:19 EST 2009


Juergen,


I don't understand how this would work,

Now I do one byte-swap, which works.
 -I byteswap in software, for 16-bit cycles by byte swapping and for 8
bit cycles by adding an offset of 1.
 (The byte swapping on the chipselect is off)

Your advice includes two byteswaps, one by re-routing the data bus and
one by enabling the byte swap on the chip-select.
Or does one of them not really swap bytes?


Henk

On Sat, Mar 7, 2009 at 11:09 AM, Juergen Beisert <jbe at pengutronix.de> wrote:
> 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