Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+69 −71
Original line number Diff line number Diff line
@@ -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)
{
	struct usb_xpad *xpad = input_get_drvdata(dev);
	__u16 strong;
	__u16 weak;

	if (effect->type == FF_RUMBLE) {
		__u16 strong = effect->u.rumble.strong_magnitude;
		__u16 weak = effect->u.rumble.weak_magnitude;
	if (effect->type != FF_RUMBLE)
		return 0;

		switch (xpad->xtype) {
	strong = effect->u.rumble.strong_magnitude;
	weak = effect->u.rumble.weak_magnitude;

	switch (xpad->xtype) {
	case XTYPE_XBOX:
		xpad->odata[0] = 0x00;
		xpad->odata[1] = 0x06;
@@ -777,8 +780,7 @@ static int xpad_play_effect(struct input_dev *dev, void *data, struct ff_effect
		xpad->odata[4] = 0x00;
		xpad->odata[5] = weak / 256;	/* right actuator */
		xpad->irq_out->transfer_buffer_length = 6;

			return usb_submit_urb(xpad->irq_out, GFP_ATOMIC);
		break;

	case XTYPE_XBOX360:
		xpad->odata[0] = 0x00;
@@ -790,8 +792,7 @@ static int xpad_play_effect(struct input_dev *dev, void *data, struct ff_effect
		xpad->odata[6] = 0x00;
		xpad->odata[7] = 0x00;
		xpad->irq_out->transfer_buffer_length = 8;

			return usb_submit_urb(xpad->irq_out, GFP_ATOMIC);
		break;

	case XTYPE_XBOX360W:
		xpad->odata[0] = 0x00;
@@ -807,8 +808,7 @@ static int xpad_play_effect(struct input_dev *dev, void *data, struct ff_effect
		xpad->odata[10] = 0x00;
		xpad->odata[11] = 0x00;
		xpad->irq_out->transfer_buffer_length = 12;

			return usb_submit_urb(xpad->irq_out, GFP_ATOMIC);
		break;

	case XTYPE_XBOXONE:
		xpad->odata[0] = 0x09; /* activate rumble */
@@ -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[11] = 0x00;	/* stop period of pulse */
		xpad->irq_out->transfer_buffer_length = 12;

			return usb_submit_urb(xpad->irq_out, GFP_ATOMIC);
		break;

	default:
		dev_dbg(&xpad->dev->dev,
			"%s - rumble command sent to unsupported xpad type: %d\n",
			__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)