|
@@ -0,0 +1,191 @@
|
|
|
|
+/*
|
|
|
|
+ * linux/arch/arm/mach-omap1/board-ams-delta.c
|
|
|
|
+ *
|
|
|
|
+ * Modified from board-generic.c
|
|
|
|
+ *
|
|
|
|
+ * Board specific inits for the Amstrad E3 (codename Delta) videophone
|
|
|
|
+ *
|
|
|
|
+ * Copyright (C) 2006 Jonathan McDowell <noodles@earth.li>
|
|
|
|
+ *
|
|
|
|
+ * This program is free software; you can redistribute it and/or modify
|
|
|
|
+ * it under the terms of the GNU General Public License version 2 as
|
|
|
|
+ * published by the Free Software Foundation.
|
|
|
|
+ */
|
|
|
|
+#include <linux/basic_mmio_gpio.h>
|
|
|
|
+#include <linux/gpio.h>
|
|
|
|
+#include <linux/kernel.h>
|
|
|
|
+#include <linux/init.h>
|
|
|
|
+#include <linux/input.h>
|
|
|
|
+#include <linux/interrupt.h>
|
|
|
|
+#include <linux/leds.h>
|
|
|
|
+#include <linux/platform_device.h>
|
|
|
|
+#include <linux/regulator/consumer.h>
|
|
|
|
+#include <linux/regulator/fixed.h>
|
|
|
|
+#include <linux/regulator/machine.h>
|
|
|
|
+#include <linux/serial_8250.h>
|
|
|
|
+#include <linux/export.h>
|
|
|
|
+#include <linux/omapfb.h>
|
|
|
|
+#include <linux/io.h>
|
|
|
|
+#include <linux/platform_data/gpio-omap.h>
|
|
|
|
+
|
|
|
|
+#include <media/soc_camera.h>
|
|
|
|
+
|
|
|
|
+#include <asm/serial.h>
|
|
|
|
+#include <asm/mach-types.h>
|
|
|
|
+#include <asm/mach/arch.h>
|
|
|
|
+#include <asm/mach/map.h>
|
|
|
|
+
|
|
|
|
+#include <mach/board-ams-delta.h>
|
|
|
|
+#include <linux/platform_data/keypad-omap.h>
|
|
|
|
+#include <mach/mux.h>
|
|
|
|
+
|
|
|
|
+#include <mach/hardware.h>
|
|
|
|
+#include <mach/ams-delta-fiq.h>
|
|
|
|
+#include <mach/camera.h>
|
|
|
|
+#include <mach/usb.h>
|
|
|
|
+
|
|
|
|
+#include "iomap.h"
|
|
|
|
+#include "common.h"
|
|
|
|
+
|
|
|
|
+static const unsigned int ams_delta_keymap[] = {
|
|
|
|
+ KEY(0, 0, KEY_F1), /* Advert */
|
|
|
|
+
|
|
|
|
+ KEY(0, 3, KEY_COFFEE), /* Games */
|
|
|
|
+ KEY(0, 2, KEY_QUESTION), /* Directory */
|
|
|
|
+ KEY(2, 3, KEY_CONNECT), /* Internet */
|
|
|
|
+ KEY(1, 2, KEY_SHOP), /* Services */
|
|
|
|
+ KEY(1, 1, KEY_PHONE), /* VoiceMail */
|
|
|
|
+
|
|
|
|
+ KEY(0, 1, KEY_DELETE), /* Delete */
|
|
|
|
+ KEY(2, 2, KEY_PLAY), /* Play */
|
|
|
|
+ KEY(1, 0, KEY_PAGEUP), /* Up */
|
|
|
|
+ KEY(1, 3, KEY_PAGEDOWN), /* Down */
|
|
|
|
+ KEY(2, 0, KEY_EMAIL), /* ReadEmail */
|
|
|
|
+ KEY(2, 1, KEY_STOP), /* Stop */
|
|
|
|
+
|
|
|
|
+ /* Numeric keypad portion */
|
|
|
|
+ KEY(0, 7, KEY_KP1),
|
|
|
|
+ KEY(0, 6, KEY_KP2),
|
|
|
|
+ KEY(0, 5, KEY_KP3),
|
|
|
|
+ KEY(1, 7, KEY_KP4),
|
|
|
|
+ KEY(1, 6, KEY_KP5),
|
|
|
|
+ KEY(1, 5, KEY_KP6),
|
|
|
|
+ KEY(2, 7, KEY_KP7),
|
|
|
|
+ KEY(2, 6, KEY_KP8),
|
|
|
|
+ KEY(2, 5, KEY_KP9),
|
|
|
|
+ KEY(3, 6, KEY_KP0),
|
|
|
|
+ KEY(3, 7, KEY_KPASTERISK),
|
|
|
|
+ KEY(3, 5, KEY_KPDOT), /* # key */
|
|
|
|
+ KEY(7, 2, KEY_NUMLOCK), /* Mute */
|
|
|
|
+ KEY(7, 1, KEY_KPMINUS), /* Recall */
|
|
|
|
+ KEY(6, 1, KEY_KPPLUS), /* Redial */
|
|
|
|
+ KEY(7, 6, KEY_KPSLASH), /* Handsfree */
|
|
|
|
+ KEY(6, 0, KEY_ENTER), /* Video */
|
|
|
|
+
|
|
|
|
+ KEY(7, 4, KEY_CAMERA), /* Photo */
|
|
|
|
+
|
|
|
|
+ KEY(0, 4, KEY_F2), /* Home */
|
|
|
|
+ KEY(1, 4, KEY_F3), /* Office */
|
|
|
|
+ KEY(2, 4, KEY_F4), /* Mobile */
|
|
|
|
+ KEY(7, 7, KEY_F5), /* SMS */
|
|
|
|
+ KEY(7, 5, KEY_F6), /* Email */
|
|
|
|
+
|
|
|
|
+ /* QWERTY portion of keypad */
|
|
|
|
+ KEY(3, 4, KEY_Q),
|
|
|
|
+ KEY(3, 3, KEY_W),
|
|
|
|
+ KEY(3, 2, KEY_E),
|
|
|
|
+ KEY(3, 1, KEY_R),
|
|
|
|
+ KEY(3, 0, KEY_T),
|
|
|
|
+ KEY(4, 7, KEY_Y),
|
|
|
|
+ KEY(4, 6, KEY_U),
|
|
|
|
+ KEY(4, 5, KEY_I),
|
|
|
|
+ KEY(4, 4, KEY_O),
|
|
|
|
+ KEY(4, 3, KEY_P),
|
|
|
|
+
|
|
|
|
+ KEY(4, 2, KEY_A),
|
|
|
|
+ KEY(4, 1, KEY_S),
|
|
|
|
+ KEY(4, 0, KEY_D),
|
|
|
|
+ KEY(5, 7, KEY_F),
|
|
|
|
+ KEY(5, 6, KEY_G),
|
|
|
|
+ KEY(5, 5, KEY_H),
|
|
|
|
+ KEY(5, 4, KEY_J),
|
|
|
|
+ KEY(5, 3, KEY_K),
|
|
|
|
+ KEY(5, 2, KEY_L),
|
|
|
|
+
|
|
|
|
+ KEY(5, 1, KEY_Z),
|
|
|
|
+ KEY(5, 0, KEY_X),
|
|
|
|
+ KEY(6, 7, KEY_C),
|
|
|
|
+ KEY(6, 6, KEY_V),
|
|
|
|
+ KEY(6, 5, KEY_B),
|
|
|
|
+ KEY(6, 4, KEY_N),
|
|
|
|
+ KEY(6, 3, KEY_M),
|
|
|
|
+ KEY(6, 2, KEY_SPACE),
|
|
|
|
+
|
|
|
|
+ KEY(7, 0, KEY_LEFTSHIFT), /* Vol up */
|
|
|
|
+ KEY(7, 3, KEY_LEFTCTRL), /* Vol down */
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+#define LATCH1_PHYS 0x01000000
|
|
|
|
+#define LATCH1_VIRT 0xEA000000
|
|
|
|
+#define MODEM_PHYS 0x04000000
|
|
|
|
+#define MODEM_VIRT 0xEB000000
|
|
|
|
+#define LATCH2_PHYS 0x08000000
|
|
|
|
+#define LATCH2_VIRT 0xEC000000
|
|
|
|
+
|
|
|
|
+static struct map_desc ams_delta_io_desc[] __initdata = {
|
|
|
|
+ /* AMS_DELTA_LATCH1 */
|
|
|
|
+ {
|
|
|
|
+ .virtual = LATCH1_VIRT,
|
|
|
|
+ .pfn = __phys_to_pfn(LATCH1_PHYS),
|
|
|
|
+ .length = 0x01000000,
|
|
|
|
+ .type = MT_DEVICE
|
|
|
|
+ },
|
|
|
|
+ /* AMS_DELTA_LATCH2 */
|
|
|
|
+ {
|
|
|
|
+ .virtual = LATCH2_VIRT,
|
|
|
|
+ .pfn = __phys_to_pfn(LATCH2_PHYS),
|
|
|
|
+ .length = 0x01000000,
|
|
|
|
+ .type = MT_DEVICE
|
|
|
|
+ },
|
|
|
|
+ /* AMS_DELTA_MODEM */
|
|
|
|
+ {
|
|
|
|
+ .virtual = MODEM_VIRT,
|
|
|
|
+ .pfn = __phys_to_pfn(MODEM_PHYS),
|
|
|
|
+ .length = 0x01000000,
|
|
|
|
+ .type = MT_DEVICE
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct omap_lcd_config ams_delta_lcd_config __initdata = {
|
|
|
|
+ .ctrl_name = "internal",
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct omap_usb_config ams_delta_usb_config __initdata = {
|
|
|
|
+ .register_host = 1,
|
|
|
|
+ .hmc_mode = 16,
|
|
|
|
+ .pins[0] = 2,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+#define LATCH1_GPIO_BASE 232
|
|
|
|
+#define LATCH1_NGPIO 8
|
|
|
|
+
|
|
|
|
+static struct resource latch1_resources[] = {
|
|
|
|
+ [0] = {
|
|
|
|
+ .name = "dat",
|
|
|
|
+ .start = LATCH1_PHYS,
|
|
|
|
+ .end = LATCH1_PHYS + (LATCH1_NGPIO - 1) / 8,
|
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct bgpio_pdata latch1_pdata = {
|
|
|
|
+ .base = LATCH1_GPIO_BASE,
|
|
|
|
+ .ngpio = LATCH1_NGPIO,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct platform_device latch1_gpio_device = {
|
|
|
|
+ .name = "basic-mmio-gpio",
|
|
|
|
+ .id = 0,
|
|
|
|
+ .resource = latch1_resources,
|
|
|
|
+ .num_resources = ARRAY_SIZE(latch1_resources),
|
|
|
|
+ .dev = {
|