diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2011-03-02 08:49:38 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2011-03-02 08:49:38 +0000 |
commit | 12375d1d3aa41f7d277a9af584c7b810b636ec95 (patch) | |
tree | fc9ce8029a6910a8dac71b3bf60c71155a01eea4 /firmware/target/arm/usb-drv-arc.c | |
parent | 05e180a1308a095d51d51d0e047fcd44425ea88f (diff) | |
download | rockbox-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.c | 14 |
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 { | |||
349 | static struct queue_head qh_array[USB_NUM_ENDPOINTS*2] | 349 | static struct queue_head qh_array[USB_NUM_ENDPOINTS*2] |
350 | USB_QHARRAY_ATTR; | 350 | USB_QHARRAY_ATTR; |
351 | 351 | ||
352 | static struct wakeup transfer_completion_signal[USB_NUM_ENDPOINTS*2] | 352 | static struct semaphore transfer_completion_signal[USB_NUM_ENDPOINTS*2] |
353 | SHAREDBSS_ATTR; | 353 | SHAREDBSS_ATTR; |
354 | 354 | ||
355 | static const unsigned int pipe2mask[] = { | 355 | static const unsigned int pipe2mask[] = { |
@@ -424,7 +424,7 @@ void usb_drv_startup(void) | |||
424 | /* Initialize all the signal objects once */ | 424 | /* Initialize all the signal objects once */ |
425 | int i; | 425 | int i; |
426 | for(i=0;i<USB_NUM_ENDPOINTS*2;i++) { | 426 | for(i=0;i<USB_NUM_ENDPOINTS*2;i++) { |
427 | wakeup_init(&transfer_completion_signal[i]); | 427 | semaphore_init(&transfer_completion_signal[i], 1, 0); |
428 | } | 428 | } |
429 | } | 429 | } |
430 | 430 | ||
@@ -778,7 +778,7 @@ static int prime_transfer(int ep_num, void* ptr, int len, bool send, bool wait) | |||
778 | 778 | ||
779 | if (wait) { | 779 | if (wait) { |
780 | /* wait for transfer to finish */ | 780 | /* wait for transfer to finish */ |
781 | wakeup_wait(&transfer_completion_signal[pipe], TIMEOUT_BLOCK); | 781 | semaphore_wait(&transfer_completion_signal[pipe], TIMEOUT_BLOCK); |
782 | if(qh->status!=0) { | 782 | if(qh->status!=0) { |
783 | /* No need to cancel wait here since it was done and the signal | 783 | /* No need to cancel wait here since it was done and the signal |
784 | * came. */ | 784 | * came. */ |
@@ -797,7 +797,7 @@ pt_error: | |||
797 | qh->wait = 0; | 797 | qh->wait = 0; |
798 | /* Make sure to remove any signal if interrupt fired before we zeroed | 798 | /* Make sure to remove any signal if interrupt fired before we zeroed |
799 | * qh->wait. Could happen during a bus reset for example. */ | 799 | * qh->wait. Could happen during a bus reset for example. */ |
800 | wakeup_wait(&transfer_completion_signal[pipe], TIMEOUT_NOBLOCK); | 800 | semaphore_wait(&transfer_completion_signal[pipe], TIMEOUT_NOBLOCK); |
801 | } | 801 | } |
802 | 802 | ||
803 | return rc; | 803 | return rc; |
@@ -814,7 +814,7 @@ void usb_drv_cancel_all_transfers(void) | |||
814 | if(qh_array[i].wait) { | 814 | if(qh_array[i].wait) { |
815 | qh_array[i].wait=0; | 815 | qh_array[i].wait=0; |
816 | qh_array[i].status=DTD_STATUS_HALTED; | 816 | qh_array[i].status=DTD_STATUS_HALTED; |
817 | wakeup_signal(&transfer_completion_signal[i]); | 817 | semaphore_release(&transfer_completion_signal[i]); |
818 | } | 818 | } |
819 | } | 819 | } |
820 | } | 820 | } |
@@ -906,7 +906,7 @@ static void control_received(void) | |||
906 | if(qh_array[i].wait) { | 906 | if(qh_array[i].wait) { |
907 | qh_array[i].wait=0; | 907 | qh_array[i].wait=0; |
908 | qh_array[i].status=DTD_STATUS_HALTED; | 908 | qh_array[i].status=DTD_STATUS_HALTED; |
909 | wakeup_signal(&transfer_completion_signal[i]); | 909 | semaphore_release(&transfer_completion_signal[i]); |
910 | } | 910 | } |
911 | } | 911 | } |
912 | 912 | ||
@@ -945,7 +945,7 @@ static void transfer_completed(void) | |||
945 | } | 945 | } |
946 | if(qh->wait) { | 946 | if(qh->wait) { |
947 | qh->wait=0; | 947 | qh->wait=0; |
948 | wakeup_signal(&transfer_completion_signal[pipe]); | 948 | semaphore_release(&transfer_completion_signal[pipe]); |
949 | } | 949 | } |
950 | 950 | ||
951 | usb_core_transfer_complete(ep, dir?USB_DIR_IN:USB_DIR_OUT, | 951 | usb_core_transfer_complete(ep, dir?USB_DIR_IN:USB_DIR_OUT, |