]> git.karo-electronics.de Git - linux-beck.git/commitdiff
Merge branch 'samsung/dt' into samsung/cleanup
authorArnd Bergmann <arnd@arndb.de>
Mon, 9 Jan 2012 16:01:00 +0000 (16:01 +0000)
committerArnd Bergmann <arnd@arndb.de>
Mon, 9 Jan 2012 16:01:00 +0000 (16:01 +0000)
Conflicts:
arch/arm/mach-s3c64xx/Makefile
arch/arm/mach-s5pc100/Makefile
arch/arm/mach-s5pv210/Makefile

Pull in previously resolved conflicts:

The Makefiles were reorganized in the "rmk/restart" series and modified
in the "samsung/cleanup series". This also pulls in the other conflict
resolutions from the restart series against the samsung/dt series.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
18 files changed:
1  2 
arch/arm/mach-exynos/Makefile
arch/arm/mach-exynos/clock.c
arch/arm/mach-exynos/mach-nuri.c
arch/arm/mach-exynos/mach-smdkv310.c
arch/arm/mach-exynos/mach-universal_c210.c
arch/arm/mach-s3c64xx/Makefile
arch/arm/mach-s3c64xx/clock.c
arch/arm/mach-s5p64x0/Makefile
arch/arm/mach-s5p64x0/clock-s5p6440.c
arch/arm/mach-s5p64x0/clock-s5p6450.c
arch/arm/mach-s5pc100/Makefile
arch/arm/mach-s5pc100/clock.c
arch/arm/mach-s5pv210/Makefile
arch/arm/mach-s5pv210/clock.c
arch/arm/mach-s5pv210/mach-aquila.c
arch/arm/mach-s5pv210/mach-goni.c
arch/arm/mach-s5pv210/mach-smdkv210.c
drivers/mmc/host/sdhci-s3c.c

index 57e5296208043c53923790ce6b5ef5958a3f1afd,fd0d9e9be382f0c3f87c13e13937dec2f1c8c306..ca85a99c159dc74262c7a65e8bcc3986439018f6
@@@ -10,15 -10,17 +10,17 @@@ obj-m                              :
  obj-n                         :=
  obj-                          :=
  
- # Core support for EXYNOS4 system
+ # Core
  
- obj-$(CONFIG_ARCH_EXYNOS4)    += cpu.o init.o clock.o irq-combiner.o setup-i2c0.o
- obj-$(CONFIG_ARCH_EXYNOS4)    += irq-eint.o pmu.o
+ obj-$(CONFIG_ARCH_EXYNOS4)    += common.o clock.o
  obj-$(CONFIG_CPU_EXYNOS4210)  += clock-exynos4210.o
  obj-$(CONFIG_SOC_EXYNOS4212)  += clock-exynos4212.o
  obj-$(CONFIG_PM)              += pm.o
  obj-$(CONFIG_CPU_IDLE)                += cpuidle.o
  
+ obj-$(CONFIG_ARCH_EXYNOS4)    += pmu.o
  obj-$(CONFIG_SMP)             += platsmp.o headsmp.o
  
  obj-$(CONFIG_EXYNOS4_MCT)     += mct.o
@@@ -48,6 -50,7 +50,7 @@@ obj-$(CONFIG_EXYNOS4_DEV_SYSMMU)      += dev
  obj-$(CONFIG_EXYNOS4_DEV_DWMCI)               += dev-dwmci.o
  obj-$(CONFIG_EXYNOS4_DEV_DMA)         += dma.o
  
+ obj-$(CONFIG_ARCH_EXYNOS4)            += setup-i2c0.o
  obj-$(CONFIG_EXYNOS4_SETUP_FIMC)      += setup-fimc.o
  obj-$(CONFIG_EXYNOS4_SETUP_FIMD0)     += setup-fimd0.o
  obj-$(CONFIG_EXYNOS4_SETUP_I2C1)      += setup-i2c1.o
@@@ -58,5 -61,6 +61,5 @@@ obj-$(CONFIG_EXYNOS4_SETUP_I2C5)      += set
  obj-$(CONFIG_EXYNOS4_SETUP_I2C6)      += setup-i2c6.o
  obj-$(CONFIG_EXYNOS4_SETUP_I2C7)      += setup-i2c7.o
  obj-$(CONFIG_EXYNOS4_SETUP_KEYPAD)    += setup-keypad.o
 -obj-$(CONFIG_EXYNOS4_SETUP_SDHCI)     += setup-sdhci.o
  obj-$(CONFIG_EXYNOS4_SETUP_SDHCI_GPIO)        += setup-sdhci-gpio.o
  obj-$(CONFIG_EXYNOS4_SETUP_USB_PHY)   += setup-usb-phy.o
index 5d8d4831e244ac2f0a90b10af3d5e03dd9a7dca7,befee4e13391c22c53df1793b47f9d35fb78c061..5d5250df33fd3e16f445021619f36630c74c1662
@@@ -21,7 -21,6 +21,6 @@@
  #include <plat/pll.h>
  #include <plat/s5p-clock.h>
  #include <plat/clock-clksrc.h>
- #include <plat/exynos4.h>
  #include <plat/pm.h>
  
  #include <mach/map.h>
@@@ -29,6 -28,8 +28,8 @@@
  #include <mach/sysmmu.h>
  #include <mach/exynos4-clock.h>
  
+ #include "common.h"
  static struct sleep_save exynos4_clock_save[] = {
        SAVE_ITEM(S5P_CLKDIV_LEFTBUS),
        SAVE_ITEM(S5P_CLKGATE_IP_LEFTBUS),
@@@ -1154,6 -1155,42 +1155,6 @@@ static struct clksrc_clk clksrcs[] = 
                .sources = &clkset_mout_mfc,
                .reg_src = { .reg = S5P_CLKSRC_MFC, .shift = 8, .size = 1 },
                .reg_div = { .reg = S5P_CLKDIV_MFC, .shift = 0, .size = 4 },
 -      }, {
 -              .clk            = {
 -                      .name           = "sclk_mmc",
 -                      .devname        = "s3c-sdhci.0",
 -                      .parent         = &clk_dout_mmc0.clk,
 -                      .enable         = exynos4_clksrc_mask_fsys_ctrl,
 -                      .ctrlbit        = (1 << 0),
 -              },
 -              .reg_div = { .reg = S5P_CLKDIV_FSYS1, .shift = 8, .size = 8 },
 -      }, {
 -              .clk            = {
 -                      .name           = "sclk_mmc",
 -                      .devname        = "s3c-sdhci.1",
 -                      .parent         = &clk_dout_mmc1.clk,
 -                      .enable         = exynos4_clksrc_mask_fsys_ctrl,
 -                      .ctrlbit        = (1 << 4),
 -              },
 -              .reg_div = { .reg = S5P_CLKDIV_FSYS1, .shift = 24, .size = 8 },
 -      }, {
 -              .clk            = {
 -                      .name           = "sclk_mmc",
 -                      .devname        = "s3c-sdhci.2",
 -                      .parent         = &clk_dout_mmc2.clk,
 -                      .enable         = exynos4_clksrc_mask_fsys_ctrl,
 -                      .ctrlbit        = (1 << 8),
 -              },
 -              .reg_div = { .reg = S5P_CLKDIV_FSYS2, .shift = 8, .size = 8 },
 -      }, {
 -              .clk            = {
 -                      .name           = "sclk_mmc",
 -                      .devname        = "s3c-sdhci.3",
 -                      .parent         = &clk_dout_mmc3.clk,
 -                      .enable         = exynos4_clksrc_mask_fsys_ctrl,
 -                      .ctrlbit        = (1 << 12),
 -              },
 -              .reg_div = { .reg = S5P_CLKDIV_FSYS2, .shift = 24, .size = 8 },
        }, {
                .clk            = {
                        .name           = "sclk_dwmmc",
@@@ -1213,50 -1250,6 +1214,50 @@@ static struct clksrc_clk clk_sclk_uart
        .reg_div = { .reg = S5P_CLKDIV_PERIL0, .shift = 12, .size = 4 },
  };
  
 +static struct clksrc_clk clk_sclk_mmc0 = {
 +      .clk            = {
 +              .name           = "sclk_mmc",
 +              .devname        = "s3c-sdhci.0",
 +              .parent         = &clk_dout_mmc0.clk,
 +              .enable         = exynos4_clksrc_mask_fsys_ctrl,
 +              .ctrlbit        = (1 << 0),
 +      },
 +      .reg_div = { .reg = S5P_CLKDIV_FSYS1, .shift = 8, .size = 8 },
 +};
 +
 +static struct clksrc_clk clk_sclk_mmc1 = {
 +      .clk            = {
 +              .name           = "sclk_mmc",
 +              .devname        = "s3c-sdhci.1",
 +              .parent         = &clk_dout_mmc1.clk,
 +              .enable         = exynos4_clksrc_mask_fsys_ctrl,
 +              .ctrlbit        = (1 << 4),
 +      },
 +      .reg_div = { .reg = S5P_CLKDIV_FSYS1, .shift = 24, .size = 8 },
 +};
 +
 +static struct clksrc_clk clk_sclk_mmc2 = {
 +      .clk            = {
 +              .name           = "sclk_mmc",
 +              .devname        = "s3c-sdhci.2",
 +              .parent         = &clk_dout_mmc2.clk,
 +              .enable         = exynos4_clksrc_mask_fsys_ctrl,
 +              .ctrlbit        = (1 << 8),
 +      },
 +      .reg_div = { .reg = S5P_CLKDIV_FSYS2, .shift = 8, .size = 8 },
 +};
 +
 +static struct clksrc_clk clk_sclk_mmc3 = {
 +      .clk            = {
 +              .name           = "sclk_mmc",
 +              .devname        = "s3c-sdhci.3",
 +              .parent         = &clk_dout_mmc3.clk,
 +              .enable         = exynos4_clksrc_mask_fsys_ctrl,
 +              .ctrlbit        = (1 << 12),
 +      },
 +      .reg_div = { .reg = S5P_CLKDIV_FSYS2, .shift = 24, .size = 8 },
 +};
 +
  /* Clock initialization code */
  static struct clksrc_clk *sysclks[] = {
        &clk_mout_apll,
@@@ -1301,10 -1294,6 +1302,10 @@@ static struct clksrc_clk *clksrc_cdev[
        &clk_sclk_uart1,
        &clk_sclk_uart2,
        &clk_sclk_uart3,
 +      &clk_sclk_mmc0,
 +      &clk_sclk_mmc1,
 +      &clk_sclk_mmc2,
 +      &clk_sclk_mmc3,
  };
  
  static struct clk_lookup exynos4_clk_lookup[] = {
        CLKDEV_INIT("exynos4210-uart.1", "clk_uart_baud0", &clk_sclk_uart1.clk),
        CLKDEV_INIT("exynos4210-uart.2", "clk_uart_baud0", &clk_sclk_uart2.clk),
        CLKDEV_INIT("exynos4210-uart.3", "clk_uart_baud0", &clk_sclk_uart3.clk),
 +      CLKDEV_INIT("s3c-sdhci.0", "mmc_busclk.2", &clk_sclk_mmc0.clk),
 +      CLKDEV_INIT("s3c-sdhci.1", "mmc_busclk.2", &clk_sclk_mmc1.clk),
 +      CLKDEV_INIT("s3c-sdhci.2", "mmc_busclk.2", &clk_sclk_mmc2.clk),
 +      CLKDEV_INIT("s3c-sdhci.3", "mmc_busclk.2", &clk_sclk_mmc3.clk),
        CLKDEV_INIT("dma-pl330.0", "apb_pclk", &clk_pdma0),
        CLKDEV_INIT("dma-pl330.1", "apb_pclk", &clk_pdma1),
  };
index 205dfed4121015f76f993d050658e5668300ceb0,635fb97e31abfec68c498cb68c6a48b7297f0b2f..b895ec0311057698dab4883c4d77099971af7a14
  #include <media/v4l2-mediabus.h>
  
  #include <asm/mach/arch.h>
+ #include <asm/hardware/gic.h>
  #include <asm/mach-types.h>
  
  #include <plat/adc.h>
  #include <plat/regs-fb-v4.h>
  #include <plat/regs-serial.h>
- #include <plat/exynos4.h>
  #include <plat/cpu.h>
  #include <plat/devs.h>
  #include <plat/fb.h>
@@@ -54,6 -54,8 +54,8 @@@
  
  #include <mach/map.h>
  
+ #include "common.h"
  /* Following are default values for UCON, ULCON and UFCON UART registers */
  #define NURI_UCON_DEFAULT     (S3C2410_UCON_TXILEVEL |        \
                                 S3C2410_UCON_RXILEVEL |        \
@@@ -247,8 -249,13 +249,8 @@@ static void nuri_lcd_power_on(struct pl
  
  static int nuri_bl_init(struct device *dev)
  {
 -      int ret, gpio = EXYNOS4_GPE2(3);
 -
 -      ret = gpio_request(gpio, "LCD_LDO_EN");
 -      if (!ret)
 -              gpio_direction_output(gpio, 0);
 -
 -      return ret;
 +      return gpio_request_one(EXYNOS4_GPE2(3), GPIOF_OUT_INIT_LOW,
 +                              "LCD_LD0_EN");
  }
  
  static int nuri_bl_notify(struct device *dev, int brightness)
@@@ -1278,7 -1285,7 +1280,7 @@@ static struct platform_device *nuri_dev
  
  static void __init nuri_map_io(void)
  {
-       s5p_init_io(NULL, 0, S5P_VA_CHIPID);
+       exynos_init_io(NULL, 0);
        s3c24xx_init_clocks(24000000);
        s3c24xx_init_uarts(nuri_uartcfgs, ARRAY_SIZE(nuri_uartcfgs));
  }
@@@ -1328,7 -1335,9 +1330,9 @@@ MACHINE_START(NURI, "NURI"
        .atag_offset    = 0x100,
        .init_irq       = exynos4_init_irq,
        .map_io         = nuri_map_io,
+       .handle_irq     = gic_handle_irq,
        .init_machine   = nuri_machine_init,
        .timer          = &exynos4_timer,
        .reserve        = &nuri_reserve,
+       .restart        = exynos4_restart,
  MACHINE_END
index cbf31bd0e2c941ea585063d421463e56ee1347ef,5b365613b470531977e62e774a027e0854750f44..a27b23eee9fa0dfe13f2a7f871e319ad98adc7c1
  #include <linux/pwm_backlight.h>
  
  #include <asm/mach/arch.h>
+ #include <asm/hardware/gic.h>
  #include <asm/mach-types.h>
  
  #include <video/platform_lcd.h>
  #include <plat/regs-serial.h>
  #include <plat/regs-srom.h>
  #include <plat/regs-fb-v4.h>
- #include <plat/exynos4.h>
  #include <plat/cpu.h>
  #include <plat/devs.h>
  #include <plat/fb.h>
@@@ -43,6 -43,8 +43,8 @@@
  
  #include <mach/map.h>
  
+ #include "common.h"
  /* Following are default values for UCON, ULCON and UFCON UART registers */
  #define SMDKV310_UCON_DEFAULT (S3C2410_UCON_TXILEVEL |        \
                                 S3C2410_UCON_RXILEVEL |        \
@@@ -129,7 -131,9 +131,7 @@@ static void lcd_lte480wv_set_power(stru
                gpio_free(EXYNOS4_GPD0(1));
  #endif
                /* fire nRESET on power up */
 -              gpio_request(EXYNOS4_GPX0(6), "GPX0");
 -
 -              gpio_direction_output(EXYNOS4_GPX0(6), 1);
 +              gpio_request_one(EXYNOS4_GPX0(6), GPIOF_OUT_INIT_HIGH, "GPX0");
                mdelay(100);
  
                gpio_set_value(EXYNOS4_GPX0(6), 0);
@@@ -330,7 -334,7 +332,7 @@@ static void s5p_tv_setup(void
  
  static void __init smdkv310_map_io(void)
  {
-       s5p_init_io(NULL, 0, S5P_VA_CHIPID);
+       exynos_init_io(NULL, 0);
        s3c24xx_init_clocks(24000000);
        s3c24xx_init_uarts(smdkv310_uartcfgs, ARRAY_SIZE(smdkv310_uartcfgs));
  }
@@@ -373,9 -377,11 +375,11 @@@ MACHINE_START(SMDKV310, "SMDKV310"
        .atag_offset    = 0x100,
        .init_irq       = exynos4_init_irq,
        .map_io         = smdkv310_map_io,
+       .handle_irq     = gic_handle_irq,
        .init_machine   = smdkv310_machine_init,
        .timer          = &exynos4_timer,
        .reserve        = &smdkv310_reserve,
+       .restart        = exynos4_restart,
  MACHINE_END
  
  MACHINE_START(SMDKC210, "SMDKC210")
        .atag_offset    = 0x100,
        .init_irq       = exynos4_init_irq,
        .map_io         = smdkv310_map_io,
+       .handle_irq     = gic_handle_irq,
        .init_machine   = smdkv310_machine_init,
        .timer          = &exynos4_timer,
+       .restart        = exynos4_restart,
  MACHINE_END
index 0a04cd643b07d7fb8b945bf1bbff113aac5e7105,52aea972746abcbc90cff1e097173349abccf0c3..37ac93e8d6d9ef44940dabb5f1d916301012ee54
  #include <linux/i2c/atmel_mxt_ts.h>
  
  #include <asm/mach/arch.h>
+ #include <asm/hardware/gic.h>
  #include <asm/mach-types.h>
  
  #include <plat/regs-serial.h>
- #include <plat/exynos4.h>
  #include <plat/cpu.h>
  #include <plat/devs.h>
  #include <plat/iic.h>
@@@ -47,6 -47,8 +47,8 @@@
  #include <media/s5p_fimc.h>
  #include <media/m5mols.h>
  
+ #include "common.h"
  /* Following are default values for UCON, ULCON and UFCON UART registers */
  #define UNIVERSAL_UCON_DEFAULT        (S3C2410_UCON_TXILEVEL |        \
                                 S3C2410_UCON_RXILEVEL |        \
@@@ -608,7 -610,8 +610,7 @@@ static void __init universal_tsp_init(v
  
        /* TSP_LDO_ON: XMDMADDR_11 */
        gpio = EXYNOS4_GPE2(3);
 -      gpio_request(gpio, "TSP_LDO_ON");
 -      gpio_direction_output(gpio, 1);
 +      gpio_request_one(gpio, GPIOF_OUT_INIT_HIGH, "TSP_LDO_ON");
        gpio_export(gpio, 0);
  
        /* TSP_INT: XMDMADDR_7 */
@@@ -668,7 -671,8 +670,7 @@@ static void __init universal_touchkey_i
        i2c_gpio12_devs[0].irq = gpio_to_irq(gpio);
  
        gpio = EXYNOS4_GPE3(3);                 /* XMDMDATA_3 */
 -      gpio_request(gpio, "3_TOUCH_EN");
 -      gpio_direction_output(gpio, 1);
 +      gpio_request_one(gpio, GPIOF_OUT_INIT_HIGH, "3_TOUCH_EN");
  }
  
  static struct s3c2410_platform_i2c universal_i2c0_platdata __initdata = {
@@@ -990,7 -994,7 +992,7 @@@ static struct platform_device *universa
  
  static void __init universal_map_io(void)
  {
-       s5p_init_io(NULL, 0, S5P_VA_CHIPID);
+       exynos_init_io(NULL, 0);
        s3c24xx_init_clocks(24000000);
        s3c24xx_init_uarts(universal_uartcfgs, ARRAY_SIZE(universal_uartcfgs));
  }
  void s5p_tv_setup(void)
  {
        /* direct HPD to HDMI chip */
 -      gpio_request(EXYNOS4_GPX3(7), "hpd-plug");
 -
 -      gpio_direction_input(EXYNOS4_GPX3(7));
 +      gpio_request_one(EXYNOS4_GPX3(7), GPIOF_IN, "hpd-plug");
        s3c_gpio_cfgpin(EXYNOS4_GPX3(7), S3C_GPIO_SFN(0x3));
        s3c_gpio_setpull(EXYNOS4_GPX3(7), S3C_GPIO_PULL_NONE);
  
@@@ -1054,7 -1060,9 +1056,9 @@@ MACHINE_START(UNIVERSAL_C210, "UNIVERSA
        .atag_offset    = 0x100,
        .init_irq       = exynos4_init_irq,
        .map_io         = universal_map_io,
+       .handle_irq     = gic_handle_irq,
        .init_machine   = universal_machine_init,
        .timer          = &exynos4_timer,
        .reserve        = &universal_reserve,
+       .restart        = exynos4_restart,
  MACHINE_END
index d7d9bb5dfb72f47e3981cad00577f7eb32b0c266,f37016cebbe302c8b654f1e0dca096a6a5a00443..1822ac2eba318250f8b0cfd4163f516b18184eac
@@@ -10,53 -10,49 +10,49 @@@ obj-m                              :
  obj-n                         :=
  obj-                          :=
  
- # Core files
- obj-y                         += cpu.o
- obj-y                         += clock.o
+ # Core
  
- # Core support for S3C6400 system
+ obj-y                         += common.o clock.o
+ # Core support
  
  obj-$(CONFIG_CPU_S3C6400)     += s3c6400.o
  obj-$(CONFIG_CPU_S3C6410)     += s3c6410.o
  
- obj-y                         += irq.o
- obj-y                         += irq-eint.o
+ # PM
+ obj-$(CONFIG_PM)              += pm.o irq-pm.o sleep.o
  
  # DMA support
  
  obj-$(CONFIG_S3C64XX_DMA)     += dma.o
  
- # Device setup
+ # Device support
  
- obj-$(CONFIG_S3C64XX_SETUP_I2C0) += setup-i2c0.o
- obj-$(CONFIG_S3C64XX_SETUP_I2C1) += setup-i2c1.o
- obj-$(CONFIG_S3C64XX_SETUP_IDE) += setup-ide.o
- obj-$(CONFIG_S3C64XX_SETUP_KEYPAD) += setup-keypad.o
- obj-$(CONFIG_S3C64XX_SETUP_FB_24BPP) += setup-fb-24bpp.o
- obj-$(CONFIG_S3C64XX_SETUP_SDHCI_GPIO) += setup-sdhci-gpio.o
- obj-$(CONFIG_S3C64XX_SETUP_SPI) += setup-spi.o
+ obj-y                         += dev-uart.o
+ obj-y                         += dev-audio.o
+ obj-$(CONFIG_S3C64XX_DEV_SPI) += dev-spi.o
  
- # PM
+ # Device setup
  
- obj-$(CONFIG_PM)              += pm.o
- obj-$(CONFIG_PM)              += sleep.o
- obj-$(CONFIG_PM)              += irq-pm.o
+ obj-$(CONFIG_S3C64XX_SETUP_FB_24BPP)  += setup-fb-24bpp.o
+ obj-$(CONFIG_S3C64XX_SETUP_I2C0)      += setup-i2c0.o
+ obj-$(CONFIG_S3C64XX_SETUP_I2C1)      += setup-i2c1.o
+ obj-$(CONFIG_S3C64XX_SETUP_IDE)               += setup-ide.o
+ obj-$(CONFIG_S3C64XX_SETUP_KEYPAD)    += setup-keypad.o
 -obj-$(CONFIG_S3C64XX_SETUP_SDHCI)     += setup-sdhci.o
+ obj-$(CONFIG_S3C64XX_SETUP_SDHCI_GPIO)        += setup-sdhci-gpio.o
++obj-$(CONFIG_S3C64XX_SETUP_SPI)               += setup-spi.o
  
  # Machine support
  
- obj-$(CONFIG_MACH_ANW6410)    += mach-anw6410.o
- obj-$(CONFIG_MACH_SMDK6400)   += mach-smdk6400.o
- obj-$(CONFIG_MACH_SMDK6410)   += mach-smdk6410.o
- obj-$(CONFIG_MACH_REAL6410)     += mach-real6410.o
- obj-$(CONFIG_MACH_MINI6410)     += mach-mini6410.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
- obj-$(CONFIG_MACH_WLF_CRAGG_6410) += mach-crag6410.o mach-crag6410-module.o
- # device support
- obj-y                         += dev-uart.o
- obj-y                         += dev-audio.o
+ obj-$(CONFIG_MACH_ANW6410)            += mach-anw6410.o
+ obj-$(CONFIG_MACH_HMT)                        += mach-hmt.o
+ obj-$(CONFIG_MACH_MINI6410)           += mach-mini6410.o
+ obj-$(CONFIG_MACH_NCP)                        += mach-ncp.o
+ obj-$(CONFIG_MACH_REAL6410)           += mach-real6410.o
+ obj-$(CONFIG_MACH_SMARTQ)             += mach-smartq.o
+ obj-$(CONFIG_MACH_SMARTQ5)            += mach-smartq5.o
+ obj-$(CONFIG_MACH_SMARTQ7)            += mach-smartq7.o
+ obj-$(CONFIG_MACH_SMDK6400)           += mach-smdk6400.o
+ obj-$(CONFIG_MACH_SMDK6410)           += mach-smdk6410.o
+ obj-$(CONFIG_MACH_WLF_CRAGG_6410)     += mach-crag6410.o mach-crag6410-module.o
index 0187cde3a5dc4d2435ee141e42a4c6df3085df69,a3aafb6768c9ad86db4d4925254009850261c170..31bb27dc4aeba8ace23ad4a8bdb80df742657085
@@@ -183,6 -183,18 +183,6 @@@ static struct clk init_clocks_off[] = 
                .parent         = &clk_p,
                .enable         = s3c64xx_pclk_ctrl,
                .ctrlbit        = S3C_CLKCON_PCLK_SPI1,
 -      }, {
 -              .name           = "spi_48m",
 -              .devname        = "s3c64xx-spi.0",
 -              .parent         = &clk_48m,
 -              .enable         = s3c64xx_sclk_ctrl,
 -              .ctrlbit        = S3C_CLKCON_SCLK_SPI0_48,
 -      }, {
 -              .name           = "spi_48m",
 -              .devname        = "s3c64xx-spi.1",
 -              .parent         = &clk_48m,
 -              .enable         = s3c64xx_sclk_ctrl,
 -              .ctrlbit        = S3C_CLKCON_SCLK_SPI1_48,
        }, {
                .name           = "48m",
                .devname        = "s3c-sdhci.0",
        },
  };
  
 +static struct clk clk_48m_spi0 = {
 +      .name           = "spi_48m",
 +      .devname        = "s3c64xx-spi.0",
 +      .parent         = &clk_48m,
 +      .enable         = s3c64xx_sclk_ctrl,
 +      .ctrlbit        = S3C_CLKCON_SCLK_SPI0_48,
 +};
 +
 +static struct clk clk_48m_spi1 = {
 +      .name           = "spi_48m",
 +      .devname        = "s3c64xx-spi.1",
 +      .parent         = &clk_48m,
 +      .enable         = s3c64xx_sclk_ctrl,
 +      .ctrlbit        = S3C_CLKCON_SCLK_SPI1_48,
 +};
 +
  static struct clk init_clocks[] = {
        {
                .name           = "lcd",
                .parent         = &clk_h,
                .enable         = s3c64xx_hclk_ctrl,
                .ctrlbit        = S3C_CLKCON_HCLK_UHOST,
 -      }, {
 -              .name           = "hsmmc",
 -              .devname        = "s3c-sdhci.0",
 -              .parent         = &clk_h,
 -              .enable         = s3c64xx_hclk_ctrl,
 -              .ctrlbit        = S3C_CLKCON_HCLK_HSMMC0,
 -      }, {
 -              .name           = "hsmmc",
 -              .devname        = "s3c-sdhci.1",
 -              .parent         = &clk_h,
 -              .enable         = s3c64xx_hclk_ctrl,
 -              .ctrlbit        = S3C_CLKCON_HCLK_HSMMC1,
 -      }, {
 -              .name           = "hsmmc",
 -              .devname        = "s3c-sdhci.2",
 -              .parent         = &clk_h,
 -              .enable         = s3c64xx_hclk_ctrl,
 -              .ctrlbit        = S3C_CLKCON_HCLK_HSMMC2,
        }, {
                .name           = "otg",
                .parent         = &clk_h,
        }
  };
  
 +static struct clk clk_hsmmc0 = {
 +      .name           = "hsmmc",
 +      .devname        = "s3c-sdhci.0",
 +      .parent         = &clk_h,
 +      .enable         = s3c64xx_hclk_ctrl,
 +      .ctrlbit        = S3C_CLKCON_HCLK_HSMMC0,
 +};
 +
 +static struct clk clk_hsmmc1 = {
 +      .name           = "hsmmc",
 +      .devname        = "s3c-sdhci.1",
 +      .parent         = &clk_h,
 +      .enable         = s3c64xx_hclk_ctrl,
 +      .ctrlbit        = S3C_CLKCON_HCLK_HSMMC1,
 +};
 +
 +static struct clk clk_hsmmc2 = {
 +      .name           = "hsmmc",
 +      .devname        = "s3c-sdhci.2",
 +      .parent         = &clk_h,
 +      .enable         = s3c64xx_hclk_ctrl,
 +      .ctrlbit        = S3C_CLKCON_HCLK_HSMMC2,
 +};
  
  static struct clk clk_fout_apll = {
        .name           = "fout_apll",
@@@ -586,6 -577,36 +586,6 @@@ static struct clksrc_sources clkset_cam
  
  static struct clksrc_clk clksrcs[] = {
        {
 -              .clk    = {
 -                      .name           = "mmc_bus",
 -                      .devname        = "s3c-sdhci.0",
 -                      .ctrlbit        = S3C_CLKCON_SCLK_MMC0,
 -                      .enable         = s3c64xx_sclk_ctrl,
 -              },
 -              .reg_src        = { .reg = S3C_CLK_SRC, .shift = 18, .size = 2  },
 -              .reg_div        = { .reg = S3C_CLK_DIV1, .shift = 0, .size = 4  },
 -              .sources        = &clkset_spi_mmc,
 -      }, {
 -              .clk    = {
 -                      .name           = "mmc_bus",
 -                      .devname        = "s3c-sdhci.1",
 -                      .ctrlbit        = S3C_CLKCON_SCLK_MMC1,
 -                      .enable         = s3c64xx_sclk_ctrl,
 -              },
 -              .reg_src        = { .reg = S3C_CLK_SRC, .shift = 20, .size = 2  },
 -              .reg_div        = { .reg = S3C_CLK_DIV1, .shift = 4, .size = 4  },
 -              .sources        = &clkset_spi_mmc,
 -      }, {
 -              .clk    = {
 -                      .name           = "mmc_bus",
 -                      .devname        = "s3c-sdhci.2",
 -                      .ctrlbit        = S3C_CLKCON_SCLK_MMC2,
 -                      .enable         = s3c64xx_sclk_ctrl,
 -              },
 -              .reg_src        = { .reg = S3C_CLK_SRC, .shift = 22, .size = 2  },
 -              .reg_div        = { .reg = S3C_CLK_DIV1, .shift = 8, .size = 4  },
 -              .sources        = &clkset_spi_mmc,
 -      }, {
                .clk    = {
                        .name           = "usb-bus-host",
                        .ctrlbit        = S3C_CLKCON_SCLK_UHOST,
                .reg_src        = { .reg = S3C_CLK_SRC, .shift = 5, .size = 2  },
                .reg_div        = { .reg = S3C_CLK_DIV1, .shift = 20, .size = 4  },
                .sources        = &clkset_uhost,
 -      }, {
 -              .clk    = {
 -                      .name           = "spi-bus",
 -                      .devname        = "s3c64xx-spi.0",
 -                      .ctrlbit        = S3C_CLKCON_SCLK_SPI0,
 -                      .enable         = s3c64xx_sclk_ctrl,
 -              },
 -              .reg_src        = { .reg = S3C_CLK_SRC, .shift = 14, .size = 2  },
 -              .reg_div        = { .reg = S3C_CLK_DIV2, .shift = 0, .size = 4  },
 -              .sources        = &clkset_spi_mmc,
 -      }, {
 -              .clk    = {
 -                      .name           = "spi-bus",
 -                      .devname        = "s3c64xx-spi.1",
 -                      .enable         = s3c64xx_sclk_ctrl,
 -              },
 -              .reg_src        = { .reg = S3C_CLK_SRC, .shift = 16, .size = 2  },
 -              .reg_div        = { .reg = S3C_CLK_DIV2, .shift = 4, .size = 4  },
 -              .sources        = &clkset_spi_mmc,
        }, {
                .clk    = {
                        .name           = "audio-bus",
@@@ -657,66 -697,6 +657,66 @@@ static struct clksrc_clk clk_sclk_uclk 
        .sources        = &clkset_uart,
  };
  
 +static struct clksrc_clk clk_sclk_mmc0 = {
 +      .clk    = {
 +              .name           = "mmc_bus",
 +              .devname        = "s3c-sdhci.0",
 +              .ctrlbit        = S3C_CLKCON_SCLK_MMC0,
 +              .enable         = s3c64xx_sclk_ctrl,
 +      },
 +      .reg_src        = { .reg = S3C_CLK_SRC, .shift = 18, .size = 2  },
 +      .reg_div        = { .reg = S3C_CLK_DIV1, .shift = 0, .size = 4  },
 +      .sources        = &clkset_spi_mmc,
 +};
 +
 +static struct clksrc_clk clk_sclk_mmc1 = {
 +      .clk    = {
 +              .name           = "mmc_bus",
 +              .devname        = "s3c-sdhci.1",
 +              .ctrlbit        = S3C_CLKCON_SCLK_MMC1,
 +              .enable         = s3c64xx_sclk_ctrl,
 +      },
 +      .reg_src        = { .reg = S3C_CLK_SRC, .shift = 20, .size = 2  },
 +      .reg_div        = { .reg = S3C_CLK_DIV1, .shift = 4, .size = 4  },
 +      .sources        = &clkset_spi_mmc,
 +};
 +
 +static struct clksrc_clk clk_sclk_mmc2 = {
 +      .clk    = {
 +              .name           = "mmc_bus",
 +              .devname        = "s3c-sdhci.2",
 +              .ctrlbit        = S3C_CLKCON_SCLK_MMC2,
 +              .enable         = s3c64xx_sclk_ctrl,
 +      },
 +      .reg_src        = { .reg = S3C_CLK_SRC, .shift = 22, .size = 2  },
 +      .reg_div        = { .reg = S3C_CLK_DIV1, .shift = 8, .size = 4  },
 +      .sources        = &clkset_spi_mmc,
 +};
 +
 +static struct clksrc_clk clk_sclk_spi0 = {
 +      .clk    = {
 +              .name           = "spi-bus",
 +              .devname        = "s3c64xx-spi.0",
 +              .ctrlbit        = S3C_CLKCON_SCLK_SPI0,
 +              .enable         = s3c64xx_sclk_ctrl,
 +      },
 +      .reg_src = { .reg = S3C_CLK_SRC, .shift = 14, .size = 2 },
 +      .reg_div = { .reg = S3C_CLK_DIV2, .shift = 0, .size = 4 },
 +      .sources = &clkset_spi_mmc,
 +};
 +
 +static struct clksrc_clk clk_sclk_spi1 = {
 +      .clk    = {
 +              .name           = "spi-bus",
 +              .devname        = "s3c64xx-spi.1",
 +              .ctrlbit        = S3C_CLKCON_SCLK_SPI1,
 +              .enable         = s3c64xx_sclk_ctrl,
 +      },
 +      .reg_src = { .reg = S3C_CLK_SRC, .shift = 16, .size = 2 },
 +      .reg_div = { .reg = S3C_CLK_DIV2, .shift = 4, .size = 4 },
 +      .sources = &clkset_spi_mmc,
 +};
 +
  /* Clock initialisation code */
  
  static struct clksrc_clk *init_parents[] = {
  
  static struct clksrc_clk *clksrc_cdev[] = {
        &clk_sclk_uclk,
 +      &clk_sclk_mmc0,
 +      &clk_sclk_mmc1,
 +      &clk_sclk_mmc2,
 +      &clk_sclk_spi0,
 +      &clk_sclk_spi1,
 +};
 +
 +static struct clk *clk_cdev[] = {
 +      &clk_hsmmc0,
 +      &clk_hsmmc1,
 +      &clk_hsmmc2,
 +      &clk_48m_spi0,
 +      &clk_48m_spi1,
  };
  
  static struct clk_lookup s3c64xx_clk_lookup[] = {
        CLKDEV_INIT(NULL, "clk_uart_baud2", &clk_p),
        CLKDEV_INIT(NULL, "clk_uart_baud3", &clk_sclk_uclk.clk),
 +      CLKDEV_INIT("s3c-sdhci.0", "mmc_busclk.0", &clk_hsmmc0),
 +      CLKDEV_INIT("s3c-sdhci.1", "mmc_busclk.0", &clk_hsmmc1),
 +      CLKDEV_INIT("s3c-sdhci.2", "mmc_busclk.0", &clk_hsmmc2),
 +      CLKDEV_INIT("s3c-sdhci.0", "mmc_busclk.2", &clk_sclk_mmc0.clk),
 +      CLKDEV_INIT("s3c-sdhci.1", "mmc_busclk.2", &clk_sclk_mmc1.clk),
 +      CLKDEV_INIT("s3c-sdhci.2", "mmc_busclk.2", &clk_sclk_mmc2.clk),
 +      CLKDEV_INIT(NULL, "spi_busclk0", &clk_p),
 +      CLKDEV_INIT("s3c64xx-spi.0", "spi_busclk1", &clk_sclk_spi0.clk),
 +      CLKDEV_INIT("s3c64xx-spi.0", "spi_busclk2", &clk_48m_spi0),
 +      CLKDEV_INIT("s3c64xx-spi.1", "spi_busclk1", &clk_sclk_spi1.clk),
 +      CLKDEV_INIT("s3c64xx-spi.1", "spi_busclk2", &clk_48m_spi1),
  };
  
  #define GET_DIV(clk, field) ((((clk) & field##_MASK) >> field##_SHIFT) + 1)
  
- void __init_or_cpufreq s3c6400_setup_clocks(void)
+ void __init_or_cpufreq s3c64xx_setup_clocks(void)
  {
        struct clk *xtal_clk;
        unsigned long xtal;
@@@ -859,7 -815,7 +859,7 @@@ static struct clk *clks[] __initdata = 
   * as ARMCLK as well as the necessary parent clocks.
   *
   * This call does not setup the clocks, which is left to the
-  * s3c6400_setup_clocks() call which may be needed by the cpufreq
+  * s3c64xx_setup_clocks() call which may be needed by the cpufreq
   * or resume code to re-set the clocks if the bootloader has changed
   * them.
   */
@@@ -878,10 -834,6 +878,10 @@@ void __init s3c64xx_register_clocks(uns
        s3c_register_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off));
        s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off));
  
 +      s3c24xx_register_clocks(clk_cdev, ARRAY_SIZE(clk_cdev));
 +      for (cnt = 0; cnt < ARRAY_SIZE(clk_cdev); cnt++)
 +              s3c_disable_clocks(clk_cdev[cnt], 1);
 +
        s3c24xx_register_clocks(clks1, ARRAY_SIZE(clks1));
        s3c_register_clksrc(clksrcs, ARRAY_SIZE(clksrcs));
        for (cnt = 0; cnt < ARRAY_SIZE(clksrc_cdev); cnt++)
index a7d7a499d99ec7a43af402d15a71374903678870,d3f7409999f228134f3c189a29c8dc195195f913..e167ca136f5d91fd6c41a9b08abe5e4fb289f178
@@@ -10,14 -10,16 +10,16 @@@ obj-m                              :
  obj-n                         :=
  obj-                          :=
  
- # Core support for S5P64X0 system
+ # Core
  
- obj-$(CONFIG_ARCH_S5P64X0)    += cpu.o init.o clock.o dma.o
- obj-$(CONFIG_ARCH_S5P64X0)    += setup-i2c0.o irq-eint.o
+ obj-y                         += common.o clock.o
  obj-$(CONFIG_CPU_S5P6440)     += clock-s5p6440.o
  obj-$(CONFIG_CPU_S5P6450)     += clock-s5p6450.o
  obj-$(CONFIG_PM)              += pm.o irq-pm.o
  
+ obj-y                         += dma.o
  # machine support
  
  obj-$(CONFIG_MACH_SMDK6440)   += mach-smdk6440.o
@@@ -26,7 -28,8 +28,8 @@@ obj-$(CONFIG_MACH_SMDK6450)   += mach-smd
  # device support
  
  obj-y                         += dev-audio.o
 -obj-$(CONFIG_S3C64XX_DEV_SPI) += dev-spi.o
  
+ obj-y                                 += setup-i2c0.o
  obj-$(CONFIG_S5P64X0_SETUP_I2C1)      += setup-i2c1.o
  obj-$(CONFIG_S5P64X0_SETUP_FB_24BPP)  += setup-fb-24bpp.o
 +obj-$(CONFIG_S5P64X0_SETUP_SPI)               += setup-spi.o
index 73c7cc9ef0ddb1e64717459cae05da6afba42a25,97bb6eb921d74108ab5a66097c3a3f603dc1c628..58811ba89eef68f71982a2436c2dd1cc47ee90af
@@@ -31,7 -31,8 +31,8 @@@
  #include <plat/pll.h>
  #include <plat/s5p-clock.h>
  #include <plat/clock-clksrc.h>
- #include <plat/s5p6440.h>
+ #include "common.h"
  
  static u32 epll_div[][5] = {
        { 36000000,     0,      48, 1, 4 },
@@@ -267,6 -268,18 +268,6 @@@ static struct clk init_clocks_off[] = 
                .parent         = &clk_pclk.clk,
                .enable         = s5p64x0_pclk_ctrl,
                .ctrlbit        = (1 << 31),
 -      }, {
 -              .name           = "sclk_spi_48",
 -              .devname        = "s3c64xx-spi.0",
 -              .parent         = &clk_48m,
 -              .enable         = s5p64x0_sclk_ctrl,
 -              .ctrlbit        = (1 << 22),
 -      }, {
 -              .name           = "sclk_spi_48",
 -              .devname        = "s3c64xx-spi.1",
 -              .parent         = &clk_48m,
 -              .enable         = s5p64x0_sclk_ctrl,
 -              .ctrlbit        = (1 << 23),
        }, {
                .name           = "mmc_48m",
                .devname        = "s3c-sdhci.0",
@@@ -407,6 -420,26 +408,6 @@@ static struct clksrc_clk clksrcs[] = 
                .sources = &clkset_group1,
                .reg_src = { .reg = S5P64X0_CLK_SRC0, .shift = 22, .size = 2 },
                .reg_div = { .reg = S5P64X0_CLK_DIV1, .shift = 8, .size = 4 },
 -      }, {
 -              .clk    = {
 -                      .name           = "sclk_spi",
 -                      .devname        = "s3c64xx-spi.0",
 -                      .ctrlbit        = (1 << 20),
 -                      .enable         = s5p64x0_sclk_ctrl,
 -              },
 -              .sources = &clkset_group1,
 -              .reg_src = { .reg = S5P64X0_CLK_SRC0, .shift = 14, .size = 2 },
 -              .reg_div = { .reg = S5P64X0_CLK_DIV2, .shift = 0, .size = 4 },
 -      }, {
 -              .clk    = {
 -                      .name           = "sclk_spi",
 -                      .devname        = "s3c64xx-spi.1",
 -                      .ctrlbit        = (1 << 21),
 -                      .enable         = s5p64x0_sclk_ctrl,
 -              },
 -              .sources = &clkset_group1,
 -              .reg_src = { .reg = S5P64X0_CLK_SRC0, .shift = 16, .size = 2 },
 -              .reg_div = { .reg = S5P64X0_CLK_DIV2, .shift = 4, .size = 4 },
        }, {
                .clk    = {
                        .name           = "sclk_post",
@@@ -457,30 -490,6 +458,30 @@@ static struct clksrc_clk clk_sclk_uclk 
        .reg_div = { .reg = S5P64X0_CLK_DIV2, .shift = 16, .size = 4 },
  };
  
 +static struct clksrc_clk clk_sclk_spi0 = {
 +      .clk    = {
 +              .name           = "sclk_spi",
 +              .devname        = "s3c64xx-spi.0",
 +              .ctrlbit        = (1 << 20),
 +              .enable         = s5p64x0_sclk_ctrl,
 +      },
 +      .sources = &clkset_group1,
 +      .reg_src = { .reg = S5P64X0_CLK_SRC0, .shift = 14, .size = 2 },
 +      .reg_div = { .reg = S5P64X0_CLK_DIV2, .shift = 0, .size = 4 },
 +};
 +
 +static struct clksrc_clk clk_sclk_spi1 = {
 +      .clk    = {
 +              .name           = "sclk_spi",
 +              .devname        = "s3c64xx-spi.1",
 +              .ctrlbit        = (1 << 21),
 +              .enable         = s5p64x0_sclk_ctrl,
 +      },
 +      .sources = &clkset_group1,
 +      .reg_src = { .reg = S5P64X0_CLK_SRC0, .shift = 16, .size = 2 },
 +      .reg_div = { .reg = S5P64X0_CLK_DIV2, .shift = 4, .size = 4 },
 +};
 +
  /* Clock initialization code */
  static struct clksrc_clk *sysclks[] = {
        &clk_mout_apll,
@@@ -501,16 -510,11 +502,16 @@@ static struct clk dummy_apb_pclk = 
  
  static struct clksrc_clk *clksrc_cdev[] = {
        &clk_sclk_uclk,
 +      &clk_sclk_spi0,
 +      &clk_sclk_spi1,
  };
  
  static struct clk_lookup s5p6440_clk_lookup[] = {
        CLKDEV_INIT(NULL, "clk_uart_baud2", &clk_pclk_low.clk),
        CLKDEV_INIT(NULL, "clk_uart_baud3", &clk_sclk_uclk.clk),
 +      CLKDEV_INIT(NULL, "spi_busclk0", &clk_p),
 +      CLKDEV_INIT("s3c64xx-spi.0", "spi_busclk1", &clk_sclk_spi0.clk),
 +      CLKDEV_INIT("s3c64xx-spi.1", "spi_busclk1", &clk_sclk_spi1.clk),
  };
  
  void __init_or_cpufreq s5p6440_setup_clocks(void)
index 50f90cbf7798df2ee7e147adc0cb3eee7f0b8476,bd9ac662b3cd97b0489f1f21bd13a4a7d98548e6..bd9d1e6fc5e29c5316e56900d6c2c07bf4f76a56
@@@ -31,7 -31,8 +31,8 @@@
  #include <plat/pll.h>
  #include <plat/s5p-clock.h>
  #include <plat/clock-clksrc.h>
- #include <plat/s5p6450.h>
+ #include "common.h"
  
  static struct clksrc_clk clk_mout_dpll = {
        .clk    = {
@@@ -441,6 -442,26 +442,6 @@@ static struct clksrc_clk clksrcs[] = 
                .sources = &clkset_group2,
                .reg_src = { .reg = S5P64X0_CLK_SRC0, .shift = 22, .size = 2 },
                .reg_div = { .reg = S5P64X0_CLK_DIV1, .shift = 8, .size = 4 },
 -      }, {
 -              .clk    = {
 -                      .name           = "sclk_spi",
 -                      .devname        = "s3c64xx-spi.0",
 -                      .ctrlbit        = (1 << 20),
 -                      .enable         = s5p64x0_sclk_ctrl,
 -              },
 -              .sources = &clkset_group2,
 -              .reg_src = { .reg = S5P64X0_CLK_SRC0, .shift = 14, .size = 2 },
 -              .reg_div = { .reg = S5P64X0_CLK_DIV2, .shift = 0, .size = 4 },
 -      }, {
 -              .clk    = {
 -                      .name           = "sclk_spi",
 -                      .devname        = "s3c64xx-spi.1",
 -                      .ctrlbit        = (1 << 21),
 -                      .enable         = s5p64x0_sclk_ctrl,
 -              },
 -              .sources = &clkset_group2,
 -              .reg_src = { .reg = S5P64X0_CLK_SRC0, .shift = 16, .size = 2 },
 -              .reg_div = { .reg = S5P64X0_CLK_DIV2, .shift = 4, .size = 4 },
        }, {
                .clk    = {
                        .name           = "sclk_fimc",
@@@ -518,42 -539,13 +519,42 @@@ static struct clksrc_clk clk_sclk_uclk 
        .reg_div = { .reg = S5P64X0_CLK_DIV2, .shift = 16, .size = 4 },
  };
  
 +static struct clksrc_clk clk_sclk_spi0 = {
 +      .clk    = {
 +              .name           = "sclk_spi",
 +              .devname        = "s3c64xx-spi.0",
 +              .ctrlbit        = (1 << 20),
 +              .enable         = s5p64x0_sclk_ctrl,
 +      },
 +      .sources = &clkset_group2,
 +      .reg_src = { .reg = S5P64X0_CLK_SRC0, .shift = 14, .size = 2 },
 +      .reg_div = { .reg = S5P64X0_CLK_DIV2, .shift = 0, .size = 4 },
 +};
 +
 +static struct clksrc_clk clk_sclk_spi1 = {
 +      .clk    = {
 +              .name           = "sclk_spi",
 +              .devname        = "s3c64xx-spi.1",
 +              .ctrlbit        = (1 << 21),
 +              .enable         = s5p64x0_sclk_ctrl,
 +      },
 +      .sources = &clkset_group2,
 +      .reg_src = { .reg = S5P64X0_CLK_SRC0, .shift = 16, .size = 2 },
 +      .reg_div = { .reg = S5P64X0_CLK_DIV2, .shift = 4, .size = 4 },
 +};
 +
  static struct clksrc_clk *clksrc_cdev[] = {
        &clk_sclk_uclk,
 +      &clk_sclk_spi0,
 +      &clk_sclk_spi1,
  };
  
  static struct clk_lookup s5p6450_clk_lookup[] = {
        CLKDEV_INIT(NULL, "clk_uart_baud2", &clk_pclk_low.clk),
        CLKDEV_INIT(NULL, "clk_uart_baud3", &clk_sclk_uclk.clk),
 +      CLKDEV_INIT(NULL, "spi_busclk0", &clk_p),
 +      CLKDEV_INIT("s3c64xx-spi.0", "spi_busclk1", &clk_sclk_spi0.clk),
 +      CLKDEV_INIT("s3c64xx-spi.1", "spi_busclk1", &clk_sclk_spi1.clk),
  };
  
  /* Clock initialization code */
index 291e246c0ec01215409b0609ad63d99e1b5a7eda,c3166c4d2ace16896f8b76e91c470e754141384e..118c711f74e804203cd7a2f5613ea1abfe062554
@@@ -9,27 -9,25 +9,24 @@@ obj-m                         :
  obj-n                         :=
  obj-                          :=
  
- # Core support for S5PC100 system
+ # Core
  
- obj-$(CONFIG_CPU_S5PC100)     += cpu.o init.o clock.o
- obj-$(CONFIG_CPU_S5PC100)     += setup-i2c0.o
- obj-$(CONFIG_CPU_S5PC100)     += dma.o
+ obj-y                         += common.o clock.o
  
- # Helper and device support
- obj-$(CONFIG_S5PC100_SETUP_FB_24BPP)  += setup-fb-24bpp.o
- obj-$(CONFIG_S5PC100_SETUP_I2C1)      += setup-i2c1.o
- obj-$(CONFIG_S5PC100_SETUP_IDE)               += setup-ide.o
- obj-$(CONFIG_S5PC100_SETUP_KEYPAD)    += setup-keypad.o
- obj-$(CONFIG_S5PC100_SETUP_SDHCI_GPIO)        += setup-sdhci-gpio.o
- obj-$(CONFIG_S5PC100_SETUP_SPI)       += setup-spi.o
- # device support
- obj-y                         += dev-audio.o
+ obj-y                         += dma.o
  
  # machine support
  
  obj-$(CONFIG_MACH_SMDKC100)   += mach-smdkc100.o
  
  # device support
  obj-y                         += dev-audio.o
 -obj-$(CONFIG_S3C64XX_DEV_SPI) += dev-spi.o
+ obj-y                                 += setup-i2c0.o
+ obj-$(CONFIG_S5PC100_SETUP_FB_24BPP)  += setup-fb-24bpp.o
+ obj-$(CONFIG_S5PC100_SETUP_I2C1)      += setup-i2c1.o
+ obj-$(CONFIG_S5PC100_SETUP_IDE)               += setup-ide.o
+ obj-$(CONFIG_S5PC100_SETUP_KEYPAD)    += setup-keypad.o
 -obj-$(CONFIG_S5PC100_SETUP_SDHCI)     += setup-sdhci.o
+ obj-$(CONFIG_S5PC100_SETUP_SDHCI_GPIO)        += setup-sdhci-gpio.o
++obj-$(CONFIG_S5PC100_SETUP_SPI)               += setup-spi.o
index eba721b551fcc318381ff16fe3a5252aa24bdb90,49f8c30d58da102e4f10706d3a5b8e3699ae9660..247194dd366c202bfcf0bdbc583155b0eea675ff
@@@ -27,7 -27,8 +27,8 @@@
  #include <plat/pll.h>
  #include <plat/s5p-clock.h>
  #include <plat/clock-clksrc.h>
- #include <plat/s5pc100.h>
+ #include "common.h"
  
  static struct clk s5p_clk_otgphy = {
        .name           = "otg_phy",
@@@ -425,6 -426,24 +426,6 @@@ static struct clk init_clocks_off[] = 
                .parent         = &clk_div_d0_bus.clk,
                .enable         = s5pc100_d0_2_ctrl,
                .ctrlbit        = (1 << 1),
 -      }, {
 -              .name           = "hsmmc",
 -              .devname        = "s3c-sdhci.2",
 -              .parent         = &clk_div_d1_bus.clk,
 -              .enable         = s5pc100_d1_0_ctrl,
 -              .ctrlbit        = (1 << 7),
 -      }, {
 -              .name           = "hsmmc",
 -              .devname        = "s3c-sdhci.1",
 -              .parent         = &clk_div_d1_bus.clk,
 -              .enable         = s5pc100_d1_0_ctrl,
 -              .ctrlbit        = (1 << 6),
 -      }, {
 -              .name           = "hsmmc",
 -              .devname        = "s3c-sdhci.0",
 -              .parent         = &clk_div_d1_bus.clk,
 -              .enable         = s5pc100_d1_0_ctrl,
 -              .ctrlbit        = (1 << 5),
        }, {
                .name           = "modemif",
                .parent         = &clk_div_d1_bus.clk,
                .parent         = &clk_div_pclkd1.clk,
                .enable         = s5pc100_d1_5_ctrl,
                .ctrlbit        = (1 << 8),
 -      }, {
 -              .name           = "spi_48m",
 -              .devname        = "s3c64xx-spi.0",
 -              .parent         = &clk_mout_48m.clk,
 -              .enable         = s5pc100_sclk0_ctrl,
 -              .ctrlbit        = (1 << 7),
 -      }, {
 -              .name           = "spi_48m",
 -              .devname        = "s3c64xx-spi.1",
 -              .parent         = &clk_mout_48m.clk,
 -              .enable         = s5pc100_sclk0_ctrl,
 -              .ctrlbit        = (1 << 8),
 -      }, {
 -              .name           = "spi_48m",
 -              .devname        = "s3c64xx-spi.2",
 -              .parent         = &clk_mout_48m.clk,
 -              .enable         = s5pc100_sclk0_ctrl,
 -              .ctrlbit        = (1 << 9),
        }, {
                .name           = "mmc_48m",
                .devname        = "s3c-sdhci.0",
        },
  };
  
 +static struct clk clk_hsmmc2 = {
 +      .name           = "hsmmc",
 +      .devname        = "s3c-sdhci.2",
 +      .parent         = &clk_div_d1_bus.clk,
 +      .enable         = s5pc100_d1_0_ctrl,
 +      .ctrlbit        = (1 << 7),
 +};
 +
 +static struct clk clk_hsmmc1 = {
 +      .name           = "hsmmc",
 +      .devname        = "s3c-sdhci.1",
 +      .parent         = &clk_div_d1_bus.clk,
 +      .enable         = s5pc100_d1_0_ctrl,
 +      .ctrlbit        = (1 << 6),
 +};
 +
 +static struct clk clk_hsmmc0 = {
 +      .name           = "hsmmc",
 +      .devname        = "s3c-sdhci.0",
 +      .parent         = &clk_div_d1_bus.clk,
 +      .enable         = s5pc100_d1_0_ctrl,
 +      .ctrlbit        = (1 << 5),
 +};
 +
 +static struct clk clk_48m_spi0 = {
 +      .name           = "spi_48m",
 +      .devname        = "s3c64xx-spi.0",
 +      .parent         = &clk_mout_48m.clk,
 +      .enable         = s5pc100_sclk0_ctrl,
 +      .ctrlbit        = (1 << 7),
 +};
 +
 +static struct clk clk_48m_spi1 = {
 +      .name           = "spi_48m",
 +      .devname        = "s3c64xx-spi.1",
 +      .parent         = &clk_mout_48m.clk,
 +      .enable         = s5pc100_sclk0_ctrl,
 +      .ctrlbit        = (1 << 8),
 +};
 +
 +static struct clk clk_48m_spi2 = {
 +      .name           = "spi_48m",
 +      .devname        = "s3c64xx-spi.2",
 +      .parent         = &clk_mout_48m.clk,
 +      .enable         = s5pc100_sclk0_ctrl,
 +      .ctrlbit        = (1 << 9),
 +};
 +
  static struct clk clk_vclk54m = {
        .name           = "vclk_54m",
        .rate           = 54000000,
@@@ -940,6 -929,39 +941,6 @@@ static struct clksrc_clk clk_sclk_spdi
  
  static struct clksrc_clk clksrcs[] = {
        {
 -              .clk    = {
 -                      .name           = "sclk_spi",
 -                      .devname        = "s3c64xx-spi.0",
 -                      .ctrlbit        = (1 << 4),
 -                      .enable         = s5pc100_sclk0_ctrl,
 -
 -              },
 -              .sources = &clk_src_group1,
 -              .reg_src = { .reg = S5P_CLK_SRC1, .shift = 4, .size = 2 },
 -              .reg_div = { .reg = S5P_CLK_DIV2, .shift = 4, .size = 4 },
 -      }, {
 -              .clk    = {
 -                      .name           = "sclk_spi",
 -                      .devname        = "s3c64xx-spi.1",
 -                      .ctrlbit        = (1 << 5),
 -                      .enable         = s5pc100_sclk0_ctrl,
 -
 -              },
 -              .sources = &clk_src_group1,
 -              .reg_src = { .reg = S5P_CLK_SRC1, .shift = 8, .size = 2 },
 -              .reg_div = { .reg = S5P_CLK_DIV2, .shift = 8, .size = 4 },
 -      }, {
 -              .clk    = {
 -                      .name           = "sclk_spi",
 -                      .devname        = "s3c64xx-spi.2",
 -                      .ctrlbit        = (1 << 6),
 -                      .enable         = s5pc100_sclk0_ctrl,
 -
 -              },
 -              .sources = &clk_src_group1,
 -              .reg_src = { .reg = S5P_CLK_SRC1, .shift = 12, .size = 2 },
 -              .reg_div = { .reg = S5P_CLK_DIV2, .shift = 12, .size = 4 },
 -      }, {
                .clk    = {
                        .name           = "sclk_mixer",
                        .ctrlbit        = (1 << 6),
                .sources = &clk_src_group7,
                .reg_src = { .reg = S5P_CLK_SRC2, .shift = 24, .size = 2 },
                .reg_div = { .reg = S5P_CLK_DIV3, .shift = 24, .size = 4 },
 -      }, {
 -              .clk    = {
 -                      .name           = "sclk_mmc",
 -                      .devname        = "s3c-sdhci.0",
 -                      .ctrlbit        = (1 << 12),
 -                      .enable         = s5pc100_sclk1_ctrl,
 -
 -              },
 -              .sources = &clk_src_mmc0,
 -              .reg_src = { .reg = S5P_CLK_SRC2, .shift = 0, .size = 2 },
 -              .reg_div = { .reg = S5P_CLK_DIV3, .shift = 0, .size = 4 },
 -      }, {
 -              .clk    = {
 -                      .name           = "sclk_mmc",
 -                      .devname        = "s3c-sdhci.1",
 -                      .ctrlbit        = (1 << 13),
 -                      .enable         = s5pc100_sclk1_ctrl,
 -
 -              },
 -              .sources = &clk_src_mmc12,
 -              .reg_src = { .reg = S5P_CLK_SRC2, .shift = 4, .size = 2 },
 -              .reg_div = { .reg = S5P_CLK_DIV3, .shift = 4, .size = 4 },
 -      }, {
 -              .clk    = {
 -                      .name           = "sclk_mmc",
 -                      .devname        = "s3c-sdhci.2",
 -                      .ctrlbit        = (1 << 14),
 -                      .enable         = s5pc100_sclk1_ctrl,
 -
 -              },
 -              .sources = &clk_src_mmc12,
 -              .reg_src = { .reg = S5P_CLK_SRC2, .shift = 8, .size = 2 },
 -              .reg_div = { .reg = S5P_CLK_DIV3, .shift = 8, .size = 4 },
        }, {
                .clk    = {
                        .name           = "sclk_irda",
@@@ -1045,78 -1100,6 +1046,78 @@@ static struct clksrc_clk clk_sclk_uart 
        .reg_div = { .reg = S5P_CLK_DIV2, .shift = 0, .size = 4 },
  };
  
 +static struct clksrc_clk clk_sclk_mmc0 = {
 +      .clk    = {
 +              .name           = "sclk_mmc",
 +              .devname        = "s3c-sdhci.0",
 +              .ctrlbit        = (1 << 12),
 +              .enable         = s5pc100_sclk1_ctrl,
 +      },
 +      .sources = &clk_src_mmc0,
 +      .reg_src = { .reg = S5P_CLK_SRC2, .shift = 0, .size = 2 },
 +      .reg_div = { .reg = S5P_CLK_DIV3, .shift = 0, .size = 4 },
 +};
 +
 +static struct clksrc_clk clk_sclk_mmc1 = {
 +      .clk    = {
 +              .name           = "sclk_mmc",
 +              .devname        = "s3c-sdhci.1",
 +              .ctrlbit        = (1 << 13),
 +              .enable         = s5pc100_sclk1_ctrl,
 +      },
 +      .sources = &clk_src_mmc12,
 +      .reg_src = { .reg = S5P_CLK_SRC2, .shift = 4, .size = 2 },
 +      .reg_div = { .reg = S5P_CLK_DIV3, .shift = 4, .size = 4 },
 +};
 +
 +static struct clksrc_clk clk_sclk_mmc2 = {
 +      .clk    = {
 +              .name           = "sclk_mmc",
 +              .devname        = "s3c-sdhci.2",
 +              .ctrlbit        = (1 << 14),
 +              .enable         = s5pc100_sclk1_ctrl,
 +      },
 +      .sources = &clk_src_mmc12,
 +      .reg_src = { .reg = S5P_CLK_SRC2, .shift = 8, .size = 2 },
 +      .reg_div = { .reg = S5P_CLK_DIV3, .shift = 8, .size = 4 },
 +};
 +
 +static struct clksrc_clk clk_sclk_spi0 = {
 +      .clk    = {
 +              .name           = "sclk_spi",
 +              .devname        = "s3c64xx-spi.0",
 +              .ctrlbit        = (1 << 4),
 +              .enable         = s5pc100_sclk0_ctrl,
 +      },
 +      .sources = &clk_src_group1,
 +      .reg_src = { .reg = S5P_CLK_SRC1, .shift = 4, .size = 2 },
 +      .reg_div = { .reg = S5P_CLK_DIV2, .shift = 4, .size = 4 },
 +};
 +
 +static struct clksrc_clk clk_sclk_spi1 = {
 +      .clk    = {
 +              .name           = "sclk_spi",
 +              .devname        = "s3c64xx-spi.1",
 +              .ctrlbit        = (1 << 5),
 +              .enable         = s5pc100_sclk0_ctrl,
 +      },
 +      .sources = &clk_src_group1,
 +      .reg_src = { .reg = S5P_CLK_SRC1, .shift = 8, .size = 2 },
 +      .reg_div = { .reg = S5P_CLK_DIV2, .shift = 8, .size = 4 },
 +};
 +
 +static struct clksrc_clk clk_sclk_spi2 = {
 +      .clk    = {
 +              .name           = "sclk_spi",
 +              .devname        = "s3c64xx-spi.2",
 +              .ctrlbit        = (1 << 6),
 +              .enable         = s5pc100_sclk0_ctrl,
 +      },
 +      .sources = &clk_src_group1,
 +      .reg_src = { .reg = S5P_CLK_SRC1, .shift = 12, .size = 2 },
 +      .reg_div = { .reg = S5P_CLK_DIV2, .shift = 12, .size = 4 },
 +};
 +
  /* Clock initialisation code */
  static struct clksrc_clk *sysclks[] = {
        &clk_mout_apll,
        &clk_sclk_spdif,
  };
  
 +static struct clk *clk_cdev[] = {
 +      &clk_hsmmc0,
 +      &clk_hsmmc1,
 +      &clk_hsmmc2,
 +      &clk_48m_spi0,
 +      &clk_48m_spi1,
 +      &clk_48m_spi2,
 +};
 +
  static struct clksrc_clk *clksrc_cdev[] = {
        &clk_sclk_uart,
 +      &clk_sclk_mmc0,
 +      &clk_sclk_mmc1,
 +      &clk_sclk_mmc2,
 +      &clk_sclk_spi0,
 +      &clk_sclk_spi1,
 +      &clk_sclk_spi2,
  };
  
  void __init_or_cpufreq s5pc100_setup_clocks(void)
@@@ -1307,19 -1275,6 +1308,19 @@@ static struct clk *clks[] __initdata = 
  static struct clk_lookup s5pc100_clk_lookup[] = {
        CLKDEV_INIT(NULL, "clk_uart_baud2", &clk_p),
        CLKDEV_INIT(NULL, "clk_uart_baud3", &clk_sclk_uart.clk),
 +      CLKDEV_INIT("s3c-sdhci.0", "mmc_busclk.0", &clk_hsmmc0),
 +      CLKDEV_INIT("s3c-sdhci.1", "mmc_busclk.0", &clk_hsmmc1),
 +      CLKDEV_INIT("s3c-sdhci.2", "mmc_busclk.0", &clk_hsmmc2),
 +      CLKDEV_INIT("s3c-sdhci.0", "mmc_busclk.2", &clk_sclk_mmc0.clk),
 +      CLKDEV_INIT("s3c-sdhci.1", "mmc_busclk.2", &clk_sclk_mmc1.clk),
 +      CLKDEV_INIT("s3c-sdhci.2", "mmc_busclk.2", &clk_sclk_mmc2.clk),
 +      CLKDEV_INIT(NULL, "spi_busclk0", &clk_p),
 +      CLKDEV_INIT("s3c64xx-spi.0", "spi_busclk1", &clk_48m_spi0),
 +      CLKDEV_INIT("s3c64xx-spi.0", "spi_busclk2", &clk_sclk_spi0.clk),
 +      CLKDEV_INIT("s3c64xx-spi.1", "spi_busclk1", &clk_48m_spi1),
 +      CLKDEV_INIT("s3c64xx-spi.1", "spi_busclk2", &clk_sclk_spi1.clk),
 +      CLKDEV_INIT("s3c64xx-spi.2", "spi_busclk1", &clk_48m_spi2),
 +      CLKDEV_INIT("s3c64xx-spi.2", "spi_busclk2", &clk_sclk_spi2.clk),
  };
  
  void __init s5pc100_register_clocks(void)
        s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off));
        clkdev_add_table(s5pc100_clk_lookup, ARRAY_SIZE(s5pc100_clk_lookup));
  
 +      s3c24xx_register_clocks(clk_cdev, ARRAY_SIZE(clk_cdev));
 +      for (ptr = 0; ptr < ARRAY_SIZE(clk_cdev); ptr++)
 +              s3c_disable_clocks(clk_cdev[ptr], 1);
 +
        s3c24xx_register_clock(&dummy_apb_pclk);
  
        s3c_pwmclk_init();
index 471df5d2d25c82aadbeb7b73b5a36d3ddfdc7772,4c59186de9575c3ac3f0d82e4eef752dfff68f33..76a121dd52b434fd4ae865dbf8aa6685082c4d41
@@@ -10,29 -10,33 +10,32 @@@ obj-m                              :
  obj-n                         :=
  obj-                          :=
  
- # Core support for S5PV210 system
+ # Core
+ obj-y                         += common.o clock.o
  
- obj-$(CONFIG_CPU_S5PV210)     += cpu.o init.o clock.o dma.o
- obj-$(CONFIG_CPU_S5PV210)     += setup-i2c0.o
  obj-$(CONFIG_PM)              += pm.o
  
+ obj-y                         += dma.o
  # 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
+ obj-$(CONFIG_MACH_SMDKC110)   += mach-smdkc110.o
+ obj-$(CONFIG_MACH_SMDKV210)   += mach-smdkv210.o
  obj-$(CONFIG_MACH_TORBRECK)   += mach-torbreck.o
  
  # device support
  
  obj-y                         += dev-audio.o
 -obj-$(CONFIG_S3C64XX_DEV_SPI) += dev-spi.o
  
+ obj-y                                 += setup-i2c0.o
  obj-$(CONFIG_S5PV210_SETUP_FB_24BPP)  += setup-fb-24bpp.o
  obj-$(CONFIG_S5PV210_SETUP_FIMC)      += setup-fimc.o
- obj-$(CONFIG_S5PV210_SETUP_I2C1)      += setup-i2c1.o
- obj-$(CONFIG_S5PV210_SETUP_I2C2)      += setup-i2c2.o
+ obj-$(CONFIG_S5PV210_SETUP_I2C1)      += setup-i2c1.o
+ obj-$(CONFIG_S5PV210_SETUP_I2C2)      += setup-i2c2.o
  obj-$(CONFIG_S5PV210_SETUP_IDE)               += setup-ide.o
  obj-$(CONFIG_S5PV210_SETUP_KEYPAD)    += setup-keypad.o
 -obj-$(CONFIG_S5PV210_SETUP_SDHCI)     += setup-sdhci.o
  obj-$(CONFIG_S5PV210_SETUP_SDHCI_GPIO)        += setup-sdhci-gpio.o
 +obj-$(CONFIG_S5PV210_SETUP_SPI)               += setup-spi.o
index cead51321b297acadff7e2cb0163e6c028cb6646,ed60b2683bf0fafa1698f445c6245682af04e2b8..11db6c0fb66614b45f5a9641b4eeff1ef5115be7
@@@ -29,7 -29,8 +29,8 @@@
  #include <plat/pll.h>
  #include <plat/s5p-clock.h>
  #include <plat/clock-clksrc.h>
- #include <plat/s5pv210.h>
+ #include "common.h"
  
  static unsigned long xtal;
  
@@@ -398,6 -399,30 +399,6 @@@ static struct clk init_clocks_off[] = 
                .parent         = &clk_hclk_psys.clk,
                .enable         = s5pv210_clk_ip1_ctrl,
                .ctrlbit        = (1<<25),
 -      }, {
 -              .name           = "hsmmc",
 -              .devname        = "s3c-sdhci.0",
 -              .parent         = &clk_hclk_psys.clk,
 -              .enable         = s5pv210_clk_ip2_ctrl,
 -              .ctrlbit        = (1<<16),
 -      }, {
 -              .name           = "hsmmc",
 -              .devname        = "s3c-sdhci.1",
 -              .parent         = &clk_hclk_psys.clk,
 -              .enable         = s5pv210_clk_ip2_ctrl,
 -              .ctrlbit        = (1<<17),
 -      }, {
 -              .name           = "hsmmc",
 -              .devname        = "s3c-sdhci.2",
 -              .parent         = &clk_hclk_psys.clk,
 -              .enable         = s5pv210_clk_ip2_ctrl,
 -              .ctrlbit        = (1<<18),
 -      }, {
 -              .name           = "hsmmc",
 -              .devname        = "s3c-sdhci.3",
 -              .parent         = &clk_hclk_psys.clk,
 -              .enable         = s5pv210_clk_ip2_ctrl,
 -              .ctrlbit        = (1<<19),
        }, {
                .name           = "systimer",
                .parent         = &clk_pclk_psys.clk,
@@@ -535,38 -560,6 +536,38 @@@ static struct clk init_clocks[] = 
        },
  };
  
 +static struct clk clk_hsmmc0 = {
 +      .name           = "hsmmc",
 +      .devname        = "s3c-sdhci.0",
 +      .parent         = &clk_hclk_psys.clk,
 +      .enable         = s5pv210_clk_ip2_ctrl,
 +      .ctrlbit        = (1<<16),
 +};
 +
 +static struct clk clk_hsmmc1 = {
 +      .name           = "hsmmc",
 +      .devname        = "s3c-sdhci.1",
 +      .parent         = &clk_hclk_psys.clk,
 +      .enable         = s5pv210_clk_ip2_ctrl,
 +      .ctrlbit        = (1<<17),
 +};
 +
 +static struct clk clk_hsmmc2 = {
 +      .name           = "hsmmc",
 +      .devname        = "s3c-sdhci.2",
 +      .parent         = &clk_hclk_psys.clk,
 +      .enable         = s5pv210_clk_ip2_ctrl,
 +      .ctrlbit        = (1<<18),
 +};
 +
 +static struct clk clk_hsmmc3 = {
 +      .name           = "hsmmc",
 +      .devname        = "s3c-sdhci.3",
 +      .parent         = &clk_hclk_psys.clk,
 +      .enable         = s5pv210_clk_ip2_ctrl,
 +      .ctrlbit        = (1<<19),
 +};
 +
  static struct clk *clkset_uart_list[] = {
        [6] = &clk_mout_mpll.clk,
        [7] = &clk_mout_epll.clk,
@@@ -872,6 -865,46 +873,6 @@@ static struct clksrc_clk clksrcs[] = 
                .sources = &clkset_group2,
                .reg_src = { .reg = S5P_CLK_SRC1, .shift = 20, .size = 4 },
                .reg_div = { .reg = S5P_CLK_DIV1, .shift = 20, .size = 4 },
 -      }, {
 -              .clk            = {
 -                      .name           = "sclk_mmc",
 -                      .devname        = "s3c-sdhci.0",
 -                      .enable         = s5pv210_clk_mask0_ctrl,
 -                      .ctrlbit        = (1 << 8),
 -              },
 -              .sources = &clkset_group2,
 -              .reg_src = { .reg = S5P_CLK_SRC4, .shift = 0, .size = 4 },
 -              .reg_div = { .reg = S5P_CLK_DIV4, .shift = 0, .size = 4 },
 -      }, {
 -              .clk            = {
 -                      .name           = "sclk_mmc",
 -                      .devname        = "s3c-sdhci.1",
 -                      .enable         = s5pv210_clk_mask0_ctrl,
 -                      .ctrlbit        = (1 << 9),
 -              },
 -              .sources = &clkset_group2,
 -              .reg_src = { .reg = S5P_CLK_SRC4, .shift = 4, .size = 4 },
 -              .reg_div = { .reg = S5P_CLK_DIV4, .shift = 4, .size = 4 },
 -      }, {
 -              .clk            = {
 -                      .name           = "sclk_mmc",
 -                      .devname        = "s3c-sdhci.2",
 -                      .enable         = s5pv210_clk_mask0_ctrl,
 -                      .ctrlbit        = (1 << 10),
 -              },
 -              .sources = &clkset_group2,
 -              .reg_src = { .reg = S5P_CLK_SRC4, .shift = 8, .size = 4 },
 -              .reg_div = { .reg = S5P_CLK_DIV4, .shift = 8, .size = 4 },
 -      }, {
 -              .clk            = {
 -                      .name           = "sclk_mmc",
 -                      .devname        = "s3c-sdhci.3",
 -                      .enable         = s5pv210_clk_mask0_ctrl,
 -                      .ctrlbit        = (1 << 11),
 -              },
 -              .sources = &clkset_group2,
 -              .reg_src = { .reg = S5P_CLK_SRC4, .shift = 12, .size = 4 },
 -              .reg_div = { .reg = S5P_CLK_DIV4, .shift = 12, .size = 4 },
        }, {
                .clk            = {
                        .name           = "sclk_mfc",
                .sources = &clkset_group2,
                .reg_src = { .reg = S5P_CLK_SRC1, .shift = 24, .size = 4 },
                .reg_div = { .reg = S5P_CLK_DIV1, .shift = 28, .size = 4 },
 -      }, {
 -              .clk            = {
 -                      .name           = "sclk_spi",
 -                      .devname        = "s3c64xx-spi.0",
 -                      .enable         = s5pv210_clk_mask0_ctrl,
 -                      .ctrlbit        = (1 << 16),
 -              },
 -              .sources = &clkset_group2,
 -              .reg_src = { .reg = S5P_CLK_SRC5, .shift = 0, .size = 4 },
 -              .reg_div = { .reg = S5P_CLK_DIV5, .shift = 0, .size = 4 },
 -      }, {
 -              .clk            = {
 -                      .name           = "sclk_spi",
 -                      .devname        = "s3c64xx-spi.1",
 -                      .enable         = s5pv210_clk_mask0_ctrl,
 -                      .ctrlbit        = (1 << 17),
 -              },
 -              .sources = &clkset_group2,
 -              .reg_src = { .reg = S5P_CLK_SRC5, .shift = 4, .size = 4 },
 -              .reg_div = { .reg = S5P_CLK_DIV5, .shift = 4, .size = 4 },
        }, {
                .clk            = {
                        .name           = "sclk_pwi",
@@@ -978,97 -1031,11 +979,97 @@@ static struct clksrc_clk clk_sclk_uart
        .reg_div = { .reg = S5P_CLK_DIV4, .shift = 28, .size = 4 },
  };
  
 +static struct clksrc_clk clk_sclk_mmc0 = {
 +      .clk            = {
 +              .name           = "sclk_mmc",
 +              .devname        = "s3c-sdhci.0",
 +              .enable         = s5pv210_clk_mask0_ctrl,
 +              .ctrlbit        = (1 << 8),
 +      },
 +      .sources = &clkset_group2,
 +      .reg_src = { .reg = S5P_CLK_SRC4, .shift = 0, .size = 4 },
 +      .reg_div = { .reg = S5P_CLK_DIV4, .shift = 0, .size = 4 },
 +};
 +
 +static struct clksrc_clk clk_sclk_mmc1 = {
 +      .clk            = {
 +              .name           = "sclk_mmc",
 +              .devname        = "s3c-sdhci.1",
 +              .enable         = s5pv210_clk_mask0_ctrl,
 +              .ctrlbit        = (1 << 9),
 +      },
 +      .sources = &clkset_group2,
 +      .reg_src = { .reg = S5P_CLK_SRC4, .shift = 4, .size = 4 },
 +      .reg_div = { .reg = S5P_CLK_DIV4, .shift = 4, .size = 4 },
 +};
 +
 +static struct clksrc_clk clk_sclk_mmc2 = {
 +      .clk            = {
 +              .name           = "sclk_mmc",
 +              .devname        = "s3c-sdhci.2",
 +              .enable         = s5pv210_clk_mask0_ctrl,
 +              .ctrlbit        = (1 << 10),
 +      },
 +      .sources = &clkset_group2,
 +      .reg_src = { .reg = S5P_CLK_SRC4, .shift = 8, .size = 4 },
 +      .reg_div = { .reg = S5P_CLK_DIV4, .shift = 8, .size = 4 },
 +};
 +
 +static struct clksrc_clk clk_sclk_mmc3 = {
 +      .clk            = {
 +              .name           = "sclk_mmc",
 +              .devname        = "s3c-sdhci.3",
 +              .enable         = s5pv210_clk_mask0_ctrl,
 +              .ctrlbit        = (1 << 11),
 +      },
 +      .sources = &clkset_group2,
 +      .reg_src = { .reg = S5P_CLK_SRC4, .shift = 12, .size = 4 },
 +      .reg_div = { .reg = S5P_CLK_DIV4, .shift = 12, .size = 4 },
 +};
 +
 +static struct clksrc_clk clk_sclk_spi0 = {
 +      .clk            = {
 +              .name           = "sclk_spi",
 +              .devname        = "s3c64xx-spi.0",
 +              .enable         = s5pv210_clk_mask0_ctrl,
 +              .ctrlbit        = (1 << 16),
 +      },
 +      .sources = &clkset_group2,
 +      .reg_src = { .reg = S5P_CLK_SRC5, .shift = 0, .size = 4 },
 +      .reg_div = { .reg = S5P_CLK_DIV5, .shift = 0, .size = 4 },
 +      };
 +
 +static struct clksrc_clk clk_sclk_spi1 = {
 +      .clk            = {
 +              .name           = "sclk_spi",
 +              .devname        = "s3c64xx-spi.1",
 +              .enable         = s5pv210_clk_mask0_ctrl,
 +              .ctrlbit        = (1 << 17),
 +      },
 +      .sources = &clkset_group2,
 +      .reg_src = { .reg = S5P_CLK_SRC5, .shift = 4, .size = 4 },
 +      .reg_div = { .reg = S5P_CLK_DIV5, .shift = 4, .size = 4 },
 +      };
 +
 +
  static struct clksrc_clk *clksrc_cdev[] = {
        &clk_sclk_uart0,
        &clk_sclk_uart1,
        &clk_sclk_uart2,
        &clk_sclk_uart3,
 +      &clk_sclk_mmc0,
 +      &clk_sclk_mmc1,
 +      &clk_sclk_mmc2,
 +      &clk_sclk_mmc3,
 +      &clk_sclk_spi0,
 +      &clk_sclk_spi1,
 +};
 +
 +static struct clk *clk_cdev[] = {
 +      &clk_hsmmc0,
 +      &clk_hsmmc1,
 +      &clk_hsmmc2,
 +      &clk_hsmmc3,
  };
  
  /* Clock initialisation code */
@@@ -1316,17 -1283,6 +1317,17 @@@ static struct clk_lookup s5pv210_clk_lo
        CLKDEV_INIT("s5pv210-uart.1", "clk_uart_baud1", &clk_sclk_uart1.clk),
        CLKDEV_INIT("s5pv210-uart.2", "clk_uart_baud1", &clk_sclk_uart2.clk),
        CLKDEV_INIT("s5pv210-uart.3", "clk_uart_baud1", &clk_sclk_uart3.clk),
 +      CLKDEV_INIT("s3c-sdhci.0", "mmc_busclk.0", &clk_hsmmc0),
 +      CLKDEV_INIT("s3c-sdhci.1", "mmc_busclk.0", &clk_hsmmc1),
 +      CLKDEV_INIT("s3c-sdhci.2", "mmc_busclk.0", &clk_hsmmc2),
 +      CLKDEV_INIT("s3c-sdhci.3", "mmc_busclk.0", &clk_hsmmc3),
 +      CLKDEV_INIT("s3c-sdhci.0", "mmc_busclk.2", &clk_sclk_mmc0.clk),
 +      CLKDEV_INIT("s3c-sdhci.1", "mmc_busclk.2", &clk_sclk_mmc1.clk),
 +      CLKDEV_INIT("s3c-sdhci.2", "mmc_busclk.2", &clk_sclk_mmc2.clk),
 +      CLKDEV_INIT("s3c-sdhci.3", "mmc_busclk.2", &clk_sclk_mmc3.clk),
 +      CLKDEV_INIT(NULL, "spi_busclk0", &clk_p),
 +      CLKDEV_INIT("s3c64xx-spi.0", "spi_busclk1", &clk_sclk_spi0.clk),
 +      CLKDEV_INIT("s3c64xx-spi.1", "spi_busclk1", &clk_sclk_spi1.clk),
  };
  
  void __init s5pv210_register_clocks(void)
        s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off));
        clkdev_add_table(s5pv210_clk_lookup, ARRAY_SIZE(s5pv210_clk_lookup));
  
 +      s3c24xx_register_clocks(clk_cdev, ARRAY_SIZE(clk_cdev));
 +      for (ptr = 0; ptr < ARRAY_SIZE(clk_cdev); ptr++)
 +              s3c_disable_clocks(clk_cdev[ptr], 1);
 +
        s3c24xx_register_clock(&dummy_apb_pclk);
        s3c_pwmclk_init();
  }
index 404ac7aec3c1899e93c440bc318401b44d560910,6f7dfe993c127baaa8204015fd4b7ee16676df84..5e734d025a6a2c0926a292e2ce2f0f400f866e67
@@@ -22,6 -22,7 +22,7 @@@
  #include <linux/input.h>
  #include <linux/gpio.h>
  
+ #include <asm/hardware/vic.h>
  #include <asm/mach/arch.h>
  #include <asm/mach/map.h>
  #include <asm/setup.h>
@@@ -32,7 -33,6 +33,6 @@@
  
  #include <plat/gpio-cfg.h>
  #include <plat/regs-serial.h>
- #include <plat/s5pv210.h>
  #include <plat/devs.h>
  #include <plat/cpu.h>
  #include <plat/fb.h>
@@@ -41,6 -41,8 +41,8 @@@
  #include <plat/s5p-time.h>
  #include <plat/regs-fb-v4.h>
  
+ #include "common.h"
  /* Following are default values for UCON, ULCON and UFCON UART registers */
  #define AQUILA_UCON_DEFAULT   (S3C2410_UCON_TXILEVEL |        \
                                 S3C2410_UCON_RXILEVEL |        \
@@@ -595,7 -597,8 +597,7 @@@ static struct s3c_sdhci_platdata aquila
  
  static void aquila_setup_sdhci(void)
  {
 -      gpio_request(AQUILA_EXT_FLASH_EN, "FLASH_EN");
 -      gpio_direction_output(AQUILA_EXT_FLASH_EN, 1);
 +      gpio_request_one(AQUILA_EXT_FLASH_EN, GPIOF_OUT_INIT_HIGH, "FLASH_EN");
  
        s3c_sdhci0_set_platdata(&aquila_hsmmc0_data);
        s3c_sdhci1_set_platdata(&aquila_hsmmc1_data);
@@@ -643,7 -646,7 +645,7 @@@ static void __init aquila_sound_init(vo
  
  static void __init aquila_map_io(void)
  {
-       s5p_init_io(NULL, 0, S5P_VA_CHIPID);
+       s5pv210_init_io(NULL, 0);
        s3c24xx_init_clocks(24000000);
        s3c24xx_init_uarts(aquila_uartcfgs, ARRAY_SIZE(aquila_uartcfgs));
        s5p_set_timer_source(S5P_PWM3, S5P_PWM4);
@@@ -679,7 -682,9 +681,9 @@@ MACHINE_START(AQUILA, "Aquila"
           Kyungmin Park <kyungmin.park@samsung.com> */
        .atag_offset    = 0x100,
        .init_irq       = s5pv210_init_irq,
+       .handle_irq     = vic_handle_irq,
        .map_io         = aquila_map_io,
        .init_machine   = aquila_machine_init,
        .timer          = &s5p_timer,
+       .restart        = s5pv210_restart,
  MACHINE_END
index e2754e9bd6b49d66ab0a6aaa1b700e541955cbdd,12c69371739806cca06fa0ba5f4bd02bd7079f6c..ff91526104397edb89d159c32b0ae97ee134865a
@@@ -27,6 -27,7 +27,7 @@@
  #include <linux/gpio.h>
  #include <linux/interrupt.h>
  
+ #include <asm/hardware/vic.h>
  #include <asm/mach/arch.h>
  #include <asm/mach/map.h>
  #include <asm/setup.h>
@@@ -37,7 -38,6 +38,6 @@@
  
  #include <plat/gpio-cfg.h>
  #include <plat/regs-serial.h>
- #include <plat/s5pv210.h>
  #include <plat/devs.h>
  #include <plat/cpu.h>
  #include <plat/fb.h>
@@@ -54,6 -54,8 +54,8 @@@
  #include <media/s5p_fimc.h>
  #include <media/noon010pc30.h>
  
+ #include "common.h"
  /* Following are default values for UCON, ULCON and UFCON UART registers */
  #define GONI_UCON_DEFAULT     (S3C2410_UCON_TXILEVEL |        \
                                 S3C2410_UCON_RXILEVEL |        \
@@@ -227,7 -229,8 +229,7 @@@ static void __init goni_radio_init(void
        i2c1_devs[0].irq = gpio_to_irq(gpio);
  
        gpio = S5PV210_GPJ2(5);                 /* XMSMDATA_5 */
 -      gpio_request(gpio, "FM_RST");
 -      gpio_direction_output(gpio, 1);
 +      gpio_request_one(gpio, GPIOF_OUT_INIT_HIGH, "FM_RST");
  }
  
  /* TSP */
@@@ -263,7 -266,8 +265,7 @@@ static void __init goni_tsp_init(void
        int gpio;
  
        gpio = S5PV210_GPJ1(3);         /* XMSMADDR_11 */
 -      gpio_request(gpio, "TSP_LDO_ON");
 -      gpio_direction_output(gpio, 1);
 +      gpio_request_one(gpio, GPIOF_OUT_INIT_HIGH, "TSP_LDO_ON");
        gpio_export(gpio, 0);
  
        gpio = S5PV210_GPJ0(5);         /* XMSMADDR_5 */
@@@ -888,7 -892,7 +890,7 @@@ static void __init goni_sound_init(void
  
  static void __init goni_map_io(void)
  {
-       s5p_init_io(NULL, 0, S5P_VA_CHIPID);
+       s5pv210_init_io(NULL, 0);
        s3c24xx_init_clocks(24000000);
        s3c24xx_init_uarts(goni_uartcfgs, ARRAY_SIZE(goni_uartcfgs));
        s5p_set_timer_source(S5P_PWM3, S5P_PWM4);
@@@ -954,8 -958,10 +956,10 @@@ MACHINE_START(GONI, "GONI"
        /* Maintainers: Kyungmin Park <kyungmin.park@samsung.com> */
        .atag_offset    = 0x100,
        .init_irq       = s5pv210_init_irq,
+       .handle_irq     = vic_handle_irq,
        .map_io         = goni_map_io,
        .init_machine   = goni_machine_init,
        .timer          = &s5p_timer,
        .reserve        = &goni_reserve,
+       .restart        = s5pv210_restart,
  MACHINE_END
index 513db9234c41d7168fa4c7c84884ccf399ff9d6b,cf4da73938220333bd26c813f1ef00d5ed4a1cea..f6feef4dce65d852529f6b251fc68c2d39c5170c
@@@ -20,6 -20,7 +20,7 @@@
  #include <linux/delay.h>
  #include <linux/pwm_backlight.h>
  
+ #include <asm/hardware/vic.h>
  #include <asm/mach/arch.h>
  #include <asm/mach/map.h>
  #include <asm/setup.h>
@@@ -33,7 -34,6 +34,6 @@@
  #include <plat/regs-serial.h>
  #include <plat/regs-srom.h>
  #include <plat/gpio-cfg.h>
- #include <plat/s5pv210.h>
  #include <plat/devs.h>
  #include <plat/cpu.h>
  #include <plat/adc.h>
@@@ -47,6 -47,8 +47,8 @@@
  #include <plat/backlight.h>
  #include <plat/regs-fb-v4.h>
  
+ #include "common.h"
  /* Following are default values for UCON, ULCON and UFCON UART registers */
  #define SMDKV210_UCON_DEFAULT (S3C2410_UCON_TXILEVEL |        \
                                 S3C2410_UCON_RXILEVEL |        \
@@@ -153,12 -155,15 +155,12 @@@ static void smdkv210_lte480wv_set_power
  {
        if (power) {
  #if !defined(CONFIG_BACKLIGHT_PWM)
 -              gpio_request(S5PV210_GPD0(3), "GPD0");
 -              gpio_direction_output(S5PV210_GPD0(3), 1);
 +              gpio_request_one(S5PV210_GPD0(3), GPIOF_OUT_INIT_HIGH, "GPD0");
                gpio_free(S5PV210_GPD0(3));
  #endif
  
                /* fire nRESET on power up */
 -              gpio_request(S5PV210_GPH0(6), "GPH0");
 -
 -              gpio_direction_output(S5PV210_GPH0(6), 1);
 +              gpio_request_one(S5PV210_GPH0(6), GPIOF_OUT_INIT_HIGH, "GPH0");
  
                gpio_set_value(S5PV210_GPH0(6), 0);
                mdelay(10);
                gpio_free(S5PV210_GPH0(6));
        } else {
  #if !defined(CONFIG_BACKLIGHT_PWM)
 -              gpio_request(S5PV210_GPD0(3), "GPD0");
 -              gpio_direction_output(S5PV210_GPD0(3), 0);
 +              gpio_request_one(S5PV210_GPD0(3), GPIOF_OUT_INIT_LOW, "GPD0");
                gpio_free(S5PV210_GPD0(3));
  #endif
        }
@@@ -274,7 -280,7 +276,7 @@@ static struct platform_pwm_backlight_da
  
  static void __init smdkv210_map_io(void)
  {
-       s5p_init_io(NULL, 0, S5P_VA_CHIPID);
+       s5pv210_init_io(NULL, 0);
        s3c24xx_init_clocks(24000000);
        s3c24xx_init_uarts(smdkv210_uartcfgs, ARRAY_SIZE(smdkv210_uartcfgs));
        s5p_set_timer_source(S5P_PWM2, S5P_PWM4);
@@@ -312,7 -318,9 +314,9 @@@ MACHINE_START(SMDKV210, "SMDKV210"
        /* Maintainer: Kukjin Kim <kgene.kim@samsung.com> */
        .atag_offset    = 0x100,
        .init_irq       = s5pv210_init_irq,
+       .handle_irq     = vic_handle_irq,
        .map_io         = smdkv210_map_io,
        .init_machine   = smdkv210_machine_init,
        .timer          = &s5p_timer,
+       .restart        = s5pv210_restart,
  MACHINE_END
index 6b3f3664edeb291d201833537bdb31947d1584d2,0d33ff0d67fbf7abf46f496c14e61dbdd3a9f6a4..9a20d1f55bb7a616408f3bc5fc0f41cefec0c64f
@@@ -435,11 -435,14 +435,11 @@@ static int __devinit sdhci_s3c_probe(st
  
        for (clks = 0, ptr = 0; ptr < MAX_BUS_CLK; ptr++) {
                struct clk *clk;
 -              char *name = pdata->clocks[ptr];
 -
 -              if (name == NULL)
 -                      continue;
 +              char name[14];
  
 +              snprintf(name, 14, "mmc_busclk.%d", ptr);
                clk = clk_get(dev, name);
                if (IS_ERR(clk)) {
 -                      dev_err(dev, "failed to get clock %s\n", name);
                        continue;
                }
  
@@@ -619,23 -622,29 +619,29 @@@ static int __devexit sdhci_s3c_remove(s
  
  #ifdef CONFIG_PM
  
- static int sdhci_s3c_suspend(struct platform_device *dev, pm_message_t pm)
+ static int sdhci_s3c_suspend(struct device *dev)
  {
-       struct sdhci_host *host = platform_get_drvdata(dev);
+       struct sdhci_host *host = dev_get_drvdata(dev);
  
-       return sdhci_suspend_host(host, pm);
+       return sdhci_suspend_host(host);
  }
  
- static int sdhci_s3c_resume(struct platform_device *dev)
+ static int sdhci_s3c_resume(struct device *dev)
  {
-       struct sdhci_host *host = platform_get_drvdata(dev);
+       struct sdhci_host *host = dev_get_drvdata(dev);
  
        return sdhci_resume_host(host);
  }
  
+ static const struct dev_pm_ops sdhci_s3c_pmops = {
+       .suspend        = sdhci_s3c_suspend,
+       .resume         = sdhci_s3c_resume,
+ };
+ #define SDHCI_S3C_PMOPS (&sdhci_s3c_pmops)
  #else
- #define sdhci_s3c_suspend NULL
- #define sdhci_s3c_resume NULL
+ #define SDHCI_S3C_PMOPS NULL
  #endif
  
  static struct platform_driver sdhci_s3c_driver = {
        .driver         = {
                .owner  = THIS_MODULE,
                .name   = "s3c-sdhci",
+               .pm     = SDHCI_S3C_PMOPS,
        },
  };