modified jogball driver for it50
authorswj <swj@rock-chips.com>
Mon, 13 Sep 2010 02:45:30 +0000 (19:45 -0700)
committerswj <swj@rock-chips.com>
Mon, 13 Sep 2010 02:45:30 +0000 (19:45 -0700)
drivers/input/jogball/rk2818_jogball.c [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index 8160960..9087d80
@@ -37,7 +37,7 @@ static android_early_suspend_t jogball_early_suspend;
 #endif\r
 \r
 /* Debug */\r
-//#define JB_DEBUG 1\r
+#define JB_DEBUG 0\r
 \r
 #ifdef JB_DEBUG\r
 #define DBG    printk\r
@@ -52,12 +52,12 @@ static android_early_suspend_t jogball_early_suspend;
 \r
 #define JOGBALL_PHYS_NAME      "rk28_jogball/input0"\r
 \r
-#define JOGBALL_KEY_UP_IO       TCA6424_P06\r
-#define JOGBALL_KEY_DOWN_IO     TCA6424_P07\r
+#define JOGBALL_KEY_UP_IO       TCA6424_P11\r
+#define JOGBALL_KEY_DOWN_IO     TCA6424_P06\r
 #define JOGBALL_KEY_LEFT_IO     TCA6424_P10\r
-#define JOGBALL_KEY_RIGHT_IO    TCA6424_P11\r
+#define JOGBALL_KEY_RIGHT_IO    TCA6424_P07\r
 \r
-#define JOGBALL_MAX_CNT 2\r
+#define JOGBALL_MAX_CNT 1\r
 \r
 static volatile int jogball_cnt_up = 0;\r
 static volatile int jogball_cnt_down = 0;\r
@@ -78,11 +78,10 @@ struct rk28_jogball
 \r
 struct rk28_jogball *prockjogball;\r
 \r
-//static void rk28_jogball_up_ISR(void)\r
 \r
 static int rk28_jogball_disable_irq(void )\r
 {\r
-       //DBG("IN jogball suspend !!\n");\r
+\r
        disable_irq_nosync (gpio_to_irq(JOGBALL_KEY_UP_IO));\r
        disable_irq_nosync (gpio_to_irq(JOGBALL_KEY_DOWN_IO));\r
        disable_irq_nosync (gpio_to_irq(JOGBALL_KEY_LEFT_IO));\r
@@ -93,7 +92,7 @@ static int rk28_jogball_disable_irq(void )
 \r
 static int rk28_jogball_enable_irq(void)\r
 {\r
-       //DBG("IN jogball resume !!\n");\r
+\r
        enable_irq (gpio_to_irq(JOGBALL_KEY_UP_IO));\r
        enable_irq (gpio_to_irq(JOGBALL_KEY_DOWN_IO));\r
        enable_irq (gpio_to_irq(JOGBALL_KEY_LEFT_IO));\r
@@ -105,10 +104,11 @@ static irqreturn_t rk28_jogball_up_ISR(int irq, void *dev_id)
 {      \r
        \r
         rk28_jogball_disable_irq( );\r
+        DBG("jogball: up begain\n");\r
        jogball_cnt_up++;\r
 \r
-       if (jogball_cnt_up > JOGBALL_MAX_CNT){\r
-               //printk("jogball: up\n");\r
+       if (jogball_cnt_up >= JOGBALL_MAX_CNT){\r
+               DBG("jogball: up\n");\r
                \r
                input_report_key(prockjogball->input_dev, JB_KEY_UP, 1);\r
                input_sync(prockjogball->input_dev);\r
@@ -119,23 +119,22 @@ static irqreturn_t rk28_jogball_up_ISR(int irq, void *dev_id)
                jogball_cnt_down = 0;\r
                jogball_cnt_left = 0;\r
                jogball_cnt_right = 0;\r
-       }\r
-       \r
-       //gpio_irq_enable(JOGBALL_KEY_UP_IO);\r
-       //enable_irq (gpio_to_irq(JOGBALL_KEY_UP_IO));\r
+       }       \r
+\r
         rk28_jogball_enable_irq( );\r
+        printk("jogball: up end\n");\r
        return IRQ_HANDLED;\r
 }\r
 \r
-//static void rk28_jogball_down_ISR(void)\r
+\r
 static irqreturn_t rk28_jogball_down_ISR(int irq, void *dev_id)\r
 {\r
         rk28_jogball_disable_irq( );\r
-        //disable_irq_nosync (gpio_to_irq(JOGBALL_KEY_DOWN_IO));\r
+\r
        jogball_cnt_down++;\r
-       \r
-       if (jogball_cnt_down > JOGBALL_MAX_CNT){\r
-               //printk("jogball: down\n");\r
+       DBG("jogball: down start \n");\r
+       if (jogball_cnt_down >= JOGBALL_MAX_CNT){\r
+               DBG("jogball: down\n");\r
                \r
                input_report_key(prockjogball->input_dev, JB_KEY_DOWN, 1);\r
                input_sync(prockjogball->input_dev);\r
@@ -146,23 +145,21 @@ static irqreturn_t rk28_jogball_down_ISR(int irq, void *dev_id)
                jogball_cnt_down = 0;\r
                jogball_cnt_left = 0;\r
                jogball_cnt_right = 0;\r
-       }\r
-       \r
-       //gpio_irq_enable(JOGBALL_KEY_DOWN_IO);\r
-       //enable_irq (gpio_to_irq(JOGBALL_KEY_DOWN_IO));\r
+       }       \r
+       DBG("jogball: down end\n");\r
         rk28_jogball_enable_irq( );\r
        return IRQ_HANDLED;\r
 }\r
 \r
-//static void rk28_jogball_left_ISR(void)\r
+\r
 static irqreturn_t rk28_jogball_left_ISR(int irq, void *dev_id)\r
 {\r
         rk28_jogball_disable_irq( );\r
-       //disable_irq_nosync (gpio_to_irq(JOGBALL_KEY_LEFT_IO));\r
+       DBG("jogball: left begain\n");\r
        jogball_cnt_left++;\r
-\r
-       if (jogball_cnt_left > JOGBALL_MAX_CNT){\r
-               //printk("jogball: left\n");\r
+       \r
+       if (jogball_cnt_left >= JOGBALL_MAX_CNT){\r
+               DBG("jogball: left\n");\r
                \r
                input_report_key(prockjogball->input_dev, JB_KEY_LEFT, 1);\r
                input_sync(prockjogball->input_dev);\r
@@ -173,23 +170,20 @@ static irqreturn_t rk28_jogball_left_ISR(int irq, void *dev_id)
                jogball_cnt_down = 0;\r
                jogball_cnt_left = 0;\r
                jogball_cnt_right = 0;\r
-       }\r
-       \r
-       //gpio_irq_enable(JOGBALL_KEY_LEFT_IO);\r
-       //enable_irq (gpio_to_irq(JOGBALL_KEY_LEFT_IO));\r
+       }       \r
+       DBG("jogball: left end \n");\r
         rk28_jogball_enable_irq( );\r
        return IRQ_HANDLED;\r
 }\r
 \r
-//static void rk28_jogball_right_ISR(void)\r
 static irqreturn_t rk28_jogball_right_ISR(int irq, void *dev_id)\r
 {\r
         rk28_jogball_disable_irq( );\r
-       //disable_irq_nosync (gpio_to_irq(JOGBALL_KEY_RIGHT_IO));\r
+       DBG("jogball: right start\n");\r
        jogball_cnt_right++;\r
 \r
-       if (jogball_cnt_right > JOGBALL_MAX_CNT){\r
-               //printk("jogball: right\n");\r
+       if (jogball_cnt_right >= JOGBALL_MAX_CNT){\r
+               DBG("jogball: right\n");\r
                \r
                input_report_key(prockjogball->input_dev, JB_KEY_RIGHT, 1);\r
                input_sync(prockjogball->input_dev);\r
@@ -200,10 +194,8 @@ static irqreturn_t rk28_jogball_right_ISR(int irq, void *dev_id)
                jogball_cnt_down = 0;\r
                jogball_cnt_left = 0;\r
                jogball_cnt_right = 0;\r
-       }\r
-       \r
-       //gpio_irq_enable(JOGBALL_KEY_RIGHT_IO);\r
-       //enable_irq (gpio_to_irq(JOGBALL_KEY_RIGHT_IO));\r
+       }       \r
+       DBG("jogball: right end\n");\r
         rk28_jogball_enable_irq( );\r
        return IRQ_HANDLED;\r
 }\r