Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input

Pull input layer fixes from Dmitry Torokhov:
"Two fixes for regressions in Wacom driver and fixes for drivers using
threaded IRQ framework without specifying IRQF_ONESHOT."

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
Input: request threaded-only IRQs with IRQF_ONESHOT
Input: wacom - don't retrieve touch_max when it is predefined
Input: wacom - fix retrieving touch_max bug
Input: fix input.h kernel-doc warning

+39 -25
+3 -2
drivers/input/joystick/as5011.c
··· 282 282 283 283 error = request_threaded_irq(as5011->button_irq, 284 284 NULL, as5011_button_interrupt, 285 - IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, 285 + IRQF_TRIGGER_RISING | 286 + IRQF_TRIGGER_FALLING | IRQF_ONESHOT, 286 287 "as5011_button", as5011); 287 288 if (error < 0) { 288 289 dev_err(&client->dev, ··· 297 296 298 297 error = request_threaded_irq(as5011->axis_irq, NULL, 299 298 as5011_axis_interrupt, 300 - plat_data->axis_irqflags, 299 + plat_data->axis_irqflags | IRQF_ONESHOT, 301 300 "as5011_joystick", as5011); 302 301 if (error) { 303 302 dev_err(&client->dev,
+2 -1
drivers/input/keyboard/mcs_touchkey.c
··· 178 178 } 179 179 180 180 error = request_threaded_irq(client->irq, NULL, mcs_touchkey_interrupt, 181 - IRQF_TRIGGER_FALLING, client->dev.driver->name, data); 181 + IRQF_TRIGGER_FALLING | IRQF_ONESHOT, 182 + client->dev.driver->name, data); 182 183 if (error) { 183 184 dev_err(&client->dev, "Failed to register interrupt\n"); 184 185 goto err_free_mem;
+1 -1
drivers/input/keyboard/mpr121_touchkey.c
··· 248 248 249 249 error = request_threaded_irq(client->irq, NULL, 250 250 mpr_touchkey_interrupt, 251 - IRQF_TRIGGER_FALLING, 251 + IRQF_TRIGGER_FALLING | IRQF_ONESHOT, 252 252 client->dev.driver->name, mpr121); 253 253 if (error) { 254 254 dev_err(&client->dev, "Failed to register interrupt\n");
+2 -1
drivers/input/keyboard/qt1070.c
··· 201 201 msleep(QT1070_RESET_TIME); 202 202 203 203 err = request_threaded_irq(client->irq, NULL, qt1070_interrupt, 204 - IRQF_TRIGGER_NONE, client->dev.driver->name, data); 204 + IRQF_TRIGGER_NONE | IRQF_ONESHOT, 205 + client->dev.driver->name, data); 205 206 if (err) { 206 207 dev_err(&client->dev, "fail to request irq\n"); 207 208 goto err_free_mem;
+2 -1
drivers/input/keyboard/tca6416-keypad.c
··· 278 278 279 279 error = request_threaded_irq(chip->irqnum, NULL, 280 280 tca6416_keys_isr, 281 - IRQF_TRIGGER_FALLING, 281 + IRQF_TRIGGER_FALLING | 282 + IRQF_ONESHOT, 282 283 "tca6416-keypad", chip); 283 284 if (error) { 284 285 dev_dbg(&client->dev,
+1 -1
drivers/input/keyboard/tca8418_keypad.c
··· 360 360 client->irq = gpio_to_irq(client->irq); 361 361 362 362 error = request_threaded_irq(client->irq, NULL, tca8418_irq_handler, 363 - IRQF_TRIGGER_FALLING, 363 + IRQF_TRIGGER_FALLING | IRQF_ONESHOT, 364 364 client->name, keypad_data); 365 365 if (error) { 366 366 dev_dbg(&client->dev,
+4 -4
drivers/input/keyboard/tnetv107x-keypad.c
··· 227 227 goto error_clk; 228 228 } 229 229 230 - error = request_threaded_irq(kp->irq_press, NULL, keypad_irq, 0, 231 - dev_name(dev), kp); 230 + error = request_threaded_irq(kp->irq_press, NULL, keypad_irq, 231 + IRQF_ONESHOT, dev_name(dev), kp); 232 232 if (error < 0) { 233 233 dev_err(kp->dev, "Could not allocate keypad press key irq\n"); 234 234 goto error_irq_press; 235 235 } 236 236 237 - error = request_threaded_irq(kp->irq_release, NULL, keypad_irq, 0, 238 - dev_name(dev), kp); 237 + error = request_threaded_irq(kp->irq_release, NULL, keypad_irq, 238 + IRQF_ONESHOT, dev_name(dev), kp); 239 239 if (error < 0) { 240 240 dev_err(kp->dev, "Could not allocate keypad release key irq\n"); 241 241 goto error_irq_release;
+5 -3
drivers/input/misc/ad714x.c
··· 972 972 struct ad714x_platform_data *plat_data = dev->platform_data; 973 973 struct ad714x_chip *ad714x; 974 974 void *drv_mem; 975 + unsigned long irqflags; 975 976 976 977 struct ad714x_button_drv *bt_drv; 977 978 struct ad714x_slider_drv *sd_drv; ··· 1163 1162 alloc_idx++; 1164 1163 } 1165 1164 1165 + irqflags = plat_data->irqflags ?: IRQF_TRIGGER_FALLING; 1166 + irqflags |= IRQF_ONESHOT; 1167 + 1166 1168 error = request_threaded_irq(ad714x->irq, NULL, ad714x_interrupt_thread, 1167 - plat_data->irqflags ? 1168 - plat_data->irqflags : IRQF_TRIGGER_FALLING, 1169 - "ad714x_captouch", ad714x); 1169 + irqflags, "ad714x_captouch", ad714x); 1170 1170 if (error) { 1171 1171 dev_err(dev, "can't allocate irq %d\n", ad714x->irq); 1172 1172 goto err_unreg_dev;
+2 -1
drivers/input/misc/dm355evm_keys.c
··· 213 213 /* REVISIT: flush the event queue? */ 214 214 215 215 status = request_threaded_irq(keys->irq, NULL, dm355evm_keys_irq, 216 - IRQF_TRIGGER_FALLING, dev_name(&pdev->dev), keys); 216 + IRQF_TRIGGER_FALLING | IRQF_ONESHOT, 217 + dev_name(&pdev->dev), keys); 217 218 if (status < 0) 218 219 goto fail2; 219 220
+4 -2
drivers/input/tablet/wacom_sys.c
··· 216 216 217 217 rep_data[0] = 12; 218 218 result = wacom_get_report(intf, WAC_HID_FEATURE_REPORT, 219 - rep_data[0], &rep_data, 2, 219 + rep_data[0], rep_data, 2, 220 220 WAC_MSG_RETRIES); 221 221 222 222 if (result >= 0 && rep_data[1] > 2) ··· 401 401 break; 402 402 403 403 case HID_USAGE_CONTACTMAX: 404 - wacom_retrieve_report_data(intf, features); 404 + /* leave touch_max as is if predefined */ 405 + if (!features->touch_max) 406 + wacom_retrieve_report_data(intf, features); 405 407 i++; 406 408 break; 407 409 }
+1 -1
drivers/input/touchscreen/ad7879.c
··· 597 597 AD7879_TMR(ts->pen_down_acc_interval); 598 598 599 599 err = request_threaded_irq(ts->irq, NULL, ad7879_irq, 600 - IRQF_TRIGGER_FALLING, 600 + IRQF_TRIGGER_FALLING | IRQF_ONESHOT, 601 601 dev_name(dev), ts); 602 602 if (err) { 603 603 dev_err(dev, "irq %d busy?\n", ts->irq);
+2 -1
drivers/input/touchscreen/atmel_mxt_ts.c
··· 1149 1149 goto err_free_object; 1150 1150 1151 1151 error = request_threaded_irq(client->irq, NULL, mxt_interrupt, 1152 - pdata->irqflags, client->dev.driver->name, data); 1152 + pdata->irqflags | IRQF_ONESHOT, 1153 + client->dev.driver->name, data); 1153 1154 if (error) { 1154 1155 dev_err(&client->dev, "Failed to register interrupt\n"); 1155 1156 goto err_free_object;
+2 -1
drivers/input/touchscreen/bu21013_ts.c
··· 509 509 input_set_drvdata(in_dev, bu21013_data); 510 510 511 511 error = request_threaded_irq(pdata->irq, NULL, bu21013_gpio_irq, 512 - IRQF_TRIGGER_FALLING | IRQF_SHARED, 512 + IRQF_TRIGGER_FALLING | IRQF_SHARED | 513 + IRQF_ONESHOT, 513 514 DRIVER_TP, bu21013_data); 514 515 if (error) { 515 516 dev_err(&client->dev, "request irq %d failed\n", pdata->irq);
+2 -1
drivers/input/touchscreen/cy8ctmg110_ts.c
··· 251 251 } 252 252 253 253 err = request_threaded_irq(client->irq, NULL, cy8ctmg110_irq_thread, 254 - IRQF_TRIGGER_RISING, "touch_reset_key", ts); 254 + IRQF_TRIGGER_RISING | IRQF_ONESHOT, 255 + "touch_reset_key", ts); 255 256 if (err < 0) { 256 257 dev_err(&client->dev, 257 258 "irq %d busy? error %d\n", client->irq, err);
+1 -1
drivers/input/touchscreen/intel-mid-touch.c
··· 620 620 MRST_PRESSURE_MIN, MRST_PRESSURE_MAX, 0, 0); 621 621 622 622 err = request_threaded_irq(tsdev->irq, NULL, mrstouch_pendet_irq, 623 - 0, "mrstouch", tsdev); 623 + IRQF_ONESHOT, "mrstouch", tsdev); 624 624 if (err) { 625 625 dev_err(tsdev->dev, "unable to allocate irq\n"); 626 626 goto err_free_mem;
+1 -1
drivers/input/touchscreen/pixcir_i2c_ts.c
··· 165 165 input_set_drvdata(input, tsdata); 166 166 167 167 error = request_threaded_irq(client->irq, NULL, pixcir_ts_isr, 168 - IRQF_TRIGGER_FALLING, 168 + IRQF_TRIGGER_FALLING | IRQF_ONESHOT, 169 169 client->name, tsdata); 170 170 if (error) { 171 171 dev_err(&client->dev, "Unable to request touchscreen IRQ.\n");
+1 -1
drivers/input/touchscreen/tnetv107x-ts.c
··· 297 297 goto error_clk; 298 298 } 299 299 300 - error = request_threaded_irq(ts->tsc_irq, NULL, tsc_irq, 0, 300 + error = request_threaded_irq(ts->tsc_irq, NULL, tsc_irq, IRQF_ONESHOT, 301 301 dev_name(dev), ts); 302 302 if (error < 0) { 303 303 dev_err(ts->dev, "Could not allocate ts irq\n");
+2 -1
drivers/input/touchscreen/tsc2005.c
··· 650 650 tsc2005_stop_scan(ts); 651 651 652 652 error = request_threaded_irq(spi->irq, NULL, tsc2005_irq_thread, 653 - IRQF_TRIGGER_RISING, "tsc2005", ts); 653 + IRQF_TRIGGER_RISING | IRQF_ONESHOT, 654 + "tsc2005", ts); 654 655 if (error) { 655 656 dev_err(&spi->dev, "Failed to request irq, err: %d\n", error); 656 657 goto err_free_mem;
+1
include/linux/input.h
··· 116 116 117 117 /** 118 118 * EVIOCGMTSLOTS(len) - get MT slot values 119 + * @len: size of the data buffer in bytes 119 120 * 120 121 * The ioctl buffer argument should be binary equivalent to 121 122 *