aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap1/board-ams-delta.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-omap1/board-ams-delta.c')
-rw-r--r--arch/arm/mach-omap1/board-ams-delta.c137
1 files changed, 70 insertions, 67 deletions
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c
index 1d4163b9f0b7..bd0495a9ac3b 100644
--- a/arch/arm/mach-omap1/board-ams-delta.c
+++ b/arch/arm/mach-omap1/board-ams-delta.c
@@ -28,6 +28,7 @@
28#include <asm/mach/arch.h> 28#include <asm/mach/arch.h>
29#include <asm/mach/map.h> 29#include <asm/mach/map.h>
30 30
31#include <plat/io.h>
31#include <plat/board-ams-delta.h> 32#include <plat/board-ams-delta.h>
32#include <mach/gpio.h> 33#include <mach/gpio.h>
33#include <plat/keypad.h> 34#include <plat/keypad.h>
@@ -42,84 +43,82 @@
42static u8 ams_delta_latch1_reg; 43static u8 ams_delta_latch1_reg;
43static u16 ams_delta_latch2_reg; 44static u16 ams_delta_latch2_reg;
44 45
45static int ams_delta_keymap[] = { 46static const unsigned int ams_delta_keymap[] = {
46 KEY(0, 0, KEY_F1), /* Advert */ 47 KEY(0, 0, KEY_F1), /* Advert */
47 48
48 KEY(3, 0, KEY_COFFEE), /* Games */ 49 KEY(0, 3, KEY_COFFEE), /* Games */
49 KEY(2, 0, KEY_QUESTION), /* Directory */ 50 KEY(0, 2, KEY_QUESTION), /* Directory */
50 KEY(3, 2, KEY_CONNECT), /* Internet */ 51 KEY(2, 3, KEY_CONNECT), /* Internet */
51 KEY(2, 1, KEY_SHOP), /* Services */ 52 KEY(1, 2, KEY_SHOP), /* Services */
52 KEY(1, 1, KEY_PHONE), /* VoiceMail */ 53 KEY(1, 1, KEY_PHONE), /* VoiceMail */
53 54
54 KEY(1, 0, KEY_DELETE), /* Delete */ 55 KEY(0, 1, KEY_DELETE), /* Delete */
55 KEY(2, 2, KEY_PLAY), /* Play */ 56 KEY(2, 2, KEY_PLAY), /* Play */
56 KEY(0, 1, KEY_PAGEUP), /* Up */ 57 KEY(1, 0, KEY_PAGEUP), /* Up */
57 KEY(3, 1, KEY_PAGEDOWN), /* Down */ 58 KEY(1, 3, KEY_PAGEDOWN), /* Down */
58 KEY(0, 2, KEY_EMAIL), /* ReadEmail */ 59 KEY(2, 0, KEY_EMAIL), /* ReadEmail */
59 KEY(1, 2, KEY_STOP), /* Stop */ 60 KEY(2, 1, KEY_STOP), /* Stop */
60 61
61 /* Numeric keypad portion */ 62 /* Numeric keypad portion */
62 KEY(7, 0, KEY_KP1), 63 KEY(0, 7, KEY_KP1),
63 KEY(6, 0, KEY_KP2), 64 KEY(0, 6, KEY_KP2),
64 KEY(5, 0, KEY_KP3), 65 KEY(0, 5, KEY_KP3),
65 KEY(7, 1, KEY_KP4), 66 KEY(1, 7, KEY_KP4),
66 KEY(6, 1, KEY_KP5), 67 KEY(1, 6, KEY_KP5),
67 KEY(5, 1, KEY_KP6), 68 KEY(1, 5, KEY_KP6),
68 KEY(7, 2, KEY_KP7), 69 KEY(2, 7, KEY_KP7),
69 KEY(6, 2, KEY_KP8), 70 KEY(2, 6, KEY_KP8),
70 KEY(5, 2, KEY_KP9), 71 KEY(2, 5, KEY_KP9),
71 KEY(6, 3, KEY_KP0), 72 KEY(3, 6, KEY_KP0),
72 KEY(7, 3, KEY_KPASTERISK), 73 KEY(3, 7, KEY_KPASTERISK),
73 KEY(5, 3, KEY_KPDOT), /* # key */ 74 KEY(3, 5, KEY_KPDOT), /* # key */
74 KEY(2, 7, KEY_NUMLOCK), /* Mute */ 75 KEY(7, 2, KEY_NUMLOCK), /* Mute */
75 KEY(1, 7, KEY_KPMINUS), /* Recall */ 76 KEY(7, 1, KEY_KPMINUS), /* Recall */
76 KEY(1, 6, KEY_KPPLUS), /* Redial */ 77 KEY(6, 1, KEY_KPPLUS), /* Redial */
77 KEY(6, 7, KEY_KPSLASH), /* Handsfree */ 78 KEY(7, 6, KEY_KPSLASH), /* Handsfree */
78 KEY(0, 6, KEY_ENTER), /* Video */ 79 KEY(6, 0, KEY_ENTER), /* Video */
79 80
80 KEY(4, 7, KEY_CAMERA), /* Photo */ 81 KEY(7, 4, KEY_CAMERA), /* Photo */
81 82
82 KEY(4, 0, KEY_F2), /* Home */ 83 KEY(0, 4, KEY_F2), /* Home */
83 KEY(4, 1, KEY_F3), /* Office */ 84 KEY(1, 4, KEY_F3), /* Office */
84 KEY(4, 2, KEY_F4), /* Mobile */ 85 KEY(2, 4, KEY_F4), /* Mobile */
85 KEY(7, 7, KEY_F5), /* SMS */ 86 KEY(7, 7, KEY_F5), /* SMS */
86 KEY(5, 7, KEY_F6), /* Email */ 87 KEY(7, 5, KEY_F6), /* Email */
87 88
88 /* QWERTY portion of keypad */ 89 /* QWERTY portion of keypad */
89 KEY(4, 3, KEY_Q), 90 KEY(3, 4, KEY_Q),
90 KEY(3, 3, KEY_W), 91 KEY(3, 3, KEY_W),
91 KEY(2, 3, KEY_E), 92 KEY(3, 2, KEY_E),
92 KEY(1, 3, KEY_R), 93 KEY(3, 1, KEY_R),
93 KEY(0, 3, KEY_T), 94 KEY(3, 0, KEY_T),
94 KEY(7, 4, KEY_Y), 95 KEY(4, 7, KEY_Y),
95 KEY(6, 4, KEY_U), 96 KEY(4, 6, KEY_U),
96 KEY(5, 4, KEY_I), 97 KEY(4, 5, KEY_I),
97 KEY(4, 4, KEY_O), 98 KEY(4, 4, KEY_O),
98 KEY(3, 4, KEY_P), 99 KEY(4, 3, KEY_P),
99 100
100 KEY(2, 4, KEY_A), 101 KEY(4, 2, KEY_A),
101 KEY(1, 4, KEY_S), 102 KEY(4, 1, KEY_S),
102 KEY(0, 4, KEY_D), 103 KEY(4, 0, KEY_D),
103 KEY(7, 5, KEY_F), 104 KEY(5, 7, KEY_F),
104 KEY(6, 5, KEY_G), 105 KEY(5, 6, KEY_G),
105 KEY(5, 5, KEY_H), 106 KEY(5, 5, KEY_H),
106 KEY(4, 5, KEY_J), 107 KEY(5, 4, KEY_J),
107 KEY(3, 5, KEY_K), 108 KEY(5, 3, KEY_K),
108 KEY(2, 5, KEY_L), 109 KEY(5, 2, KEY_L),
109 110
110 KEY(1, 5, KEY_Z), 111 KEY(5, 1, KEY_Z),
111 KEY(0, 5, KEY_X), 112 KEY(5, 0, KEY_X),
112 KEY(7, 6, KEY_C), 113 KEY(6, 7, KEY_C),
113 KEY(6, 6, KEY_V), 114 KEY(6, 6, KEY_V),
114 KEY(5, 6, KEY_B), 115 KEY(6, 5, KEY_B),
115 KEY(4, 6, KEY_N), 116 KEY(6, 4, KEY_N),
116 KEY(3, 6, KEY_M), 117 KEY(6, 3, KEY_M),
117 KEY(2, 6, KEY_SPACE), 118 KEY(6, 2, KEY_SPACE),
118 119
119 KEY(0, 7, KEY_LEFTSHIFT), /* Vol up */ 120 KEY(7, 0, KEY_LEFTSHIFT), /* Vol up */
120 KEY(3, 7, KEY_LEFTCTRL), /* Vol down */ 121 KEY(7, 3, KEY_LEFTCTRL), /* Vol down */
121
122 0
123}; 122};
124 123
125void ams_delta_latch1_write(u8 mask, u8 value) 124void ams_delta_latch1_write(u8 mask, u8 value)
@@ -140,7 +139,6 @@ static void __init ams_delta_init_irq(void)
140{ 139{
141 omap1_init_common_hw(); 140 omap1_init_common_hw();
142 omap_init_irq(); 141 omap_init_irq();
143 omap_gpio_init();
144} 142}
145 143
146static struct map_desc ams_delta_io_desc[] __initdata = { 144static struct map_desc ams_delta_io_desc[] __initdata = {
@@ -189,11 +187,15 @@ static struct resource ams_delta_kp_resources[] = {
189 }, 187 },
190}; 188};
191 189
190static const struct matrix_keymap_data ams_delta_keymap_data = {
191 .keymap = ams_delta_keymap,
192 .keymap_size = ARRAY_SIZE(ams_delta_keymap),
193};
194
192static struct omap_kp_platform_data ams_delta_kp_data = { 195static struct omap_kp_platform_data ams_delta_kp_data = {
193 .rows = 8, 196 .rows = 8,
194 .cols = 8, 197 .cols = 8,
195 .keymap = ams_delta_keymap, 198 .keymap_data = &ams_delta_keymap_data,
196 .keymapsize = ARRAY_SIZE(ams_delta_keymap),
197 .delay = 9, 199 .delay = 9,
198}; 200};
199 201
@@ -307,16 +309,14 @@ static void __init ams_delta_init(void)
307#endif 309#endif
308 platform_add_devices(ams_delta_devices, ARRAY_SIZE(ams_delta_devices)); 310 platform_add_devices(ams_delta_devices, ARRAY_SIZE(ams_delta_devices));
309 311
310#ifdef CONFIG_AMS_DELTA_FIQ
311 ams_delta_init_fiq(); 312 ams_delta_init_fiq();
312#endif
313 313
314 omap_writew(omap_readw(ARM_RSTCT1) | 0x0004, ARM_RSTCT1); 314 omap_writew(omap_readw(ARM_RSTCT1) | 0x0004, ARM_RSTCT1);
315} 315}
316 316
317static struct plat_serial8250_port ams_delta_modem_ports[] = { 317static struct plat_serial8250_port ams_delta_modem_ports[] = {
318 { 318 {
319 .membase = (void *) AMS_DELTA_MODEM_VIRT, 319 .membase = IOMEM(AMS_DELTA_MODEM_VIRT),
320 .mapbase = AMS_DELTA_MODEM_PHYS, 320 .mapbase = AMS_DELTA_MODEM_PHYS,
321 .irq = -EINVAL, /* changed later */ 321 .irq = -EINVAL, /* changed later */
322 .flags = UPF_BOOT_AUTOCONF, 322 .flags = UPF_BOOT_AUTOCONF,
@@ -340,6 +340,9 @@ static int __init ams_delta_modem_init(void)
340{ 340{
341 int err; 341 int err;
342 342
343 if (!machine_is_ams_delta())
344 return -ENODEV;
345
343 omap_cfg_reg(M14_1510_GPIO2); 346 omap_cfg_reg(M14_1510_GPIO2);
344 ams_delta_modem_ports[0].irq = 347 ams_delta_modem_ports[0].irq =
345 gpio_to_irq(AMS_DELTA_GPIO_PIN_MODEM_IRQ); 348 gpio_to_irq(AMS_DELTA_GPIO_PIN_MODEM_IRQ);