aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/keyboard/p1_keyboard.h
blob: e37fedc06c06cafe89168195d63fb8710802715b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224

#ifndef _P1_KEYBOARD_H_
#define _P1_KEYBOARD_H_

#include <linux/input.h>
#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/tty_flip.h>
#include <linux/earlysuspend.h>
#include <linux/vmalloc.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <asm/gpio.h>
#include <plat/gpio-cfg.h>
#include <linux/platform_device.h>
#include <linux/irq.h>
#include <linux/interrupt.h>
#include <linux/delay.h>
#include <linux/slab.h>
#include <asm/fiq_glue.h>
#include <linux/kthread.h>
#include <linux/wakelock.h>

#define KEYBOARD_SIZE   128
#define US_KEYBOARD     0xeb
#define UK_KEYBOARD     0xec

#define KEYBOARD_MIN   0x4
#define KEYBOARD_MAX   0x7f

#define MAX_BUF     255

//for the remap key
#define REMAPKEY_RELEASED    0x0
#define REMAPKEY_PRESSED      0x1

//#define ACC_INT_KBD

//#define KBD_POLL
#define KBD_THREAD
//#define KBD_WORK

#define ACCESSORY_EN                    S5PV210_GPJ1(4)
#if !defined(GPIO_UART_SEL)
#define GPIO_UART_SEL			  S5PV210_MP05(7)
#endif
#if !defined(GPIO_ACCESSORY_INT)
#define GPIO_ACCESSORY_INT	  S5PV210_GPH0(5)
#endif

enum KEY_LAYOUT
{
    UNKOWN_KEYLAYOUT = 0,
    US_KEYLAYOUT,
    UK_KEYLAYOUT,
};

  /* Each client has this additional data */
struct dock_keyboard_data
{
    struct input_dev *input_dev;
#if defined(KBD_THREAD)
    struct task_struct *task;
    struct mutex mutex;
    spinlock_t spin_lock;
    wait_queue_head_t wait_queue;
    signed int timeout;
#elif defined(KBD_POLL)
    struct timer_list timer_poll;
#elif defined(KBD_WORK)
    struct work_struct work_msg;
#endif
#if defined(ACC_INT_KBD)
    struct work_struct work_int;
#endif
    struct early_suspend	early_suspend;
    struct timer_list timer;
    struct timer_list key_timer;
    struct wake_lock wake_lock;
    unsigned short keycode[KEYBOARD_SIZE];
    bool pressed[KEYBOARD_SIZE];
    bool led_on;
    int gpio;
    int buf_front;
    int buf_rear;
    unsigned int kl;
    unsigned int pre_kl;
    unsigned char key_buf[MAX_BUF+1];
};

static const unsigned short dock_keycodes[KEYBOARD_SIZE] =
{
     // keycode              ,         decimal     hex
    KEY_RESERVED,       		//	0		0
    KEY_RESERVED,       		//	1		1
    KEY_RESERVED,       		//	2		2
    KEY_RESERVED,       		//	3		3
    KEY_A,              		//	4		4
    KEY_B,              		//	5		5
    KEY_C,              		//	6		6
    KEY_D,              		//	7		7
    KEY_E,              		//	8		8
    KEY_F,              		//	9		9
    KEY_G,              		//	10		0A
    KEY_H,              		//	11		0B
    KEY_I,              		//	12		0C
    KEY_J,              		//	13		0D
    KEY_K,              		//	14		0E
    KEY_L,              		//	15		0F
    KEY_M,              		//	16		10
    KEY_N,              		//	17		11
    KEY_O,              		//	18		12
    KEY_P,              		//	19		13
    KEY_Q,              		//	20		14
    KEY_R,              		//	21		15
    KEY_S,              		//	22		16
    KEY_T,              		//	23		17
    KEY_U,              		//	24		18
    KEY_V,              		//	25		19
    KEY_W,              		//	26		1A
    KEY_X,              		//	27		1B
    KEY_Y,              		//	28		1C
    KEY_Z,              		//	29		1D
    KEY_1,              		//	30		1E
    KEY_2,              		//	31		1F
    KEY_3,              		//	32		20
    KEY_4,              		//	33		21
    KEY_5,              		//	34		22
    KEY_6,              		//	35		23
    KEY_7,              		//	36		24
    KEY_8,              		//	37		25
    KEY_9,              		//	38		26
    KEY_0,              		//	39		27
    KEY_ENTER,          		//	40		28
    KEY_SCREENLOCK,            	//	41		29
    KEY_BACKSPACE,      		//	42		2A
    KEY_TAB,            		//	43		2B
    KEY_SPACE,          		//	44		2C
    KEY_MINUS,          		//	45		2D
    KEY_EQUAL,          		//	46		2E
    KEY_LEFTBRACE,      		//	47		2F
    KEY_RIGHTBRACE,     		//	48		30
    KEY_BACKSLASH,      		//	49		31
    KEY_RESERVED,       		//	50		32
    KEY_SEMICOLON,      		//	51		33
    KEY_APOSTROPHE,     		//	52		34
    KEY_GRAVE,          		//	53		35
    KEY_COMMA,          		//	54		36
    KEY_DOT,            		//	55		37
    KEY_SLASH,          		//	56		38
    KEY_CAPSLOCK,       		//	57		39
    KEY_TIME,           		//	58		3A
    KEY_BRIGHTNESSDOWN, 		//	59		3B
    KEY_BRIGHTNESSUP,   		//	60		3C
    KEY_WWW,            		//	61		3D
    KEY_MENU,           		//	62		3E
    KEY_HOME,           		//	63		3F
    KEY_BACK,           		//	64		40
    KEY_SEARCH,         		//	65		41
    KEY_MP3,            		//	66		42
    KEY_VIDEO,          		//	67		43
    KEY_PLAY,           		//	68		44
    KEY_REWIND,         		//	69		45
    KEY_MUTE,           		//	70		46
    KEY_RESERVED,       		//	71		47
    KEY_FASTFORWARD,    		//	72		48
    KEY_VOLUMEDOWN,     		//	73		49
    KEY_RESERVED,       		//	4A
    KEY_RESERVED,       		//	75		4B
    KEY_VOLUMEUP,       		//	76		4C
    KEY_RESERVED,       		//	77		4D
    KEY_RESERVED,       		//	78		4E
    KEY_RIGHT,          		//	79		4F
    KEY_LEFT,           		//	80		50
    KEY_DOWN,  	 	        //81		51
    KEY_UP,       	 	        //82		52
    KEY_NUMLOCK,        		//	83		53
    KEY_KPSLASH,        		//	84		54
    KEY_APOSTROPHE,     		//	85		55
    KEY_KPMINUS,        		//	86		56
    KEY_KPPLUS,         		//	87		57
    KEY_KPENTER,        		//	88		58
    KEY_KP1,            		//	89		59
    KEY_KP2,            		//	90		5A
    KEY_KP3,            		//	91		5B
    KEY_KP4,            		//	92		5C
    KEY_KP5,            		//	93		5D
    KEY_KP6,            		//	94		5E
    KEY_KP7,            		//	95		5F
    KEY_KP8,            		//	96		60
    KEY_KP9,            		//	97		61
    KEY_KPDOT,          		//	98		62
    KEY_RESERVED,       		//	99		63
    KEY_BACKSLASH,      		//	100		64      //For the UK keyboard
    KEY_F18,           		//	101		65
    KEY_RESERVED,       		//	102		66
    KEY_RESERVED,       		//	103		67
    KEY_RESERVED,       		//	104		68
    KEY_RESERVED,       		//	105		69
    KEY_RESERVED,       		//	106		6A
    KEY_RESERVED,       		//	107		6B
    KEY_RESERVED,       		//	108		6C
    KEY_RESERVED,       		//	109		6D
    KEY_RESERVED,       		//	110		6E
    KEY_RESERVED,       		//	111		6F
    KEY_HANGEUL,        		//	112		70
    KEY_HANJA,          		//	113		71
    KEY_F13,            		//	114		72
    KEY_LEFTSHIFT,      		//	115		73
    KEY_F16,            		//	116		74
    KEY_F17,            		//	75		Left GUI (Windows Key)
    KEY_F19,            		//	118		76
    KEY_RIGHTSHIFT,     		//	119		77
    KEY_F15,            		//	120		78
    KEY_RESERVED,       		//	121		79		Right GUI (Windows Key)
    KEY_RESERVED,       		//	122		7A
    KEY_RESERVED,       		//	123		7B
    KEY_RESERVED,       		//	124		7C
    KEY_RESERVED,       		//	125		7D
    KEY_RESERVED,       		//	126		7E
    KEY_F14,            		//	127		7F
};

#endif  //_P1_KEYBOARD_H_