]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
ARM: Merge for-2635-4/onenand
authorBen Dooks <ben-linux@fluff.org>
Thu, 20 May 2010 11:25:59 +0000 (20:25 +0900)
committerBen Dooks <ben-linux@fluff.org>
Thu, 20 May 2010 11:25:59 +0000 (20:25 +0900)
Merge branch 'for-2635-4/onenand' into for-2635-4/partial2

Conflicts:
arch/arm/mach-s5pc100/cpu.c
arch/arm/mach-s5pc100/include/mach/map.h
arch/arm/mach-s5pv210/Makefile

1  2 
arch/arm/mach-s3c64xx/Kconfig
arch/arm/mach-s3c64xx/Makefile
arch/arm/mach-s3c64xx/include/mach/map.h
arch/arm/mach-s5pc100/cpu.c
arch/arm/mach-s5pc100/include/mach/map.h
arch/arm/mach-s5pv210/Kconfig
arch/arm/mach-s5pv210/Makefile
arch/arm/mach-s5pv210/include/mach/map.h
arch/arm/plat-samsung/Kconfig
arch/arm/plat-samsung/Makefile
arch/arm/plat-samsung/include/plat/devs.h

index 44a9def318fb82fba9c0c6e5b8b400e04beef974,805da81095f0ebf199a9a3c6d562564a2d33967e..ccdde04f6feb16a42c650b26577d35cc20b6c0f8
@@@ -35,6 -35,11 +35,11 @@@ config S3C64XX_SETUP_SDHC
          Internal configuration for default SDHCI setup for S3C6400 and
          S3C6410 SoCs.
  
+ config S3C64XX_DEV_ONENAND1
+       bool
+       help
+         Compile in platform device definition for OneNAND1 controller
  # platform specific device setup
  
  config S3C64XX_SETUP_I2C0
@@@ -90,11 -95,8 +95,11 @@@ config MACH_SMDK641
        select S3C_DEV_HSMMC1
        select S3C_DEV_I2C1
        select S3C_DEV_FB
 +      select SAMSUNG_DEV_TS
        select S3C_DEV_USB_HOST
        select S3C_DEV_USB_HSOTG
 +      select S3C_DEV_WDT
 +      select HAVE_S3C2410_WATCHDOG
        select S3C64XX_SETUP_SDHCI
        select S3C64XX_SETUP_I2C1
        select S3C64XX_SETUP_FB_24BPP
@@@ -182,34 -184,3 +187,34 @@@ config MACH_HM
        select HAVE_PWM
        help
          Machine support for the Airgoo HMT
 +
 +config MACH_SMARTQ
 +      bool
 +      select CPU_S3C6410
 +      select S3C_DEV_HSMMC
 +      select S3C_DEV_HSMMC1
 +      select S3C_DEV_HSMMC2
 +      select S3C_DEV_FB
 +      select S3C_DEV_HWMON
 +      select S3C_DEV_RTC
 +      select S3C_DEV_USB_HSOTG
 +      select S3C_DEV_USB_HOST
 +      select S3C64XX_SETUP_SDHCI
 +      select S3C64XX_SETUP_FB_24BPP
 +      select SAMSUNG_DEV_ADC
 +      select SAMSUNG_DEV_TS
 +      select HAVE_PWM
 +      help
 +          Shared machine support for SmartQ 5/7
 +
 +config MACH_SMARTQ5
 +      bool "SmartQ 5"
 +      select MACH_SMARTQ
 +      help
 +          Machine support for the SmartQ 5
 +
 +config MACH_SMARTQ7
 +      bool "SmartQ 7"
 +      select MACH_SMARTQ
 +      help
 +          Machine support for the SmartQ 7
index 39ef55e2655fe920ad35f439e758d436b634a2f4,17883187c4cb32bc6be9a0ededa8cd08d74ec2bb..9d1006938f5cc18dd604774dc11ea793aef4ccdf
@@@ -52,9 -52,6 +52,9 @@@ obj-$(CONFIG_MACH_SMDK6400)   += mach-smd
  obj-$(CONFIG_MACH_SMDK6410)   += mach-smdk6410.o
  obj-$(CONFIG_MACH_NCP)                += mach-ncp.o
  obj-$(CONFIG_MACH_HMT)                += mach-hmt.o
 +obj-$(CONFIG_MACH_SMARTQ)     += mach-smartq.o
 +obj-$(CONFIG_MACH_SMARTQ5)    += mach-smartq5.o
 +obj-$(CONFIG_MACH_SMARTQ7)    += mach-smartq7.o
  
  # device support
  
