Patchwork [Maverick] Revert "UBUNTU: SAUCE: Add support for Intellimouse Mode in ALPS touchpad on Dell E2 series Laptops"

login
register
mail settings
Submitter Leann Ogasawara
Date Sept. 17, 2010, 9:35 p.m.
Message ID <1284759301.2007.3465.camel@emiko>
Download mbox | patch
Permalink /patch/65107/
State Accepted
Delegated to: Leann Ogasawara
Headers show

Comments

Leann Ogasawara - Sept. 17, 2010, 9:35 p.m.
Just FYI, I've reverted the following patch from the Maverick kernel:

commit bd79df42218fe1db5e683b567791d4bb97b60685
Author: Manoj Iyer <manoj.iyer@canonical.com>
Date:   Wed Sep 8 19:40:57 2010 +0100

    UBUNTU: SAUCE: Add support for Intellimouse Mode in ALPS touchpad on Dell E2 series Laptops

It resulted in a regression which broke a number of ALPS touchpads.
Please resend a proper fix for Bug 632884 as an SRU for Maverick.

Thanks,
Leann

From 326561039f1ee50ba1e854ce5a04f5be0cd881b9 Mon Sep 17 00:00:00 2001
From: Andy Whitcroft <apw@canonical.com>
Date: Fri, 17 Sep 2010 15:34:35 +0100
Subject: [PATCH] Revert "UBUNTU: SAUCE: Add support for Intellimouse Mode in ALPS touchpad on Dell E2 series Laptops"

BugLink: http://bugs.launchpad.net/bugs/641320

This reverts commit bd79df42218fe1db5e683b567791d4bb97b60685.  This
commit seems to have an outdated patch in it and seems to break a number
of touchpads.  Reverting for now.

Signed-off-by: Andy Whitcroft <apw@canonical.com>
Signed-off-by: Leann Ogasawara <leann.ogasawara@canonical.com>
---
 drivers/input/mouse/alps.c         |   81 ------------------------------------
 drivers/input/mouse/alps.h         |    5 --
 drivers/input/mouse/psmouse-base.c |    3 +-
 3 files changed, 1 insertions(+), 88 deletions(-)

Patch

diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index 0963a0d..99d5876 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -63,8 +63,6 @@  static const struct alps_model_info alps_model_data[] = {
 	/* Dell Latitude E5500, E6400, E6500, Precision M4400 */
 	{ { 0x62, 0x02, 0x14 }, 0xcf, 0xcf,
 		ALPS_PASS | ALPS_DUALPOINT | ALPS_PS2_INTERLEAVED },
-	/* Dell Precision 4500 */
-	{ { 0x73, 0x02, 0x64 }, 0x80, 0x80, 0 },
 	{ { 0x73, 0x02, 0x50 }, 0xcf, 0xcf, ALPS_FOUR_BUTTONS },	  /* Dell Vostro 1400 */
 	{ { 0x52, 0x01, 0x14 }, 0xff, 0xff,
 		ALPS_PASS | ALPS_DUALPOINT | ALPS_PS2_INTERLEAVED },	  /* Toshiba Tecra A11-11L */
@@ -113,77 +111,6 @@  static const struct alps_model_info alps_model_data[] = {
  * on a dualpoint, etc.
  */
 
-
-/* Magic Sequence to enable Intellimouse Mode on Dell E2 Touchpads*/
-
-static int dell_e2_setup_intellimouse_mode(void *data)
-{
-	struct psmouse *psmouse = (struct psmouse *)(data);
-	struct ps2dev *ps2dev = &psmouse->ps2dev;
-	struct input_dev *dev = psmouse->dev;
-	unsigned char param[] = {0, 0, 0};
-
-	if (ps2_command(ps2dev, param, 0x00f5) ||
-		ps2_command(ps2dev, param, 0x00ea) ||
-		ps2_command(ps2dev, param, 0x00ec) ||
-		ps2_command(ps2dev, param, 0x00ec) ||
-		ps2_command(ps2dev, param, 0x00ec) ||
-		ps2_command(ps2dev, param, 0x03e9))
-			return -1;
-
-	dbg("alps:dell_e2_setup: param[0]: %x,"
-		"param[1]: %x, param[2]: %x\n", param[0],
-					param[1], param[2]);
-/* Check for supported model to continue */
-
-	if (!((param[0] == 0x88) && (param[1] == 0x07)
-		&& ((param[2] == 0x9D) || (param[2] == 0x9B))))
-		return -1;
-
-	if (ps2_command(ps2dev, NULL, 0x00ec) ||
-		ps2_command(ps2dev, NULL, 0x00f0) ||
-		ps2_command(ps2dev, NULL, 0x00f0) ||
-		ps2_command(ps2dev, NULL, 0x00f0) ||
-		ps2_command(ps2dev, NULL, 0x00f3) ||
-		ps2_command(ps2dev, NULL, 0x0028) ||
-		ps2_command(ps2dev, NULL, 0x00f0) ||
-		ps2_command(ps2dev, NULL, 0x00f6) ||
-		ps2_command(ps2dev, NULL, 0x00ea) ||
-		ps2_command(ps2dev, NULL, 0x00f4))
-			return -1;
-
-	__set_bit(BTN_MIDDLE, dev->keybit);
-	__set_bit(REL_WHEEL, dev->relbit);
-
-	psmouse->pktsize = 4;
-	psmouse->type = PSMOUSE_IMPS;
-
-	return 0;
-}
-
-static const struct alps_model_quirk alps_model_init_quirk_tbl[] = {
-
-	{ {0x73, 0x02, 0x64}, dell_e2_setup_intellimouse_mode }
-};
-
-static int alps_model_init_quirk(struct psmouse *psmouse,
-					const struct alps_model_info *model)
-{
-	int rc = 1;
-	int i;
-
-	for (i = 0; i < ARRAY_SIZE(alps_model_init_quirk_tbl); i++) {
-		if (!memcmp(model->signature,
-			alps_model_init_quirk_tbl[i].signature,
-			    sizeof(alps_model_init_quirk_tbl[i].signature))) {
-				rc = alps_model_init_quirk_tbl[i].callback(psmouse);
-				break;
-		}
-	}
-
-	return rc;
-}
-
 static bool alps_is_valid_first_byte(const struct alps_model_info *model,
 				     unsigned char data)
 {
@@ -750,14 +677,6 @@  int alps_init(struct psmouse *psmouse)
 	if (alps_hw_init(psmouse))
 		goto init_fail;
 
-	if (!alps_model_init_quirk(psmouse, model)) {
-		printk(KERN_WARNING "alps.c: Enabled hardware quirk, falling back to psmouse-core\n");
-		input_free_device(dev2);
-		kfree(priv);
-		psmouse->private = NULL;
-		return 0;
-	}
-
 	/*
 	 * Undo part of setup done for us by psmouse core since touchpad
 	 * is not a relative device.
diff --git a/drivers/input/mouse/alps.h b/drivers/input/mouse/alps.h
index c54c5ea..904ed8b 100644
--- a/drivers/input/mouse/alps.h
+++ b/drivers/input/mouse/alps.h
@@ -26,11 +26,6 @@  struct alps_data {
 	struct timer_list timer;
 };
 
-struct alps_model_quirk {
-unsigned char signature[3];
-int (*callback)(void *data);
-};
-
 #ifdef CONFIG_MOUSE_PS2_ALPS
 int alps_detect(struct psmouse *psmouse, bool set_properties);
 int alps_init(struct psmouse *psmouse);
diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c
index 3657de8..979c502 100644
--- a/drivers/input/mouse/psmouse-base.c
+++ b/drivers/input/mouse/psmouse-base.c
@@ -659,8 +659,7 @@  static int psmouse_extensions(struct psmouse *psmouse,
 		ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS);
 		if (alps_detect(psmouse, set_properties) == 0) {
 			if (!set_properties || alps_init(psmouse) == 0)
-/* If ALPS model quirk was applied, don't change the settings */
-				return psmouse->type ? psmouse->type : PSMOUSE_ALPS;
+				return PSMOUSE_ALPS;
 /*
  * Init failed, try basic relative protocols
  */