M:Robe 500: Make endpoint requests more flexible.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22262 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
cc4be72d15
commit
771b35b7be
1 changed files with 24 additions and 20 deletions
|
@ -575,38 +575,42 @@ int usb_drv_request_endpoint(int type, int dir) {
|
|||
int ep;
|
||||
int pipecfg = 0;
|
||||
|
||||
/* The endpoint/pipes are hard coded: This could be more flexible */
|
||||
if (type == USB_ENDPOINT_XFER_BULK) {
|
||||
/* Enalbe double buffer mode */
|
||||
/* Enable double buffer mode (only used for ep 1 and 2) */
|
||||
pipecfg |= 1<<9;
|
||||
|
||||
if (dir == USB_DIR_IN) {
|
||||
pipecfg |= (1<<4);
|
||||
ep = 2;
|
||||
} else {
|
||||
ep = 1;
|
||||
/* Bulk endpoints must be between 1 and 4 inclusive */
|
||||
ep=1;
|
||||
|
||||
while(M66591_eps[ep].busy && ep++<5);
|
||||
|
||||
/* If this reached 5 the endpoints were all busy */
|
||||
if(ep==5) {
|
||||
logf("mxx: ep %d busy", ep);
|
||||
return -1;
|
||||
}
|
||||
} else if (type == USB_ENDPOINT_XFER_INT) {
|
||||
if (dir == USB_DIR_IN) {
|
||||
pipecfg |= (1<<4);
|
||||
ep = 6;
|
||||
} else {
|
||||
ep = 5;
|
||||
ep=5;
|
||||
|
||||
while(M66591_eps[ep].busy && ep++<7);
|
||||
|
||||
/* If this reached 7 the endpoints were all busy */
|
||||
if(ep==7) {
|
||||
logf("mxx: ep %d busy", ep);
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
/* Not a supported type */
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
if (!M66591_eps[ep].busy) {
|
||||
M66591_eps[ep].busy = true;
|
||||
M66591_eps[ep].dir = dir;
|
||||
} else {
|
||||
logf("mxx: ep %d busy", ep);
|
||||
return -1;
|
||||
|
||||
if (dir == USB_DIR_IN) {
|
||||
pipecfg |= (1<<4);
|
||||
}
|
||||
|
||||
M66591_eps[ep].busy = true;
|
||||
M66591_eps[ep].dir = dir;
|
||||
|
||||
M66591_PIPE_CFGSEL=ep;
|
||||
|
||||
/* Enable pipe (15) and continuous transfer mode (8) */
|
||||
|
|
Loading…
Reference in a new issue