diff options
-rw-r--r-- | packages/linux/linux-ezx/a780-leds-r0.patch | 185 | ||||
-rw-r--r-- | packages/linux/linux-ezx/e680-disable-boomer-HACK.patch | 16 | ||||
-rw-r--r-- | packages/linux/linux-ezx/e680-fix-keypad.patch | 152 | ||||
-rw-r--r-- | packages/linux/linux-ezx/e680-leds-r0.patch | 336 | ||||
-rw-r--r-- | packages/linux/linux-ezx/e680-leds-r1.patch | 374 | ||||
-rw-r--r-- | packages/linux/linux-ezx/ezx-backlight-r0.patch | 212 | ||||
-rw-r--r-- | packages/linux/linux-ezx/ezx-backlight-r1.patch | 277 | ||||
-rw-r--r-- | packages/linux/linux-ezx/pxakbd-fix-directkeys.patch | 83 | ||||
-rw-r--r-- | packages/linux/linux-ezx/touchscreen-fix-r0.patch | 19 |
9 files changed, 0 insertions, 1654 deletions
diff --git a/packages/linux/linux-ezx/a780-leds-r0.patch b/packages/linux/linux-ezx/a780-leds-r0.patch deleted file mode 100644 index 31fdfc635b..0000000000 --- a/packages/linux/linux-ezx/a780-leds-r0.patch +++ /dev/null @@ -1,185 +0,0 @@ - -# -# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher -# - ---- linux-2.6.16/drivers/leds/Kconfig~a780-leds-r0.patch 2006-06-05 18:05:32.000000000 +0200 -+++ linux-2.6.16/drivers/leds/Kconfig 2006-06-05 18:05:32.000000000 +0200 -@@ -66,6 +66,13 @@ - This options enables support for the LEDs on the - Motorola E680(i) GSM Phone. - -+config LEDS_A780 -+ tristate "LED Support for the Motorola A780 GSM Phone" -+ depends LEDS_CLASS && PXA_EZX_A780 -+ help -+ This option enables support for the LEDs on the -+ Motorola A780 GSM Phone. -+ - config LEDS_TRIGGER_TIMER - tristate "LED Timer Trigger" - depends LEDS_TRIGGERS ---- linux-2.6.16/drivers/leds/Makefile~a780-leds-r0.patch 2006-06-05 18:05:32.000000000 +0200 -+++ linux-2.6.16/drivers/leds/Makefile 2006-06-05 18:05:32.000000000 +0200 -@@ -11,6 +11,7 @@ - obj-$(CONFIG_LEDS_IXP4XX) += leds-ixp4xx-gpio.o - obj-$(CONFIG_LEDS_TOSA) += leds-tosa.o - obj-$(CONFIG_LEDS_E680) += leds-e680.o -+obj-$(CONFIG_LEDS_A780) += leds-a780.o - - # LED Triggers - obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o ---- linux-2.6.16/arch/arm/mach-pxa/ezx.c~a780-leds-r0.patch 2006-06-05 18:05:32.000000000 +0200 -+++ linux-2.6.16/arch/arm/mach-pxa/ezx.c 2006-06-05 18:05:32.000000000 +0200 -@@ -367,6 +367,15 @@ - }; - #endif - -+#ifdef CONFIG_PXA_EZX_A780 -+/* -+ * A780 LEDs -+ */ -+static struct platform_device a780led_device = { -+ .name = "a780-led", -+ .id = -1, -+}; -+#endif - - /* keyboard */ - -@@ -780,6 +789,9 @@ - #ifdef CONFIG_PXA_EZX_E680 - &e680led_device, - #endif -+#ifdef CONFIG_PXA_EZX_A780 -+ &a780led_device, -+#endif - }; - - static void __init ---- /dev/null 2006-06-05 13:59:28.329930680 +0200 -+++ linux-2.6.16/drivers/leds/leds-a780.c 2006-06-05 18:27:13.000000000 +0200 -@@ -0,0 +1,123 @@ -+/* -+ * EZX Platform LED Driver for the Motorola A780 GSM Phone -+ * -+ * Copyright 2006 Vanille-Media -+ * -+ * Author: Michael Lauer <mickey@Vanille.de> -+ * -+ * Based on keylight.c by Motorola and leds-corgi.c by Richard Purdie -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 as -+ * published by the Free Software Foundation. -+ * -+ */ -+ -+#include <linux/config.h> -+#include <linux/kernel.h> -+#include <linux/platform_device.h> -+#include <linux/leds.h> -+#include <asm/arch/ezx-pcap.h> -+ -+static void a780led_main_set(struct led_classdev *led_cdev, enum led_brightness value) -+{ -+ if ( value > 31 ) value = 31; -+ printk( KERN_DEBUG "a780led_main_set: %d\n", value ); -+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL0, value & 0x01); -+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL1, value & 0x02); -+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL2, value & 0x04); -+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL3, value & 0x08); -+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL4, value & 0x10); -+} -+ -+static void a780led_aux_set(struct led_classdev *led_cdev, enum led_brightness value) -+{ -+ if ( value > 31 ) value = 31; -+ printk( KERN_DEBUG "a780led_aux_set: %d\n", value ); -+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL0, value & 0x01); -+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL1, value & 0x02); -+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL2, value & 0x04); -+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL3, value & 0x08); -+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL4, value & 0x10); -+} -+ -+static struct led_classdev a780_main_led = { -+ .name = "a780:main", -+ .default_trigger = "none", -+ .brightness_set = a780led_main_set, -+}; -+ -+static struct led_classdev a780_aux_led = { -+ .name = "a780:aux", -+ .default_trigger = "none", -+ .brightness_set = a780led_aux_set, -+}; -+ -+#ifdef CONFIG_PM -+static int a780led_suspend(struct platform_device *dev, pm_message_t state) -+{ -+ led_classdev_suspend(&a780_main_led); -+ led_classdev_suspend(&a780_aux_led); -+ return 0; -+} -+ -+static int a780led_resume(struct platform_device *dev) -+{ -+ led_classdev_resume(&a780_main_led); -+ led_classdev_resume(&a780_aux_led); -+ return 0; -+} -+#endif -+ -+static int a780led_probe(struct platform_device *pdev) -+{ -+ int ret; -+ -+ ret = led_classdev_register(&pdev->dev, &a780_main_led); -+ if (ret < 0) -+ return ret; -+ -+ ret = led_classdev_register(&pdev->dev, &a780_aux_led); -+ if (ret < 0) -+ led_classdev_unregister(&a780_main_led); -+ -+ return ret; -+} -+ -+static int a780led_remove(struct platform_device *pdev) -+{ -+ led_classdev_unregister(&a780_main_led); -+ led_classdev_unregister(&a780_aux_led); -+ return 0; -+} -+ -+static struct platform_driver a780led_driver = { -+ .probe = a780led_probe, -+ .remove = a780led_remove, -+#ifdef CONFIG_PM -+ .suspend = a780led_suspend, -+ .resume = a780led_resume, -+#endif -+ .driver = { -+ .name = "a780-led", -+ }, -+}; -+ -+static int __init a780led_init(void) -+{ -+ return platform_driver_register(&a780led_driver); -+} -+ -+static void __exit a780led_exit(void) -+{ -+ a780led_main_set( &a780_main_led, 0 ); -+ a780led_aux_set( &a780_aux_led, 0 ); -+ platform_driver_unregister(&a780led_driver); -+} -+ -+module_init(a780led_init); -+module_exit(a780led_exit); -+ -+MODULE_AUTHOR("Michael Lauer <mickey@Vanille.de>"); -+MODULE_DESCRIPTION("Motorola A780 LED driver"); -+MODULE_LICENSE("GPL"); diff --git a/packages/linux/linux-ezx/e680-disable-boomer-HACK.patch b/packages/linux/linux-ezx/e680-disable-boomer-HACK.patch deleted file mode 100644 index a0d953ddfb..0000000000 --- a/packages/linux/linux-ezx/e680-disable-boomer-HACK.patch +++ /dev/null @@ -1,16 +0,0 @@ - -# -# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher -# - ---- linux-2.6.16/drivers/i2c/chips/Makefile~e680-disable-boomer 2006-05-31 18:52:44.000000000 +0200 -+++ linux-2.6.16/drivers/i2c/chips/Makefile 2006-05-31 18:56:38.000000000 +0200 -@@ -17,7 +17,7 @@ - - obj-$(CONFIG_I2C_ADCM2700) += e680_camera.o - obj-$(CONFIG_I2C_A780_CAMERA) += a780_camera.o --obj-$(CONFIG_PXA_EZX_E680) += boomer.o -+//obj-$(CONFIG_PXA_EZX_E680) += boomer.o - - ifeq ($(CONFIG_I2C_DEBUG_CHIP),y) - EXTRA_CFLAGS += -DDEBUG diff --git a/packages/linux/linux-ezx/e680-fix-keypad.patch b/packages/linux/linux-ezx/e680-fix-keypad.patch deleted file mode 100644 index ca06052803..0000000000 --- a/packages/linux/linux-ezx/e680-fix-keypad.patch +++ /dev/null @@ -1,152 +0,0 @@ - -# -# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher -# - ---- linux-2.6.16/arch/arm/mach-pxa/ezx.c~e680-fix-keypad.patch 2006-06-11 00:47:33.000000000 +0200 -+++ linux-2.6.16/arch/arm/mach-pxa/ezx.c 2006-06-12 16:13:28.000000000 +0200 -@@ -341,71 +341,25 @@ - }; - #endif - --/* keyboard */ -- --#if defined(CONFIG_PXA_EZX_V700) --#error "kbd matrix still needs to be converted to new row/col layout" --static unsigned char ezx_keycode[] = { -- /* col 0 */ -- KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT, -- KEYPAD_POUND, KEY_0, KEY_9, 0, -- /* col 1 */ -- KEY_2, KEY_4, KEY_6, KEY_8, -- KEY_7, KEYPAD_SLEFT, KEYPAD_SRIGHT, 0, -- /* col 2 */ -- KEY_MENU, KEY_1, KEY_3, KEY_5, -- KEY_KPASTERISK, KEY_VOLUMEUP, KEY_VOLUMEDOWN, 0, -- /* col 3 */ -- KEY_CAMERA, KEYPAD_CLEAR, KEYPAD_CARRIER, KEYPAD_ACTIVATE, -- KEYPAD_SEND, KEYPAD_SMART, KEYPAD_VAVR, 0, --}; --static unsigned char ezx_direct_keycode[] = { -- KEYPAD_NONE, -- KEYPAD_NONE, -- KEYPAD_NONE, -- KEYPAD_NONE, -- KEYPAD_NONE, -- KEYPAD_NONE, --}; --#elif defined(CONFIG_PXA_EZX_E680_P4A) --#error "kbd matrix still needs to be converted to new row/col layout" --static unsigned char ezx_keycode[] = { -- /* col 0 */ -- KEY_UP, KEY_DOWN, KEY_LEFT, 0, 0, 0, 0, 0, -- /* col 1 */ -- KEY_RIGHT, KEY_CENTER, KEY_HOME, 0, 0, 0, 0, 0, -- /* col 2 */ -- KEYPAD_GAME_R, 0, KEYPAD_GAME_L, 0, 0, 0, 0, 0, -- /* col 3 */ -- KEY_A, KEY_B, 0, 0, 0, 0, 0, 0, --}; --static unsigned char ezx_direct_keycode[] = { -- KEY_CAMERA, -- KEYPAD_NONE, -- KEYPAD_NONE, -- KEYPAD_NONE, -- KEY_POWER, -- KEYPAD_NONE, --}; --#elif defined(CONFIG_PXA_EZX_E680) --#error "kbd matrix still needs to be converted to new row/col layout" -+/* -+ * PXA Keyboard -+ */ -+#if defined(CONFIG_PXA_EZX_E680) - static unsigned char ezx_keycode[] = { -- /* col 0 */ -- KEY_UP, KEY_DOWN, 0, 0, 0, 0, 0, 0, -- /* col 1 */ -- KEY_RIGHT, KEY_LEFT, 0, 0, 0, 0, 0, 0, -- /* col 2 */ -- 0, KEYPAD_GAME_R, 0, 0, 0, 0, 0, 0, -- /* col 3 */ -- KEYPAD_HOME, KEYPAD_GAME_L, KEYPAD_CENTER, 0, 0, 0, 0, 0, -+ /* row 0 */ -+ KEY_UP, KEY_RIGHT, KEY_RESERVED, KEY_PHONE, -+ /* row 1 */ -+ KEY_DOWN, KEY_LEFT, KEY_VOLUMEUP, KEY_VOLUMEDOWN, -+ /* row 2 */ -+ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_KPENTER, - }; - static unsigned char ezx_direct_keycode[] = { - KEY_CAMERA, -- KEYPAD_NONE, -- KEYPAD_NONE, -- KEYPAD_A, -+ KEY_RESERVED, -+ KEY_RESERVED, -+ KEY_HOME, - KEY_POWER, -- KEYPAD_B, -+ KEY_MENU, - }; - #elif defined(CONFIG_PXA_EZX_A780) - static unsigned char ezx_keycode[] = { -@@ -424,22 +378,12 @@ - KEY_CAMERA, - }; - #else --#error "no EZX subarchitecture defined !?!" -+#error "no EZX subarchitecture defined" - #endif - - static int ezx_kbd_init(void) - { --#if defined(CONFIG_PXA_EZX_E680_P4A) -- pxa_gpio_mode(93 | GPIO_ALT_FN_1_IN); /* KP_DKIN<0>, VR Key */ -- pxa_gpio_mode(97 | GPIO_ALT_FN_1_IN); /* KP_DKIN<4>, power key */ -- pxa_gpio_mode(100 | GPIO_ALT_FN_1_IN); /* KP_MKIN<0> */ -- pxa_gpio_mode(101 | GPIO_ALT_FN_1_IN); /* KP_MKIN<1> */ -- pxa_gpio_mode(102 | GPIO_ALT_FN_1_IN); /* KP_MKIN<2> */ -- pxa_gpio_mode(103 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<0> */ -- pxa_gpio_mode(104 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<1> */ -- pxa_gpio_mode(105 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<2> */ -- pxa_gpio_mode(106 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<3> */ --#elif defined(CONFIG_PXA_EZX_E680) -+#if defined(CONFIG_PXA_EZX_E680) - pxa_gpio_mode(93 | GPIO_ALT_FN_1_IN); /* KP_DKIN<0>, VR Key */ - pxa_gpio_mode(96 | GPIO_ALT_FN_1_IN); /* KP_DKIN<3>, GAME_A */ - pxa_gpio_mode(97 | GPIO_ALT_FN_1_IN); /* KP_DKIN<4>, power key */ -@@ -455,7 +399,7 @@ - GPDR(GPIO_TC_MM_EN) |= GPIO_bit(GPIO_TC_MM_EN); - GPSR(GPIO_TC_MM_EN) = GPIO_bit(GPIO_TC_MM_EN); - PGSR3 |= GPIO_bit(GPIO_TC_MM_EN); --#elif defined (CONFIG_PXA_EZX_A780) -+#elif defined(CONFIG_PXA_EZX_A780) - pxa_gpio_mode(93 | GPIO_ALT_FN_1_IN); /* KP_DKIN<0>, voice_rec */ - pxa_gpio_mode(97 | GPIO_ALT_FN_3_IN); /* KP_MKIN<3> */ - pxa_gpio_mode(98 | GPIO_ALT_FN_3_IN); /* KP_MKIN<4> */ -@@ -476,10 +420,7 @@ - .scan_interval = HZ/40, - .matrix = { - .keycode = &ezx_keycode, --#if defined(CONFIG_ARCH_EXZ_E680_P4A) -- .cols = 4, -- .rows = 3, --#elif defined(CONFIG_PXA_EZX_E680) -+#if defined(CONFIG_PXA_EZX_E680) - .cols = 4, - .rows = 3, - #elif defined(CONFIG_PXA_EZX_A780) -@@ -489,10 +430,8 @@ - }, - .direct = { - .keycode = &ezx_direct_keycode, --#if defined(CONFIG_PXA_EZX_E680_P4A) -- .num = 4, --#elif defined(CONFIG_PXA_EZX_E680) -- .num = 5, -+#if defined(CONFIG_PXA_EZX_E680) -+ .num = 6, - #elif defined(CONFIG_PXA_EZX_A780) - .num = 1, - #endif diff --git a/packages/linux/linux-ezx/e680-leds-r0.patch b/packages/linux/linux-ezx/e680-leds-r0.patch deleted file mode 100644 index b6d2413dc1..0000000000 --- a/packages/linux/linux-ezx/e680-leds-r0.patch +++ /dev/null @@ -1,336 +0,0 @@ - -# -# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher -# - ---- linux-2.6.16/arch/arm/mach-pxa/ezx.c~led_ezx-r0.patch 2006-06-03 15:17:43.000000000 +0200 -+++ linux-2.6.16/arch/arm/mach-pxa/ezx.c 2006-06-05 15:14:59.000000000 +0200 -@@ -357,6 +357,17 @@ - .num_resources = ARRAY_SIZE(ezx_backlight_resources), - }; - -+#ifdef CONFIG_PXA_EZX_E680 -+/* -+ * E680 LEDs -+ */ -+static struct platform_device e680led_device = { -+ .name = "e680-led", -+ .id = -1, -+}; -+#endif -+ -+ - /* keyboard */ - - #if defined(CONFIG_PXA_EZX_V700) -@@ -770,6 +781,9 @@ - - static struct platform_device *devices[] __initdata = { - &ezx_bp_device, -+#ifdef CONFIG_PXA_EZX_E680 -+ &e680led_device, -+#endif - }; - - static void __init ---- linux-2.6.16/drivers/leds/Kconfig~led_ezx-r0.patch 2006-06-03 15:17:47.000000000 +0200 -+++ linux-2.6.16/drivers/leds/Kconfig 2006-06-03 15:17:47.000000000 +0200 -@@ -59,6 +59,13 @@ - This option enables support for the LEDs on Sharp Zaurus - SL-6000 series. - -+config LEDS_E680 -+ tristate "LED Support for the Motorola E680(i) GSM Phone" -+ depends LEDS_CLASS && PXA_EZX_E680 -+ help -+ This options enables support for the LEDs on the -+ Motorola E680(i) GSM Phone. -+ - config LEDS_TRIGGER_TIMER - tristate "LED Timer Trigger" - depends LEDS_TRIGGERS ---- linux-2.6.16/drivers/leds/Makefile~led_ezx-r0.patch 2006-06-03 15:17:47.000000000 +0200 -+++ linux-2.6.16/drivers/leds/Makefile 2006-06-03 15:17:47.000000000 +0200 -@@ -10,7 +10,8 @@ - obj-$(CONFIG_LEDS_SPITZ) += leds-spitz.o - obj-$(CONFIG_LEDS_IXP4XX) += leds-ixp4xx-gpio.o - obj-$(CONFIG_LEDS_TOSA) += leds-tosa.o -+obj-$(CONFIG_LEDS_E680) += leds-e680.o - - # LED Triggers - obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o --obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK) += ledtrig-ide-disk.o -\ Kein Zeilenumbruch am Dateiende. -+obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK) += ledtrig-ide-disk.o ---- /dev/null 2006-06-05 13:59:28.329930680 +0200 -+++ linux-2.6.16/drivers/leds/leds-e680.c 2006-06-05 15:11:42.000000000 +0200 -@@ -0,0 +1,269 @@ -+/* -+ * EZX Platform LED Driver for the Motorola E680(i) GSM Phone -+ * -+ * Copyright 2006 Vanille-Media -+ * -+ * Author: Michael Lauer <mickey@Vanille.de> -+ * -+ * Based on the Motorola 2.4 leds-e680.c and leds-corgi.c by Richard Purdie -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 as -+ * published by the Free Software Foundation. -+ * -+ */ -+ -+#include <linux/config.h> -+#include <linux/kernel.h> -+#include <linux/init.h> -+#include <linux/platform_device.h> -+#include <linux/leds.h> -+#include <asm/mach-types.h> -+#include <asm/arch/hardware.h> -+#include <asm/arch/pxa-regs.h> -+//FIXME this belongs to somewhere else, please -+// adjust when ssp_pcap.h reached its final destination -+#include "../misc/ezx/ssp_pcap.h" -+ -+//FIXME move defines to header file -+#define IND_CNTL_R_BUL 46 -+#define IND_CNTL_G_BUL 47 -+#define SSP_PCAP_LED_MASK 0x000fffe0 -+#define SSP_PCAP_LED_SHIFT 5 -+ -+static enum led_brightness old_red; -+static enum led_brightness old_green; -+static enum led_brightness old_blue; -+ -+typedef struct { -+ unsigned char ind_GPIO_red; /*Indicator Red control GPIO 46: 0 active, 1 disactive*/ -+ unsigned char ind_GPIO_green; /*Indicator Green control GPIO 47: 0 active, 1 disactive*/ -+ unsigned char pcap_LEDR_en; /*pcap LEDR_EN bit value: 1 =Red LED(&Green) sink circuit enabled*/ -+ unsigned char pcap_LEDG_en; /*pcap LEDG_EN bit value:1 =Green(->Blue)LED sink circuit enabled*/ -+ unsigned char pcap_LEDR_CTRL; /* 4bits Sets the timing for the red(&Green) LED sink circuit*/ -+ unsigned char pcap_LEDG_CTRL; /* 4bits Sets the timing for the GREEN (->Blue) LED sink circuit*/ -+ unsigned char pcap_LEDR_I; /* 2 bits 00 3mA,01 4mA, 10 5mA, 11 9mA, sets the pulsed current level for LEDR*/ -+ unsigned char pcap_LEDG_I; /* 2 bits 00 3mA,01 4mA, 10 5mA, 11 9mA, sets the pulsed current level for LEDG*/ -+ unsigned char pcap_SKIP_on; /*1=The ON timing sequence defined by LEDx_CTRL is executed on every other cycle*/ -+} PCAP2_LED_REGISTER_VALUE; -+ -+const PCAP2_LED_REGISTER_VALUE led_register_value[]= -+{ -+ /* on/off pulsepower timing intensity */ -+ {0x1,0x1, 0x0,0x0, 0x0,0x0, 0x0,0x0,0x0}, /* OFF */ -+ {0x0,0x1, 0x1,0x0, 0xc,0x0, 0x1,0x0,0x0}, /* RED */ -+ {0x1,0x0, 0x1,0x0, 0xc,0x0, 0x1,0x0,0x0}, /* GREEN */ -+ {0x0,0x0, 0x1,0x0, 0xc,0x0, 0x1,0x0,0x0}, /* ORANGE = RED + GREEN */ -+ {0x1,0x1, 0x0,0x1, 0x0,0xc, 0x0,0x0,0x0}, /* BLUE */ -+ {0x0,0x1, 0x1,0x1, 0xc,0xc, 0x1,0x0,0x0}, /* LIGHT_RED = RED + BLUE */ -+ {0x1,0x0, 0x1,0x1, 0xc,0xc, 0x1,0x0,0x0}, /* LIGHT_GREEN = GREEN + BLUE */ -+ {0x0,0x0, 0x1,0x1, 0xc,0xc, 0x1,0x0,0x0}, /* WHITE = RED + GREEN + BLUE */ -+}; -+ -+static void e680led_led_set( enum led_brightness red, enum led_brightness green, enum led_brightness blue ) -+{ -+ printk( KERN_DEBUG "e680led_led_set: red=%d, green=%d, blue=%d", red, green, blue ); -+ unsigned int tempValue = 0; -+ unsigned int value = 0; -+ unsigned int stateIndex = 0; -+ unsigned char gpio_red, gpio_green, ledr_en, ledg_en, ledr_ctrl, ledg_ctrl, ledr_i, ledg_i,skip; -+ -+ stateIndex = ( ( blue << 2 ) | ( green << 1 ) | ( red ) ) & 0x7; -+ printk( KERN_DEBUG "LED stateIndex is %d", stateIndex ); -+ gpio_red = led_register_value[stateIndex].ind_GPIO_red & 0x1; -+ gpio_green = led_register_value[stateIndex].ind_GPIO_green & 0x1; -+ ledr_en = led_register_value[stateIndex].pcap_LEDR_en & 0x1; -+ ledg_en = led_register_value[stateIndex].pcap_LEDG_en & 0x1; -+ ledr_ctrl = led_register_value[stateIndex].pcap_LEDR_CTRL & 0xf; -+ ledg_ctrl = led_register_value[stateIndex].pcap_LEDG_CTRL & 0xf; -+ ledr_i = led_register_value[stateIndex].pcap_LEDR_I & 0x3; -+ ledg_i = led_register_value[stateIndex].pcap_LEDG_I & 0x3; -+ skip = led_register_value[stateIndex].pcap_SKIP_on & 0x1; -+ -+ /* disable LEDs */ -+ if( ezx_pcap_read(SSP_PCAP_ADJ_PERIPH_REGISTER,&tempValue) != SSP_PCAP_SUCCESS ) -+ { -+ printk( KERN_WARNING "LED PCAP Read Failed\n" ); -+ return; -+ } -+ tempValue &= (~SSP_PCAP_LED_MASK); -+ if( ezx_pcap_write(SSP_PCAP_ADJ_PERIPH_REGISTER,tempValue) != SSP_PCAP_SUCCESS ) -+ { -+ printk( KERN_WARNING "LED PCAP Write Failed (Clear Data)\n" ); -+ return; -+ } -+ -+ /* configure GPIOs as output */ -+ pxa_gpio_mode(IND_CNTL_R_BUL | GPIO_OUT); -+ pxa_gpio_mode(IND_CNTL_G_BUL | GPIO_OUT); -+ -+ //FIXME: Simplify this logic -+ if ( (gpio_green && gpio_red) ) -+ { -+ /*Disable Red & Green signal*/ -+ set_GPIO(IND_CNTL_R_BUL); /*IND_CNTL_R_BUL Low active*/ -+ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) | GPIO_bit(IND_CNTL_R_BUL); -+ -+ clr_GPIO(IND_CNTL_G_BUL); /*IND_CNTL_G_BUL High active*/ -+ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) & (~GPIO_bit(IND_CNTL_G_BUL)); -+ -+ printk( KERN_DEBUG "LED GPIO Green & Red Disable\n"); -+ } else if ( gpio_green && !gpio_red ) -+ { -+ /*Green Disable, Red Enable*/ -+ clr_GPIO(IND_CNTL_R_BUL); -+ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) & (~GPIO_bit(IND_CNTL_R_BUL)); -+ -+ clr_GPIO(IND_CNTL_G_BUL); -+ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) & (~GPIO_bit(IND_CNTL_G_BUL)); -+ -+ printk( KERN_DEBUG "LED GPIO Green Disable, Red Enable\n"); -+ } else if (gpio_red && !gpio_green ) -+ { -+ /*Red Disable, Green Enable*/ -+ set_GPIO(IND_CNTL_R_BUL); -+ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) | GPIO_bit(IND_CNTL_R_BUL); -+ -+ set_GPIO(IND_CNTL_G_BUL); -+ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) | GPIO_bit(IND_CNTL_G_BUL); -+ printk( KERN_DEBUG "LED GPIO Red Disable, Green Enable"); -+ }else -+ { -+ /*Red & Green enable*/ -+ clr_GPIO(IND_CNTL_R_BUL); -+ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) & (~GPIO_bit(IND_CNTL_R_BUL)); -+ -+ set_GPIO(IND_CNTL_G_BUL); -+ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) | GPIO_bit(IND_CNTL_G_BUL); -+ printk( KERN_DEBUG "LED GPIO Red & Green Enable\n"); -+ } -+ -+ /* Write PCAP LED Peripheral Control Register*/ -+ value = ( ledr_en | (ledg_en <<1) | (ledr_ctrl <<2) | (ledg_ctrl <<6) | -+ (ledr_i << 10) | (ledg_i <<12) | (skip <<14) ) & 0x7fff; -+ tempValue |= (value <<SSP_PCAP_LED_SHIFT); -+ -+ if ( ezx_pcap_write(SSP_PCAP_ADJ_PERIPH_REGISTER,tempValue) == SSP_PCAP_SUCCESS ) -+ { -+ printk( KERN_DEBUG "LED PCAP Write Success (0x%x :0x%x)\n",tempValue,value); -+ old_red = red; -+ old_green = green; -+ old_blue = blue; -+ return; -+ } else { -+ printk( KERN_DEBUG "LED PCAP Write Failed (State Change)\n"); -+ return; -+ } -+} -+ -+static void e680led_red_set(struct led_classdev *led_cdev, enum led_brightness value) -+{ -+ printk( KERN_DEBUG "e680led_red_set: %d\n", value ); -+ e680led_led_set( 1 && value, old_green, old_blue ); -+} -+ -+static void e680led_green_set(struct led_classdev *led_cdev, enum led_brightness value) -+{ -+ printk( KERN_DEBUG "e680led_green_set: %d\n", value ); -+ e680led_led_set( old_red, 1 && value, old_blue ); -+} -+ -+static void e680led_blue_set(struct led_classdev *led_cdev, enum led_brightness value) -+{ -+ printk( KERN_DEBUG "e680led_blue_set: %d\n", value ); -+ e680led_led_set( old_red, old_green, 1 && value ); -+} -+ -+static struct led_classdev e680_red_led = { -+ .name = "e680:red", -+ .default_trigger = "none", -+ .brightness_set = e680led_red_set, -+}; -+ -+static struct led_classdev e680_green_led = { -+ .name = "e680:green", -+ .default_trigger = "none", -+ .brightness_set = e680led_green_set, -+}; -+ -+static struct led_classdev e680_blue_led = { -+ .name = "e680:blue", -+ .default_trigger = "none", -+ .brightness_set = e680led_blue_set, -+}; -+ -+#ifdef CONFIG_PM -+static int e680led_suspend(struct platform_device *dev, pm_message_t state) -+{ -+ led_classdev_suspend(&e680_red_led); -+ led_classdev_suspend(&e680_green_led); -+ led_classdev_suspend(&e680_blue_led); -+ return 0; -+} -+ -+static int e680led_resume(struct platform_device *dev) -+{ -+ led_classdev_resume(&e680_red_led); -+ led_classdev_resume(&e680_green_led); -+ led_classdev_resume(&e680_blue_led); -+ return 0; -+} -+#endif -+ -+static int e680led_probe(struct platform_device *pdev) -+{ -+ int ret; -+ -+ ret = led_classdev_register(&pdev->dev, &e680_red_led); -+ if (ret < 0) -+ return ret; -+ -+ ret = led_classdev_register(&pdev->dev, &e680_green_led); -+ if (ret < 0) -+ led_classdev_unregister(&e680_red_led); -+ -+ ret = led_classdev_register(&pdev->dev, &e680_blue_led); -+ if (ret < 0) { -+ led_classdev_unregister(&e680_red_led); -+ led_classdev_unregister(&e680_green_led); -+ } -+ return ret; -+} -+ -+static int e680led_remove(struct platform_device *pdev) -+{ -+ led_classdev_unregister(&e680_red_led); -+ led_classdev_unregister(&e680_green_led); -+ led_classdev_unregister(&e680_blue_led); -+ return 0; -+} -+ -+static struct platform_driver e680led_driver = { -+ .probe = e680led_probe, -+ .remove = e680led_remove, -+#ifdef CONFIG_PM -+ .suspend = e680led_suspend, -+ .resume = e680led_resume, -+#endif -+ .driver = { -+ .name = "e680-led", -+ }, -+}; -+ -+static int __init e680led_init(void) -+{ -+ return platform_driver_register(&e680led_driver); -+} -+ -+static void __exit e680led_exit(void) -+{ -+ e680led_led_set( 0, 0, 0 ); -+ platform_driver_unregister(&e680led_driver); -+} -+ -+module_init(e680led_init); -+module_exit(e680led_exit); -+ -+MODULE_AUTHOR("Michael Lauer <mickey@Vanille.de>"); -+MODULE_DESCRIPTION("Motorola E680 LED driver"); -+MODULE_LICENSE("GPL"); diff --git a/packages/linux/linux-ezx/e680-leds-r1.patch b/packages/linux/linux-ezx/e680-leds-r1.patch deleted file mode 100644 index abbab2937d..0000000000 --- a/packages/linux/linux-ezx/e680-leds-r1.patch +++ /dev/null @@ -1,374 +0,0 @@ - -# -# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher -# - ---- linux-2.6.16/arch/arm/mach-pxa/ezx.c~e680-leds-r0.patch 2006-06-06 17:14:06.000000000 +0200 -+++ linux-2.6.16/arch/arm/mach-pxa/ezx.c 2006-06-06 17:23:14.000000000 +0200 -@@ -357,6 +357,17 @@ - .num_resources = ARRAY_SIZE(ezx_backlight_resources), - }; - -+#ifdef CONFIG_PXA_EZX_E680 -+/* -+ * E680 LEDs -+ */ -+static struct platform_device e680led_device = { -+ .name = "e680-led", -+ .id = -1, -+}; -+#endif -+ -+ - /* keyboard */ - - #if defined(CONFIG_PXA_EZX_V700) -@@ -766,6 +777,9 @@ - - static struct platform_device *devices[] __initdata = { - &ezx_bp_device, -+#ifdef CONFIG_PXA_EZX_E680 -+ &e680led_device, -+#endif - }; - - static void __init ---- linux-2.6.16/drivers/leds/Kconfig~e680-leds-r0.patch 2006-06-06 17:14:05.000000000 +0200 -+++ linux-2.6.16/drivers/leds/Kconfig 2006-06-06 17:23:14.000000000 +0200 -@@ -59,6 +59,13 @@ - This option enables support for the LEDs on Sharp Zaurus - SL-6000 series. - -+config LEDS_E680 -+ tristate "LED Support for the Motorola E680(i) GSM Phone" -+ depends LEDS_CLASS && PXA_EZX_E680 -+ help -+ This options enables support for the LEDs on the -+ Motorola E680(i) GSM Phone. -+ - config LEDS_TRIGGER_TIMER - tristate "LED Timer Trigger" - depends LEDS_TRIGGERS ---- linux-2.6.16/drivers/leds/Makefile~e680-leds-r0.patch 2006-06-06 17:14:05.000000000 +0200 -+++ linux-2.6.16/drivers/leds/Makefile 2006-06-06 17:23:14.000000000 +0200 -@@ -10,7 +10,8 @@ - obj-$(CONFIG_LEDS_SPITZ) += leds-spitz.o - obj-$(CONFIG_LEDS_IXP4XX) += leds-ixp4xx-gpio.o - obj-$(CONFIG_LEDS_TOSA) += leds-tosa.o -+obj-$(CONFIG_LEDS_E680) += leds-e680.o - - # LED Triggers - obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o --obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK) += ledtrig-ide-disk.o -\ Kein Zeilenumbruch am Dateiende. -+obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK) += ledtrig-ide-disk.o ---- /dev/null 2006-06-06 16:58:36.577045136 +0200 -+++ linux-2.6.16/drivers/leds/leds-e680.c 2006-06-06 17:55:46.000000000 +0200 -@@ -0,0 +1,307 @@ -+/* -+ * EZX Platform LED Driver for the Motorola E680(i) GSM Phone -+ * -+ * Copyright 2006 Vanille-Media -+ * -+ * Author: Michael Lauer <mickey@Vanille.de> -+ * -+ * Based on the Motorola 2.4 leds-e680.c and leds-corgi.c by Richard Purdie -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 as -+ * published by the Free Software Foundation. -+ * -+ */ -+ -+#include <linux/config.h> -+#include <linux/delay.h> -+#include <linux/kernel.h> -+#include <linux/init.h> -+#include <linux/platform_device.h> -+#include <linux/leds.h> -+#include <asm/mach-types.h> -+#include <asm/arch/hardware.h> -+#include <asm/arch/pxa-regs.h> -+#include <asm/arch/ezx-pcap.h> -+ -+//FIXME move defines to a common header file -+#define IND_CNTL_R_BUL 46 -+#define IND_CNTL_G_BUL 47 -+#define SSP_PCAP_LED_MASK 0x000fffe0 -+#define SSP_PCAP_LED_SHIFT 5 -+#define GPIO_TC_MM_EN 99 -+ -+static enum led_brightness old_red; -+static enum led_brightness old_green; -+static enum led_brightness old_blue; -+ -+typedef struct { -+ unsigned char ind_GPIO_red; /*Indicator Red control GPIO 46: 0 active, 1 disactive*/ -+ unsigned char ind_GPIO_green; /*Indicator Green control GPIO 47: 0 active, 1 disactive*/ -+ unsigned char pcap_LEDR_en; /*pcap LEDR_EN bit value: 1 =Red LED(&Green) sink circuit enabled*/ -+ unsigned char pcap_LEDG_en; /*pcap LEDG_EN bit value:1 =Green(->Blue)LED sink circuit enabled*/ -+ unsigned char pcap_LEDR_CTRL; /* 4bits Sets the timing for the red(&Green) LED sink circuit*/ -+ unsigned char pcap_LEDG_CTRL; /* 4bits Sets the timing for the GREEN (->Blue) LED sink circuit*/ -+ unsigned char pcap_LEDR_I; /* 2 bits 00 3mA,01 4mA, 10 5mA, 11 9mA, sets the pulsed current level for LEDR*/ -+ unsigned char pcap_LEDG_I; /* 2 bits 00 3mA,01 4mA, 10 5mA, 11 9mA, sets the pulsed current level for LEDG*/ -+ unsigned char pcap_SKIP_on; /*1=The ON timing sequence defined by LEDx_CTRL is executed on every other cycle*/ -+} PCAP2_LED_REGISTER_VALUE; -+ -+const PCAP2_LED_REGISTER_VALUE led_register_value[]= -+{ -+ /* on/off pulsepower timing intensity */ -+ {0x1,0x1, 0x0,0x0, 0x0,0x0, 0x0,0x0,0x0}, /* OFF */ -+ {0x0,0x1, 0x1,0x0, 0xc,0x0, 0x1,0x0,0x0}, /* RED */ -+ {0x1,0x0, 0x1,0x0, 0xc,0x0, 0x1,0x0,0x0}, /* GREEN */ -+ {0x0,0x0, 0x1,0x0, 0xc,0x0, 0x1,0x0,0x0}, /* ORANGE = RED + GREEN */ -+ {0x1,0x1, 0x0,0x1, 0x0,0xc, 0x0,0x0,0x0}, /* BLUE */ -+ {0x0,0x1, 0x1,0x1, 0xc,0xc, 0x1,0x0,0x0}, /* LIGHT_RED = RED + BLUE */ -+ {0x1,0x0, 0x1,0x1, 0xc,0xc, 0x1,0x0,0x0}, /* LIGHT_GREEN = GREEN + BLUE */ -+ {0x0,0x0, 0x1,0x1, 0xc,0xc, 0x1,0x0,0x0}, /* WHITE = RED + GREEN + BLUE */ -+}; -+ -+static void e680led_led_set( enum led_brightness red, enum led_brightness green, enum led_brightness blue ) -+{ -+ printk( KERN_DEBUG "e680led_led_set: red=%d, green=%d, blue=%d", red, green, blue ); -+ unsigned int tempValue = 0; -+ unsigned int value = 0; -+ unsigned int stateIndex = 0; -+ unsigned char gpio_red, gpio_green, ledr_en, ledg_en, ledr_ctrl, ledg_ctrl, ledr_i, ledg_i,skip; -+ -+ stateIndex = ( ( blue << 2 ) | ( green << 1 ) | ( red ) ) & 0x7; -+ printk( KERN_DEBUG "LED stateIndex is %d", stateIndex ); -+ gpio_red = led_register_value[stateIndex].ind_GPIO_red & 0x1; -+ gpio_green = led_register_value[stateIndex].ind_GPIO_green & 0x1; -+ ledr_en = led_register_value[stateIndex].pcap_LEDR_en & 0x1; -+ ledg_en = led_register_value[stateIndex].pcap_LEDG_en & 0x1; -+ ledr_ctrl = led_register_value[stateIndex].pcap_LEDR_CTRL & 0xf; -+ ledg_ctrl = led_register_value[stateIndex].pcap_LEDG_CTRL & 0xf; -+ ledr_i = led_register_value[stateIndex].pcap_LEDR_I & 0x3; -+ ledg_i = led_register_value[stateIndex].pcap_LEDG_I & 0x3; -+ skip = led_register_value[stateIndex].pcap_SKIP_on & 0x1; -+ -+ /* disable LEDs */ -+ if( ezx_pcap_read(SSP_PCAP_ADJ_PERIPH_REGISTER,&tempValue) != SSP_PCAP_SUCCESS ) -+ { -+ printk( KERN_WARNING "LED PCAP Read Failed\n" ); -+ return; -+ } -+ tempValue &= (~SSP_PCAP_LED_MASK); -+ if( ezx_pcap_write(SSP_PCAP_ADJ_PERIPH_REGISTER,tempValue) != SSP_PCAP_SUCCESS ) -+ { -+ printk( KERN_WARNING "LED PCAP Write Failed (Clear Data)\n" ); -+ return; -+ } -+ -+ /* configure GPIOs as output */ -+ pxa_gpio_mode(IND_CNTL_R_BUL | GPIO_OUT); -+ pxa_gpio_mode(IND_CNTL_G_BUL | GPIO_OUT); -+ -+ //FIXME: Simplify this logic -+ if ( (gpio_green && gpio_red) ) -+ { -+ /*Disable Red & Green signal*/ -+ set_GPIO(IND_CNTL_R_BUL); /*IND_CNTL_R_BUL Low active*/ -+ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) | GPIO_bit(IND_CNTL_R_BUL); -+ -+ clr_GPIO(IND_CNTL_G_BUL); /*IND_CNTL_G_BUL High active*/ -+ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) & (~GPIO_bit(IND_CNTL_G_BUL)); -+ -+ printk( KERN_DEBUG "LED GPIO Green & Red Disable\n"); -+ } else if ( gpio_green && !gpio_red ) -+ { -+ /*Green Disable, Red Enable*/ -+ clr_GPIO(IND_CNTL_R_BUL); -+ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) & (~GPIO_bit(IND_CNTL_R_BUL)); -+ -+ clr_GPIO(IND_CNTL_G_BUL); -+ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) & (~GPIO_bit(IND_CNTL_G_BUL)); -+ -+ printk( KERN_DEBUG "LED GPIO Green Disable, Red Enable\n"); -+ } else if (gpio_red && !gpio_green ) -+ { -+ /*Red Disable, Green Enable*/ -+ set_GPIO(IND_CNTL_R_BUL); -+ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) | GPIO_bit(IND_CNTL_R_BUL); -+ -+ set_GPIO(IND_CNTL_G_BUL); -+ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) | GPIO_bit(IND_CNTL_G_BUL); -+ printk( KERN_DEBUG "LED GPIO Red Disable, Green Enable"); -+ }else -+ { -+ /*Red & Green enable*/ -+ clr_GPIO(IND_CNTL_R_BUL); -+ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) & (~GPIO_bit(IND_CNTL_R_BUL)); -+ -+ set_GPIO(IND_CNTL_G_BUL); -+ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) | GPIO_bit(IND_CNTL_G_BUL); -+ printk( KERN_DEBUG "LED GPIO Red & Green Enable\n"); -+ } -+ -+ /* Write PCAP LED Peripheral Control Register*/ -+ value = ( ledr_en | (ledg_en <<1) | (ledr_ctrl <<2) | (ledg_ctrl <<6) | -+ (ledr_i << 10) | (ledg_i <<12) | (skip <<14) ) & 0x7fff; -+ tempValue |= (value <<SSP_PCAP_LED_SHIFT); -+ -+ if ( ezx_pcap_write(SSP_PCAP_ADJ_PERIPH_REGISTER,tempValue) == SSP_PCAP_SUCCESS ) -+ { -+ printk( KERN_DEBUG "LED PCAP Write Success (0x%x :0x%x)\n",tempValue,value); -+ old_red = red; -+ old_green = green; -+ old_blue = blue; -+ return; -+ } else { -+ printk( KERN_DEBUG "LED PCAP Write Failed (State Change)\n"); -+ return; -+ } -+} -+ -+static void e680led_red_set(struct led_classdev *led_cdev, enum led_brightness value) -+{ -+ printk( KERN_DEBUG "e680led_red_set: %d\n", value ); -+ e680led_led_set( 1 && value, old_green, old_blue ); -+} -+ -+static void e680led_green_set(struct led_classdev *led_cdev, enum led_brightness value) -+{ -+ printk( KERN_DEBUG "e680led_green_set: %d\n", value ); -+ e680led_led_set( old_red, 1 && value, old_blue ); -+} -+ -+static void e680led_blue_set(struct led_classdev *led_cdev, enum led_brightness value) -+{ -+ printk( KERN_DEBUG "e680led_blue_set: %d\n", value ); -+ e680led_led_set( old_red, old_green, 1 && value ); -+} -+ -+static void e680led_keypad_set(struct led_classdev *led_cdev, enum led_brightness value) -+{ -+ /* this is not working yet, as there is something else missing */ -+#if 0 -+ printk( KERN_DEBUG "e680led_keypad_set: %d\n", value ); -+ -+ pxa_gpio_mode(GPIO_TC_MM_EN); -+ GPDR(GPIO_TC_MM_EN) |= GPIO_bit(GPIO_TC_MM_EN); -+ GPSR(GPIO_TC_MM_EN) = GPIO_bit(GPIO_TC_MM_EN); -+ -+ udelay( 100 ); -+ -+ if ( value ) { -+ GPCR(GPIO_TC_MM_EN) = GPIO_bit(GPIO_TC_MM_EN); -+ PGSR3 &= ~GPIO_bit(GPIO_TC_MM_EN); -+ } else { -+ GPSR(GPIO_TC_MM_EN) = GPIO_bit(GPIO_TC_MM_EN); -+ PGSR3 |= GPIO_bit(GPIO_TC_MM_EN); -+ } -+#endif -+} -+ -+static struct led_classdev e680_red_led = { -+ .name = "e680:red", -+ .default_trigger = "none", -+ .brightness_set = e680led_red_set, -+}; -+ -+static struct led_classdev e680_green_led = { -+ .name = "e680:green", -+ .default_trigger = "none", -+ .brightness_set = e680led_green_set, -+}; -+ -+static struct led_classdev e680_blue_led = { -+ .name = "e680:blue", -+ .default_trigger = "none", -+ .brightness_set = e680led_blue_set, -+}; -+ -+static struct led_classdev e680_keypad_led = { -+ .name = "e680:keypad", -+ .default_trigger = "none", -+ .brightness_set = e680led_keypad_set, -+}; -+ -+#ifdef CONFIG_PM -+static int e680led_suspend(struct platform_device *dev, pm_message_t state) -+{ -+ led_classdev_suspend(&e680_red_led); -+ led_classdev_suspend(&e680_green_led); -+ led_classdev_suspend(&e680_blue_led); -+ led_classdev_suspend(&e680_keypad_led); -+ return 0; -+} -+ -+static int e680led_resume(struct platform_device *dev) -+{ -+ led_classdev_resume(&e680_red_led); -+ led_classdev_resume(&e680_green_led); -+ led_classdev_resume(&e680_blue_led); -+ led_classdev_resume(&e680_keypad_led); -+ return 0; -+} -+#endif -+ -+static int e680led_probe(struct platform_device *pdev) -+{ -+ int ret; -+ -+ ret = led_classdev_register(&pdev->dev, &e680_red_led); -+ if (ret < 0) -+ return ret; -+ -+ ret = led_classdev_register(&pdev->dev, &e680_green_led); -+ if (ret < 0) -+ led_classdev_unregister(&e680_red_led); -+ -+ ret = led_classdev_register(&pdev->dev, &e680_blue_led); -+ if (ret < 0) { -+ led_classdev_unregister(&e680_red_led); -+ led_classdev_unregister(&e680_green_led); -+ } -+ -+ ret = led_classdev_register(&pdev->dev, &e680_keypad_led); -+ if (ret < 0) { -+ led_classdev_unregister(&e680_red_led); -+ led_classdev_unregister(&e680_green_led); -+ led_classdev_unregister(&e680_blue_led); -+ } -+ return ret; -+} -+ -+static int e680led_remove(struct platform_device *pdev) -+{ -+ led_classdev_unregister(&e680_red_led); -+ led_classdev_unregister(&e680_green_led); -+ led_classdev_unregister(&e680_blue_led); -+ led_classdev_unregister(&e680_keypad_led); -+ return 0; -+} -+ -+static struct platform_driver e680led_driver = { -+ .probe = e680led_probe, -+ .remove = e680led_remove, -+#ifdef CONFIG_PM -+ .suspend = e680led_suspend, -+ .resume = e680led_resume, -+#endif -+ .driver = { -+ .name = "e680-led", -+ }, -+}; -+ -+static int __init e680led_init(void) -+{ -+ return platform_driver_register(&e680led_driver); -+} -+ -+static void __exit e680led_exit(void) -+{ -+ e680led_led_set( 0, 0, 0 ); -+ platform_driver_unregister(&e680led_driver); -+} -+ -+module_init(e680led_init); -+module_exit(e680led_exit); -+ -+MODULE_AUTHOR("Michael Lauer <mickey@Vanille.de>"); -+MODULE_DESCRIPTION("Motorola E680 LED driver"); -+MODULE_LICENSE("GPL"); diff --git a/packages/linux/linux-ezx/ezx-backlight-r0.patch b/packages/linux/linux-ezx/ezx-backlight-r0.patch deleted file mode 100644 index db917300c2..0000000000 --- a/packages/linux/linux-ezx/ezx-backlight-r0.patch +++ /dev/null @@ -1,212 +0,0 @@ - -# -# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher -# - ---- linux-2.6.16/arch/arm/mach-pxa/ezx.c~ezx-backlight-r0.patch 2006-06-07 16:00:29.000000000 +0200 -+++ linux-2.6.16/arch/arm/mach-pxa/ezx.c 2006-06-07 16:21:09.000000000 +0200 -@@ -344,17 +344,12 @@ - .pxafb_lcd_power = &pxafb_lcd_power, - }; - -- --/* backlight for lcd */ -- --static struct resource ezx_backlight_resources[] = { --}; -- --static struct platform_device ezx_backlight_device = { -- .name = "ezx-lcd-backlight", -+/* -+ * EZX LCD Backlight -+ */ -+static struct platform_device ezxbacklight_device = { -+ .name = "ezx-bl", - .id = -1, -- .resource = ezx_backlight_resources, -- .num_resources = ARRAY_SIZE(ezx_backlight_resources), - }; - - #ifdef CONFIG_PXA_EZX_E680 -@@ -786,6 +781,7 @@ - - static struct platform_device *devices[] __initdata = { - &ezx_bp_device, -+ &ezxbacklight_device, - #ifdef CONFIG_PXA_EZX_E680 - &e680led_device, - #endif ---- linux-2.6.16/drivers/video/backlight/Kconfig~ezx-backlight-r0.patch 2006-06-07 16:00:28.000000000 +0200 -+++ linux-2.6.16/drivers/video/backlight/Kconfig 2006-06-07 16:00:30.000000000 +0200 -@@ -58,3 +58,12 @@ - If you have a HP Jornada 680, say y to enable the - backlight driver. - -+config BACKLIGHT_EZX -+ tristate "Motorola EXZ Backlight Driver (A780/E680/E680i)" -+ depends on BACKLIGHT_DEVICE && PXA_EZX -+ default y -+ help -+ If you have a Motorola A780 or E680(i), say y to enable the -+ backlight driver. -+ -+ ---- linux-2.6.16/drivers/video/backlight/Makefile~ezx-backlight-r0.patch 2006-03-20 06:53:29.000000000 +0100 -+++ linux-2.6.16/drivers/video/backlight/Makefile 2006-06-07 16:00:30.000000000 +0200 -@@ -5,3 +5,5 @@ - obj-$(CONFIG_BACKLIGHT_CORGI) += corgi_bl.o - obj-$(CONFIG_BACKLIGHT_HP680) += hp680_bl.o - obj-$(CONFIG_SHARP_LOCOMO) += locomolcd.o -+obj-$(CONFIG_BACKLIGHT_EZX) += ezx_bl.o -+ ---- /dev/null 2006-06-07 15:54:31.503752232 +0200 -+++ linux-2.6.16/drivers/video/backlight/ezx_bl.c 2006-06-07 16:51:14.000000000 +0200 -@@ -0,0 +1,148 @@ -+/* -+ * Backlight Driver for Motorola A780 and E680(i) GSM Phones. -+ * -+ * Copyright 2006 Vanille Media -+ * -+ * Author: Michael Lauer <mickey@Vanille.de> -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 as -+ * published by the Free Software Foundation. -+ * -+ */ -+ -+#include <linux/module.h> -+#include <linux/kernel.h> -+#include <linux/init.h> -+#include <linux/platform_device.h> -+#include <linux/spinlock.h> -+#include <linux/fb.h> -+#include <linux/backlight.h> -+ -+#include <asm/arch/pxa-regs.h> -+#include <asm/arch/ezx.h> -+ -+#define EZX_MAX_INTENSITY 50 -+#define EZX_DEFAULT_INTENSITY 25 -+ -+static spinlock_t bl_lock = SPIN_LOCK_UNLOCKED; -+static struct backlight_properties ezxbl_data; -+static struct backlight_device *ezx_backlight_device; -+static int current_intensity; -+ -+static int ezx_send_intensity(struct backlight_device *bd) -+{ -+ unsigned long flags; -+ int intensity = bd->props->brightness; -+ -+ printk( KERN_DEBUG "ezx_set_intensity to %d", intensity ); -+ -+ if (bd->props->power != FB_BLANK_UNBLANK) -+ intensity = 0; -+ if (bd->props->fb_blank != FB_BLANK_UNBLANK) -+ intensity = 0; -+ -+ spin_lock_irqsave(&bl_lock, flags); -+ -+ PWM_CTRL0 = 2; /* pre-scaler */ -+ PWM_PWDUTY0 = intensity; /* duty cycle */ -+ PWM_PERVAL0 = 49; /* period */ -+ -+ if (intensity) { -+ //pxa_set_cken(CKEN0_PWM0, 1); -+ //FIXME: Set PWM0 GPIO as output -+ } else { -+ //pxa_set_cken(CKEN0_PWM0, 0); -+ //FIXME: Set PWM0 GPIO as input -+ } -+ -+ spin_unlock_irqrestore(&bl_lock, flags); -+ current_intensity = intensity; -+ return 0; -+} -+ -+static int ezx_get_intensity(struct backlight_device *bd) -+{ -+ return current_intensity; -+} -+ -+static int ezx_set_intensity(struct backlight_device *bd) -+{ -+ return ezx_send_intensity(ezx_backlight_device); -+} -+ -+#ifdef CONFIG_PM -+static int ezx_bl_suspend(struct platform_device *pdev, pm_message_t state) -+{ -+ //set suspend flag -+ ezx_set_intensity(ezx_backlight_device); -+ return 0; -+} -+ -+static int ezx_bl_resume(struct platform_device *pdev) -+{ -+ // set resume flag -+ ezx_set_intensity(ezx_backlight_device); -+ return 0; -+} -+#else -+#define ezx_bl_suspend NULL -+#define ezx_bl_resume NULL -+#endif -+ -+static struct backlight_properties ezx_bl_data = { -+ .owner = THIS_MODULE, -+ .get_brightness = ezx_get_intensity, -+ .max_brightness = EZX_MAX_INTENSITY, -+ .update_status = ezx_set_intensity, -+}; -+ -+static int __init ezx_bl_probe(struct platform_device *pdev) -+{ -+ ezx_backlight_device = backlight_device_register ("ezx-bl", -+ NULL, &ezx_bl_data); -+ if (IS_ERR (ezx_backlight_device)) -+ return PTR_ERR (ezx_backlight_device); -+ -+ //ezx_bl_data.requested_brightness = EZX_DEFAULT_INTENSITY; -+ //ezx_bl_data.requested_power = FB_BLANK_UNBLANK; -+ //ezx_set_intensity(ezx_backlight_device, ezx_bl_data.requested_brightness); -+ -+ printk("EZX Backlight Driver Initialized.\n"); -+ return 0; -+} -+ -+static int ezx_bl_remove(struct platform_device *pdev) -+{ -+ backlight_device_unregister(ezx_backlight_device); -+ -+ printk("EZX Backlight Driver Unloaded.\n"); -+ return 0; -+} -+ -+static struct platform_driver ezx_bl_driver = { -+ .probe = ezx_bl_probe, -+ .remove = ezx_bl_remove, -+ .suspend = ezx_bl_suspend, -+ .resume = ezx_bl_resume, -+ .driver = { -+ .name = "ezx-bl", -+ }, -+}; -+ -+static int __init ezx_bl_init(void) -+{ -+ return platform_driver_register(&ezx_bl_driver); -+} -+ -+static void __exit ezx_bl_exit(void) -+{ -+ platform_driver_unregister(&ezx_bl_driver); -+} -+ -+module_init(ezx_bl_init); -+module_exit(ezx_bl_exit); -+ -+MODULE_AUTHOR("Michael Lauer <mickey@Vanille.de>"); -+MODULE_DESCRIPTION("Backlight Driver for Motorola A780|E680(i)"); -+MODULE_LICENSE("GPL"); diff --git a/packages/linux/linux-ezx/ezx-backlight-r1.patch b/packages/linux/linux-ezx/ezx-backlight-r1.patch deleted file mode 100644 index a277f19344..0000000000 --- a/packages/linux/linux-ezx/ezx-backlight-r1.patch +++ /dev/null @@ -1,277 +0,0 @@ - -# -# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher -# - ---- linux-2.6.16/arch/arm/mach-pxa/ezx.c~ezx-backlight-r1.patch 2006-06-08 19:33:36.000000000 +0200 -+++ linux-2.6.16/arch/arm/mach-pxa/ezx.c 2006-06-08 19:33:37.000000000 +0200 -@@ -274,34 +274,9 @@ - .udc_command = ezx_udc_command, - }; - --/* pxafb */ -- --#define BKLIGHT_PRESCALE 2 --#define BKLIGHT_PERIOD 49 --#define DEFAULT_DUTYCYCLE 25 --#define MAX_DUTYCYCLE (BKLIGHT_PERIOD+1) --#define MIN_DUTYCYCLE 0 -- --static void pxafb_backlight_power(int on) --{ -- if (on) { -- CKEN |= CKEN0_PWM0; -- PWM_CTRL0 = BKLIGHT_PRESCALE; -- PWM_PERVAL0 = BKLIGHT_PERIOD; -- PWM_PWDUTY0 = DEFAULT_DUTYCYCLE; -- -- GPDR0 |= 0x00010000; //PWM0 is GPIO16 -- pxa_gpio_mode(GPIO16_PWM0_MD); -- } else { -- PWM_PWDUTY0 = 0; -- GAFR0_U &= 0xfffffffc; -- GPDR0 &= 0xfffeffff; /* set gpio16 (pwm0) as input */ -- CKEN &= ~CKEN0_PWM0; -- PWM_PWDUTY0 = MIN_DUTYCYCLE; -- } --} -- --//#define mdelay(x) udelay((x)*1000) -+/* -+ * EZX PXA Framebuffer -+ */ - - static void pxafb_lcd_power(int on) - { -@@ -326,35 +301,24 @@ - .xres = 240, - .yres = 320, - .bpp = 16, -- - .hsync_len = 10, - .left_margin = 20, - .right_margin = 10, -- - .vsync_len = 2, - .upper_margin = 3, - .lower_margin = 2, -- - .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, -- - .lccr0 = 0x002008F8, - .lccr3 = 0x0430FF09, -- -- .pxafb_backlight_power = &pxafb_backlight_power, -- .pxafb_lcd_power = &pxafb_lcd_power, --}; -- -- --/* backlight for lcd */ -- --static struct resource ezx_backlight_resources[] = { -+ .pxafb_lcd_power= &pxafb_lcd_power, - }; - --static struct platform_device ezx_backlight_device = { -- .name = "ezx-lcd-backlight", -+/* -+ * EZX LCD Backlight -+ */ -+static struct platform_device ezxbacklight_device = { -+ .name = "ezx-bl", - .id = -1, -- .resource = ezx_backlight_resources, -- .num_resources = ARRAY_SIZE(ezx_backlight_resources), - }; - - #ifdef CONFIG_PXA_EZX_E680 -@@ -786,6 +750,7 @@ - - static struct platform_device *devices[] __initdata = { - &ezx_bp_device, -+ &ezxbacklight_device, - #ifdef CONFIG_PXA_EZX_E680 - &e680led_device, - #endif ---- linux-2.6.16/drivers/video/backlight/Kconfig~ezx-backlight-r1.patch 2006-06-08 19:33:34.000000000 +0200 -+++ linux-2.6.16/drivers/video/backlight/Kconfig 2006-06-08 19:33:37.000000000 +0200 -@@ -58,3 +58,12 @@ - If you have a HP Jornada 680, say y to enable the - backlight driver. - -+config BACKLIGHT_EZX -+ tristate "Motorola EXZ Backlight Driver (A780/E680/E680i)" -+ depends on BACKLIGHT_DEVICE && PXA_EZX -+ default y -+ help -+ If you have a Motorola A780 or E680(i), say y to enable the -+ backlight driver. -+ -+ ---- linux-2.6.16/drivers/video/backlight/Makefile~ezx-backlight-r1.patch 2006-03-20 06:53:29.000000000 +0100 -+++ linux-2.6.16/drivers/video/backlight/Makefile 2006-06-08 19:33:37.000000000 +0200 -@@ -5,3 +5,5 @@ - obj-$(CONFIG_BACKLIGHT_CORGI) += corgi_bl.o - obj-$(CONFIG_BACKLIGHT_HP680) += hp680_bl.o - obj-$(CONFIG_SHARP_LOCOMO) += locomolcd.o -+obj-$(CONFIG_BACKLIGHT_EZX) += ezx_bl.o -+ ---- /dev/null 2006-06-08 19:04:31.354926880 +0200 -+++ linux-2.6.16/drivers/video/backlight/ezx_bl.c 2006-06-08 20:52:33.000000000 +0200 -@@ -0,0 +1,156 @@ -+/* -+ * Backlight Driver for Motorola A780 and E680(i) GSM Phones. -+ * -+ * Copyright 2006 Vanille Media -+ * -+ * Author: Michael Lauer <mickey@Vanille.de> -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 as -+ * published by the Free Software Foundation. -+ * -+ */ -+ -+#include <linux/module.h> -+#include <linux/kernel.h> -+#include <linux/init.h> -+#include <linux/platform_device.h> -+#include <linux/spinlock.h> -+#include <linux/fb.h> -+#include <linux/backlight.h> -+ -+#include <asm/arch/pxa-regs.h> -+#include <asm/arch/ezx.h> -+ -+#define EZX_MIN_INTENSITY 00 -+#define EZX_MAX_INTENSITY 50 -+#define EZX_DEFAULT_INTENSITY 25 -+ -+static spinlock_t bl_lock = SPIN_LOCK_UNLOCKED; -+static struct backlight_device *ezx_backlight_device; -+static int last_intensity; -+ -+static int ezxbl_send_intensity(struct backlight_device *bd) -+{ -+ unsigned long flags; -+ int intensity = bd->props->brightness; -+ -+ printk( KERN_DEBUG "ezx_set_intensity to %d\n", intensity ); -+ -+ if (bd->props->power != FB_BLANK_UNBLANK) -+ intensity = 0; -+ if (bd->props->fb_blank != FB_BLANK_UNBLANK) -+ intensity = 0; -+ -+ spin_lock_irqsave(&bl_lock, flags); -+ -+ printk( KERN_DEBUG "backlight last intensity was %d, new intensity is %d\n", last_intensity, intensity ); -+ -+ if ( !last_intensity && intensity ) { -+ printk( KERN_DEBUG "backlight power ON\n" ); -+ PWM_CTRL0 = 2; /* pre-scaler */ -+ PWM_PWDUTY0 = intensity; /* duty cycle */ -+ PWM_PERVAL0 = 49; /* period */ -+ pxa_gpio_mode(GPIO16_PWM0_MD); /* set GPIO16 as alternate function + output */ -+ pxa_set_cken(CKEN0_PWM0, 1); /* clock enable */ -+ } -+ else if ( last_intensity && !intensity ) { -+ printk( KERN_DEBUG "backlight power OFF\n" ); -+ PWM_PWDUTY0 = 0; -+ GAFR0_U &= 0xFFFFFFFC; /* ??? */ -+ pxa_set_cken(CKEN0_PWM0, 0); /* clock disable */ -+ pxa_gpio_mode(GPIO16_PWM0); /* set GPIO16 as input */ -+ } else if ( last_intensity && intensity ) { -+ printk( KERN_DEBUG "backlight adjusting duty cycle\n" ); -+ PWM_PWDUTY0 = intensity; /* duty cycle */ -+ } -+ spin_unlock_irqrestore(&bl_lock, flags); -+ last_intensity = intensity; -+ return 0; -+} -+ -+static int ezxbl_get_intensity(struct backlight_device *bd) -+{ -+ return last_intensity; -+} -+ -+static int ezxbl_set_intensity(struct backlight_device *bd) -+{ -+ return ezxbl_send_intensity(ezx_backlight_device); -+} -+ -+#ifdef CONFIG_PM -+static int ezxbl_suspend(struct platform_device *pdev, pm_message_t state) -+{ -+ //set suspend flag -+ ezxbl_set_intensity(ezx_backlight_device); -+ return 0; -+} -+ -+static int ezxbl_resume(struct platform_device *pdev) -+{ -+ // set resume flag -+ ezxbl_set_intensity(ezx_backlight_device); -+ return 0; -+} -+#else -+#define ezxbl_suspend NULL -+#define ezxbl_resume NULL -+#endif -+ -+static struct backlight_properties ezxbl_data = { -+ .owner = THIS_MODULE, -+ .get_brightness = ezxbl_get_intensity, -+ .max_brightness = EZX_MAX_INTENSITY, -+ .update_status = ezxbl_set_intensity, -+}; -+ -+static int __init ezxbl_probe(struct platform_device *pdev) -+{ -+ ezx_backlight_device = backlight_device_register ("ezx-bl", -+ NULL, &ezxbl_data); -+ if (IS_ERR (ezx_backlight_device)) -+ return PTR_ERR (ezx_backlight_device); -+ -+ ezxbl_data.power = FB_BLANK_UNBLANK; -+ ezxbl_data.brightness = EZX_DEFAULT_INTENSITY; -+ ezxbl_set_intensity(ezx_backlight_device); -+ -+ printk("EZX Backlight Driver Initialized.\n"); -+ return 0; -+} -+ -+static int ezxbl_remove(struct platform_device *pdev) -+{ -+ backlight_device_unregister(ezx_backlight_device); -+ -+ printk("EZX Backlight Driver Unloaded.\n"); -+ return 0; -+} -+ -+static struct platform_driver ezxbl_driver = { -+ .probe = ezxbl_probe, -+ .remove = ezxbl_remove, -+ .suspend = ezxbl_suspend, -+ .resume = ezxbl_resume, -+ .driver = { -+ .name = "ezx-bl", -+ }, -+}; -+ -+static int __init ezxbl_init(void) -+{ -+ return platform_driver_register(&ezxbl_driver); -+} -+ -+static void __exit ezxbl_exit(void) -+{ -+ platform_driver_unregister(&ezxbl_driver); -+} -+ -+module_init(ezxbl_init); -+module_exit(ezxbl_exit); -+ -+MODULE_AUTHOR("Michael Lauer <mickey@Vanille.de>"); -+MODULE_DESCRIPTION("Backlight Driver for Motorola A780|E680(i)"); -+MODULE_LICENSE("GPL"); diff --git a/packages/linux/linux-ezx/pxakbd-fix-directkeys.patch b/packages/linux/linux-ezx/pxakbd-fix-directkeys.patch deleted file mode 100644 index 1dedb981bd..0000000000 --- a/packages/linux/linux-ezx/pxakbd-fix-directkeys.patch +++ /dev/null @@ -1,83 +0,0 @@ - -# -# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher -# - ---- linux-2.6.16/drivers/input/keyboard/pxakbd.c~pxakbd-fix-directkeys.patch 2006-06-11 00:47:25.000000000 +0200 -+++ linux-2.6.16/drivers/input/keyboard/pxakbd.c 2006-06-12 16:10:03.000000000 +0200 -@@ -20,7 +20,7 @@ - #include <asm/arch/irqs.h> - #include <asm/arch/pxa-regs.h> - --#if 0 -+#if 1 - #define DEBUGP(x, args ...) printk(x, ## args) - #else - #define DEBUGP(x, args ...) -@@ -44,8 +44,7 @@ - unsigned int i; - int num_pressed = 0; - -- kpdk = KPDK & 0x0000000f; -- -+ kpdk = KPDK & 0x000000ff; - for (i = 0; i < pxakbd->pd->direct.num; i++) { - int pressed = 0; - -@@ -54,11 +53,12 @@ - num_pressed++; - DEBUGP("pxakbd: pressed: direct %u\n", i); - } -- -- input_report_key(pxakbd->input, pxakbd->pd->direct.keycode[i], -- pressed); -+ if (pxakbd->pd->direct.keycode[i] != KEY_RESERVED) { -+ DEBUGP( "pxakbd: sending to input layer: keycode = %d, pressed = %d\n", pxakbd->pd->direct.keycode[i], pressed ); -+ input_report_key(pxakbd->input, pxakbd->pd->direct.keycode[i], -+ pressed); -+ } - } -- - return num_pressed; - } - -@@ -248,16 +248,6 @@ - set_bit(pxakbd->pd->matrix.keycode[i], input_dev->keybit); - clear_bit(0, input_dev->keybit); - --#if 0 -- input_dev2->evbit[0] = ; -- input_dev2->keycode = pxakbd->pd->direct.keycode; -- input_dev2->keycodesize = sizeof(unsigned char); -- input_dev2->keycodemax = pxakbd->pd->direct.num; -- -- for (i = 0; i < input_dev2->keycodemax; i++) -- set_bit(ezxkbd->keycode[i], input_dev2->keybit); --#endif -- - if (request_irq(pxakbd->irq, pxakbd_interrupt, 0, "pxakbd", pxakbd)) { - printk(KERN_ERR "pxakbd: can't request irq %d\n", pxakbd->irq); - ret = -EBUSY; -@@ -279,6 +269,7 @@ - KPC_ME | KPC_DE | /* matrix and direct keypad enabled */ - ((pxakbd->pd->matrix.cols-1)<<23) | /* columns */ - ((pxakbd->pd->matrix.rows-1)<<26) | /* rows */ -+ ((pxakbd->pd->direct.num-1)<<6) | /* direct keys */ - KPC_MS_ALL); /* scan all columns */ - - pxa_set_cken(CKEN19_KEYPAD, 1); -@@ -375,13 +366,11 @@ - static int pxakbd_remove(struct platform_device *pdev) - { - struct pxakbd *pxakbd = platform_get_drvdata(pdev); -- -+ input_unregister_device(pxakbd->input); - platform_set_drvdata(pdev, NULL); - release_resource(pxakbd->res); - free_irq(pxakbd->irq, pxakbd); -- input_unregister_device(pxakbd->input); - kfree(pxakbd); -- - return 0; - } - diff --git a/packages/linux/linux-ezx/touchscreen-fix-r0.patch b/packages/linux/linux-ezx/touchscreen-fix-r0.patch deleted file mode 100644 index 7d19a887fc..0000000000 --- a/packages/linux/linux-ezx/touchscreen-fix-r0.patch +++ /dev/null @@ -1,19 +0,0 @@ - -# -# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher -# - ---- linux-2.6.16/drivers/input/touchscreen/pcap_ts.c~touchscreen-fix-r0 2006-05-30 23:18:22.000000000 +0200 -+++ linux-2.6.16/drivers/input/touchscreen/pcap_ts.c 2006-05-30 23:29:34.000000000 +0200 -@@ -126,10 +126,7 @@ - if (ret < 0) - return ret; - -- if (tmp & 0x00400000) -- return -EIO; -- -- if (pcap_ts->read_state == COORDINATE) { -+ if (pcap_ts->read_state == COORDINATE && !(tmp & 0x00400000)) { - pcap_ts->x = (tmp & SSP_PCAP_ADD1_VALUE_MASK); - pcap_ts->y = (tmp & SSP_PCAP_ADD2_VALUE_MASK) - >>SSP_PCAP_ADD2_VALUE_SHIFT; |