@@@ -62,3 -59,4 +62,4 @@@ obj-y                         += dev-uart.
  obj-y                         += dev-audio.o
  obj-$(CONFIG_S3C64XX_DEV_SPI) += dev-spi.o
  obj-$(CONFIG_S3C64XX_DEV_TS)  += dev-ts.o
+ obj-$(CONFIG_S3C64XX_DEV_ONENAND1)    += dev-onenand1.o
index c3e48cdfb99060ed6693be53b69a47671bf2e4f3,b6fb8920b41353bee38fba9c9bfe4df23f10bccf..e1eab3c94aea9b5110dc438b586bbe49e154f892
  
  #define S3C64XX_PA_SROM               (0x70000000)
  
+ #define S3C64XX_PA_ONENAND0   (0x70100000)
+ #define S3C64XX_PA_ONENAND0_BUF       (0x20000000)
+ #define S3C64XX_SZ_ONENAND0_BUF (SZ_64M)
+ /* NAND and OneNAND1 controllers occupy the same register region
+    (depending on SoC POP version) */
+ #define S3C64XX_PA_ONENAND1   (0x70200000)
+ #define S3C64XX_PA_ONENAND1_BUF       (0x28000000)
+ #define S3C64XX_SZ_ONENAND1_BUF       (SZ_64M)
  #define S3C64XX_PA_NAND               (0x70200000)
  #define S3C64XX_PA_FB         (0x77100000)
  #define S3C64XX_PA_USB_HSOTG  (0x7C000000)
  #define S3C_PA_IIC            S3C64XX_PA_IIC0
  #define S3C_PA_IIC1           S3C64XX_PA_IIC1
  #define S3C_PA_NAND           S3C64XX_PA_NAND
+ #define S3C_PA_ONENAND                S3C64XX_PA_ONENAND0
+ #define S3C_PA_ONENAND_BUF    S3C64XX_PA_ONENAND0_BUF
+ #define S3C_SZ_ONENAND_BUF    S3C64XX_SZ_ONENAND0_BUF
  #define S3C_PA_FB             S3C64XX_PA_FB
  #define S3C_PA_USBHOST                S3C64XX_PA_USBHOST
  #define S3C_PA_USB_HSOTG      S3C64XX_PA_USB_HSOTG
  #define S3C_VA_USB_HSPHY      S3C64XX_VA_USB_HSPHY
  #define S3C_PA_RTC            S3C64XX_PA_RTC
 +#define S3C_PA_WDT            S3C64XX_PA_WATCHDOG
  
  #define SAMSUNG_PA_ADC                S3C64XX_PA_ADC
  
index d424a9fda034b2868e8fd82e2efacbb8d8525444,cb37ffee05b27b51fdb39755da984d6b36185b65..816c4d4afef064eb271d5a8c1659e719687dde42
  #include <linux/serial_core.h>
  #include <linux/platform_device.h>
  
 -#include <asm/proc-fns.h>
 -
  #include <asm/mach/arch.h>
  #include <asm/mach/map.h>
  #include <asm/mach/irq.h>
  
 +#include <asm/proc-fns.h>
 +
  #include <mach/hardware.h>
  #include <mach/map.h>
  #include <asm/irq.h>
  
 -#include <plat/cpu-freq.h>
  #include <plat/regs-serial.h>
 -#include <plat/regs-power.h>
 +#include <mach/regs-clock.h>
  
  #include <plat/cpu.h>
  #include <plat/devs.h>
  #include <plat/clock.h>
 -#include <plat/sdhci.h>
  #include <plat/iic-core.h>
 +#include <plat/sdhci.h>
+ #include <plat/onenand-core.h>
  #include <plat/s5pc100.h>
  
  /* Initial IO mappings */
  
  static struct map_desc s5pc100_iodesc[] __initdata = {
 +      {
 +              .virtual        = (unsigned long)S5P_VA_SYSTIMER,
 +              .pfn            = __phys_to_pfn(S5PC100_PA_SYSTIMER),
 +              .length         = SZ_16K,
 +              .type           = MT_DEVICE,
 +      }, {
 +              .virtual        = (unsigned long)VA_VIC2,
 +              .pfn            = __phys_to_pfn(S5PC100_PA_VIC2),
 +              .length         = SZ_16K,
 +              .type           = MT_DEVICE,
 +      }, {
 +              .virtual        = (unsigned long)S5PC100_VA_OTHERS,
 +              .pfn            = __phys_to_pfn(S5PC100_PA_OTHERS),
 +              .length         = SZ_4K,
 +              .type           = MT_DEVICE,
 +      }
  };
  
  static void s5pc100_idle(void)
  {
 -      unsigned long tmp;
 -
 -      tmp = __raw_readl(S5PC100_PWR_CFG);
 -      tmp &= ~S5PC100_PWRCFG_CFG_DEEP_IDLE;
 -      tmp &= ~S5PC100_PWRCFG_CFG_WFI_MASK;
 -      tmp |= S5PC100_PWRCFG_CFG_WFI_DEEP_IDLE;
 -      __raw_writel(tmp, S5PC100_PWR_CFG);
 +      if (!need_resched())
 +              cpu_do_idle();
  
 -      tmp = __raw_readl(S5PC100_OTHERS);
 -      tmp |= S5PC100_PMU_INT_DISABLE;
 -      __raw_writel(tmp, S5PC100_OTHERS);
 -
 -      cpu_do_idle();
 +      local_irq_enable();
  }
  
  /* s5pc100_map_io
@@@ -88,27 -84,28 +90,29 @@@ void __init s5pc100_map_io(void
        /* the i2c devices are directly compatible with s3c2440 */
        s3c_i2c0_setname("s3c2440-i2c");
        s3c_i2c1_setname("s3c2440-i2c");
