diff options
Diffstat (limited to 'arch/arm/mach-omap1/board-ams-delta.c')
-rw-r--r-- | arch/arm/mach-omap1/board-ams-delta.c | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c index 8437d065ada5..c73ca61e585e 100644 --- a/arch/arm/mach-omap1/board-ams-delta.c +++ b/arch/arm/mach-omap1/board-ams-delta.c | |||
@@ -14,6 +14,7 @@ | |||
14 | 14 | ||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/input.h> | ||
17 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
18 | 19 | ||
19 | #include <asm/hardware.h> | 20 | #include <asm/hardware.h> |
@@ -23,6 +24,7 @@ | |||
23 | 24 | ||
24 | #include <asm/arch/board-ams-delta.h> | 25 | #include <asm/arch/board-ams-delta.h> |
25 | #include <asm/arch/gpio.h> | 26 | #include <asm/arch/gpio.h> |
27 | #include <asm/arch/keypad.h> | ||
26 | #include <asm/arch/mux.h> | 28 | #include <asm/arch/mux.h> |
27 | #include <asm/arch/usb.h> | 29 | #include <asm/arch/usb.h> |
28 | #include <asm/arch/board.h> | 30 | #include <asm/arch/board.h> |
@@ -31,6 +33,86 @@ | |||
31 | static u8 ams_delta_latch1_reg; | 33 | static u8 ams_delta_latch1_reg; |
32 | static u16 ams_delta_latch2_reg; | 34 | static u16 ams_delta_latch2_reg; |
33 | 35 | ||
36 | static int ams_delta_keymap[] = { | ||
37 | KEY(0, 0, KEY_F1), /* Advert */ | ||
38 | |||
39 | KEY(3, 0, KEY_COFFEE), /* Games */ | ||
40 | KEY(2, 0, KEY_QUESTION), /* Directory */ | ||
41 | KEY(3, 2, KEY_CONNECT), /* Internet */ | ||
42 | KEY(2, 1, KEY_SHOP), /* Services */ | ||
43 | KEY(1, 1, KEY_PHONE), /* VoiceMail */ | ||
44 | |||
45 | KEY(1, 0, KEY_DELETE), /* Delete */ | ||
46 | KEY(2, 2, KEY_PLAY), /* Play */ | ||
47 | KEY(0, 1, KEY_PAGEUP), /* Up */ | ||
48 | KEY(3, 1, KEY_PAGEDOWN), /* Down */ | ||
49 | KEY(0, 2, KEY_EMAIL), /* ReadEmail */ | ||
50 | KEY(1, 2, KEY_STOP), /* Stop */ | ||
51 | |||
52 | /* Numeric keypad portion */ | ||
53 | KEY(7, 0, KEY_KP1), | ||
54 | KEY(6, 0, KEY_KP2), | ||
55 | KEY(5, 0, KEY_KP3), | ||
56 | KEY(7, 1, KEY_KP4), | ||
57 | KEY(6, 1, KEY_KP5), | ||
58 | KEY(5, 1, KEY_KP6), | ||
59 | KEY(7, 2, KEY_KP7), | ||
60 | KEY(6, 2, KEY_KP8), | ||
61 | KEY(5, 2, KEY_KP9), | ||
62 | KEY(6, 3, KEY_KP0), | ||
63 | KEY(7, 3, KEY_KPASTERISK), | ||
64 | KEY(5, 3, KEY_KPDOT), /* # key */ | ||
65 | KEY(2, 7, KEY_NUMLOCK), /* Mute */ | ||
66 | KEY(1, 7, KEY_KPMINUS), /* Recall */ | ||
67 | KEY(1, 6, KEY_KPPLUS), /* Redial */ | ||
68 | KEY(6, 7, KEY_KPSLASH), /* Handsfree */ | ||
69 | KEY(0, 6, KEY_ENTER), /* Video */ | ||
70 | |||
71 | KEY(4, 7, KEY_CAMERA), /* Photo */ | ||
72 | |||
73 | KEY(4, 0, KEY_F2), /* Home */ | ||
74 | KEY(4, 1, KEY_F3), /* Office */ | ||
75 | KEY(4, 2, KEY_F4), /* Mobile */ | ||
76 | KEY(7, 7, KEY_F5), /* SMS */ | ||
77 | KEY(5, 7, KEY_F6), /* Email */ | ||
78 | |||
79 | /* QWERTY portion of keypad */ | ||
80 | KEY(4, 3, KEY_Q), | ||
81 | KEY(3, 3, KEY_W), | ||
82 | KEY(2, 3, KEY_E), | ||
83 | KEY(1, 3, KEY_R), | ||
84 | KEY(0, 3, KEY_T), | ||
85 | KEY(7, 4, KEY_Y), | ||
86 | KEY(6, 4, KEY_U), | ||
87 | KEY(5, 4, KEY_I), | ||
88 | KEY(4, 4, KEY_O), | ||
89 | KEY(3, 4, KEY_P), | ||
90 | |||
91 | KEY(2, 4, KEY_A), | ||
92 | KEY(1, 4, KEY_S), | ||
93 | KEY(0, 4, KEY_D), | ||
94 | KEY(7, 5, KEY_F), | ||
95 | KEY(6, 5, KEY_G), | ||
96 | KEY(5, 5, KEY_H), | ||
97 | KEY(4, 5, KEY_J), | ||
98 | KEY(3, 5, KEY_K), | ||
99 | KEY(2, 5, KEY_L), | ||
100 | |||
101 | KEY(1, 5, KEY_Z), | ||
102 | KEY(0, 5, KEY_X), | ||
103 | KEY(7, 6, KEY_C), | ||
104 | KEY(6, 6, KEY_V), | ||
105 | KEY(5, 6, KEY_B), | ||
106 | KEY(4, 6, KEY_N), | ||
107 | KEY(3, 6, KEY_M), | ||
108 | KEY(2, 6, KEY_SPACE), | ||
109 | |||
110 | KEY(0, 7, KEY_LEFTSHIFT), /* Vol up */ | ||
111 | KEY(3, 7, KEY_LEFTCTRL), /* Vol down */ | ||
112 | |||
113 | 0 | ||
114 | }; | ||
115 | |||
34 | void ams_delta_latch1_write(u8 mask, u8 value) | 116 | void ams_delta_latch1_write(u8 mask, u8 value) |
35 | { | 117 | { |
36 | ams_delta_latch1_reg &= ~mask; | 118 | ams_delta_latch1_reg &= ~mask; |
@@ -76,6 +158,10 @@ static struct map_desc ams_delta_io_desc[] __initdata = { | |||
76 | } | 158 | } |
77 | }; | 159 | }; |
78 | 160 | ||
161 | static struct omap_lcd_config ams_delta_lcd_config __initdata = { | ||
162 | .ctrl_name = "internal", | ||
163 | }; | ||
164 | |||
79 | static struct omap_uart_config ams_delta_uart_config __initdata = { | 165 | static struct omap_uart_config ams_delta_uart_config __initdata = { |
80 | .enabled_uarts = 1, | 166 | .enabled_uarts = 1, |
81 | }; | 167 | }; |
@@ -87,16 +173,50 @@ static struct omap_usb_config ams_delta_usb_config __initdata = { | |||
87 | }; | 173 | }; |
88 | 174 | ||
89 | static struct omap_board_config_kernel ams_delta_config[] = { | 175 | static struct omap_board_config_kernel ams_delta_config[] = { |
176 | { OMAP_TAG_LCD, &ams_delta_lcd_config }, | ||
90 | { OMAP_TAG_UART, &ams_delta_uart_config }, | 177 | { OMAP_TAG_UART, &ams_delta_uart_config }, |
91 | { OMAP_TAG_USB, &ams_delta_usb_config }, | 178 | { OMAP_TAG_USB, &ams_delta_usb_config }, |
92 | }; | 179 | }; |
93 | 180 | ||
181 | static struct resource ams_delta_kp_resources[] = { | ||
182 | [0] = { | ||
183 | .start = INT_KEYBOARD, | ||
184 | .end = INT_KEYBOARD, | ||
185 | .flags = IORESOURCE_IRQ, | ||
186 | }, | ||
187 | }; | ||
188 | |||
189 | static struct omap_kp_platform_data ams_delta_kp_data = { | ||
190 | .rows = 8, | ||
191 | .cols = 8, | ||
192 | .keymap = ams_delta_keymap, | ||
193 | .keymapsize = ARRAY_SIZE(ams_delta_keymap), | ||
194 | .delay = 9, | ||
195 | }; | ||
196 | |||
197 | static struct platform_device ams_delta_kp_device = { | ||
198 | .name = "omap-keypad", | ||
199 | .id = -1, | ||
200 | .dev = { | ||
201 | .platform_data = &ams_delta_kp_data, | ||
202 | }, | ||
203 | .num_resources = ARRAY_SIZE(ams_delta_kp_resources), | ||
204 | .resource = ams_delta_kp_resources, | ||
205 | }; | ||
206 | |||
207 | static struct platform_device ams_delta_lcd_device = { | ||
208 | .name = "lcd_ams_delta", | ||
209 | .id = -1, | ||
210 | }; | ||
211 | |||
94 | static struct platform_device ams_delta_led_device = { | 212 | static struct platform_device ams_delta_led_device = { |
95 | .name = "ams-delta-led", | 213 | .name = "ams-delta-led", |
96 | .id = -1 | 214 | .id = -1 |
97 | }; | 215 | }; |
98 | 216 | ||
99 | static struct platform_device *ams_delta_devices[] __initdata = { | 217 | static struct platform_device *ams_delta_devices[] __initdata = { |
218 | &ams_delta_kp_device, | ||
219 | &ams_delta_lcd_device, | ||
100 | &ams_delta_led_device, | 220 | &ams_delta_led_device, |
101 | }; | 221 | }; |
102 | 222 | ||