blob: fd9ed2e31add47ae052d97b662f6ff47785b4aca [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2005
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/*****************************************************************************
37 *
38 * Filename:
39 * ---------
40 * keypad_sw.h
41 *
42 * Project:
43 * --------
44 * Maui_Software
45 *
46 * Description:
47 * ------------
48 * This file is intends for keypad driver and adaption.
49 *
50 * Author:
51 * -------
52 * -------
53 *
54 *============================================================================
55 * HISTORY
56 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
57 *------------------------------------------------------------------------------
58 * removed!
59 * removed!
60 * removed!
61 *
62 * removed!
63 * removed!
64 * removed!
65 *
66 * removed!
67 * removed!
68 * removed!
69 *
70 * removed!
71 * removed!
72 * removed!
73 *
74 * removed!
75 * removed!
76 * removed!
77 *
78 * removed!
79 * removed!
80 * removed!
81 *
82 * removed!
83 * removed!
84 * removed!
85 *
86 * removed!
87 * removed!
88 * removed!
89 *
90 * removed!
91 * removed!
92 * removed!
93 *
94 * removed!
95 * removed!
96 * removed!
97 *
98 * removed!
99 * removed!
100 * removed!
101 *
102 * removed!
103 * removed!
104 * removed!
105 * removed!
106 * removed!
107 * removed!
108 *
109 * removed!
110 * removed!
111 * removed!
112 * removed!
113 * removed!
114 *
115 * removed!
116 * removed!
117 * removed!
118 * removed!
119 *
120 * removed!
121 * removed!
122 * removed!
123 *
124 * removed!
125 * removed!
126 * removed!
127 *
128 * removed!
129 * removed!
130 * removed!
131 *
132 * removed!
133 * removed!
134 * removed!
135 *
136 * removed!
137 * removed!
138 * removed!
139 *
140 * removed!
141 * removed!
142 * removed!
143 *
144 * removed!
145 * removed!
146 * removed!
147 *
148 * removed!
149 * removed!
150 * removed!
151 *
152 * removed!
153 * removed!
154 * removed!
155 *
156 * removed!
157 * removed!
158 * removed!
159 *
160 * removed!
161 * removed!
162 * removed!
163 *
164 * removed!
165 * removed!
166 * removed!
167 *
168 * removed!
169 * removed!
170 * removed!
171 *
172 * removed!
173 * removed!
174 * removed!
175 *
176 * removed!
177 * removed!
178 * removed!
179 *
180 * removed!
181 * removed!
182 * removed!
183 *
184 * removed!
185 * removed!
186 * removed!
187 *
188 * removed!
189 * removed!
190 * removed!
191 *
192 * removed!
193 * removed!
194 * removed!
195 *
196 * removed!
197 * removed!
198 * removed!
199 *
200 * removed!
201 * removed!
202 * removed!
203 *
204 * removed!
205 * removed!
206 * removed!
207 *
208 * removed!
209 * removed!
210 * removed!
211 *
212 * removed!
213 * removed!
214 * removed!
215 *
216 * removed!
217 * removed!
218 * removed!
219 *
220 * removed!
221 * removed!
222 * removed!
223 *
224 * removed!
225 * removed!
226 * removed!
227 *
228 * removed!
229 * removed!
230 * removed!
231 *
232 * removed!
233 * removed!
234 * removed!
235 *
236 * removed!
237 * removed!
238 * removed!
239 *
240 * removed!
241 * removed!
242 * removed!
243 *
244 * removed!
245 * removed!
246 * removed!
247 * removed!
248 * removed!
249 * removed!
250 * removed!
251 * removed!
252 * removed!
253 * removed!
254 *
255 * removed!
256 * removed!
257 * removed!
258 *
259 * removed!
260 * removed!
261 * removed!
262 *
263 * removed!
264 * removed!
265 * removed!
266 *
267 * removed!
268 * removed!
269 * removed!
270 *
271 * removed!
272 * removed!
273 * removed!
274 *
275 * removed!
276 * removed!
277 * removed!
278 *
279 * removed!
280 * removed!
281 * removed!
282 *
283 * removed!
284 * removed!
285 * removed!
286 *
287 * removed!
288 * removed!
289 * removed!
290 *
291 * removed!
292 * removed!
293 * removed!
294 *
295 * removed!
296 * removed!
297 * removed!
298 *
299 * removed!
300 * removed!
301 * removed!
302 * removed!
303 * removed!
304 * removed!
305 * removed!
306 * removed!
307 * removed!
308 * removed!
309 * removed!
310 * removed!
311 * removed!
312 * removed!
313 * removed!
314 * removed!
315 * removed!
316 * removed!
317 * removed!
318 * removed!
319 * removed!
320 * removed!
321 * removed!
322 * removed!
323 * removed!
324 * removed!
325 * removed!
326 * removed!
327 * removed!
328 * removed!
329 * removed!
330 * removed!
331 * removed!
332 * removed!
333 * removed!
334 * removed!
335 * removed!
336 * removed!
337 * removed!
338 * removed!
339 * removed!
340 * removed!
341 * removed!
342 * removed!
343 * removed!
344 * removed!
345 * removed!
346 * removed!
347 * removed!
348 * removed!
349 * removed!
350 * removed!
351 * removed!
352 * removed!
353 * removed!
354 * removed!
355 * removed!
356 * removed!
357 * removed!
358 * removed!
359 * removed!
360 * removed!
361 * removed!
362 * removed!
363 * removed!
364 * removed!
365 * removed!
366 * removed!
367 * removed!
368 * removed!
369 * removed!
370 * removed!
371 * removed!
372 * removed!
373 * removed!
374 * removed!
375 * removed!
376 * removed!
377 * removed!
378 * removed!
379 * removed!
380 * removed!
381 * removed!
382 * removed!
383 * removed!
384 *------------------------------------------------------------------------------
385 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
386 *============================================================================
387 ****************************************************************************/
388#ifndef _KEYPAD_SW_H
389#define _KEYPAD_SW_H
390
391#include "intrCtrl.h"
392#include "drv_features_kbd.h"
393#include "drv_comm.h"
394#include "kal_general_types.h"
395#include "kal_public_defs.h"
396#include "kal_public_api.h"
397
398
399#if defined(DRV_KBD_25_KEYS) || defined(FPGA)
400 #define kbd_allkeys 25
401 #define KBD_ROW 5
402 #define KBD_COLUMN_MASK 0x1F //5 bits mask
403 #define KBD_COLUMN 5
404#elif defined(DRV_KBD_36_KEYS)
405 #define kbd_allkeys 36
406 #define KBD_ROW 6
407 #define KBD_COLUMN_MASK 0x3F //6 bits mask
408 #define KBD_COLUMN 6
409#elif defined(DRV_KBD_42_KEYS)
410 #define kbd_allkeys 42
411 #define KBD_ROW 6
412 #define KBD_COLUMN_MASK 0x3F //6 bits mask
413 #define KBD_COLUMN 7
414#elif defined(DRV_KBD_35_KEYS)
415 #define kbd_allkeys 35
416 #define KBD_ROW 5
417 #define KBD_COLUMN_MASK 0x1F //5 bits mask
418 #define KBD_COLUMN 7
419#elif defined(DRV_KBD_54_KEYS)
420 #define kbd_allkeys 54
421 #define KBD_ROW 6
422 #define KBD_COLUMN_MASK 0x3F //6 bits mask
423 #define KBD_COLUMN 9
424#elif defined(DRV_KBD_63_KEYS)
425 #define kbd_allkeys 63
426 #define KBD_ROW 7
427 #define KBD_COLUMN_MASK 0x3F //6 bits mask
428 #define KBD_COLUMN 9
429#elif defined(DRV_KBD_72_KEYS)
430 #define kbd_allkeys 72
431 #define KBD_ROW 8
432 #define KBD_COLUMN_MASK 0xFF //8 bits mask
433 #define KBD_COLUMN 9
434#elif defined(DRV_KBD_NOT_EXIST)
435 #define kbd_allkeys 1
436 #define KBD_ROW 1
437 #define KBD_COLUMN_MASK 0x1 //1 bits mask
438 #define KBD_COLUMN 1
439#endif /*DRV_KBD_25_KEYS,FPGA*/
440
441
442/*keypad*/
443typedef enum {
444 kbd_onekey_press=0,
445 kbd_onekey_release,
446#ifdef TWO_KEY_ENABLE
447 kbd_twokey_press,
448 kbd_twokey_release,
449#endif /*TWO_KEY_ENABLE*/
450 kbd_onekey_longpress,
451 kbd_onekey_repeated,
452 kbd_onekey_fullpress,
453 kbd_twokey_detection_enable,
454 kbd_threekey_detection_enable,
455 kbd_multikey_detection_disable
456} kbd_event;
457
458#define kbd_buffer_size 32
459
460
461typedef struct
462{
463 kbd_event Keyevent;
464#ifdef TWO_KEY_ENABLE
465 kal_uint8 Keydata[2];
466#else /*!TWO_KEY_ENABLE*/
467 kal_uint8 Keydata[1];
468#endif /*TWO_KEY_ENABLE*/
469#if defined(__TC01__)
470 kal_uint32 keytimestamp;
471#endif
472} kbd_data;
473
474
475typedef struct
476{
477 kbd_data kbd_data_buffer[kbd_buffer_size];
478 kal_uint8 kbd_data_buffer_rindex;
479 kal_uint8 kbd_data_buffer_windex;
480} kbd_buffer_struct;
481
482/*Customizae Keypad*/
483typedef struct {
484 /*keypad mapping*/
485#if defined(DRV_KBD_DRVTOOL_EXTEND_72_KEYS)
486 kal_uint8 keypad[72];//kbd_allkeys+KBD_COLUMN*2]; //reserve one GND row and GPO row.
487#else
488 kal_uint8 keypad[kbd_allkeys];
489#endif//#if defined(DRV_KBD_DRVTOOL_EXTEND_72_KEYS)
490#if defined(__EXTEND_QWERTY_KEYPAD__)
491 kal_uint16 kbd_extend_row_GPO; //extend row use which GPO
492#endif //#if defined(__EXTEND_QWERTY_KEYPAD__)
493 /*power on period*/
494 kal_uint32 Custom_Keypress_Period;
495 /*power key position*/
496 kal_uint8 powerkey_position;
497} keypad_struct;
498
499typedef struct {
500 const keypad_struct * (*keypad_Get_Data)(void);
501 #ifdef __KBD_2STEP_KEY_SUPPORT__
502 kal_bool (*keypad_is_fullpress)(kal_uint8 key);
503 kal_bool (*keypad_check_fullpress)(void);
504 #endif
505}keypad_customize_function_struct;
506
507/*keypad*/
508typedef enum {
509 low_key=0,
510#if defined(DRV_KBD_32KEYS_ABOVE)
511 medium_key,
512#elif defined(DRV_KBD_48KEYS_ABOVE)
513 medium_key,
514 medium_key1,
515#elif defined(DRV_KBD_64KEYS_ABOVE)
516 medium_key,
517 medium_key1,
518 medium_key2,
519#endif
520 high_key
521
522} kbd_type;
523
524
525
526/*
527extern void Kbd_Init(void);
528extern void keypad_customize_init(void);
529
530kal_bool kbd_key_det_mode_switch(kbd_key_det_mode mode);
531 kal_bool kbd_IsKeyButtonSupported(kal_uint8 key);
532
533extern kal_bool PowerKey_Pressed(void);
534extern kal_bool kbd_is_mutiple_key(kal_uint8 key);
535extern kal_bool kbd_IsKeyPressed(kal_uint8 key);
536
537extern kal_uint32 Kbd_GetKeyEventCount(void);
538extern kal_bool Kbd_GetKeyData(kbd_data *keydata);
539extern kal_bool Kbd_PeekBuffer(kbd_data *keydata, kal_bool specify_read,
540 kal_uint32 read_pointer,kal_uint32* current_read_pointer);
541extern kal_uint32 kbd_PutKeyData(kal_uint8 key);
542
543extern void Kbd_SetLongPressTime(kal_uint32 ticks);
544extern void Kbd_SetRepeatTime(kal_uint32 ticks);
545*/
546
547#endif
548