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

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
Input: appletouch - implement reset-resume logic
Input: i8042 - retry failed CTR writes when resuming
Input: i8042 - add Fujitsu-Siemens Amilo Pro V2030 to nomux table
Input: pcspkr - remove negative dependency on snd-pcsp

Manually fixed up trivial conflict in drivers/usb/core/quirks.c

+57 -11
-1
drivers/input/misc/Kconfig
··· 15 15 config INPUT_PCSPKR 16 16 tristate "PC Speaker support" 17 17 depends on PCSPKR_PLATFORM 18 - depends on SND_PCSP=n 19 18 help 20 19 Say Y here if you want the standard PC Speaker to be used for 21 20 bells and whistles.
+41 -8
drivers/input/mouse/appletouch.c
··· 589 589 dev->open = 0; 590 590 } 591 591 592 + static int atp_handle_geyser(struct atp *dev) 593 + { 594 + struct usb_device *udev = dev->udev; 595 + 596 + if (!atp_is_fountain(dev)) { 597 + /* switch to raw sensor mode */ 598 + if (atp_geyser_init(udev)) 599 + return -EIO; 600 + 601 + printk(KERN_INFO "appletouch: Geyser mode initialized.\n"); 602 + } 603 + 604 + return 0; 605 + } 606 + 592 607 static int atp_probe(struct usb_interface *iface, const struct usb_device_id *id) 593 608 { 594 609 struct atp *dev; ··· 648 633 else 649 634 dev->datalen = 81; 650 635 651 - if (!atp_is_fountain(dev)) { 652 - /* switch to raw sensor mode */ 653 - if (atp_geyser_init(udev)) 654 - goto err_free_devs; 655 - 656 - printk(KERN_INFO "appletouch: Geyser mode initialized.\n"); 657 - } 658 - 659 636 dev->urb = usb_alloc_urb(0, GFP_KERNEL); 660 637 if (!dev->urb) 661 638 goto err_free_devs; ··· 660 653 usb_fill_int_urb(dev->urb, udev, 661 654 usb_rcvintpipe(udev, int_in_endpointAddr), 662 655 dev->data, dev->datalen, atp_complete, dev, 1); 656 + 657 + error = atp_handle_geyser(dev); 658 + if (error) 659 + goto err_free_buffer; 663 660 664 661 usb_make_path(udev, dev->phys, sizeof(dev->phys)); 665 662 strlcat(dev->phys, "/input0", sizeof(dev->phys)); ··· 755 744 printk(KERN_INFO "input: appletouch disconnected\n"); 756 745 } 757 746 747 + static int atp_recover(struct atp *dev) 748 + { 749 + int error; 750 + 751 + error = atp_handle_geyser(dev); 752 + if (error) 753 + return error; 754 + 755 + if (dev->open && usb_submit_urb(dev->urb, GFP_ATOMIC)) 756 + return -EIO; 757 + 758 + return 0; 759 + } 760 + 758 761 static int atp_suspend(struct usb_interface *iface, pm_message_t message) 759 762 { 760 763 struct atp *dev = usb_get_intfdata(iface); ··· 789 764 return 0; 790 765 } 791 766 767 + static int atp_reset_resume(struct usb_interface *iface) 768 + { 769 + struct atp *dev = usb_get_intfdata(iface); 770 + 771 + return atp_recover(dev); 772 + } 773 + 792 774 static struct usb_driver atp_driver = { 793 775 .name = "appletouch", 794 776 .probe = atp_probe, 795 777 .disconnect = atp_disconnect, 796 778 .suspend = atp_suspend, 797 779 .resume = atp_resume, 780 + .reset_resume = atp_reset_resume, 798 781 .id_table = atp_table, 799 782 }; 800 783
+7
drivers/input/serio/i8042-x86ia64io.h
··· 193 193 }, 194 194 }, 195 195 { 196 + .ident = "Fujitsu-Siemens Amilo Pro 2030", 197 + .matches = { 198 + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), 199 + DMI_MATCH(DMI_PRODUCT_NAME, "AMILO PRO V2030"), 200 + }, 201 + }, 202 + { 196 203 /* 197 204 * No data is coming from the touchscreen unless KBC 198 205 * is in legacy mode.
+6 -2
drivers/input/serio/i8042.c
··· 952 952 i8042_ctr |= I8042_CTR_AUXDIS | I8042_CTR_KBDDIS; 953 953 i8042_ctr &= ~(I8042_CTR_AUXINT | I8042_CTR_KBDINT); 954 954 if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) { 955 - printk(KERN_ERR "i8042: Can't write CTR to resume\n"); 956 - return -EIO; 955 + printk(KERN_WARNING "i8042: Can't write CTR to resume, retrying...\n"); 956 + msleep(50); 957 + if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) { 958 + printk(KERN_ERR "i8042: CTR write retry failed\n"); 959 + return -EIO; 960 + } 957 961 } 958 962 959 963
+3
drivers/usb/core/quirks.c
··· 47 47 /* Edirol SD-20 */ 48 48 { USB_DEVICE(0x0582, 0x0027), .driver_info = USB_QUIRK_RESET_RESUME }, 49 49 50 + /* appletouch */ 51 + { USB_DEVICE(0x05ac, 0x021a), .driver_info = USB_QUIRK_RESET_RESUME }, 52 + 50 53 /* Avision AV600U */ 51 54 { USB_DEVICE(0x0638, 0x0a13), .driver_info = 52 55 USB_QUIRK_STRING_FETCH_255 },