Merge branch 'depends/rmk/devel-stable' into next/board
authorArnd Bergmann <arnd@arndb.de>
Mon, 31 Oct 2011 22:58:06 +0000 (23:58 +0100)
committerArnd Bergmann <arnd@arndb.de>
Mon, 31 Oct 2011 23:11:41 +0000 (00:11 +0100)
The exynos4 updates conflict with code from the arm devel-stable branch
and new boards need to set atag_offset in place of boot_param.

Conflicts:
arch/arm/Kconfig
arch/arm/mach-exynos4/include/mach/entry-macro.S
arch/arm/mach-exynos4/mach-smdkc210.c
arch/arm/mach-exynos4/mach-smdkv310.c
arch/arm/mach-exynos4/mct.c

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
70 files changed:
1  2 
arch/arm/Kconfig
arch/arm/kernel/smp_scu.c
arch/arm/mach-ep93xx/edb93xx.c
arch/arm/mach-ep93xx/simone.c
arch/arm/mach-ep93xx/snappercl15.c
arch/arm/mach-ep93xx/vision_ep9307.c
arch/arm/mach-exynos4/include/mach/entry-macro.S
arch/arm/mach-exynos4/mct.c
arch/arm/mach-exynos4/platsmp.c
arch/arm/mach-imx/mach-mx27ads.c
arch/arm/mach-integrator/integrator_ap.c
arch/arm/mach-ixp4xx/dsmg600-setup.c
arch/arm/mach-ixp4xx/fsg-setup.c
arch/arm/mach-ixp4xx/nas100d-setup.c
arch/arm/mach-ixp4xx/nslu2-setup.c
arch/arm/mach-ixp4xx/omixp-setup.c
arch/arm/mach-ks8695/board-acs5k.c
arch/arm/mach-ks8695/board-dsm320.c
arch/arm/mach-ks8695/board-micrel.c
arch/arm/mach-lpc32xx/phy3250.c
arch/arm/mach-msm/board-msm7x27.c
arch/arm/mach-msm/board-msm7x30.c
arch/arm/mach-msm/board-qsd8x50.c
arch/arm/mach-msm/board-sapphire.c
arch/arm/mach-nomadik/board-nhk8815.c
arch/arm/mach-omap1/board-ams-delta.c
arch/arm/mach-omap1/board-fsample.c
arch/arm/mach-omap1/board-generic.c
arch/arm/mach-omap1/board-h2.c
arch/arm/mach-omap1/board-h3.c
arch/arm/mach-omap1/board-htcherald.c
arch/arm/mach-omap1/board-innovator.c
arch/arm/mach-omap1/board-nokia770.c
arch/arm/mach-omap1/board-osk.c
arch/arm/mach-omap1/board-palmte.c
arch/arm/mach-omap1/board-palmtt.c
arch/arm/mach-omap1/board-palmz71.c
arch/arm/mach-omap1/board-perseus2.c
arch/arm/mach-omap1/board-sx1.c
arch/arm/mach-omap1/board-voiceblue.c
arch/arm/mach-omap2/board-generic.c
arch/arm/mach-omap2/board-h4.c
arch/arm/mach-omap2/board-ldp.c
arch/arm/mach-orion5x/db88f5281-setup.c
arch/arm/mach-orion5x/dns323-setup.c
arch/arm/mach-orion5x/kurobox_pro-setup.c
arch/arm/mach-orion5x/mv2120-setup.c
arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
arch/arm/mach-orion5x/rd88f5182-setup.c
arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
arch/arm/mach-orion5x/terastation_pro2-setup.c
arch/arm/mach-orion5x/ts209-setup.c
arch/arm/mach-orion5x/ts409-setup.c
arch/arm/mach-orion5x/wnr854t-setup.c
arch/arm/mach-orion5x/wrt350n-v2-setup.c
arch/arm/mach-pxa/irq.c
arch/arm/mach-pxa/lpd270.c
arch/arm/mach-pxa/mainstone.c
arch/arm/mach-pxa/saarb.c
arch/arm/mach-s3c64xx/cpu.c
arch/arm/mach-s3c64xx/mach-smdk6410.c
arch/arm/mach-tegra/board-harmony.c
arch/arm/mach-tegra/board-paz00.c
arch/arm/mach-tegra/board-seaboard.c
arch/arm/mach-tegra/board-trimslice.c
arch/arm/mach-u300/core.c
arch/arm/mach-ux500/board-mop500.c
arch/arm/mach-ux500/board-u5500.c
arch/arm/mm/dma-mapping.c

