Skip to content

Commit

Permalink
HID: usbhid: inline some simple routines
Browse files Browse the repository at this point in the history
This patch (as1594) simplifies the usbhid driver by inlining a couple
of routines.  As a result of an earlier patch, irq_out_pump_restart()
and ctrl_pump_restart() are each used in only one place.  Since they
don't really do what their names say, and since they each involve only
about two lines of actual code, there's no reason to keep them as
separate functions.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
CC: Oliver Neukum <oliver@neukum.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
  • Loading branch information
Alan Stern authored and Jiri Kosina committed Jul 20, 2012
1 parent 01a7c98 commit 93101af
Showing 1 changed file with 16 additions and 31 deletions.
47 changes: 16 additions & 31 deletions drivers/hid/usbhid/hid-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -435,16 +435,6 @@ static int hid_submit_ctrl(struct hid_device *hid)
* Output interrupt completion handler.
*/

static int irq_out_pump_restart(struct hid_device *hid)
{
struct usbhid_device *usbhid = hid->driver_data;

if (usbhid->outhead != usbhid->outtail)
return hid_submit_out(hid);
else
return -1;
}

static void hid_irq_out(struct urb *urb)
{
struct hid_device *hid = urb->context;
Expand All @@ -469,15 +459,17 @@ static void hid_irq_out(struct urb *urb)

spin_lock_irqsave(&usbhid->lock, flags);

if (unplug)
if (unplug) {
usbhid->outtail = usbhid->outhead;
else
} else {
usbhid->outtail = (usbhid->outtail + 1) & (HID_OUTPUT_FIFO_SIZE - 1);

if (!irq_out_pump_restart(hid)) {
/* Successfully submitted next urb in queue */
spin_unlock_irqrestore(&usbhid->lock, flags);
return;
if (usbhid->outhead != usbhid->outtail &&
hid_submit_out(hid) == 0) {
/* Successfully submitted next urb in queue */
spin_unlock_irqrestore(&usbhid->lock, flags);
return;
}
}

clear_bit(HID_OUT_RUNNING, &usbhid->iofl);
Expand All @@ -489,15 +481,6 @@ static void hid_irq_out(struct urb *urb)
/*
* Control pipe completion handler.
*/
static int ctrl_pump_restart(struct hid_device *hid)
{
struct usbhid_device *usbhid = hid->driver_data;

if (usbhid->ctrlhead != usbhid->ctrltail)
return hid_submit_ctrl(hid);
else
return -1;
}

static void hid_ctrl(struct urb *urb)
{
Expand Down Expand Up @@ -526,15 +509,17 @@ static void hid_ctrl(struct urb *urb)
hid_warn(urb->dev, "ctrl urb status %d received\n", status);
}

if (unplug)
if (unplug) {
usbhid->ctrltail = usbhid->ctrlhead;
else
} else {
usbhid->ctrltail = (usbhid->ctrltail + 1) & (HID_CONTROL_FIFO_SIZE - 1);

if (!ctrl_pump_restart(hid)) {
/* Successfully submitted next urb in queue */
spin_unlock(&usbhid->lock);
return;
if (usbhid->ctrlhead != usbhid->ctrltail &&
hid_submit_ctrl(hid) == 0) {
/* Successfully submitted next urb in queue */
spin_unlock(&usbhid->lock);
return;
}
}

clear_bit(HID_CTRL_RUNNING, &usbhid->iofl);
Expand Down

0 comments on commit 93101af

Please sign in to comment.