Hi,

> I needed to modify the drivers/usb/Makefile before it would compile
> in:
> 
> diff -dbBurN linux-2.6.11-mm2/drivers/usb/Makefile
> linux-2.6.11-mm2-oscar4_usb/drivers/usb/Makefile
> --- linux-2.6.11-mm2/drivers/usb/Makefile       2005-04-25
> 15:29:50.000000000 -0500
> +++ linux-2.6.11-mm2-oscar4_usb/drivers/usb/Makefile    2005-04-25
> 16:51:24.000000000 -0500
> @@ -12,6 +12,7 @@
>  obj-$(CONFIG_USB_OHCI_HCD)     += host/
>  obj-$(CONFIG_USB_UHCI_HCD)     += host/
>  obj-$(CONFIG_USB_SL811_HCD)    += host/
> +obj-$(CONFIG_USB_ISP1362_HCD)   += host/
>  obj-$(CONFIG_ETRAX_USB_HOST)   += host/
> 
>  obj-$(CONFIG_USB_ACM)          += class/
> 
Sorry, I missed this file when creating the patch.

> I had some trouble at first with HCuPINT_CLKRDY, but we solved that
> earlier in the list.  I used the define 'USE_32BIT' to 0.
> Isn't the ISP1362 16-bit only?  You can do 32-bit accesses on the
> 16-bit bus, but then you violate the (fussy) timing for sure!  That
>
That depends on the capabilities of the processors memory
interface. At least on PXA you can program the memory timing so that
individual memory cycles don't require any software delays. The timing
specs are fully met even for 32 bit accesses.

> I had a bigger problem with the isp1362_[read,write]_fifo
> functions.. the writesl / writesw calls also completely violated
> the timing requirements.  They caused back-to-back writes (and I'm
> assuming reads) with 20ns write-high-to-write-low time, but it has
> to be 110ns.  I don't think this can be solved (atleast on my chip)
> with bus timing, so I rewrote these functions to be simpler.  Since
>
If this is the case you probably also had to introduce software
delays in the isp1362_read_data16() and isp1362_write_data16()
functions.
And you probably also should have an OR gate in your hardware that
prevents the chips WE being asserted when CS is deasserted as
recommended in the ISP1362 Errata Document. Otherwise you possibly
cannot guarantee the 132ns idle time between successive assertions of
WE (no matter whether CS is asserted also).

Did you enable the CHIP_BUFFER_TEST to assert that your accesses to
the chip registers and buffers are working porperly?

>         if (len >= 2) {
>                 RDBG("%s: Using readsw for %d words\n",
> __FUNCTION__, len >> 1);
>                 readsw(isp1362_hcd->data_reg, dp, len >> 1);
> @@ -736,6 +771,22 @@
>                      (u8)data, (u32)dp);
>                 *dp = (u8)data;
>         }
> +#else
> +        while ( len >= 2 )
> +        {
> +            data = isp1362_read_data16(isp1362_hcd);
> +            *dp++ = (u8)data;
> +            *dp++ = (u8)(data >> 8);
> +            len -= 2;
> +        }
> +
> +        if ( len > 0 )
> +        {
> +            data = isp1362_read_data16(isp1362_hcd);
> +            *dp++ = (u8)data;
> +            len--;
> +        }
> +#endif
>  }
The '(len > 0)' case should be the same under all circumstances, so
the '#endif' could be placed right before it.


Lothar Wassmann


-------------------------------------------------------
SF.Net email is sponsored by: Tell us your software development plans!
Take this survey and enter to win a one-year sub to SourceForge.net
Plus IDC's 2005 look-ahead and a copy of this survey
Click here to start!  http://www.idcswdc.com/cgi-bin/survey?id=105hix
_______________________________________________
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