]> Git Repo - linux.git/commitdiff
Merge branch 'next' into for-linus
authorDmitry Torokhov <[email protected]>
Thu, 1 Feb 2018 08:37:30 +0000 (00:37 -0800)
committerDmitry Torokhov <[email protected]>
Thu, 1 Feb 2018 08:37:30 +0000 (00:37 -0800)
Prepare input updates for 4.16 merge window.

1  2 
drivers/input/joystick/xpad.c
drivers/input/mouse/elan_i2c_core.c
drivers/input/mouse/synaptics.c
drivers/input/rmi4/rmi_driver.c
drivers/input/touchscreen/elants_i2c.c

index d88d3e0f59fb832cd569330a2899cf9647a08945,0434a13691889662391840bdc4f2dfa315d33d5a..9d2688f3f961a822389281e9391cfd1a7214d2f6
@@@ -84,9 -84,6 +84,6 @@@
  #include <linux/usb/input.h>
  #include <linux/usb/quirks.h>
  
- #define DRIVER_AUTHOR "Marko Friedemann <[email protected]>"
- #define DRIVER_DESC "X-Box pad driver"
  #define XPAD_PKT_LEN 64
  
  /* xbox d-pads should map to buttons, as is required for DDR pads
@@@ -229,7 -226,6 +226,7 @@@ static const struct xpad_device 
        { 0x0e6f, 0x0213, "Afterglow Gamepad for Xbox 360", 0, XTYPE_XBOX360 },
        { 0x0e6f, 0x021f, "Rock Candy Gamepad for Xbox 360", 0, XTYPE_XBOX360 },
        { 0x0e6f, 0x0246, "Rock Candy Gamepad for Xbox One 2015", 0, XTYPE_XBOXONE },
 +      { 0x0e6f, 0x02ab, "PDP Controller for Xbox One", 0, XTYPE_XBOXONE },
        { 0x0e6f, 0x0301, "Logic3 Controller", 0, XTYPE_XBOX360 },
        { 0x0e6f, 0x0346, "Rock Candy Gamepad for Xbox One 2016", 0, XTYPE_XBOXONE },
        { 0x0e6f, 0x0401, "Logic3 Controller", 0, XTYPE_XBOX360 },
@@@ -476,22 -472,6 +473,22 @@@ static const u8 xboxone_hori_init[] = 
        0x00, 0x00, 0x00, 0x80, 0x00
  };
  
 +/*
 + * This packet is required for some of the PDP pads to start
 + * sending input reports. One of those pads is (0x0e6f:0x02ab).
 + */
 +static const u8 xboxone_pdp_init1[] = {
 +      0x0a, 0x20, 0x00, 0x03, 0x00, 0x01, 0x14
 +};
 +
 +/*
 + * This packet is required for some of the PDP pads to start
 + * sending input reports. One of those pads is (0x0e6f:0x02ab).
 + */
 +static const u8 xboxone_pdp_init2[] = {
 +      0x06, 0x20, 0x00, 0x02, 0x01, 0x00
 +};
 +
  /*
   * A specific rumble packet is required for some PowerA pads to start
   * sending input reports. One of those pads is (0x24c6:0x543a).
@@@ -522,8 -502,6 +519,8 @@@ static const struct xboxone_init_packe
        XBOXONE_INIT_PKT(0x0e6f, 0x0165, xboxone_hori_init),
        XBOXONE_INIT_PKT(0x0f0d, 0x0067, xboxone_hori_init),
        XBOXONE_INIT_PKT(0x0000, 0x0000, xboxone_fw2015_init),
 +      XBOXONE_INIT_PKT(0x0e6f, 0x02ab, xboxone_pdp_init1),
 +      XBOXONE_INIT_PKT(0x0e6f, 0x02ab, xboxone_pdp_init2),
        XBOXONE_INIT_PKT(0x24c6, 0x541a, xboxone_rumblebegin_init),
        XBOXONE_INIT_PKT(0x24c6, 0x542a, xboxone_rumblebegin_init),
        XBOXONE_INIT_PKT(0x24c6, 0x543a, xboxone_rumblebegin_init),
@@@ -1943,6 -1921,6 +1940,6 @@@ static struct usb_driver xpad_driver = 
  
  module_usb_driver(xpad_driver);
  
- MODULE_AUTHOR(DRIVER_AUTHOR);
- MODULE_DESCRIPTION(DRIVER_DESC);
+ MODULE_AUTHOR("Marko Friedemann <[email protected]>");
+ MODULE_DESCRIPTION("X-Box pad driver");
  MODULE_LICENSE("GPL");
index 2111a85d0b177210bb1fcf10e5d55d9ff832f32d,70fe287f90c06d8f92410d419497b254b24cb153..75e757520ef09f4cecbe0d9ab59a5d5a0bec75e8
@@@ -42,7 -42,6 +42,6 @@@
  #include "elan_i2c.h"
  
  #define DRIVER_NAME           "elan_i2c"
- #define ELAN_DRIVER_VERSION   "1.6.3"
  #define ELAN_VENDOR_ID                0x04f3
  #define ETP_MAX_PRESSURE      255
  #define ETP_FWIDTH_REDUCE     90
@@@ -1261,7 -1260,6 +1260,7 @@@ static const struct acpi_device_id elan
        { "ELAN0608", 0 },
        { "ELAN0609", 0 },
        { "ELAN060B", 0 },
 +      { "ELAN060C", 0 },
        { "ELAN0611", 0 },
        { "ELAN1000", 0 },
        { }
@@@ -1294,4 -1292,3 +1293,3 @@@ module_i2c_driver(elan_driver)
  MODULE_AUTHOR("Duson Lin <[email protected]>");
  MODULE_DESCRIPTION("Elan I2C/SMBus Touchpad driver");
  MODULE_LICENSE("GPL");
- MODULE_VERSION(ELAN_DRIVER_VERSION);
index cd9f61cb3fc67fd3f5f8fe7a55fb1094d5bf1672,a246fc686bb728dbe48b2fc84b90a1734af60c66..3d2e23a0ae39dd6b9475db31ce2b30cc930ddc93
@@@ -173,7 -173,6 +173,7 @@@ static const char * const smbus_pnp_ids
        "LEN0046", /* X250 */
        "LEN004a", /* W541 */
        "LEN200f", /* T450s */
 +      "LEN2018", /* T460p */
        NULL
  };
  
@@@ -1281,6 -1280,16 +1281,16 @@@ static void set_input_params(struct psm
                                    INPUT_MT_POINTER |
                                    (cr48_profile_sensor ?
                                        INPUT_MT_TRACK : INPUT_MT_SEMI_MT));
+               /*
+                * For semi-mt devices we send ABS_X/Y ourselves instead of
+                * input_mt_report_pointer_emulation. But
+                * input_mt_init_slots() resets the fuzz to 0, leading to a
+                * filtered ABS_MT_POSITION_X but an unfiltered ABS_X
+                * position. Let's re-initialize ABS_X/Y here.
+                */
+               if (!cr48_profile_sensor)
+                       set_abs_position_params(dev, &priv->info, ABS_X, ABS_Y);
        }
  
        if (SYN_CAP_PALMDETECT(info->capabilities))
index 141ea228aac6a39641c70eb01ff0bf33cd5aaf1f,d43ab65263af3fa7a3f3050cdf1280ccd1593af0..f5954981e9ee5bb68002af651557232c673eb30c
@@@ -41,6 -41,13 +41,13 @@@ void rmi_free_function_list(struct rmi_
  
        rmi_dbg(RMI_DEBUG_CORE, &rmi_dev->dev, "Freeing function list\n");
  
+       /* Doing it in the reverse order so F01 will be removed last */
+       list_for_each_entry_safe_reverse(fn, tmp,
+                                        &data->function_list, node) {
+               list_del(&fn->node);
+               rmi_unregister_function(fn);
+       }
        devm_kfree(&rmi_dev->dev, data->irq_memory);
        data->irq_memory = NULL;
        data->irq_status = NULL;
  
        data->f01_container = NULL;
        data->f34_container = NULL;
-       /* Doing it in the reverse order so F01 will be removed last */
-       list_for_each_entry_safe_reverse(fn, tmp,
-                                        &data->function_list, node) {
-               list_del(&fn->node);
-               rmi_unregister_function(fn);
-       }
  }
  
  static int reset_one_function(struct rmi_function *fn)
@@@ -230,10 -230,8 +230,10 @@@ static irqreturn_t rmi_irq_fn(int irq, 
                rmi_dbg(RMI_DEBUG_CORE, &rmi_dev->dev,
                        "Failed to process interrupt request: %d\n", ret);
  
 -      if (count)
 +      if (count) {
                kfree(attn_data.data);
 +              attn_data.data = NULL;
 +      }
  
        if (!kfifo_is_empty(&drvdata->attn_fifo))
                return rmi_irq_fn(irq, dev_id);
index a458e5ec9e41eaee8a3e04c6643aca614c79a1c3,a174b8c79ef5ebcde86c98540d5f44131b62ca3a..bb8aac23e464af8ff8fdeaef64eb666c22bbc8da
@@@ -27,7 -27,6 +27,7 @@@
  #include <linux/module.h>
  #include <linux/input.h>
  #include <linux/interrupt.h>
 +#include <linux/irq.h>
  #include <linux/platform_device.h>
  #include <linux/async.h>
  #include <linux/i2c.h>
@@@ -45,7 -44,6 +45,6 @@@
  
  /* Device, Driver information */
  #define DEVICE_NAME   "elants_i2c"
- #define DRV_VERSION   "1.0.9"
  
  /* Convert from rows or columns into resolution */
  #define ELAN_TS_RESOLUTION(n, m)   (((n) - 1) * (m))
@@@ -1262,13 -1260,10 +1261,13 @@@ static int elants_i2c_probe(struct i2c_
        }
  
        /*
 -       * Systems using device tree should set up interrupt via DTS,
 -       * the rest will use the default falling edge interrupts.
 +       * Platform code (ACPI, DTS) should normally set up interrupt
 +       * for us, but in case it did not let's fall back to using falling
 +       * edge to be compatible with older Chromebooks.
         */
 -      irqflags = client->dev.of_node ? 0 : IRQF_TRIGGER_FALLING;
 +      irqflags = irq_get_trigger_type(client->irq);
 +      if (!irqflags)
 +              irqflags = IRQF_TRIGGER_FALLING;
  
        error = devm_request_threaded_irq(&client->dev, client->irq,
                                          NULL, elants_i2c_irq,
@@@ -1406,5 -1401,4 +1405,4 @@@ module_i2c_driver(elants_i2c_driver)
  
  MODULE_AUTHOR("Scott Liu <[email protected]>");
  MODULE_DESCRIPTION("Elan I2c Touchscreen driver");
- MODULE_VERSION(DRV_VERSION);
  MODULE_LICENSE("GPL");
This page took 0.070824 seconds and 4 git commands to generate.