On Thu, Jun 16, 2005 at 10:18:01AM +0000, Jochen Karrer wrote:
> Hi,
> I need an OHCI with Register and DMA descriptor byteorder separate
> switchable.
> 
> A PCI machine has little endian OHCI registers and little endian Endpoint
> and transfer descriptors. For a non PCI OHCI (Netsilicon NS9750 ARM). I need
> big endian OHCI registers with little endian DMA descriptors.
> 
> The current implementation of big_endian() in ohci.h allows only to switch
> both byteorders together.
> So my proposal is to use two macros instead of one:
> 
> #define big_endian_descriptors() ....
> #define big_endian_registers() ....

Sounds reasonable.  Please submit code when you get it working. :)

> I'm not sure if isochronous transfers will work correctly in the current
> implementation when big endian descriptors are used because the array hwPSW
> is defined as 16 Bit:
> 
> __hc16          hwPSW [MAXPSW];
> 
> But I think that big endian transfer descriptor means that hardware does a
> swap32 and this can not be inverted by a
> cpu_to_hc16 like in ohci-q.c. I suspect that the hwPSW[] fields will be
> swapped pairwise when Big endian DMA descriptors are used. (hwPSW[0] with
> hwPSW[1]....)

This swapping is handled by ohci_hwPSWp().  Isochronous transfers do
work on the two PPC OHCI implementations I've used.

-Dale


-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to