>From ff7b09789b14685fa8e0849f2bc048be5b16bd39 Mon Sep 17 00:00:00 2001
From: Jekyll Lai <[email protected]>
Date: Sat, 1 Jan 2011 18:27:48 +0800
Subject: [PATCH 1/3] mid_keypad: setting multi-function-pin
 In some kboot version, there was no correct alternative pin setting
that caused no interrupt trigger from keypad controller. An additional
pin configuration can solve this defect.

 Against the bug http://bugs.meego.com/show_bug.cgi?id=10961

Signed-off-by: Jekyll Lai <[email protected]>
---
 drivers/input/keyboard/intel_mid_keypad.c |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/drivers/input/keyboard/intel_mid_keypad.c
b/drivers/input/keyboard/intel_mid_keypad.c
index b41d50f..7e9b04a
--- a/drivers/input/keyboard/intel_mid_keypad.c
+++ b/drivers/input/keyboard/intel_mid_keypad.c
@@ -531,12 +531,32 @@ static irqreturn_t mrst_keypad_irq_handler(int
irq, void *dev_id)
        return IRQ_HANDLED;
 }
 
+#define LANGWELL_GAFR 0xFF12C038
+
+/* setting multi-function-pin */
+static void mrst_keypad_set_alt_func(void)
+{
+       u32 __iomem *mem = ioremap_nocache(LANGWELL_GAFR, 16);
+       u32 value;
+       if (!mem) {
+               pr_err("can not map GPIO controller address.\n");
+               return;
+       }
+       value = (readl(mem + 1) & 0x0000ffff) | 0x55550000;
+       writel(value, mem + 1);
+       value = (readl(mem + 2) & 0xff000000) | 0x00555555;
+       writel(value, mem + 2);
+       iounmap(mem);
+}
+
 static int mrst_keypad_gpio_init(void)
 {
        int i, err, cnt = 0;
        int pins = KEYPAD_MATRIX_GPIO_IN_PIN + MAX_MATRIX_KEY_ROWS +
            MAX_MATRIX_KEY_COLS + MAX_DIRECT_KEY_NUM;
 
+       mrst_keypad_set_alt_func();
+
        /* explicitely tell which pins have been occupied... */
        for (i = KEYPAD_MATRIX_GPIO_IN_PIN; i < pins; i++, cnt++) {
                err = gpio_request(i, NULL);
-- 
1.7.0.4

_______________________________________________
MeeGo-kernel mailing list
[email protected]
http://lists.meego.com/listinfo/meego-kernel

Reply via email to