diff options
Diffstat (limited to 'packages/linux/linux-ezx')
-rw-r--r-- | packages/linux/linux-ezx/defconfig-a780 | 4 | ||||
-rw-r--r-- | packages/linux/linux-ezx/defconfig-e680 | 4 | ||||
-rw-r--r-- | packages/linux/linux-ezx/e680-fix-keypad.patch | 150 | ||||
-rw-r--r-- | packages/linux/linux-ezx/e680-keypad-compile-HACK.patch | 42 | ||||
-rw-r--r-- | packages/linux/linux-ezx/ezx-backlight-r1.patch | 277 | ||||
-rw-r--r-- | packages/linux/linux-ezx/pxakbd-fix-directkeys.patch | 15 |
6 files changed, 446 insertions, 46 deletions
diff --git a/packages/linux/linux-ezx/defconfig-a780 b/packages/linux/linux-ezx/defconfig-a780 index 550ba4a786..f61784f96a 100644 --- a/packages/linux/linux-ezx/defconfig-a780 +++ b/packages/linux/linux-ezx/defconfig-a780 @@ -857,7 +857,7 @@ CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y CONFIG_LEDS_TRIGGERS=y # CONFIG_LEDS_E680 is not set -CONFIG_LEDS_A780=m +CONFIG_LEDS_A780=y CONFIG_LEDS_TRIGGER_TIMER=y # @@ -914,7 +914,7 @@ CONFIG_LOGO_LINUX_CLUT224=y CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_BACKLIGHT_DEVICE=y -CONFIG_BACKLIGHT_EZX=m +CONFIG_BACKLIGHT_EZX=y CONFIG_LCD_CLASS_DEVICE=m CONFIG_LCD_DEVICE=y diff --git a/packages/linux/linux-ezx/defconfig-e680 b/packages/linux/linux-ezx/defconfig-e680 index 97d1602f20..52bf0d75f6 100644 --- a/packages/linux/linux-ezx/defconfig-e680 +++ b/packages/linux/linux-ezx/defconfig-e680 @@ -856,7 +856,7 @@ CONFIG_SPI_BITBANG=m CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y CONFIG_LEDS_TRIGGERS=y -CONFIG_LEDS_E680=m +CONFIG_LEDS_E680=y # CONFIG_LEDS_A780 is not set CONFIG_LEDS_TRIGGER_TIMER=y @@ -914,7 +914,7 @@ CONFIG_LOGO_LINUX_CLUT224=y CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_BACKLIGHT_DEVICE=y -CONFIG_BACKLIGHT_EZX=m +CONFIG_BACKLIGHT_EZX=y CONFIG_LCD_CLASS_DEVICE=m CONFIG_LCD_DEVICE=y diff --git a/packages/linux/linux-ezx/e680-fix-keypad.patch b/packages/linux/linux-ezx/e680-fix-keypad.patch new file mode 100644 index 0000000000..b40283f332 --- /dev/null +++ b/packages/linux/linux-ezx/e680-fix-keypad.patch @@ -0,0 +1,150 @@ + +# +# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher +# + +--- linux-2.6.16/arch/arm/mach-pxa/ezx.c~e680-fix-keypad 2006-06-09 01:55:06.000000000 +0200 ++++ linux-2.6.16/arch/arm/mach-pxa/ezx.c 2006-06-09 03:09:26.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, 0, KEY_PHONE, ++ /* row 1 */ ++ KEY_DOWN, KEY_LEFT, KEY_VOLUMEUP, KEY_VOLUMEDOWN, ++ /* row 2 */ ++ 0, 0, 0, KEY_KPENTER, + }; + static unsigned char ezx_direct_keycode[] = { + KEY_CAMERA, +- KEYPAD_NONE, +- KEYPAD_NONE, +- KEYPAD_A, ++ 0, ++ 0, ++ 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,9 +430,7 @@ + }, + .direct = { + .keycode = &ezx_direct_keycode, +-#if defined(CONFIG_PXA_EZX_E680_P4A) +- .num = 4, +-#elif defined(CONFIG_PXA_EZX_E680) ++#if defined(CONFIG_PXA_EZX_E680) + .num = 5, + #elif defined(CONFIG_PXA_EZX_A780) + .num = 1, diff --git a/packages/linux/linux-ezx/e680-keypad-compile-HACK.patch b/packages/linux/linux-ezx/e680-keypad-compile-HACK.patch deleted file mode 100644 index 47d07db695..0000000000 --- a/packages/linux/linux-ezx/e680-keypad-compile-HACK.patch +++ /dev/null @@ -1,42 +0,0 @@ - -# -# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher -# - ---- linux-2.6.16/arch/arm/mach-pxa/ezx.c~e680-keypad-compile-fix.patch 2006-05-31 18:47:58.000000000 +0200 -+++ linux-2.6.16/arch/arm/mach-pxa/ezx.c 2006-05-31 18:51:57.000000000 +0200 -@@ -404,24 +404,20 @@ - KEYPAD_NONE, - }; - #elif defined(CONFIG_PXA_EZX_E680) --#error "kbd matrix still needs to be converted to new row/col layout" - 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_KPENTER, KEY_MENU, KEY_CANCEL, KEY_PAGEUP, KEY_UP, -+ /* row 1 */ -+ KEY_KP1, KEY_KP2, KEY_KP3, KEY_ENTER, KEY_KPENTER, /*center joypad */ -+ /* row 2 */ -+ KEY_KP4, KEY_KP5, KEY_KP6, KEY_PAGEDOWN, KEY_PHONE, -+ /* row 3 */ -+ KEY_KP7, KEY_KP8, KEY_KP9, KEY_PHONE, KEY_LEFT, -+ /* row 4 */ -+ KEY_KPASTERISK, KEY_KP0, KEY_KPDOT, KEY_PAGEDOWN, KEY_DOWN, - }; - static unsigned char ezx_direct_keycode[] = { - KEY_CAMERA, -- KEYPAD_NONE, -- KEYPAD_NONE, -- KEYPAD_A, -- KEY_POWER, -- KEYPAD_B, - }; - #elif defined(CONFIG_PXA_EZX_A780) - static unsigned char ezx_keycode[] = { diff --git a/packages/linux/linux-ezx/ezx-backlight-r1.patch b/packages/linux/linux-ezx/ezx-backlight-r1.patch new file mode 100644 index 0000000000..a277f19344 --- /dev/null +++ b/packages/linux/linux-ezx/ezx-backlight-r1.patch @@ -0,0 +1,277 @@ + +# +# 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 new file mode 100644 index 0000000000..e1d0d7c26e --- /dev/null +++ b/packages/linux/linux-ezx/pxakbd-fix-directkeys.patch @@ -0,0 +1,15 @@ + +# +# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher +# + +--- linux-2.6.16/drivers/input/keyboard/pxakbd.c~pxakbd-fix-directkeys 2006-06-09 03:16:35.000000000 +0200 ++++ linux-2.6.16/drivers/input/keyboard/pxakbd.c 2006-06-09 03:21:04.000000000 +0200 +@@ -279,6 +279,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); |