+       s3c_onenand_setname("s5pc100-onenand");
  }
  
  void __init s5pc100_init_clocks(int xtal)
  {
 -      printk(KERN_DEBUG "%s: initialising clocks\n", __func__);
 +      printk(KERN_DEBUG "%s: initializing clocks\n", __func__);
 +
        s3c24xx_register_baseclocks(xtal);
 -      s5pc1xx_register_clocks();
 +      s5p_register_clocks(xtal);
        s5pc100_register_clocks();
        s5pc100_setup_clocks();
  }
  
  void __init s5pc100_init_irq(void)
  {
 -      u32 vic_valid[] = {~0, ~0, ~0};
 +      u32 vic[] = {~0, ~0, ~0};
  
        /* VIC0, VIC1, and VIC2 are fully populated. */
 -      s5pc1xx_init_irq(vic_valid, ARRAY_SIZE(vic_valid));
 +      s5p_init_irq(vic, ARRAY_SIZE(vic));
  }
  
 -struct sysdev_class s5pc100_sysclass = {
 +static struct sysdev_class s5pc100_sysclass = {
        .name   = "s5pc100-core",
  };
  
@@@ -125,10 -122,9 +129,10 @@@ core_initcall(s5pc100_core_init)
  
  int __init s5pc100_init(void)
  {
 -      printk(KERN_DEBUG "S5PC100: Initialising architecture\n");
 +      printk(KERN_INFO "S5PC100: Initializing architecture\n");
  
 -      s5pc1xx_idle = s5pc100_idle;
 +      /* set idle function */
 +      pm_idle = s5pc100_idle;
  
        return sysdev_register(&s5pc100_sysdev);
  }
index 88009549ab28fbf94607da59dbf528b9c5c1c307,aba3bb4e3412c7f2fac817d02803c7c6e4e912c6..a0b2fee332a12e31e2a6a94b945dda85856fb0f8
@@@ -3,7 -3,9 +3,7 @@@
   * Copyright 2009 Samsung Electronics Co.
   *    Byungho Min <bhmin@samsung.com>
   *
 - * Based on mach-s3c6400/include/mach/map.h
 - *
 - * S5PC1XX - Memory map definitions
 + * S5PC100 - Memory map definitions
   *
   * 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
  #define __ASM_ARCH_MAP_H __FILE__
  
  #include <plat/map-base.h>
 +#include <plat/map-s5p.h>
  
+ /*
+  * map-base.h has already defined virtual memory address
+  * S3C_VA_IRQ         S3C_ADDR(0x00000000)    irq controller(s)
+  * S3C_VA_SYS         S3C_ADDR(0x00100000)    system control
+  * S3C_VA_MEM         S3C_ADDR(0x00200000)    system control (not used)
+  * S3C_VA_TIMER               S3C_ADDR(0x00300000)    timer block
+  * S3C_VA_WATCHDOG    S3C_ADDR(0x00400000)    watchdog
+  * S3C_VA_UART                S3C_ADDR(0x01000000)    UART
+  *
+  * S5PC100 specific virtual memory address can be defined here
+  * S5PC1XX_VA_GPIO    S3C_ADDR(0x00500000)    GPIO
+  *
+  */
+ #define S5PC100_PA_ONENAND_BUF        (0xB0000000)
+ #define S5PC100_SZ_ONENAND_BUF        (SZ_256M - SZ_32M)
+ /* Chip ID */
++
  #define S5PC100_PA_CHIPID     (0xE0000000)
 -#define S5PC1XX_PA_CHIPID     S5PC100_PA_CHIPID
 -#define S5PC1XX_VA_CHIPID     S3C_VA_SYS
 -
 -/* System */
 -#define S5PC100_PA_CLK                (0xE0100000)
 -#define S5PC100_PA_CLK_OTHER  (0xE0200000)
 -#define S5PC100_PA_PWR                (0xE0108000)
 -#define S5PC1XX_PA_CLK                S5PC100_PA_CLK
 -#define S5PC1XX_PA_PWR                S5PC100_PA_PWR
 -#define S5PC1XX_PA_CLK_OTHER  S5PC100_PA_CLK_OTHER
 -#define S5PC1XX_VA_CLK                (S3C_VA_SYS + 0x10000)
 -#define S5PC1XX_VA_PWR                (S3C_VA_SYS + 0x20000)
 -#define S5PC1XX_VA_CLK_OTHER  (S3C_VA_SYS + 0x30000)
 -
 -/* GPIO */
 +#define S5P_PA_CHIPID         S5PC100_PA_CHIPID
 +
 +#define S5PC100_PA_SYSCON     (0xE0100000)
 +#define S5P_PA_SYSCON         S5PC100_PA_SYSCON
 +
 +#define S5PC100_PA_OTHERS     (0xE0200000)
 +#define S5PC100_VA_OTHERS     (S3C_VA_SYS + 0x10000)
 +
  #define S5PC100_PA_GPIO               (0xE0300000)
- #define S5P_PA_GPIO           S5PC100_PA_GPIO
 +
- #define S5PC100_PA_VIC0               (0xE4000000)
- #define S5P_PA_VIC0           S5PC100_PA_VIC0
+ #define S5PC1XX_PA_GPIO               S5PC100_PA_GPIO
+ #define S5PC1XX_VA_GPIO               S3C_ADDR(0x00500000)
+ /* Interrupt */
+ #define S5PC100_PA_VIC                (0xE4000000)
+ #define S5PC100_VA_VIC                S3C_VA_IRQ
+ #define S5PC100_PA_VIC_OFFSET 0x100000
+ #define S5PC100_VA_VIC_OFFSET 0x10000
+ #define S5PC1XX_PA_VIC(x)     (S5PC100_PA_VIC + ((x) * S5PC100_PA_VIC_OFFSET))
+ #define S5PC1XX_VA_VIC(x)     (S5PC100_VA_VIC + ((x) * S5PC100_VA_VIC_OFFSET))
  
- #define S5PC100_PA_VIC1               (0xE4100000)
- #define S5P_PA_VIC1           S5PC100_PA_VIC1
+ #define S5PC100_PA_ONENAND    (0xE7100000)
  
- #define S5PC100_PA_VIC2               (0xE4200000)
- #define S5P_PA_VIC2           S5PC100_PA_VIC2
+ /* DMA */
+ #define S5PC100_PA_MDMA               (0xE8100000)
+ #define S5PC100_PA_PDMA0      (0xE9000000)
+ #define S5PC100_PA_PDMA1      (0xE9200000)
  
+ /* Timer */
  #define S5PC100_PA_TIMER      (0xEA000000)
 -#define S5PC1XX_PA_TIMER      S5PC100_PA_TIMER
 -#define S5PC1XX_VA_TIMER      S3C_VA_TIMER
 +#define S5P_PA_TIMER          S5PC100_PA_TIMER
  
 -/* RTC */
 -#define S5PC100_PA_RTC                (0xEA300000)
 +#define S5PC100_PA_SYSTIMER   (0xEA100000)
  
 -/* UART */
  #define S5PC100_PA_UART               (0xEC000000)
 -#define S5PC1XX_PA_UART               S5PC100_PA_UART
 -#define S5PC1XX_VA_UART               S3C_VA_UART
  
 -/* I2C */
 -#define S5PC100_PA_I2C                (0xEC100000)
 -#define S5PC100_PA_I2C1               (0xEC200000)
 +#define S5P_PA_UART0          (S5PC100_PA_UART + 0x0)
 +#define S5P_PA_UART1          (S5PC100_PA_UART + 0x400)
 +#define S5P_PA_UART2          (S5PC100_PA_UART + 0x800)
 +#define S5P_PA_UART3          (S5PC100_PA_UART + 0xC00)
 +#define S5P_SZ_UART           SZ_256
 +
 +#define S5PC100_PA_IIC0               (0xEC100000)
 +#define S5PC100_PA_IIC1               (0xEC200000)
 +
 +/* SPI */
 +#define S5PC100_PA_SPI0               0xEC300000
 +#define S5PC100_PA_SPI1               0xEC400000
 +#define S5PC100_PA_SPI2               0xEC500000
  
  /* USB HS OTG */
  #define S5PC100_PA_USB_HSOTG  (0xED200000)
  #define S5PC100_PA_USB_HSPHY  (0xED300000)
  
 -/* SD/MMC */
 -#define S5PC100_PA_HSMMC(x)   (0xED800000 + ((x) * 0x100000))
 -#define S5PC100_PA_HSMMC0     S5PC100_PA_HSMMC(0)
 -#define S5PC100_PA_HSMMC1     S5PC100_PA_HSMMC(1)
 -#define S5PC100_PA_HSMMC2     S5PC100_PA_HSMMC(2)
 -
 -/* LCD */
  #define S5PC100_PA_FB         (0xEE000000)
  
 -/* Multimedia */
 -#define S5PC100_PA_G2D                (0xEE800000)
 -#define S5PC100_PA_JPEG               (0xEE500000)
 -#define S5PC100_PA_ROTATOR    (0xEE100000)
 -#define S5PC100_PA_G3D                (0xEF000000)
 +#define S5PC100_PA_AC97               0xF2300000
  
 -/* I2S */
 -#define S5PC100_PA_I2S0               (0xF2000000)
 -#define S5PC100_PA_I2S1               (0xF2100000)
 -#define S5PC100_PA_I2S2               (0xF2200000)
 +/* PCM */
 +#define S5PC100_PA_PCM0               0xF2400000
 +#define S5PC100_PA_PCM1               0xF2500000
  
  /* KEYPAD */
  #define S5PC100_PA_KEYPAD     (0xF3100000)
  
 -/* ADC & TouchScreen */
 -#define S5PC100_PA_TSADC      (0xF3000000)
 +#define S5PC100_PA_HSMMC(x)   (0xED800000 + ((x) * 0x100000))
  
 -/* ETC */
  #define S5PC100_PA_SDRAM      (0x20000000)
 -#define S5PC1XX_PA_SDRAM      S5PC100_PA_SDRAM
 +#define S5P_PA_SDRAM          S5PC100_PA_SDRAM
  
 -/* compatibility defines. */
 -#define S3C_PA_RTC            S5PC100_PA_RTC
 +/* compatibiltiy defines. */
  #define S3C_PA_UART           S5PC100_PA_UART
 -#define S3C_PA_UART0          (S5PC100_PA_UART + 0x0)
 -#define S3C_PA_UART1          (S5PC100_PA_UART + 0x400)
 -#define S3C_PA_UART2          (S5PC100_PA_UART + 0x800)
 -#define S3C_PA_UART3          (S5PC100_PA_UART + 0xC00)
 -#define S3C_VA_UART0          (S3C_VA_UART + 0x0)
 -#define S3C_VA_UART1          (S3C_VA_UART + 0x400)
 -#define S3C_VA_UART2          (S3C_VA_UART + 0x800)
 -#define S3C_VA_UART3          (S3C_VA_UART + 0xC00)
 -#define S3C_UART_OFFSET               0x400
 -#define S3C_VA_UARTx(x)               (S3C_VA_UART + ((x) * S3C_UART_OFFSET))
 +#define S3C_PA_IIC            S5PC100_PA_IIC0
 +#define S3C_PA_IIC1           S5PC100_PA_IIC1
  #define S3C_PA_FB             S5PC100_PA_FB
- #define S3C_PA_HSMMC0         S5PC100_PA_HSMMC(0)
- #define S3C_PA_HSMMC1         S5PC100_PA_HSMMC(1)
- #define S3C_PA_HSMMC2         S5PC100_PA_HSMMC(2)
- #endif /* __ASM_ARCH_MAP_H */
+ #define S3C_PA_G2D            S5PC100_PA_G2D
+ #define S3C_PA_G3D            S5PC100_PA_G3D
+ #define S3C_PA_JPEG           S5PC100_PA_JPEG
+ #define S3C_PA_ROTATOR                S5PC100_PA_ROTATOR
+ #define S3C_VA_VIC0           (S3C_VA_IRQ + 0x0)
+ #define S3C_VA_VIC1           (S3C_VA_IRQ + 0x10000)
+ #define S3C_VA_VIC2           (S3C_VA_IRQ + 0x20000)
+ #define S3C_PA_IIC            S5PC100_PA_I2C
+ #define S3C_PA_IIC1           S5PC100_PA_I2C1
+ #define S3C_PA_USB_HSOTG      S5PC100_PA_USB_HSOTG
+ #define S3C_PA_USB_HSPHY      S5PC100_PA_USB_HSPHY
+ #define S3C_PA_HSMMC0         S5PC100_PA_HSMMC0
+ #define S3C_PA_HSMMC1         S5PC100_PA_HSMMC1
+ #define S3C_PA_HSMMC2         S5PC100_PA_HSMMC2
+ #define S3C_PA_KEYPAD         S5PC100_PA_KEYPAD
+ #define S3C_PA_TSADC          S5PC100_PA_TSADC
+ #define S3C_PA_ONENAND                S5PC100_PA_ONENAND
+ #define S3C_PA_ONENAND_BUF    S5PC100_PA_ONENAND_BUF
+ #define S3C_SZ_ONENAND_BUF    S5PC100_SZ_ONENAND_BUF
+ #endif /* __ASM_ARCH_C100_MAP_H */
index 96f4d9b7eab4d59ec117eecb15c0445ab79ee3eb,ef063e2890c580a05ac37fdec3bd034c577296a2..0761eac9aaea62ba93f7ded2088b2f183c925664
@@@ -13,63 -13,23 +13,68 @@@ config CPU_S5PV21
        bool
        select PLAT_S5P
        select S3C_PL330_DMA
 +      select S5P_EXT_INT
        help
          Enable S5PV210 CPU support
  
 -choice
 -      prompt "Select machine type"
 -      depends on ARCH_S5PV210
 -      default MACH_SMDKV210
 +config S5PV210_SETUP_I2C1
 +      bool
 +      help
 +        Common setup code for i2c bus 1.
 +
 +config S5PV210_SETUP_I2C2
 +      bool
 +      help
 +        Common setup code for i2c bus 2.
 +
 +config S5PV210_SETUP_FB_24BPP
 +      bool
 +      help
 +          Common setup code for S5PV210 with an 24bpp RGB display helper.
 +
 +config S5PV210_SETUP_SDHCI
 +        bool
 +        select S5PV210_SETUP_SDHCI_GPIO
 +        help
 +          Internal helper functions for S5PV210 based SDHCI systems
 +
 +config S5PV210_SETUP_SDHCI_GPIO
 +      bool
 +      help
 +        Common setup code for SDHCI gpio.
 +
 +# machine support
 +
 +config MACH_AQUILA
 +      bool "Samsung Aquila"
 +      select CPU_S5PV210
 +      select ARCH_SPARSEMEM_ENABLE
 +      select S5PV210_SETUP_FB_24BPP
 +      select S3C_DEV_FB
 +      help
 +        Machine support for the Samsung Aquila target based on S5PC110 SoC
 +
 +config MACH_GONI
 +      bool "GONI"
 +      select CPU_S5PV210
 +      select ARCH_SPARSEMEM_ENABLE
 +      help
 +        Machine support for Samsung GONI board
 +        S5PC110(MCP) is one of package option of S5PV210
  
+ config S5PC110_DEV_ONENAND
+       bool
+       help
+         Compile in platform device definition for OneNAND1 controller
  config MACH_SMDKV210
        bool "SMDKV210"
        select CPU_S5PV210
        select ARCH_SPARSEMEM_ENABLE
 +      select SAMSUNG_DEV_ADC
 +      select SAMSUNG_DEV_TS
 +      select S3C_DEV_WDT
 +      select HAVE_S3C2410_WATCHDOG
        help
          Machine support for Samsung SMDKV210
  
@@@ -77,10 -37,10 +82,10 @@@ config MACH_SMDKC11
        bool "SMDKC110"
        select CPU_S5PV210
        select ARCH_SPARSEMEM_ENABLE
 +      select S3C_DEV_WDT
 +      select HAVE_S3C2410_WATCHDOG
        help
          Machine support for Samsung SMDKC110
          S5PC110(MCP) is one of package option of S5PV210
  
 -endchoice
 -
  endif
index 6a6dea19dec59e6c01b5c6a1dd133d72952b18e7,610b9496c186891831399e49dc8aaf2b852b7bbc..30be9a6a462092c2120188241ed39122794f0a78
@@@ -17,18 -17,10 +17,19 @@@ obj-$(CONFIG_CPU_S5PV210)  += setup-i2c0
  
  # machine support
  
 +obj-$(CONFIG_MACH_AQUILA)     += mach-aquila.o
  obj-$(CONFIG_MACH_SMDKV210)   += mach-smdkv210.o
  obj-$(CONFIG_MACH_SMDKC110)   += mach-smdkc110.o
 +obj-$(CONFIG_MACH_GONI)               += mach-goni.o
  
  # device support
  
  obj-y                         += dev-audio.o
 -obj-$(CONFIG_S5PC110_DEV_ONENAND) += dev-onenand.o
 +obj-$(CONFIG_S3C64XX_DEV_SPI) += dev-spi.o
++obj-$(CONFIG_S5PC110_DEV_ONENAND) += dev-onenand.o
 +
 +obj-$(CONFIG_S5PV210_SETUP_FB_24BPP)  += setup-fb-24bpp.o
 +obj-$(CONFIG_S5PV210_SETUP_I2C1)      += setup-i2c1.o
 +obj-$(CONFIG_S5PV210_SETUP_I2C2)      += setup-i2c2.o
 +obj-$(CONFIG_S5PV210_SETUP_SDHCI)       += setup-sdhci.o
 +obj-$(CONFIG_S5PV210_SETUP_SDHCI_GPIO)        += setup-sdhci-gpio.o
index 3a44e1e5f126b1373ed1d630a6fab63f028859d4,d2a505fa1fff40851b506fab37e63ef697b6aec2..34eb168ec95038d946bc3e3bed0bec9c7353e60f
@@@ -16,6 -16,9 +16,9 @@@
  #include <plat/map-base.h>
  #include <plat/map-s5p.h>
  
+ #define S5PC110_PA_ONENAND    (0xB0000000)
+ #define S5PC110_PA_ONENAND_DMA        (0xB0600000)
  #define S5PV210_PA_CHIPID     (0xE0000000)
  #define S5P_PA_CHIPID         S5PV210_PA_CHIPID
  
  #define S5PV210_PA_GPIO               (0xE0200000)
  #define S5P_PA_GPIO           S5PV210_PA_GPIO
  
 +/* SPI */
 +#define S5PV210_PA_SPI0               0xE1300000
 +#define S5PV210_PA_SPI1               0xE1400000
 +
  #define S5PV210_PA_IIC0               (0xE1800000)
 +#define S5PV210_PA_IIC1               (0xFAB00000)
 +#define S5PV210_PA_IIC2               (0xE1A00000)
  
  #define S5PV210_PA_TIMER      (0xE2500000)
  #define S5P_PA_TIMER          S5PV210_PA_TIMER
  
  #define S5PV210_PA_SYSTIMER   (0xE2600000)
  
 +#define S5PV210_PA_WATCHDOG   (0xE2700000)
 +
  #define S5PV210_PA_UART               (0xE2900000)
  
  #define S5P_PA_UART0          (S5PV210_PA_UART + 0x0)
  #define S5PV210_PA_PDMA0      0xE0900000
  #define S5PV210_PA_PDMA1      0xE0A00000
  
 +#define S5PV210_PA_FB         (0xF8000000)
 +
 +#define S5PV210_PA_HSMMC(x)   (0xEB000000 + ((x) * 0x100000))
 +
  #define S5PV210_PA_VIC0               (0xF2000000)
  #define S5P_PA_VIC0           S5PV210_PA_VIC0
  
  /* AC97 */
  #define S5PV210_PA_AC97               0xE2200000
  
 +#define S5PV210_PA_ADC                (0xE1700000)
 +
  /* compatibiltiy defines. */
  #define S3C_PA_UART           S5PV210_PA_UART
 +#define S3C_PA_HSMMC0         S5PV210_PA_HSMMC(0)
 +#define S3C_PA_HSMMC1         S5PV210_PA_HSMMC(1)
 +#define S3C_PA_HSMMC2         S5PV210_PA_HSMMC(2)
  #define S3C_PA_IIC            S5PV210_PA_IIC0
 +#define S3C_PA_IIC1           S5PV210_PA_IIC1
 +#define S3C_PA_IIC2           S5PV210_PA_IIC2
 +#define S3C_PA_FB             S5PV210_PA_FB
 +#define S3C_PA_WDT            S5PV210_PA_WATCHDOG
 +
 +#define SAMSUNG_PA_ADC                S5PV210_PA_ADC
  
  #endif /* __ASM_ARCH_MAP_H */
index 47c8aa75e7475e2c9db9a4426c676093a727d983,58cc26d53092e90a1225578b5ac5864a6c5ed2ce..d663078253de271ae38b0386aa5da3257b4011f9
@@@ -6,7 -6,7 +6,7 @@@
  
  config PLAT_SAMSUNG
        bool
 -      depends on ARCH_S3C2410 || ARCH_S3C24A0 || ARCH_S3C64XX || ARCH_S5PC1XX
 +      depends on ARCH_S3C2410 || ARCH_S3C24A0 || ARCH_S3C64XX
        select NO_IOPORT
        default y
        help
@@@ -170,11 -170,6 +170,11 @@@ config S3C_DEV_I2C
        help
          Compile in platform device definitions for I2C channel 1
  
 +config S3C_DEV_I2C2
 +      bool
 +      help
 +        Compile in platform device definitions for I2C channel 2
 +
  config S3C_DEV_FB
        bool
        help
@@@ -190,17 -185,16 +190,22 @@@ config S3C_DEV_USB_HSOT
        help
          Compile in platform device definition for USB high-speed OtG
  
 +config S3C_DEV_WDT
 +      bool
 +      default y if ARCH_S3C2410
 +      help
 +        Complie in platform device definition for Watchdog Timer
 +
  config S3C_DEV_NAND
        bool
        help
          Compile in platform device definition for NAND controller
  
+ config S3C_DEV_ONENAND
+       bool
+       help
+         Compile in platform device definition for OneNAND controller
  config S3C_DEV_RTC
        bool
        help
index d73ee553b46e9ecf94bc6e8ddbe25a41474b6191,595d86b8b893cd7b9e41efc5810e4b32416a4242..d98316b30c26a5098963e2a71400727451f08677
@@@ -36,13 -36,12 +36,14 @@@ obj-$(CONFIG_S3C_DEV_HSMMC2)       += dev-hsm
  obj-$(CONFIG_S3C_DEV_HWMON)   += dev-hwmon.o
  obj-y                         += dev-i2c0.o
  obj-$(CONFIG_S3C_DEV_I2C1)    += dev-i2c1.o
 +obj-$(CONFIG_S3C_DEV_I2C2)    += dev-i2c2.o
  obj-$(CONFIG_S3C_DEV_FB)      += dev-fb.o
  obj-y                         += dev-uart.o
  obj-$(CONFIG_S3C_DEV_USB_HOST)        += dev-usb.o
  obj-$(CONFIG_S3C_DEV_USB_HSOTG)       += dev-usb-hsotg.o
 +obj-$(CONFIG_S3C_DEV_WDT)     += dev-wdt.o
  obj-$(CONFIG_S3C_DEV_NAND)    += dev-nand.o
+ obj-$(CONFIG_S3C_DEV_ONENAND) += dev-onenand.o
  obj-$(CONFIG_S3C_DEV_RTC)     += dev-rtc.o
  
  obj-$(CONFIG_SAMSUNG_DEV_ADC) += dev-adc.o
index 8d516d4980514f794c230feb0bb706bb9a2064c1,57ec56ade02519db454af97b4c9de06837ba830b..e6144e4b91189fa9596bc2c73a335d1b252d0d6d
@@@ -45,7 -45,6 +45,7 @@@ extern struct platform_device s3c_devic
  extern struct platform_device s3c_device_wdt;
  extern struct platform_device s3c_device_i2c0;
  extern struct platform_device s3c_device_i2c1;
 +extern struct platform_device s3c_device_i2c2;
  extern struct platform_device s3c_device_rtc;
  extern struct platform_device s3c_device_adc;
  extern struct platform_device s3c_device_sdi;
@@@ -58,17 -57,12 +58,20 @@@ extern struct platform_device s3c_devic
  extern struct platform_device s3c_device_spi0;
  extern struct platform_device s3c_device_spi1;
  
 +extern struct platform_device s5pc100_device_spi0;
 +extern struct platform_device s5pc100_device_spi1;
 +extern struct platform_device s5pc100_device_spi2;
 +extern struct platform_device s5pv210_device_spi0;
 +extern struct platform_device s5pv210_device_spi1;
 +extern struct platform_device s5p6440_device_spi0;
 +extern struct platform_device s5p6440_device_spi1;
 +
  extern struct platform_device s3c_device_hwmon;
  
  extern struct platform_device s3c_device_nand;
+ extern struct platform_device s3c_device_onenand;
+ extern struct platform_device s3c64xx_device_onenand1;
+ extern struct platform_device s5pc110_device_onenand;
  
  extern struct platform_device s3c_device_usbgadget;
  extern struct platform_device s3c_device_usb_hsotg;
@@@ -85,18 -79,10 +88,18 @@@ extern struct platform_device s5p6442_d
  extern struct platform_device s5p6442_device_pcm1;
  extern struct platform_device s5p6442_device_iis0;
  extern struct platform_device s5p6442_device_iis1;
 +extern struct platform_device s5p6442_device_spi;
  
  extern struct platform_device s5p6440_device_pcm;
  extern struct platform_device s5p6440_device_iis;
  
 +extern struct platform_device s5pc100_device_ac97;
 +extern struct platform_device s5pc100_device_pcm0;
 +extern struct platform_device s5pc100_device_pcm1;
 +extern struct platform_device s5pc100_device_iis0;
 +extern struct platform_device s5pc100_device_iis1;
 +extern struct platform_device s5pc100_device_iis2;
 +
  /* s3c2440 specific devices */
  
  #ifdef CONFIG_CPU_S3C2440