tizen 2.4 release
[kernel/u-boot-tm1.git] / arch / arm / include / asm / arch-sc8830 / sprd_keypad.h
1 #ifndef _SPRD_KEYPAD_H_
2 #define _SPRD_KEYPAD_H_
3
4 #include "bits.h"
5 #include "sprd_reg.h"
6 #include "kpd_reg_v0.h"
7
8
9 #define KPD_ROW_MIN_NUM         2  /* when config keypad type, the value of */
10 #define KPD_COL_MIN_NUM         2  /* when config keypad type, the value of */
11
12 #define KPDCTL_ROW              (0x3f << 10)  /* enable bit for rows(row4 --- row7) */
13 #define KPDCTL_COL              (0x3f << 18)  /* enable bit for cols(col3 --- col4) */
14
15 #define KPD_CTRL                        (SPRD_KPD_PHYS + 0x0000)
16 #define KPD_INT_EN                      (SPRD_KPD_PHYS + 0x0004)
17 #define KPD_INT_RAW_STATUS              (SPRD_KPD_PHYS + 0x0008)
18 #define KPD_INT_MASK_STATUS             (SPRD_KPD_PHYS + 0x000C)
19
20 #define KPD_INT_CLR                     (SPRD_KPD_PHYS + 0x0010)
21 #define KPD_POLARITY                    (SPRD_KPD_PHYS + 0x0018)
22 #define KPD_DEBOUNCE_CNT                (SPRD_KPD_PHYS + 0x001C)
23 #define KPD_LONG_KEY_CNT                (SPRD_KPD_PHYS + 0x0020)
24
25 #define KPD_SLEEP_CNT                   (SPRD_KPD_PHYS + 0x0024)
26 #define KPD_CLK_DIV_CNT                 (SPRD_KPD_PHYS + 0x0028)
27 #define KPD_KEY_STATUS                  (SPRD_KPD_PHYS + 0x002C)
28 #define KPD_SLEEP_STATUS                (SPRD_KPD_PHYS + 0x0030)
29
30 #define REG_KPD_CTRL                    (*((volatile unsigned int *)(KPD_CTRL)))
31 #define REG_KPD_INT_EN                  (*((volatile unsigned int *)(KPD_INT_EN)))
32 #define REG_KPD_INT_RAW_STATUS          (*((volatile unsigned int *)(KPD_INT_RAW_STATUS)))
33 #define REG_KPD_INT_MASK_STATUS         (*((volatile unsigned int *)(KPD_INT_MASK_STATUS)))
34
35 #define REG_KPD_INT_CLR             (*((volatile unsigned int *)(KPD_INT_CLR)))
36 #define REG_KPD_POLARITY            (*((volatile unsigned int *)(KPD_POLARITY)))
37 #define REG_KPD_DEBOUNCE_CNT            (*((volatile unsigned int *)(KPD_DEBOUNCE_CNT)))
38 #define REG_KPD_LONG_KEY_CNT            (*((volatile unsigned int *)(KPD_LONG_KEY_CNT)))
39
40 #define REG_KPD_SLEEP_CNT           (*((volatile unsigned int *)(KPD_SLEEP_CNT)))
41 #define REG_KPD_CLK_DIV_CNT             (*((volatile unsigned int *)(KPD_CLK_DIV_CNT)))
42 #define REG_KPD_KEY_STATUS          (*((volatile unsigned int *)(KPD_KEY_STATUS)))
43 #define REG_KPD_SLEEP_STATUS            (*((volatile unsigned int *)(KPD_SLEEP_STATUS)))
44
45 //The corresponding bit of KPD_POLARITY register.
46 #define KPDPOLARITY_ROW                 (0x00FF)    // Internal row output xor with this 
47 // value to generate row output.
48 #define KPDPOLARITY_COL                 (0xFF00)    // Column input xor with this value to
49 #define KPDCLK0_CLK_DIV0                0xFFFF      //Clock dividor [15:0]
50 #define KPDCLK1_TIME_CNT                0xFFB0      //Time out counter value
51
52 #define CFG_ROW_POLARITY    (0x00FF & KPDPOLARITY_ROW)
53 #define CFG_COL_POLARITY    (0xFF00 & KPDPOLARITY_COL)
54 #define CFG_CLK_DIV         1
55
56 #define IRQ_KPD_INT 14
57
58 #define INT_DIS (INTC_BASE + 0xc)
59 #define REG_INT_DIS (*((volatile unsigned int *)(INT_DIS)))
60 #endif //_SPRD_KEYPAD_H_