| /* |
| * Copyright (C) 2007 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #include <boot/boot.h> |
| #include <boot/board.h> |
| #include <boot/gpio_keypad.h> |
| |
| #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) |
| static unsigned int dream_row_gpios[] = { |
| #if 0 // unused? |
| 35, /* KP_MKOUT0 */ |
| 34, /* KP_MKOUT1 */ |
| 33, /* KP_MKOUT2 */ |
| 32, /* KP_MKOUT3 */ |
| 31, /* KP_MKOUT4 */ |
| 23, /* KP_MKOUT5 */ |
| #endif |
| #if 1 |
| 30, /* KP_MKOUT6 */ |
| 78, /* KP_MKOUT7 */ |
| #endif |
| }; |
| |
| static unsigned int dream_col_gpios[] = { |
| #if 1 // main buttons |
| 42, /* KP_MKIN0 */ |
| 41, /* KP_MKIN1 */ |
| 40, /* KP_MKIN2 */ |
| 39, /* KP_MKIN3 */ |
| #endif |
| #if 1 // side buttons |
| 38, /* KP_MKIN4 */ |
| 37, /* KP_MKIN5 */ |
| 36, /* KP_MKIN6 */ |
| #endif |
| }; |
| static gpio_keypad_info dream_keypad = { |
| .output_gpios = dream_row_gpios, |
| .input_gpios = dream_col_gpios, |
| .noutputs = ARRAY_SIZE(dream_row_gpios), |
| .ninputs = ARRAY_SIZE(dream_col_gpios), |
| .settle_time = 5000, |
| .polarity = 0 |
| }; |
| |
| static void keypad_poll() |
| { |
| static int skip = 0; |
| skip++; |
| if(skip > 10) { |
| gpio_keypad_scan_keys(&dream_keypad); |
| skip = 0; |
| } |
| } |
| |
| |
| void keypad_init(void) |
| { |
| gpio_keypad_init(&dream_keypad); |
| boot_register_poll_func(keypad_poll); |
| } |