diff options
Diffstat (limited to 'drivers/usb/misc/phidgetkit.c')
| -rw-r--r-- | drivers/usb/misc/phidgetkit.c | 21 | 
1 files changed, 12 insertions, 9 deletions
| diff --git a/drivers/usb/misc/phidgetkit.c b/drivers/usb/misc/phidgetkit.c index 9110793f81d..9659c79e187 100644 --- a/drivers/usb/misc/phidgetkit.c +++ b/drivers/usb/misc/phidgetkit.c @@ -81,8 +81,8 @@ struct interfacekit {  	unsigned char *data;  	dma_addr_t data_dma; -	struct work_struct do_notify; -	struct work_struct do_resubmit; +	struct delayed_work do_notify; +	struct delayed_work do_resubmit;  	unsigned long input_events;  	unsigned long sensor_events;  }; @@ -374,7 +374,7 @@ static void interfacekit_irq(struct urb *urb)  	}  	if (kit->input_events || kit->sensor_events) -		schedule_work(&kit->do_notify); +		schedule_delayed_work(&kit->do_notify, 0);  resubmit:  	status = usb_submit_urb(urb, SLAB_ATOMIC); @@ -384,9 +384,10 @@ resubmit:  			kit->udev->devpath, status);  } -static void do_notify(void *data) +static void do_notify(struct work_struct *work)  { -	struct interfacekit *kit = data; +	struct interfacekit *kit = +		container_of(work, struct interfacekit, do_notify.work);  	int i;  	char sysfs_file[8]; @@ -405,9 +406,11 @@ static void do_notify(void *data)  	}  } -static void do_resubmit(void *data) +static void do_resubmit(struct work_struct *work)  { -	set_outputs(data); +	struct interfacekit *kit = +		container_of(work, struct interfacekit, do_resubmit.work); +	set_outputs(kit);  }  #define show_set_output(value)		\ @@ -575,8 +578,8 @@ static int interfacekit_probe(struct usb_interface *intf, const struct usb_devic  	kit->udev = usb_get_dev(dev);  	kit->intf = intf; -	INIT_WORK(&kit->do_notify, do_notify, kit); -	INIT_WORK(&kit->do_resubmit, do_resubmit, kit); +	INIT_DELAYED_WORK(&kit->do_notify, do_notify); +	INIT_DELAYED_WORK(&kit->do_resubmit, do_resubmit);  	usb_fill_int_urb(kit->irq, kit->udev, pipe, kit->data,  			maxp > URB_INT_SIZE ? URB_INT_SIZE : maxp,  			interfacekit_irq, kit, endpoint->bInterval); | 
