Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 13 Dec 2008 12:02:55 -0800
From:      Sam Leffler <sam@freebsd.org>
To:        Hans Petter Selasky <hselasky@c2i.net>
Cc:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   Re: PERFORCE change 154573 for review
Message-ID:  <494414EF.3080403@freebsd.org>
In-Reply-To: <200812131005.33499.hselasky@c2i.net>
References:  <200812122326.mBCNQX6w024511@repoman.freebsd.org> <200812131005.33499.hselasky@c2i.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Hans Petter Selasky wrote:
> On Saturday 13 December 2008, Sam Leffler wrote:
>   
>> http://perforce.freebsd.org/chv.cgi?CH=154573
>>
>> Change 154573 by sam@sam_ebb on 2008/12/12 23:25:40
>>
>> 	Checkpoint cambria/ixp435 ehci support: add EHCI_SCFLG_BIGEDESC
>> 	flag to force descriptor contents to be left in big-endian byte
>> 	order intead of little-endian; this is required by the ixp435
>> 	builtin controllers.
>>     
>
> I would prefer if you could implement this using ifdefs.
>
> ehcireg.h:
>
> #ifdef HOST_ENDIAN_BUILD
> #undef htole32
> #define htole32 htobe32
> ...
> #define EXTERNAL(name) name##_be
> #else
> #define EXTERNAL(name) name##_le
> #endif
>   

I intend to add a global #define to control inclusion of this feature 
before I push it to the tree.

> ehci_wrap.c: (new file)
>
> void
> ehci_init(ehci_sc_t *sc)
> {
> 	if (force use bigendian)
> 		ehci_init_be(sc);
> 	else
> 		ehci_init_le(sc);
> 	return;
> }
>
> And the same for all other globally exported functions from ehci.c which are 
> not so many!
>
> ehci.c:
>
> void
> EXTERNAL(ehci_init)(ehci_sc_t *sc)
> {
> 	... same like before ...
> }
>
> ehci_be.c:
> #define HOST_ENDIAN_BUILD
> #include <sys/dev/usb/ehci.c>
>   

Er, that's about as bad a coding practice as computed goto's.  I haven't 
decided whether to make the initial ehci controller attach logic generic 
or leave it buried in the bus space ops as currently done.

>   
>> 	Operations now go through the controller 
>> 	and are returned but always w/ an error; still working on why.
>>
>>     
>
> Maybe a cache sync issue.
>
>   
No.  But if you are interested in helping debug the problem I'm happy to 
send you debug output.  The controller rejects all cmds setting the 
ERRINT status bit.  The qTD contents and xfer contents look fine but I 
haven't been able to identify the cause given the overlay qTD contents.  
I'm in the process of collecting comparative traces from linux where usb 
works.

    Sam




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?494414EF.3080403>