diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-10-31 22:51:11 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-10-31 22:51:11 -0400 |
| commit | 9f935675d41aa51ebf929fc977cf530ff7d1a7fc (patch) | |
| tree | 97c4f71d7fbd067a22f1509a3cfbb11f2a90b2bd | |
| parent | ab01f963deb5b70113c6a2fe9622fe06035836eb (diff) | |
| parent | e55a3366984cda7d179e194a772f5ae4fe551b80 (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
Pull input updates from Dmitry Torokhov:
"A bunch of fixes for minor defects reported by Coverity, a few driver
fixups and revert of i8042.nomux change so that we are once again
enable active MUX mode if box claims to support it"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
Revert "Input: i8042 - disable active multiplexing by default"
Input: altera_ps2 - use correct type for irq return value
Input: altera_ps2 - write to correct register when disabling interrupts
Input: max77693-haptic - fix potential overflow
Input: psmouse - remove unneeded check in psmouse_reconnect()
Input: vsxxxaa - fix code dropping bytes from queue
Input: ims-pcu - fix dead code in ims_pcu_ofn_reg_addr_store()
Input: opencores-kbd - fix error handling
Input: wm97xx - adapt parameters to tosa touchscreen.
Input: i8042 - quirks for Fujitsu Lifebook A544 and Lifebook AH544
Input: stmpe-keypad - fix valid key line bitmask
Input: soc_button_array - update calls to gpiod_get*()
| -rw-r--r-- | Documentation/kernel-parameters.txt | 2 | ||||
| -rw-r--r-- | drivers/input/keyboard/opencores-kbd.c | 2 | ||||
| -rw-r--r-- | drivers/input/keyboard/stmpe-keypad.c | 2 | ||||
| -rw-r--r-- | drivers/input/misc/ims-pcu.c | 2 | ||||
| -rw-r--r-- | drivers/input/misc/max77693-haptic.c | 5 | ||||
| -rw-r--r-- | drivers/input/misc/soc_button_array.c | 2 | ||||
| -rw-r--r-- | drivers/input/mouse/psmouse-base.c | 7 | ||||
| -rw-r--r-- | drivers/input/mouse/vsxxxaa.c | 2 | ||||
| -rw-r--r-- | drivers/input/serio/altera_ps2.c | 4 | ||||
| -rw-r--r-- | drivers/input/serio/i8042-x86ia64io.h | 297 | ||||
| -rw-r--r-- | drivers/input/serio/i8042.c | 2 | ||||
| -rw-r--r-- | drivers/input/touchscreen/wm97xx-core.c | 4 |
12 files changed, 302 insertions, 29 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index db034a5912e7..4c81a860cc2b 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
| @@ -1264,7 +1264,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
| 1264 | i8042.noloop [HW] Disable the AUX Loopback command while probing | 1264 | i8042.noloop [HW] Disable the AUX Loopback command while probing |
| 1265 | for the AUX port | 1265 | for the AUX port |
| 1266 | i8042.nomux [HW] Don't check presence of an active multiplexing | 1266 | i8042.nomux [HW] Don't check presence of an active multiplexing |
| 1267 | controller. Default: true. | 1267 | controller |
| 1268 | i8042.nopnp [HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX | 1268 | i8042.nopnp [HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX |
| 1269 | controllers | 1269 | controllers |
| 1270 | i8042.notimeout [HW] Ignore timeout condition signalled by controller | 1270 | i8042.notimeout [HW] Ignore timeout condition signalled by controller |
diff --git a/drivers/input/keyboard/opencores-kbd.c b/drivers/input/keyboard/opencores-kbd.c index 62abe2c16670..f8502bb29176 100644 --- a/drivers/input/keyboard/opencores-kbd.c +++ b/drivers/input/keyboard/opencores-kbd.c | |||
| @@ -70,7 +70,7 @@ static int opencores_kbd_probe(struct platform_device *pdev) | |||
| 70 | 70 | ||
| 71 | opencores_kbd->addr = devm_ioremap_resource(&pdev->dev, res); | 71 | opencores_kbd->addr = devm_ioremap_resource(&pdev->dev, res); |
| 72 | if (IS_ERR(opencores_kbd->addr)) | 72 | if (IS_ERR(opencores_kbd->addr)) |
| 73 | error = PTR_ERR(opencores_kbd->addr); | 73 | return PTR_ERR(opencores_kbd->addr); |
| 74 | 74 | ||
| 75 | input->name = pdev->name; | 75 | input->name = pdev->name; |
| 76 | input->phys = "opencores-kbd/input0"; | 76 | input->phys = "opencores-kbd/input0"; |
diff --git a/drivers/input/keyboard/stmpe-keypad.c b/drivers/input/keyboard/stmpe-keypad.c index c6727dda68f2..ef5e67fb567e 100644 --- a/drivers/input/keyboard/stmpe-keypad.c +++ b/drivers/input/keyboard/stmpe-keypad.c | |||
| @@ -86,7 +86,7 @@ static const struct stmpe_keypad_variant stmpe_keypad_variants[] = { | |||
| 86 | .max_cols = 8, | 86 | .max_cols = 8, |
| 87 | .max_rows = 12, | 87 | .max_rows = 12, |
| 88 | .col_gpios = 0x0000ff, /* GPIO 0 - 7*/ | 88 | .col_gpios = 0x0000ff, /* GPIO 0 - 7*/ |
| 89 | .row_gpios = 0x1fef00, /* GPIO 8-14, 16-20 */ | 89 | .row_gpios = 0x1f7f00, /* GPIO 8-14, 16-20 */ |
| 90 | }, | 90 | }, |
| 91 | [STMPE2403] = { | 91 | [STMPE2403] = { |
| 92 | .auto_increment = true, | 92 | .auto_increment = true, |
diff --git a/drivers/input/misc/ims-pcu.c b/drivers/input/misc/ims-pcu.c index 719410feb84b..afed8e2b2f94 100644 --- a/drivers/input/misc/ims-pcu.c +++ b/drivers/input/misc/ims-pcu.c | |||
| @@ -1381,7 +1381,7 @@ static ssize_t ims_pcu_ofn_reg_addr_store(struct device *dev, | |||
| 1381 | pcu->ofn_reg_addr = value; | 1381 | pcu->ofn_reg_addr = value; |
| 1382 | mutex_unlock(&pcu->cmd_mutex); | 1382 | mutex_unlock(&pcu->cmd_mutex); |
| 1383 | 1383 | ||
| 1384 | return error ?: count; | 1384 | return count; |
| 1385 | } | 1385 | } |
| 1386 | 1386 | ||
| 1387 | static DEVICE_ATTR(reg_addr, S_IRUGO | S_IWUSR, | 1387 | static DEVICE_ATTR(reg_addr, S_IRUGO | S_IWUSR, |
diff --git a/drivers/input/misc/max77693-haptic.c b/drivers/input/misc/max77693-haptic.c index 7b1fde93799e..ef6a9d650d69 100644 --- a/drivers/input/misc/max77693-haptic.c +++ b/drivers/input/misc/max77693-haptic.c | |||
| @@ -194,7 +194,7 @@ static int max77693_haptic_play_effect(struct input_dev *dev, void *data, | |||
| 194 | struct ff_effect *effect) | 194 | struct ff_effect *effect) |
| 195 | { | 195 | { |
| 196 | struct max77693_haptic *haptic = input_get_drvdata(dev); | 196 | struct max77693_haptic *haptic = input_get_drvdata(dev); |
| 197 | uint64_t period_mag_multi; | 197 | u64 period_mag_multi; |
| 198 | 198 | ||
| 199 | haptic->magnitude = effect->u.rumble.strong_magnitude; | 199 | haptic->magnitude = effect->u.rumble.strong_magnitude; |
| 200 | if (!haptic->magnitude) | 200 | if (!haptic->magnitude) |
| @@ -205,8 +205,7 @@ static int max77693_haptic_play_effect(struct input_dev *dev, void *data, | |||
| 205 | * The formula to convert magnitude to pwm_duty as follows: | 205 | * The formula to convert magnitude to pwm_duty as follows: |
| 206 | * - pwm_duty = (magnitude * pwm_period) / MAX_MAGNITUDE(0xFFFF) | 206 | * - pwm_duty = (magnitude * pwm_period) / MAX_MAGNITUDE(0xFFFF) |
| 207 | */ | 207 | */ |
| 208 | period_mag_multi = (int64_t)(haptic->pwm_dev->period * | 208 | period_mag_multi = (u64)haptic->pwm_dev->period * haptic->magnitude; |
| 209 | haptic->magnitude); | ||
| 210 | haptic->pwm_duty = (unsigned int)(period_mag_multi >> | 209 | haptic->pwm_duty = (unsigned int)(period_mag_multi >> |
| 211 | MAX_MAGNITUDE_SHIFT); | 210 | MAX_MAGNITUDE_SHIFT); |
| 212 | 211 | ||
diff --git a/drivers/input/misc/soc_button_array.c b/drivers/input/misc/soc_button_array.c index 735604753568..e097f1ab427f 100644 --- a/drivers/input/misc/soc_button_array.c +++ b/drivers/input/misc/soc_button_array.c | |||
| @@ -55,7 +55,7 @@ static int soc_button_lookup_gpio(struct device *dev, int acpi_index) | |||
| 55 | struct gpio_desc *desc; | 55 | struct gpio_desc *desc; |
| 56 | int gpio; | 56 | int gpio; |
| 57 | 57 | ||
| 58 | desc = gpiod_get_index(dev, KBUILD_MODNAME, acpi_index); | 58 | desc = gpiod_get_index(dev, KBUILD_MODNAME, acpi_index, GPIOD_ASIS); |
| 59 | if (IS_ERR(desc)) | 59 | if (IS_ERR(desc)) |
| 60 | return PTR_ERR(desc); | 60 | return PTR_ERR(desc); |
| 61 | 61 | ||
diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c index 26994f6a2b2a..95a3a6e2faf6 100644 --- a/drivers/input/mouse/psmouse-base.c +++ b/drivers/input/mouse/psmouse-base.c | |||
| @@ -1536,16 +1536,9 @@ static int psmouse_reconnect(struct serio *serio) | |||
| 1536 | { | 1536 | { |
| 1537 | struct psmouse *psmouse = serio_get_drvdata(serio); | 1537 | struct psmouse *psmouse = serio_get_drvdata(serio); |
| 1538 | struct psmouse *parent = NULL; | 1538 | struct psmouse *parent = NULL; |
| 1539 | struct serio_driver *drv = serio->drv; | ||
| 1540 | unsigned char type; | 1539 | unsigned char type; |
| 1541 | int rc = -1; | 1540 | int rc = -1; |
| 1542 | 1541 | ||
| 1543 | if (!drv || !psmouse) { | ||
| 1544 | psmouse_dbg(psmouse, | ||
| 1545 | "reconnect request, but serio is disconnected, ignoring...\n"); | ||
| 1546 | return -1; | ||
| 1547 | } | ||
| 1548 | |||
| 1549 | mutex_lock(&psmouse_mutex); | 1542 | mutex_lock(&psmouse_mutex); |
| 1550 | 1543 | ||
| 1551 | if (serio->parent && serio->id.type == SERIO_PS_PSTHRU) { | 1544 | if (serio->parent && serio->id.type == SERIO_PS_PSTHRU) { |
diff --git a/drivers/input/mouse/vsxxxaa.c b/drivers/input/mouse/vsxxxaa.c index 38298232124f..abd494411e69 100644 --- a/drivers/input/mouse/vsxxxaa.c +++ b/drivers/input/mouse/vsxxxaa.c | |||
| @@ -128,7 +128,7 @@ static void vsxxxaa_drop_bytes(struct vsxxxaa *mouse, int num) | |||
| 128 | if (num >= mouse->count) { | 128 | if (num >= mouse->count) { |
| 129 | mouse->count = 0; | 129 | mouse->count = 0; |
| 130 | } else { | 130 | } else { |
| 131 | memmove(mouse->buf, mouse->buf + num - 1, BUFLEN - num); | 131 | memmove(mouse->buf, mouse->buf + num, BUFLEN - num); |
| 132 | mouse->count -= num; | 132 | mouse->count -= num; |
| 133 | } | 133 | } |
| 134 | } | 134 | } |
diff --git a/drivers/input/serio/altera_ps2.c b/drivers/input/serio/altera_ps2.c index cce69d6b9587..58781c8a8aec 100644 --- a/drivers/input/serio/altera_ps2.c +++ b/drivers/input/serio/altera_ps2.c | |||
| @@ -37,7 +37,7 @@ static irqreturn_t altera_ps2_rxint(int irq, void *dev_id) | |||
| 37 | { | 37 | { |
| 38 | struct ps2if *ps2if = dev_id; | 38 | struct ps2if *ps2if = dev_id; |
| 39 | unsigned int status; | 39 | unsigned int status; |
| 40 | int handled = IRQ_NONE; | 40 | irqreturn_t handled = IRQ_NONE; |
| 41 | 41 | ||
| 42 | while ((status = readl(ps2if->base)) & 0xffff0000) { | 42 | while ((status = readl(ps2if->base)) & 0xffff0000) { |
| 43 | serio_interrupt(ps2if->io, status & 0xff, 0); | 43 | serio_interrupt(ps2if->io, status & 0xff, 0); |
| @@ -74,7 +74,7 @@ static void altera_ps2_close(struct serio *io) | |||
| 74 | { | 74 | { |
| 75 | struct ps2if *ps2if = io->port_data; | 75 | struct ps2if *ps2if = io->port_data; |
| 76 | 76 | ||
| 77 | writel(0, ps2if->base); /* disable rx irq */ | 77 | writel(0, ps2if->base + 4); /* disable rx irq */ |
| 78 | } | 78 | } |
| 79 | 79 | ||
| 80 | /* | 80 | /* |
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h index a0bcbb64d06d..faeeb1372462 100644 --- a/drivers/input/serio/i8042-x86ia64io.h +++ b/drivers/input/serio/i8042-x86ia64io.h | |||
| @@ -207,17 +207,282 @@ static const struct dmi_system_id __initconst i8042_dmi_noloop_table[] = { | |||
| 207 | }; | 207 | }; |
| 208 | 208 | ||
| 209 | /* | 209 | /* |
| 210 | * Some laptops do implement active multiplexing mode correctly; | ||
