···1515config INPUT_PCSPKR1616 tristate "PC Speaker support"1717 depends on PCSPKR_PLATFORM1818- depends on SND_PCSP=n1918 help2019 Say Y here if you want the standard PC Speaker to be used for2120 bells and whistles.
···564564 dev->open = 0;565565}566566567567+static int atp_handle_geyser(struct atp *dev)568568+{569569+ struct usb_device *udev = dev->udev;570570+571571+ if (dev->type != ATP_FOUNTAIN) {572572+ /* switch to raw sensor mode */573573+ if (atp_geyser_init(udev))574574+ return -EIO;575575+576576+ printk(KERN_INFO "appletouch: Geyser mode initialized.\n");577577+ }578578+579579+ return 0;580580+}581581+567582static int atp_probe(struct usb_interface *iface,568583 const struct usb_device_id *id)569584{···623608 else624609 dev->datalen = 64;625610626626- if (dev->type != ATP_FOUNTAIN) {627627- /* switch to raw sensor mode */628628- if (atp_geyser_init(udev))629629- goto err_free_devs;630630-631631- printk(KERN_INFO "appletouch: Geyser mode initialized.\n");632632- }633633-634611 dev->urb = usb_alloc_urb(0, GFP_KERNEL);635612 if (!dev->urb)636613 goto err_free_devs;···635628 usb_fill_int_urb(dev->urb, udev,636629 usb_rcvintpipe(udev, int_in_endpointAddr),637630 dev->data, dev->datalen, atp_complete, dev, 1);631631+632632+ error = atp_handle_geyser(dev);633633+ if (error)634634+ goto err_free_buffer;638635639636 usb_make_path(udev, dev->phys, sizeof(dev->phys));640637 strlcat(dev->phys, "/input0", sizeof(dev->phys));···732721 printk(KERN_INFO "input: appletouch disconnected\n");733722}734723724724+static int atp_recover(struct atp *dev)725725+{726726+ int error;727727+728728+ error = atp_handle_geyser(dev);729729+ if (error)730730+ return error;731731+732732+ if (dev->open && usb_submit_urb(dev->urb, GFP_ATOMIC))733733+ return -EIO;734734+735735+ return 0;736736+}737737+735738static int atp_suspend(struct usb_interface *iface, pm_message_t message)736739{737740 struct atp *dev = usb_get_intfdata(iface);···766741 return 0;767742}768743744744+static int atp_reset_resume(struct usb_interface *iface)745745+{746746+ struct atp *dev = usb_get_intfdata(iface);747747+748748+ return atp_recover(dev);749749+}750750+769751static struct usb_driver atp_driver = {770752 .name = "appletouch",771753 .probe = atp_probe,772754 .disconnect = atp_disconnect,773755 .suspend = atp_suspend,774756 .resume = atp_resume,757757+ .reset_resume = atp_reset_resume,775758 .id_table = atp_table,776759};777760
+14
drivers/input/serio/i8042-x86ia64io.h
···193193 },194194 },195195 {196196+ .ident = "Fujitsu-Siemens Amilo Pro 2030",197197+ .matches = {198198+ DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),199199+ DMI_MATCH(DMI_PRODUCT_NAME, "AMILO PRO V2030"),200200+ },201201+ },202202+ {196203 /*197204 * No data is coming from the touchscreen unless KBC198205 * is in legacy mode.···340333 .matches = {341334 DMI_MATCH(DMI_SYS_VENDOR, "Acer"),342335 DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 9110"),336336+ },337337+ },338338+ {339339+ .ident = "Acer TravelMate 660",340340+ .matches = {341341+ DMI_MATCH(DMI_SYS_VENDOR, "Acer"),342342+ DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 660"),343343 },344344 },345345 {
+31-10
drivers/input/serio/i8042.c
···885885886886#undef DELAY887887888888+#ifdef CONFIG_X86889889+static void i8042_dritek_enable(void)890890+{891891+ char param = 0x90;892892+ int error;893893+894894+ error = i8042_command(¶m, 0x1059);895895+ if (error)896896+ printk(KERN_WARNING897897+ "Failed to enable DRITEK extension: %d\n",898898+ error);899899+}900900+#endif901901+888902#ifdef CONFIG_PM889903/*890904 * Here we try to restore the original BIOS settings. We only want to···952938 i8042_ctr |= I8042_CTR_AUXDIS | I8042_CTR_KBDDIS;953939 i8042_ctr &= ~(I8042_CTR_AUXINT | I8042_CTR_KBDINT);954940 if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) {955955- printk(KERN_ERR "i8042: Can't write CTR to resume\n");956956- return -EIO;941941+ printk(KERN_WARNING "i8042: Can't write CTR to resume, retrying...\n");942942+ msleep(50);943943+ if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) {944944+ printk(KERN_ERR "i8042: CTR write retry failed\n");945945+ return -EIO;946946+ }957947 }948948+949949+950950+#ifdef CONFIG_X86951951+ if (i8042_dritek)952952+ i8042_dritek_enable();953953+#endif958954959955 if (i8042_mux_present) {960956 if (i8042_set_mux_mode(1, NULL) || i8042_enable_mux_ports())···11841160 if (error)11851161 return error;1186116211631163+#ifdef CONFIG_X8611641164+ if (i8042_dritek)11651165+ i8042_dritek_enable();11661166+#endif11671167+11871168 if (!i8042_noaux) {11881169 error = i8042_setup_aux();11891170 if (error && error != -ENODEV && error != -EBUSY)···12001171 if (error)12011172 goto out_fail;12021173 }12031203-#ifdef CONFIG_X8612041204- if (i8042_dritek) {12051205- char param = 0x90;12061206- error = i8042_command(¶m, 0x1059);12071207- if (error)12081208- goto out_fail;12091209- }12101210-#endif12111174/*12121175 * Ok, everything is ready, let's register all serio ports12131176 */
+7-10
drivers/input/tablet/gtco.c
···830830 struct gtco *gtco;831831 struct input_dev *input_dev;832832 struct hid_descriptor *hid_desc;833833- char *report = NULL;833833+ char *report;834834 int result = 0, retry;835835 int error;836836 struct usb_endpoint_descriptor *endpoint;···916916 le16_to_cpu(hid_desc->wDescriptorLength),917917 5000); /* 5 secs */918918919919- if (result == le16_to_cpu(hid_desc->wDescriptorLength))919919+ dbg("usb_control_msg result: %d", result);920920+ if (result == le16_to_cpu(hid_desc->wDescriptorLength)) {921921+ parse_hid_report_descriptor(gtco, report, result);920922 break;923923+ }921924 }922925926926+ kfree(report);927927+923928 /* If we didn't get the report, fail */924924- dbg("usb_control_msg result: :%d", result);925929 if (result != le16_to_cpu(hid_desc->wDescriptorLength)) {926930 err("Failed to get HID Report Descriptor of size: %d",927931 hid_desc->wDescriptorLength);928932 error = -EIO;929933 goto err_free_urb;930934 }931931-932932- /* Now we parse the report */933933- parse_hid_report_descriptor(gtco, report, result);934934-935935- /* Now we delete it */936936- kfree(report);937935938936 /* Create a device file node */939937 usb_make_path(gtco->usbdev, gtco->usbpath, sizeof(gtco->usbpath));···986988 usb_buffer_free(gtco->usbdev, REPORT_MAX_SIZE,987989 gtco->buffer, gtco->buf_dma);988990 err_free_devs:989989- kfree(report);990991 input_free_device(input_dev);991992 kfree(gtco);992993 return error;
+22
drivers/input/touchscreen/wm9713.c
···8585MODULE_PARM_DESC(delay, "Set adc sample delay.");86868787/*8888+ * Set five_wire = 1 to use a 5 wire touchscreen.8989+ *9090+ * NOTE: Five wire mode does not allow for readback of pressure.9191+ */9292+static int five_wire;9393+module_param(five_wire, int, 0);9494+MODULE_PARM_DESC(five_wire, "Set to '1' to use 5-wire touchscreen.");9595+9696+/*8897 * Set adc mask function.8998 *9099 * Sources of glitch noise, such as signals driving an LCD display, may feed···169160 dig3 |= WM9712_RPU(rpu);170161 dev_info(wm->dev, "setting pen detect pull-up to %d Ohms\n",171162 64000 / rpu);163163+ }164164+165165+ /* Five wire panel? */166166+ if (five_wire) {167167+ dig3 |= WM9713_45W;168168+ dev_info(wm->dev, "setting 5-wire touchscreen mode.");169169+170170+ if (pil) {171171+ dev_warn(wm->dev,172172+ "Pressure measurement not supported in 5 "173173+ "wire mode, disabling\n");174174+ pil = 0;175175+ }172176 }173177174178 /* touchpanel pressure */