FS#12083 - Add delay to usb-s3c6400x init to fix usb hang on some ipod classics

Attached to Project: Rockbox
Opened by Nils Wallménius (nls) - Thursday, 28 April 2011, 17:45 GMT
Last edited by Nils Wallménius (nls) - Saturday, 19 November 2011, 11:18 GMT
Task Type Patches
Category Drivers
Status Closed
Assigned To No-one
Operating System All players
Severity Low
Priority Normal
Reported Version Release 3.8.1
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No


This fixes usb mode in rb hanging on my classic 120GB. Starting with usb connected still hangs though... does that work on other classics?
This task depends upon

Closed by  Nils Wallménius (nls)
Saturday, 19 November 2011, 11:18 GMT
Reason for closing:  Accepted
Additional comments about closing:  This has been comitted
Comment by Nils Wallménius (nls) - Friday, 29 April 2011, 12:20 GMT
Slightly better patch that uses udelays instead of delay loops and makes the delays as long as the bootrom uses, also changes the order of a few things to be more similar to the bootrom. The hang when booting with usb connected is still present, it hangs when waiting for GRSTCTL & 1, i think that's unrelated.
Comment by Nils Wallménius (nls) - Sunday, 01 May 2011, 19:01 GMT
Changed usb_drv_exit to do the powerdown like the bootrom does and it seems to have fixed the hang on startup, the order of some writes is slightly different, set more bits in ORSTCON and add in delays for good measure.
Comment by Nils Wallménius (nls) - Monday, 02 May 2011, 20:37 GMT
2 people reported that this patch caused usb connections to be successfully established less often on their nano2g's so i guess it needs more investigation.