Re: [PATCH 3/3] Input: xpad - Poweroff XBOX360W on mode button long press

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On Mon, Apr 18, 2022 at 08:18, Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
On Sun, Apr 17, 2022 at 06:15:26PM +0200, Pavel Rojtberg wrote:
 From: Pavel Rojtberg <rojtberg@xxxxxxxxx>

Wait, who wrote this, "lawl" or you?

I wrote this. Santosh De Massari. But I never submitted it to LKML
because e-mail sounded too hard and the LKML too scary. Apologies
in advance for any misconfigured mail client etc. on my side.

If Pavel or anyone else wants to get this patch merged, they're
more than welcome to from my side.



Newer gamepads turn themselves off when the mode button is held down.
 For XBOX360W gamepads we must do this this in the driver.

 Signed-off-by: lawl <github@xxxxxxxxxxxxx>

We need a real name here please.

You can use Santosh De Massari <s.demassari@xxxxxxxxx>


 Signed-off-by: Pavel Rojtberg <rojtberg@xxxxxxxxx>
 ---
  drivers/input/joystick/xpad.c | 19 +++++++++++++++++++
  1 file changed, 19 insertions(+)

diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
 index 7640cbb..a9894a6 100644
 --- a/drivers/input/joystick/xpad.c
 +++ b/drivers/input/joystick/xpad.c
 @@ -620,11 +620,13 @@ struct usb_xpad {
  	int pad_nr;			/* the order x360 pads were attached */
  	const char *name;		/* name of the device */
  	struct work_struct work;	/* init/remove device from callback */
 +	time64_t mode_btn_down_ts;
  };

  static int xpad_init_input(struct usb_xpad *xpad);
  static void xpad_deinit_input(struct usb_xpad *xpad);
static void xpadone_ack_mode_report(struct usb_xpad *xpad, u8 seq_num);
 +static void xpad360w_poweroff_controller(struct usb_xpad *xpad);

  /*
   *	xpad_process_packet
@@ -776,6 +778,23 @@ static void xpad360_process_packet(struct usb_xpad *xpad, struct input_dev *dev,
  	}

  	input_sync(dev);
 +
+ /* XBOX360W controllers can't be turned off without driver assistance */
 +	if (xpad->xtype == XTYPE_XBOX360W) {
 +		if (xpad->mode_btn_down_ts > 0
 +		&& xpad->pad_present
 +		&& (ktime_get_seconds() - xpad->mode_btn_down_ts) >= 5) {

Did you run this through checkpatch? Please indent properly and put the
"&&" on the end of the lines.

And what does "5" mean here?

Assuming Pavel will take care of this, but since I'm replying anyways. Seconds.
Chosen arbitrarily.


 +			xpad360w_poweroff_controller(xpad);
 +			xpad->mode_btn_down_ts = 0;
 +			return;
 +		}
 +
 +		/* mode button down/up */
 +		if (data[3] & 0x04)

BIT(2)?

thanks,

greg k-h





[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux