Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 11 Aug 2010 16:13:19 +0000 (09:13 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 11 Aug 2010 16:13:19 +0000 (09:13 -0700)
* 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm: (226 commits)
  ARM: 6323/1: cam60: don't use __init for cam60_spi_{flash_platform_data,partitions}
  ARM: 6324/1: cam60: move cam60_spi_devices to .init.data
  ARM: 6322/1: imx/pca100: Fix name of spi platform data
  ARM: 6321/1: fix syntax error in main Kconfig file
  ARM: 6297/1: move U300 timer to dynamic clock lookup
  ARM: 6296/1: clock U300 intcon and timer properly
  ARM: 6295/1: fix U300 apb_pclk split
  ARM: 6306/1: fix inverted MMC card detect in U300
  ARM: 6299/1: errata: TLBIASIDIS and TLBIMVAIS operations can broadcast a faulty ASID
  ARM: 6294/1: etm: do a dummy read from OSSRR during initialization
  ARM: 6292/1: coresight: add ETM management registers
  ARM: 6288/1: ftrace: document mcount formats
  ARM: 6287/1: ftrace: clean up mcount assembly indentation
  ARM: 6286/1: fix Thumb-2 decompressor broken by "Auto calculate ZRELADDR"
  ARM: 6281/1: video/imxfb.c: allow usage without BACKLIGHT_CLASS_DEVICE
  ARM: 6280/1: imx: Fix build failure when including <mach/gpio.h> without <linux/spinlock.h>
  ARM: S5PV210: Fix on missing s3c-sdhci card detection method for hsmmc3
  ARM: S5P: Fix on missing S5P_DEV_FIMC in plat-s5p/Kconfig
  ARM: S5PV210: Override FIMC driver name on Aquila board
  ARM: S5PC100: enable FIMC on SMDKC100
  ...

Fix up conflicts in arch/arm/mach-{s5pc100,s5pv210}/cpu.c due to
different subsystem 'setname' calls, and trivial port types in
include/linux/serial_core.h

1  2 
MAINTAINERS
arch/arm/include/asm/dma-mapping.h
arch/arm/mach-s3c64xx/mach-smdk6410.c
arch/arm/mach-s5pc100/cpu.c
arch/arm/mach-s5pc100/mach-smdkc100.c
arch/arm/mach-s5pv210/cpu.c
arch/arm/mach-s5pv210/mach-aquila.c
drivers/rtc/Kconfig
drivers/serial/Kconfig
drivers/video/Kconfig
include/linux/serial_core.h

diff --combined MAINTAINERS
@@@ -616,10 -616,10 +616,10 @@@ M:      Richard Purdie <rpurdie@rpsys.net
  S:    Maintained
  
  ARM/CORTINA SYSTEMS GEMINI ARM ARCHITECTURE
- M:    Paulius Zaleckas <paulius.zaleckas@gmail.com>
+ M:    Hans Ulli Kroll <ulli.kroll@googlemail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
- T:    git git://gitorious.org/linux-gemini/mainline.git
- S:    Odd Fixes
+ T:    git git://git.berlios.de/gemini-board
+ S:    Maintained
  F:    arch/arm/mach-gemini/
  
  ARM/EBSA110 MACHINE SUPPORT
@@@ -641,9 -641,10 +641,10 @@@ T:       topgit git://git.openezx.org/openezx
  F:    arch/arm/mach-pxa/ezx.c
  
  ARM/FARADAY FA526 PORT
- M:    Paulius Zaleckas <paulius.zaleckas@gmail.com>
+ M:    Hans Ulli Kroll <ulli.kroll@googlemail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
- S:    Odd Fixes
+ S:    Maintained
+ T:    git://git.berlios.de/gemini-board
  F:    arch/arm/mm/*-fa*
  
  ARM/FOOTBRIDGE ARCHITECTURE
@@@ -692,6 -693,13 +693,13 @@@ T:       git git://git.kernel.org/pub/scm/lin
  F:    arch/arm/mach-sa1100/jornada720.c
  F:    arch/arm/mach-sa1100/include/mach/jornada720.h
  
+ ARM/INCOME PXA270 SUPPORT
+ M:    Marek Vasut <marek.vasut@gmail.com>
+ L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
+ S:    Maintained
+ F:    arch/arm/mach-pxa/income.c
+ F:    arch/arm/mach-pxa/include/mach-pxa/income.h
  ARM/INTEL IOP32X ARM ARCHITECTURE
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  M:    Dan Williams <dan.j.williams@intel.com>
@@@ -947,8 -955,9 +955,9 @@@ ARM/SHMOBILE ARM ARCHITECTUR
  M:    Paul Mundt <lethal@linux-sh.org>
  M:    Magnus Damm <magnus.damm@gmail.com>
  L:    linux-sh@vger.kernel.org
- T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/genesis-2.6.git
  W:    http://oss.renesas.com
+ Q:    http://patchwork.kernel.org/project/linux-sh/list/
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/genesis-2.6.git
  S:    Supported
  F:    arch/arm/mach-shmobile/
  F:    drivers/sh/
@@@ -2203,12 -2212,6 +2212,12 @@@ F:    drivers/misc/cb710
  F:    drivers/mmc/host/cb710-mmc.*
  F:    include/linux/cb710.h
  
 +ENE KB2426 (ENE0100/ENE020XX) INFRARED RECEIVER
 +M:    Maxim Levitsky <maximlevitsky@gmail.com>
 +S:    Maintained
 +F:    drivers/media/IR/ene_ir.c
 +F:    drivers/media/IR/ene_ir.h
 +
  EPSON 1355 FRAMEBUFFER DRIVER
  M:    Christopher Hoover <ch@murgatroid.com>
  M:    Christopher Hoover <ch@hpl.hp.com>
@@@ -144,6 -144,16 +144,6 @@@ static inline int dma_set_mask(struct d
        return 0;
  }
  
 -static inline int dma_get_cache_alignment(void)
 -{
 -      return 32;
 -}
 -
 -static inline int dma_is_consistent(struct device *dev, dma_addr_t handle)
 -{
 -      return !!arch_is_coherent();
 -}
 -
  /*
   * DMA errors are defined by all-bits-set in the DMA address.
   */
@@@ -288,7 -298,15 +288,15 @@@ extern void dmabounce_unregister_dev(st
   * DMA access and 1 if the buffer needs to be bounced.
   *
   */
+ #ifdef CONFIG_SA1111
  extern int dma_needs_bounce(struct device*, dma_addr_t, size_t);
+ #else
+ static inline int dma_needs_bounce(struct device *dev, dma_addr_t addr,
+                                  size_t size)
+ {
+       return 0;
+ }
+ #endif
  
  /*
   * The DMA API, implemented by dmabounce.c.  See below for descriptions.
@@@ -17,6 -17,7 +17,7 @@@
  #include <linux/list.h>
  #include <linux/timer.h>
  #include <linux/init.h>
+ #include <linux/input.h>
  #include <linux/serial_core.h>
  #include <linux/platform_device.h>
  #include <linux/io.h>
@@@ -56,6 -57,7 +57,7 @@@
  #include <mach/regs-gpio.h>
  #include <mach/regs-sys.h>
  #include <mach/regs-srom.h>
+ #include <plat/ata.h>
  #include <plat/iic.h>
  #include <plat/fb.h>
  #include <plat/gpio-cfg.h>
@@@ -66,6 -68,7 +68,7 @@@
  #include <plat/cpu.h>
  #include <plat/adc.h>
  #include <plat/ts.h>
+ #include <plat/keypad.h>
  
  #define UCON S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK
  #define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB
@@@ -141,6 -144,7 +144,6 @@@ static struct platform_device smdk6410_
  static struct s3c_fb_pd_win smdk6410_fb_win0 = {
        /* this is to ensure we use win0 */
        .win_mode       = {
 -              .pixclock       = 41094,
                .left_margin    = 8,
                .right_margin   = 13,
                .upper_margin   = 7,
@@@ -241,6 -245,29 +244,29 @@@ static struct platform_device smdk6410_
  };
  #endif
  
+ static struct s3c_ide_platdata smdk6410_ide_pdata __initdata = {
+       .setup_gpio     = s3c64xx_ide_setup_gpio,
+ };
+ static uint32_t smdk6410_keymap[] __initdata = {
+       /* KEY(row, col, keycode) */
+       KEY(0, 3, KEY_1), KEY(0, 4, KEY_2), KEY(0, 5, KEY_3),
+       KEY(0, 6, KEY_4), KEY(0, 7, KEY_5),
+       KEY(1, 3, KEY_A), KEY(1, 4, KEY_B), KEY(1, 5, KEY_C),
+       KEY(1, 6, KEY_D), KEY(1, 7, KEY_E)
+ };
+ static struct matrix_keymap_data smdk6410_keymap_data __initdata = {
+       .keymap         = smdk6410_keymap,
+       .keymap_size    = ARRAY_SIZE(smdk6410_keymap),
+ };
+ static struct samsung_keypad_platdata smdk6410_keypad_data __initdata = {
+       .keymap_data    = &smdk6410_keymap_data,
+       .rows           = 2,
+       .cols           = 8,
+ };
  static struct map_desc smdk6410_iodesc[] = {};
  
  static struct platform_device *smdk6410_devices[] __initdata = {
        &s3c_device_ohci,
        &s3c_device_usb_hsotg,
        &s3c64xx_device_iisv4,
+       &samsung_device_keypad,
  
  #ifdef CONFIG_REGULATOR
        &smdk6410_b_pwr_5v,
  
        &smdk6410_smsc911x,
        &s3c_device_adc,
+       &s3c_device_cfcon,
+       &s3c_device_rtc,
        &s3c_device_ts,
        &s3c_device_wdt,
  };
@@@ -635,6 -665,8 +664,8 @@@ static void __init smdk6410_machine_ini
        s3c_i2c1_set_platdata(NULL);
        s3c_fb_set_platdata(&smdk6410_lcd_pdata);
  
+       samsung_keypad_set_platdata(&smdk6410_keypad_data);
        s3c24xx_ts_set_platdata(&s3c_ts_platform);
  
        /* configure nCS1 width to 16 bits */
        i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
        i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
  
+       s3c_ide_set_platdata(&smdk6410_ide_pdata);
        platform_add_devices(smdk6410_devices, ARRAY_SIZE(smdk6410_devices));
  }
  
  #include <plat/cpu.h>
  #include <plat/devs.h>
  #include <plat/clock.h>
+ #include <plat/ata-core.h>
  #include <plat/iic-core.h>
  #include <plat/sdhci.h>
+ #include <plat/adc-core.h>
  #include <plat/onenand-core.h>
 +#include <plat/fb-core.h>
  
  #include <plat/s5pc100.h>
  
@@@ -88,12 -89,14 +90,15 @@@ void __init s5pc100_map_io(void
        s5pc100_default_sdhci1();
        s5pc100_default_sdhci2();
  
+       s3c_adc_setname("s3c64xx-adc");
        /* the i2c devices are directly compatible with s3c2440 */
        s3c_i2c0_setname("s3c2440-i2c");
        s3c_i2c1_setname("s3c2440-i2c");
  
        s3c_onenand_setname("s5pc100-onenand");
 +      s3c_fb_setname("s5pc100-fb");
+       s3c_cfcon_setname("s5pc100-pata");
  }
  
  void __init s5pc100_init_clocks(int xtal)
@@@ -22,6 -22,7 +22,7 @@@
  #include <linux/i2c.h>
  #include <linux/fb.h>
  #include <linux/delay.h>
+ #include <linux/input.h>
  
  #include <asm/mach/arch.h>
  #include <asm/mach/map.h>
  #include <plat/s5pc100.h>
  #include <plat/fb.h>
  #include <plat/iic.h>
+ #include <plat/ata.h>
+ #include <plat/adc.h>
+ #include <plat/keypad.h>
+ #include <plat/ts.h>
  
  /* Following are default values for UCON, ULCON and UFCON UART registers */
- #define S5PC100_UCON_DEFAULT  (S3C2410_UCON_TXILEVEL |        \
+ #define SMDKC100_UCON_DEFAULT (S3C2410_UCON_TXILEVEL |        \
                                 S3C2410_UCON_RXILEVEL |        \
                                 S3C2410_UCON_TXIRQMODE |       \
                                 S3C2410_UCON_RXIRQMODE |       \
                                 S3C2410_UCON_RXFIFO_TOI |      \
                                 S3C2443_UCON_RXERR_IRQEN)
  
- #define S5PC100_ULCON_DEFAULT S3C2410_LCON_CS8
+ #define SMDKC100_ULCON_DEFAULT        S3C2410_LCON_CS8
  
- #define S5PC100_UFCON_DEFAULT (S3C2410_UFCON_FIFOMODE |       \
+ #define SMDKC100_UFCON_DEFAULT        (S3C2410_UFCON_FIFOMODE |       \
                                 S3C2440_UFCON_RXTRIG8 |        \
                                 S3C2440_UFCON_TXTRIG16)
  
@@@ -61,30 -66,30 +66,30 @@@ static struct s3c2410_uartcfg smdkc100_
        [0] = {
                .hwport      = 0,
                .flags       = 0,
-               .ucon        = S5PC100_UCON_DEFAULT,
-               .ulcon       = S5PC100_ULCON_DEFAULT,
-               .ufcon       = S5PC100_UFCON_DEFAULT,
+               .ucon        = SMDKC100_UCON_DEFAULT,
+               .ulcon       = SMDKC100_ULCON_DEFAULT,
+               .ufcon       = SMDKC100_UFCON_DEFAULT,
        },
        [1] = {
                .hwport      = 1,
                .flags       = 0,
-               .ucon        = S5PC100_UCON_DEFAULT,
-               .ulcon       = S5PC100_ULCON_DEFAULT,
-               .ufcon       = S5PC100_UFCON_DEFAULT,
+               .ucon        = SMDKC100_UCON_DEFAULT,
+               .ulcon       = SMDKC100_ULCON_DEFAULT,
+               .ufcon       = SMDKC100_UFCON_DEFAULT,
        },
        [2] = {
                .hwport      = 2,
                .flags       = 0,
-               .ucon        = S5PC100_UCON_DEFAULT,
-               .ulcon       = S5PC100_ULCON_DEFAULT,
-               .ufcon       = S5PC100_UFCON_DEFAULT,
+               .ucon        = SMDKC100_UCON_DEFAULT,
+               .ulcon       = SMDKC100_ULCON_DEFAULT,
+               .ufcon       = SMDKC100_UFCON_DEFAULT,
        },
        [3] = {
                .hwport      = 3,
                .flags       = 0,
-               .ucon        = S5PC100_UCON_DEFAULT,
-               .ulcon       = S5PC100_ULCON_DEFAULT,
-               .ufcon       = S5PC100_UFCON_DEFAULT,
+               .ucon        = SMDKC100_UCON_DEFAULT,
+               .ulcon       = SMDKC100_ULCON_DEFAULT,
+               .ufcon       = SMDKC100_UFCON_DEFAULT,
        },
  };
  
@@@ -128,6 -133,7 +133,6 @@@ static struct platform_device smdkc100_
  static struct s3c_fb_pd_win smdkc100_fb_win0 = {
        /* this is to ensure we use win0 */
        .win_mode       = {
 -              .pixclock = 1000000000000ULL / ((8+13+3+800)*(7+5+1+480)*80),
                .left_margin    = 8,
                .right_margin   = 13,
                .upper_margin   = 7,
                .vsync_len      = 1,
                .xres           = 800,
                .yres           = 480,
 +              .refresh        = 80,
        },
        .max_bpp        = 32,
        .default_bpp    = 16,
@@@ -149,16 -154,54 +154,54 @@@ static struct s3c_fb_platdata smdkc100_
        .setup_gpio     = s5pc100_fb_gpio_setup_24bpp,
  };
  
+ static struct s3c_ide_platdata smdkc100_ide_pdata __initdata = {
+       .setup_gpio     = s5pc100_ide_setup_gpio,
+ };
+ static uint32_t smdkc100_keymap[] __initdata = {
+       /* KEY(row, col, keycode) */
+       KEY(0, 3, KEY_1), KEY(0, 4, KEY_2), KEY(0, 5, KEY_3),
+       KEY(0, 6, KEY_4), KEY(0, 7, KEY_5),
+       KEY(1, 3, KEY_A), KEY(1, 4, KEY_B), KEY(1, 5, KEY_C),
+       KEY(1, 6, KEY_D), KEY(1, 7, KEY_E)
+ };
+ static struct matrix_keymap_data smdkc100_keymap_data __initdata = {
+       .keymap         = smdkc100_keymap,
+       .keymap_size    = ARRAY_SIZE(smdkc100_keymap),
+ };
+ static struct samsung_keypad_platdata smdkc100_keypad_data __initdata = {
+       .keymap_data    = &smdkc100_keymap_data,
+       .rows           = 2,
+       .cols           = 8,
+ };
  static struct platform_device *smdkc100_devices[] __initdata = {
+       &s3c_device_adc,
+       &s3c_device_cfcon,
        &s3c_device_i2c0,
        &s3c_device_i2c1,
        &s3c_device_fb,
        &s3c_device_hsmmc0,
        &s3c_device_hsmmc1,
        &s3c_device_hsmmc2,
+       &s3c_device_ts,
+       &s3c_device_wdt,
        &smdkc100_lcd_powerdev,
        &s5pc100_device_iis0,
+       &samsung_device_keypad,
        &s5pc100_device_ac97,
+       &s3c_device_rtc,
+       &s5p_device_fimc0,
+       &s5p_device_fimc1,
+       &s5p_device_fimc2,
+ };
+ static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
+       .delay                  = 10000,
+       .presc                  = 49,
+       .oversampling_shift     = 2,
  };
  
  static void __init smdkc100_map_io(void)
  
  static void __init smdkc100_machine_init(void)
  {
+       s3c24xx_ts_set_platdata(&s3c_ts_platform);
        /* I2C */
        s3c_i2c0_set_platdata(NULL);
        s3c_i2c1_set_platdata(NULL);
        i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
  
        s3c_fb_set_platdata(&smdkc100_lcd_pdata);
+       s3c_ide_set_platdata(&smdkc100_ide_pdata);
+       samsung_keypad_set_platdata(&smdkc100_keypad_data);
  
        /* LCD init */
        gpio_request(S5PC100_GPD(0), "GPD");
  #include <plat/cpu.h>
  #include <plat/devs.h>
  #include <plat/clock.h>
 +#include <plat/fb-core.h>
  #include <plat/s5pv210.h>
+ #include <plat/adc-core.h>
+ #include <plat/ata-core.h>
+ #include <plat/fimc-core.h>
  #include <plat/iic-core.h>
+ #include <plat/keypad-core.h>
  #include <plat/sdhci.h>
+ #include <plat/reset.h>
  
  /* Initial IO mappings */
  
@@@ -70,6 -74,11 +75,11 @@@ static void s5pv210_idle(void
        local_irq_enable();
  }
  
+ static void s5pv210_sw_reset(void)
+ {
+       __raw_writel(0x1, S5P_SWRESET);
+ }
  /* s5pv210_map_io
   *
   * register the standard cpu IO areas
  
  void __init s5pv210_map_io(void)
  {
- #ifdef CONFIG_S3C_DEV_ADC
-       s3c_device_adc.name     = "s3c64xx-adc";
- #endif
        iotable_init(s5pv210_iodesc, ARRAY_SIZE(s5pv210_iodesc));
  
        /* initialise device information early */
        s5pv210_default_sdhci0();
        s5pv210_default_sdhci1();
        s5pv210_default_sdhci2();
+       s5pv210_default_sdhci3();
+       s3c_adc_setname("s3c64xx-adc");
+       s3c_cfcon_setname("s5pv210-pata");
+       s3c_fimc_setname(0, "s5pv210-fimc");
+       s3c_fimc_setname(1, "s5pv210-fimc");
+       s3c_fimc_setname(2, "s5pv210-fimc");
  
        /* the i2c devices are directly compatible with s3c2440 */
        s3c_i2c0_setname("s3c2440-i2c");
        s3c_i2c1_setname("s3c2440-i2c");
        s3c_i2c2_setname("s3c2440-i2c");
  
 +      s3c_fb_setname("s5pv210-fb");
++
+       /* Use s5pv210-keypad instead of samsung-keypad */
+       samsung_keypad_setname("s5pv210-keypad");
  }
  
  void __init s5pv210_init_clocks(int xtal)
@@@ -141,5 -156,8 +159,8 @@@ int __init s5pv210_init(void
        /* set idle function */
        pm_idle = s5pv210_idle;
  
+       /* set sw_reset function */
+       s5p_reset_hook = s5pv210_sw_reset;
        return sysdev_register(&s5pv210_sysdev);
  }
  #include <linux/init.h>
  #include <linux/serial_core.h>
  #include <linux/fb.h>
+ #include <linux/i2c.h>
+ #include <linux/i2c-gpio.h>
+ #include <linux/mfd/max8998.h>
+ #include <linux/gpio_keys.h>
+ #include <linux/input.h>
+ #include <linux/gpio.h>
  
  #include <asm/mach/arch.h>
  #include <asm/mach/map.h>
  #include <mach/regs-clock.h>
  #include <mach/regs-fb.h>
  
+ #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>
+ #include <plat/fimc-core.h>
+ #include <plat/sdhci.h>
  
  /* Following are default values for UCON, ULCON and UFCON UART registers */
- #define S5PV210_UCON_DEFAULT  (S3C2410_UCON_TXILEVEL |        \
+ #define AQUILA_UCON_DEFAULT   (S3C2410_UCON_TXILEVEL |        \
                                 S3C2410_UCON_RXILEVEL |        \
                                 S3C2410_UCON_TXIRQMODE |       \
                                 S3C2410_UCON_RXIRQMODE |       \
                                 S3C2410_UCON_RXFIFO_TOI |      \
                                 S3C2443_UCON_RXERR_IRQEN)
  
- #define S5PV210_ULCON_DEFAULT S3C2410_LCON_CS8
+ #define AQUILA_ULCON_DEFAULT  S3C2410_LCON_CS8
  
- #define S5PV210_UFCON_DEFAULT (S3C2410_UFCON_FIFOMODE |       \
-                                S5PV210_UFCON_TXTRIG4 |        \
-                                S5PV210_UFCON_RXTRIG4)
+ #define AQUILA_UFCON_DEFAULT  S3C2410_UFCON_FIFOMODE
  
- static struct s3c2410_uartcfg smdkv210_uartcfgs[] __initdata = {
+ static struct s3c2410_uartcfg aquila_uartcfgs[] __initdata = {
        [0] = {
                .hwport         = 0,
                .flags          = 0,
-               .ucon           = S5PV210_UCON_DEFAULT,
-               .ulcon          = S5PV210_ULCON_DEFAULT,
-               .ufcon          = S5PV210_UFCON_DEFAULT,
+               .ucon           = AQUILA_UCON_DEFAULT,
+               .ulcon          = AQUILA_ULCON_DEFAULT,
+               /*
+                * Actually UART0 can support 256 bytes fifo, but aquila board
+                * supports 128 bytes fifo because of initial chip bug
+                */
+               .ufcon          = AQUILA_UFCON_DEFAULT |
+                       S5PV210_UFCON_TXTRIG128 | S5PV210_UFCON_RXTRIG128,
        },
        [1] = {
                .hwport         = 1,
                .flags          = 0,
-               .ucon           = S5PV210_UCON_DEFAULT,
-               .ulcon          = S5PV210_ULCON_DEFAULT,
-               .ufcon          = S5PV210_UFCON_DEFAULT,
+               .ucon           = AQUILA_UCON_DEFAULT,
+               .ulcon          = AQUILA_ULCON_DEFAULT,
+               .ufcon          = AQUILA_UFCON_DEFAULT |
+                       S5PV210_UFCON_TXTRIG64 | S5PV210_UFCON_RXTRIG64,
        },
        [2] = {
                .hwport         = 2,
                .flags          = 0,
-               .ucon           = S5PV210_UCON_DEFAULT,
-               .ulcon          = S5PV210_ULCON_DEFAULT,
-               .ufcon          = S5PV210_UFCON_DEFAULT,
+               .ucon           = AQUILA_UCON_DEFAULT,
+               .ulcon          = AQUILA_ULCON_DEFAULT,
+               .ufcon          = AQUILA_UFCON_DEFAULT |
+                       S5PV210_UFCON_TXTRIG16 | S5PV210_UFCON_RXTRIG16,
        },
        [3] = {
                .hwport         = 3,
                .flags          = 0,
-               .ucon           = S5PV210_UCON_DEFAULT,
-               .ulcon          = S5PV210_ULCON_DEFAULT,
-               .ufcon          = S5PV210_UFCON_DEFAULT,
+               .ucon           = AQUILA_UCON_DEFAULT,
+               .ulcon          = AQUILA_ULCON_DEFAULT,
+               .ufcon          = AQUILA_UFCON_DEFAULT |
+                       S5PV210_UFCON_TXTRIG16 | S5PV210_UFCON_RXTRIG16,
        },
  };
  
  /* Frame Buffer */
  static struct s3c_fb_pd_win aquila_fb_win0 = {
        .win_mode = {
 -              .pixclock = 1000000000000ULL / ((16+16+2+480)*(28+3+2+800)*60),
                .left_margin = 16,
                .right_margin = 16,
                .upper_margin = 3,
  
  static struct s3c_fb_pd_win aquila_fb_win1 = {
        .win_mode = {
 -              .pixclock = 1000000000000ULL / ((16+16+2+480)*(28+3+2+800)*60),
                .left_margin = 16,
                .right_margin = 16,
                .upper_margin = 3,
@@@ -114,19 -131,383 +129,383 @@@ static struct s3c_fb_platdata aquila_lc
        .setup_gpio     = s5pv210_fb_gpio_setup_24bpp,
  };
  
+ /* MAX8998 regulators */
+ #if defined(CONFIG_REGULATOR_MAX8998) || defined(CONFIG_REGULATOR_MAX8998_MODULE)
+ static struct regulator_init_data aquila_ldo2_data = {
+       .constraints    = {
+               .name           = "VALIVE_1.1V",
+               .min_uV         = 1100000,
+               .max_uV         = 1100000,
+               .apply_uV       = 1,
+               .always_on      = 1,
+               .state_mem      = {
+                       .enabled = 1,
+               },
+       },
+ };
+ static struct regulator_init_data aquila_ldo3_data = {
+       .constraints    = {
+               .name           = "VUSB/MIPI_1.1V",
+               .min_uV         = 1100000,
+               .max_uV         = 1100000,
+               .apply_uV       = 1,
+               .always_on      = 1,
+       },
+ };
+ static struct regulator_init_data aquila_ldo4_data = {
+       .constraints    = {
+               .name           = "VDAC_3.3V",
+               .min_uV         = 3300000,
+               .max_uV         = 3300000,
+               .apply_uV       = 1,
+       },
+ };
+ static struct regulator_init_data aquila_ldo5_data = {
+       .constraints    = {
+               .name           = "VTF_2.8V",
+               .min_uV         = 2800000,
+               .max_uV         = 2800000,
+               .apply_uV       = 1,
+       },
+ };
+ static struct regulator_init_data aquila_ldo6_data = {
+       .constraints    = {
+               .name           = "VCC_3.3V",
+               .min_uV         = 3300000,
+               .max_uV         = 3300000,
+               .apply_uV       = 1,
+       },
+ };
+ static struct regulator_init_data aquila_ldo7_data = {
+       .constraints    = {
+               .name           = "VCC_3.0V",
+               .min_uV         = 3000000,
+               .max_uV         = 3000000,
+               .apply_uV       = 1,
+               .boot_on        = 1,
+               .always_on      = 1,
+       },
+ };
+ static struct regulator_init_data aquila_ldo8_data = {
+       .constraints    = {
+               .name           = "VUSB/VADC_3.3V",
+               .min_uV         = 3300000,
+               .max_uV         = 3300000,
+               .apply_uV       = 1,
+               .always_on      = 1,
+       },
+ };
+ static struct regulator_init_data aquila_ldo9_data = {
+       .constraints    = {
+               .name           = "VCC/VCAM_2.8V",
+               .min_uV         = 2800000,
+               .max_uV         = 2800000,
+               .apply_uV       = 1,
+               .always_on      = 1,
+       },
+ };
+ static struct regulator_init_data aquila_ldo10_data = {
+       .constraints    = {
+               .name           = "VPLL_1.1V",
+               .min_uV         = 1100000,
+               .max_uV         = 1100000,
+               .apply_uV       = 1,
+               .boot_on        = 1,
+       },
+ };
+ static struct regulator_init_data aquila_ldo11_data = {
+       .constraints    = {
+               .name           = "CAM_IO_2.8V",
+               .min_uV         = 2800000,
+               .max_uV         = 2800000,
+               .apply_uV       = 1,
+               .always_on      = 1,
+       },
+ };
+ static struct regulator_init_data aquila_ldo12_data = {
+       .constraints    = {
+               .name           = "CAM_ISP_1.2V",
+               .min_uV         = 1200000,
+               .max_uV         = 1200000,
+               .apply_uV       = 1,
+               .always_on      = 1,
+       },
+ };
+ static struct regulator_init_data aquila_ldo13_data = {
+       .constraints    = {
+               .name           = "CAM_A_2.8V",
+               .min_uV         = 2800000,
+               .max_uV         = 2800000,
+               .apply_uV       = 1,
+               .always_on      = 1,
+       },
+ };
+ static struct regulator_init_data aquila_ldo14_data = {
+       .constraints    = {
+               .name           = "CAM_CIF_1.8V",
+               .min_uV         = 1800000,
+               .max_uV         = 1800000,
+               .apply_uV       = 1,
+               .always_on      = 1,
+       },
+ };
+ static struct regulator_init_data aquila_ldo15_data = {
+       .constraints    = {
+               .name           = "CAM_AF_3.3V",
+               .min_uV         = 3300000,
+               .max_uV         = 3300000,
+               .apply_uV       = 1,
+               .always_on      = 1,
+       },
+ };
+ static struct regulator_init_data aquila_ldo16_data = {
+       .constraints    = {
+               .name           = "VMIPI_1.8V",
+               .min_uV         = 1800000,
+               .max_uV         = 1800000,
+               .apply_uV       = 1,
+               .always_on      = 1,
+       },
+ };
+ static struct regulator_init_data aquila_ldo17_data = {
+       .constraints    = {
+               .name           = "CAM_8M_1.8V",
+               .min_uV         = 1800000,
+               .max_uV         = 1800000,
+               .apply_uV       = 1,
+               .always_on      = 1,
+       },
+ };
+ /* BUCK */
+ static struct regulator_consumer_supply buck1_consumer[] = {
+       {       .supply = "vddarm", },
+ };
+ static struct regulator_consumer_supply buck2_consumer[] = {
+       {       .supply = "vddint", },
+ };
+ static struct regulator_init_data aquila_buck1_data = {
+       .constraints    = {
+               .name           = "VARM_1.2V",
+               .min_uV         = 1200000,
+               .max_uV         = 1200000,
+               .apply_uV       = 1,
+               .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE |
+                                 REGULATOR_CHANGE_STATUS,
+       },
+       .num_consumer_supplies  = ARRAY_SIZE(buck1_consumer),
+       .consumer_supplies      = buck1_consumer,
+ };
+ static struct regulator_init_data aquila_buck2_data = {
+       .constraints    = {
+               .name           = "VINT_1.2V",
+               .min_uV         = 1200000,
+               .max_uV         = 1200000,
+               .apply_uV       = 1,
+               .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE |
+                                 REGULATOR_CHANGE_STATUS,
+       },
+       .num_consumer_supplies  = ARRAY_SIZE(buck2_consumer),
+       .consumer_supplies      = buck2_consumer,
+ };
+ static struct regulator_init_data aquila_buck3_data = {
+       .constraints    = {
+               .name           = "VCC_1.8V",
+               .min_uV         = 1800000,
+               .max_uV         = 1800000,
+               .apply_uV       = 1,
+               .state_mem      = {
+                       .enabled = 1,
+               },
+       },
+ };
+ static struct regulator_init_data aquila_buck4_data = {
+       .constraints    = {
+               .name           = "CAM_CORE_1.2V",
+               .min_uV         = 1200000,
+               .max_uV         = 1200000,
+               .apply_uV       = 1,
+               .always_on      = 1,
+       },
+ };
+ static struct max8998_regulator_data aquila_regulators[] = {
+       { MAX8998_LDO2,  &aquila_ldo2_data },
+       { MAX8998_LDO3,  &aquila_ldo3_data },
+       { MAX8998_LDO4,  &aquila_ldo4_data },
+       { MAX8998_LDO5,  &aquila_ldo5_data },
+       { MAX8998_LDO6,  &aquila_ldo6_data },
+       { MAX8998_LDO7,  &aquila_ldo7_data },
+       { MAX8998_LDO8,  &aquila_ldo8_data },
+       { MAX8998_LDO9,  &aquila_ldo9_data },
+       { MAX8998_LDO10, &aquila_ldo10_data },
+       { MAX8998_LDO11, &aquila_ldo11_data },
+       { MAX8998_LDO12, &aquila_ldo12_data },
+       { MAX8998_LDO13, &aquila_ldo13_data },
+       { MAX8998_LDO14, &aquila_ldo14_data },
+       { MAX8998_LDO15, &aquila_ldo15_data },
+       { MAX8998_LDO16, &aquila_ldo16_data },
+       { MAX8998_LDO17, &aquila_ldo17_data },
+       { MAX8998_BUCK1, &aquila_buck1_data },
+       { MAX8998_BUCK2, &aquila_buck2_data },
+       { MAX8998_BUCK3, &aquila_buck3_data },
+       { MAX8998_BUCK4, &aquila_buck4_data },
+ };
+ static struct max8998_platform_data aquila_max8998_pdata = {
+       .num_regulators = ARRAY_SIZE(aquila_regulators),
+       .regulators     = aquila_regulators,
+ };
+ #endif
+ /* GPIO I2C PMIC */
+ #define AP_I2C_GPIO_PMIC_BUS_4        4
+ static struct i2c_gpio_platform_data aquila_i2c_gpio_pmic_data = {
+       .sda_pin        = S5PV210_GPJ4(0),      /* XMSMCSN */
+       .scl_pin        = S5PV210_GPJ4(3),      /* XMSMIRQN */
+ };
+ static struct platform_device aquila_i2c_gpio_pmic = {
+       .name           = "i2c-gpio",
+       .id             = AP_I2C_GPIO_PMIC_BUS_4,
+       .dev            = {
+               .platform_data = &aquila_i2c_gpio_pmic_data,
+       },
+ };
+ static struct i2c_board_info i2c_gpio_pmic_devs[] __initdata = {
+ #if defined(CONFIG_REGULATOR_MAX8998) || defined(CONFIG_REGULATOR_MAX8998_MODULE)
+       {
+               /* 0xCC when SRAD = 0 */
+               I2C_BOARD_INFO("max8998", 0xCC >> 1),
+               .platform_data = &aquila_max8998_pdata,
+       },
+ #endif
+ };
+ /* PMIC Power button */
+ static struct gpio_keys_button aquila_gpio_keys_table[] = {
+       {
+               .code           = KEY_POWER,
+               .gpio           = S5PV210_GPH2(6),
+               .desc           = "gpio-keys: KEY_POWER",
+               .type           = EV_KEY,
+               .active_low     = 1,
+               .wakeup         = 1,
+               .debounce_interval = 1,
+       },
+ };
+ static struct gpio_keys_platform_data aquila_gpio_keys_data = {
+       .buttons        = aquila_gpio_keys_table,
+       .nbuttons       = ARRAY_SIZE(aquila_gpio_keys_table),
+ };
+ static struct platform_device aquila_device_gpiokeys = {
+       .name = "gpio-keys",
+       .dev = {
+               .platform_data = &aquila_gpio_keys_data,
+       },
+ };
+ static void __init aquila_pmic_init(void)
+ {
+       /* AP_PMIC_IRQ: EINT7 */
+       s3c_gpio_cfgpin(S5PV210_GPH0(7), S3C_GPIO_SFN(0xf));
+       s3c_gpio_setpull(S5PV210_GPH0(7), S3C_GPIO_PULL_UP);
+       /* nPower: EINT22 */
+       s3c_gpio_cfgpin(S5PV210_GPH2(6), S3C_GPIO_SFN(0xf));
+       s3c_gpio_setpull(S5PV210_GPH2(6), S3C_GPIO_PULL_UP);
+ }
+ /* MoviNAND */
+ static struct s3c_sdhci_platdata aquila_hsmmc0_data __initdata = {
+       .max_width              = 4,
+       .cd_type                = S3C_SDHCI_CD_PERMANENT,
+ };
+ /* Wireless LAN */
+ static struct s3c_sdhci_platdata aquila_hsmmc1_data __initdata = {
+       .max_width              = 4,
+       .cd_type                = S3C_SDHCI_CD_EXTERNAL,
+       /* ext_cd_{init,cleanup} callbacks will be added later */
+ };
+ /* External Flash */
+ #define AQUILA_EXT_FLASH_EN   S5PV210_MP05(4)
+ #define AQUILA_EXT_FLASH_CD   S5PV210_GPH3(4)
+ static struct s3c_sdhci_platdata aquila_hsmmc2_data __initdata = {
+       .max_width              = 4,
+       .cd_type                = S3C_SDHCI_CD_GPIO,
+       .ext_cd_gpio            = AQUILA_EXT_FLASH_CD,
+       .ext_cd_gpio_invert     = 1,
+ };
+ static void aquila_setup_sdhci(void)
+ {
+       gpio_request(AQUILA_EXT_FLASH_EN, "FLASH_EN");
+       gpio_direction_output(AQUILA_EXT_FLASH_EN, 1);
+       s3c_sdhci0_set_platdata(&aquila_hsmmc0_data);
+       s3c_sdhci1_set_platdata(&aquila_hsmmc1_data);
+       s3c_sdhci2_set_platdata(&aquila_hsmmc2_data);
+ };
  static struct platform_device *aquila_devices[] __initdata = {
+       &aquila_i2c_gpio_pmic,
+       &aquila_device_gpiokeys,
        &s3c_device_fb,
+       &s5pc110_device_onenand,
+       &s3c_device_hsmmc0,
+       &s3c_device_hsmmc1,
+       &s3c_device_hsmmc2,
+       &s5p_device_fimc0,
+       &s5p_device_fimc1,
+       &s5p_device_fimc2,
  };
  
  static void __init aquila_map_io(void)
  {
        s5p_init_io(NULL, 0, S5P_VA_CHIPID);
        s3c24xx_init_clocks(24000000);
-       s3c24xx_init_uarts(smdkv210_uartcfgs, ARRAY_SIZE(smdkv210_uartcfgs));
+       s3c24xx_init_uarts(aquila_uartcfgs, ARRAY_SIZE(aquila_uartcfgs));
  }
  
  static void __init aquila_machine_init(void)
  {
+       /* PMIC */
+       aquila_pmic_init();
+       i2c_register_board_info(AP_I2C_GPIO_PMIC_BUS_4, i2c_gpio_pmic_devs,
+                       ARRAY_SIZE(i2c_gpio_pmic_devs));
+       /* SDHCI */
+       aquila_setup_sdhci();
+       s3c_fimc_setname(0, "s5p-fimc");
+       s3c_fimc_setname(1, "s5p-fimc");
+       s3c_fimc_setname(2, "s5p-fimc");
        /* FB */
        s3c_fb_set_platdata(&aquila_lcd_pdata);
  
diff --combined drivers/rtc/Kconfig
@@@ -166,16 -166,6 +166,16 @@@ config RTC_DRV_DS167
          This driver can also be built as a module. If so, the module
          will be called rtc-ds1672.
  
 +config RTC_DRV_DS3232
 +      tristate "Dallas/Maxim DS3232"
 +      depends on RTC_CLASS && I2C
 +      help
 +        If you say yes here you get support for Dallas Semiconductor
 +        DS3232 real-time clock chips.
 +
 +        This driver can also be built as a module.  If so, the module
 +        will be called rtc-ds3232.
 +
  config RTC_DRV_MAX6900
        tristate "Maxim MAX6900"
        help
@@@ -213,15 -203,6 +213,15 @@@ config RTC_DRV_ISL120
          This driver can also be built as a module. If so, the module
          will be called rtc-isl1208.
  
 +config RTC_DRV_ISL12022
 +      tristate "Intersil ISL12022"
 +      help
 +        If you say yes here you get support for the
 +        Intersil ISL12022 RTC chip.
 +
 +        This driver can also be built as a module. If so, the module
 +        will be called rtc-isl12022.
 +
  config RTC_DRV_X1205
        tristate "Xicor/Intersil X1205"
        help
@@@ -556,16 -537,6 +556,16 @@@ config RTC_DRV_MSM624
          This driver can also be built as a module. If so, the module
          will be called rtc-msm6242.
  
 +config RTC_DRV_IMXDI
 +      tristate "Freescale IMX DryIce Real Time Clock"
 +      depends on ARCH_MX25
 +      depends on RTC_CLASS
 +      help
 +         Support for Freescale IMX DryIce RTC
 +
 +         This driver can also be built as a module, if so, the module
 +         will be called "rtc-imxdi".
 +
  config RTC_MXC
        tristate "Freescale MXC Real Time Clock"
        depends on ARCH_MXC
@@@ -674,9 -645,16 +674,16 @@@ config RTC_DRV_OMA
          DA8xx/OMAP-L13x chips.  This driver can also be built as a
          module called rtc-omap.
  
+ config HAVE_S3C_RTC
+       bool
+       help
+         This will include RTC support for Samsung SoCs. If
+         you want to include RTC support for any machine, kindly
+         select this in the respective mach-XXXX/Kconfig file.
  config RTC_DRV_S3C
        tristate "Samsung S3C series SoC RTC"
-       depends on ARCH_S3C2410 || ARCH_S3C64XX
+       depends on ARCH_S3C2410 || ARCH_S3C64XX || HAVE_S3C_RTC
        help
          RTC (Realtime Clock) driver for the clock inbuilt into the
          Samsung S3C24XX series of SoCs. This can provide periodic
diff --combined drivers/serial/Kconfig
@@@ -536,13 -536,12 +536,13 @@@ config SERIAL_S3C640
  
  config SERIAL_S5PV210
        tristate "Samsung S5PV210 Serial port support"
-       depends on SERIAL_SAMSUNG && (CPU_S5PV210 || CPU_S5P6442)
-       select SERIAL_SAMSUNG_UARTS_4 if CPU_S5PV210
+       depends on SERIAL_SAMSUNG && (CPU_S5PV210 || CPU_S5P6442 || CPU_S5PV310)
+       select SERIAL_SAMSUNG_UARTS_4 if (CPU_S5PV210 || CPU_S5PV310)
        default y
        help
          Serial port support for Samsung's S5P Family of SoC's
  
 +
  config SERIAL_MAX3100
        tristate "MAX3100 support"
        depends on SPI
        help
          MAX3100 chip support
  
 +config SERIAL_MAX3107
 +      tristate "MAX3107 support"
 +      depends on SPI
 +      select SERIAL_CORE
 +      help
 +        MAX3107 chip support
 +
 +config SERIAL_MAX3107_AAVA
 +      tristate "MAX3107 AAVA platform support"
 +      depends on X86_MRST && SERIAL_MAX3107 && GPIOLIB
 +      select SERIAL_CORE
 +      help
 +        Support for the MAX3107 chip configuration found on the AAVA
 +        platform. Includes the extra initialisation and GPIO support
 +        neded for this device.
 +
  config SERIAL_DZ
        bool "DECstation DZ serial driver"
        depends on MACH_DECSTATION && 32BIT
@@@ -707,33 -690,6 +707,33 @@@ config SERIAL_SA1100_CONSOL
          your boot loader (lilo or loadlin) about how to pass options to the
          kernel at boot time.)
  
 +config SERIAL_MRST_MAX3110
 +      tristate "SPI UART driver for Max3110"
 +      depends on SPI_DW_PCI
 +      select SERIAL_CORE
 +      select SERIAL_CORE_CONSOLE
 +      help
 +        This is the UART protocol driver for the MAX3110 device on
 +        the Intel Moorestown platform. On other systems use the max3100
 +        driver.
 +
 +config MRST_MAX3110_IRQ
 +      boolean "Enable GPIO IRQ for Max3110 over Moorestown"
 +      default n
 +      depends on SERIAL_MRST_MAX3110 && GPIO_LANGWELL
 +      help
 +        This has to be enabled after Moorestown GPIO driver is loaded
 +
 +config SERIAL_MFD_HSU
 +      tristate "Medfield High Speed UART support"
 +      depends on PCI
 +      select SERIAL_CORE
 +
 +config SERIAL_MFD_HSU_CONSOLE
 +      boolean "Medfile HSU serial console support"
 +      depends on SERIAL_MFD_HSU=y
 +      select SERIAL_CORE_CONSOLE
 +
  config SERIAL_BFIN
        tristate "Blackfin serial port support"
        depends on BLACKFIN
diff --combined drivers/video/Kconfig
@@@ -1896,6 -1896,13 +1896,13 @@@ config FB_W10
  
          If unsure, say N.
  
+ config SH_MIPI_DSI
+       tristate
+       depends on (SUPERH || ARCH_SHMOBILE) && HAVE_CLK
+ config SH_LCD_MIPI_DSI
+       bool
  config FB_SH_MOBILE_LCDC
        tristate "SuperH Mobile LCDC framebuffer support"
        depends on FB && (SUPERH || ARCH_SHMOBILE) && HAVE_CLK
        select FB_SYS_IMAGEBLIT
        select FB_SYS_FOPS
        select FB_DEFERRED_IO
+       select SH_MIPI_DSI if SH_LCD_MIPI_DSI
        ---help---
          Frame buffer driver for the on-chip SH-Mobile LCD controller.
  
+ config FB_SH_MOBILE_HDMI
+       tristate "SuperH Mobile HDMI controller support"
+       depends on FB_SH_MOBILE_LCDC
+       select FB_MODE_HELPERS
+       ---help---
+         Driver for the on-chip SH-Mobile HDMI controller.
  config FB_TMIO
        tristate "Toshiba Mobile IO FrameBuffer support"
        depends on FB && MFD_CORE
@@@ -1931,7 -1946,7 +1946,7 @@@ config FB_TMIO_ACCEL
  
  config FB_S3C
        tristate "Samsung S3C framebuffer support"
 -      depends on FB && ARCH_S3C64XX
 +      depends on FB && S3C_DEV_FB
        select FB_CFB_FILLRECT
        select FB_CFB_COPYAREA
        select FB_CFB_IMAGEBLIT
  #define PORT_ALTERA_JTAGUART  91
  #define PORT_ALTERA_UART      92
  
+ /* SH-SCI */
+ #define PORT_SCIFB    93
 +/* MAX3107 */
 +#define PORT_MAX3107  94
 +
 +/* High Speed UART for Medfield */
 +#define PORT_MFD      95
 +
  #ifdef __KERNEL__
  
  #include <linux/compiler.h>
@@@ -226,7 -223,7 +229,7 @@@ struct uart_ops 
        void            (*flush_buffer)(struct uart_port *);
        void            (*set_termios)(struct uart_port *, struct ktermios *new,
                                       struct ktermios *old);
 -      void            (*set_ldisc)(struct uart_port *);
 +      void            (*set_ldisc)(struct uart_port *, int new);
        void            (*pm)(struct uart_port *, unsigned int state,
                              unsigned int oldstate);
        int             (*set_wake)(struct uart_port *, unsigned int state);
@@@ -282,9 -279,6 +285,9 @@@ struct uart_port 
        unsigned char __iomem   *membase;               /* read/write[bwl] */
        unsigned int            (*serial_in)(struct uart_port *, int);
        void                    (*serial_out)(struct uart_port *, int, int);
 +      void                    (*set_termios)(struct uart_port *,
 +                                             struct ktermios *new,
 +                                             struct ktermios *old);
        unsigned int            irq;                    /* irq number */
        unsigned long           irqflags;               /* irq flags  */
        unsigned int            uartclk;                /* base uart clock */