@@@ -835,7 -861,7 +861,8 @@@ config ARCH_U30
        select CLKDEV_LOOKUP
        select HAVE_MACH_CLKDEV
        select GENERIC_GPIO
 +      select ARCH_REQUIRE_GPIOLIB
+       select NEED_MACH_MEMORY_H
        help
          Support for ST-Ericsson U300 series mobile platforms.
  
Simple merge
Simple merge
Simple merge
Simple merge
index 10f6488,0000000..d96e4db
mode 100644,000000..100644
--- /dev/null
@@@ -1,364 -1,0 +1,364 @@@
-       .boot_params    = EP93XX_SDCE0_PHYS_BASE + 0x100,
 +/*
 + * arch/arm/mach-ep93xx/vision_ep9307.c
 + * Vision Engraving Systems EP9307 SoM support.
 + *
 + * Copyright (C) 2008-2011 Vision Engraving Systems
 + * H Hartley Sweeten <hsweeten@visionengravers.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.
 + */
 +
 +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 +
 +#include <linux/kernel.h>
 +#include <linux/init.h>
 +#include <linux/platform_device.h>
 +#include <linux/irq.h>
 +#include <linux/gpio.h>
 +#include <linux/fb.h>
 +#include <linux/io.h>
 +#include <linux/mtd/partitions.h>
 +#include <linux/i2c.h>
 +#include <linux/i2c-gpio.h>
 +#include <linux/i2c/pca953x.h>
 +#include <linux/spi/spi.h>
 +#include <linux/spi/flash.h>
 +#include <linux/spi/mmc_spi.h>
 +#include <linux/mmc/host.h>
 +
 +#include <mach/hardware.h>
 +#include <mach/fb.h>
 +#include <mach/ep93xx_spi.h>
 +
 +#include <asm/mach-types.h>
 +#include <asm/mach/map.h>
 +#include <asm/mach/arch.h>
 +
 +/*************************************************************************
 + * Static I/O mappings for the FPGA
 + *************************************************************************/
 +#define VISION_PHYS_BASE      EP93XX_CS7_PHYS_BASE
 +#define VISION_VIRT_BASE      0xfebff000
 +
 +static struct map_desc vision_io_desc[] __initdata = {
 +      {
 +              .virtual        = VISION_VIRT_BASE,
 +              .pfn            = __phys_to_pfn(VISION_PHYS_BASE),
 +              .length         = SZ_4K,
 +              .type           = MT_DEVICE,
 +      },
 +};
 +
 +static void __init vision_map_io(void)
 +{
 +      ep93xx_map_io();
 +
 +      iotable_init(vision_io_desc, ARRAY_SIZE(vision_io_desc));
 +}
 +
 +/*************************************************************************
 + * Ethernet
 + *************************************************************************/
 +static struct ep93xx_eth_data vision_eth_data __initdata = {
 +      .phy_id         = 1,
 +};
 +
 +/*************************************************************************
 + * Framebuffer
 + *************************************************************************/
 +#define VISION_LCD_ENABLE     EP93XX_GPIO_LINE_EGPIO1
 +
 +static int vision_lcd_setup(struct platform_device *pdev)
 +{
 +      int err;
 +
 +      err = gpio_request_one(VISION_LCD_ENABLE, GPIOF_INIT_HIGH,
 +                              dev_name(&pdev->dev));
 +      if (err)
 +              return err;
 +
 +      ep93xx_devcfg_clear_bits(EP93XX_SYSCON_DEVCFG_RAS |
 +                               EP93XX_SYSCON_DEVCFG_RASONP3 |
 +                               EP93XX_SYSCON_DEVCFG_EXVC);
 +
 +      return 0;
 +}
 +
 +static void vision_lcd_teardown(struct platform_device *pdev)
 +{
 +      gpio_free(VISION_LCD_ENABLE);
 +}
 +
 +static void vision_lcd_blank(int blank_mode, struct fb_info *info)
 +{
 +      if (blank_mode)
 +              gpio_set_value(VISION_LCD_ENABLE, 0);
 +      else
 +              gpio_set_value(VISION_LCD_ENABLE, 1);
 +}
 +
 +static struct ep93xxfb_mach_info ep93xxfb_info __initdata = {
 +      .num_modes      = EP93XXFB_USE_MODEDB,
 +      .bpp            = 16,
 +      .flags          = EP93XXFB_USE_SDCSN0 | EP93XXFB_PCLK_FALLING,
 +      .setup          = vision_lcd_setup,
 +      .teardown       = vision_lcd_teardown,
 +      .blank          = vision_lcd_blank,
 +};
 +
 +
 +/*************************************************************************
 + * GPIO Expanders
 + *************************************************************************/
 +#define PCA9539_74_GPIO_BASE  (EP93XX_GPIO_LINE_MAX + 1)
 +#define PCA9539_75_GPIO_BASE  (PCA9539_74_GPIO_BASE + 16)
 +#define PCA9539_76_GPIO_BASE  (PCA9539_75_GPIO_BASE + 16)
 +#define PCA9539_77_GPIO_BASE  (PCA9539_76_GPIO_BASE + 16)
 +
 +static struct pca953x_platform_data pca953x_74_gpio_data = {
 +      .gpio_base      = PCA9539_74_GPIO_BASE,
 +      .irq_base       = EP93XX_BOARD_IRQ(0),
 +};
 +
 +static struct pca953x_platform_data pca953x_75_gpio_data = {
 +      .gpio_base      = PCA9539_75_GPIO_BASE,
 +      .irq_base       = -1,
 +};
 +
 +static struct pca953x_platform_data pca953x_76_gpio_data = {
 +      .gpio_base      = PCA9539_76_GPIO_BASE,
 +      .irq_base       = -1,
 +};
 +
 +static struct pca953x_platform_data pca953x_77_gpio_data = {
 +      .gpio_base      = PCA9539_77_GPIO_BASE,
 +      .irq_base       = -1,
 +};
 +
 +/*************************************************************************
 + * I2C Bus
 + *************************************************************************/
 +static struct i2c_gpio_platform_data vision_i2c_gpio_data __initdata = {
 +      .sda_pin                = EP93XX_GPIO_LINE_EEDAT,
 +      .scl_pin                = EP93XX_GPIO_LINE_EECLK,
 +};
 +
 +static struct i2c_board_info vision_i2c_info[] __initdata = {
 +      {
 +              I2C_BOARD_INFO("isl1208", 0x6f),
 +              .irq            = IRQ_EP93XX_EXT1,
 +      }, {
 +              I2C_BOARD_INFO("pca9539", 0x74),
 +              .platform_data  = &pca953x_74_gpio_data,
 +              .irq            = gpio_to_irq(EP93XX_GPIO_LINE_F(7)),
 +      }, {
 +              I2C_BOARD_INFO("pca9539", 0x75),
 +              .platform_data  = &pca953x_75_gpio_data,
 +      }, {
 +              I2C_BOARD_INFO("pca9539", 0x76),
 +              .platform_data  = &pca953x_76_gpio_data,
 +      }, {
 +              I2C_BOARD_INFO("pca9539", 0x77),
 +              .platform_data  = &pca953x_77_gpio_data,
 +      },
 +};
 +
 +/*************************************************************************
 + * SPI Flash
 + *************************************************************************/
 +#define VISION_SPI_FLASH_CS   EP93XX_GPIO_LINE_EGPIO7
 +
 +static struct mtd_partition vision_spi_flash_partitions[] = {
 +      {
 +              .name   = "SPI bootstrap",
 +              .offset = 0,
 +              .size   = SZ_4K,
 +      }, {
 +              .name   = "Bootstrap config",
 +              .offset = MTDPART_OFS_APPEND,
 +              .size   = SZ_4K,
 +      }, {
 +              .name   = "System config",
 +              .offset = MTDPART_OFS_APPEND,
 +              .size   = MTDPART_SIZ_FULL,
 +      },
 +};
 +
 +static struct flash_platform_data vision_spi_flash_data = {
 +      .name           = "SPI Flash",
 +      .parts          = vision_spi_flash_partitions,
 +      .nr_parts       = ARRAY_SIZE(vision_spi_flash_partitions),
 +};
 +
 +static int vision_spi_flash_hw_setup(struct spi_device *spi)
 +{
 +      return gpio_request_one(VISION_SPI_FLASH_CS, GPIOF_INIT_HIGH,
 +                              spi->modalias);
 +}
 +
 +static void vision_spi_flash_hw_cleanup(struct spi_device *spi)
 +{
 +      gpio_free(VISION_SPI_FLASH_CS);
 +}
 +
 +static void vision_spi_flash_hw_cs_control(struct spi_device *spi, int value)
 +{
 +      gpio_set_value(VISION_SPI_FLASH_CS, value);
 +}
 +
 +static struct ep93xx_spi_chip_ops vision_spi_flash_hw = {
 +      .setup          = vision_spi_flash_hw_setup,
 +      .cleanup        = vision_spi_flash_hw_cleanup,
 +      .cs_control     = vision_spi_flash_hw_cs_control,
 +};
 +
 +/*************************************************************************
 + * SPI SD/MMC host
 + *************************************************************************/
 +#define VISION_SPI_MMC_CS     EP93XX_GPIO_LINE_G(2)
 +#define VISION_SPI_MMC_WP     EP93XX_GPIO_LINE_F(0)
 +#define VISION_SPI_MMC_CD     EP93XX_GPIO_LINE_EGPIO15
 +
 +static struct gpio vision_spi_mmc_gpios[] = {
 +      { VISION_SPI_MMC_WP, GPIOF_DIR_IN, "mmc_spi:wp" },
 +      { VISION_SPI_MMC_CD, GPIOF_DIR_IN, "mmc_spi:cd" },
 +};
 +
 +static int vision_spi_mmc_init(struct device *pdev,
 +                      irqreturn_t (*func)(int, void *), void *pdata)
 +{
 +      int err;
 +
 +      err = gpio_request_array(vision_spi_mmc_gpios,
 +                               ARRAY_SIZE(vision_spi_mmc_gpios));
 +      if (err)
 +              return err;
 +
 +      err = gpio_set_debounce(VISION_SPI_MMC_CD, 1);
 +      if (err)
 +              goto exit_err;
 +
 +      err = request_irq(gpio_to_irq(VISION_SPI_MMC_CD), func,
 +                      IRQ_TYPE_EDGE_BOTH, "mmc_spi:cd", pdata);
 +      if (err)
 +              goto exit_err;
 +
 +      return 0;
 +
 +exit_err:
 +      gpio_free_array(vision_spi_mmc_gpios, ARRAY_SIZE(vision_spi_mmc_gpios));
 +      return err;
 +
 +}
 +
 +static void vision_spi_mmc_exit(struct device *pdev, void *pdata)
 +{
 +      free_irq(gpio_to_irq(VISION_SPI_MMC_CD), pdata);
 +      gpio_free_array(vision_spi_mmc_gpios, ARRAY_SIZE(vision_spi_mmc_gpios));
 +}
 +
 +static int vision_spi_mmc_get_ro(struct device *pdev)
 +{
 +      return !!gpio_get_value(VISION_SPI_MMC_WP);
 +}
 +
 +static int vision_spi_mmc_get_cd(struct device *pdev)
 +{
 +      return !gpio_get_value(VISION_SPI_MMC_CD);
 +}
 +
 +static struct mmc_spi_platform_data vision_spi_mmc_data = {
 +      .init           = vision_spi_mmc_init,
 +      .exit           = vision_spi_mmc_exit,
 +      .get_ro         = vision_spi_mmc_get_ro,
 +      .get_cd         = vision_spi_mmc_get_cd,
 +      .detect_delay   = 100,
 +      .powerup_msecs  = 100,
 +      .ocr_mask       = MMC_VDD_32_33 | MMC_VDD_33_34,
 +};
 +
 +static int vision_spi_mmc_hw_setup(struct spi_device *spi)
 +{
 +      return gpio_request_one(VISION_SPI_MMC_CS, GPIOF_INIT_HIGH,
 +                              spi->modalias);
 +}
 +
 +static void vision_spi_mmc_hw_cleanup(struct spi_device *spi)
 +{
 +      gpio_free(VISION_SPI_MMC_CS);
 +}
 +
 +static void vision_spi_mmc_hw_cs_control(struct spi_device *spi, int value)
 +{
 +      gpio_set_value(VISION_SPI_MMC_CS, value);
 +}
 +
 +static struct ep93xx_spi_chip_ops vision_spi_mmc_hw = {
 +      .setup          = vision_spi_mmc_hw_setup,
 +      .cleanup        = vision_spi_mmc_hw_cleanup,
 +      .cs_control     = vision_spi_mmc_hw_cs_control,
 +};
 +
 +/*************************************************************************
 + * SPI Bus
 + *************************************************************************/
 +static struct spi_board_info vision_spi_board_info[] __initdata = {
 +      {
 +              .modalias               = "sst25l",
 +              .platform_data          = &vision_spi_flash_data,
 +              .controller_data        = &vision_spi_flash_hw,
 +              .max_speed_hz           = 20000000,
 +              .bus_num                = 0,
 +              .chip_select            = 0,
 +              .mode                   = SPI_MODE_3,
 +      }, {
 +              .modalias               = "mmc_spi",
 +              .platform_data          = &vision_spi_mmc_data,
 +              .controller_data        = &vision_spi_mmc_hw,
 +              .max_speed_hz           = 20000000,
 +              .bus_num                = 0,
 +              .chip_select            = 1,
 +              .mode                   = SPI_MODE_3,
 +      },
 +};
 +
 +static struct ep93xx_spi_info vision_spi_master __initdata = {
 +      .num_chipselect         = ARRAY_SIZE(vision_spi_board_info),
 +};
 +
 +/*************************************************************************
 + * Machine Initialization
 + *************************************************************************/
 +static void __init vision_init_machine(void)
 +{
 +      ep93xx_init_devices();
 +      ep93xx_register_flash(2, EP93XX_CS6_PHYS_BASE, SZ_64M);
 +      ep93xx_register_eth(&vision_eth_data, 1);
 +      ep93xx_register_fb(&ep93xxfb_info);
 +      ep93xx_register_pwm(1, 0);
 +
 +      /*
 +       * Request the gpio expander's interrupt gpio line now to prevent
 +       * the kernel from doing a WARN in gpiolib:gpio_ensure_requested().
 +       */
 +      if (gpio_request_one(EP93XX_GPIO_LINE_F(7), GPIOF_DIR_IN,
 +                              "pca9539:74"))
 +              pr_warn("cannot request interrupt gpio for pca9539:74\n");
 +
 +      ep93xx_register_i2c(&vision_i2c_gpio_data, vision_i2c_info,
 +                              ARRAY_SIZE(vision_i2c_info));
 +      ep93xx_register_spi(&vision_spi_master, vision_spi_board_info,
 +                              ARRAY_SIZE(vision_spi_board_info));
 +}
 +
 +MACHINE_START(VISION_EP9307, "Vision Engraving Systems EP9307")
 +      /* Maintainer: H Hartley Sweeten <hsweeten@visionengravers.com> */
