I've always taken the comment "Atari has a byte-swapped IDE
interface" in
drivers/ide/falconide.c to mean that the bus interface bas been
implemented
swapped. What it _does_ appear to signify is that filesystem data to
and
from disk need to be handled differently from CD, floppy or tape
data. The
latter are explicitly swapped to/from LE to CPU byte order. The
former seems
to be written to disk without swapping. See
falconide_[in|out]put_data().
The only way this can be explained is by the LE IDE interface
connected to
the BE data bus 1:1 so data from the IDE interface appears in LE byte
order.
That's the correct way to implement LE devices on BE bus machines.
The convention for storing data on the IDE disks then seems to have
done
away with the need for conversion from 16 bit LE order, so everything
on
disk (partition table, filesystem metadata, file data) ends up in
opposite
byte order.
Actually the Atari one is byte-swapped, i.e. wired incorrectly.
The proper way to wire up LE to BE is to make sure raw data is
transfered
correctly, and that you have to use the le*_to_cpu() accessors to
access
multi-byte quantities. That way e.g. strings in files on the disk are
accessed
fine, and raw CD data doesn't need byte-swapping.
Due to the wrong wiring, CD data needs to be swapped, as the CD data
comes from a foreign system.
Hard drive data typically doesn't need swapping, as it is read AND
written
by an Atari system.