[PATCH] ARM: 2806/1: OMAP update 5/11: Move board files into mach-omap1 directory
authorTony Lindgren <tony@atomide.com>
Sun, 10 Jul 2005 18:58:11 +0000 (19:58 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 10 Jul 2005 18:58:11 +0000 (19:58 +0100)
Patch from Tony Lindgren

This patch by Paul Mundt and other OMAP developers
moves OMAP1 board files into mach-omap1 directory.

Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 files changed:
arch/arm/mach-omap/board-generic.c [deleted file]
arch/arm/mach-omap/board-h2.c [deleted file]
arch/arm/mach-omap/board-h3.c [deleted file]
arch/arm/mach-omap/board-innovator.c [deleted file]
arch/arm/mach-omap/board-netstar.c [deleted file]
arch/arm/mach-omap/board-osk.c [deleted file]
arch/arm/mach-omap/board-perseus2.c [deleted file]
arch/arm/mach-omap/board-voiceblue.c [deleted file]
arch/arm/mach-omap1/board-generic.c [new file with mode: 0644]
arch/arm/mach-omap1/board-h2.c [new file with mode: 0644]
arch/arm/mach-omap1/board-h3.c [new file with mode: 0644]
arch/arm/mach-omap1/board-innovator.c [new file with mode: 0644]
arch/arm/mach-omap1/board-netstar.c [new file with mode: 0644]
arch/arm/mach-omap1/board-osk.c [new file with mode: 0644]
arch/arm/mach-omap1/board-perseus2.c [new file with mode: 0644]
arch/arm/mach-omap1/board-voiceblue.c [new file with mode: 0644]

diff --git a/arch/arm/mach-omap/board-generic.c b/arch/arm/mach-omap/board-generic.c
deleted file mode 100644 (file)
index 384bc7c..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * linux/arch/arm/mach-omap/board-generic.c
- *
- * Modified from board-innovator1510.c
- *
- * Code for generic OMAP board. Should work on many OMAP systems where
- * the device drivers take care of all the necessary hardware initialization.
- * Do not put any board specific code to this file; create a new machine
- * type if you need custom low-level initializations.
- *
- * 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/kernel.h>
-#include <linux/init.h>
-#include <linux/device.h>
-
-#include <asm/hardware.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-
-#include <asm/arch/gpio.h>
-#include <asm/arch/mux.h>
-#include <asm/arch/usb.h>
-#include <asm/arch/board.h>
-
-#include "common.h"
-
-static int __initdata generic_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
-
-static void __init omap_generic_init_irq(void)
-{
-       omap_init_irq();
-}
-
-/* assume no Mini-AB port */
-
-#ifdef CONFIG_ARCH_OMAP1510
-static struct omap_usb_config generic1510_usb_config __initdata = {
-       .register_host  = 1,
-       .register_dev   = 1,
-       .hmc_mode       = 16,
-       .pins[0]        = 3,
-};
-#endif
-
-#if defined(CONFIG_ARCH_OMAP16XX)
-static struct omap_usb_config generic1610_usb_config __initdata = {
-       .register_host  = 1,
-       .register_dev   = 1,
-       .hmc_mode       = 16,
-       .pins[0]        = 6,
-};
-#endif
-
-static struct omap_board_config_kernel generic_config[] = {
-       { OMAP_TAG_USB,           NULL },
-};
-
-static void __init omap_generic_init(void)
-{
-       /*
-        * Make sure the serial ports are muxed on at this point.
-        * You have to mux them off in device drivers later on
-        * if not needed.
-        */
-#ifdef CONFIG_ARCH_OMAP1510
-       if (cpu_is_omap1510()) {
-               generic_config[0].data = &generic1510_usb_config;
-       }
-#endif
-#if defined(CONFIG_ARCH_OMAP16XX)
-       if (!cpu_is_omap1510()) {
-               generic_config[0].data = &generic1610_usb_config;
-       }
-#endif
-       omap_board_config = generic_config;
-       omap_board_config_size = ARRAY_SIZE(generic_config);
-       omap_serial_init(generic_serial_ports);
-}
-
-static void __init omap_generic_map_io(void)
-{
-       omap_map_io();
-}
-
-MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710")
-       /* Maintainer: Tony Lindgren <tony@atomide.com> */
-       .phys_ram       = 0x10000000,
-       .phys_io        = 0xfff00000,
-       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
-       .boot_params    = 0x10000100,
-       .map_io         = omap_generic_map_io,
-       .init_irq       = omap_generic_init_irq,
-       .init_machine   = omap_generic_init,
-       .timer          = &omap_timer,
-MACHINE_END
diff --git a/arch/arm/mach-omap/board-h2.c b/arch/arm/mach-omap/board-h2.c
deleted file mode 100644 (file)
index f37c76a..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * linux/arch/arm/mach-omap/board-h2.c
- *
- * Board specific inits for OMAP-1610 H2
- *
- * Copyright (C) 2001 RidgeRun, Inc.
- * Author: Greg Lonnon <glonnon@ridgerun.com>
- *
- * Copyright (C) 2002 MontaVista Software, Inc.
- *
- * Separated FPGA interrupts from innovator1510.c and cleaned up for 2.6
- * Copyright (C) 2004 Nokia Corporation by Tony Lindrgen <tony@atomide.com>
- *
- * H2 specific changes and cleanup
- * Copyright (C) 2004 Nokia Corporation by Imre Deak <imre.deak@nokia.com>
- *
- * 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/kernel.h>
-#include <linux/init.h>
-#include <linux/device.h>
-#include <linux/delay.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-
-#include <asm/hardware.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/flash.h>
-#include <asm/mach/map.h>
-
-#include <asm/arch/gpio.h>
-#include <asm/arch/tc.h>
-#include <asm/arch/usb.h>
-
-#include "common.h"
-
-extern int omap_gpio_init(void);
-
-static int __initdata h2_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
-
-static struct mtd_partition h2_partitions[] = {
-       /* bootloader (U-Boot, etc) in first sector */
-       {
-             .name             = "bootloader",
-             .offset           = 0,
-             .size             = SZ_128K,
-             .mask_flags       = MTD_WRITEABLE, /* force read-only */
-       },
-       /* bootloader params in the next sector */
-       {
-             .name             = "params",
-             .offset           = MTDPART_OFS_APPEND,
-             .size             = SZ_128K,
-             .mask_flags       = 0,
-       },
-       /* kernel */
-       {
-             .name             = "kernel",
-             .offset           = MTDPART_OFS_APPEND,
-             .size             = SZ_2M,
-             .mask_flags       = 0
-       },
-       /* file system */
-       {
-             .name             = "filesystem",
-             .offset           = MTDPART_OFS_APPEND,
-             .size             = MTDPART_SIZ_FULL,
-             .mask_flags       = 0
-       }
-};
-
-static struct flash_platform_data h2_flash_data = {
-       .map_name       = "cfi_probe",
-       .width          = 2,
-       .parts          = h2_partitions,
-       .nr_parts       = ARRAY_SIZE(h2_partitions),
-};
-
-static struct resource h2_flash_resource = {
-       .start          = OMAP_CS2B_PHYS,
-       .end            = OMAP_CS2B_PHYS + OMAP_CS2B_SIZE - 1,
-       .flags          = IORESOURCE_MEM,
-};
-
-static struct platform_device h2_flash_device = {
-       .name           = "omapflash",
-       .id             = 0,
-       .dev            = {
-               .platform_data  = &h2_flash_data,
-       },
-       .num_resources  = 1,
-       .resource       = &h2_flash_resource,
-};
-
-static struct resource h2_smc91x_resources[] = {
-       [0] = {
-               .start  = OMAP1610_ETHR_START,          /* Physical */
-               .end    = OMAP1610_ETHR_START + 0xf,
-               .flags  = IORESOURCE_MEM,
-       },
-       [1] = {
-               .start  = OMAP_GPIO_IRQ(0),
-               .end    = OMAP_GPIO_IRQ(0),
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct platform_device h2_smc91x_device = {
-       .name           = "smc91x",
-       .id             = 0,
-       .num_resources  = ARRAY_SIZE(h2_smc91x_resources),
-       .resource       = h2_smc91x_resources,
-};
-
-static struct platform_device *h2_devices[] __initdata = {
-       &h2_flash_device,
-       &h2_smc91x_device,
-};
-
-static void __init h2_init_smc91x(void)
-{
-       if ((omap_request_gpio(0)) < 0) {
-               printk("Error requesting gpio 0 for smc91x irq\n");
-               return;
-       }
-       omap_set_gpio_edge_ctrl(0, OMAP_GPIO_FALLING_EDGE);
-}
-
-void h2_init_irq(void)
-{
-       omap_init_irq();
-       omap_gpio_init();
-       h2_init_smc91x();
-}
-
-static struct omap_usb_config h2_usb_config __initdata = {
-       /* usb1 has a Mini-AB port and external isp1301 transceiver */
-       .otg            = 2,
-
-#ifdef CONFIG_USB_GADGET_OMAP
-       .hmc_mode       = 19,   // 0:host(off) 1:dev|otg 2:disabled
-       // .hmc_mode    = 21,   // 0:host(off) 1:dev(loopback) 2:host(loopback)
-#elif  defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
-       /* needs OTG cable, or NONSTANDARD (B-to-MiniB) */
-       .hmc_mode       = 20,   // 1:dev|otg(off) 1:host 2:disabled
-#endif
-
-       .pins[1]        = 3,
-};
-
-static struct omap_mmc_config h2_mmc_config __initdata = {
-       .mmc_blocks             = 1,
-       .mmc1_power_pin         = -1,   /* tps65010 gpio3 */
-       .mmc1_switch_pin        = OMAP_MPUIO(1),
-};
-
-static struct omap_board_config_kernel h2_config[] = {
-       { OMAP_TAG_USB,           &h2_usb_config },
-       { OMAP_TAG_MMC,           &h2_mmc_config },
-};
-
-static void __init h2_init(void)
-{
-       platform_add_devices(h2_devices, ARRAY_SIZE(h2_devices));
-       omap_board_config = h2_config;
-       omap_board_config_size = ARRAY_SIZE(h2_config);
-}
-
-static void __init h2_map_io(void)
-{
-       omap_map_io();
-       omap_serial_init(h2_serial_ports);
-}
-
-MACHINE_START(OMAP_H2, "TI-H2")
-       /* Maintainer: Imre Deak <imre.deak@nokia.com> */
-       .phys_ram       = 0x10000000,
-       .phys_io        = 0xfff00000,
-       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
-       .boot_params    = 0x10000100,
-       .map_io         = h2_map_io,
-       .init_irq       = h2_init_irq,
-       .init_machine   = h2_init,
-       .timer          = &omap_timer,
-MACHINE_END
diff --git a/arch/arm/mach-omap/board-h3.c b/arch/arm/mach-omap/board-h3.c
deleted file mode 100644 (file)
index 705e485..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * linux/arch/arm/mach-omap/board-h3.c
- *
- * This file contains OMAP1710 H3 specific code.
- *
- * Copyright (C) 2004 Texas Instruments, Inc.
- * Copyright (C) 2002 MontaVista Software, Inc.
- * Copyright (C) 2001 RidgeRun, Inc.
- * Author: RidgeRun, Inc.
- *         Greg Lonnon (glonnon@ridgerun.com) or info@ridgerun.com
- *
- * 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/config.h>
-#include <linux/types.h>
-#include <linux/init.h>
-#include <linux/major.h>
-#include <linux/kernel.h>
-#include <linux/device.h>
-#include <linux/errno.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-
-#include <asm/setup.h>
-#include <asm/page.h>
-#include <asm/hardware.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/flash.h>
-#include <asm/mach/map.h>
-
-#include <asm/arch/gpio.h>
-#include <asm/arch/irqs.h>
-#include <asm/arch/mux.h>
-#include <asm/arch/tc.h>
-#include <asm/arch/usb.h>
-
-#include "common.h"
-
-extern int omap_gpio_init(void);
-
-static int __initdata h3_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
-
-static struct mtd_partition h3_partitions[] = {
-       /* bootloader (U-Boot, etc) in first sector */
-       {
-             .name             = "bootloader",
-             .offset           = 0,
-             .size             = SZ_128K,
-             .mask_flags       = MTD_WRITEABLE, /* force read-only */
-       },
-       /* bootloader params in the next sector */
-       {
-             .name             = "params",
-             .offset           = MTDPART_OFS_APPEND,
-             .size             = SZ_128K,
-             .mask_flags       = 0,
-       },
-       /* kernel */
-       {
-             .name             = "kernel",
-             .offset           = MTDPART_OFS_APPEND,
-             .size             = SZ_2M,
-             .mask_flags       = 0
-       },
-       /* file system */
-       {
-             .name             = "filesystem",
-             .offset           = MTDPART_OFS_APPEND,
-             .size             = MTDPART_SIZ_FULL,
-             .mask_flags       = 0
-       }
-};
-
-static struct flash_platform_data h3_flash_data = {
-       .map_name       = "cfi_probe",
-       .width          = 2,
-       .parts          = h3_partitions,
-       .nr_parts       = ARRAY_SIZE(h3_partitions),
-};
-
-static struct resource h3_flash_resource = {
-       .start          = OMAP_CS2B_PHYS,
-       .end            = OMAP_CS2B_PHYS + OMAP_CS2B_SIZE - 1,
-       .flags          = IORESOURCE_MEM,
-};
-
-static struct platform_device flash_device = {
-       .name           = "omapflash",
-       .id             = 0,
-       .dev            = {
-               .platform_data  = &h3_flash_data,
-       },
-       .num_resources  = 1,
-       .resource       = &h3_flash_resource,
-};
-
-static struct resource smc91x_resources[] = {
-       [0] = {
-               .start  = OMAP1710_ETHR_START,          /* Physical */
-               .end    = OMAP1710_ETHR_START + 0xf,
-               .flags  = IORESOURCE_MEM,
-       },
-       [1] = {
-               .start  = OMAP_GPIO_IRQ(40),
-               .end    = OMAP_GPIO_IRQ(40),
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct platform_device smc91x_device = {
-       .name           = "smc91x",
-       .id             = 0,
-       .num_resources  = ARRAY_SIZE(smc91x_resources),
-       .resource       = smc91x_resources,
-};
-
-#define GPTIMER_BASE           0xFFFB1400
-#define GPTIMER_REGS(x)        (0xFFFB1400 + (x * 0x800))
-#define GPTIMER_REGS_SIZE      0x46
-
-static struct resource intlat_resources[] = {
-       [0] = {
-               .start  = GPTIMER_REGS(0),            /* Physical */
-               .end    = GPTIMER_REGS(0) + GPTIMER_REGS_SIZE,
-               .flags  = IORESOURCE_MEM,
-       },
-       [1] = {
-               .start  = INT_1610_GPTIMER1,
-               .end    = INT_1610_GPTIMER1,
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct platform_device intlat_device = {
-       .name      = "omap_intlat",
-       .id          = 0,
-       .num_resources  = ARRAY_SIZE(intlat_resources),
-       .resource       = intlat_resources,
-};
-
-static struct platform_device *devices[] __initdata = {
-       &flash_device,
-        &smc91x_device,
-       &intlat_device,
-};
-
-static struct omap_usb_config h3_usb_config __initdata = {
-       /* usb1 has a Mini-AB port and external isp1301 transceiver */
-       .otg        = 2,
-
-#ifdef CONFIG_USB_GADGET_OMAP
-       .hmc_mode       = 19,   /* 0:host(off) 1:dev|otg 2:disabled */
-#elif  defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
-       /* NONSTANDARD CABLE NEEDED (B-to-Mini-B) */
-       .hmc_mode       = 20,   /* 1:dev|otg(off) 1:host 2:disabled */
-#endif
-
-       .pins[1]        = 3,
-};
-
-static struct omap_board_config_kernel h3_config[] = {
-       { OMAP_TAG_USB,  &h3_usb_config },
-};
-
-static void __init h3_init(void)
-{
-       (void) platform_add_devices(devices, ARRAY_SIZE(devices));
-}
-
-static void __init h3_init_smc91x(void)
-{
-       omap_cfg_reg(W15_1710_GPIO40);
-       if (omap_request_gpio(40) < 0) {
-               printk("Error requesting gpio 40 for smc91x irq\n");
-               return;
-       }
-       omap_set_gpio_edge_ctrl(40, OMAP_GPIO_FALLING_EDGE);
-}
-
-void h3_init_irq(void)
-{
-       omap_init_irq();
-       omap_gpio_init();
-       h3_init_smc91x();
-}
-
-static void __init h3_map_io(void)
-{
-       omap_map_io();
-       omap_serial_init(h3_serial_ports);
-}
-
-MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board")
-       /* Maintainer: Texas Instruments, Inc. */
-       .phys_ram       = 0x10000000,
-       .phys_io        = 0xfff00000,
-       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
-       .boot_params    = 0x10000100,
-       .map_io         = h3_map_io,
-       .init_irq       = h3_init_irq,
-       .init_machine   = h3_init,
-       .timer          = &omap_timer,
-MACHINE_END
diff --git a/arch/arm/mach-omap/board-innovator.c b/arch/arm/mach-omap/board-innovator.c
deleted file mode 100644 (file)
index 523363f..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * linux/arch/arm/mach-omap/board-innovator.c
- *
- * Board specific inits for OMAP-1510 and OMAP-1610 Innovator
- *
- * Copyright (C) 2001 RidgeRun, Inc.
- * Author: Greg Lonnon <glonnon@ridgerun.com>
- *
- * Copyright (C) 2002 MontaVista Software, Inc.
- *
- * Separated FPGA interrupts from innovator1510.c and cleaned up for 2.6
- * Copyright (C) 2004 Nokia Corporation by Tony Lindrgen <tony@atomide.com>
- *
- * 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/kernel.h>
-#include <linux/init.h>
-#include <linux/device.h>
-#include <linux/delay.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-
-#include <asm/hardware.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/flash.h>
-#include <asm/mach/map.h>
-
-#include <asm/arch/fpga.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/tc.h>
-#include <asm/arch/usb.h>
-
-#include "common.h"
-
-static int __initdata innovator_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
-
-static struct mtd_partition innovator_partitions[] = {
-       /* bootloader (U-Boot, etc) in first sector */
-       {
-             .name             = "bootloader",
-             .offset           = 0,
-             .size             = SZ_128K,
-             .mask_flags       = MTD_WRITEABLE, /* force read-only */
-       },
-       /* bootloader params in the next sector */
-       {
-             .name             = "params",
-             .offset           = MTDPART_OFS_APPEND,
-             .size             = SZ_128K,
-             .mask_flags       = 0,
-       },
-       /* kernel */
-       {
-             .name             = "kernel",
-             .offset           = MTDPART_OFS_APPEND,
-             .size             = SZ_2M,
-             .mask_flags       = 0
-       },
-       /* rest of flash1 is a file system */
-       {
-             .name             = "rootfs",
-             .offset           = MTDPART_OFS_APPEND,
-             .size             = SZ_16M - SZ_2M - 2 * SZ_128K,
-             .mask_flags       = 0
-       },
-       /* file system */
-       {
-             .name             = "filesystem",
-             .offset           = MTDPART_OFS_APPEND,
-             .size             = MTDPART_SIZ_FULL,
-             .mask_flags       = 0
-       }
-};
-
-static struct flash_platform_data innovator_flash_data = {
-       .map_name       = "cfi_probe",
-       .width          = 2,
-       .parts          = innovator_partitions,
-       .nr_parts       = ARRAY_SIZE(innovator_partitions),
-};
-
-static struct resource innovator_flash_resource = {
-       .start          = OMAP_CS0_PHYS,
-       .end            = OMAP_CS0_PHYS + SZ_32M - 1,
-       .flags          = IORESOURCE_MEM,
-};
-
-static struct platform_device innovator_flash_device = {
-       .name           = "omapflash",
-       .id             = 0,
-       .dev            = {
-               .platform_data  = &innovator_flash_data,
-       },
-       .num_resources  = 1,
-       .resource       = &innovator_flash_resource,
-};
-
-#ifdef CONFIG_ARCH_OMAP1510
-
-/* Only FPGA needs to be mapped here. All others are done with ioremap */
-static struct map_desc innovator1510_io_desc[] __initdata = {
-{ OMAP1510_FPGA_BASE, OMAP1510_FPGA_START, OMAP1510_FPGA_SIZE,
-       MT_DEVICE },
-};
-
-static struct resource innovator1510_smc91x_resources[] = {
-       [0] = {
-               .start  = OMAP1510_FPGA_ETHR_START,     /* Physical */
-               .end    = OMAP1510_FPGA_ETHR_START + 0xf,
-               .flags  = IORESOURCE_MEM,
-       },
-       [1] = {
-               .start  = OMAP1510_INT_ETHER,
-               .end    = OMAP1510_INT_ETHER,
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct platform_device innovator1510_smc91x_device = {
-       .name           = "smc91x",
-       .id             = 0,
-       .num_resources  = ARRAY_SIZE(innovator1510_smc91x_resources),
-       .resource       = innovator1510_smc91x_resources,
-};
-
-static struct platform_device *innovator1510_devices[] __initdata = {
-       &innovator_flash_device,
-       &innovator1510_smc91x_device,
-};
-
-#endif /* CONFIG_ARCH_OMAP1510 */
-
-#ifdef CONFIG_ARCH_OMAP16XX
-
-static struct resource innovator1610_smc91x_resources[] = {
-       [0] = {
-               .start  = INNOVATOR1610_ETHR_START,             /* Physical */
-               .end    = INNOVATOR1610_ETHR_START + 0xf,
-               .flags  = IORESOURCE_MEM,
-       },
-       [1] = {
-               .start  = OMAP_GPIO_IRQ(0),
-               .end    = OMAP_GPIO_IRQ(0),
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct platform_device innovator1610_smc91x_device = {
-       .name           = "smc91x",
-       .id             = 0,
-       .num_resources  = ARRAY_SIZE(innovator1610_smc91x_resources),
-       .resource       = innovator1610_smc91x_resources,
-};
-
-static struct platform_device *innovator1610_devices[] __initdata = {
-       &innovator_flash_device,
-       &innovator1610_smc91x_device,
-};
-
-#endif /* CONFIG_ARCH_OMAP16XX */
-
-static void __init innovator_init_smc91x(void)
-{
-       if (cpu_is_omap1510()) {
-               fpga_write(fpga_read(OMAP1510_FPGA_RST) & ~1,
-                          OMAP1510_FPGA_RST);
-               udelay(750);
-       } else {
-               if ((omap_request_gpio(0)) < 0) {
-                       printk("Error requesting gpio 0 for smc91x irq\n");
-                       return;
-               }
-               omap_set_gpio_edge_ctrl(0, OMAP_GPIO_RISING_EDGE);
-       }
-}
-
-void innovator_init_irq(void)
-{
-       omap_init_irq();
-       omap_gpio_init();
-#ifdef CONFIG_ARCH_OMAP1510
-       if (cpu_is_omap1510()) {
-               omap1510_fpga_init_irq();
-       }
-#endif
-       innovator_init_smc91x();
-}
-
-#ifdef CONFIG_ARCH_OMAP1510
-static struct omap_usb_config innovator1510_usb_config __initdata = {
-       /* for bundled non-standard host and peripheral cables */
-       .hmc_mode       = 4,
-
-       .register_host  = 1,
-       .pins[1]        = 6,
-       .pins[2]        = 6,            /* Conflicts with UART2 */
-
-       .register_dev   = 1,
-       .pins[0]        = 2,
-};
-#endif
-
-#ifdef CONFIG_ARCH_OMAP16XX
-static struct omap_usb_config h2_usb_config __initdata = {
-       /* usb1 has a Mini-AB port and external isp1301 transceiver */
-       .otg            = 2,
-
-#ifdef CONFIG_USB_GADGET_OMAP
-       .hmc_mode       = 19,   // 0:host(off) 1:dev|otg 2:disabled
-       // .hmc_mode    = 21,   // 0:host(off) 1:dev(loopback) 2:host(loopback)
-#elif  defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
-       /* NONSTANDARD CABLE NEEDED (B-to-Mini-B) */
-       .hmc_mode       = 20,   // 1:dev|otg(off) 1:host 2:disabled
-#endif
-
-       .pins[1]        = 3,
-};
-#endif
-
-static struct omap_board_config_kernel innovator_config[] = {
-       { OMAP_TAG_USB,         NULL },
-};
-
-static void __init innovator_init(void)
-{
-#ifdef CONFIG_ARCH_OMAP1510
-       if (cpu_is_omap1510()) {
-               platform_add_devices(innovator1510_devices, ARRAY_SIZE(innovator1510_devices));
-       }
-#endif
-#ifdef CONFIG_ARCH_OMAP16XX
-       if (!cpu_is_omap1510()) {
-               platform_add_devices(innovator1610_devices, ARRAY_SIZE(innovator1610_devices));
-       }
-#endif
-
-#ifdef CONFIG_ARCH_OMAP1510
-       if (cpu_is_omap1510())
-               innovator_config[0].data = &innovator1510_usb_config;
-#endif
-#ifdef CONFIG_ARCH_OMAP16XX
-       if (cpu_is_omap1610())
-               innovator_config[0].data = &h2_usb_config;
-#endif
-       omap_board_config = innovator_config;
-       omap_board_config_size = ARRAY_SIZE(innovator_config);
-}
-
-static void __init innovator_map_io(void)
-{
-       omap_map_io();
-
-#ifdef CONFIG_ARCH_OMAP1510
-       if (cpu_is_omap1510()) {
-               iotable_init(innovator1510_io_desc, ARRAY_SIZE(innovator1510_io_desc));
-               udelay(10);     /* Delay needed for FPGA */
-
-               /* Dump the Innovator FPGA rev early - useful info for support. */
-               printk("Innovator FPGA Rev %d.%d Board Rev %d\n",
-                      fpga_read(OMAP1510_FPGA_REV_HIGH),
-                      fpga_read(OMAP1510_FPGA_REV_LOW),
-                      fpga_read(OMAP1510_FPGA_BOARD_REV));
-       }
-#endif
-       omap_serial_init(innovator_serial_ports);
-}
-
-MACHINE_START(OMAP_INNOVATOR, "TI-Innovator")
-       /* Maintainer: MontaVista Software, Inc. */
-       .phys_ram       = 0x10000000,
-       .phys_io        = 0xfff00000,
-       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
-       .boot_params    = 0x10000100,
-       .map_io         = innovator_map_io,
-       .init_irq       = innovator_init_irq,
-       .init_machine   = innovator_init,
-       .timer          = &omap_timer,
-MACHINE_END
diff --git a/arch/arm/mach-omap/board-netstar.c b/arch/arm/mach-omap/board-netstar.c
deleted file mode 100644 (file)
index 8c65373..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Modified from board-generic.c
- *
- * Copyright (C) 2004 2N Telekomunikace, Ladislav Michl <michl@2n.cz>
- *
- * Code for Netstar OMAP board.
- *
- * 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/delay.h>
-#include <linux/device.h>
-#include <linux/interrupt.h>
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/notifier.h>
-#include <linux/reboot.h>
-
-#include <asm/hardware.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-
-#include <asm/arch/gpio.h>
-#include <asm/arch/mux.h>
-#include <asm/arch/usb.h>
-
-#include "common.h"
-
-extern void __init omap_init_time(void);
-extern int omap_gpio_init(void);
-
-static struct resource netstar_smc91x_resources[] = {
-       [0] = {
-               .start  = OMAP_CS1_PHYS + 0x300,
-               .end    = OMAP_CS1_PHYS + 0x300 + 16,
-               .flags  = IORESOURCE_MEM,
-       },
-       [1] = {
-               .start  = OMAP_GPIO_IRQ(8),
-               .end    = OMAP_GPIO_IRQ(8),
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct platform_device netstar_smc91x_device = {
-       .name           = "smc91x",
-       .id             = 0,
-       .num_resources  = ARRAY_SIZE(netstar_smc91x_resources),
-       .resource       = netstar_smc91x_resources,
-};
-
-static struct platform_device *netstar_devices[] __initdata = {
-       &netstar_smc91x_device,
-};
-
-static void __init netstar_init_irq(void)
-{
-       omap_init_irq();
-       omap_gpio_init();
-}
-
-static void __init netstar_init(void)
-{
-       /* green LED */
-       omap_request_gpio(4);
-       omap_set_gpio_direction(4, 0);
-       /* smc91x reset */
-       omap_request_gpio(7);
-       omap_set_gpio_direction(7, 0);
-       omap_set_gpio_dataout(7, 1);
-       udelay(2);      /* wait at least 100ns */
-       omap_set_gpio_dataout(7, 0);
-       mdelay(50);     /* 50ms until PHY ready */
-       /* smc91x interrupt pin */
-       omap_request_gpio(8);
-       omap_set_gpio_edge_ctrl(8, OMAP_GPIO_RISING_EDGE);
-
-       omap_request_gpio(12);
-       omap_request_gpio(13);
-       omap_request_gpio(14);
-       omap_request_gpio(15);
-       omap_set_gpio_edge_ctrl(12, OMAP_GPIO_FALLING_EDGE);
-       omap_set_gpio_edge_ctrl(13, OMAP_GPIO_FALLING_EDGE);
-       omap_set_gpio_edge_ctrl(14, OMAP_GPIO_FALLING_EDGE);
-       omap_set_gpio_edge_ctrl(15, OMAP_GPIO_FALLING_EDGE);
-
-       platform_add_devices(netstar_devices, ARRAY_SIZE(netstar_devices));
-
-       /* Switch on green LED */
-       omap_set_gpio_dataout(4, 0);
-       /* Switch off red LED */
-       omap_writeb(0x00, OMAP_LPG1_PMR);       /* Disable clock */
-       omap_writeb(0x80, OMAP_LPG1_LCR);
-}
-
-static int __initdata omap_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
-
-static void __init netstar_map_io(void)
-{
-       omap_map_io();
-       omap_serial_init(omap_serial_ports);
-}
-
-#define MACHINE_PANICED                1
-#define MACHINE_REBOOTING      2
-#define MACHINE_REBOOT         4
-static unsigned long machine_state;
-
-static int panic_event(struct notifier_block *this, unsigned long event,
-        void *ptr)
-{
-       if (test_and_set_bit(MACHINE_PANICED, &machine_state))
-               return NOTIFY_DONE;
-
-       /* Switch off green LED */
-       omap_set_gpio_dataout(4, 1);
-       /* Flash red LED */
-       omap_writeb(0x78, OMAP_LPG1_LCR);
-       omap_writeb(0x01, OMAP_LPG1_PMR);       /* Enable clock */
-
-       return NOTIFY_DONE;
-}
-
-static struct notifier_block panic_block = {
-       .notifier_call  = panic_event,
-};
-
-static int __init netstar_late_init(void)
-{
-       /* TODO: Setup front panel switch here */
-
-       /* Setup panic notifier */
-       notifier_chain_register(&panic_notifier_list, &panic_block);
-
-       return 0;
-}
-
-postcore_initcall(netstar_late_init);
-
-MACHINE_START(NETSTAR, "NetStar OMAP5910")
-       /* Maintainer: Ladislav Michl <michl@2n.cz> */
-       .phys_ram       = 0x10000000,
-       .phys_io        = 0xfff00000,
-       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
-       .boot_params    = 0x10000100,
-       .map_io         = netstar_map_io,
-       .init_irq       = netstar_init_irq,
-       .init_machine   = netstar_init,
-       .timer          = &omap_timer,
-MACHINE_END
diff --git a/arch/arm/mach-omap/board-osk.c b/arch/arm/mach-omap/board-osk.c
deleted file mode 100644 (file)
index cb43343..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * linux/arch/arm/mach-omap/board-osk.c
- *
- * Board specific init for OMAP5912 OSK
- *
- * Written by Dirk Behme <dirk.behme@de.bosch.com>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
- * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * You should have received a copy of the  GNU General Public License along
- * with this program; if not, write  to the Free Software Foundation, Inc.,
- * 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/device.h>
-
-#include <asm/hardware.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-
-#include <asm/arch/gpio.h>
-#include <asm/arch/usb.h>
-#include <asm/arch/mux.h>
-#include <asm/arch/tc.h>
-
-#include "common.h"
-
-static struct map_desc osk5912_io_desc[] __initdata = {
-{ OMAP_OSK_NOR_FLASH_BASE, OMAP_OSK_NOR_FLASH_START, OMAP_OSK_NOR_FLASH_SIZE,
-       MT_DEVICE },
-};
-
-static int __initdata osk_serial_ports[OMAP_MAX_NR_PORTS] = {1, 0, 0};
-
-static struct resource osk5912_smc91x_resources[] = {
-       [0] = {
-               .start  = OMAP_OSK_ETHR_START,          /* Physical */
-               .end    = OMAP_OSK_ETHR_START + 0xf,
-               .flags  = IORESOURCE_MEM,
-       },
-       [1] = {
-               .start  = OMAP_GPIO_IRQ(0),
-               .end    = OMAP_GPIO_IRQ(0),
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct platform_device osk5912_smc91x_device = {
-       .name           = "smc91x",
-       .id             = -1,
-       .num_resources  = ARRAY_SIZE(osk5912_smc91x_resources),
-       .resource       = osk5912_smc91x_resources,
-};
-
-static struct resource osk5912_cf_resources[] = {
-       [0] = {
-               .start  = OMAP_GPIO_IRQ(62),
-               .end    = OMAP_GPIO_IRQ(62),
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct platform_device osk5912_cf_device = {
-       .name           = "omap_cf",
-       .id             = -1,
-       .dev = {
-               .platform_data  = (void *) 2 /* CS2 */,
-       },
-       .num_resources  = ARRAY_SIZE(osk5912_cf_resources),
-       .resource       = osk5912_cf_resources,
-};
-
-static struct platform_device *osk5912_devices[] __initdata = {
-       &osk5912_smc91x_device,
-       &osk5912_cf_device,
-};
-
-static void __init osk_init_smc91x(void)
-{
-       if ((omap_request_gpio(0)) < 0) {
-               printk("Error requesting gpio 0 for smc91x irq\n");
-               return;
-       }
-       omap_set_gpio_edge_ctrl(0, OMAP_GPIO_RISING_EDGE);
-
-       /* Check EMIFS wait states to fix errors with SMC_GET_PKT_HDR */
-       EMIFS_CCS(1) |= 0x2;
-}
-
-static void __init osk_init_cf(void)
-{
-       omap_cfg_reg(M7_1610_GPIO62);
-       if ((omap_request_gpio(62)) < 0) {
-               printk("Error requesting gpio 62 for CF irq\n");
-               return;
-       }
-       /* it's really active-low */
-       omap_set_gpio_edge_ctrl(62, OMAP_GPIO_FALLING_EDGE);
-}
-
-void osk_init_irq(void)
-{
-       omap_init_irq();
-       omap_gpio_init();
-       osk_init_smc91x();
-       osk_init_cf();
-}
-
-static struct omap_usb_config osk_usb_config __initdata = {
-       /* has usb host connector (A) ... for development it can also
-        * be used, with a NONSTANDARD gender-bending cable/dongle, as
-        * a peripheral.
-        */
-#ifdef CONFIG_USB_GADGET_OMAP
-       .register_dev   = 1,
-       .hmc_mode       = 0,
-#else
-       .register_host  = 1,
-       .hmc_mode       = 16,
-       .rwc            = 1,
-#endif
-       .pins[0]        = 2,
-};
-
-static struct omap_board_config_kernel osk_config[] = {
-       { OMAP_TAG_USB,           &osk_usb_config },
-};
-
-static void __init osk_init(void)
-{
-       platform_add_devices(osk5912_devices, ARRAY_SIZE(osk5912_devices));
-       omap_board_config = osk_config;
-       omap_board_config_size = ARRAY_SIZE(osk_config);
-       USB_TRANSCEIVER_CTRL_REG |= (3 << 1);
-}
-
-static void __init osk_map_io(void)
-{
-       omap_map_io();
-       iotable_init(osk5912_io_desc, ARRAY_SIZE(osk5912_io_desc));
-       omap_serial_init(osk_serial_ports);
-}
-
-MACHINE_START(OMAP_OSK, "TI-OSK")
-       /* Maintainer: Dirk Behme <dirk.behme@de.bosch.com> */
-       .phys_ram       = 0x10000000,
-       .phys_io        = 0xfff00000,
-       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
-       .boot_params    = 0x10000100,
-       .map_io         = osk_map_io,
-       .init_irq       = osk_init_irq,
-       .init_machine   = osk_init,
-       .timer          = &omap_timer,
-MACHINE_END
diff --git a/arch/arm/mach-omap/board-perseus2.c b/arch/arm/mach-omap/board-perseus2.c
deleted file mode 100644 (file)
index d534204..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * linux/arch/arm/mach-omap/board-perseus2.c
- *
- * Modified from board-generic.c
- *
- * Original OMAP730 support by Jean Pihet <j-pihet@ti.com>
- * Updated for 2.6 by Kevin Hilman <kjh@hilman.org>
- *
- * 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/kernel.h>
-#include <linux/init.h>
-#include <linux/device.h>
-#include <linux/delay.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-
-#include <asm/hardware.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/flash.h>
-#include <asm/mach/map.h>
-
-#include <asm/arch/gpio.h>
-#include <asm/arch/mux.h>
-#include <asm/arch/fpga.h>
-
-#include "common.h"
-
-static struct resource smc91x_resources[] = {
-       [0] = {
-               .start  = H2P2_DBG_FPGA_ETHR_START,     /* Physical */
-               .end    = H2P2_DBG_FPGA_ETHR_START + 0xf,
-               .flags  = IORESOURCE_MEM,
-       },
-       [1] = {
-               .start  = INT_730_MPU_EXT_NIRQ,
-               .end    = 0,
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static int __initdata p2_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 0};
-
-static struct mtd_partition p2_partitions[] = {
-       /* bootloader (U-Boot, etc) in first sector */
-       {
-             .name             = "bootloader",
-             .offset           = 0,
-             .size             = SZ_128K,
-             .mask_flags       = MTD_WRITEABLE, /* force read-only */
-       },
-       /* bootloader params in the next sector */
-       {
-             .name             = "params",
-             .offset           = MTDPART_OFS_APPEND,
-             .size             = SZ_128K,
-             .mask_flags       = 0,
-       },
-       /* kernel */
-       {
-             .name             = "kernel",
-             .offset           = MTDPART_OFS_APPEND,
-             .size             = SZ_2M,
-             .mask_flags       = 0
-       },
-       /* rest of flash is a file system */
-       {
-             .name             = "rootfs",
-             .offset           = MTDPART_OFS_APPEND,
-             .size             = MTDPART_SIZ_FULL,
-             .mask_flags       = 0
-       },
-};
-
-static struct flash_platform_data p2_flash_data = {
-       .map_name       = "cfi_probe",
-       .width          = 2,
-       .parts          = p2_partitions,
-       .nr_parts       = ARRAY_SIZE(p2_partitions),
-};
-
-static struct resource p2_flash_resource = {
-       .start          = OMAP_FLASH_0_START,
-       .end            = OMAP_FLASH_0_START + OMAP_FLASH_0_SIZE - 1,
-       .flags          = IORESOURCE_MEM,
-};
-
-static struct platform_device p2_flash_device = {
-       .name           = "omapflash",
-       .id             = 0,
-       .dev            = {
-               .platform_data  = &p2_flash_data,
-       },
-       .num_resources  = 1,
-       .resource       = &p2_flash_resource,
-};
-
-static struct platform_device smc91x_device = {
-       .name           = "smc91x",
-       .id             = 0,
-       .num_resources  = ARRAY_SIZE(smc91x_resources),
-       .resource       = smc91x_resources,
-};
-
-static struct platform_device *devices[] __initdata = {
-       &p2_flash_device,
-       &smc91x_device,
-};
-
-static void __init omap_perseus2_init(void)
-{
-       (void) platform_add_devices(devices, ARRAY_SIZE(devices));
-}
-
-static void __init perseus2_init_smc91x(void)
-{
-       fpga_write(1, H2P2_DBG_FPGA_LAN_RESET);
-       mdelay(50);
-       fpga_write(fpga_read(H2P2_DBG_FPGA_LAN_RESET) & ~1,
-                  H2P2_DBG_FPGA_LAN_RESET);
-       mdelay(50);
-}
-
-void omap_perseus2_init_irq(void)
-{
-       omap_init_irq();
-       omap_gpio_init();
-       perseus2_init_smc91x();
-}
-
-/* Only FPGA needs to be mapped here. All others are done with ioremap */
-static struct map_desc omap_perseus2_io_desc[] __initdata = {
-       {H2P2_DBG_FPGA_BASE, H2P2_DBG_FPGA_START, H2P2_DBG_FPGA_SIZE,
-        MT_DEVICE},
-};
-
-static void __init omap_perseus2_map_io(void)
-{
-       omap_map_io();
-       iotable_init(omap_perseus2_io_desc,
-                    ARRAY_SIZE(omap_perseus2_io_desc));
-
-       /* Early, board-dependent init */
-
-       /*
-        * Hold GSM Reset until needed
-        */
-       omap_writew(omap_readw(OMAP730_DSP_M_CTL) & ~1, OMAP730_DSP_M_CTL);
-
-       /*
-        * UARTs -> done automagically by 8250 driver
-        */
-
-       /*
-        * CSx timings, GPIO Mux ... setup
-        */
-
-       /* Flash: CS0 timings setup */
-       omap_writel(0x0000fff3, OMAP730_FLASH_CFG_0);
-       omap_writel(0x00000088, OMAP730_FLASH_ACFG_0);
-
-       /*
-        * Ethernet support trough the debug board
-        * CS1 timings setup
-        */
-       omap_writel(0x0000fff3, OMAP730_FLASH_CFG_1);
-       omap_writel(0x00000000, OMAP730_FLASH_ACFG_1);
-
-       /*
-        * Configure MPU_EXT_NIRQ IO in IO_CONF9 register,
-        * It is used as the Ethernet controller interrupt
-        */
-       omap_writel(omap_readl(OMAP730_IO_CONF_9) & 0x1FFFFFFF, OMAP730_IO_CONF_9);
-       omap_serial_init(p2_serial_ports);
-}
-
-MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2")
-       /* Maintainer: Kevin Hilman <kjh@hilman.org> */
-       .phys_ram       = 0x10000000,
-       .phys_io        = 0xfff00000,
-       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
-       .boot_params    = 0x10000100,
-       .map_io         = omap_perseus2_map_io,
-       .init_irq       = omap_perseus2_init_irq,
-       .init_machine   = omap_perseus2_init,
-       .timer          = &omap_timer,
-MACHINE_END
diff --git a/arch/arm/mach-omap/board-voiceblue.c b/arch/arm/mach-omap/board-voiceblue.c
deleted file mode 100644 (file)
index 6b0c500..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-/*
- * linux/arch/arm/mach-omap/board-voiceblue.c
- *
- * Modified from board-generic.c
- *
- * Copyright (C) 2004 2N Telekomunikace, Ladislav Michl <michl@2n.cz>
- *
- * Code for OMAP5910 based VoiceBlue board (VoIP to GSM gateway).
- *
- * 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/delay.h>
-#include <linux/device.h>
-#include <linux/interrupt.h>
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/notifier.h>
-#include <linux/reboot.h>
-#include <linux/serial_8250.h>
-#include <linux/serial_reg.h>
-
-#include <asm/hardware.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-
-#include <asm/arch/gpio.h>
-#include <asm/arch/tc.h>
-#include <asm/arch/mux.h>
-#include <asm/arch/usb.h>
-
-#include "common.h"
-
-extern void omap_init_time(void);
-extern int omap_gpio_init(void);
-
-static struct plat_serial8250_port voiceblue_ports[] = {
-       {
-               .mapbase        = (unsigned long)(OMAP_CS1_PHYS + 0x40000),
-               .irq            = OMAP_GPIO_IRQ(12),
-               .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
-               .iotype         = UPIO_MEM,
-               .regshift       = 1,
-               .uartclk        = 3686400,
-       },
-       {
-               .mapbase        = (unsigned long)(OMAP_CS1_PHYS + 0x50000),
-               .irq            = OMAP_GPIO_IRQ(13),
-               .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
-               .iotype         = UPIO_MEM,
-               .regshift       = 1,
-               .uartclk        = 3686400,
-       },
-       {
-               .mapbase        = (unsigned long)(OMAP_CS1_PHYS + 0x60000),
-               .irq            = OMAP_GPIO_IRQ(14),
-               .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
-               .iotype         = UPIO_MEM,
-               .regshift       = 1,
-               .uartclk        = 3686400,
-       },
-       {
-               .mapbase        = (unsigned long)(OMAP_CS1_PHYS + 0x70000),
-               .irq            = OMAP_GPIO_IRQ(15),
-               .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
-               .iotype         = UPIO_MEM,
-               .regshift       = 1,
-               .uartclk        = 3686400,
-       },
-       { },
-};
-
-static struct platform_device serial_device = {
-       .name                   = "serial8250",
-       .id                     = 1,
-       .dev                    = {
-               .platform_data  = voiceblue_ports,
-       },
-};
-
-static int __init ext_uart_init(void)
-{
-       return platform_device_register(&serial_device);
-}
-arch_initcall(ext_uart_init);
-
-static struct resource voiceblue_smc91x_resources[] = {
-       [0] = {
-               .start  = OMAP_CS2_PHYS + 0x300,
-               .end    = OMAP_CS2_PHYS + 0x300 + 16,
-               .flags  = IORESOURCE_MEM,
-       },
-       [1] = {
-               .start  = OMAP_GPIO_IRQ(8),
-               .end    = OMAP_GPIO_IRQ(8),
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-static struct platform_device voiceblue_smc91x_device = {
-       .name           = "smc91x",
-       .id             = 0,
-       .num_resources  = ARRAY_SIZE(voiceblue_smc91x_resources),
-       .resource       = voiceblue_smc91x_resources,
-};
-
-static struct platform_device *voiceblue_devices[] __initdata = {
-       &voiceblue_smc91x_device,
-};
-
-static struct omap_usb_config voiceblue_usb_config __initdata = {
-       .hmc_mode       = 3,
-       .register_host  = 1,
-       .register_dev   = 1,
-       .pins[0]        = 2,
-       .pins[1]        = 6,
-       .pins[2]        = 6,
-};
-
-static struct omap_board_config_kernel voiceblue_config[] = {
-       { OMAP_TAG_USB, &voiceblue_usb_config },
-};
-
-static void __init voiceblue_init_irq(void)
-{
-       omap_init_irq();
-       omap_gpio_init();
-}
-
-static void __init voiceblue_init(void)
-{
-       /* There is a good chance board is going up, so enable Power LED
-        * (it is connected through invertor) */
-       omap_writeb(0x00, OMAP_LPG1_LCR);
-       /* Watchdog */
-       omap_request_gpio(0);
-       /* smc91x reset */
-       omap_request_gpio(7);
-       omap_set_gpio_direction(7, 0);
-       omap_set_gpio_dataout(7, 1);
-       udelay(2);      /* wait at least 100ns */
-       omap_set_gpio_dataout(7, 0);
-       mdelay(50);     /* 50ms until PHY ready */
-       /* smc91x interrupt pin */
-       omap_request_gpio(8);
-       omap_set_gpio_edge_ctrl(8, OMAP_GPIO_RISING_EDGE);
-       /* 16C554 reset*/
-       omap_request_gpio(6);
-       omap_set_gpio_direction(6, 0);
-       omap_set_gpio_dataout(6, 0);
-       /* 16C554 interrupt pins */
-       omap_request_gpio(12);
-       omap_request_gpio(13);
-       omap_request_gpio(14);
-       omap_request_gpio(15);
-       omap_set_gpio_edge_ctrl(12, OMAP_GPIO_RISING_EDGE);
-       omap_set_gpio_edge_ctrl(13, OMAP_GPIO_RISING_EDGE);
-       omap_set_gpio_edge_ctrl(14, OMAP_GPIO_RISING_EDGE);
-       omap_set_gpio_edge_ctrl(15, OMAP_GPIO_RISING_EDGE);
-
-       platform_add_devices(voiceblue_devices, ARRAY_SIZE(voiceblue_devices));
-       omap_board_config = voiceblue_config;
-       omap_board_config_size = ARRAY_SIZE(voiceblue_config);
-}
-
-static int __initdata omap_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
-
-static void __init voiceblue_map_io(void)
-{
-       omap_map_io();
-       omap_serial_init(omap_serial_ports);
-}
-
-#define MACHINE_PANICED                1
-#define MACHINE_REBOOTING      2
-#define MACHINE_REBOOT         4
-static unsigned long machine_state;
-
-static int panic_event(struct notifier_block *this, unsigned long event,
-        void *ptr)
-{
-       if (test_and_set_bit(MACHINE_PANICED, &machine_state))
-               return NOTIFY_DONE;
-
-       /* Flash Power LED
-        * (TODO: Enable clock right way (enabled in bootloader already)) */
-       omap_writeb(0x78, OMAP_LPG1_LCR);
-
-       return NOTIFY_DONE;
-}
-
-static struct notifier_block panic_block = {
-       .notifier_call  = panic_event,
-};
-
-static int __init setup_notifier(void)
-{
-       /* Setup panic notifier */
-       notifier_chain_register(&panic_notifier_list, &panic_block);
-
-       return 0;
-}
-
-postcore_initcall(setup_notifier);
-
-static int wdt_gpio_state;
-
-void voiceblue_wdt_enable(void)
-{
-       omap_set_gpio_direction(0, 0);
-       omap_set_gpio_dataout(0, 0);
-       omap_set_gpio_dataout(0, 1);
-       omap_set_gpio_dataout(0, 0);
-       wdt_gpio_state = 0;
-}
-
-void voiceblue_wdt_disable(void)
-{
-       omap_set_gpio_dataout(0, 0);
-       omap_set_gpio_dataout(0, 1);
-       omap_set_gpio_dataout(0, 0);
-       omap_set_gpio_direction(0, 1);
-}
-
-void voiceblue_wdt_ping(void)
-{
-       if (test_bit(MACHINE_REBOOT, &machine_state))
-               return;
-
-       wdt_gpio_state = !wdt_gpio_state;
-       omap_set_gpio_dataout(0, wdt_gpio_state);
-}
-
-void voiceblue_reset(void)
-{
-       set_bit(MACHINE_REBOOT, &machine_state);
-       voiceblue_wdt_enable();
-       while (1) ;
-}
-
-EXPORT_SYMBOL(voiceblue_wdt_enable);
-EXPORT_SYMBOL(voiceblue_wdt_disable);
-EXPORT_SYMBOL(voiceblue_wdt_ping);
-
-MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910")
-       /* Maintainer: Ladislav Michl <michl@2n.cz> */
-       .phys_ram       = 0x10000000,
-       .phys_io        = 0xfff00000,
-       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
-       .boot_params    = 0x10000100,
-       .map_io         = voiceblue_map_io,
-       .init_irq       = voiceblue_init_irq,
-       .init_machine   = voiceblue_init,
-       .timer          = &omap_timer,
-MACHINE_END
diff --git a/arch/arm/mach-omap1/board-generic.c b/arch/arm/mach-omap1/board-generic.c
new file mode 100644 (file)
index 0000000..e2d3384
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * linux/arch/arm/mach-omap1/board-generic.c
+ *
+ * Modified from board-innovator1510.c
+ *
+ * Code for generic OMAP board. Should work on many OMAP systems where
+ * the device drivers take care of all the necessary hardware initialization.
+ * Do not put any board specific code to this file; create a new machine
+ * type if you need custom low-level initializations.
+ *
+ * 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/kernel.h>
+#include <linux/init.h>
+#include <linux/device.h>
+
+#include <asm/hardware.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+
+#include <asm/arch/gpio.h>
+#include <asm/arch/mux.h>
+#include <asm/arch/usb.h>
+#include <asm/arch/board.h>
+
+#include "common.h"
+
+static int __initdata generic_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
+
+static void __init omap_generic_init_irq(void)
+{
+       omap_init_irq();
+}
+
+/* assume no Mini-AB port */
+
+#ifdef CONFIG_ARCH_OMAP1510
+static struct omap_usb_config generic1510_usb_config __initdata = {
+       .register_host  = 1,
+       .register_dev   = 1,
+       .hmc_mode       = 16,
+       .pins[0]        = 3,
+};
+#endif
+
+#if defined(CONFIG_ARCH_OMAP16XX)
+static struct omap_usb_config generic1610_usb_config __initdata = {
+       .register_host  = 1,
+       .register_dev   = 1,
+       .hmc_mode       = 16,
+       .pins[0]        = 6,
+};
+#endif
+
+static struct omap_board_config_kernel generic_config[] = {
+       { OMAP_TAG_USB,           NULL },
+};
+
+static void __init omap_generic_init(void)
+{
+       /*
+        * Make sure the serial ports are muxed on at this point.
+        * You have to mux them off in device drivers later on
+        * if not needed.
+        */
+#ifdef CONFIG_ARCH_OMAP1510
+       if (cpu_is_omap1510()) {
+               generic_config[0].data = &generic1510_usb_config;
+       }
+#endif
+#if defined(CONFIG_ARCH_OMAP16XX)
+       if (!cpu_is_omap1510()) {
+               generic_config[0].data = &generic1610_usb_config;
+       }
+#endif
+       omap_board_config = generic_config;
+       omap_board_config_size = ARRAY_SIZE(generic_config);
+       omap_serial_init(generic_serial_ports);
+}
+
+static void __init omap_generic_map_io(void)
+{
+       omap_map_io();
+}
+
+MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710")
+       /* Maintainer: Tony Lindgren <tony@atomide.com> */
+       .phys_ram       = 0x10000000,
+       .phys_io        = 0xfff00000,
+       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
+       .boot_params    = 0x10000100,
+       .map_io         = omap_generic_map_io,
+       .init_irq       = omap_generic_init_irq,
+       .init_machine   = omap_generic_init,
+       .timer          = &omap_timer,
+MACHINE_END
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c
new file mode 100644 (file)
index 0000000..02c7e33
--- /dev/null
@@ -0,0 +1,189 @@
+/*
+ * linux/arch/arm/mach-omap1/board-h2.c
+ *
+ * Board specific inits for OMAP-1610 H2
+ *
+ * Copyright (C) 2001 RidgeRun, Inc.
+ * Author: Greg Lonnon <glonnon@ridgerun.com>
+ *
+ * Copyright (C) 2002 MontaVista Software, Inc.
+ *
+ * Separated FPGA interrupts from innovator1510.c and cleaned up for 2.6
+ * Copyright (C) 2004 Nokia Corporation by Tony Lindrgen <tony@atomide.com>
+ *
+ * H2 specific changes and cleanup
+ * Copyright (C) 2004 Nokia Corporation by Imre Deak <imre.deak@nokia.com>
+ *
+ * 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/kernel.h>
+#include <linux/init.h>
+#include <linux/device.h>
+#include <linux/delay.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+
+#include <asm/hardware.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/flash.h>
+#include <asm/mach/map.h>
+
+#include <asm/arch/gpio.h>
+#include <asm/arch/tc.h>
+#include <asm/arch/usb.h>
+
+#include "common.h"
+
+extern int omap_gpio_init(void);
+
+static int __initdata h2_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
+
+static struct mtd_partition h2_partitions[] = {
+       /* bootloader (U-Boot, etc) in first sector */
+       {
+             .name             = "bootloader",
+             .offset           = 0,
+             .size             = SZ_128K,
+             .mask_flags       = MTD_WRITEABLE, /* force read-only */
+       },
+       /* bootloader params in the next sector */
+       {
+             .name             = "params",
+             .offset           = MTDPART_OFS_APPEND,
+             .size             = SZ_128K,
+             .mask_flags       = 0,
+       },
+       /* kernel */
+       {
+             .name             = "kernel",
+             .offset           = MTDPART_OFS_APPEND,
+             .size             = SZ_2M,
+             .mask_flags       = 0
+       },
+       /* file system */
+       {
+             .name             = "filesystem",
+             .offset           = MTDPART_OFS_APPEND,
+             .size             = MTDPART_SIZ_FULL,
+             .mask_flags       = 0
+       }
+};
+
+static struct flash_platform_data h2_flash_data = {
+       .map_name       = "cfi_probe",
+       .width          = 2,
+       .parts          = h2_partitions,
+       .nr_parts       = ARRAY_SIZE(h2_partitions),
+};
+
+static struct resource h2_flash_resource = {
+       .start          = OMAP_CS2B_PHYS,
+       .end            = OMAP_CS2B_PHYS + OMAP_CS2B_SIZE - 1,
+       .flags          = IORESOURCE_MEM,
+};
+
+static struct platform_device h2_flash_device = {
+       .name           = "omapflash",
+       .id             = 0,
+       .dev            = {
+               .platform_data  = &h2_flash_data,
+       },
+       .num_resources  = 1,
+       .resource       = &h2_flash_resource,
+};
+
+static struct resource h2_smc91x_resources[] = {
+       [0] = {
+               .start  = OMAP1610_ETHR_START,          /* Physical */
+               .end    = OMAP1610_ETHR_START + 0xf,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = OMAP_GPIO_IRQ(0),
+               .end    = OMAP_GPIO_IRQ(0),
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device h2_smc91x_device = {
+       .name           = "smc91x",
+       .id             = 0,
+       .num_resources  = ARRAY_SIZE(h2_smc91x_resources),
+       .resource       = h2_smc91x_resources,
+};
+
+static struct platform_device *h2_devices[] __initdata = {
+       &h2_flash_device,
+       &h2_smc91x_device,
+};
+
+static void __init h2_init_smc91x(void)
+{
+       if ((omap_request_gpio(0)) < 0) {
+               printk("Error requesting gpio 0 for smc91x irq\n");
+               return;
+       }
+       omap_set_gpio_edge_ctrl(0, OMAP_GPIO_FALLING_EDGE);
+}
+
+void h2_init_irq(void)
+{
+       omap_init_irq();
+       omap_gpio_init();
+       h2_init_smc91x();
+}
+
+static struct omap_usb_config h2_usb_config __initdata = {
+       /* usb1 has a Mini-AB port and external isp1301 transceiver */
+       .otg            = 2,
+
+#ifdef CONFIG_USB_GADGET_OMAP
+       .hmc_mode       = 19,   // 0:host(off) 1:dev|otg 2:disabled
+       // .hmc_mode    = 21,   // 0:host(off) 1:dev(loopback) 2:host(loopback)
+#elif  defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
+       /* needs OTG cable, or NONSTANDARD (B-to-MiniB) */
+       .hmc_mode       = 20,   // 1:dev|otg(off) 1:host 2:disabled
+#endif
+
+       .pins[1]        = 3,
+};
+
+static struct omap_mmc_config h2_mmc_config __initdata = {
+       .mmc_blocks             = 1,
+       .mmc1_power_pin         = -1,   /* tps65010 gpio3 */
+       .mmc1_switch_pin        = OMAP_MPUIO(1),
+};
+
+static struct omap_board_config_kernel h2_config[] = {
+       { OMAP_TAG_USB,           &h2_usb_config },
+       { OMAP_TAG_MMC,           &h2_mmc_config },
+};
+
+static void __init h2_init(void)
+{
+       platform_add_devices(h2_devices, ARRAY_SIZE(h2_devices));
+       omap_board_config = h2_config;
+       omap_board_config_size = ARRAY_SIZE(h2_config);
+}
+
+static void __init h2_map_io(void)
+{
+       omap_map_io();
+       omap_serial_init(h2_serial_ports);
+}
+
+MACHINE_START(OMAP_H2, "TI-H2")
+       /* Maintainer: Imre Deak <imre.deak@nokia.com> */
+       .phys_ram       = 0x10000000,
+       .phys_io        = 0xfff00000,
+       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
+       .boot_params    = 0x10000100,
+       .map_io         = h2_map_io,
+       .init_irq       = h2_init_irq,
+       .init_machine   = h2_init,
+       .timer          = &omap_timer,
+MACHINE_END
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c
new file mode 100644 (file)
index 0000000..3ff6eb8
--- /dev/null
@@ -0,0 +1,207 @@
+/*
+ * linux/arch/arm/mach-omap1/board-h3.c
+ *
+ * This file contains OMAP1710 H3 specific code.
+ *
+ * Copyright (C) 2004 Texas Instruments, Inc.
+ * Copyright (C) 2002 MontaVista Software, Inc.
+ * Copyright (C) 2001 RidgeRun, Inc.
+ * Author: RidgeRun, Inc.
+ *         Greg Lonnon (glonnon@ridgerun.com) or info@ridgerun.com
+ *
+ * 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/config.h>
+#include <linux/types.h>
+#include <linux/init.h>
+#include <linux/major.h>
+#include <linux/kernel.h>
+#include <linux/device.h>
+#include <linux/errno.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+
+#include <asm/setup.h>
+#include <asm/page.h>
+#include <asm/hardware.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/flash.h>
+#include <asm/mach/map.h>
+
+#include <asm/arch/gpio.h>
+#include <asm/arch/irqs.h>
+#include <asm/arch/mux.h>
+#include <asm/arch/tc.h>
+#include <asm/arch/usb.h>
+
+#include "common.h"
+
+extern int omap_gpio_init(void);
+
+static int __initdata h3_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
+
+static struct mtd_partition h3_partitions[] = {
+       /* bootloader (U-Boot, etc) in first sector */
+       {
+             .name             = "bootloader",
+             .offset           = 0,
+             .size             = SZ_128K,
+             .mask_flags       = MTD_WRITEABLE, /* force read-only */
+       },
+       /* bootloader params in the next sector */
+       {
+             .name             = "params",
+             .offset           = MTDPART_OFS_APPEND,
+             .size             = SZ_128K,
+             .mask_flags       = 0,
+       },
+       /* kernel */
+       {
+             .name             = "kernel",
+             .offset           = MTDPART_OFS_APPEND,
+             .size             = SZ_2M,
+             .mask_flags       = 0
+       },
+       /* file system */
+       {
+             .name             = "filesystem",
+             .offset           = MTDPART_OFS_APPEND,
+             .size             = MTDPART_SIZ_FULL,
+             .mask_flags       = 0
+       }
+};
+
+static struct flash_platform_data h3_flash_data = {
+       .map_name       = "cfi_probe",
+       .width          = 2,
+       .parts          = h3_partitions,
+       .nr_parts       = ARRAY_SIZE(h3_partitions),
+};
+
+static struct resource h3_flash_resource = {
+       .start          = OMAP_CS2B_PHYS,
+       .end            = OMAP_CS2B_PHYS + OMAP_CS2B_SIZE - 1,
+       .flags          = IORESOURCE_MEM,
+};
+
+static struct platform_device flash_device = {
+       .name           = "omapflash",
+       .id             = 0,
+       .dev            = {
+               .platform_data  = &h3_flash_data,
+       },
+       .num_resources  = 1,
+       .resource       = &h3_flash_resource,
+};
+
+static struct resource smc91x_resources[] = {
+       [0] = {
+               .start  = OMAP1710_ETHR_START,          /* Physical */
+               .end    = OMAP1710_ETHR_START + 0xf,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = OMAP_GPIO_IRQ(40),
+               .end    = OMAP_GPIO_IRQ(40),
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device smc91x_device = {
+       .name           = "smc91x",
+       .id             = 0,
+       .num_resources  = ARRAY_SIZE(smc91x_resources),
+       .resource       = smc91x_resources,
+};
+
+#define GPTIMER_BASE           0xFFFB1400
+#define GPTIMER_REGS(x)        (0xFFFB1400 + (x * 0x800))
+#define GPTIMER_REGS_SIZE      0x46
+
+static struct resource intlat_resources[] = {
+       [0] = {
+               .start  = GPTIMER_REGS(0),            /* Physical */
+               .end    = GPTIMER_REGS(0) + GPTIMER_REGS_SIZE,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = INT_1610_GPTIMER1,
+               .end    = INT_1610_GPTIMER1,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device intlat_device = {
+       .name      = "omap_intlat",
+       .id          = 0,
+       .num_resources  = ARRAY_SIZE(intlat_resources),
+       .resource       = intlat_resources,
+};
+
+static struct platform_device *devices[] __initdata = {
+       &flash_device,
+        &smc91x_device,
+       &intlat_device,
+};
+
+static struct omap_usb_config h3_usb_config __initdata = {
+       /* usb1 has a Mini-AB port and external isp1301 transceiver */
+       .otg        = 2,
+
+#ifdef CONFIG_USB_GADGET_OMAP
+       .hmc_mode       = 19,   /* 0:host(off) 1:dev|otg 2:disabled */
+#elif  defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
+       /* NONSTANDARD CABLE NEEDED (B-to-Mini-B) */
+       .hmc_mode       = 20,   /* 1:dev|otg(off) 1:host 2:disabled */
+#endif
+
+       .pins[1]        = 3,
+};
+
+static struct omap_board_config_kernel h3_config[] = {
+       { OMAP_TAG_USB,  &h3_usb_config },
+};
+
+static void __init h3_init(void)
+{
+       (void) platform_add_devices(devices, ARRAY_SIZE(devices));
+}
+
+static void __init h3_init_smc91x(void)
+{
+       omap_cfg_reg(W15_1710_GPIO40);
+       if (omap_request_gpio(40) < 0) {
+               printk("Error requesting gpio 40 for smc91x irq\n");
+               return;
+       }
+       omap_set_gpio_edge_ctrl(40, OMAP_GPIO_FALLING_EDGE);
+}
+
+void h3_init_irq(void)
+{
+       omap_init_irq();
+       omap_gpio_init();
+       h3_init_smc91x();
+}
+
+static void __init h3_map_io(void)
+{
+       omap_map_io();
+       omap_serial_init(h3_serial_ports);
+}
+
+MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board")
+       /* Maintainer: Texas Instruments, Inc. */
+       .phys_ram       = 0x10000000,
+       .phys_io        = 0xfff00000,
+       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
+       .boot_params    = 0x10000100,
+       .map_io         = h3_map_io,
+       .init_irq       = h3_init_irq,
+       .init_machine   = h3_init,
+       .timer          = &omap_timer,
+MACHINE_END
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c
new file mode 100644 (file)
index 0000000..944e235
--- /dev/null
@@ -0,0 +1,282 @@
+/*
+ * linux/arch/arm/mach-omap1/board-innovator.c
+ *
+ * Board specific inits for OMAP-1510 and OMAP-1610 Innovator
+ *
+ * Copyright (C) 2001 RidgeRun, Inc.
+ * Author: Greg Lonnon <glonnon@ridgerun.com>
+ *
+ * Copyright (C) 2002 MontaVista Software, Inc.
+ *
+ * Separated FPGA interrupts from innovator1510.c and cleaned up for 2.6
+ * Copyright (C) 2004 Nokia Corporation by Tony Lindrgen <tony@atomide.com>
+ *
+ * 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/kernel.h>
+#include <linux/init.h>
+#include <linux/device.h>
+#include <linux/delay.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+
+#include <asm/hardware.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/flash.h>
+#include <asm/mach/map.h>
+
+#include <asm/arch/fpga.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/tc.h>
+#include <asm/arch/usb.h>
+
+#include "common.h"
+
+static int __initdata innovator_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
+
+static struct mtd_partition innovator_partitions[] = {
+       /* bootloader (U-Boot, etc) in first sector */
+       {
+             .name             = "bootloader",
+             .offset           = 0,
+             .size             = SZ_128K,
+             .mask_flags       = MTD_WRITEABLE, /* force read-only */
+       },
+       /* bootloader params in the next sector */
+       {
+             .name             = "params",
+             .offset           = MTDPART_OFS_APPEND,
+             .size             = SZ_128K,
+             .mask_flags       = 0,
+       },
+       /* kernel */
+       {
+             .name             = "kernel",
+             .offset           = MTDPART_OFS_APPEND,
+             .size             = SZ_2M,
+             .mask_flags       = 0
+       },
+       /* rest of flash1 is a file system */
+       {
+             .name             = "rootfs",
+             .offset           = MTDPART_OFS_APPEND,
+             .size             = SZ_16M - SZ_2M - 2 * SZ_128K,
+             .mask_flags       = 0
+       },
+       /* file system */
+       {
+             .name             = "filesystem",
+             .offset           = MTDPART_OFS_APPEND,
+             .size             = MTDPART_SIZ_FULL,
+             .mask_flags       = 0
+       }
+};
+
+static struct flash_platform_data innovator_flash_data = {
+       .map_name       = "cfi_probe",
+       .width          = 2,
+       .parts          = innovator_partitions,
+       .nr_parts       = ARRAY_SIZE(innovator_partitions),
+};
+
+static struct resource innovator_flash_resource = {
+       .start          = OMAP_CS0_PHYS,
+       .end            = OMAP_CS0_PHYS + SZ_32M - 1,
+       .flags          = IORESOURCE_MEM,
+};
+
+static struct platform_device innovator_flash_device = {
+       .name           = "omapflash",
+       .id             = 0,
+       .dev            = {
+               .platform_data  = &innovator_flash_data,
+       },
+       .num_resources  = 1,
+       .resource       = &innovator_flash_resource,
+};
+
+#ifdef CONFIG_ARCH_OMAP1510
+
+/* Only FPGA needs to be mapped here. All others are done with ioremap */
+static struct map_desc innovator1510_io_desc[] __initdata = {
+{ OMAP1510_FPGA_BASE, OMAP1510_FPGA_START, OMAP1510_FPGA_SIZE,
+       MT_DEVICE },
+};
+
+static struct resource innovator1510_smc91x_resources[] = {
+       [0] = {
+               .start  = OMAP1510_FPGA_ETHR_START,     /* Physical */
+               .end    = OMAP1510_FPGA_ETHR_START + 0xf,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = OMAP1510_INT_ETHER,
+               .end    = OMAP1510_INT_ETHER,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device innovator1510_smc91x_device = {
+       .name           = "smc91x",
+       .id             = 0,
+       .num_resources  = ARRAY_SIZE(innovator1510_smc91x_resources),
+       .resource       = innovator1510_smc91x_resources,
+};
+
+static struct platform_device *innovator1510_devices[] __initdata = {
+       &innovator_flash_device,
+       &innovator1510_smc91x_device,
+};
+
+#endif /* CONFIG_ARCH_OMAP1510 */
+
+#ifdef CONFIG_ARCH_OMAP16XX
+
+static struct resource innovator1610_smc91x_resources[] = {
+       [0] = {
+               .start  = INNOVATOR1610_ETHR_START,             /* Physical */
+               .end    = INNOVATOR1610_ETHR_START + 0xf,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = OMAP_GPIO_IRQ(0),
+               .end    = OMAP_GPIO_IRQ(0),
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device innovator1610_smc91x_device = {
+       .name           = "smc91x",
+       .id             = 0,
+       .num_resources  = ARRAY_SIZE(innovator1610_smc91x_resources),
+       .resource       = innovator1610_smc91x_resources,
+};
+
+static struct platform_device *innovator1610_devices[] __initdata = {
+       &innovator_flash_device,
+       &innovator1610_smc91x_device,
+};
+
+#endif /* CONFIG_ARCH_OMAP16XX */
+
+static void __init innovator_init_smc91x(void)
+{
+       if (cpu_is_omap1510()) {
+               fpga_write(fpga_read(OMAP1510_FPGA_RST) & ~1,
+                          OMAP1510_FPGA_RST);
+               udelay(750);
+       } else {
+               if ((omap_request_gpio(0)) < 0) {
+                       printk("Error requesting gpio 0 for smc91x irq\n");
+                       return;
+               }
+               omap_set_gpio_edge_ctrl(0, OMAP_GPIO_RISING_EDGE);
+       }
+}
+
+void innovator_init_irq(void)
+{
+       omap_init_irq();
+       omap_gpio_init();
+#ifdef CONFIG_ARCH_OMAP1510
+       if (cpu_is_omap1510()) {
+               omap1510_fpga_init_irq();
+       }
+#endif
+       innovator_init_smc91x();
+}
+
+#ifdef CONFIG_ARCH_OMAP1510
+static struct omap_usb_config innovator1510_usb_config __initdata = {
+       /* for bundled non-standard host and peripheral cables */
+       .hmc_mode       = 4,
+
+       .register_host  = 1,
+       .pins[1]        = 6,
+       .pins[2]        = 6,            /* Conflicts with UART2 */
+
+       .register_dev   = 1,
+       .pins[0]        = 2,
+};
+#endif
+
+#ifdef CONFIG_ARCH_OMAP16XX
+static struct omap_usb_config h2_usb_config __initdata = {
+       /* usb1 has a Mini-AB port and external isp1301 transceiver */
+       .otg            = 2,
+
+#ifdef CONFIG_USB_GADGET_OMAP
+       .hmc_mode       = 19,   // 0:host(off) 1:dev|otg 2:disabled
+       // .hmc_mode    = 21,   // 0:host(off) 1:dev(loopback) 2:host(loopback)
+#elif  defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
+       /* NONSTANDARD CABLE NEEDED (B-to-Mini-B) */
+       .hmc_mode       = 20,   // 1:dev|otg(off) 1:host 2:disabled
+#endif
+
+       .pins[1]        = 3,
+};
+#endif
+
+static struct omap_board_config_kernel innovator_config[] = {
+       { OMAP_TAG_USB,         NULL },
+};
+
+static void __init innovator_init(void)
+{
+#ifdef CONFIG_ARCH_OMAP1510
+       if (cpu_is_omap1510()) {
+               platform_add_devices(innovator1510_devices, ARRAY_SIZE(innovator1510_devices));
+       }
+#endif
+#ifdef CONFIG_ARCH_OMAP16XX
+       if (!cpu_is_omap1510()) {
+               platform_add_devices(innovator1610_devices, ARRAY_SIZE(innovator1610_devices));
+       }
+#endif
+
+#ifdef CONFIG_ARCH_OMAP1510
+       if (cpu_is_omap1510())
+               innovator_config[0].data = &innovator1510_usb_config;
+#endif
+#ifdef CONFIG_ARCH_OMAP16XX
+       if (cpu_is_omap1610())
+               innovator_config[0].data = &h2_usb_config;
+#endif
+       omap_board_config = innovator_config;
+       omap_board_config_size = ARRAY_SIZE(innovator_config);
+}
+
+static void __init innovator_map_io(void)
+{
+       omap_map_io();
+
+#ifdef CONFIG_ARCH_OMAP1510
+       if (cpu_is_omap1510()) {
+               iotable_init(innovator1510_io_desc, ARRAY_SIZE(innovator1510_io_desc));
+               udelay(10);     /* Delay needed for FPGA */
+
+               /* Dump the Innovator FPGA rev early - useful info for support. */
+               printk("Innovator FPGA Rev %d.%d Board Rev %d\n",
+                      fpga_read(OMAP1510_FPGA_REV_HIGH),
+                      fpga_read(OMAP1510_FPGA_REV_LOW),
+                      fpga_read(OMAP1510_FPGA_BOARD_REV));
+       }
+#endif
+       omap_serial_init(innovator_serial_ports);
+}
+
+MACHINE_START(OMAP_INNOVATOR, "TI-Innovator")
+       /* Maintainer: MontaVista Software, Inc. */
+       .phys_ram       = 0x10000000,
+       .phys_io        = 0xfff00000,
+       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
+       .boot_params    = 0x10000100,
+       .map_io         = innovator_map_io,
+       .init_irq       = innovator_init_irq,
+       .init_machine   = innovator_init,
+       .timer          = &omap_timer,
+MACHINE_END
diff --git a/arch/arm/mach-omap1/board-netstar.c b/arch/arm/mach-omap1/board-netstar.c
new file mode 100644 (file)
index 0000000..8c65373
--- /dev/null
@@ -0,0 +1,153 @@
+/*
+ * Modified from board-generic.c
+ *
+ * Copyright (C) 2004 2N Telekomunikace, Ladislav Michl <michl@2n.cz>
+ *
+ * Code for Netstar OMAP board.
+ *
+ * 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/delay.h>
+#include <linux/device.h>
+#include <linux/interrupt.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/notifier.h>
+#include <linux/reboot.h>
+
+#include <asm/hardware.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+
+#include <asm/arch/gpio.h>
+#include <asm/arch/mux.h>
+#include <asm/arch/usb.h>
+
+#include "common.h"
+
+extern void __init omap_init_time(void);
+extern int omap_gpio_init(void);
+
+static struct resource netstar_smc91x_resources[] = {
+       [0] = {
+               .start  = OMAP_CS1_PHYS + 0x300,
+               .end    = OMAP_CS1_PHYS + 0x300 + 16,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = OMAP_GPIO_IRQ(8),
+               .end    = OMAP_GPIO_IRQ(8),
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device netstar_smc91x_device = {
+       .name           = "smc91x",
+       .id             = 0,
+       .num_resources  = ARRAY_SIZE(netstar_smc91x_resources),
+       .resource       = netstar_smc91x_resources,
+};
+
+static struct platform_device *netstar_devices[] __initdata = {
+       &netstar_smc91x_device,
+};
+
+static void __init netstar_init_irq(void)
+{
+       omap_init_irq();
+       omap_gpio_init();
+}
+
+static void __init netstar_init(void)
+{
+       /* green LED */
+       omap_request_gpio(4);
+       omap_set_gpio_direction(4, 0);
+       /* smc91x reset */
+       omap_request_gpio(7);
+       omap_set_gpio_direction(7, 0);
+       omap_set_gpio_dataout(7, 1);
+       udelay(2);      /* wait at least 100ns */
+       omap_set_gpio_dataout(7, 0);
+       mdelay(50);     /* 50ms until PHY ready */
+       /* smc91x interrupt pin */
+       omap_request_gpio(8);
+       omap_set_gpio_edge_ctrl(8, OMAP_GPIO_RISING_EDGE);
+
+       omap_request_gpio(12);
+       omap_request_gpio(13);
+       omap_request_gpio(14);
+       omap_request_gpio(15);
+       omap_set_gpio_edge_ctrl(12, OMAP_GPIO_FALLING_EDGE);
+       omap_set_gpio_edge_ctrl(13, OMAP_GPIO_FALLING_EDGE);
+       omap_set_gpio_edge_ctrl(14, OMAP_GPIO_FALLING_EDGE);
+       omap_set_gpio_edge_ctrl(15, OMAP_GPIO_FALLING_EDGE);
+
+       platform_add_devices(netstar_devices, ARRAY_SIZE(netstar_devices));
+
+       /* Switch on green LED */
+       omap_set_gpio_dataout(4, 0);
+       /* Switch off red LED */
+       omap_writeb(0x00, OMAP_LPG1_PMR);       /* Disable clock */
+       omap_writeb(0x80, OMAP_LPG1_LCR);
+}
+
+static int __initdata omap_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
+
+static void __init netstar_map_io(void)
+{
+       omap_map_io();
+       omap_serial_init(omap_serial_ports);
+}
+
+#define MACHINE_PANICED                1
+#define MACHINE_REBOOTING      2
+#define MACHINE_REBOOT         4
+static unsigned long machine_state;
+
+static int panic_event(struct notifier_block *this, unsigned long event,
+        void *ptr)
+{
+       if (test_and_set_bit(MACHINE_PANICED, &machine_state))
+               return NOTIFY_DONE;
+
+       /* Switch off green LED */
+       omap_set_gpio_dataout(4, 1);
+       /* Flash red LED */
+       omap_writeb(0x78, OMAP_LPG1_LCR);
+       omap_writeb(0x01, OMAP_LPG1_PMR);       /* Enable clock */
+
+       return NOTIFY_DONE;
+}
+
+static struct notifier_block panic_block = {
+       .notifier_call  = panic_event,
+};
+
+static int __init netstar_late_init(void)
+{
+       /* TODO: Setup front panel switch here */
+
+       /* Setup panic notifier */
+       notifier_chain_register(&panic_notifier_list, &panic_block);
+
+       return 0;
+}
+
+postcore_initcall(netstar_late_init);
+
+MACHINE_START(NETSTAR, "NetStar OMAP5910")
+       /* Maintainer: Ladislav Michl <michl@2n.cz> */
+       .phys_ram       = 0x10000000,
+       .phys_io        = 0xfff00000,
+       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
+       .boot_params    = 0x10000100,
+       .map_io         = netstar_map_io,
+       .init_irq       = netstar_init_irq,
+       .init_machine   = netstar_init,
+       .timer          = &omap_timer,
+MACHINE_END
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c
new file mode 100644 (file)
index 0000000..b9e3273
--- /dev/null
@@ -0,0 +1,171 @@
+/*
+ * linux/arch/arm/mach-omap1/board-osk.c
+ *
+ * Board specific init for OMAP5912 OSK
+ *
+ * Written by Dirk Behme <dirk.behme@de.bosch.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * You should have received a copy of the  GNU General Public License along
+ * with this program; if not, write  to the Free Software Foundation, Inc.,
+ * 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/device.h>
+
+#include <asm/hardware.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+
+#include <asm/arch/gpio.h>
+#include <asm/arch/usb.h>
+#include <asm/arch/mux.h>
+#include <asm/arch/tc.h>
+
+#include "common.h"
+
+static struct map_desc osk5912_io_desc[] __initdata = {
+{ OMAP_OSK_NOR_FLASH_BASE, OMAP_OSK_NOR_FLASH_START, OMAP_OSK_NOR_FLASH_SIZE,
+       MT_DEVICE },
+};
+
+static int __initdata osk_serial_ports[OMAP_MAX_NR_PORTS] = {1, 0, 0};
+
+static struct resource osk5912_smc91x_resources[] = {
+       [0] = {
+               .start  = OMAP_OSK_ETHR_START,          /* Physical */
+               .end    = OMAP_OSK_ETHR_START + 0xf,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = OMAP_GPIO_IRQ(0),
+               .end    = OMAP_GPIO_IRQ(0),
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device osk5912_smc91x_device = {
+       .name           = "smc91x",
+       .id             = -1,
+       .num_resources  = ARRAY_SIZE(osk5912_smc91x_resources),
+       .resource       = osk5912_smc91x_resources,
+};
+
+static struct resource osk5912_cf_resources[] = {
+       [0] = {
+               .start  = OMAP_GPIO_IRQ(62),
+               .end    = OMAP_GPIO_IRQ(62),
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device osk5912_cf_device = {
+       .name           = "omap_cf",
+       .id             = -1,
+       .dev = {
+               .platform_data  = (void *) 2 /* CS2 */,
+       },
+       .num_resources  = ARRAY_SIZE(osk5912_cf_resources),
+       .resource       = osk5912_cf_resources,
+};
+
+static struct platform_device *osk5912_devices[] __initdata = {
+       &osk5912_smc91x_device,
+       &osk5912_cf_device,
+};
+
+static void __init osk_init_smc91x(void)
+{
+       if ((omap_request_gpio(0)) < 0) {
+               printk("Error requesting gpio 0 for smc91x irq\n");
+               return;
+       }
+       omap_set_gpio_edge_ctrl(0, OMAP_GPIO_RISING_EDGE);
+
+       /* Check EMIFS wait states to fix errors with SMC_GET_PKT_HDR */
+       EMIFS_CCS(1) |= 0x2;
+}
+
+static void __init osk_init_cf(void)
+{
+       omap_cfg_reg(M7_1610_GPIO62);
+       if ((omap_request_gpio(62)) < 0) {
+               printk("Error requesting gpio 62 for CF irq\n");
+               return;
+       }
+       /* it's really active-low */
+       omap_set_gpio_edge_ctrl(62, OMAP_GPIO_FALLING_EDGE);
+}
+
+void osk_init_irq(void)
+{
+       omap_init_irq();
+       omap_gpio_init();
+       osk_init_smc91x();
+       osk_init_cf();
+}
+
+static struct omap_usb_config osk_usb_config __initdata = {
+       /* has usb host connector (A) ... for development it can also
+        * be used, with a NONSTANDARD gender-bending cable/dongle, as
+        * a peripheral.
+        */
+#ifdef CONFIG_USB_GADGET_OMAP
+       .register_dev   = 1,
+       .hmc_mode       = 0,
+#else
+       .register_host  = 1,
+       .hmc_mode       = 16,
+       .rwc            = 1,
+#endif
+       .pins[0]        = 2,
+};
+
+static struct omap_board_config_kernel osk_config[] = {
+       { OMAP_TAG_USB,           &osk_usb_config },
+};
+
+static void __init osk_init(void)
+{
+       platform_add_devices(osk5912_devices, ARRAY_SIZE(osk5912_devices));
+       omap_board_config = osk_config;
+       omap_board_config_size = ARRAY_SIZE(osk_config);
+       USB_TRANSCEIVER_CTRL_REG |= (3 << 1);
+}
+
+static void __init osk_map_io(void)
+{
+       omap_map_io();
+       iotable_init(osk5912_io_desc, ARRAY_SIZE(osk5912_io_desc));
+       omap_serial_init(osk_serial_ports);
+}
+
+MACHINE_START(OMAP_OSK, "TI-OSK")
+       /* Maintainer: Dirk Behme <dirk.behme@de.bosch.com> */
+       .phys_ram       = 0x10000000,
+       .phys_io        = 0xfff00000,
+       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
+       .boot_params    = 0x10000100,
+       .map_io         = osk_map_io,
+       .init_irq       = osk_init_irq,
+       .init_machine   = osk_init,
+       .timer          = &omap_timer,
+MACHINE_END
diff --git a/arch/arm/mach-omap1/board-perseus2.c b/arch/arm/mach-omap1/board-perseus2.c
new file mode 100644 (file)
index 0000000..0d46052
--- /dev/null
@@ -0,0 +1,191 @@
+/*
+ * linux/arch/arm/mach-omap1/board-perseus2.c
+ *
+ * Modified from board-generic.c
+ *
+ * Original OMAP730 support by Jean Pihet <j-pihet@ti.com>
+ * Updated for 2.6 by Kevin Hilman <kjh@hilman.org>
+ *
+ * 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/kernel.h>
+#include <linux/init.h>
+#include <linux/device.h>
+#include <linux/delay.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+
+#include <asm/hardware.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/flash.h>
+#include <asm/mach/map.h>
+
+#include <asm/arch/gpio.h>
+#include <asm/arch/mux.h>
+#include <asm/arch/fpga.h>
+
+#include "common.h"
+
+static struct resource smc91x_resources[] = {
+       [0] = {
+               .start  = H2P2_DBG_FPGA_ETHR_START,     /* Physical */
+               .end    = H2P2_DBG_FPGA_ETHR_START + 0xf,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = INT_730_MPU_EXT_NIRQ,
+               .end    = 0,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static int __initdata p2_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 0};
+
+static struct mtd_partition p2_partitions[] = {
+       /* bootloader (U-Boot, etc) in first sector */
+       {
+             .name             = "bootloader",
+             .offset           = 0,
+             .size             = SZ_128K,
+             .mask_flags       = MTD_WRITEABLE, /* force read-only */
+       },
+       /* bootloader params in the next sector */
+       {
+             .name             = "params",
+             .offset           = MTDPART_OFS_APPEND,
+             .size             = SZ_128K,
+             .mask_flags       = 0,
+       },
+       /* kernel */
+       {
+             .name             = "kernel",
+             .offset           = MTDPART_OFS_APPEND,
+             .size             = SZ_2M,
+             .mask_flags       = 0
+       },
+       /* rest of flash is a file system */
+       {
+             .name             = "rootfs",
+             .offset           = MTDPART_OFS_APPEND,
+             .size             = MTDPART_SIZ_FULL,
+             .mask_flags       = 0
+       },
+};
+
+static struct flash_platform_data p2_flash_data = {
+       .map_name       = "cfi_probe",
+       .width          = 2,
+       .parts          = p2_partitions,
+       .nr_parts       = ARRAY_SIZE(p2_partitions),
+};
+
+static struct resource p2_flash_resource = {
+       .start          = OMAP_FLASH_0_START,
+       .end            = OMAP_FLASH_0_START + OMAP_FLASH_0_SIZE - 1,
+       .flags          = IORESOURCE_MEM,
+};
+
+static struct platform_device p2_flash_device = {
+       .name           = "omapflash",
+       .id             = 0,
+       .dev            = {
+               .platform_data  = &p2_flash_data,
+       },
+       .num_resources  = 1,
+       .resource       = &p2_flash_resource,
+};
+
+static struct platform_device smc91x_device = {
+       .name           = "smc91x",
+       .id             = 0,
+       .num_resources  = ARRAY_SIZE(smc91x_resources),
+       .resource       = smc91x_resources,
+};
+
+static struct platform_device *devices[] __initdata = {
+       &p2_flash_device,
+       &smc91x_device,
+};
+
+static void __init omap_perseus2_init(void)
+{
+       (void) platform_add_devices(devices, ARRAY_SIZE(devices));
+}
+
+static void __init perseus2_init_smc91x(void)
+{
+       fpga_write(1, H2P2_DBG_FPGA_LAN_RESET);
+       mdelay(50);
+       fpga_write(fpga_read(H2P2_DBG_FPGA_LAN_RESET) & ~1,
+                  H2P2_DBG_FPGA_LAN_RESET);
+       mdelay(50);
+}
+
+void omap_perseus2_init_irq(void)
+{
+       omap_init_irq();
+       omap_gpio_init();
+       perseus2_init_smc91x();
+}
+
+/* Only FPGA needs to be mapped here. All others are done with ioremap */
+static struct map_desc omap_perseus2_io_desc[] __initdata = {
+       {H2P2_DBG_FPGA_BASE, H2P2_DBG_FPGA_START, H2P2_DBG_FPGA_SIZE,
+        MT_DEVICE},
+};
+
+static void __init omap_perseus2_map_io(void)
+{
+       omap_map_io();
+       iotable_init(omap_perseus2_io_desc,
+                    ARRAY_SIZE(omap_perseus2_io_desc));
+
+       /* Early, board-dependent init */
+
+       /*
+        * Hold GSM Reset until needed
+        */
+       omap_writew(omap_readw(OMAP730_DSP_M_CTL) & ~1, OMAP730_DSP_M_CTL);
+
+       /*
+        * UARTs -> done automagically by 8250 driver
+        */
+
+       /*
+        * CSx timings, GPIO Mux ... setup
+        */
+
+       /* Flash: CS0 timings setup */
+       omap_writel(0x0000fff3, OMAP730_FLASH_CFG_0);
+       omap_writel(0x00000088, OMAP730_FLASH_ACFG_0);
+
+       /*
+        * Ethernet support trough the debug board
+        * CS1 timings setup
+        */
+       omap_writel(0x0000fff3, OMAP730_FLASH_CFG_1);
+       omap_writel(0x00000000, OMAP730_FLASH_ACFG_1);
+
+       /*
+        * Configure MPU_EXT_NIRQ IO in IO_CONF9 register,
+        * It is used as the Ethernet controller interrupt
+        */
+       omap_writel(omap_readl(OMAP730_IO_CONF_9) & 0x1FFFFFFF, OMAP730_IO_CONF_9);
+       omap_serial_init(p2_serial_ports);
+}
+
+MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2")
+       /* Maintainer: Kevin Hilman <kjh@hilman.org> */
+       .phys_ram       = 0x10000000,
+       .phys_io        = 0xfff00000,
+       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
+       .boot_params    = 0x10000100,
+       .map_io         = omap_perseus2_map_io,
+       .init_irq       = omap_perseus2_init_irq,
+       .init_machine   = omap_perseus2_init,
+       .timer          = &omap_timer,
+MACHINE_END
diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c
new file mode 100644 (file)
index 0000000..d882f43
--- /dev/null
@@ -0,0 +1,258 @@
+/*
+ * linux/arch/arm/mach-omap1/board-voiceblue.c
+ *
+ * Modified from board-generic.c
+ *
+ * Copyright (C) 2004 2N Telekomunikace, Ladislav Michl <michl@2n.cz>
+ *
+ * Code for OMAP5910 based VoiceBlue board (VoIP to GSM gateway).
+ *
+ * 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/delay.h>
+#include <linux/device.h>
+#include <linux/interrupt.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/notifier.h>
+#include <linux/reboot.h>
+#include <linux/serial_8250.h>
+#include <linux/serial_reg.h>
+
+#include <asm/hardware.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+
+#include <asm/arch/gpio.h>
+#include <asm/arch/tc.h>
+#include <asm/arch/mux.h>
+#include <asm/arch/usb.h>
+
+#include "common.h"
+
+extern void omap_init_time(void);
+extern int omap_gpio_init(void);
+
+static struct plat_serial8250_port voiceblue_ports[] = {
+       {
+               .mapbase        = (unsigned long)(OMAP_CS1_PHYS + 0x40000),
+               .irq            = OMAP_GPIO_IRQ(12),
+               .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
+               .iotype         = UPIO_MEM,
+               .regshift       = 1,
+               .uartclk        = 3686400,
+       },
+       {
+               .mapbase        = (unsigned long)(OMAP_CS1_PHYS + 0x50000),
+               .irq            = OMAP_GPIO_IRQ(13),
+               .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
+               .iotype         = UPIO_MEM,
+               .regshift       = 1,
+               .uartclk        = 3686400,
+       },
+       {
+               .mapbase        = (unsigned long)(OMAP_CS1_PHYS + 0x60000),
+               .irq            = OMAP_GPIO_IRQ(14),
+               .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
+               .iotype         = UPIO_MEM,
+               .regshift       = 1,
+               .uartclk        = 3686400,
+       },
+       {
+               .mapbase        = (unsigned long)(OMAP_CS1_PHYS + 0x70000),
+               .irq            = OMAP_GPIO_IRQ(15),
+               .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
+               .iotype         = UPIO_MEM,
+               .regshift       = 1,
+               .uartclk        = 3686400,
+       },
+       { },
+};
+
+static struct platform_device serial_device = {
+       .name                   = "serial8250",
+       .id                     = 1,
+       .dev                    = {
+               .platform_data  = voiceblue_ports,
+       },
+};
+
+static int __init ext_uart_init(void)
+{
+       return platform_device_register(&serial_device);
+}
+arch_initcall(ext_uart_init);
+
+static struct resource voiceblue_smc91x_resources[] = {
+       [0] = {
+               .start  = OMAP_CS2_PHYS + 0x300,
+               .end    = OMAP_CS2_PHYS + 0x300 + 16,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = OMAP_GPIO_IRQ(8),
+               .end    = OMAP_GPIO_IRQ(8),
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device voiceblue_smc91x_device = {
+       .name           = "smc91x",
+       .id             = 0,
+       .num_resources  = ARRAY_SIZE(voiceblue_smc91x_resources),
+       .resource       = voiceblue_smc91x_resources,
+};
+
+static struct platform_device *voiceblue_devices[] __initdata = {
+       &voiceblue_smc91x_device,
+};
+
+static struct omap_usb_config voiceblue_usb_config __initdata = {
+       .hmc_mode       = 3,
+       .register_host  = 1,
+       .register_dev   = 1,
+       .pins[0]        = 2,
+       .pins[1]        = 6,
+       .pins[2]        = 6,
+};
+
+static struct omap_board_config_kernel voiceblue_config[] = {
+       { OMAP_TAG_USB, &voiceblue_usb_config },
+};
+
+static void __init voiceblue_init_irq(void)
+{
+       omap_init_irq();
+       omap_gpio_init();
+}
+
+static void __init voiceblue_init(void)
+{
+       /* There is a good chance board is going up, so enable Power LED
+        * (it is connected through invertor) */
+       omap_writeb(0x00, OMAP_LPG1_LCR);
+       /* Watchdog */
+       omap_request_gpio(0);
+       /* smc91x reset */
+       omap_request_gpio(7);
+       omap_set_gpio_direction(7, 0);
+       omap_set_gpio_dataout(7, 1);
+       udelay(2);      /* wait at least 100ns */
+       omap_set_gpio_dataout(7, 0);
+       mdelay(50);     /* 50ms until PHY ready */
+       /* smc91x interrupt pin */
+       omap_request_gpio(8);
+       omap_set_gpio_edge_ctrl(8, OMAP_GPIO_RISING_EDGE);
+       /* 16C554 reset*/
+       omap_request_gpio(6);
+       omap_set_gpio_direction(6, 0);
+       omap_set_gpio_dataout(6, 0);
+       /* 16C554 interrupt pins */
+       omap_request_gpio(12);
+       omap_request_gpio(13);
+       omap_request_gpio(14);
+       omap_request_gpio(15);
+       omap_set_gpio_edge_ctrl(12, OMAP_GPIO_RISING_EDGE);
+       omap_set_gpio_edge_ctrl(13, OMAP_GPIO_RISING_EDGE);
+       omap_set_gpio_edge_ctrl(14, OMAP_GPIO_RISING_EDGE);
+       omap_set_gpio_edge_ctrl(15, OMAP_GPIO_RISING_EDGE);
+
+       platform_add_devices(voiceblue_devices, ARRAY_SIZE(voiceblue_devices));
+       omap_board_config = voiceblue_config;
+       omap_board_config_size = ARRAY_SIZE(voiceblue_config);
+}
+
+static int __initdata omap_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
+
+static void __init voiceblue_map_io(void)
+{
+       omap_map_io();
+       omap_serial_init(omap_serial_ports);
+}
+
+#define MACHINE_PANICED                1
+#define MACHINE_REBOOTING      2
+#define MACHINE_REBOOT         4
+static unsigned long machine_state;
+
+static int panic_event(struct notifier_block *this, unsigned long event,
+        void *ptr)
+{
+       if (test_and_set_bit(MACHINE_PANICED, &machine_state))
+               return NOTIFY_DONE;
+
+       /* Flash Power LED
+        * (TODO: Enable clock right way (enabled in bootloader already)) */
+       omap_writeb(0x78, OMAP_LPG1_LCR);
+
+       return NOTIFY_DONE;
+}
+
+static struct notifier_block panic_block = {
+       .notifier_call  = panic_event,
+};
+
+static int __init setup_notifier(void)
+{
+       /* Setup panic notifier */
+       notifier_chain_register(&panic_notifier_list, &panic_block);
+
+       return 0;
+}
+
+postcore_initcall(setup_notifier);
+
+static int wdt_gpio_state;
+
+void voiceblue_wdt_enable(void)
+{
+       omap_set_gpio_direction(0, 0);
+       omap_set_gpio_dataout(0, 0);
+       omap_set_gpio_dataout(0, 1);
+       omap_set_gpio_dataout(0, 0);
+       wdt_gpio_state = 0;
+}
+
+void voiceblue_wdt_disable(void)
+{
+       omap_set_gpio_dataout(0, 0);
+       omap_set_gpio_dataout(0, 1);
+       omap_set_gpio_dataout(0, 0);
+       omap_set_gpio_direction(0, 1);
+}
+
+void voiceblue_wdt_ping(void)
+{
+       if (test_bit(MACHINE_REBOOT, &machine_state))
+               return;
+
+       wdt_gpio_state = !wdt_gpio_state;
+       omap_set_gpio_dataout(0, wdt_gpio_state);
+}
+
+void voiceblue_reset(void)
+{
+       set_bit(MACHINE_REBOOT, &machine_state);
+       voiceblue_wdt_enable();
+       while (1) ;
+}
+
+EXPORT_SYMBOL(voiceblue_wdt_enable);
+EXPORT_SYMBOL(voiceblue_wdt_disable);
+EXPORT_SYMBOL(voiceblue_wdt_ping);
+
+MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910")
+       /* Maintainer: Ladislav Michl <michl@2n.cz> */
+       .phys_ram       = 0x10000000,
+       .phys_io        = 0xfff00000,
+       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
+       .boot_params    = 0x10000100,
+       .map_io         = voiceblue_map_io,
+       .init_irq       = voiceblue_init_irq,
+       .init_machine   = voiceblue_init,
+       .timer          = &omap_timer,
+MACHINE_END