diff options
Diffstat (limited to 'drivers/input')
| -rw-r--r-- | drivers/input/evdev.c | 3 | ||||
| -rw-r--r-- | drivers/input/joydev.c | 3 | ||||
| -rw-r--r-- | drivers/input/keyboard/Kconfig | 1 | ||||
| -rw-r--r-- | drivers/input/keyboard/pxa27x_keypad.c | 3 | ||||
| -rw-r--r-- | drivers/input/misc/xen-kbdfront.c | 5 | ||||
| -rw-r--r-- | drivers/input/mouse/bcm5974.c | 21 | ||||
| -rw-r--r-- | drivers/input/mousedev.c | 3 | ||||
| -rw-r--r-- | drivers/input/tablet/wacom_sys.c | 51 | ||||
| -rw-r--r-- | drivers/input/tablet/wacom_wac.c | 91 | ||||
| -rw-r--r-- | drivers/input/tablet/wacom_wac.h | 5 | ||||
| -rw-r--r-- | drivers/input/touchscreen/Kconfig | 2 | ||||
| -rw-r--r-- | drivers/input/touchscreen/egalax_ts.c | 23 | ||||
| -rw-r--r-- | drivers/input/touchscreen/tsc40.c | 1 | 
13 files changed, 196 insertions, 16 deletions
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c index 6ae2ac47c9c..f0f8928b3c8 100644 --- a/drivers/input/evdev.c +++ b/drivers/input/evdev.c @@ -292,7 +292,6 @@ static int evdev_release(struct inode *inode, struct file *file)  	kfree(client);  	evdev_close_device(evdev); -	put_device(&evdev->dev);  	return 0;  } @@ -331,7 +330,6 @@ static int evdev_open(struct inode *inode, struct file *file)  	file->private_data = client;  	nonseekable_open(inode, file); -	get_device(&evdev->dev);  	return 0;   err_free_client: @@ -1001,6 +999,7 @@ static int evdev_connect(struct input_handler *handler, struct input_dev *dev,  		goto err_free_evdev;  	cdev_init(&evdev->cdev, &evdev_fops); +	evdev->cdev.kobj.parent = &evdev->dev.kobj;  	error = cdev_add(&evdev->cdev, evdev->dev.devt, 1);  	if (error)  		goto err_unregister_handle; diff --git a/drivers/input/joydev.c b/drivers/input/joydev.c index b62b5891f39..f362883c94e 100644 --- a/drivers/input/joydev.c +++ b/drivers/input/joydev.c @@ -243,7 +243,6 @@ static int joydev_release(struct inode *inode, struct file *file)  	kfree(client);  	joydev_close_device(joydev); -	put_device(&joydev->dev);  	return 0;  } @@ -270,7 +269,6 @@ static int joydev_open(struct inode *inode, struct file *file)  	file->private_data = client;  	nonseekable_open(inode, file); -	get_device(&joydev->dev);  	return 0;   err_free_client: @@ -858,6 +856,7 @@ static int joydev_connect(struct input_handler *handler, struct input_dev *dev,  		goto err_free_joydev;  	cdev_init(&joydev->cdev, &joydev_fops); +	joydev->cdev.kobj.parent = &joydev->dev.kobj;  	error = cdev_add(&joydev->cdev, joydev->dev.devt, 1);  	if (error)  		goto err_unregister_handle; diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig index b4b65af8612..de0874054e9 100644 --- a/drivers/input/keyboard/Kconfig +++ b/drivers/input/keyboard/Kconfig @@ -335,6 +335,7 @@ config KEYBOARD_LOCOMO  config KEYBOARD_LPC32XX  	tristate "LPC32XX matrix key scanner support"  	depends on ARCH_LPC32XX && OF +	select INPUT_MATRIXKMAP  	help  	  Say Y here if you want to use NXP LPC32XX SoC key scanner interface,  	  connected to a key matrix. diff --git a/drivers/input/keyboard/pxa27x_keypad.c b/drivers/input/keyboard/pxa27x_keypad.c index 803ff6fe021..cad9d5dd597 100644 --- a/drivers/input/keyboard/pxa27x_keypad.c +++ b/drivers/input/keyboard/pxa27x_keypad.c @@ -368,6 +368,9 @@ static void pxa27x_keypad_config(struct pxa27x_keypad *keypad)  	unsigned int mask = 0, direct_key_num = 0;  	unsigned long kpc = 0; +	/* clear pending interrupt bit */ +	keypad_readl(KPC); +  	/* enable matrix keys with automatic scan */  	if (pdata->matrix_key_rows && pdata->matrix_key_cols) {  		kpc |= KPC_ASACT | KPC_MIE | KPC_ME | KPC_MS_ALL; diff --git a/drivers/input/misc/xen-kbdfront.c b/drivers/input/misc/xen-kbdfront.c index 02ca8680ea5..6f7d9901303 100644 --- a/drivers/input/misc/xen-kbdfront.c +++ b/drivers/input/misc/xen-kbdfront.c @@ -311,7 +311,6 @@ static void xenkbd_backend_changed(struct xenbus_device *dev,  	case XenbusStateReconfiguring:  	case XenbusStateReconfigured:  	case XenbusStateUnknown: -	case XenbusStateClosed:  		break;  	case XenbusStateInitWait: @@ -350,6 +349,10 @@ InitWait:  		break; +	case XenbusStateClosed: +		if (dev->state == XenbusStateClosed) +			break; +		/* Missed the backend's CLOSING state -- fallthrough */  	case XenbusStateClosing:  		xenbus_frontend_closed(dev);  		break; diff --git a/drivers/input/mouse/bcm5974.c b/drivers/input/mouse/bcm5974.c index 3a78f235fa3..2baff1b79a5 100644 --- a/drivers/input/mouse/bcm5974.c +++ b/drivers/input/mouse/bcm5974.c @@ -84,6 +84,10 @@  #define USB_DEVICE_ID_APPLE_WELLSPRING7_ANSI	0x0262  #define USB_DEVICE_ID_APPLE_WELLSPRING7_ISO	0x0263  #define USB_DEVICE_ID_APPLE_WELLSPRING7_JIS	0x0264 +/* MacbookPro10,2 (unibody, October 2012) */ +#define USB_DEVICE_ID_APPLE_WELLSPRING7A_ANSI	0x0259 +#define USB_DEVICE_ID_APPLE_WELLSPRING7A_ISO	0x025a +#define USB_DEVICE_ID_APPLE_WELLSPRING7A_JIS	0x025b  #define BCM5974_DEVICE(prod) {					\  	.match_flags = (USB_DEVICE_ID_MATCH_DEVICE |		\ @@ -137,6 +141,10 @@ static const struct usb_device_id bcm5974_table[] = {  	BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING7_ANSI),  	BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING7_ISO),  	BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING7_JIS), +	/* MacbookPro10,2 */ +	BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING7A_ANSI), +	BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING7A_ISO), +	BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING7A_JIS),  	/* Terminating entry */  	{}  }; @@ -379,6 +387,19 @@ static const struct bcm5974_config bcm5974_config_table[] = {  		{ SN_COORD, -150, 6730 },  		{ SN_ORIENT, -MAX_FINGER_ORIENTATION, MAX_FINGER_ORIENTATION }  	}, +	{ +		USB_DEVICE_ID_APPLE_WELLSPRING7A_ANSI, +		USB_DEVICE_ID_APPLE_WELLSPRING7A_ISO, +		USB_DEVICE_ID_APPLE_WELLSPRING7A_JIS, +		HAS_INTEGRATED_BUTTON, +		0x84, sizeof(struct bt_data), +		0x81, TYPE2, FINGER_TYPE2, FINGER_TYPE2 + SIZEOF_ALL_FINGERS, +		{ SN_PRESSURE, 0, 300 }, +		{ SN_WIDTH, 0, 2048 }, +		{ SN_COORD, -4750, 5280 }, +		{ SN_COORD, -150, 6730 }, +		{ SN_ORIENT, -MAX_FINGER_ORIENTATION, MAX_FINGER_ORIENTATION } +	},  	{}  }; diff --git a/drivers/input/mousedev.c b/drivers/input/mousedev.c index a1b4c37956b..8f02e3d0e71 100644 --- a/drivers/input/mousedev.c +++ b/drivers/input/mousedev.c @@ -523,7 +523,6 @@ static int mousedev_release(struct inode *inode, struct file *file)  	kfree(client);  	mousedev_close_device(mousedev); -	put_device(&mousedev->dev);  	return 0;  } @@ -558,7 +557,6 @@ static int mousedev_open(struct inode *inode, struct file *file)  	file->private_data = client;  	nonseekable_open(inode, file); -	get_device(&mousedev->dev);  	return 0;   err_free_client: @@ -892,6 +890,7 @@ static struct mousedev *mousedev_create(struct input_dev *dev,  	}  	cdev_init(&mousedev->cdev, &mousedev_fops); +	mousedev->cdev.kobj.parent = &mousedev->dev.kobj;  	error = cdev_add(&mousedev->cdev, mousedev->dev.devt, 1);  	if (error)  		goto err_unregister_handle; diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c index 9edf9806cff..858ad446de9 100644 --- a/drivers/input/tablet/wacom_sys.c +++ b/drivers/input/tablet/wacom_sys.c @@ -391,7 +391,7 @@ static int wacom_parse_hid(struct usb_interface *intf,  							features->pktlen = WACOM_PKGLEN_TPC2FG;  						} -						if (features->type == MTSCREEN) +						if (features->type == MTSCREEN || features->type == WACOM_24HDT)  							features->pktlen = WACOM_PKGLEN_MTOUCH;  						if (features->type == BAMBOO_PT) { @@ -402,6 +402,14 @@ static int wacom_parse_hid(struct usb_interface *intf,  							features->x_max =  								get_unaligned_le16(&report[i + 8]);  							i += 15; +						} else if (features->type == WACOM_24HDT) { +							features->x_max = +								get_unaligned_le16(&report[i + 3]); +							features->x_phy = +								get_unaligned_le16(&report[i + 8]); +							features->unit = report[i - 1]; +							features->unitExpo = report[i - 3]; +							i += 12;  						} else {  							features->x_max =  								get_unaligned_le16(&report[i + 3]); @@ -434,6 +442,12 @@ static int wacom_parse_hid(struct usb_interface *intf,  							features->y_phy =  								get_unaligned_le16(&report[i + 6]);  							i += 7; +						} else if (type == WACOM_24HDT) { +							features->y_max = +								get_unaligned_le16(&report[i + 3]); +							features->y_phy = +								get_unaligned_le16(&report[i - 2]); +							i += 7;  						} else if (type == BAMBOO_PT) {  							features->y_phy =  								get_unaligned_le16(&report[i + 3]); @@ -541,6 +555,9 @@ static int wacom_query_tablet_data(struct usb_interface *intf, struct wacom_feat  			/* MT Tablet PC touch */  			return wacom_set_device_mode(intf, 3, 4, 4);  		} +		else if (features->type == WACOM_24HDT) { +			return wacom_set_device_mode(intf, 18, 3, 2); +		}  	} else if (features->device_type == BTN_TOOL_PEN) {  		if (features->type <= BAMBOO_PT && features->type != WIRELESS) {  			return wacom_set_device_mode(intf, 2, 2, 2); @@ -613,6 +630,30 @@ struct wacom_usbdev_data {  static LIST_HEAD(wacom_udev_list);  static DEFINE_MUTEX(wacom_udev_list_lock); +static struct usb_device *wacom_get_sibling(struct usb_device *dev, int vendor, int product) +{ +	int port1; +	struct usb_device *sibling; + +	if (vendor == 0 && product == 0) +		return dev; + +	if (dev->parent == NULL) +		return NULL; + +	usb_hub_for_each_child(dev->parent, port1, sibling) { +		struct usb_device_descriptor *d; +		if (sibling == NULL) +			continue; + +		d = &sibling->descriptor; +		if (d->idVendor == vendor && d->idProduct == product) +			return sibling; +	} + +	return NULL; +} +  static struct wacom_usbdev_data *wacom_get_usbdev_data(struct usb_device *dev)  {  	struct wacom_usbdev_data *data; @@ -1257,13 +1298,19 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i  	strlcpy(wacom_wac->name, features->name, sizeof(wacom_wac->name));  	if (features->quirks & WACOM_QUIRK_MULTI_INPUT) { +		struct usb_device *other_dev; +  		/* Append the device type to the name */  		strlcat(wacom_wac->name,  			features->device_type == BTN_TOOL_PEN ?  				" Pen" : " Finger",  			sizeof(wacom_wac->name)); -		error = wacom_add_shared_data(wacom_wac, dev); + +		other_dev = wacom_get_sibling(dev, features->oVid, features->oPid); +		if (other_dev == NULL || wacom_get_usbdev_data(other_dev) == NULL) +			other_dev = dev; +		error = wacom_add_shared_data(wacom_wac, other_dev);  		if (error)  			goto fail3;  	} diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c index c3468c8dbd8..0a67031ffc1 100644 --- a/drivers/input/tablet/wacom_wac.c +++ b/drivers/input/tablet/wacom_wac.c @@ -806,6 +806,70 @@ static int find_slot_from_contactid(struct wacom_wac *wacom, int contactid)  	return -1;  } +static int int_dist(int x1, int y1, int x2, int y2) +{ +	int x = x2 - x1; +	int y = y2 - y1; + +	return int_sqrt(x*x + y*y); +} + +static int wacom_24hdt_irq(struct wacom_wac *wacom) +{ +	struct input_dev *input = wacom->input; +	char *data = wacom->data; +	int i; +	int current_num_contacts = data[61]; +	int contacts_to_send = 0; + +	/* +	 * First packet resets the counter since only the first +	 * packet in series will have non-zero current_num_contacts. +	 */ +	if (current_num_contacts) +		wacom->num_contacts_left = current_num_contacts; + +	/* There are at most 4 contacts per packet */ +	contacts_to_send = min(4, wacom->num_contacts_left); + +	for (i = 0; i < contacts_to_send; i++) { +		int offset = (WACOM_BYTES_PER_24HDT_PACKET * i) + 1; +		bool touch = data[offset] & 0x1 && !wacom->shared->stylus_in_proximity; +		int id = data[offset + 1]; +		int slot = find_slot_from_contactid(wacom, id); + +		if (slot < 0) +			continue; +		input_mt_slot(input, slot); +		input_mt_report_slot_state(input, MT_TOOL_FINGER, touch); + +		if (touch) { +			int t_x = le16_to_cpup((__le16 *)&data[offset + 2]); +			int c_x = le16_to_cpup((__le16 *)&data[offset + 4]); +			int t_y = le16_to_cpup((__le16 *)&data[offset + 6]); +			int c_y = le16_to_cpup((__le16 *)&data[offset + 8]); +			int w = le16_to_cpup((__le16 *)&data[offset + 10]); +			int h = le16_to_cpup((__le16 *)&data[offset + 12]); + +			input_report_abs(input, ABS_MT_POSITION_X, t_x); +			input_report_abs(input, ABS_MT_POSITION_Y, t_y); +			input_report_abs(input, ABS_MT_TOUCH_MAJOR, min(w,h)); +			input_report_abs(input, ABS_MT_WIDTH_MAJOR, min(w, h) + int_dist(t_x, t_y, c_x, c_y)); +			input_report_abs(input, ABS_MT_WIDTH_MINOR, min(w, h)); +			input_report_abs(input, ABS_MT_ORIENTATION, w > h); +		} +		wacom->slots[slot] = touch ? id : -1; +	} + +	input_mt_report_pointer_emulation(input, true); + +	wacom->num_contacts_left -= contacts_to_send; +	if (wacom->num_contacts_left <= 0) +		wacom->num_contacts_left = 0; + +	return 1; +} +  static int wacom_mt_touch(struct wacom_wac *wacom)  {  	struct input_dev *input = wacom->input; @@ -1255,6 +1319,10 @@ void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len)  		sync = wacom_intuos_irq(wacom_wac);  		break; +	case WACOM_24HDT: +		sync = wacom_24hdt_irq(wacom_wac); +		break; +  	case INTUOS5S:  	case INTUOS5:  	case INTUOS5L: @@ -1340,7 +1408,8 @@ void wacom_setup_device_quirks(struct wacom_features *features)  	/* these device have multiple inputs */  	if (features->type >= WIRELESS || -	    (features->type >= INTUOS5S && features->type <= INTUOS5L)) +	    (features->type >= INTUOS5S && features->type <= INTUOS5L) || +	    (features->oVid && features->oPid))  		features->quirks |= WACOM_QUIRK_MULTI_INPUT;  	/* quirk for bamboo touch with 2 low res touches */ @@ -1449,6 +1518,9 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev,  		input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0);  		input_set_abs_params(input_dev, ABS_THROTTLE, 0, 71, 0, 0); + +		__set_bit(INPUT_PROP_DIRECT, input_dev->propbit); +  		wacom_setup_cintiq(wacom_wac);  		break; @@ -1575,6 +1647,15 @@ int wacom_setup_input_capabilities(struct input_dev *input_dev,  		__set_bit(INPUT_PROP_POINTER, input_dev->propbit);  		break; +	case WACOM_24HDT: +		if (features->device_type == BTN_TOOL_FINGER) { +			input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, 0, features->x_max, 0, 0); +			input_set_abs_params(input_dev, ABS_MT_WIDTH_MAJOR, 0, features->x_max, 0, 0); +			input_set_abs_params(input_dev, ABS_MT_WIDTH_MINOR, 0, features->y_max, 0, 0); +			input_set_abs_params(input_dev, ABS_MT_ORIENTATION, 0, 1, 0, 0); +		} +		/* fall through */ +  	case MTSCREEN:  		if (features->device_type == BTN_TOOL_FINGER) {  			wacom_wac->slots = kmalloc(features->touch_max * @@ -1869,8 +1950,11 @@ static const struct wacom_features wacom_features_0xF4 =  	{ "Wacom Cintiq 24HD",       WACOM_PKGLEN_INTUOS,   104480, 65600, 2047,  	  63, WACOM_24HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES };  static const struct wacom_features wacom_features_0xF8 = -	{ "Wacom Cintiq 24HD touch", WACOM_PKGLEN_INTUOS,   104480, 65600, 2047, -	  63, WACOM_24HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; +	{ "Wacom Cintiq 24HD touch", WACOM_PKGLEN_INTUOS,   104480, 65600, 2047, /* Pen */ +	  63, WACOM_24HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES, .oVid = USB_VENDOR_ID_WACOM, .oPid = 0xf6 }; +static const struct wacom_features wacom_features_0xF6 = +	{ "Wacom Cintiq 24HD touch", .type = WACOM_24HDT, /* Touch */ +	  .oVid = USB_VENDOR_ID_WACOM, .oPid = 0xf8, .touch_max = 10 };  static const struct wacom_features wacom_features_0x3F =  	{ "Wacom Cintiq 21UX",    WACOM_PKGLEN_INTUOS,    87200, 65600, 1023,  	  63, CINTIQ, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; @@ -2113,6 +2197,7 @@ const struct usb_device_id wacom_ids[] = {  	{ USB_DEVICE_WACOM(0x47) },  	{ USB_DEVICE_WACOM(0xF4) },  	{ USB_DEVICE_WACOM(0xF8) }, +	{ USB_DEVICE_WACOM(0xF6) },  	{ USB_DEVICE_WACOM(0xFA) },  	{ USB_DEVICE_LENOVO(0x6004) },  	{ } diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h index 96c185cc301..345f1e76975 100644 --- a/drivers/input/tablet/wacom_wac.h +++ b/drivers/input/tablet/wacom_wac.h @@ -29,6 +29,7 @@  /* wacom data size per MT contact */  #define WACOM_BYTES_PER_MT_PACKET	11 +#define WACOM_BYTES_PER_24HDT_PACKET	14  /* device IDs */  #define STYLUS_DEVICE_ID	0x02 @@ -49,6 +50,7 @@  #define WACOM_REPORT_TPCHID		15  #define WACOM_REPORT_TPCST		16  #define WACOM_REPORT_TPC1FGE		18 +#define WACOM_REPORT_24HDT		1  /* device quirks */  #define WACOM_QUIRK_MULTI_INPUT		0x0001 @@ -81,6 +83,7 @@ enum {  	WACOM_MO,  	WIRELESS,  	BAMBOO_PT, +	WACOM_24HDT,  	TABLETPC,   /* add new TPC below */  	TABLETPCE,  	TABLETPC2FG, @@ -109,6 +112,8 @@ struct wacom_features {  	int distance_fuzz;  	unsigned quirks;  	unsigned touch_max; +	int oVid; +	int oPid;  };  struct wacom_shared { diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig index 1ba232cbc09..f7668b24c37 100644 --- a/drivers/input/touchscreen/Kconfig +++ b/drivers/input/touchscreen/Kconfig @@ -239,7 +239,7 @@ config TOUCHSCREEN_EETI  config TOUCHSCREEN_EGALAX  	tristate "EETI eGalax multi-touch panel support" -	depends on I2C +	depends on I2C && OF  	help  	  Say Y here to enable support for I2C connected EETI  	  eGalax multi-touch panels. diff --git a/drivers/input/touchscreen/egalax_ts.c b/drivers/input/touchscreen/egalax_ts.c index c1e3460f119..13fa62fdfb0 100644 --- a/drivers/input/touchscreen/egalax_ts.c +++ b/drivers/input/touchscreen/egalax_ts.c @@ -28,6 +28,7 @@  #include <linux/slab.h>  #include <linux/bitops.h>  #include <linux/input/mt.h> +#include <linux/of_gpio.h>  /*   * Mouse Mode: some panel may configure the controller to mouse mode, @@ -122,9 +123,17 @@ static irqreturn_t egalax_ts_interrupt(int irq, void *dev_id)  /* wake up controller by an falling edge of interrupt gpio.  */  static int egalax_wake_up_device(struct i2c_client *client)  { -	int gpio = irq_to_gpio(client->irq); +	struct device_node *np = client->dev.of_node; +	int gpio;  	int ret; +	if (!np) +		return -ENODEV; + +	gpio = of_get_named_gpio(np, "wakeup-gpios", 0); +	if (!gpio_is_valid(gpio)) +		return -ENODEV; +  	ret = gpio_request(gpio, "egalax_irq");  	if (ret < 0) {  		dev_err(&client->dev, @@ -181,7 +190,11 @@ static int __devinit egalax_ts_probe(struct i2c_client *client,  	ts->input_dev = input_dev;  	/* controller may be in sleep, wake it up. */ -	egalax_wake_up_device(client); +	error = egalax_wake_up_device(client); +	if (error) { +		dev_err(&client->dev, "Failed to wake up the controller\n"); +		goto err_free_dev; +	}  	ret = egalax_firmware_version(client);  	if (ret < 0) { @@ -274,11 +287,17 @@ static int egalax_ts_resume(struct device *dev)  static SIMPLE_DEV_PM_OPS(egalax_ts_pm_ops, egalax_ts_suspend, egalax_ts_resume); +static struct of_device_id egalax_ts_dt_ids[] = { +	{ .compatible = "eeti,egalax_ts" }, +	{ /* sentinel */ } +}; +  static struct i2c_driver egalax_ts_driver = {  	.driver = {  		.name	= "egalax_ts",  		.owner	= THIS_MODULE,  		.pm	= &egalax_ts_pm_ops, +		.of_match_table	= of_match_ptr(egalax_ts_dt_ids),  	},  	.id_table	= egalax_ts_id,  	.probe		= egalax_ts_probe, diff --git a/drivers/input/touchscreen/tsc40.c b/drivers/input/touchscreen/tsc40.c index 63209aaa55f..eb96f168fb9 100644 --- a/drivers/input/touchscreen/tsc40.c +++ b/drivers/input/touchscreen/tsc40.c @@ -107,7 +107,6 @@ static int tsc_connect(struct serio *serio, struct serio_driver *drv)  	__set_bit(BTN_TOUCH, input_dev->keybit);  	input_set_abs_params(ptsc->dev, ABS_X, 0, 0x3ff, 0, 0);  	input_set_abs_params(ptsc->dev, ABS_Y, 0, 0x3ff, 0, 0); -	input_set_abs_params(ptsc->dev, ABS_PRESSURE, 0, 0, 0, 0);  	serio_set_drvdata(serio, ptsc);  |