summaryrefslogtreecommitdiffstats
path: root/firmware/target/arm/usb-drv-arc.c
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2011-03-02 08:49:38 +0000
committerMichael Sevakis <jethead71@rockbox.org>2011-03-02 08:49:38 +0000
commit12375d1d3aa41f7d277a9af584c7b810b636ec95 (patch)
treefc9ce8029a6910a8dac71b3bf60c71155a01eea4 /firmware/target/arm/usb-drv-arc.c
parent05e180a1308a095d51d51d0e047fcd44425ea88f (diff)
downloadrockbox-12375d1d3aa41f7d277a9af584c7b810b636ec95.tar.gz
rockbox-12375d1d3aa41f7d277a9af584c7b810b636ec95.zip
Merge functionality of wakeups and semaphores-- fewer APIs and object types. semaphore_wait takes a timeout now so codecs and plugins have to be made incompatible. Don't make semaphores for targets not using them.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29492 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/usb-drv-arc.c')
-rw-r--r--firmware/target/arm/usb-drv-arc.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/firmware/target/arm/usb-drv-arc.c b/firmware/target/arm/usb-drv-arc.c
index fc74ce5bf0..f252f11f3e 100644
--- a/firmware/target/arm/usb-drv-arc.c
+++ b/firmware/target/arm/usb-drv-arc.c
@@ -349,7 +349,7 @@ struct queue_head {
static struct queue_head qh_array[USB_NUM_ENDPOINTS*2]
USB_QHARRAY_ATTR;
-static struct wakeup transfer_completion_signal[USB_NUM_ENDPOINTS*2]
+static struct semaphore transfer_completion_signal[USB_NUM_ENDPOINTS*2]
SHAREDBSS_ATTR;
static const unsigned int pipe2mask[] = {
@@ -424,7 +424,7 @@ void usb_drv_startup(void)
/* Initialize all the signal objects once */
int i;
for(i=0;i<USB_NUM_ENDPOINTS*2;i++) {
- wakeup_init(&transfer_completion_signal[i]);
+ semaphore_init(&transfer_completion_signal[i], 1, 0);
}
}
@@ -778,7 +778,7 @@ static int prime_transfer(int ep_num, void* ptr, int len, bool send, bool wait)
if (wait) {
/* wait for transfer to finish */
- wakeup_wait(&transfer_completion_signal[pipe], TIMEOUT_BLOCK);
+ semaphore_wait(&transfer_completion_signal[pipe], TIMEOUT_BLOCK);
if(qh->status!=0) {
/* No need to cancel wait here since it was done and the signal
* came. */
@@ -797,7 +797,7 @@ pt_error:
qh->wait = 0;
/* Make sure to remove any signal if interrupt fired before we zeroed
* qh->wait. Could happen during a bus reset for example. */
- wakeup_wait(&transfer_completion_signal[pipe], TIMEOUT_NOBLOCK);
+ semaphore_wait(&transfer_completion_signal[pipe], TIMEOUT_NOBLOCK);
}
return rc;
@@ -814,7 +814,7 @@ void usb_drv_cancel_all_transfers(void)
if(qh_array[i].wait) {
qh_array[i].wait=0;
qh_array[i].status=DTD_STATUS_HALTED;
- wakeup_signal(&transfer_completion_signal[i]);
+ semaphore_release(&transfer_completion_signal[i]);
}
}
}
@@ -906,7 +906,7 @@ static void control_received(void)
if(qh_array[i].wait) {
qh_array[i].wait=0;
qh_array[i].status=DTD_STATUS_HALTED;
- wakeup_signal(&transfer_completion_signal[i]);
+ semaphore_release(&transfer_completion_signal[i]);
}
}
@@ -945,7 +945,7 @@ static void transfer_completed(void)
}
if(qh->wait) {
qh->wait=0;
- wakeup_signal(&transfer_completion_signal[pipe]);
+ semaphore_release(&transfer_completion_signal[pipe]);
}
usb_core_transfer_complete(ep, dir?USB_DIR_IN:USB_DIR_OUT,