use 0, 1, 3 as input endpoints instead of 0, 3, 5 (0, 1, 3, 5 doesn't work)
use a helper to know the number of endpoints (could be hardcoded since we have 3 input and 3 outputs)
previous check was not correct (sizeof(if?a:b))
change endpoint reset/request
set packet size at enumdone interrupt
we don't have isochronous or interrupt endpoints, remove that table
reverse usb_drv_transfer direction argument (in -> out)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31251 a1c6a512-1295-4272-9138-f99709370657
code, especially init sequence, is much more similar to usb-s3c6400x.c
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31231 a1c6a512-1295-4272-9138-f99709370657
Use common defines in usb-s3c6400.c and usb-drv-as3525v2.c
No functional changes
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31220 a1c6a512-1295-4272-9138-f99709370657
* make sure that the buffer for struct usb_ctrlrequest can fit a full 64-byte packet
* align struct usb_ctrlrequest to a cacheline (32-byte alignment)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31063 a1c6a512-1295-4272-9138-f99709370657
Ensure no changes when we use different versions of gcc (USB used to panic with gcc 4.6.0)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29818 a1c6a512-1295-4272-9138-f99709370657
IN & OUT interrupts have not much in common so move each to its own
function
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28043 a1c6a512-1295-4272-9138-f99709370657
- reorder members (largest members first)
- int status -> int8_t status (we only use 0 or -1)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28042 a1c6a512-1295-4272-9138-f99709370657
- use a single table to store endpoints numbers (1 table by direction)
- drop __ prefix since the table isn't meant to be hidden (it is used in
reset_endpoints()
- the tables won't change at runtime: mark const
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28038 a1c6a512-1295-4272-9138-f99709370657
set status to failure before signaling usb_drv_send_nonblocking() in
reset_endpoints()
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28037 a1c6a512-1295-4272-9138-f99709370657
Use ep0_setup_pkt as a pointer
Fix comment for CGU_USB clk source
Remove comment about physical address, the macro handles that for us
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28035 a1c6a512-1295-4272-9138-f99709370657
Since we'll receive data from DMA in this buffer we don't need to write-back
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28032 a1c6a512-1295-4272-9138-f99709370657
- don't use *_dcache_range() on uncached memory
- remove unused struct endpoint->buffer
- use correct *_dcache_range() in usb_drv_transfer() for each direction
- halve FIFO size
sometimes mounts / sometimes fails
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28031 a1c6a512-1295-4272-9138-f99709370657
- implement request_endpoint
- setup nextep chain for in endpoints
- remove useless dcache operation on IN transfer completion
- fix transfers to use correct max packet size
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28028 a1c6a512-1295-4272-9138-f99709370657
- use uncached address to access setup packet
- implement driver exit
- stop forcing full speed
- change fifo sizes on init
- don't call invalid_dache() on setup packet because it makes everything fail
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28027 a1c6a512-1295-4272-9138-f99709370657
- change buffer alignement to 32 bytes (not sure if it's useful)
- flush rx fifo on reset
- use AS3525_PHYSICAL_ADDR for DMA
- reset endpoints structure states on reset
- force full speed for debugging purpose
- add more debugging code
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27986 a1c6a512-1295-4272-9138-f99709370657
There was a stupid bug in endpoint listing which caused random cancelling of EP0 transfers. The new scheme to handle EP0 transfers should avoid an unexpected setup packet which might cause a deadlock or confuse the core.
There is still an issue with the cancel_transfers function is still.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27178 a1c6a512-1295-4272-9138-f99709370657
There is still a problem after the set address request which makes the driver working randomly.
I still didn't manage do get a proper disconnect interrupt.
From time to time, when unplugging cable, neither rockbox nor usb driver reports disconnect even.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27161 a1c6a512-1295-4272-9138-f99709370657