Commit 06008152 authored by Pavel Rojtberg's avatar Pavel Rojtberg Committed by Dmitry Torokhov

Input: xpad - factor out URB submission in xpad_play_effect

Move submission logic to a single point at the end of the function.
This makes it easy to add locking/ queuing code later on.
Signed-off-by: default avatarPavel Rojtberg <rojtberg@gmail.com>
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent a306a65f
...@@ -762,13 +762,16 @@ static void xpad_deinit_output(struct usb_xpad *xpad) ...@@ -762,13 +762,16 @@ static void xpad_deinit_output(struct usb_xpad *xpad)
static int xpad_play_effect(struct input_dev *dev, void *data, struct ff_effect *effect) static int xpad_play_effect(struct input_dev *dev, void *data, struct ff_effect *effect)
{ {
struct usb_xpad *xpad = input_get_drvdata(dev); struct usb_xpad *xpad = input_get_drvdata(dev);
__u16 strong;
__u16 weak;
if (effect->type == FF_RUMBLE) { if (effect->type != FF_RUMBLE)
__u16 strong = effect->u.rumble.strong_magnitude; return 0;
__u16 weak = effect->u.rumble.weak_magnitude;
switch (xpad->xtype) { strong = effect->u.rumble.strong_magnitude;
weak = effect->u.rumble.weak_magnitude;
switch (xpad->xtype) {
case XTYPE_XBOX: case XTYPE_XBOX:
xpad->odata[0] = 0x00; xpad->odata[0] = 0x00;
xpad->odata[1] = 0x06; xpad->odata[1] = 0x06;
...@@ -777,8 +780,7 @@ static int xpad_play_effect(struct input_dev *dev, void *data, struct ff_effect ...@@ -777,8 +780,7 @@ static int xpad_play_effect(struct input_dev *dev, void *data, struct ff_effect
xpad->odata[4] = 0x00; xpad->odata[4] = 0x00;
xpad->odata[5] = weak / 256; /* right actuator */ xpad->odata[5] = weak / 256; /* right actuator */
xpad->irq_out->transfer_buffer_length = 6; xpad->irq_out->transfer_buffer_length = 6;
break;
return usb_submit_urb(xpad->irq_out, GFP_ATOMIC);
case XTYPE_XBOX360: case XTYPE_XBOX360:
xpad->odata[0] = 0x00; xpad->odata[0] = 0x00;
...@@ -790,8 +792,7 @@ static int xpad_play_effect(struct input_dev *dev, void *data, struct ff_effect ...@@ -790,8 +792,7 @@ static int xpad_play_effect(struct input_dev *dev, void *data, struct ff_effect
xpad->odata[6] = 0x00; xpad->odata[6] = 0x00;
xpad->odata[7] = 0x00; xpad->odata[7] = 0x00;
xpad->irq_out->transfer_buffer_length = 8; xpad->irq_out->transfer_buffer_length = 8;
break;
return usb_submit_urb(xpad->irq_out, GFP_ATOMIC);
case XTYPE_XBOX360W: case XTYPE_XBOX360W:
xpad->odata[0] = 0x00; xpad->odata[0] = 0x00;
...@@ -807,8 +808,7 @@ static int xpad_play_effect(struct input_dev *dev, void *data, struct ff_effect ...@@ -807,8 +808,7 @@ static int xpad_play_effect(struct input_dev *dev, void *data, struct ff_effect
xpad->odata[10] = 0x00; xpad->odata[10] = 0x00;
xpad->odata[11] = 0x00; xpad->odata[11] = 0x00;
xpad->irq_out->transfer_buffer_length = 12; xpad->irq_out->transfer_buffer_length = 12;
break;
return usb_submit_urb(xpad->irq_out, GFP_ATOMIC);
case XTYPE_XBOXONE: case XTYPE_XBOXONE:
xpad->odata[0] = 0x09; /* activate rumble */ xpad->odata[0] = 0x09; /* activate rumble */
...@@ -824,18 +824,16 @@ static int xpad_play_effect(struct input_dev *dev, void *data, struct ff_effect ...@@ -824,18 +824,16 @@ static int xpad_play_effect(struct input_dev *dev, void *data, struct ff_effect
xpad->odata[10] = 0x80; /* length of pulse */ xpad->odata[10] = 0x80; /* length of pulse */
xpad->odata[11] = 0x00; /* stop period of pulse */ xpad->odata[11] = 0x00; /* stop period of pulse */
xpad->irq_out->transfer_buffer_length = 12; xpad->irq_out->transfer_buffer_length = 12;
break;
return usb_submit_urb(xpad->irq_out, GFP_ATOMIC);
default: default:
dev_dbg(&xpad->dev->dev, dev_dbg(&xpad->dev->dev,
"%s - rumble command sent to unsupported xpad type: %d\n", "%s - rumble command sent to unsupported xpad type: %d\n",
__func__, xpad->xtype); __func__, xpad->xtype);
return -1; return -EINVAL;
}
} }
return 0; return usb_submit_urb(xpad->irq_out, GFP_ATOMIC);
} }
static int xpad_init_ff(struct usb_xpad *xpad) static int xpad_init_ff(struct usb_xpad *xpad)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment