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

Commit c8c16e36 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull input updates from Dmitry Torokhov:
 "An update to Synaptics PS/2 driver to handle "ForcePads" (currently
  found in HP EliteBook 1040 laptops), a change for Elan PS/2 driver to
  detect newer touchpads, bunch of devices get annotated as Trackpoint
  and/or Pointer to help userspace classify and handle them, plus
  assorted driver fixes"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
  Input: serport - add compat handling for SPIOCSTYPE ioctl
  Input: atmel_mxt_ts - fix double free of input device
  Input: synaptics - add support for ForcePads
  Input: matrix_keypad - use request_any_context_irq()
  Input: atmel_mxt_ts - downgrade warning about empty interrupts
  Input: wm971x - fix typo in module parameter description
  Input: cap1106 - fix register definition
  Input: add missing POINTER / DIRECT properties to a bunch of drivers
  Input: add INPUT_PROP_POINTING_STICK property
  Input: elantech - fix detection of touchpad on ASUS s301l
parents 584f1ada a80d8b02
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -33,8 +33,8 @@
#define CAP1106_REG_SENSOR_CONFIG	0x22
#define CAP1106_REG_SENSOR_CONFIG2	0x23
#define CAP1106_REG_SAMPLING_CONFIG	0x24
#define CAP1106_REG_CALIBRATION		0x25
#define CAP1106_REG_INT_ENABLE		0x26
#define CAP1106_REG_CALIBRATION		0x26
#define CAP1106_REG_INT_ENABLE		0x27
#define CAP1106_REG_REPEAT_RATE		0x28
#define CAP1106_REG_MT_CONFIG		0x2a
#define CAP1106_REG_MT_PATTERN_CONFIG	0x2b
+5 −4
Original line number Diff line number Diff line
@@ -332,23 +332,24 @@ static int matrix_keypad_init_gpio(struct platform_device *pdev,
	}

	if (pdata->clustered_irq > 0) {
		err = request_irq(pdata->clustered_irq,
		err = request_any_context_irq(pdata->clustered_irq,
				matrix_keypad_interrupt,
				pdata->clustered_irq_flags,
				"matrix-keypad", keypad);
		if (err) {
		if (err < 0) {
			dev_err(&pdev->dev,
				"Unable to acquire clustered interrupt\n");
			goto err_free_rows;
		}
	} else {
		for (i = 0; i < pdata->num_row_gpios; i++) {
			err = request_irq(gpio_to_irq(pdata->row_gpios[i]),
			err = request_any_context_irq(
					gpio_to_irq(pdata->row_gpios[i]),
					matrix_keypad_interrupt,
					IRQF_TRIGGER_RISING |
					IRQF_TRIGGER_FALLING,
					"matrix-keypad", keypad);
			if (err) {
			if (err < 0) {
				dev_err(&pdev->dev,
					"Unable to acquire interrupt for GPIO line %i\n",
					pdata->row_gpios[i]);
+4 −0
Original line number Diff line number Diff line
@@ -2373,6 +2373,10 @@ int alps_init(struct psmouse *psmouse)
	dev2->keybit[BIT_WORD(BTN_LEFT)] =
		BIT_MASK(BTN_LEFT) | BIT_MASK(BTN_MIDDLE) | BIT_MASK(BTN_RIGHT);

	__set_bit(INPUT_PROP_POINTER, dev2->propbit);
	if (priv->flags & ALPS_DUALPOINT)
		__set_bit(INPUT_PROP_POINTING_STICK, dev2->propbit);

	if (input_register_device(priv->dev2))
		goto init_fail;

+11 −0
Original line number Diff line number Diff line
@@ -1331,6 +1331,13 @@ static bool elantech_is_signature_valid(const unsigned char *param)
	if (param[1] == 0)
		return true;

	/*
	 * Some models have a revision higher then 20. Meaning param[2] may
	 * be 10 or 20, skip the rates check for these.
	 */
	if (param[0] == 0x46 && (param[1] & 0xef) == 0x0f && param[2] < 40)
		return true;

	for (i = 0; i < ARRAY_SIZE(rates); i++)
		if (param[2] == rates[i])
			return false;
@@ -1607,6 +1614,10 @@ int elantech_init(struct psmouse *psmouse)
		tp_dev->keybit[BIT_WORD(BTN_LEFT)] =
			BIT_MASK(BTN_LEFT) | BIT_MASK(BTN_MIDDLE) |
			BIT_MASK(BTN_RIGHT);

		__set_bit(INPUT_PROP_POINTER, tp_dev->propbit);
		__set_bit(INPUT_PROP_POINTING_STICK, tp_dev->propbit);

		error = input_register_device(etd->tp_dev);
		if (error < 0)
			goto init_fail_tp_reg;
+2 −0
Original line number Diff line number Diff line
@@ -670,6 +670,8 @@ static void psmouse_apply_defaults(struct psmouse *psmouse)
	__set_bit(REL_X, input_dev->relbit);
	__set_bit(REL_Y, input_dev->relbit);

	__set_bit(INPUT_PROP_POINTER, input_dev->propbit);

	psmouse->set_rate = psmouse_set_rate;
	psmouse->set_resolution = psmouse_set_resolution;
	psmouse->poll = psmouse_poll;
Loading