[opensuse-kernel] [PATCH] Delete patches.drivers/input-Add-LED-support-to-Synaptics-device
As the openSUSE 12.2(bnc#768506,bnc#765524), there also have a bnc#720226 issue happen on openSUSE 12.1. So, we also remove this patch from 12.1. Cc: Takashi Iwai <tiwai@suse.de> Cc: C. Andrews Lavarre <alavarre@gmail.com> Signed-off-by: Lee, Chun-Yi <jlee@suse.com> --- .../input-Add-LED-support-to-Synaptics-device | 218 -------------------- series.conf | 1 - 2 files changed, 0 insertions(+), 219 deletions(-) delete mode 100644 patches.drivers/input-Add-LED-support-to-Synaptics-device diff --git a/patches.drivers/input-Add-LED-support-to-Synaptics-device b/patches.drivers/input-Add-LED-support-to-Synaptics-device deleted file mode 100644 index 5143984..0000000 --- a/patches.drivers/input-Add-LED-support-to-Synaptics-device +++ /dev/null @@ -1,218 +0,0 @@ -From: Takashi Iwai <tiwai@suse.de> -Subject: [PATCH 2/2] input: Add LED support to Synaptics device -Patch-mainline: Submitted -References: bnc#547370,bnc#582529,bnc#589014 - -The new Synaptics devices have an LED on the top-left corner. -This patch adds a new LED class device to control it. It's created -dynamically upon synaptics device probing. - -The LED is controlled via the command 0x0a with parameters 0x88 or 0x10. -This seems only on/off control although other value might be accepted. - -The detection of the LED isn't clear yet. It should have been the new -capability bits that indicate the presence, but on real machines, it -doesn't fit. So, for the time being, the driver checks the product id -in the ext capability bits and assumes that LED exists on the known -devices. - -Signed-off-by: Takashi Iwai <tiwai@suse.de> - ---- - drivers/input/mouse/Kconfig | 9 +++ - drivers/input/mouse/synaptics.c | 111 ++++++++++++++++++++++++++++++++++++++++ - drivers/input/mouse/synaptics.h | 3 + - 3 files changed, 123 insertions(+) - ---- a/drivers/input/mouse/Kconfig -+++ b/drivers/input/mouse/Kconfig -@@ -19,6 +19,7 @@ config MOUSE_PS2 - select SERIO_LIBPS2 - select SERIO_I8042 if X86 - select SERIO_GSCPS2 if GSC -+ select LEDS_CLASS if MOUSE_PS2_SYNAPICS_LED - help - Say Y here if you have a PS/2 mouse connected to your system. This - includes the standard 2 or 3-button PS/2 mouse, as well as PS/2 -@@ -67,6 +68,14 @@ config MOUSE_PS2_SYNAPTICS - - If unsure, say Y. - -+config MOUSE_PS2_SYNAPTICS_LED -+ bool "Support embedded LED on Synaptics devices" -+ depends on MOUSE_PS2_SYNAPTICS -+ select NEW_LEDS -+ help -+ Say Y here if you have a Synaptics device with an embedded LED. -+ This will enable LED class driver to control the LED device. -+ - config MOUSE_PS2_LIFEBOOK - bool "Fujitsu Lifebook PS/2 mouse protocol extension" if EXPERT - default y ---- a/drivers/input/mouse/synaptics.c -+++ b/drivers/input/mouse/synaptics.c -@@ -28,6 +28,7 @@ - #include <linux/input/mt.h> - #include <linux/serio.h> - #include <linux/libps2.h> -+#include <linux/leds.h> - #include <linux/slab.h> - #include "psmouse.h" - #include "synaptics.h" -@@ -353,6 +354,110 @@ static void synaptics_pt_create(struct p - serio_register_port(serio); - } - -+#ifdef CONFIG_MOUSE_PS2_SYNAPTICS_LED -+/* -+ * LED handling: -+ * Some Synaptics devices have an embeded LED at the top-left corner. -+ */ -+ -+struct synaptics_led { -+ struct psmouse *psmouse; -+ struct work_struct work; -+ struct led_classdev cdev; -+}; -+ -+static void synaptics_set_led(struct psmouse *psmouse, int on) -+{ -+ int i; -+ unsigned char cmd = on ? 0x88 : 0x10; -+ -+ ps2_begin_command(&psmouse->ps2dev); -+ if (__ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_SETSCALE11)) -+ goto out; -+ for (i = 6; i >= 0; i -= 2) { -+ unsigned char d = (cmd >> i) & 3; -+ if (__ps2_command(&psmouse->ps2dev, &d, PSMOUSE_CMD_SETRES)) -+ goto out; -+ } -+ cmd = 0x0a; -+ __ps2_command(&psmouse->ps2dev, &cmd, PSMOUSE_CMD_SETRATE); -+ out: -+ ps2_end_command(&psmouse->ps2dev); -+} -+ -+static void synaptics_led_work(struct work_struct *work) -+{ -+ struct synaptics_led *led; -+ -+ led = container_of(work, struct synaptics_led, work); -+ synaptics_set_led(led->psmouse, led->cdev.brightness); -+} -+ -+static void synaptics_led_cdev_brightness_set(struct led_classdev *cdev, -+ enum led_brightness value) -+{ -+ struct synaptics_led *led; -+ -+ led = container_of(cdev, struct synaptics_led, cdev); -+ schedule_work(&led->work); -+} -+ -+static void synaptics_sync_led(struct psmouse *psmouse) -+{ -+ struct synaptics_data *priv = psmouse->private; -+ -+ if (priv->led) -+ synaptics_set_led(psmouse, priv->led->cdev.brightness); -+} -+ -+static int synaptics_init_led(struct psmouse *psmouse) -+{ -+ struct synaptics_data *priv = psmouse->private; -+ struct synaptics_led *led; -+ int err; -+ -+ /* FIXME: LED is supposedly detectable in cap0c[1] 0x20, but it seems -+ * not working on real machines. -+ * So we check the product id to be sure. -+ */ -+ if (!priv->ext_cap_0c || SYN_CAP_PRODUCT_ID(priv->ext_cap) != 0xe4) -+ return 0; -+ -+ printk(KERN_INFO "synaptics: support LED control\n"); -+ led = kzalloc(sizeof(struct synaptics_led), GFP_KERNEL); -+ if (!led) -+ return -ENOMEM; -+ led->psmouse = psmouse; -+ INIT_WORK(&led->work, synaptics_led_work); -+ led->cdev.name = "psmouse::synaptics"; -+ led->cdev.brightness_set = synaptics_led_cdev_brightness_set; -+ led->cdev.flags = LED_CORE_SUSPENDRESUME; -+ err = led_classdev_register(NULL, &led->cdev); -+ if (err < 0) { -+ kfree(led); -+ return err; -+ } -+ priv->led = led; -+ return 0; -+} -+ -+static void synaptics_free_led(struct psmouse *psmouse) -+{ -+ struct synaptics_data *priv = psmouse->private; -+ -+ if (!priv->led) -+ return; -+ cancel_work_sync(&priv->led->work); -+ synaptics_set_led(psmouse, 0); -+ led_classdev_unregister(&priv->led->cdev); -+ kfree(priv->led); -+} -+#else -+#define synaptics_init_led(ps) 0 -+#define synaptics_free_led(ps) do {} while (0) -+#define synaptics_sync_led(ps) do {} while (0) -+#endif -+ - /***************************************************************************** - * Functions to interpret the absolute mode packets - ****************************************************************************/ -@@ -647,6 +752,7 @@ static void set_input_params(struct inpu - - static void synaptics_disconnect(struct psmouse *psmouse) - { -+ synaptics_free_led(psmouse); - synaptics_reset(psmouse); - kfree(psmouse->private); - psmouse->private = NULL; -@@ -678,6 +784,8 @@ static int synaptics_reconnect(struct ps - return -1; - } - -+ synaptics_sync_led(psmouse); -+ - return 0; - } - -@@ -752,6 +860,9 @@ int synaptics_init(struct psmouse *psmou - SYN_ID_MAJOR(priv->identity), SYN_ID_MINOR(priv->identity), - priv->model_id, priv->capabilities, priv->ext_cap, priv->ext_cap_0c); - -+ if (synaptics_init_led(psmouse) < 0) -+ goto init_fail; -+ - set_input_params(psmouse->dev, priv); - - /* ---- a/drivers/input/mouse/synaptics.h -+++ b/drivers/input/mouse/synaptics.h -@@ -97,6 +97,8 @@ struct synaptics_hw_state { - signed char scroll; - }; - -+struct synaptics_led; -+ - struct synaptics_data { - /* Data read from the touchpad */ - unsigned long int model_id; /* Model-ID */ -@@ -110,6 +112,7 @@ struct synaptics_data { - struct serio *pt_port; /* Pass-through serio port */ - - struct synaptics_hw_state mt; /* current gesture packet */ -+ struct synaptics_led *led; - }; - - void synaptics_module_init(void); diff --git a/series.conf b/series.conf index afb090b..d0c127e 100644 --- a/series.conf +++ b/series.conf @@ -911,7 +911,6 @@ patches.drivers/elousb.patch patches.suse/elousb-2.6.35-api-changes patches.fixes/input-add-acer-aspire-5710-to-nomux.patch - patches.drivers/input-Add-LED-support-to-Synaptics-device patches.drivers/input-elantech-correct-x-y-value-range-for-v2-hardware patches.drivers/input-elantech-get-rid-of-etp_2ft_-in-elantech-h -- 1.6.4.2 -- To unsubscribe, e-mail: opensuse-kernel+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-kernel+owner@opensuse.org
Hi all, I just merged this patch to openSUSE 12.1 kernel. Thanks Joey lee 於 四,2012-08-30 於 10:03 +0800,Lee, Chun-Yi 提到:
As the openSUSE 12.2(bnc#768506,bnc#765524), there also have a bnc#720226 issue happen on openSUSE 12.1. So, we also remove this patch from 12.1.
Cc: Takashi Iwai <tiwai@suse.de> Cc: C. Andrews Lavarre <alavarre@gmail.com> Signed-off-by: Lee, Chun-Yi <jlee@suse.com> --- .../input-Add-LED-support-to-Synaptics-device | 218 -------------------- series.conf | 1 - 2 files changed, 0 insertions(+), 219 deletions(-) delete mode 100644 patches.drivers/input-Add-LED-support-to-Synaptics-device
diff --git a/patches.drivers/input-Add-LED-support-to-Synaptics-device b/patches.drivers/input-Add-LED-support-to-Synaptics-device deleted file mode 100644 index 5143984..0000000 --- a/patches.drivers/input-Add-LED-support-to-Synaptics-device +++ /dev/null @@ -1,218 +0,0 @@ -From: Takashi Iwai <tiwai@suse.de> -Subject: [PATCH 2/2] input: Add LED support to Synaptics device -Patch-mainline: Submitted -References: bnc#547370,bnc#582529,bnc#589014 - -The new Synaptics devices have an LED on the top-left corner. -This patch adds a new LED class device to control it. It's created -dynamically upon synaptics device probing. - -The LED is controlled via the command 0x0a with parameters 0x88 or 0x10. -This seems only on/off control although other value might be accepted. - -The detection of the LED isn't clear yet. It should have been the new -capability bits that indicate the presence, but on real machines, it -doesn't fit. So, for the time being, the driver checks the product id -in the ext capability bits and assumes that LED exists on the known -devices. - -Signed-off-by: Takashi Iwai <tiwai@suse.de> - ---- - drivers/input/mouse/Kconfig | 9 +++ - drivers/input/mouse/synaptics.c | 111 ++++++++++++++++++++++++++++++++++++++++ - drivers/input/mouse/synaptics.h | 3 + - 3 files changed, 123 insertions(+) - ---- a/drivers/input/mouse/Kconfig -+++ b/drivers/input/mouse/Kconfig -@@ -19,6 +19,7 @@ config MOUSE_PS2 - select SERIO_LIBPS2 - select SERIO_I8042 if X86 - select SERIO_GSCPS2 if GSC -+ select LEDS_CLASS if MOUSE_PS2_SYNAPICS_LED - help - Say Y here if you have a PS/2 mouse connected to your system. This - includes the standard 2 or 3-button PS/2 mouse, as well as PS/2 -@@ -67,6 +68,14 @@ config MOUSE_PS2_SYNAPTICS - - If unsure, say Y. - -+config MOUSE_PS2_SYNAPTICS_LED -+ bool "Support embedded LED on Synaptics devices" -+ depends on MOUSE_PS2_SYNAPTICS -+ select NEW_LEDS -+ help -+ Say Y here if you have a Synaptics device with an embedded LED. -+ This will enable LED class driver to control the LED device. -+ - config MOUSE_PS2_LIFEBOOK - bool "Fujitsu Lifebook PS/2 mouse protocol extension" if EXPERT - default y ---- a/drivers/input/mouse/synaptics.c -+++ b/drivers/input/mouse/synaptics.c -@@ -28,6 +28,7 @@ - #include <linux/input/mt.h> - #include <linux/serio.h> - #include <linux/libps2.h> -+#include <linux/leds.h> - #include <linux/slab.h> - #include "psmouse.h" - #include "synaptics.h" -@@ -353,6 +354,110 @@ static void synaptics_pt_create(struct p - serio_register_port(serio); - } - -+#ifdef CONFIG_MOUSE_PS2_SYNAPTICS_LED -+/* -+ * LED handling: -+ * Some Synaptics devices have an embeded LED at the top-left corner. -+ */ -+ -+struct synaptics_led { -+ struct psmouse *psmouse; -+ struct work_struct work; -+ struct led_classdev cdev; -+}; -+ -+static void synaptics_set_led(struct psmouse *psmouse, int on) -+{ -+ int i; -+ unsigned char cmd = on ? 0x88 : 0x10; -+ -+ ps2_begin_command(&psmouse->ps2dev); -+ if (__ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_SETSCALE11)) -+ goto out; -+ for (i = 6; i >= 0; i -= 2) { -+ unsigned char d = (cmd >> i) & 3; -+ if (__ps2_command(&psmouse->ps2dev, &d, PSMOUSE_CMD_SETRES)) -+ goto out; -+ } -+ cmd = 0x0a; -+ __ps2_command(&psmouse->ps2dev, &cmd, PSMOUSE_CMD_SETRATE); -+ out: -+ ps2_end_command(&psmouse->ps2dev); -+} -+ -+static void synaptics_led_work(struct work_struct *work) -+{ -+ struct synaptics_led *led; -+ -+ led = container_of(work, struct synaptics_led, work); -+ synaptics_set_led(led->psmouse, led->cdev.brightness); -+} -+ -+static void synaptics_led_cdev_brightness_set(struct led_classdev *cdev, -+ enum led_brightness value) -+{ -+ struct synaptics_led *led; -+ -+ led = container_of(cdev, struct synaptics_led, cdev); -+ schedule_work(&led->work); -+} -+ -+static void synaptics_sync_led(struct psmouse *psmouse) -+{ -+ struct synaptics_data *priv = psmouse->private; -+ -+ if (priv->led) -+ synaptics_set_led(psmouse, priv->led->cdev.brightness); -+} -+ -+static int synaptics_init_led(struct psmouse *psmouse) -+{ -+ struct synaptics_data *priv = psmouse->private; -+ struct synaptics_led *led; -+ int err; -+ -+ /* FIXME: LED is supposedly detectable in cap0c[1] 0x20, but it seems -+ * not working on real machines. -+ * So we check the product id to be sure. -+ */ -+ if (!priv->ext_cap_0c || SYN_CAP_PRODUCT_ID(priv->ext_cap) != 0xe4) -+ return 0; -+ -+ printk(KERN_INFO "synaptics: support LED control\n"); -+ led = kzalloc(sizeof(struct synaptics_led), GFP_KERNEL); -+ if (!led) -+ return -ENOMEM; -+ led->psmouse = psmouse; -+ INIT_WORK(&led->work, synaptics_led_work); -+ led->cdev.name = "psmouse::synaptics"; -+ led->cdev.brightness_set = synaptics_led_cdev_brightness_set; -+ led->cdev.flags = LED_CORE_SUSPENDRESUME; -+ err = led_classdev_register(NULL, &led->cdev); -+ if (err < 0) { -+ kfree(led); -+ return err; -+ } -+ priv->led = led; -+ return 0; -+} -+ -+static void synaptics_free_led(struct psmouse *psmouse) -+{ -+ struct synaptics_data *priv = psmouse->private; -+ -+ if (!priv->led) -+ return; -+ cancel_work_sync(&priv->led->work); -+ synaptics_set_led(psmouse, 0); -+ led_classdev_unregister(&priv->led->cdev); -+ kfree(priv->led); -+} -+#else -+#define synaptics_init_led(ps) 0 -+#define synaptics_free_led(ps) do {} while (0) -+#define synaptics_sync_led(ps) do {} while (0) -+#endif -+ - /***************************************************************************** - * Functions to interpret the absolute mode packets - ****************************************************************************/ -@@ -647,6 +752,7 @@ static void set_input_params(struct inpu - - static void synaptics_disconnect(struct psmouse *psmouse) - { -+ synaptics_free_led(psmouse); - synaptics_reset(psmouse); - kfree(psmouse->private); - psmouse->private = NULL; -@@ -678,6 +784,8 @@ static int synaptics_reconnect(struct ps - return -1; - } - -+ synaptics_sync_led(psmouse); -+ - return 0; - } - -@@ -752,6 +860,9 @@ int synaptics_init(struct psmouse *psmou - SYN_ID_MAJOR(priv->identity), SYN_ID_MINOR(priv->identity), - priv->model_id, priv->capabilities, priv->ext_cap, priv->ext_cap_0c); - -+ if (synaptics_init_led(psmouse) < 0) -+ goto init_fail; -+ - set_input_params(psmouse->dev, priv); - - /* ---- a/drivers/input/mouse/synaptics.h -+++ b/drivers/input/mouse/synaptics.h -@@ -97,6 +97,8 @@ struct synaptics_hw_state { - signed char scroll; - }; - -+struct synaptics_led; -+ - struct synaptics_data { - /* Data read from the touchpad */ - unsigned long int model_id; /* Model-ID */ -@@ -110,6 +112,7 @@ struct synaptics_data { - struct serio *pt_port; /* Pass-through serio port */ - - struct synaptics_hw_state mt; /* current gesture packet */ -+ struct synaptics_led *led; - }; - - void synaptics_module_init(void); diff --git a/series.conf b/series.conf index afb090b..d0c127e 100644 --- a/series.conf +++ b/series.conf @@ -911,7 +911,6 @@ patches.drivers/elousb.patch patches.suse/elousb-2.6.35-api-changes patches.fixes/input-add-acer-aspire-5710-to-nomux.patch - patches.drivers/input-Add-LED-support-to-Synaptics-device
patches.drivers/input-elantech-correct-x-y-value-range-for-v2-hardware patches.drivers/input-elantech-get-rid-of-etp_2ft_-in-elantech-h -- 1.6.4.2
-- To unsubscribe, e-mail: opensuse-kernel+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-kernel+owner@opensuse.org
participants (2)
-
joeyli
-
Lee, Chun-Yi