Merge branch 'next' into for-linus
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Mon, 6 Sep 2021 01:58:05 +0000 (18:58 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Mon, 6 Sep 2021 01:58:05 +0000 (18:58 -0700)
Prepare input updates for 5.15 merge window.

drivers/input/joystick/xpad.c
drivers/input/touchscreen/elants_i2c.c
drivers/input/touchscreen/usbtouchscreen.c

index d69d765..29de841 100644 (file)
@@ -79,6 +79,7 @@
 #define MAP_DPAD_TO_BUTTONS            (1 << 0)
 #define MAP_TRIGGERS_TO_BUTTONS                (1 << 1)
 #define MAP_STICKS_TO_NULL             (1 << 2)
+#define MAP_SELECT_BUTTON              (1 << 3)
 #define DANCEPAD_MAP_CONFIG    (MAP_DPAD_TO_BUTTONS |                  \
                                MAP_TRIGGERS_TO_BUTTONS | MAP_STICKS_TO_NULL)
 
@@ -130,6 +131,7 @@ static const struct xpad_device {
        { 0x045e, 0x02e3, "Microsoft X-Box One Elite pad", 0, XTYPE_XBOXONE },
        { 0x045e, 0x02ea, "Microsoft X-Box One S pad", 0, XTYPE_XBOXONE },
        { 0x045e, 0x0719, "Xbox 360 Wireless Receiver", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360W },
+       { 0x045e, 0x0b12, "Microsoft Xbox One X pad", MAP_SELECT_BUTTON, XTYPE_XBOXONE },
        { 0x046d, 0xc21d, "Logitech Gamepad F310", 0, XTYPE_XBOX360 },
        { 0x046d, 0xc21e, "Logitech Gamepad F510", 0, XTYPE_XBOX360 },
        { 0x046d, 0xc21f, "Logitech Gamepad F710", 0, XTYPE_XBOX360 },
@@ -864,6 +866,8 @@ static void xpadone_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned char
        /* menu/view buttons */
        input_report_key(dev, BTN_START,  data[4] & 0x04);
        input_report_key(dev, BTN_SELECT, data[4] & 0x08);
+       if (xpad->mapping & MAP_SELECT_BUTTON)
+               input_report_key(dev, KEY_RECORD, data[22] & 0x01);
 
        /* buttons A,B,X,Y */
        input_report_key(dev, BTN_A,    data[4] & 0x10);
@@ -1674,6 +1678,8 @@ static int xpad_init_input(struct usb_xpad *xpad)
            xpad->xtype == XTYPE_XBOXONE) {
                for (i = 0; xpad360_btn[i] >= 0; i++)
                        input_set_capability(input_dev, EV_KEY, xpad360_btn[i]);
+               if (xpad->mapping & MAP_SELECT_BUTTON)
+                       input_set_capability(input_dev, EV_KEY, KEY_RECORD);
        } else {
                for (i = 0; xpad_btn[i] >= 0; i++)
                        input_set_capability(input_dev, EV_KEY, xpad_btn[i]);
index 17540bd..68f542b 100644 (file)
@@ -1369,8 +1369,7 @@ static bool elants_acpi_is_hid_device(struct device *dev)
 }
 #endif
 
-static int elants_i2c_probe(struct i2c_client *client,
-                           const struct i2c_device_id *id)
+static int elants_i2c_probe(struct i2c_client *client)
 {
        union i2c_smbus_data dummy;
        struct elants_data *ts;
@@ -1396,7 +1395,7 @@ static int elants_i2c_probe(struct i2c_client *client,
        init_completion(&ts->cmd_done);
 
        ts->client = client;
-       ts->chip_id = (enum elants_chip_id)id->driver_data;
+       ts->chip_id = (enum elants_chip_id)(uintptr_t)device_get_match_data(&client->dev);
        i2c_set_clientdata(client, ts);
 
        ts->vcc33 = devm_regulator_get(&client->dev, "vcc33");
@@ -1636,15 +1635,15 @@ MODULE_DEVICE_TABLE(acpi, elants_acpi_id);
 
 #ifdef CONFIG_OF
 static const struct of_device_id elants_of_match[] = {
-       { .compatible = "elan,ekth3500" },
-       { .compatible = "elan,ektf3624" },
+       { .compatible = "elan,ekth3500", .data = (void *)EKTH3500 },
+       { .compatible = "elan,ektf3624", .data = (void *)EKTF3624 },
        { /* sentinel */ }
 };
 MODULE_DEVICE_TABLE(of, elants_of_match);
 #endif
 
 static struct i2c_driver elants_i2c_driver = {
-       .probe = elants_i2c_probe,
+       .probe_new = elants_i2c_probe,
        .id_table = elants_i2c_id,
        .driver = {
                .name = DEVICE_NAME,
index c847453..43c521f 100644 (file)
@@ -251,7 +251,7 @@ static int e2i_init(struct usbtouch_usb *usbtouch)
        int ret;
        struct usb_device *udev = interface_to_usbdev(usbtouch->interface);
 
-       ret = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0),
+       ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
                              0x01, 0x02, 0x0000, 0x0081,
                              NULL, 0, USB_CTRL_SET_TIMEOUT);
 
@@ -531,7 +531,7 @@ static int mtouch_init(struct usbtouch_usb *usbtouch)
        if (ret)
                return ret;
 
-       ret = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0),
+       ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
                              MTOUCHUSB_RESET,
                              USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
                              1, 0, NULL, 0, USB_CTRL_SET_TIMEOUT);
@@ -543,7 +543,7 @@ static int mtouch_init(struct usbtouch_usb *usbtouch)
        msleep(150);
 
        for (i = 0; i < 3; i++) {
-               ret = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0),
+               ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
                                      MTOUCHUSB_ASYNC_REPORT,
                                      USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
                                      1, 1, NULL, 0, USB_CTRL_SET_TIMEOUT);
@@ -722,7 +722,7 @@ static int dmc_tsc10_init(struct usbtouch_usb *usbtouch)
        }
 
        /* start sending data */
-       ret = usb_control_msg(dev, usb_rcvctrlpipe (dev, 0),
+       ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
                              TSC10_CMD_DATA1,
                              USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
                              0, 0, NULL, 0, USB_CTRL_SET_TIMEOUT);