1
0
Fork 0
forked from len0rd/rockbox

Fix iPod Nano 2G USB:

1. Fix a copy paste bug (thanks for catching that one, liar)
2. Use a dummy DMA address for zero-length transfers as some devices seem to need this, and it can't hurt.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24263 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Michael Sparmann 2010-01-17 19:05:42 +00:00
parent 703e0d0e9c
commit 5b94d44cc0

View file

@ -276,9 +276,16 @@ void ep_send(int ep, void *ptr, int length)
DIEPCTL(ep) |= 0x8000; /* EPx OUT ACTIVE */
int blocksize = usb_drv_port_speed() ? 512 : 64;
int packets = (length + blocksize - 1) / blocksize;
if (!length) DIEPTSIZ(ep) = 1 << 19; /* one empty packet */
else DIEPTSIZ(ep) = length | (packets << 19);
if (!length)
{
DIEPTSIZ(ep) = 1 << 19; /* one empty packet */
DIEPDMA(ep) = 0x10000000; /* dummy address */
}
else
{
DIEPTSIZ(ep) = length | (packets << 19);
DIEPDMA(ep) = (uint32_t)ptr;
}
clean_dcache();
DIEPCTL(ep) |= 0x84000000; /* EPx OUT ENABLE CLEARNAK */
}
@ -291,9 +298,16 @@ void ep_recv(int ep, void *ptr, int length)
DOEPCTL(ep) |= 0x8000; /* EPx OUT ACTIVE */
int blocksize = usb_drv_port_speed() ? 512 : 64;
int packets = (length + blocksize - 1) / blocksize;
if (!length) DIEPTSIZ(ep) = 1 << 19; /* one empty packet */
else DOEPTSIZ(ep) = length | (packets << 19);
if (!length)
{
DOEPTSIZ(ep) = 1 << 19; /* one empty packet */
DOEPDMA(ep) = 0x10000000; /* dummy address */
}
else
{
DOEPTSIZ(ep) = length | (packets << 19);
DOEPDMA(ep) = (uint32_t)ptr;
}
clean_dcache();
DOEPCTL(ep) |= 0x84000000; /* EPx OUT ENABLE CLEARNAK */
}