forked from mirrors/linux
		
	Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
Pull input updates from Dmitry Torokhov: "Mostly new IDs for Elan/Synaptics touchpads, plus a few small fixups" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: Input: omap-keypad - fix keyboard debounce configuration Input: xpad - quirk all PDP Xbox One gamepads Input: synaptics - enable SMBus for HP 15-ay000 Input: synaptics - add PNP ID for ThinkPad P50 to SMBus Input: elan_i2c - add ACPI ID for Lenovo IdeaPad 330-15ARR Input: elan_i2c - add support for ELAN0621 touchpad Input: hyper-v - fix wakeup from suspend-to-idle Input: atkbd - clean up indentation issue Input: st1232 - convert to SPDX identifiers Input: migor_ts - convert to SPDX identifiers Input: dt-bindings - fix a typo in file input-reset.txt Input: cros_ec_keyb - fix button/switch capability reports Input: elan_i2c - add ELAN0620 to the ACPI table Input: matrix_keypad - check for errors from of_get_named_gpio()
This commit is contained in:
		
						commit
						adac0753c2
					
				
					 12 changed files with 48 additions and 52 deletions
				
			
		| 
						 | 
				
			
			@ -12,7 +12,7 @@ The /chosen node should contain a 'linux,sysrq-reset-seq' child node to define
 | 
			
		|||
a set of keys.
 | 
			
		||||
 | 
			
		||||
Required property:
 | 
			
		||||
sysrq-reset-seq: array of Linux keycodes, one keycode per cell.
 | 
			
		||||
keyset: array of Linux keycodes, one keycode per cell.
 | 
			
		||||
 | 
			
		||||
Optional property:
 | 
			
		||||
timeout-ms: duration keys must be pressed together in milliseconds before
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -309,7 +309,7 @@ static void mousevsc_on_receive(struct hv_device *device,
 | 
			
		|||
		hid_input_report(input_dev->hid_device, HID_INPUT_REPORT,
 | 
			
		||||
				 input_dev->input_buf, len, 1);
 | 
			
		||||
 | 
			
		||||
		pm_wakeup_event(&input_dev->device->device, 0);
 | 
			
		||||
		pm_wakeup_hard_event(&input_dev->device->device);
 | 
			
		||||
 | 
			
		||||
		break;
 | 
			
		||||
	default:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -480,18 +480,18 @@ static const u8 xboxone_hori_init[] = {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * This packet is required for some of the PDP pads to start
 | 
			
		||||
 * This packet is required for most (all?) of the PDP pads to start
 | 
			
		||||
 * sending input reports. These pads include: (0x0e6f:0x02ab),
 | 
			
		||||
 * (0x0e6f:0x02a4).
 | 
			
		||||
 * (0x0e6f:0x02a4), (0x0e6f:0x02a6).
 | 
			
		||||
 */
 | 
			
		||||
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
 | 
			
		||||
 * This packet is required for most (all?) of the PDP pads to start
 | 
			
		||||
 * sending input reports. These pads include: (0x0e6f:0x02ab),
 | 
			
		||||
 * (0x0e6f:0x02a4).
 | 
			
		||||
 * (0x0e6f:0x02a4), (0x0e6f:0x02a6).
 | 
			
		||||
 */
 | 
			
		||||
static const u8 xboxone_pdp_init2[] = {
 | 
			
		||||
	0x06, 0x20, 0x00, 0x02, 0x01, 0x00
 | 
			
		||||
| 
						 | 
				
			
			@ -527,12 +527,8 @@ static const struct xboxone_init_packet xboxone_init_packets[] = {
 | 
			
		|||
	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(0x0e6f, 0x02a4, xboxone_pdp_init1),
 | 
			
		||||
	XBOXONE_INIT_PKT(0x0e6f, 0x02a4, xboxone_pdp_init2),
 | 
			
		||||
	XBOXONE_INIT_PKT(0x0e6f, 0x02a6, xboxone_pdp_init1),
 | 
			
		||||
	XBOXONE_INIT_PKT(0x0e6f, 0x02a6, xboxone_pdp_init2),
 | 
			
		||||
	XBOXONE_INIT_PKT(0x0e6f, 0x0000, xboxone_pdp_init1),
 | 
			
		||||
	XBOXONE_INIT_PKT(0x0e6f, 0x0000, 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),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -841,7 +841,7 @@ static int atkbd_select_set(struct atkbd *atkbd, int target_set, int allow_extra
 | 
			
		|||
	if (param[0] != 3) {
 | 
			
		||||
		param[0] = 2;
 | 
			
		||||
		if (ps2_command(ps2dev, param, ATKBD_CMD_SSCANSET))
 | 
			
		||||
		return 2;
 | 
			
		||||
			return 2;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ps2_command(ps2dev, param, ATKBD_CMD_SETALL_MBR);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -493,7 +493,8 @@ static int cros_ec_keyb_register_bs(struct cros_ec_keyb *ckdev)
 | 
			
		|||
	for (i = 0; i < ARRAY_SIZE(cros_ec_keyb_bs); i++) {
 | 
			
		||||
		const struct cros_ec_bs_map *map = &cros_ec_keyb_bs[i];
 | 
			
		||||
 | 
			
		||||
		if (buttons & BIT(map->bit))
 | 
			
		||||
		if ((map->ev_type == EV_KEY && (buttons & BIT(map->bit))) ||
 | 
			
		||||
		    (map->ev_type == EV_SW && (switches & BIT(map->bit))))
 | 
			
		||||
			input_set_capability(idev, map->ev_type, map->code);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -407,7 +407,7 @@ matrix_keypad_parse_dt(struct device *dev)
 | 
			
		|||
	struct matrix_keypad_platform_data *pdata;
 | 
			
		||||
	struct device_node *np = dev->of_node;
 | 
			
		||||
	unsigned int *gpios;
 | 
			
		||||
	int i, nrow, ncol;
 | 
			
		||||
	int ret, i, nrow, ncol;
 | 
			
		||||
 | 
			
		||||
	if (!np) {
 | 
			
		||||
		dev_err(dev, "device lacks DT data\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -452,12 +452,19 @@ matrix_keypad_parse_dt(struct device *dev)
 | 
			
		|||
		return ERR_PTR(-ENOMEM);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < pdata->num_row_gpios; i++)
 | 
			
		||||
		gpios[i] = of_get_named_gpio(np, "row-gpios", i);
 | 
			
		||||
	for (i = 0; i < nrow; i++) {
 | 
			
		||||
		ret = of_get_named_gpio(np, "row-gpios", i);
 | 
			
		||||
		if (ret < 0)
 | 
			
		||||
			return ERR_PTR(ret);
 | 
			
		||||
		gpios[i] = ret;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < pdata->num_col_gpios; i++)
 | 
			
		||||
		gpios[pdata->num_row_gpios + i] =
 | 
			
		||||
			of_get_named_gpio(np, "col-gpios", i);
 | 
			
		||||
	for (i = 0; i < ncol; i++) {
 | 
			
		||||
		ret = of_get_named_gpio(np, "col-gpios", i);
 | 
			
		||||
		if (ret < 0)
 | 
			
		||||
			return ERR_PTR(ret);
 | 
			
		||||
		gpios[nrow + i] = ret;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	pdata->row_gpios = gpios;
 | 
			
		||||
	pdata->col_gpios = &gpios[pdata->num_row_gpios];
 | 
			
		||||
| 
						 | 
				
			
			@ -484,10 +491,8 @@ static int matrix_keypad_probe(struct platform_device *pdev)
 | 
			
		|||
	pdata = dev_get_platdata(&pdev->dev);
 | 
			
		||||
	if (!pdata) {
 | 
			
		||||
		pdata = matrix_keypad_parse_dt(&pdev->dev);
 | 
			
		||||
		if (IS_ERR(pdata)) {
 | 
			
		||||
			dev_err(&pdev->dev, "no platform data defined\n");
 | 
			
		||||
		if (IS_ERR(pdata))
 | 
			
		||||
			return PTR_ERR(pdata);
 | 
			
		||||
		}
 | 
			
		||||
	} else if (!pdata->keymap_data) {
 | 
			
		||||
		dev_err(&pdev->dev, "no keymap data defined\n");
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -60,8 +60,18 @@
 | 
			
		|||
 | 
			
		||||
/* OMAP4 values */
 | 
			
		||||
#define OMAP4_VAL_IRQDISABLE		0x0
 | 
			
		||||
#define OMAP4_VAL_DEBOUNCINGTIME	0x7
 | 
			
		||||
#define OMAP4_VAL_PVT			0x7
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Errata i689: If a key is released for a time shorter than debounce time,
 | 
			
		||||
 * the keyboard will idle and never detect the key release. The workaround
 | 
			
		||||
 * is to use at least a 12ms debounce time. See omap5432 TRM chapter
 | 
			
		||||
 * "26.4.6.2 Keyboard Controller Timer" for more information.
 | 
			
		||||
 */
 | 
			
		||||
#define OMAP4_KEYPAD_PTV_DIV_128        0x6
 | 
			
		||||
#define OMAP4_KEYPAD_DEBOUNCINGTIME_MS(dbms, ptv)     \
 | 
			
		||||
	((((dbms) * 1000) / ((1 << ((ptv) + 1)) * (1000000 / 32768))) - 1)
 | 
			
		||||
#define OMAP4_VAL_DEBOUNCINGTIME_16MS					\
 | 
			
		||||
	OMAP4_KEYPAD_DEBOUNCINGTIME_MS(16, OMAP4_KEYPAD_PTV_DIV_128)
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
	KBD_REVISION_OMAP4 = 0,
 | 
			
		||||
| 
						 | 
				
			
			@ -181,9 +191,9 @@ static int omap4_keypad_open(struct input_dev *input)
 | 
			
		|||
 | 
			
		||||
	kbd_writel(keypad_data, OMAP4_KBD_CTRL,
 | 
			
		||||
			OMAP4_DEF_CTRL_NOSOFTMODE |
 | 
			
		||||
			(OMAP4_VAL_PVT << OMAP4_DEF_CTRL_PTV_SHIFT));
 | 
			
		||||
			(OMAP4_KEYPAD_PTV_DIV_128 << OMAP4_DEF_CTRL_PTV_SHIFT));
 | 
			
		||||
	kbd_writel(keypad_data, OMAP4_KBD_DEBOUNCINGTIME,
 | 
			
		||||
			OMAP4_VAL_DEBOUNCINGTIME);
 | 
			
		||||
			OMAP4_VAL_DEBOUNCINGTIME_16MS);
 | 
			
		||||
	/* clear pending interrupts */
 | 
			
		||||
	kbd_write_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS,
 | 
			
		||||
			 kbd_read_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1348,6 +1348,9 @@ static const struct acpi_device_id elan_acpi_id[] = {
 | 
			
		|||
	{ "ELAN0618", 0 },
 | 
			
		||||
	{ "ELAN061C", 0 },
 | 
			
		||||
	{ "ELAN061D", 0 },
 | 
			
		||||
	{ "ELAN061E", 0 },
 | 
			
		||||
	{ "ELAN0620", 0 },
 | 
			
		||||
	{ "ELAN0621", 0 },
 | 
			
		||||
	{ "ELAN0622", 0 },
 | 
			
		||||
	{ "ELAN1000", 0 },
 | 
			
		||||
	{ }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -170,6 +170,7 @@ static const char * const smbus_pnp_ids[] = {
 | 
			
		|||
	"LEN0048", /* X1 Carbon 3 */
 | 
			
		||||
	"LEN0046", /* X250 */
 | 
			
		||||
	"LEN004a", /* W541 */
 | 
			
		||||
	"LEN005b", /* P50 */
 | 
			
		||||
	"LEN0071", /* T480 */
 | 
			
		||||
	"LEN0072", /* X1 Carbon Gen 5 (2017) - Elan/ALPS trackpoint */
 | 
			
		||||
	"LEN0073", /* X1 Carbon G5 (Elantech) */
 | 
			
		||||
| 
						 | 
				
			
			@ -177,6 +178,7 @@ static const char * const smbus_pnp_ids[] = {
 | 
			
		|||
	"LEN0096", /* X280 */
 | 
			
		||||
	"LEN0097", /* X280 -> ALPS trackpoint */
 | 
			
		||||
	"LEN200f", /* T450s */
 | 
			
		||||
	"SYN3221", /* HP 15-ay000 */
 | 
			
		||||
	NULL
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -177,7 +177,7 @@ static void hv_kbd_on_receive(struct hv_device *hv_dev,
 | 
			
		|||
		 * state because the Enter-UP can trigger a wakeup at once.
 | 
			
		||||
		 */
 | 
			
		||||
		if (!(info & IS_BREAK))
 | 
			
		||||
			pm_wakeup_event(&hv_dev->device, 0);
 | 
			
		||||
			pm_wakeup_hard_event(&hv_dev->device);
 | 
			
		||||
 | 
			
		||||
		break;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,23 +1,10 @@
 | 
			
		|||
// SPDX-License-Identifier: GPL-2.0+
 | 
			
		||||
/*
 | 
			
		||||
 * Touch Screen driver for Renesas MIGO-R Platform
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) 2008 Magnus Damm
 | 
			
		||||
 * Copyright (c) 2007 Ujjwal Pande <ujjwal@kenati.com>,
 | 
			
		||||
 *  Kenati Technologies Pvt Ltd.
 | 
			
		||||
 *
 | 
			
		||||
 * This file is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU  General Public
 | 
			
		||||
 * License as published by the Free Software Foundation; either
 | 
			
		||||
 * version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This file is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 *  General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public
 | 
			
		||||
 * License along with this library; if not, write to the Free Software
 | 
			
		||||
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
			
		||||
 */
 | 
			
		||||
#include <linux/module.h>
 | 
			
		||||
#include <linux/kernel.h>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
// SPDX-License-Identifier: GPL-2.0
 | 
			
		||||
/*
 | 
			
		||||
 * ST1232 Touchscreen Controller Driver
 | 
			
		||||
 *
 | 
			
		||||
| 
						 | 
				
			
			@ -7,15 +8,6 @@
 | 
			
		|||
 * Using code from:
 | 
			
		||||
 *  - android.git.kernel.org: projects/kernel/common.git: synaptics_i2c_rmi.c
 | 
			
		||||
 *	Copyright (C) 2007 Google, Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * This software is licensed under the terms of the GNU General Public
 | 
			
		||||
 * License version 2, as published by the Free Software Foundation, and
 | 
			
		||||
 * may be copied, distributed, and modified under those terms.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <linux/delay.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -295,4 +287,4 @@ module_i2c_driver(st1232_ts_driver);
 | 
			
		|||
 | 
			
		||||
MODULE_AUTHOR("Tony SIM <chinyeow.sim.xt@renesas.com>");
 | 
			
		||||
MODULE_DESCRIPTION("SITRONIX ST1232 Touchscreen Controller Driver");
 | 
			
		||||
MODULE_LICENSE("GPL");
 | 
			
		||||
MODULE_LICENSE("GPL v2");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue