[U-Boot-Users] Setting processor endianess for USB modules

Markus Klotzbücher mk at denx.de
Wed Apr 30 10:34:11 CEST 2008


Dear Christian,

"Christian Eggers" <ceggers at gmx.de> writes:

> I've recognized that a lot of USB code in U-Boot uses the macros
> swap_16() and swap_32() which are defined in usb.h. The behaviour
> of the macros is controlled by the define LITTLEENDIAN.
>
> Is there a good reason NOT to use the macros provided in
> asm/byteorder.h (as in the appropriate code in Linux-2.4 )? 

Largely not. But be carefull. Besides big and little endian CPUs we also
have controllers that operate in big or little endian (see
CFG_OHCI_BE_CONTROLLER), and then there are PCI controllers whose
registers need to be accessed as little endian
(CFG_OHCI_SWAP_REG_ACCESS).

But your right, there is no real for LITTLEENDIAN.

> I think that switching to these functions might be useful in order
> to eliminate the need to use the LITTLEENDIAN define for
> specifying the byteorder. It seems that LITTLEENDIAN is not
> used outside the USB code.

Right. Patches cleaning this up are more than welcome! Please note that
cleaning up USB drivers under the cpu/ directory is a waste of time
though. Boards using these drivers should be converted to use the
generic infrastructure in drivers/usb/ instead.

Best regards

Markus Klotzbuecher

--
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: office at denx.de




More information about the U-Boot mailing list