OpenCores
URL https://opencores.org/ocsvn/or1k_soc_on_altera_embedded_dev_kit/or1k_soc_on_altera_embedded_dev_kit/trunk

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [linux-2.6/] [linux-2.6.24/] [arch/] [arm/] [mach-omap1/] [board-ams-delta.c] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 xianfeng
/*
2
 * linux/arch/arm/mach-omap1/board-ams-delta.c
3
 *
4
 * Modified from board-generic.c
5
 *
6
 * Board specific inits for the Amstrad E3 (codename Delta) videophone
7
 *
8
 * Copyright (C) 2006 Jonathan McDowell <noodles@earth.li>
9
 *
10
 * This program is free software; you can redistribute it and/or modify
11
 * it under the terms of the GNU General Public License version 2 as
12
 * published by the Free Software Foundation.
13
 */
14
 
15
#include <linux/kernel.h>
16
#include <linux/init.h>
17
#include <linux/input.h>
18
#include <linux/platform_device.h>
19
 
20
#include <asm/hardware.h>
21
#include <asm/mach-types.h>
22
#include <asm/mach/arch.h>
23
#include <asm/mach/map.h>
24
 
25
#include <asm/arch/board-ams-delta.h>
26
#include <asm/arch/gpio.h>
27
#include <asm/arch/keypad.h>
28
#include <asm/arch/mux.h>
29
#include <asm/arch/usb.h>
30
#include <asm/arch/board.h>
31
#include <asm/arch/common.h>
32
 
33
static u8 ams_delta_latch1_reg;
34
static u16 ams_delta_latch2_reg;
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
 
114
};
115
 
116
void ams_delta_latch1_write(u8 mask, u8 value)
117
{
118
        ams_delta_latch1_reg &= ~mask;
119
        ams_delta_latch1_reg |= value;
120
        *(volatile __u8 *) AMS_DELTA_LATCH1_VIRT = ams_delta_latch1_reg;
121
}
122
 
123
void ams_delta_latch2_write(u16 mask, u16 value)
124
{
125
        ams_delta_latch2_reg &= ~mask;
126
        ams_delta_latch2_reg |= value;
127
        *(volatile __u16 *) AMS_DELTA_LATCH2_VIRT = ams_delta_latch2_reg;
128
}
129
 
130
static void __init ams_delta_init_irq(void)
131
{
132
        omap1_init_common_hw();
133
        omap_init_irq();
134
        omap_gpio_init();
135
}
136
 
137
static struct map_desc ams_delta_io_desc[] __initdata = {
138
        // AMS_DELTA_LATCH1
139
        {
140
                .virtual        = AMS_DELTA_LATCH1_VIRT,
141
                .pfn            = __phys_to_pfn(AMS_DELTA_LATCH1_PHYS),
142
                .length         = 0x01000000,
143
                .type           = MT_DEVICE
144
        },
145
        // AMS_DELTA_LATCH2
146
        {
147
                .virtual        = AMS_DELTA_LATCH2_VIRT,
148
                .pfn            = __phys_to_pfn(AMS_DELTA_LATCH2_PHYS),
149
                .length         = 0x01000000,
150
                .type           = MT_DEVICE
151
        },
152
        // AMS_DELTA_MODEM
153
        {
154
                .virtual        = AMS_DELTA_MODEM_VIRT,
155
                .pfn            = __phys_to_pfn(AMS_DELTA_MODEM_PHYS),
156
                .length         = 0x01000000,
157
                .type           = MT_DEVICE
158
        }
159
};
160
 
161
static struct omap_lcd_config ams_delta_lcd_config __initdata = {
162
        .ctrl_name      = "internal",
163
};
164
 
165
static struct omap_uart_config ams_delta_uart_config __initdata = {
166
        .enabled_uarts = 1,
167
};
168
 
169
static struct omap_usb_config ams_delta_usb_config __initdata = {
170
        .register_host  = 1,
171
        .hmc_mode       = 16,
172
        .pins[0] = 2,
173
};
174
 
175
static struct omap_board_config_kernel ams_delta_config[] = {
176
        { OMAP_TAG_LCD,         &ams_delta_lcd_config },
177
        { OMAP_TAG_UART,        &ams_delta_uart_config },
178
        { OMAP_TAG_USB,         &ams_delta_usb_config },
179
};
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
 
212
static struct platform_device ams_delta_led_device = {
213
        .name   = "ams-delta-led",
214
        .id     = -1
215
};
216
 
217
static struct platform_device *ams_delta_devices[] __initdata = {
218
        &ams_delta_kp_device,
219
        &ams_delta_lcd_device,
220
        &ams_delta_led_device,
221
};
222
 
223
static void __init ams_delta_init(void)
224
{
225
        iotable_init(ams_delta_io_desc, ARRAY_SIZE(ams_delta_io_desc));
226
 
227
        omap_board_config = ams_delta_config;
228
        omap_board_config_size = ARRAY_SIZE(ams_delta_config);
229
        omap_serial_init();
230
 
231
        /* Clear latch2 (NAND, LCD, modem enable) */
232
        ams_delta_latch2_write(~0, 0);
233
 
234
        platform_add_devices(ams_delta_devices, ARRAY_SIZE(ams_delta_devices));
235
}
236
 
237
static void __init ams_delta_map_io(void)
238
{
239
        omap1_map_common_io();
240
}
241
 
242
MACHINE_START(AMS_DELTA, "Amstrad E3 (Delta)")
243
        /* Maintainer: Jonathan McDowell <noodles@earth.li> */
244
        .phys_io        = 0xfff00000,
245
        .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
246
        .boot_params    = 0x10000100,
247
        .map_io         = ams_delta_map_io,
248
        .init_irq       = ams_delta_init_irq,
249
        .init_machine   = ams_delta_init,
250
        .timer          = &omap_timer,
251
MACHINE_END
252
 
253
EXPORT_SYMBOL(ams_delta_latch1_write);
254
EXPORT_SYMBOL(ams_delta_latch2_write);

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.