Re: [PATCH 1/2] EHCI big endian data structures support (for 440EPx) 2nd try

"Vladimir A. Barinov" <[email protected]>
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
Hi David,

David Brownell wrote:
> I cleaned it up a bunch ... can you verify this still works on your hardware?
> Sanity tested on x86_64.
>   
I've made the similar work to support big endian dma descriptors in EHCI 
since I have the board based on IXP4XX processor configured in BE mode 
and on-chip EHCI HCD that has BE descriptors. My patch is mostly close 
to this one except changes related to ehci cpufreq patch and 
constant_cpu_to_le32 conversations.

I confirm that these patch works fine with my BE h/w (IXP4XX) and also 
I've tested it with LE h/w (mips based board with LE on-SoC usb) in 
2.6.21-rc4.

But I would like to post a minor comments:
> The guts of the patch are to introduce the hc32 type and change all
> references from le32 to hc32.  All access routines are converted from
> cpu_to_le32(...) to cpu_to_hc32(ehci, ...) and similar for the other
> "direction".  (This is the same approach used with OHCI.)
>   
To be more close to OHCI approach we should add some additional Kconfig 
rules to
avoid run-time endianness checking for pure BE case (when MMIO and DESC 
have the same endianness).
I agree, now this is OK for pure LE and mixed (USB controller MMIO and 
DESC with differend endianness -
the related h/w is PPC PS3) cases.
This is safe for pure LE case via CONFIG_USB_EHCI_BIG_ENDIAN_{DESC,MMIO} 
options but is not for
pure BE case (the related h/w are AMCC PPC440EPx SoC and Intel IXP4XX 
processor).

> +#ifdef CONFIG_USB_EHCI_BIG_ENDIAN_DESC
> +typedef __u32 __bitwise __hc32;
> +typedef __u16 __bitwise __hc16;
> +#else
> +#define __hc32	__le32
> +#define __hc16	__le16
> +#endif
>   
__hc16 is useless for EHCI. This just provide a mess.
> +/*
> + * The AMCC 440EPx not only implements its EHCI registers in big-endian
> + * format, but also its DMA data structures (descriptors).
> + *
> + * EHCI controllers accessed through PCI work normally (little-endian
> + * everywhere), so we won't bother supporting a BE-only mode for now.
> + */
>   
Why not for now? :)
There are already 2 platforms that support BE-only mode.

It's simple to render the OHCI logic for EHCI. Also this will keep the 
identity. If you want I can prepare a patch over this one for your review.

Best regards,
Vladimir


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.