Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input

Pull input fixes from Dmitry Torokhov:

 - a fix to generate proper timestamps on key autorepeat events that
   were broken recently

 - a fix for Synaptics driver to only activate reduced reporting mode
   when explicitly requested

 - a new keycode for "selective screenshot" function

 - other assorted fixes

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
  Input: fix stale timestamp on key autorepeat events
  Input: move the new KEY_SELECTIVE_SCREENSHOT keycode
  Input: avoid BIT() macro usage in the serio.h UAPI header
  Input: synaptics-rmi4 - set reduced reporting mode only when requested
  Input: synaptics - enable RMI on HP Envy 13-ad105ng
  Input: allocate keycode for "Selective Screenshot" key
  Input: tm2-touchkey - add support for Coreriver TC360 variant
  dt-bindings: input: add Coreriver TC360 binding
  dt-bindings: vendor-prefixes: Add Coreriver vendor prefix
  Input: raydium_i2c_ts - fix error codes in raydium_i2c_boot_trigger()
This commit is contained in:
Linus Torvalds 2020-03-26 20:49:44 -07:00
commit f3e69428b5
9 changed files with 30 additions and 11 deletions

View File

@ -5,6 +5,7 @@ Required properties:
* "cypress,tm2-touchkey" - for the touchkey found on the tm2 board * "cypress,tm2-touchkey" - for the touchkey found on the tm2 board
* "cypress,midas-touchkey" - for the touchkey found on midas boards * "cypress,midas-touchkey" - for the touchkey found on midas boards
* "cypress,aries-touchkey" - for the touchkey found on aries boards * "cypress,aries-touchkey" - for the touchkey found on aries boards
* "coreriver,tc360-touchkey" - for the Coreriver TouchCore 360 touchkey
- reg: I2C address of the chip. - reg: I2C address of the chip.
- interrupts: interrupt to which the chip is connected (see interrupt - interrupts: interrupt to which the chip is connected (see interrupt
binding[0]). binding[0]).

View File

@ -205,6 +205,8 @@ patternProperties:
description: Colorful GRP, Shenzhen Xueyushi Technology Ltd. description: Colorful GRP, Shenzhen Xueyushi Technology Ltd.
"^compulab,.*": "^compulab,.*":
description: CompuLab Ltd. description: CompuLab Ltd.
"^coreriver,.*":
description: CORERIVER Semiconductor Co.,Ltd.
"^corpro,.*": "^corpro,.*":
description: Chengdu Corpro Technology Co., Ltd. description: Chengdu Corpro Technology Co., Ltd.
"^cortina,.*": "^cortina,.*":

View File

@ -190,6 +190,7 @@ static void input_repeat_key(struct timer_list *t)
input_value_sync input_value_sync
}; };
input_set_timestamp(dev, ktime_get());
input_pass_values(dev, vals, ARRAY_SIZE(vals)); input_pass_values(dev, vals, ARRAY_SIZE(vals));
if (dev->rep[REP_PERIOD]) if (dev->rep[REP_PERIOD])

View File

@ -75,6 +75,14 @@ static struct touchkey_variant aries_touchkey_variant = {
.cmd_led_off = ARIES_TOUCHKEY_CMD_LED_OFF, .cmd_led_off = ARIES_TOUCHKEY_CMD_LED_OFF,
}; };
static const struct touchkey_variant tc360_touchkey_variant = {
.keycode_reg = 0x00,
.base_reg = 0x00,
.fixed_regulator = true,
.cmd_led_on = TM2_TOUCHKEY_CMD_LED_ON,
.cmd_led_off = TM2_TOUCHKEY_CMD_LED_OFF,
};
static int tm2_touchkey_led_brightness_set(struct led_classdev *led_dev, static int tm2_touchkey_led_brightness_set(struct led_classdev *led_dev,
enum led_brightness brightness) enum led_brightness brightness)
{ {
@ -327,6 +335,9 @@ static const struct of_device_id tm2_touchkey_of_match[] = {
}, { }, {
.compatible = "cypress,aries-touchkey", .compatible = "cypress,aries-touchkey",
.data = &aries_touchkey_variant, .data = &aries_touchkey_variant,
}, {
.compatible = "coreriver,tc360-touchkey",
.data = &tc360_touchkey_variant,
}, },
{ }, { },
}; };

View File

@ -186,6 +186,7 @@ static const char * const smbus_pnp_ids[] = {
"SYN3052", /* HP EliteBook 840 G4 */ "SYN3052", /* HP EliteBook 840 G4 */
"SYN3221", /* HP 15-ay000 */ "SYN3221", /* HP 15-ay000 */
"SYN323d", /* HP Spectre X360 13-w013dx */ "SYN323d", /* HP Spectre X360 13-w013dx */
"SYN3257", /* HP Envy 13-ad105ng */
NULL NULL
}; };

View File

@ -1203,8 +1203,8 @@ static int rmi_f11_initialize(struct rmi_function *fn)
* If distance threshold values are set, switch to reduced reporting * If distance threshold values are set, switch to reduced reporting
* mode so they actually get used by the controller. * mode so they actually get used by the controller.
*/ */
if (ctrl->ctrl0_11[RMI_F11_DELTA_X_THRESHOLD] || if (sensor->axis_align.delta_x_threshold ||
ctrl->ctrl0_11[RMI_F11_DELTA_Y_THRESHOLD]) { sensor->axis_align.delta_y_threshold) {
ctrl->ctrl0_11[0] &= ~RMI_F11_REPORT_MODE_MASK; ctrl->ctrl0_11[0] &= ~RMI_F11_REPORT_MODE_MASK;
ctrl->ctrl0_11[0] |= RMI_F11_REPORT_MODE_REDUCED; ctrl->ctrl0_11[0] |= RMI_F11_REPORT_MODE_REDUCED;
} }

View File

@ -432,7 +432,7 @@ static int raydium_i2c_write_object(struct i2c_client *client,
return 0; return 0;
} }
static bool raydium_i2c_boot_trigger(struct i2c_client *client) static int raydium_i2c_boot_trigger(struct i2c_client *client)
{ {
static const u8 cmd[7][6] = { static const u8 cmd[7][6] = {
{ 0x08, 0x0C, 0x09, 0x00, 0x50, 0xD7 }, { 0x08, 0x0C, 0x09, 0x00, 0x50, 0xD7 },
@ -457,10 +457,10 @@ static bool raydium_i2c_boot_trigger(struct i2c_client *client)
} }
} }
return false; return 0;
} }
static bool raydium_i2c_fw_trigger(struct i2c_client *client) static int raydium_i2c_fw_trigger(struct i2c_client *client)
{ {
static const u8 cmd[5][11] = { static const u8 cmd[5][11] = {
{ 0, 0x09, 0x71, 0x0C, 0x09, 0x00, 0x50, 0xD7, 0, 0, 0 }, { 0, 0x09, 0x71, 0x0C, 0x09, 0x00, 0x50, 0xD7, 0, 0, 0 },
@ -483,7 +483,7 @@ static bool raydium_i2c_fw_trigger(struct i2c_client *client)
} }
} }
return false; return 0;
} }
static int raydium_i2c_check_path(struct i2c_client *client) static int raydium_i2c_check_path(struct i2c_client *client)

View File

@ -652,6 +652,9 @@
/* Electronic privacy screen control */ /* Electronic privacy screen control */
#define KEY_PRIVACY_SCREEN_TOGGLE 0x279 #define KEY_PRIVACY_SCREEN_TOGGLE 0x279
/* Select an area of screen to be copied */
#define KEY_SELECTIVE_SCREENSHOT 0x27a
/* /*
* Some keyboards have keys which do not have a defined meaning, these keys * Some keyboards have keys which do not have a defined meaning, these keys
* are intended to be programmed / bound to macros by the user. For most * are intended to be programmed / bound to macros by the user. For most

View File

@ -9,7 +9,7 @@
#ifndef _UAPI_SERIO_H #ifndef _UAPI_SERIO_H
#define _UAPI_SERIO_H #define _UAPI_SERIO_H
#include <linux/const.h>
#include <linux/ioctl.h> #include <linux/ioctl.h>
#define SPIOCSTYPE _IOW('q', 0x01, unsigned long) #define SPIOCSTYPE _IOW('q', 0x01, unsigned long)
@ -18,10 +18,10 @@
/* /*
* bit masks for use in "interrupt" flags (3rd argument) * bit masks for use in "interrupt" flags (3rd argument)
*/ */
#define SERIO_TIMEOUT BIT(0) #define SERIO_TIMEOUT _BITUL(0)
#define SERIO_PARITY BIT(1) #define SERIO_PARITY _BITUL(1)
#define SERIO_FRAME BIT(2) #define SERIO_FRAME _BITUL(2)
#define SERIO_OOB_DATA BIT(3) #define SERIO_OOB_DATA _BITUL(3)
/* /*
* Serio types * Serio types