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

Commit 1cced501 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull input subsystem fixes from Dmitry Torokhov:
 "A fix for ALPS driver for issue introduced in the latest update and a
  tweak for yet another Lenovo box in Synaptics.

  There will be more ALPS tweaks coming.."

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
  Input: define INPUT_PROP_ACCELEROMETER behavior
  Input: synaptics - fix min-max quirk value for E440
  Input: synaptics - add quirk for Thinkpad E440
  Input: ALPS - fix max coordinates for v5 and v7 protocols
  Input: add MT_TOOL_PALM
parents 57a9d89d 33096777
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -294,6 +294,12 @@ accordingly. This property does not affect kernel behavior.
The kernel does not provide button emulation for such devices but treats
The kernel does not provide button emulation for such devices but treats
them as any other INPUT_PROP_BUTTONPAD device.
them as any other INPUT_PROP_BUTTONPAD device.


INPUT_PROP_ACCELEROMETER
-------------------------
Directional axes on this device (absolute and/or relative x, y, z) represent
accelerometer data. All other axes retain their meaning. A device must not mix
regular directional axes and accelerometer axes on the same event node.

Guidelines:
Guidelines:
==========
==========
The guidelines below ensure proper single-touch and multi-finger functionality.
The guidelines below ensure proper single-touch and multi-finger functionality.
+6 −3
Original line number Original line Diff line number Diff line
@@ -312,9 +312,12 @@ ABS_MT_TOOL_TYPE


The type of approaching tool. A lot of kernel drivers cannot distinguish
The type of approaching tool. A lot of kernel drivers cannot distinguish
between different tool types, such as a finger or a pen. In such cases, the
between different tool types, such as a finger or a pen. In such cases, the
event should be omitted. The protocol currently supports MT_TOOL_FINGER and
event should be omitted. The protocol currently supports MT_TOOL_FINGER,
MT_TOOL_PEN [2]. For type B devices, this event is handled by input core;
MT_TOOL_PEN, and MT_TOOL_PALM [2]. For type B devices, this event is handled
drivers should instead use input_mt_report_slot_state().
by input core; drivers should instead use input_mt_report_slot_state().
A contact's ABS_MT_TOOL_TYPE may change over time while still touching the
device, because the firmware may not be able to determine which tool is being
used when it first appears.


ABS_MT_BLOB_ID
ABS_MT_BLOB_ID


+6 −5
Original line number Original line Diff line number Diff line
@@ -2281,10 +2281,12 @@ static int alps_set_protocol(struct psmouse *psmouse,
		priv->set_abs_params = alps_set_abs_params_mt;
		priv->set_abs_params = alps_set_abs_params_mt;
		priv->nibble_commands = alps_v3_nibble_commands;
		priv->nibble_commands = alps_v3_nibble_commands;
		priv->addr_command = PSMOUSE_CMD_RESET_WRAP;
		priv->addr_command = PSMOUSE_CMD_RESET_WRAP;
		priv->x_max = 1360;
		priv->y_max = 660;
		priv->x_bits = 23;
		priv->x_bits = 23;
		priv->y_bits = 12;
		priv->y_bits = 12;

		if (alps_dolphin_get_device_area(psmouse, priv))
			return -EIO;

		break;
		break;


	case ALPS_PROTO_V6:
	case ALPS_PROTO_V6:
@@ -2303,9 +2305,8 @@ static int alps_set_protocol(struct psmouse *psmouse,
		priv->set_abs_params = alps_set_abs_params_mt;
		priv->set_abs_params = alps_set_abs_params_mt;
		priv->nibble_commands = alps_v3_nibble_commands;
		priv->nibble_commands = alps_v3_nibble_commands;
		priv->addr_command = PSMOUSE_CMD_RESET_WRAP;
		priv->addr_command = PSMOUSE_CMD_RESET_WRAP;

		priv->x_max = 0xfff;
		if (alps_dolphin_get_device_area(psmouse, priv))
		priv->y_max = 0x7ff;
			return -EIO;


		if (priv->fw_ver[1] != 0xba)
		if (priv->fw_ver[1] != 0xba)
			priv->flags |= ALPS_BUTTONPAD;
			priv->flags |= ALPS_BUTTONPAD;
+6 −1
Original line number Original line Diff line number Diff line
@@ -152,6 +152,11 @@ static const struct min_max_quirk min_max_pnpid_table[] = {
		{ANY_BOARD_ID, ANY_BOARD_ID},
		{ANY_BOARD_ID, ANY_BOARD_ID},
		1024, 5022, 2508, 4832
		1024, 5022, 2508, 4832
	},
	},
	{
		(const char * const []){"LEN2006", NULL},
		{2691, 2691},
		1024, 5045, 2457, 4832
	},
	{
	{
		(const char * const []){"LEN2006", NULL},
		(const char * const []){"LEN2006", NULL},
		{ANY_BOARD_ID, ANY_BOARD_ID},
		{ANY_BOARD_ID, ANY_BOARD_ID},
@@ -189,7 +194,7 @@ static const char * const topbuttonpad_pnp_ids[] = {
	"LEN2003",
	"LEN2003",
	"LEN2004", /* L440 */
	"LEN2004", /* L440 */
	"LEN2005",
	"LEN2005",
	"LEN2006",
	"LEN2006", /* Edge E440/E540 */
	"LEN2007",
	"LEN2007",
	"LEN2008",
	"LEN2008",
	"LEN2009",
	"LEN2009",
+2 −1
Original line number Original line Diff line number Diff line
@@ -973,7 +973,8 @@ struct input_keymap_entry {
 */
 */
#define MT_TOOL_FINGER		0
#define MT_TOOL_FINGER		0
#define MT_TOOL_PEN		1
#define MT_TOOL_PEN		1
#define MT_TOOL_MAX		1
#define MT_TOOL_PALM		2
#define MT_TOOL_MAX		2


/*
/*
 * Values describing the status of a force-feedback effect
 * Values describing the status of a force-feedback effect