++      .atag_offset    = 0x100,
 +      .map_io         = vision_map_io,
 +      .init_irq       = ep93xx_init_irq,
 +      .timer          = &ep93xx_timer,
 +      .init_machine   = vision_init_machine,
 +MACHINE_END
@@@ -400,34 -378,28 +400,34 @@@ static void exynos4_mct_tick_init(struc
  
        exynos4_mct_write(0x1, mct_tick[cpu].base + MCT_L_TCNTB_OFFSET);
  
 -      if (cpu == 0) {
 -              mct_tick0_event_irq.dev_id = &mct_tick[cpu];
 -              evt->irq = IRQ_MCT_L0;
 -              setup_irq(IRQ_MCT_L0, &mct_tick0_event_irq);
 +      if (mct_int_type == MCT_INT_SPI) {
 +              if (cpu == 0) {
 +                      mct_tick0_event_irq.dev_id = &mct_tick[cpu];
++                      evt->irq = IRQ_MCT_L0;
 +                      setup_irq(IRQ_MCT_L0, &mct_tick0_event_irq);
 +              } else {
 +                      mct_tick1_event_irq.dev_id = &mct_tick[cpu];
++                      evt->irq = IRQ_MCT_L1;
 +                      setup_irq(IRQ_MCT_L1, &mct_tick1_event_irq);
 +                      irq_set_affinity(IRQ_MCT_L1, cpumask_of(1));
 +              }
        } else {
 -              mct_tick1_event_irq.dev_id = &mct_tick[cpu];
 -              evt->irq = IRQ_MCT_L1;
 -              setup_irq(IRQ_MCT_L1, &mct_tick1_event_irq);
 -              irq_set_affinity(IRQ_MCT_L1, cpumask_of(1));
 +              gic_enable_ppi(IRQ_MCT_LOCALTIMER);
        }
  }
  
  /* Setup the local clock events for a CPU */
 -void __cpuinit local_timer_setup(struct clock_event_device *evt)
 +int __cpuinit local_timer_setup(struct clock_event_device *evt)
  {
        exynos4_mct_tick_init(evt);
 +
 +      return 0;
  }
  
int local_timer_ack(void)
void local_timer_stop(struct clock_event_device *evt)
  {
-       unsigned int cpu = smp_processor_id();
-       struct mct_clock_event_device *mevt = &mct_tick[cpu];
-       return exynos4_mct_tick_clear(mevt);
+       evt->set_mode(CLOCK_EVT_MODE_UNUSED, evt);
+       disable_irq(evt->irq);
  }
  
  #endif /* CONFIG_LOCAL_TIMERS */
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 4dfdc69,0000000..3b6a81a
mode 100644,000000..100644
--- /dev/null
@@@ -1,273 -1,0 +1,273 @@@
-       .boot_params    = 0x100,
 +/*
 + * arch/arm/mach-ixp4xx/omixp-setup.c
 + *
 + * omicron ixp4xx board setup
 + *      Copyright (C) 2009 OMICRON electronics GmbH
 + *
 + * based nslu2-setup.c, ixdp425-setup.c:
 + *      Copyright (C) 2003-2004 MontaVista Software, Inc.
 + *
 + * 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/serial.h>
 +#include <linux/serial_8250.h>
 +#include <linux/mtd/mtd.h>
 +#include <linux/mtd/partitions.h>
 +#ifdef CONFIG_LEDS_CLASS
 +#include <linux/leds.h>
 +#endif
 +
 +#include <asm/setup.h>
 +#include <asm/memory.h>
 +#include <asm/mach-types.h>
 +#include <asm/mach/arch.h>
 +#include <asm/mach/flash.h>
 +
 +static struct resource omixp_flash_resources[] = {
 +      {
 +              .flags  = IORESOURCE_MEM,
 +      }, {
 +              .flags  = IORESOURCE_MEM,
 +      },
 +};
 +
 +static struct mtd_partition omixp_partitions[] = {
 +      {
 +              .name =         "Recovery Bootloader",
 +              .size =         0x00020000,
 +              .offset =       0,
 +      }, {
 +              .name =         "Calibration Data",
 +              .size =         0x00020000,
 +              .offset =       0x00020000,
 +      }, {
 +              .name =         "Recovery FPGA",
 +              .size =         0x00020000,
 +              .offset =       0x00040000,
 +      }, {
 +              .name =         "Release Bootloader",
 +              .size =         0x00020000,
 +              .offset =       0x00060000,
 +      }, {
 +              .name =         "Release FPGA",
 +              .size =         0x00020000,
 +              .offset =       0x00080000,
 +      }, {
 +              .name =         "Kernel",
 +              .size =         0x00160000,
 +              .offset =       0x000a0000,
 +      }, {
 +              .name =         "Filesystem",
 +              .size =         0x00C00000,
 +              .offset =       0x00200000,
 +      }, {
 +              .name =         "Persistent Storage",
 +              .size =         0x00200000,
 +              .offset =       0x00E00000,
 +      },
 +};
 +
 +static struct flash_platform_data omixp_flash_data[] = {
 +      {
 +              .map_name       = "cfi_probe",
 +              .parts          = omixp_partitions,
 +              .nr_parts       = ARRAY_SIZE(omixp_partitions),
 +      }, {
 +              .map_name       = "cfi_probe",
 +              .parts          = NULL,
 +              .nr_parts       = 0,
 +      },
 +};
 +
 +static struct platform_device omixp_flash_device[] = {
 +      {
 +              .name           = "IXP4XX-Flash",
 +              .id             = 0,
 +              .dev = {
 +                      .platform_data = &omixp_flash_data[0],
 +              },
 +              .resource = &omixp_flash_resources[0],
 +              .num_resources = 1,
 +      }, {
 +              .name           = "IXP4XX-Flash",
 +              .id             = 1,
 +              .dev = {
 +                      .platform_data = &omixp_flash_data[1],
 +              },
 +              .resource = &omixp_flash_resources[1],
 +              .num_resources = 1,
 +      },
 +};
 +
 +/* Swap UART's - These boards have the console on UART2. The following
 + * configuration is used:
 + *      ttyS0 .. UART2
 + *      ttyS1 .. UART1
 + * This way standard images can be used with the kernel that expect
 + * the console on ttyS0.
 + */
 +static struct resource omixp_uart_resources[] = {
 +      {
 +              .start          = IXP4XX_UART2_BASE_PHYS,
 +              .end            = IXP4XX_UART2_BASE_PHYS + 0x0fff,
 +              .flags          = IORESOURCE_MEM,
 +      }, {
 +              .start          = IXP4XX_UART1_BASE_PHYS,
 +              .end            = IXP4XX_UART1_BASE_PHYS + 0x0fff,
 +              .flags          = IORESOURCE_MEM,
 +      },
 +};
 +
 +static struct plat_serial8250_port omixp_uart_data[] = {
 +      {
 +              .mapbase        = IXP4XX_UART2_BASE_PHYS,
 +              .membase        = (char *)IXP4XX_UART2_BASE_VIRT + REG_OFFSET,
 +              .irq            = IRQ_IXP4XX_UART2,
 +              .flags          = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
 +              .iotype         = UPIO_MEM,
 +              .regshift       = 2,
 +              .uartclk        = IXP4XX_UART_XTAL,
 +      }, {
 +              .mapbase        = IXP4XX_UART1_BASE_PHYS,
 +              .membase        = (char *)IXP4XX_UART1_BASE_VIRT + REG_OFFSET,
 +              .irq            = IRQ_IXP4XX_UART1,
 +              .flags          = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
 +              .iotype         = UPIO_MEM,
 +              .regshift       = 2,
 +              .uartclk        = IXP4XX_UART_XTAL,
 +      }, {
 +              /* list termination */
 +      }
 +};
 +
 +static struct platform_device omixp_uart = {
 +      .name                   = "serial8250",
 +      .id                     = PLAT8250_DEV_PLATFORM,
 +      .dev.platform_data      = omixp_uart_data,
 +      .num_resources          = 2,
 +      .resource               = omixp_uart_resources,
 +};
 +
 +static struct gpio_led mic256_led_pins[] = {
 +      {
 +              .name           = "LED-A",
 +              .gpio           = 7,
 +      },
 +};
 +
 +static struct gpio_led_platform_data mic256_led_data = {
 +      .num_leds               = ARRAY_SIZE(mic256_led_pins),
 +      .leds                   = mic256_led_pins,
 +};
 +
 +static struct platform_device mic256_leds = {
 +      .name                   = "leds-gpio",
 +      .id                     = -1,
 +      .dev.platform_data      = &mic256_led_data,
 +};
 +
 +/* Built-in 10/100 Ethernet MAC interfaces */
 +static struct eth_plat_info ixdp425_plat_eth[] = {
 +      {
 +              .phy            = 0,
 +              .rxq            = 3,
 +              .txreadyq       = 20,
 +      }, {
 +              .phy            = 1,
 +              .rxq            = 4,
 +              .txreadyq       = 21,
 +      },
 +};
 +
 +static struct platform_device ixdp425_eth[] = {
 +      {
 +              .name                   = "ixp4xx_eth",
 +              .id                     = IXP4XX_ETH_NPEB,
 +              .dev.platform_data      = ixdp425_plat_eth,
 +      }, {
 +              .name                   = "ixp4xx_eth",
 +              .id                     = IXP4XX_ETH_NPEC,
 +              .dev.platform_data      = ixdp425_plat_eth + 1,
 +      },
 +};
 +
 +
 +static struct platform_device *devixp_pldev[] __initdata = {
 +      &omixp_uart,
 +      &omixp_flash_device[0],
 +      &ixdp425_eth[0],
 +      &ixdp425_eth[1],
 +};
 +
 +static struct platform_device *mic256_pldev[] __initdata = {
 +      &omixp_uart,
 +      &omixp_flash_device[0],
 +      &mic256_leds,
 +      &ixdp425_eth[0],
 +      &ixdp425_eth[1],
 +};
 +
 +static struct platform_device *miccpt_pldev[] __initdata = {
 +      &omixp_uart,
 +      &omixp_flash_device[0],
 +      &omixp_flash_device[1],
 +      &ixdp425_eth[0],
 +      &ixdp425_eth[1],
 +};
 +
 +static void __init omixp_init(void)
 +{
 +      ixp4xx_sys_init();
 +
 +      /* 16MiB Boot Flash */
 +      omixp_flash_resources[0].start = IXP4XX_EXP_BUS_BASE(0);
 +      omixp_flash_resources[0].end   = IXP4XX_EXP_BUS_END(0);
 +
 +      /* 32 MiB Data Flash */
 +      omixp_flash_resources[1].start = IXP4XX_EXP_BUS_BASE(2);
 +      omixp_flash_resources[1].end   = IXP4XX_EXP_BUS_END(2);
 +
 +      if (machine_is_devixp())
 +              platform_add_devices(devixp_pldev, ARRAY_SIZE(devixp_pldev));
 +      else if (machine_is_miccpt())
 +              platform_add_devices(miccpt_pldev, ARRAY_SIZE(miccpt_pldev));
 +      else if (machine_is_mic256())
 +              platform_add_devices(mic256_pldev, ARRAY_SIZE(mic256_pldev));
 +}
 +
 +#ifdef CONFIG_MACH_DEVIXP
 +MACHINE_START(DEVIXP, "Omicron DEVIXP")
-       .boot_params    = 0x100,
++      .atag_offset    = 0x100,
 +      .map_io         = ixp4xx_map_io,
 +      .init_irq       = ixp4xx_init_irq,
 +      .timer          = &ixp4xx_timer,
 +      .init_machine   = omixp_init,
 +MACHINE_END
 +#endif
 +
 +#ifdef CONFIG_MACH_MICCPT
 +MACHINE_START(MICCPT, "Omicron MICCPT")
-       .boot_params    = 0x100,
++      .atag_offset    = 0x100,
 +      .map_io         = ixp4xx_map_io,
 +      .init_irq       = ixp4xx_init_irq,
 +      .timer          = &ixp4xx_timer,
 +      .init_machine   = omixp_init,
 +#if defined(CONFIG_PCI)
 +      .dma_zone_size  = SZ_64M,
 +#endif
 +MACHINE_END
 +#endif
 +
 +#ifdef CONFIG_MACH_MIC256
 +MACHINE_START(MIC256, "Omicron MIC256")
++      .atag_offset    = 0x100,
 +      .map_io         = ixp4xx_map_io,
 +      .init_irq       = ixp4xx_init_irq,
 +      .timer          = &ixp4xx_timer,
 +      .init_machine   = omixp_init,
 +MACHINE_END
 +#endif
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
  #include <linux/io.h>
  #include <linux/irq.h>
  
+ #include <asm/exception.h>
  #include <mach/hardware.h>
  #include <mach/irqs.h>
 -#include <mach/gpio.h>
 +#include <mach/gpio-pxa.h>
  
  #include "generic.h"
  
Simple merge
Simple merge
Simple merge
@@@ -143,11 -144,20 +144,12 @@@ void __init s3c64xx_init_io(struct map_
        /* initialise the io descriptors we need for initialisation */
        iotable_init(s3c_iodesc, ARRAY_SIZE(s3c_iodesc));
        iotable_init(mach_desc, size);
+       init_consistent_dma_size(SZ_8M);
  
 -      idcode = __raw_readl(S3C_VA_SYS + 0x118);
 -      if (!idcode) {
 -              /* S3C6400 has the ID register in a different place,
 -               * and needs a write before it can be read. */
 -
 -              __raw_writel(0x0, S3C_VA_SYS + 0xA1C);
 -              idcode = __raw_readl(S3C_VA_SYS + 0xA1C);
 -      }
 +      /* detect cpu id */
 +      s3c64xx_init_cpu();
  
 -      s3c_init_cpu(idcode, cpu_ids, ARRAY_SIZE(cpu_ids));
 +      s3c_init_cpu(samsung_cpu_id, cpu_ids, ARRAY_SIZE(cpu_ids));
  }
  
  static __init int s3c64xx_sysdev_init(void)
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge