From: Greg Kroah-Hartman Date: Mon, 2 Dec 2013 01:58:49 +0000 (-0800) Subject: 3.12-stable patches X-Git-Tag: v3.4.72~16 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2bfcb0be1fab581482ee236f09576ae1caf4683c;p=thirdparty%2Fkernel%2Fstable-queue.git 3.12-stable patches added patches: cpufreq-highbank-cpufreq-enable-midway-ecx-2000.patch hid-don-t-ignore-egalax-d-wav-eeti-hids.patch input-cypress_ps2-do-not-consider-data-bad-if-palm-is-detected.patch input-evdev-fall-back-to-vmalloc-for-client-event-buffer.patch input-i8042-add-pnp-modaliases.patch input-usbtouchscreen-ignore-egalax-d-wav-eeti-hids.patch mfd-lpc_ich-add-device-ids-for-intel-wildcat-point-lp-pch.patch mfd-rtsx-modify-rts5249_optimize_phy.patch revert-input-alps-add-support-for-model-found-on-dell-xt2.patch sh-ecovec-fixup-compile-error-on-sdhi.patch --- diff --git a/queue-3.12/cpufreq-highbank-cpufreq-enable-midway-ecx-2000.patch b/queue-3.12/cpufreq-highbank-cpufreq-enable-midway-ecx-2000.patch new file mode 100644 index 00000000000..8764576caad --- /dev/null +++ b/queue-3.12/cpufreq-highbank-cpufreq-enable-midway-ecx-2000.patch @@ -0,0 +1,36 @@ +From fbbc5bfb44a22e7a8ef753a1c8dfb448d7ac8b85 Mon Sep 17 00:00:00 2001 +From: Mark Langsdorf +Date: Tue, 1 Oct 2013 10:30:24 -0500 +Subject: cpufreq: highbank-cpufreq: Enable Midway/ECX-2000 + +From: Mark Langsdorf + +commit fbbc5bfb44a22e7a8ef753a1c8dfb448d7ac8b85 upstream. + +Calxeda's new ECX-2000 part uses the same cpufreq interface as highbank, +so add it to the driver's compatibility list. + +This is a minor change that can safely be applied to the 3.10 and 3.11 +stable trees. + +Signed-off-by: Mark Langsdorf +Acked-by: Viresh Kumar +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/cpufreq/highbank-cpufreq.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/cpufreq/highbank-cpufreq.c ++++ b/drivers/cpufreq/highbank-cpufreq.c +@@ -66,7 +66,8 @@ static int hb_cpufreq_driver_init(void) + struct device_node *np; + int ret; + +- if (!of_machine_is_compatible("calxeda,highbank")) ++ if ((!of_machine_is_compatible("calxeda,highbank")) && ++ (!of_machine_is_compatible("calxeda,ecx-2000"))) + return -ENODEV; + + cpu_dev = get_cpu_device(0); diff --git a/queue-3.12/hid-don-t-ignore-egalax-d-wav-eeti-hids.patch b/queue-3.12/hid-don-t-ignore-egalax-d-wav-eeti-hids.patch new file mode 100644 index 00000000000..b5055c853ac --- /dev/null +++ b/queue-3.12/hid-don-t-ignore-egalax-d-wav-eeti-hids.patch @@ -0,0 +1,77 @@ +From 95d50b6c5e18ff7351c5f2a6ff53afaed5f7e664 Mon Sep 17 00:00:00 2001 +From: Forest Bond +Date: Mon, 21 Oct 2013 12:38:02 -0400 +Subject: HID: don't ignore eGalax/D-Wav/EETI HIDs + +From: Forest Bond + +commit 95d50b6c5e18ff7351c5f2a6ff53afaed5f7e664 upstream. + +Certain devices with class HID, protocol None did not work with the HID +driver at one point, and as a result were bound to usbtouchscreen +instead as of commit 139ebe8 ("Input: usbtouchscreen - fix eGalax HID +ignoring"). This change was prompted by the following report: + +https://lkml.org/lkml/2009/1/25/127 + +Unfortunately, the device mentioned in this report is no longer +available for testing. + +We've recently discovered that some devices with class HID, protocol +None do not work with usbtouchscreen, but do work with usbhid. Here is +the report that made this evident: + +http://comments.gmane.org/gmane.linux.kernel.input/31710 + +Driver binding for these devices has flip-flopped a few times, so both +of the above reports were regressions. + +This situation would appear to leave us with no easy way to bind every +device to the right driver. However, in my own testing with several +devices I have not found a device with class HID that does not work with +the current HID driver. It is my belief that changes to the HID driver +since the original report have likely fixed the issue(s) that made it +unsuitable at the time, and that we should prefer it over usbtouchscreen +for these devices. In particular, HID quirks affecting these devices +were added/removed in the following commits since then: + +fe6065d HID: add multi-input quirk for eGalax Touchcontroller +77933c3 Merge branch 'egalax' into for-linus +ebd11fe HID: Add quirk for eGalax touch controler. +d34c4aa HID: add no-get quirk for eGalax touch controller + +This patch makes the HID driver no longer ignore eGalax/D-Wav/EETI +devices with class HID. If there are in fact devices with class HID +that still do not work with the HID driver, we will see another round of +regressions. In that case I propose we investigate why the device is +not working with the HID driver rather than re-introduce regressions for +functioning HID devices by again binding them to usbtouchscreen. + +The corresponding change to usbtouchscreen will be made separately. + +Signed-off-by: Forest Bond +Signed-off-by: Jiri Kosina +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/hid/hid-core.c | 9 --------- + 1 file changed, 9 deletions(-) + +--- a/drivers/hid/hid-core.c ++++ b/drivers/hid/hid-core.c +@@ -2376,15 +2376,6 @@ bool hid_ignore(struct hid_device *hdev) + hdev->type == HID_TYPE_USBNONE) + return true; + break; +- case USB_VENDOR_ID_DWAV: +- /* These are handled by usbtouchscreen. hdev->type is probably +- * HID_TYPE_USBNONE, but we say !HID_TYPE_USBMOUSE to match +- * usbtouchscreen. */ +- if ((hdev->product == USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER || +- hdev->product == USB_DEVICE_ID_DWAV_TOUCHCONTROLLER) && +- hdev->type != HID_TYPE_USBMOUSE) +- return true; +- break; + case USB_VENDOR_ID_VELLEMAN: + /* These are not HID devices. They are handled by comedi. */ + if ((hdev->product >= USB_DEVICE_ID_VELLEMAN_K8055_FIRST && diff --git a/queue-3.12/input-cypress_ps2-do-not-consider-data-bad-if-palm-is-detected.patch b/queue-3.12/input-cypress_ps2-do-not-consider-data-bad-if-palm-is-detected.patch new file mode 100644 index 00000000000..a2f7bc7110c --- /dev/null +++ b/queue-3.12/input-cypress_ps2-do-not-consider-data-bad-if-palm-is-detected.patch @@ -0,0 +1,79 @@ +From 5df682b297f6b23ec35615ed7bb50cbb25d25869 Mon Sep 17 00:00:00 2001 +From: Joseph Salisbury +Date: Wed, 16 Oct 2013 09:19:40 -0700 +Subject: Input: cypress_ps2 - do not consider data bad if palm is detected + +From: Joseph Salisbury + +commit 5df682b297f6b23ec35615ed7bb50cbb25d25869 upstream. + +If hardware (or firmware) detects palm on the surface of the device it does +not mean that the data packet is bad from the protocol standpoint. Instead +of reporting PSMOUSE_BAD_DATA in this case simply threat it as if nothing +touches the surface. + +BugLink: http://bugs.launchpad.net/bugs/1229361 + +Signed-off-by: Joseph Salisbury +Tested-by: Kamal Mostafa +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/input/mouse/cypress_ps2.c | 19 +++---------------- + 1 file changed, 3 insertions(+), 16 deletions(-) + +--- a/drivers/input/mouse/cypress_ps2.c ++++ b/drivers/input/mouse/cypress_ps2.c +@@ -439,7 +439,7 @@ static int cypress_get_finger_count(unsi + case 2: return 5; + default: + /* Invalid contact (e.g. palm). Ignore it. */ +- return -1; ++ return 0; + } + } + +@@ -452,17 +452,10 @@ static int cypress_parse_packet(struct p + { + unsigned char *packet = psmouse->packet; + unsigned char header_byte = packet[0]; +- int contact_cnt; + + memset(report_data, 0, sizeof(struct cytp_report_data)); + +- contact_cnt = cypress_get_finger_count(header_byte); +- +- if (contact_cnt < 0) /* e.g. palm detect */ +- return -EINVAL; +- +- report_data->contact_cnt = contact_cnt; +- ++ report_data->contact_cnt = cypress_get_finger_count(header_byte); + report_data->tap = (header_byte & ABS_MULTIFINGER_TAP) ? 1 : 0; + + if (report_data->contact_cnt == 1) { +@@ -535,11 +528,9 @@ static void cypress_process_packet(struc + int slots[CYTP_MAX_MT_SLOTS]; + int n; + +- if (cypress_parse_packet(psmouse, cytp, &report_data)) +- return; ++ cypress_parse_packet(psmouse, cytp, &report_data); + + n = report_data.contact_cnt; +- + if (n > CYTP_MAX_MT_SLOTS) + n = CYTP_MAX_MT_SLOTS; + +@@ -605,10 +596,6 @@ static psmouse_ret_t cypress_validate_by + return PSMOUSE_BAD_DATA; + + contact_cnt = cypress_get_finger_count(packet[0]); +- +- if (contact_cnt < 0) +- return PSMOUSE_BAD_DATA; +- + if (cytp->mode & CYTP_BIT_ABS_NO_PRESSURE) + cypress_set_packet_size(psmouse, contact_cnt == 2 ? 7 : 4); + else diff --git a/queue-3.12/input-evdev-fall-back-to-vmalloc-for-client-event-buffer.patch b/queue-3.12/input-evdev-fall-back-to-vmalloc-for-client-event-buffer.patch new file mode 100644 index 00000000000..18a7abc4f0c --- /dev/null +++ b/queue-3.12/input-evdev-fall-back-to-vmalloc-for-client-event-buffer.patch @@ -0,0 +1,69 @@ +From 92eb77d0ffbaa71b501a0a8dabf09a351bf4267f Mon Sep 17 00:00:00 2001 +From: Daniel Stone +Date: Thu, 31 Oct 2013 00:25:34 -0700 +Subject: Input: evdev - fall back to vmalloc for client event buffer + +From: Daniel Stone + +commit 92eb77d0ffbaa71b501a0a8dabf09a351bf4267f upstream. + +evdev always tries to allocate the event buffer for clients using +kzalloc rather than vmalloc, presumably to avoid mapping overhead where +possible. However, drivers like bcm5974, which claims support for +reporting 16 fingers simultaneously, can have an extraordinarily large +buffer. The resultant contiguous order-4 allocation attempt fails due +to fragmentation, and the device is thus unusable until reboot. + +Try kzalloc if we can to avoid the mapping overhead, but if that fails, +fall back to vzalloc. + +Signed-off-by: Daniel Stone +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/input/evdev.c | 16 ++++++++++++---- + 1 file changed, 12 insertions(+), 4 deletions(-) + +--- a/drivers/input/evdev.c ++++ b/drivers/input/evdev.c +@@ -18,6 +18,8 @@ + #include + #include + #include ++#include ++#include + #include + #include + #include +@@ -369,7 +371,11 @@ static int evdev_release(struct inode *i + mutex_unlock(&evdev->mutex); + + evdev_detach_client(evdev, client); +- kfree(client); ++ ++ if (is_vmalloc_addr(client)) ++ vfree(client); ++ else ++ kfree(client); + + evdev_close_device(evdev); + +@@ -389,12 +395,14 @@ static int evdev_open(struct inode *inod + { + struct evdev *evdev = container_of(inode->i_cdev, struct evdev, cdev); + unsigned int bufsize = evdev_compute_buffer_size(evdev->handle.dev); ++ unsigned int size = sizeof(struct evdev_client) + ++ bufsize * sizeof(struct input_event); + struct evdev_client *client; + int error; + +- client = kzalloc(sizeof(struct evdev_client) + +- bufsize * sizeof(struct input_event), +- GFP_KERNEL); ++ client = kzalloc(size, GFP_KERNEL | __GFP_NOWARN); ++ if (!client) ++ client = vzalloc(size); + if (!client) + return -ENOMEM; + diff --git a/queue-3.12/input-i8042-add-pnp-modaliases.patch b/queue-3.12/input-i8042-add-pnp-modaliases.patch new file mode 100644 index 00000000000..087bb9861be --- /dev/null +++ b/queue-3.12/input-i8042-add-pnp-modaliases.patch @@ -0,0 +1,40 @@ +From 78551277e4df57864b0b0e7f85c23ede2be2edb8 Mon Sep 17 00:00:00 2001 +From: Tom Gundersen +Date: Thu, 31 Oct 2013 00:33:54 -0700 +Subject: Input: i8042 - add PNP modaliases + +From: Tom Gundersen + +commit 78551277e4df57864b0b0e7f85c23ede2be2edb8 upstream. + +This allows the module to be autoloaded in the common case. + +In order to work on non-PnP systems the module should be compiled in or +loaded unconditionally at boot (c.f. modules-load.d(5)), as before. + +Signed-off-by: Tom Gundersen +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/input/serio/i8042-x86ia64io.h | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/input/serio/i8042-x86ia64io.h ++++ b/drivers/input/serio/i8042-x86ia64io.h +@@ -765,6 +765,7 @@ static struct pnp_device_id pnp_kbd_devi + { .id = "CPQA0D7", .driver_data = 0 }, + { .id = "", }, + }; ++MODULE_DEVICE_TABLE(pnp, pnp_kbd_devids); + + static struct pnp_driver i8042_pnp_kbd_driver = { + .name = "i8042 kbd", +@@ -786,6 +787,7 @@ static struct pnp_device_id pnp_aux_devi + { .id = "SYN0801", .driver_data = 0 }, + { .id = "", }, + }; ++MODULE_DEVICE_TABLE(pnp, pnp_aux_devids); + + static struct pnp_driver i8042_pnp_aux_driver = { + .name = "i8042 aux", diff --git a/queue-3.12/input-usbtouchscreen-ignore-egalax-d-wav-eeti-hids.patch b/queue-3.12/input-usbtouchscreen-ignore-egalax-d-wav-eeti-hids.patch new file mode 100644 index 00000000000..0912c47c7a8 --- /dev/null +++ b/queue-3.12/input-usbtouchscreen-ignore-egalax-d-wav-eeti-hids.patch @@ -0,0 +1,37 @@ +From ae2aa3a512fa5f50f67feba9e66bc2efb394bd63 Mon Sep 17 00:00:00 2001 +From: Forest Bond +Date: Mon, 21 Oct 2013 12:38:18 -0400 +Subject: Input: usbtouchscreen: ignore eGalax/D-Wav/EETI HIDs + +From: Forest Bond + +commit ae2aa3a512fa5f50f67feba9e66bc2efb394bd63 upstream. + +The HID driver now handles these devices, regardless of what protocol +the device claims it supports. + +Signed-off-by: Forest Bond +Acked-by: Dmitry Torokhov +Signed-off-by: Jiri Kosina +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/input/touchscreen/usbtouchscreen.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +--- a/drivers/input/touchscreen/usbtouchscreen.c ++++ b/drivers/input/touchscreen/usbtouchscreen.c +@@ -146,12 +146,10 @@ enum { + + #define USB_DEVICE_HID_CLASS(vend, prod) \ + .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS \ +- | USB_DEVICE_ID_MATCH_INT_PROTOCOL \ + | USB_DEVICE_ID_MATCH_DEVICE, \ + .idVendor = (vend), \ + .idProduct = (prod), \ +- .bInterfaceClass = USB_INTERFACE_CLASS_HID, \ +- .bInterfaceProtocol = USB_INTERFACE_PROTOCOL_MOUSE ++ .bInterfaceClass = USB_INTERFACE_CLASS_HID + + static const struct usb_device_id usbtouch_devices[] = { + #ifdef CONFIG_TOUCHSCREEN_USB_EGALAX diff --git a/queue-3.12/mfd-lpc_ich-add-device-ids-for-intel-wildcat-point-lp-pch.patch b/queue-3.12/mfd-lpc_ich-add-device-ids-for-intel-wildcat-point-lp-pch.patch new file mode 100644 index 00000000000..203cff26661 --- /dev/null +++ b/queue-3.12/mfd-lpc_ich-add-device-ids-for-intel-wildcat-point-lp-pch.patch @@ -0,0 +1,63 @@ +From 5e90169c5a02da69a1ef721bea7a823e9e48fcb6 Mon Sep 17 00:00:00 2001 +From: James Ralston +Date: Mon, 4 Nov 2013 09:31:20 -0800 +Subject: mfd: lpc_ich: Add Device IDs for Intel Wildcat Point-LP PCH + +From: James Ralston + +commit 5e90169c5a02da69a1ef721bea7a823e9e48fcb6 upstream. + +This patch adds the TCO Watchdog Device IDs for the +Intel Wildcat Point-LP PCH. + +Signed-off-by: James Ralston +Signed-off-by: Samuel Ortiz +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/mfd/lpc_ich.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +--- a/drivers/mfd/lpc_ich.c ++++ b/drivers/mfd/lpc_ich.c +@@ -53,6 +53,7 @@ + * document number TBD : Wellsburg + * document number TBD : Avoton SoC + * document number TBD : Coleto Creek ++ * document number TBD : Wildcat Point-LP + */ + + #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +@@ -211,6 +212,7 @@ enum lpc_chipsets { + LPC_WBG, /* Wellsburg */ + LPC_AVN, /* Avoton SoC */ + LPC_COLETO, /* Coleto Creek */ ++ LPC_WPT_LP, /* Wildcat Point-LP */ + }; + + static struct lpc_ich_info lpc_chipset_info[] = { +@@ -503,6 +505,10 @@ static struct lpc_ich_info lpc_chipset_i + .name = "Coleto Creek", + .iTCO_version = 2, + }, ++ [LPC_WPT_LP] = { ++ .name = "Lynx Point_LP", ++ .iTCO_version = 2, ++ }, + }; + + /* +@@ -721,6 +727,13 @@ static DEFINE_PCI_DEVICE_TABLE(lpc_ich_i + { PCI_VDEVICE(INTEL, 0x1f3a), LPC_AVN}, + { PCI_VDEVICE(INTEL, 0x1f3b), LPC_AVN}, + { PCI_VDEVICE(INTEL, 0x2390), LPC_COLETO}, ++ { PCI_VDEVICE(INTEL, 0x9cc1), LPC_WPT_LP}, ++ { PCI_VDEVICE(INTEL, 0x9cc2), LPC_WPT_LP}, ++ { PCI_VDEVICE(INTEL, 0x9cc3), LPC_WPT_LP}, ++ { PCI_VDEVICE(INTEL, 0x9cc5), LPC_WPT_LP}, ++ { PCI_VDEVICE(INTEL, 0x9cc6), LPC_WPT_LP}, ++ { PCI_VDEVICE(INTEL, 0x9cc7), LPC_WPT_LP}, ++ { PCI_VDEVICE(INTEL, 0x9cc9), LPC_WPT_LP}, + { 0, }, /* End of list */ + }; + MODULE_DEVICE_TABLE(pci, lpc_ich_ids); diff --git a/queue-3.12/mfd-rtsx-modify-rts5249_optimize_phy.patch b/queue-3.12/mfd-rtsx-modify-rts5249_optimize_phy.patch new file mode 100644 index 00000000000..781cb4aa1c3 --- /dev/null +++ b/queue-3.12/mfd-rtsx-modify-rts5249_optimize_phy.patch @@ -0,0 +1,166 @@ +From 26b818511c6562ce372566c219a2ef1afea35fe6 Mon Sep 17 00:00:00 2001 +From: Wei WANG +Date: Fri, 13 Sep 2013 17:45:43 +0800 +Subject: mfd: rtsx: Modify rts5249_optimize_phy + +From: Wei WANG + +commit 26b818511c6562ce372566c219a2ef1afea35fe6 upstream. + +In some platforms, specially Thinkpad series, rts5249 won't be +initialized properly. So we need adjust some phy parameters to +improve the compatibility issue. + +It is a little different between simulation and real chip. We have +no idea about which configuration is better before tape-out. We set +default settings according to simulation, but need to tune these +parameters after getting the real chip. + +I can't explain every change in detail here. The below information is +just a rough description: + +PHY_REG_REV: Disable internal clkreq_tx, enable rx_pwst +PHY_BPCR: No change, just turn the magic number to macro definitions +PHY_PCR: Change OOBS sensitivity, from 60mV to 90mV +PHY_RCR2: Control charge-pump current automatically +PHY_FLD4: Use TX cmu reference clock +PHY_RDR: Change RXDSEL from 30nF to 1.9nF +PHY_RCR1: Change the duration between adp_st and asserting cp_en from +0.32 us to 0.64us +PHY_FLD3: Adjust internal timers +PHY_TUNE: Fine tune the regulator12 output voltage + +Signed-off-by: Wei WANG +Signed-off-by: Lee Jones +Cc: Chris Ball +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/mfd/rts5249.c | 48 +++++++++++++++++++++++++++++++++++++- + include/linux/mfd/rtsx_pci.h | 53 +++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 99 insertions(+), 2 deletions(-) + +--- a/drivers/mfd/rts5249.c ++++ b/drivers/mfd/rts5249.c +@@ -130,13 +130,57 @@ static int rts5249_optimize_phy(struct r + { + int err; + +- err = rtsx_pci_write_phy_register(pcr, PHY_REG_REV, 0xFE46); ++ err = rtsx_pci_write_phy_register(pcr, PHY_REG_REV, ++ PHY_REG_REV_RESV | PHY_REG_REV_RXIDLE_LATCHED | ++ PHY_REG_REV_P1_EN | PHY_REG_REV_RXIDLE_EN | ++ PHY_REG_REV_RX_PWST | PHY_REG_REV_CLKREQ_DLY_TIMER_1_0 | ++ PHY_REG_REV_STOP_CLKRD | PHY_REG_REV_STOP_CLKWR); + if (err < 0) + return err; + + msleep(1); + +- return rtsx_pci_write_phy_register(pcr, PHY_BPCR, 0x05C0); ++ err = rtsx_pci_write_phy_register(pcr, PHY_BPCR, ++ PHY_BPCR_IBRXSEL | PHY_BPCR_IBTXSEL | ++ PHY_BPCR_IB_FILTER | PHY_BPCR_CMIRROR_EN); ++ if (err < 0) ++ return err; ++ err = rtsx_pci_write_phy_register(pcr, PHY_PCR, ++ PHY_PCR_FORCE_CODE | PHY_PCR_OOBS_CALI_50 | ++ PHY_PCR_OOBS_VCM_08 | PHY_PCR_OOBS_SEN_90 | ++ PHY_PCR_RSSI_EN); ++ if (err < 0) ++ return err; ++ err = rtsx_pci_write_phy_register(pcr, PHY_RCR2, ++ PHY_RCR2_EMPHASE_EN | PHY_RCR2_NADJR | ++ PHY_RCR2_CDR_CP_10 | PHY_RCR2_CDR_SR_2 | ++ PHY_RCR2_FREQSEL_12 | PHY_RCR2_CPADJEN | ++ PHY_RCR2_CDR_SC_8 | PHY_RCR2_CALIB_LATE); ++ if (err < 0) ++ return err; ++ err = rtsx_pci_write_phy_register(pcr, PHY_FLD4, ++ PHY_FLD4_FLDEN_SEL | PHY_FLD4_REQ_REF | ++ PHY_FLD4_RXAMP_OFF | PHY_FLD4_REQ_ADDA | ++ PHY_FLD4_BER_COUNT | PHY_FLD4_BER_TIMER | ++ PHY_FLD4_BER_CHK_EN); ++ if (err < 0) ++ return err; ++ err = rtsx_pci_write_phy_register(pcr, PHY_RDR, PHY_RDR_RXDSEL_1_9); ++ if (err < 0) ++ return err; ++ err = rtsx_pci_write_phy_register(pcr, PHY_RCR1, ++ PHY_RCR1_ADP_TIME | PHY_RCR1_VCO_COARSE); ++ if (err < 0) ++ return err; ++ err = rtsx_pci_write_phy_register(pcr, PHY_FLD3, ++ PHY_FLD3_TIMER_4 | PHY_FLD3_TIMER_6 | ++ PHY_FLD3_RXDELINK); ++ if (err < 0) ++ return err; ++ return rtsx_pci_write_phy_register(pcr, PHY_TUNE, ++ PHY_TUNE_TUNEREF_1_0 | PHY_TUNE_VBGSEL_1252 | ++ PHY_TUNE_SDBUS_33 | PHY_TUNE_TUNED18 | ++ PHY_TUNE_TUNED12); + } + + static int rts5249_turn_on_led(struct rtsx_pcr *pcr) +--- a/include/linux/mfd/rtsx_pci.h ++++ b/include/linux/mfd/rtsx_pci.h +@@ -756,6 +756,59 @@ + #define PCR_SETTING_REG2 0x814 + #define PCR_SETTING_REG3 0x747 + ++/* Phy bits */ ++#define PHY_PCR_FORCE_CODE 0xB000 ++#define PHY_PCR_OOBS_CALI_50 0x0800 ++#define PHY_PCR_OOBS_VCM_08 0x0200 ++#define PHY_PCR_OOBS_SEN_90 0x0040 ++#define PHY_PCR_RSSI_EN 0x0002 ++ ++#define PHY_RCR1_ADP_TIME 0x0100 ++#define PHY_RCR1_VCO_COARSE 0x001F ++ ++#define PHY_RCR2_EMPHASE_EN 0x8000 ++#define PHY_RCR2_NADJR 0x4000 ++#define PHY_RCR2_CDR_CP_10 0x0400 ++#define PHY_RCR2_CDR_SR_2 0x0100 ++#define PHY_RCR2_FREQSEL_12 0x0040 ++#define PHY_RCR2_CPADJEN 0x0020 ++#define PHY_RCR2_CDR_SC_8 0x0008 ++#define PHY_RCR2_CALIB_LATE 0x0002 ++ ++#define PHY_RDR_RXDSEL_1_9 0x4000 ++ ++#define PHY_TUNE_TUNEREF_1_0 0x4000 ++#define PHY_TUNE_VBGSEL_1252 0x0C00 ++#define PHY_TUNE_SDBUS_33 0x0200 ++#define PHY_TUNE_TUNED18 0x01C0 ++#define PHY_TUNE_TUNED12 0X0020 ++ ++#define PHY_BPCR_IBRXSEL 0x0400 ++#define PHY_BPCR_IBTXSEL 0x0100 ++#define PHY_BPCR_IB_FILTER 0x0080 ++#define PHY_BPCR_CMIRROR_EN 0x0040 ++ ++#define PHY_REG_REV_RESV 0xE000 ++#define PHY_REG_REV_RXIDLE_LATCHED 0x1000 ++#define PHY_REG_REV_P1_EN 0x0800 ++#define PHY_REG_REV_RXIDLE_EN 0x0400 ++#define PHY_REG_REV_CLKREQ_DLY_TIMER_1_0 0x0040 ++#define PHY_REG_REV_STOP_CLKRD 0x0020 ++#define PHY_REG_REV_RX_PWST 0x0008 ++#define PHY_REG_REV_STOP_CLKWR 0x0004 ++ ++#define PHY_FLD3_TIMER_4 0x7800 ++#define PHY_FLD3_TIMER_6 0x00E0 ++#define PHY_FLD3_RXDELINK 0x0004 ++ ++#define PHY_FLD4_FLDEN_SEL 0x4000 ++#define PHY_FLD4_REQ_REF 0x2000 ++#define PHY_FLD4_RXAMP_OFF 0x1000 ++#define PHY_FLD4_REQ_ADDA 0x0800 ++#define PHY_FLD4_BER_COUNT 0x00E0 ++#define PHY_FLD4_BER_TIMER 0x000A ++#define PHY_FLD4_BER_CHK_EN 0x0001 ++ + #define rtsx_pci_init_cmd(pcr) ((pcr)->ci = 0) + + struct rtsx_pcr; diff --git a/queue-3.12/revert-input-alps-add-support-for-model-found-on-dell-xt2.patch b/queue-3.12/revert-input-alps-add-support-for-model-found-on-dell-xt2.patch new file mode 100644 index 00000000000..85bdb648f09 --- /dev/null +++ b/queue-3.12/revert-input-alps-add-support-for-model-found-on-dell-xt2.patch @@ -0,0 +1,28 @@ +From 936816161978ca716a56c5e553c68f25972b1e3a Mon Sep 17 00:00:00 2001 +From: Dmitry Torokhov +Date: Thu, 14 Nov 2013 17:36:42 -0800 +Subject: Revert "Input: ALPS - add support for model found on Dell XT2" + +From: Dmitry Torokhov + +commit 936816161978ca716a56c5e553c68f25972b1e3a upstream. + +This reverts commit 5beea882e64121dfe3b33145767d3302afa784d5 as it +breaks trackpoint operation on XT2. + +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/input/mouse/alps.c | 1 - + 1 file changed, 1 deletion(-) + +--- a/drivers/input/mouse/alps.c ++++ b/drivers/input/mouse/alps.c +@@ -103,7 +103,6 @@ static const struct alps_model_info alps + /* Dell Latitude E5500, E6400, E6500, Precision M4400 */ + { { 0x62, 0x02, 0x14 }, 0x00, ALPS_PROTO_V2, 0xcf, 0xcf, + ALPS_PASS | ALPS_DUALPOINT | ALPS_PS2_INTERLEAVED }, +- { { 0x73, 0x00, 0x14 }, 0x00, ALPS_PROTO_V2, 0xcf, 0xcf, ALPS_DUALPOINT }, /* Dell XT2 */ + { { 0x73, 0x02, 0x50 }, 0x00, ALPS_PROTO_V2, 0xcf, 0xcf, ALPS_FOUR_BUTTONS }, /* Dell Vostro 1400 */ + { { 0x52, 0x01, 0x14 }, 0x00, ALPS_PROTO_V2, 0xff, 0xff, + ALPS_PASS | ALPS_DUALPOINT | ALPS_PS2_INTERLEAVED }, /* Toshiba Tecra A11-11L */ diff --git a/queue-3.12/series b/queue-3.12/series index b933e9cceae..3bdfd007a58 100644 --- a/queue-3.12/series +++ b/queue-3.12/series @@ -162,3 +162,13 @@ alsa-hda-create-headhpone-mic-jack-mode-when-really-needed.patch alsa-hda-initialize-missing-bass-speaker-pin-for-asus-aio-et2700.patch alsa-hda-check-leaf-nodes-to-find-aamix-amps.patch tracing-allow-events-to-have-null-strings.patch +revert-input-alps-add-support-for-model-found-on-dell-xt2.patch +input-evdev-fall-back-to-vmalloc-for-client-event-buffer.patch +input-cypress_ps2-do-not-consider-data-bad-if-palm-is-detected.patch +input-i8042-add-pnp-modaliases.patch +hid-don-t-ignore-egalax-d-wav-eeti-hids.patch +input-usbtouchscreen-ignore-egalax-d-wav-eeti-hids.patch +mfd-lpc_ich-add-device-ids-for-intel-wildcat-point-lp-pch.patch +mfd-rtsx-modify-rts5249_optimize_phy.patch +cpufreq-highbank-cpufreq-enable-midway-ecx-2000.patch +sh-ecovec-fixup-compile-error-on-sdhi.patch diff --git a/queue-3.12/sh-ecovec-fixup-compile-error-on-sdhi.patch b/queue-3.12/sh-ecovec-fixup-compile-error-on-sdhi.patch new file mode 100644 index 00000000000..393121d6aef --- /dev/null +++ b/queue-3.12/sh-ecovec-fixup-compile-error-on-sdhi.patch @@ -0,0 +1,33 @@ +From 357002b9c09e5332c9fcd4fa3d3c0fa00ca6ae4f Mon Sep 17 00:00:00 2001 +From: Kuninori Morimoto +Date: Tue, 24 Sep 2013 18:55:22 -0700 +Subject: sh: ecovec: fixup compile error on sdhi + +From: Kuninori Morimoto + +commit 357002b9c09e5332c9fcd4fa3d3c0fa00ca6ae4f upstream. + +afa2c9407f8908 ("sh: ecovec24: Use MMC/SDHI CD and RO GPIO") added +.tmio_flags = TMIO_MMC_USE_GPIO_CD on sh_mobile_sdhi_info, but it needs + header. This patch adds it. + +Signed-off-by: Kuninori Morimoto +Reviewed-by: Yusuke Goda +Acked-by: Laurent Pinchart +Signed-off-by: Chris Ball +Signed-off-by: Greg Kroah-Hartman + +--- + arch/sh/boards/mach-ecovec24/setup.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/arch/sh/boards/mach-ecovec24/setup.c ++++ b/arch/sh/boards/mach-ecovec24/setup.c +@@ -15,6 +15,7 @@ + #include + #include + #include ++#include + #include + #include + #include