Use mutexes instead of semaphores in the ELAN U132 Host Controller Driver
PATCH 1/2 ELAN U132 Host Controller Driver: convert sw_lock to mutex
In reply to Matthias KaehlckeThe ELAN U132 Host Controller Driver uses the semaphore sw_lock as mutex. Use the mutex API instead of the (binary) semaphore.
--
drivers/usb/host/u132-hcd.c +17 -17
@@ -184,7 +184,7 @@ struct u132_ring {struct u132 {struct kref kref;struct list_head u132_list; -struct semaphore sw_lock; +struct mutex sw_lock;struct semaphore scheduler_lock;struct u132_platform_data *board;struct platform_device *platform_dev;
@@ -493,20 +493,20 @@ static void u132_hcd_monitor_work(struct work_struct *work)return ; }else {int retval; -down (&u132->sw_lock); +mutex_lock (&u132->sw_lock); retval =read_roothub_info (u132);if (retval) {struct usb_hcd *hcd =u132_to_hcd (u132);u132_disable (u132); u132->going =1 ; -up (&u132->sw_lock); +mutex_unlock (&u132->sw_lock);usb_hc_died (hcd);ftdi_elan_gone_away (u132->platform_dev);u132_monitor_put_kref (u132);return ; }else {u132_monitor_requeue_work (u132,500 ); -up (&u132->sw_lock); +mutex_unlock (&u132->sw_lock);return ; } }
@@ -1805,10 +1805,10 @@ static void u132_hcd_stop(struct usb_hcd *hcd)dev_err (&u132->platform_dev->dev,"device hcd=%p is being remov" "ed\n" , hcd); }else { -down (&u132->sw_lock); +mutex_lock (&u132->sw_lock);msleep (100 );u132_power (u132,0 ); -up (&u132->sw_lock); +mutex_unlock (&u132->sw_lock); } }
@@ -1830,7 +1830,7 @@ static int u132_hcd_start(struct usb_hcd *hcd) (pdev->dev.platform_data))->vendor;u16 device = ((struct u132_platform_data *) (pdev->dev.platform_data))->device; -down (&u132->sw_lock); +mutex_lock (&u132->sw_lock);msleep (10 );if (vendor ==PCI_VENDOR_ID_AMD && device ==0x740c ) { u132->flags =OHCI_QUIRK_AMD756 ;
@@ -1845,7 +1845,7 @@ static int u132_hcd_start(struct usb_hcd *hcd) u132->going =1 ; }msleep (100 ); -up (&u132->sw_lock); +mutex_unlock (&u132->sw_lock);return retval; }else {dev_err (&u132->platform_dev->dev,"platform_device missing\n" );
@@ -1865,13 +1865,13 @@ static int u132_hcd_reset(struct usb_hcd *hcd)return -ESHUTDOWN ; }else {int retval; -down (&u132->sw_lock); +mutex_lock (&u132->sw_lock); retval =u132_init (u132);if (retval) {u132_disable (u132); u132->going =1 ; } -up (&u132->sw_lock); +mutex_unlock (&u132->sw_lock);return retval; } }
@@ -2805,7 +2805,7 @@ static int u132_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,return -ESHUTDOWN ; }else {int retval =0 ; -down (&u132->sw_lock); +mutex_lock (&u132->sw_lock);switch (typeReq) {case ClearHubFeature:switch (wValue) {
@@ -2868,7 +2868,7 @@ static int u132_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, stall:retval = -EPIPE ;break ; } -up (&u132->sw_lock); +mutex_unlock (&u132->sw_lock);return retval; } }
@@ -3004,7 +3004,7 @@ static int __devexit u132_remove(struct platform_device *pdev)dev_err (&u132->platform_dev->dev,"removing device u132" ".%d\n" , u132->sequence_num);msleep (100 ); -down (&u132->sw_lock); +mutex_lock (&u132->sw_lock);u132_monitor_cancel_work (u132);while (rings-- >0 ) {struct u132_ring *ring = &u132->ring[rings];
@@ -3017,7 +3017,7 @@ static int __devexit u132_remove(struct platform_device *pdev) u132->going +=1 ;printk (KERN_INFO "removing device u132.%d\n" , u132->sequence_num); -up (&u132->sw_lock); +mutex_unlock (&u132->sw_lock);usb_remove_hcd (hcd);u132_u132_put_kref (u132);return 0 ;
@@ -3037,7 +3037,7 @@ static void u132_initialise(struct u132 *u132, struct platform_device *pdev) u132->platform_dev = pdev; u132->power =0 ; u132->reset =0 ; -init_MUTEX (&u132->sw_lock); +mutex_init (&u132->sw_lock);init_MUTEX (&u132->scheduler_lock);while (rings-- >0 ) {struct u132_ring *ring = &u132->ring[rings];
@@ -3047,7 +3047,7 @@ static void u132_initialise(struct u132 *u132, struct platform_device *pdev) ring->curr_endp =NULL ;INIT_DELAYED_WORK (&ring->scheduler, u132_hcd_ring_work_scheduler); - }down (&u132->sw_lock); + }mutex_lock (&u132->sw_lock);INIT_DELAYED_WORK (&u132->monitor, u132_hcd_monitor_work);while (ports-- >0 ) {struct u132_port *port = &u132->port[ports];
@@ -3077,7 +3077,7 @@ static void u132_initialise(struct u132 *u132, struct platform_device *pdev)while (endps-- >0 ) { u132->endp[endps] =NULL ; } -up (&u132->sw_lock); +mutex_unlock (&u132->sw_lock);return ; }
Signature · 11 lines
Matthias Kaehlcke
Linux Application Developer
Barcelona
If you don't know where you are going,
you will probably end up somewhere else
(Laurence J. Peter)
.''`.
using free software / Debian GNU/Linux | http://debian.org : :' :
`. `'`
gpg --keyserver pgp.mit.edu --recv-keys 47D8E5D4 `-cover Use mutexes instead of semaphores in the ELAN U132 Host Controller Driver
This patchset converts sw_lock and scheduler_lock in the ELAN U132 Host Controller Driver from semaphores to the mutex API
Signature · 11 lines
Matthias Kaehlcke
Linux Application Developer
Barcelona
La libertad es como la mañana. Hay quienes esperan dormidos a que
llegue, pero hay quienes desvelan y caminan la noche para alcanzarla
(Subcomandante Marcos)
.''`.
using free software / Debian GNU/Linux | http://debian.org : :' :
`. `'`
gpg --keyserver pgp.mit.edu --recv-keys 47D8E5D4 `-PATCH 2/2 ELAN U132 Host Controller Driver: convert scheduler_lock to mutex
The ELAN U132 Host Controller Driver uses the semaphore scheduler_lock as mutex. Use the mutex API instead of the (binary) semaphore.
--
drivers/usb/host/u132-hcd.c +109 -109
@@ -185,7 +185,7 @@ struct u132 {struct kref kref;struct list_head u132_list;struct semaphore sw_lock; -struct semaphore scheduler_lock; +struct mutex scheduler_lock;struct u132_platform_data *board;struct platform_device *platform_dev;struct u132_ring ring[MAX_U132_RINGS ];
@@ -536,12 +536,12 @@ static void u132_hcd_giveback_urb(struct u132 *u132, struct u132_endp *endp, endp->active =0 ;spin_unlock_irqrestore (&endp->queue_lock.slock, irqs);kfree (urbq); - }down (&u132->scheduler_lock); + }mutex_lock (&u132->scheduler_lock); ring = endp->ring; ring->in_use =0 ;u132_ring_cancel_work (u132, ring);u132_ring_queue_work (u132, ring,0 ); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp);usb_hcd_giveback_urb (hcd, urb);return ;
@@ -633,22 +633,22 @@ static void u132_hcd_interrupt_recv(void *data, struct urb *urb, u8 *buf,struct u132 *u132 = endp->u132;u8 address = u132->addr[endp->usb_addr].address;struct u132_udev *udev = &u132->udev[address]; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) {
@@ -667,7 +667,7 @@ static void u132_hcd_interrupt_recv(void *data, struct urb *urb, u8 *buf, 1 & toggle_bits);if (urb->actual_length >0 ) {int retval; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =edset_single (u132, ring, endp, urb, address, endp->toggle_bits, u132_hcd_interrupt_recv);
@@ -682,7 +682,7 @@ static void u132_hcd_interrupt_recv(void *data, struct urb *urb, u8 *buf,msecs_to_jiffies (urb->interval);u132_ring_cancel_work (u132, ring);u132_ring_queue_work (u132, ring,0 ); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp); }return ;
@@ -691,7 +691,7 @@ static void u132_hcd_interrupt_recv(void *data, struct urb *urb, u8 *buf, endp->toggle_bits = toggle_bits;usb_settoggle (udev->usb_device, endp->usb_endp,0 ,1 & toggle_bits); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb,0 );return ; }else {
@@ -711,7 +711,7 @@ static void u132_hcd_interrupt_recv(void *data, struct urb *urb, u8 *buf,"g back INTERRUPT %s\n" , urb, cc_to_text[condition_code]); } -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, cc_to_error[condition_code]);return ;
@@ -719,7 +719,7 @@ static void u132_hcd_interrupt_recv(void *data, struct urb *urb, u8 *buf, }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -732,22 +732,22 @@ static void u132_hcd_bulk_output_sent(void *data, struct urb *urb, u8 *buf,struct u132_endp *endp = data;struct u132 *u132 = endp->u132;u8 address = u132->addr[endp->usb_addr].address; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) {
@@ -756,7 +756,7 @@ static void u132_hcd_bulk_output_sent(void *data, struct urb *urb, u8 *buf, endp->toggle_bits = toggle_bits;if (urb->transfer_buffer_length > urb->actual_length) {int retval; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =edset_output (u132, ring, endp, urb, address, endp->toggle_bits, u132_hcd_bulk_output_sent);if (retval ==0 ) {
@@ -764,14 +764,14 @@ static void u132_hcd_bulk_output_sent(void *data, struct urb *urb, u8 *buf,u132_hcd_giveback_urb (u132, endp, urb, retval);return ; }else { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb,0 );return ; } }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -785,22 +785,22 @@ static void u132_hcd_bulk_input_recv(void *data, struct urb *urb, u8 *buf,struct u132 *u132 = endp->u132;u8 address = u132->addr[endp->usb_addr].address;struct u132_udev *udev = &u132->udev[address]; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) {
@@ -818,7 +818,7 @@ static void u132_hcd_bulk_input_recv(void *data, struct urb *urb, u8 *buf, endp->toggle_bits = toggle_bits;usb_settoggle (udev->usb_device, endp->usb_endp,0 ,1 & toggle_bits); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval = usb_ftdi_elan_edset_input(u132->platform_dev, ring->number, endp, urb, address, endp->usb_endp, endp->toggle_bits,
@@ -831,7 +831,7 @@ static void u132_hcd_bulk_input_recv(void *data, struct urb *urb, u8 *buf, endp->toggle_bits = toggle_bits;usb_settoggle (udev->usb_device, endp->usb_endp,0 ,1 & toggle_bits); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, cc_to_error[condition_code]);return ;
@@ -840,7 +840,7 @@ static void u132_hcd_bulk_input_recv(void *data, struct urb *urb, u8 *buf, endp->toggle_bits = toggle_bits;usb_settoggle (udev->usb_device, endp->usb_endp,0 ,1 & toggle_bits); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb,0 );return ; }else if (condition_code ==TD_DATAUNDERRUN ) {
@@ -850,13 +850,13 @@ static void u132_hcd_bulk_input_recv(void *data, struct urb *urb, u8 *buf,dev_warn (&u132->platform_dev->dev,"urb=%p(SHORT NOT OK" ") giving back BULK IN %s\n" , urb, cc_to_text[condition_code]); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb,0 );return ; }else if (condition_code ==TD_CC_STALL ) { endp->toggle_bits =0x2 ;usb_settoggle (udev->usb_device, endp->usb_endp,0 ,0 ); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, cc_to_error[condition_code]);return ;
@@ -866,7 +866,7 @@ static void u132_hcd_bulk_input_recv(void *data, struct urb *urb, u8 *buf,dev_err (&u132->platform_dev->dev,"urb=%p giving back B" "ULK IN code=%d %s\n" , urb, condition_code, cc_to_text[condition_code]); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, cc_to_error[condition_code]);return ;
@@ -874,7 +874,7 @@ static void u132_hcd_bulk_input_recv(void *data, struct urb *urb, u8 *buf, }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -886,32 +886,32 @@ static void u132_hcd_configure_empty_sent(void *data, struct urb *urb, u8 *buf, {struct u132_endp *endp = data;struct u132 *u132 = endp->u132; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb,0 );return ; }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -924,22 +924,22 @@ static void u132_hcd_configure_input_recv(void *data, struct urb *urb, u8 *buf,struct u132_endp *endp = data;struct u132 *u132 = endp->u132;u8 address = u132->addr[endp->usb_addr].address; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) {
@@ -955,7 +955,7 @@ static void u132_hcd_configure_input_recv(void *data, struct urb *urb, u8 *buf, TD_DATAUNDERRUN) && ((urb->transfer_flags & URB_SHORT_NOT_OK) == 0))) {int retval; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval = usb_ftdi_elan_edset_empty(u132->platform_dev, ring->number, endp, urb, address, endp->usb_endp, 0x3,
@@ -965,14 +965,14 @@ static void u132_hcd_configure_input_recv(void *data, struct urb *urb, u8 *buf,u132_hcd_giveback_urb (u132, endp, urb, retval);return ; }else if (condition_code ==TD_CC_STALL ) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);dev_warn (&u132->platform_dev->dev,"giving back SETUP I" "NPUT STALL urb %p\n" , urb);u132_hcd_giveback_urb (u132, endp, urb, cc_to_error[condition_code]);return ; }else { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);dev_err (&u132->platform_dev->dev,"giving back SETUP IN" "PUT %s urb %p\n" , cc_to_text[condition_code], urb);
@@ -983,7 +983,7 @@ static void u132_hcd_configure_input_recv(void *data, struct urb *urb, u8 *buf, }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -995,32 +995,32 @@ static void u132_hcd_configure_empty_recv(void *data, struct urb *urb, u8 *buf, {struct u132_endp *endp = data;struct u132 *u132 = endp->u132; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb,0 );return ; }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -1033,29 +1033,29 @@ static void u132_hcd_configure_setup_sent(void *data, struct urb *urb, u8 *buf,struct u132_endp *endp = data;struct u132 *u132 = endp->u132;u8 address = u132->addr[endp->usb_addr].address; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) {if (usb_pipein (urb->pipe)) {int retval;struct u132_ring *ring = endp->ring; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval = usb_ftdi_elan_edset_input(u132->platform_dev, ring->number, endp, urb, address, endp->usb_endp, 0,
@@ -1067,7 +1067,7 @@ static void u132_hcd_configure_setup_sent(void *data, struct urb *urb, u8 *buf, }else {int retval;struct u132_ring *ring = endp->ring; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval = usb_ftdi_elan_edset_input(u132->platform_dev, ring->number, endp, urb, address, endp->usb_endp, 0,
@@ -1080,7 +1080,7 @@ static void u132_hcd_configure_setup_sent(void *data, struct urb *urb, u8 *buf, }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -1094,34 +1094,34 @@ static void u132_hcd_enumeration_empty_recv(void *data, struct urb *urb,struct u132 *u132 = endp->u132;u8 address = u132->addr[endp->usb_addr].address;struct u132_udev *udev = &u132->udev[address]; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) { u132->addr[0 ].address =0 ; endp->usb_addr = udev->usb_addr; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb,0 );return ; }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -1133,28 +1133,28 @@ static void u132_hcd_enumeration_address_sent(void *data, struct urb *urb, {struct u132_endp *endp = data;struct u132 *u132 = endp->u132; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) {int retval;struct u132_ring *ring = endp->ring; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =usb_ftdi_elan_edset_input (u132->platform_dev, ring->number, endp, urb,0 , endp->usb_endp,0 , u132_hcd_enumeration_empty_recv);
@@ -1165,7 +1165,7 @@ static void u132_hcd_enumeration_address_sent(void *data, struct urb *urb, }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -1177,32 +1177,32 @@ static void u132_hcd_initial_empty_sent(void *data, struct urb *urb, u8 *buf, {struct u132_endp *endp = data;struct u132 *u132 = endp->u132; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb,0 );return ; }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -1215,22 +1215,22 @@ static void u132_hcd_initial_input_recv(void *data, struct urb *urb, u8 *buf,struct u132_endp *endp = data;struct u132 *u132 = endp->u132;u8 address = u132->addr[endp->usb_addr].address; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) {
@@ -1243,7 +1243,7 @@ static void u132_hcd_initial_input_recv(void *data, struct urb *urb, u8 *buf, *u++ = *b++; } urb->actual_length = len; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =usb_ftdi_elan_edset_empty (u132->platform_dev, ring->number, endp, urb, address, endp->usb_endp,0x3 , u132_hcd_initial_empty_sent);
@@ -1254,7 +1254,7 @@ static void u132_hcd_initial_input_recv(void *data, struct urb *urb, u8 *buf, }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -1267,28 +1267,28 @@ static void u132_hcd_initial_setup_sent(void *data, struct urb *urb, u8 *buf,struct u132_endp *endp = data;struct u132 *u132 = endp->u132;u8 address = u132->addr[endp->usb_addr].address; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) {int retval;struct u132_ring *ring = endp->ring; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =usb_ftdi_elan_edset_input (u132->platform_dev, ring->number, endp, urb, address, endp->usb_endp,0 , u132_hcd_initial_input_recv);
@@ -1299,7 +1299,7 @@ static void u132_hcd_initial_setup_sent(void *data, struct urb *urb, u8 *buf, }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -1314,9 +1314,9 @@ static void u132_hcd_ring_work_scheduler(struct work_struct *work)struct u132_ring *ring = container_of(work, struct u132_ring, scheduler.work);struct u132 *u132 = ring->u132; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (ring->in_use) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_ring_put_kref (u132, ring);return ; }else if (ring->curr_endp) {
@@ -1333,7 +1333,7 @@ static void u132_hcd_ring_work_scheduler(struct work_struct *work) ring->curr_endp = endp;u132_endp_cancel_work (u132, last_endp);u132_endp_queue_work (u132, last_endp,0 ); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_ring_put_kref (u132, ring);return ; }else {
@@ -1347,7 +1347,7 @@ static void u132_hcd_ring_work_scheduler(struct work_struct *work) last_endp->jiffies)) {u132_endp_cancel_work (u132, last_endp);u132_endp_queue_work (u132, last_endp,0 ); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_ring_put_kref (u132, ring);return ; } else {
@@ -1357,15 +1357,15 @@ static void u132_hcd_ring_work_scheduler(struct work_struct *work) }if (wakeup >0 ) {u132_ring_requeue_work (u132, ring, wakeup); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);return ; }else { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_ring_put_kref (u132, ring);return ; } }else { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_ring_put_kref (u132, ring);return ; }
@@ -1377,32 +1377,32 @@ static void u132_hcd_endp_work_scheduler(struct work_struct *work)struct u132_endp *endp = container_of(work, struct u132_endp, scheduler.work);struct u132 *u132 = endp->u132; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock); ring = endp->ring;if (endp->edset_flush) { endp->edset_flush =0 ;if (endp->dequeueing)usb_ftdi_elan_edset_flush (u132->platform_dev, ring->number, endp); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp);return ; }else if (endp->active) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp);return ; }else if (ring->in_use) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp);return ; }else if (endp->queue_next == endp->queue_last) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp);return ; }else if (endp->pipetype ==PIPE_INTERRUPT ) {u8 address = u132->addr[endp->usb_addr].address;if (ring->in_use) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp);return ; }else {
@@ -1412,7 +1412,7 @@ static void u132_hcd_endp_work_scheduler(struct work_struct *work) endp->active =1 ; ring->curr_endp = endp; ring->in_use =1 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =edset_single (u132, ring, endp, urb, address, endp->toggle_bits, u132_hcd_interrupt_recv);if (retval ==0 ) {
@@ -1423,7 +1423,7 @@ static void u132_hcd_endp_work_scheduler(struct work_struct *work) }else if (endp->pipetype ==PIPE_CONTROL ) {u8 address = u132->addr[endp->usb_addr].address;if (ring->in_use) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp);return ; }else if (address ==0 ) {
@@ -1433,7 +1433,7 @@ static void u132_hcd_endp_work_scheduler(struct work_struct *work) endp->active =1 ; ring->curr_endp = endp; ring->in_use =1 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =edset_setup (u132, ring, endp, urb, address,0x2 , u132_hcd_initial_setup_sent);if (retval ==0 ) {
@@ -1447,7 +1447,7 @@ static void u132_hcd_endp_work_scheduler(struct work_struct *work) endp->active =1 ; ring->curr_endp = endp; ring->in_use =1 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =edset_setup (u132, ring, endp, urb,0 ,0x2 , u132_hcd_enumeration_address_sent);if (retval ==0 ) {
@@ -1462,7 +1462,7 @@ static void u132_hcd_endp_work_scheduler(struct work_struct *work) endp->active =1 ; ring->curr_endp = endp; ring->in_use =1 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =edset_setup (u132, ring, endp, urb, address,0x2 , u132_hcd_configure_setup_sent);if (retval ==0 ) {
@@ -1474,7 +1474,7 @@ static void u132_hcd_endp_work_scheduler(struct work_struct *work)if (endp->input) {u8 address = u132->addr[endp->usb_addr].address;if (ring->in_use) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp);return ; }else {
@@ -1484,7 +1484,7 @@ static void u132_hcd_endp_work_scheduler(struct work_struct *work) endp->active =1 ; ring->curr_endp = endp; ring->in_use =1 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =edset_input (u132, ring, endp, urb, address, endp->toggle_bits, u132_hcd_bulk_input_recv);
@@ -1497,7 +1497,7 @@ static void u132_hcd_endp_work_scheduler(struct work_struct *work) }else {/* output pipe */ u8 address = u132->addr[endp->usb_addr].address;if (ring->in_use) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp);return ; }else {
@@ -1507,7 +1507,7 @@ static void u132_hcd_endp_work_scheduler(struct work_struct *work) endp->active =1 ; ring->curr_endp = endp; ring->in_use =1 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =edset_output (u132, ring, endp, urb, address, endp->toggle_bits, u132_hcd_bulk_output_sent);
Signature · 10 lines
Matthias Kaehlcke
Linux Application Developer
Barcelona
El camino se hace al andar
(Antonio Machado)
.''`.
using free software / Debian GNU/Linux | http://debian.org : :' :
`. `'`
gpg --keyserver pgp.mit.edu --recv-keys 47D8E5D4 `-Re: [PATCH 1/2] ELAN U132 Host Controller Driver: convert sw_lock to mutex
In reply to Matthias Kaehlcke* Thu, 6 Sep 2007 23:18:15 +0200
[]
drivers/usb/host/u132-hcd.c struct u132_ring { · line 184
Quoted 2 lines
drivers/usb/host/u132-hcd.c +0
-0@@ -184,7 +184,7 @@ struct u132_ring {struct u132 {
Subject: [PATCH 1/2] ELAN U132 Host Controller Driver: convert sw_lock to mutex []
drivers/usb/host/u132-hcd.c struct u132_ring { · line 188
Quoted 4 lines
drivers/usb/host/u132-hcd.c +1
-1struct list_head u132_list; -struct semaphore sw_lock; +struct mutex sw_lock;struct semaphore scheduler_lock;
Subject: [PATCH 2/2] ELAN U132 Host Controller Driver: convert scheduler_lock t []
Review struct u132_ring { · line 190
Quoted 4 lines
(quoted diff) +1
-1struct list_head u132_list; struct semaphore sw_lock; - struct semaphore scheduler_lock; + struct mutex scheduler_lock;
Are you sure, you have right patch sequence?
____
Re: [PATCH 1/2] ELAN U132 Host Controller Driver: convert sw_lock to mutex
El Fri, Sep 07, 2007 at 12:08:34AM +0200 Oleg Verych ha dit:
Quoted 13 lines
* Thu, 6 Sep 2007 23:18:15 +0200
[]
drivers/usb/host/u132-hcd.c struct u132_ring { · line 184
Quoted 2 lines
drivers/usb/host/u132-hcd.c +0
-0@@ -184,7 +184,7 @@ struct u132_ring {struct u132 {Subject: [PATCH 1/2] ELAN U132 Host Controller Driver: convert
sw_lockto mutex []drivers/usb/host/u132-hcd.c struct u132_ring { · line 188
Quoted 4 lines
drivers/usb/host/u132-hcd.c +1
-1struct list_head u132_list; -struct semaphore sw_lock; +struct mutex sw_lock;struct semaphore scheduler_lock;
Quoted 8 lines
Subject: [PATCH 2/2] ELAN U132 Host Controller Driver: convert
scheduler_lockt []Review struct u132_ring { · line 190
Quoted 4 lines
(quoted diff) +1
-1struct list_head u132_list; struct semaphore sw_lock; - struct semaphore scheduler_lock; + struct mutex scheduler_lock;Are you sure, you have right patch sequence?
my idea was to sent two independent patches, would it be better to have one patch based on the other?
Signature · 11 lines
Matthias Kaehlcke
Linux Application Developer
Barcelona
Insanity: doing the same thing over and over
again and expecting different results
(Albert Einstein)
.''`.
using free software / Debian GNU/Linux | http://debian.org : :' :
`. `'`
gpg --keyserver pgp.mit.edu --recv-keys 47D8E5D4 `-Re: [PATCH 2/2] ELAN U132 Host Controller Driver: convert scheduler_lock to mutex
In reply to Matthias KaehlckeA corrected version of the patch, the first one contained context removed by the first patch of this serie
--
The ELAN U132 Host Controller Driver uses the semaphore scheduler_lock as mutex. Use the mutex API instead of the (binary) semaphore.
--
drivers/usb/host/u132-hcd.c renamed from drivers/usb/host/u132-hcd.c.orig +110 -110
@@ -185,7 +185,7 @@struct kref kref;struct list_head u132_list;struct mutex sw_lock; -struct semaphore scheduler_lock; +struct mutex scheduler_lock;struct u132_platform_data *board;struct platform_device *platform_dev;struct u132_ring ring[MAX_U132_RINGS ];
@@ -536,12 +536,12 @@ endp->active =0 ;spin_unlock_irqrestore (&endp->queue_lock.slock, irqs);kfree (urbq); - }down (&u132->scheduler_lock); + }mutex_lock (&u132->scheduler_lock); ring = endp->ring; ring->in_use =0 ;u132_ring_cancel_work (u132, ring);u132_ring_queue_work (u132, ring,0 ); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp);usb_hcd_giveback_urb (hcd, urb);return ;
@@ -633,22 +633,22 @@struct u132 *u132 = endp->u132;u8 address = u132->addr[endp->usb_addr].address;struct u132_udev *udev = &u132->udev[address]; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) {
@@ -667,7 +667,7 @@ 1 & toggle_bits);if (urb->actual_length >0 ) {int retval; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =edset_single (u132, ring, endp, urb, address, endp->toggle_bits, u132_hcd_interrupt_recv);
@@ -682,7 +682,7 @@msecs_to_jiffies (urb->interval);u132_ring_cancel_work (u132, ring);u132_ring_queue_work (u132, ring,0 ); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp); }return ;
@@ -691,7 +691,7 @@ endp->toggle_bits = toggle_bits;usb_settoggle (udev->usb_device, endp->usb_endp,0 ,1 & toggle_bits); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb,0 );return ; }else {
@@ -711,7 +711,7 @@"g back INTERRUPT %s\n" , urb, cc_to_text[condition_code]); } -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, cc_to_error[condition_code]);return ;
@@ -719,7 +719,7 @@ }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -732,22 +732,22 @@struct u132_endp *endp = data;struct u132 *u132 = endp->u132;u8 address = u132->addr[endp->usb_addr].address; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) {
@@ -756,7 +756,7 @@ endp->toggle_bits = toggle_bits;if (urb->transfer_buffer_length > urb->actual_length) {int retval; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =edset_output (u132, ring, endp, urb, address, endp->toggle_bits, u132_hcd_bulk_output_sent);if (retval ==0 ) {
@@ -764,14 +764,14 @@u132_hcd_giveback_urb (u132, endp, urb, retval);return ; }else { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb,0 );return ; } }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -785,22 +785,22 @@struct u132 *u132 = endp->u132;u8 address = u132->addr[endp->usb_addr].address;struct u132_udev *udev = &u132->udev[address]; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) {
@@ -818,7 +818,7 @@ endp->toggle_bits = toggle_bits;usb_settoggle (udev->usb_device, endp->usb_endp,0 ,1 & toggle_bits); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval = usb_ftdi_elan_edset_input(u132->platform_dev, ring->number, endp, urb, address, endp->usb_endp, endp->toggle_bits,
@@ -831,7 +831,7 @@ endp->toggle_bits = toggle_bits;usb_settoggle (udev->usb_device, endp->usb_endp,0 ,1 & toggle_bits); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, cc_to_error[condition_code]);return ;
@@ -840,7 +840,7 @@ endp->toggle_bits = toggle_bits;usb_settoggle (udev->usb_device, endp->usb_endp,0 ,1 & toggle_bits); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb,0 );return ; }else if (condition_code ==TD_DATAUNDERRUN ) {
@@ -850,13 +850,13 @@dev_warn (&u132->platform_dev->dev,"urb=%p(SHORT NOT OK" ") giving back BULK IN %s\n" , urb, cc_to_text[condition_code]); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb,0 );return ; }else if (condition_code ==TD_CC_STALL ) { endp->toggle_bits =0x2 ;usb_settoggle (udev->usb_device, endp->usb_endp,0 ,0 ); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, cc_to_error[condition_code]);return ;
@@ -866,7 +866,7 @@dev_err (&u132->platform_dev->dev,"urb=%p giving back B" "ULK IN code=%d %s\n" , urb, condition_code, cc_to_text[condition_code]); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, cc_to_error[condition_code]);return ;
@@ -874,7 +874,7 @@ }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -886,32 +886,32 @@ {struct u132_endp *endp = data;struct u132 *u132 = endp->u132; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb,0 );return ; }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -924,22 +924,22 @@struct u132_endp *endp = data;struct u132 *u132 = endp->u132;u8 address = u132->addr[endp->usb_addr].address; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) {
@@ -955,7 +955,7 @@ TD_DATAUNDERRUN) && ((urb->transfer_flags & URB_SHORT_NOT_OK) == 0))) {int retval; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval = usb_ftdi_elan_edset_empty(u132->platform_dev, ring->number, endp, urb, address, endp->usb_endp, 0x3,
@@ -965,14 +965,14 @@u132_hcd_giveback_urb (u132, endp, urb, retval);return ; }else if (condition_code ==TD_CC_STALL ) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);dev_warn (&u132->platform_dev->dev,"giving back SETUP I" "NPUT STALL urb %p\n" , urb);u132_hcd_giveback_urb (u132, endp, urb, cc_to_error[condition_code]);return ; }else { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);dev_err (&u132->platform_dev->dev,"giving back SETUP IN" "PUT %s urb %p\n" , cc_to_text[condition_code], urb);
@@ -983,7 +983,7 @@ }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -995,32 +995,32 @@ {struct u132_endp *endp = data;struct u132 *u132 = endp->u132; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb,0 );return ; }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -1033,29 +1033,29 @@struct u132_endp *endp = data;struct u132 *u132 = endp->u132;u8 address = u132->addr[endp->usb_addr].address; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) {if (usb_pipein (urb->pipe)) {int retval;struct u132_ring *ring = endp->ring; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval = usb_ftdi_elan_edset_input(u132->platform_dev, ring->number, endp, urb, address, endp->usb_endp, 0,
@@ -1067,7 +1067,7 @@ }else {int retval;struct u132_ring *ring = endp->ring; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval = usb_ftdi_elan_edset_input(u132->platform_dev, ring->number, endp, urb, address, endp->usb_endp, 0,
@@ -1080,7 +1080,7 @@ }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -1094,34 +1094,34 @@struct u132 *u132 = endp->u132;u8 address = u132->addr[endp->usb_addr].address;struct u132_udev *udev = &u132->udev[address]; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) { u132->addr[0 ].address =0 ; endp->usb_addr = udev->usb_addr; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb,0 );return ; }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -1133,28 +1133,28 @@ {struct u132_endp *endp = data;struct u132 *u132 = endp->u132; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) {int retval;struct u132_ring *ring = endp->ring; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =usb_ftdi_elan_edset_input (u132->platform_dev, ring->number, endp, urb,0 , endp->usb_endp,0 , u132_hcd_enumeration_empty_recv);
@@ -1165,7 +1165,7 @@ }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -1177,32 +1177,32 @@ {struct u132_endp *endp = data;struct u132 *u132 = endp->u132; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb,0 );return ; }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -1215,22 +1215,22 @@struct u132_endp *endp = data;struct u132 *u132 = endp->u132;u8 address = u132->addr[endp->usb_addr].address; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) {
@@ -1243,7 +1243,7 @@ *u++ = *b++; } urb->actual_length = len; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =usb_ftdi_elan_edset_empty (u132->platform_dev, ring->number, endp, urb, address, endp->usb_endp,0x3 , u132_hcd_initial_empty_sent);
@@ -1254,7 +1254,7 @@ }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -1267,28 +1267,28 @@struct u132_endp *endp = data;struct u132 *u132 = endp->u132;u8 address = u132->addr[endp->usb_addr].address; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (u132->going >1 ) {dev_err (&u132->platform_dev->dev,"device has been removed %d\n" , u132->going); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_forget_urb (u132, endp, urb, -ENODEV );return ; }else if (endp->dequeueing) { endp->dequeueing =0 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -EINTR );return ; }else if (u132->going >0 ) {dev_err (&u132->platform_dev->dev,"device is being removed urb=" "%p status=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, -ENODEV );return ; }else if (urb->status == -EINPROGRESS ) {int retval;struct u132_ring *ring = endp->ring; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =usb_ftdi_elan_edset_input (u132->platform_dev, ring->number, endp, urb, address, endp->usb_endp,0 , u132_hcd_initial_input_recv);
@@ -1299,7 +1299,7 @@ }else {dev_err (&u132->platform_dev->dev,"CALLBACK called urb=%p statu" "s=%d\n" , urb, urb->status); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_hcd_giveback_urb (u132, endp, urb, urb->status);return ; }
@@ -1314,9 +1314,9 @@struct u132_ring *ring = container_of(work, struct u132_ring, scheduler.work);struct u132 *u132 = ring->u132; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock);if (ring->in_use) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_ring_put_kref (u132, ring);return ; }else if (ring->curr_endp) {
@@ -1333,7 +1333,7 @@ ring->curr_endp = endp;u132_endp_cancel_work (u132, last_endp);u132_endp_queue_work (u132, last_endp,0 ); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_ring_put_kref (u132, ring);return ; }else {
@@ -1347,7 +1347,7 @@ last_endp->jiffies)) {u132_endp_cancel_work (u132, last_endp);u132_endp_queue_work (u132, last_endp,0 ); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_ring_put_kref (u132, ring);return ; } else {
@@ -1357,15 +1357,15 @@ }if (wakeup >0 ) {u132_ring_requeue_work (u132, ring, wakeup); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);return ; }else { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_ring_put_kref (u132, ring);return ; } }else { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_ring_put_kref (u132, ring);return ; }
@@ -1377,32 +1377,32 @@struct u132_endp *endp = container_of(work, struct u132_endp, scheduler.work);struct u132 *u132 = endp->u132; -down (&u132->scheduler_lock); +mutex_lock (&u132->scheduler_lock); ring = endp->ring;if (endp->edset_flush) { endp->edset_flush =0 ;if (endp->dequeueing)usb_ftdi_elan_edset_flush (u132->platform_dev, ring->number, endp); -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp);return ; }else if (endp->active) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp);return ; }else if (ring->in_use) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp);return ; }else if (endp->queue_next == endp->queue_last) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp);return ; }else if (endp->pipetype ==PIPE_INTERRUPT ) {u8 address = u132->addr[endp->usb_addr].address;if (ring->in_use) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp);return ; }else {
@@ -1412,7 +1412,7 @@ endp->active =1 ; ring->curr_endp = endp; ring->in_use =1 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =edset_single (u132, ring, endp, urb, address, endp->toggle_bits, u132_hcd_interrupt_recv);if (retval ==0 ) {
@@ -1423,7 +1423,7 @@ }else if (endp->pipetype ==PIPE_CONTROL ) {u8 address = u132->addr[endp->usb_addr].address;if (ring->in_use) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp);return ; }else if (address ==0 ) {
@@ -1433,7 +1433,7 @@ endp->active =1 ; ring->curr_endp = endp; ring->in_use =1 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =edset_setup (u132, ring, endp, urb, address,0x2 , u132_hcd_initial_setup_sent);if (retval ==0 ) {
@@ -1447,7 +1447,7 @@ endp->active =1 ; ring->curr_endp = endp; ring->in_use =1 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =edset_setup (u132, ring, endp, urb,0 ,0x2 , u132_hcd_enumeration_address_sent);if (retval ==0 ) {
@@ -1462,7 +1462,7 @@ endp->active =1 ; ring->curr_endp = endp; ring->in_use =1 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =edset_setup (u132, ring, endp, urb, address,0x2 , u132_hcd_configure_setup_sent);if (retval ==0 ) {
@@ -1474,7 +1474,7 @@if (endp->input) {u8 address = u132->addr[endp->usb_addr].address;if (ring->in_use) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp);return ; }else {
@@ -1484,7 +1484,7 @@ endp->active =1 ; ring->curr_endp = endp; ring->in_use =1 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =edset_input (u132, ring, endp, urb, address, endp->toggle_bits, u132_hcd_bulk_input_recv);
@@ -1497,7 +1497,7 @@ }else {/* output pipe */ u8 address = u132->addr[endp->usb_addr].address;if (ring->in_use) { -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock);u132_endp_put_kref (u132, endp);return ; }else {
@@ -1507,7 +1507,7 @@ endp->active =1 ; ring->curr_endp = endp; ring->in_use =1 ; -up (&u132->scheduler_lock); +mutex_unlock (&u132->scheduler_lock); retval =edset_output (u132, ring, endp, urb, address, endp->toggle_bits, u132_hcd_bulk_output_sent);
@@ -3038,7 +3038,7 @@ u132->power =0 ; u132->reset =0 ;mutex_init (&u132->sw_lock); -init_MUTEX (&u132->scheduler_lock); +mutex_init (&u132->scheduler_lock);while (rings-- >0 ) {struct u132_ring *ring = &u132->ring[rings]; ring->u132 = u132;
Signature · 11 lines
Matthias Kaehlcke
Linux Application Developer
Barcelona
Yo soy como soy y tú eres como eres, construyamos un mundo donde yo
pueda ser sin dejar de ser yo, donde tú puedas ser sin dejar de ser
tú, y donde ni yo ni tú obliguemos al otro a ser como yo o como tú
.''`.
using free software / Debian GNU/Linux | http://debian.org : :' :
`. `'`
gpg --keyserver pgp.mit.edu --recv-keys 47D8E5D4 `-Re: [PATCH 2/2] ELAN U132 Host Controller Driver: convert scheduler_lock to mutex
Quoted 2 lines · Matthias Kaehlcke
A corrected version of the patch, the first one contained context removed by the first patch of this serie
This patch for some reason did not apply cleanly.
Care to redo it after the next -mm releae that has your first patch in it (that looked fine.)
thanks,
greg k-h