]> Git Repo - linux.git/commitdiff
Merge branch 'next/cleanup3' of git://git.linaro.org/people/arnd/arm-soc
authorLinus Torvalds <[email protected]>
Sun, 6 Nov 2011 01:18:05 +0000 (18:18 -0700)
committerLinus Torvalds <[email protected]>
Sun, 6 Nov 2011 01:18:05 +0000 (18:18 -0700)
* 'next/cleanup3' of git://git.linaro.org/people/arnd/arm-soc: (79 commits)
  ARM: SAMSUNG: Move fimc plat. device from board files to plat-samsung
  ARM: SAMSUNG: Cleanup resources by using macro
  ARM: SAMSUNG: Cleanup plat-samsung/devs.c and devs.h
  ARM: S5P: To merge devs.c files to one devs.c
  ARM: S3C64XX: To merge devs.c files to one devs.c
  ARM: S3C24XX: To merge s3c24xx devs.c files to one devs.c
  ARM: S5P64X0: Add Power Management support
  ARM: S5P: Make the sleep code common for S5P series SoCs
  ARM: S5P: Make the common S5P PM code conditionally compile
  ARM: SAMSUNG: Move S5P header files to plat-samsung
  ARM: SAMSUNG: Move S3C24XX header files to plat-samsung
  ARM: SAMSUNG: Moving each SoC support header files
  ARM: SAMSUNG: Consolidate plat/pll.h
  ARM: SAMSUNG: Consolidate plat/pwm-clock.h
  ARM: SAMSUNG: Cleanup mach/clkdev.h
  ARM: SAMSUNG: remove sdhci default configuration setup platform helper
  ARM: EXYNOS4: Add FIMC device on SMDKV310 board
  ARM: EXYNOS4: Add header file protection macros
  ARM: EXYNOS4: Add usb ehci device to the SMDKV310
  ARM: S3C2443: Add hsspi-clock from pclk and rename S3C2443 hsspi sclk
  ...

Fix up conflicts in
 - arch/arm/mach-exynos4/{Kconfig,clock.c}
ARM_CPU_SUSPEND, various random device tables (gah!)
 - drivers/gpio/Makefile
sa1100 gpio added, samsung gpio drivers merged

14 files changed:
1  2 
arch/arm/Kconfig
arch/arm/mach-exynos4/Kconfig
arch/arm/mach-exynos4/clock.c
arch/arm/mach-s3c2410/s3c2410.c
arch/arm/mach-s3c2416/s3c2416.c
arch/arm/mach-s3c2440/s3c2440.c
arch/arm/mach-s3c2440/s3c2442.c
arch/arm/plat-s5p/Kconfig
arch/arm/plat-s5p/irq-gpioint.c
arch/arm/plat-samsung/Kconfig
arch/arm/plat-samsung/Makefile
arch/arm/plat-samsung/include/plat/irqs.h
drivers/gpio/Kconfig
drivers/gpio/Makefile

diff --combined arch/arm/Kconfig
index fe6b0526b3a6fb3f52d35730b84930932050d8a9,70b3943a5754b18566ef313c79557f7f8b43fe62..e17fe2503bba3900c6c22be290507f02014d5f73
@@@ -3,7 -3,7 +3,7 @@@ config AR
        default y
        select HAVE_AOUT
        select HAVE_DMA_API_DEBUG
 -      select HAVE_IDE
 +      select HAVE_IDE if PCI || ISA || PCMCIA
        select HAVE_MEMBLOCK
        select RTC_LIB
        select SYS_SUPPORTS_APM_EMULATION
@@@ -29,7 -29,6 +29,7 @@@
        select HAVE_GENERIC_HARDIRQS
        select HAVE_SPARSE_IRQ
        select GENERIC_IRQ_SHOW
 +      select CPU_PM if (SUSPEND || CPU_IDLE)
        help
          The ARM series is a line of low-power-consumption RISC chip designs
          licensed by ARM Ltd and targeted at embedded applications and
@@@ -226,10 -225,6 +226,10 @@@ config PHYS_OFFSE
          Please provide the physical address corresponding to the
          location of main memory in your system.
  
 +config GENERIC_BUG
 +      def_bool y
 +      depends on BUG
 +
  source "init/Kconfig"
  
  source "kernel/Kconfig.freezer"
@@@ -334,20 -329,6 +334,20 @@@ config ARCH_BCMRIN
        help
          Support for Broadcom's BCMRing platform.
  
 +config ARCH_HIGHBANK
 +      bool "Calxeda Highbank-based"
 +      select ARCH_WANT_OPTIONAL_GPIOLIB
 +      select ARM_AMBA
 +      select ARM_GIC
 +      select ARM_TIMER_SP804
 +      select CLKDEV_LOOKUP
 +      select CPU_V7
 +      select GENERIC_CLOCKEVENTS
 +      select HAVE_ARM_SCU
 +      select USE_OF
 +      help
 +        Support for the Calxeda Highbank SoC based boards.
 +
  config ARCH_CLPS711X
        bool "Cirrus Logic CLPS711x/EP721x-based"
        select CPU_ARM720T
@@@ -377,6 -358,7 +377,6 @@@ config ARCH_GEMIN
  config ARCH_PRIMA2
        bool "CSR SiRFSoC PRIMA2 ARM Cortex A9 Platform"
        select CPU_V7
 -      select GENERIC_TIME
        select NO_IOPORT
        select GENERIC_CLOCKEVENTS
        select CLKDEV_LOOKUP
@@@ -408,7 -390,7 +408,7 @@@ config ARCH_EP93X
        select ARCH_REQUIRE_GPIOLIB
        select ARCH_HAS_HOLES_MEMORYMODEL
        select ARCH_USES_GETTIMEOFFSET
 -      select NEED_MEMORY_H
 +      select NEED_MACH_MEMORY_H
        help
          This enables support for the Cirrus EP93xx series of CPUs.
  
@@@ -417,7 -399,6 +417,7 @@@ config ARCH_FOOTBRIDG
        select CPU_SA110
        select FOOTBRIDGE
        select GENERIC_CLOCKEVENTS
 +      select HAVE_IDE
        select NEED_MACH_MEMORY_H
        help
          Support for systems based on the DC21285 companion chip
@@@ -431,7 -412,6 +431,7 @@@ config ARCH_MX
        select CLKSRC_MMIO
        select GENERIC_IRQ_CHIP
        select HAVE_SCHED_CLOCK
 +      select MULTI_IRQ_HANDLER
        help
          Support for Freescale MXC/iMX-based family of processors
  
@@@ -557,6 -537,7 +557,6 @@@ config ARCH_LPC32X
        select ARM_AMBA
        select USB_ARCH_HAS_OHCI
        select CLKDEV_LOOKUP
 -      select GENERIC_TIME
        select GENERIC_CLOCKEVENTS
        help
          Support for the NXP LPC32XX family of processors
@@@ -624,10 -605,19 +624,10 @@@ config ARCH_W90X90
          <http://www.nuvoton.com/hq/enu/ProductAndSales/ProductLines/
                ConsumerElectronicsIC/ARMMicrocontroller/ARMMicrocontroller>
  
 -config ARCH_NUC93X
 -      bool "Nuvoton NUC93X CPU"
 -      select CPU_ARM926T
 -      select CLKDEV_LOOKUP
 -      help
 -        Support for Nuvoton (Winbond logic dept.) NUC93X MCU,The NUC93X is a
 -        low-power and high performance MPEG-4/JPEG multimedia controller chip.
 -
  config ARCH_TEGRA
        bool "NVIDIA Tegra"
        select CLKDEV_LOOKUP
        select CLKSRC_MMIO
 -      select GENERIC_TIME
        select GENERIC_CLOCKEVENTS
        select GENERIC_GPIO
        select HAVE_CLK
          This enables support for NVIDIA Tegra based systems (Tegra APX,
          Tegra 6xx and Tegra 2 series).
  
 +config ARCH_PICOXCELL
 +      bool "Picochip picoXcell"
 +      select ARCH_REQUIRE_GPIOLIB
 +      select ARM_PATCH_PHYS_VIRT
 +      select ARM_VIC
 +      select CPU_V6K
 +      select DW_APB_TIMER
 +      select GENERIC_CLOCKEVENTS
 +      select GENERIC_GPIO
 +      select HAVE_SCHED_CLOCK
 +      select HAVE_TCM
 +      select NO_IOPORT
 +      select USE_OF
 +      help
 +        This enables support for systems based on the Picochip picoXcell
 +        family of Femtocell devices.  The picoxcell support requires device tree
 +        for all boards.
 +
  config ARCH_PNX4008
        bool "Philips Nexperia PNX4008 Mobile"
        select CPU_ARM926T
@@@ -678,8 -650,6 +678,8 @@@ config ARCH_PX
        select SPARSE_IRQ
        select AUTO_ZRELADDR
        select MULTI_IRQ_HANDLER
 +      select ARM_CPU_SUSPEND if PM
 +      select HAVE_IDE
        help
          Support for Intel/Marvell's PXA2xx/PXA3xx processor line.
  
@@@ -721,7 -691,6 +721,7 @@@ config ARCH_RP
        select NO_IOPORT
        select ARCH_SPARSEMEM_ENABLE
        select ARCH_USES_GETTIMEOFFSET
 +      select HAVE_IDE
        select NEED_MACH_MEMORY_H
        help
          On the Acorn Risc-PC, Linux can support the internal IDE disk and
@@@ -741,7 -710,6 +741,7 @@@ config ARCH_SA110
        select HAVE_SCHED_CLOCK
        select TICK_ONESHOT
        select ARCH_REQUIRE_GPIOLIB
 +      select HAVE_IDE
        select NEED_MACH_MEMORY_H
        help
          Support for StrongARM 11x0 based boards.
@@@ -776,10 -744,8 +776,7 @@@ config ARCH_S3C64X
        select ARCH_REQUIRE_GPIOLIB
        select SAMSUNG_CLKSRC
        select SAMSUNG_IRQ_VIC_TIMER
 -      select SAMSUNG_IRQ_UART
        select S3C_GPIO_TRACK
-       select S3C_GPIO_PULL_UPDOWN
-       select S3C_GPIO_CFG_S3C24XX
-       select S3C_GPIO_CFG_S3C64XX
        select S3C_DEV_NAND
        select USB_ARCH_HAS_OHCI
        select SAMSUNG_GPIOLIB_4BIT
@@@ -886,13 -852,11 +883,13 @@@ config ARCH_U30
        select HAVE_SCHED_CLOCK
        select HAVE_TCM
        select ARM_AMBA
 +      select ARM_PATCH_PHYS_VIRT
        select ARM_VIC
        select GENERIC_CLOCKEVENTS
        select CLKDEV_LOOKUP
        select HAVE_MACH_CLKDEV
        select GENERIC_GPIO
 +      select ARCH_REQUIRE_GPIOLIB
        select NEED_MACH_MEMORY_H
        help
          Support for ST-Ericsson U300 series mobile platforms.
@@@ -969,6 -933,7 +966,6 @@@ config ARCH_VT850
  config ARCH_ZYNQ
        bool "Xilinx Zynq ARM Cortex A9 Platform"
        select CPU_V7
 -      select GENERIC_TIME
        select GENERIC_CLOCKEVENTS
        select CLKDEV_LOOKUP
        select ARM_GIC
@@@ -1037,6 -1002,8 +1034,6 @@@ source "arch/arm/mach-netx/Kconfig
  source "arch/arm/mach-nomadik/Kconfig"
  source "arch/arm/plat-nomadik/Kconfig"
  
 -source "arch/arm/mach-nuc93x/Kconfig"
 -
  source "arch/arm/plat-omap/Kconfig"
  
  source "arch/arm/mach-omap1/Kconfig"
@@@ -1430,8 -1397,7 +1427,8 @@@ config SM
        depends on REALVIEW_EB_ARM11MP || REALVIEW_EB_A9MP || \
                 MACH_REALVIEW_PB11MP || MACH_REALVIEW_PBX || ARCH_OMAP4 || \
                 ARCH_EXYNOS4 || ARCH_TEGRA || ARCH_U8500 || ARCH_VEXPRESS_CA9X4 || \
 -               ARCH_MSM_SCORPIONMP || ARCH_SHMOBILE
 +               ARCH_MSM_SCORPIONMP || ARCH_SHMOBILE || ARCH_HIGHBANK || SOC_IMX6Q
 +      depends on MMU
        select USE_GENERIC_SMP_HELPERS
        select HAVE_ARM_SCU if !ARCH_MSM_SCORPIONMP
        help
          processor machines. On a single processor machine, the kernel will
          run faster if you say N here.
  
 -        See also <file:Documentation/i386/IO-APIC.txt>,
 +        See also <file:Documentation/x86/i386/IO-APIC.txt>,
          <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at
          <http://tldp.org/HOWTO/SMP-HOWTO.html>.
  
@@@ -1464,31 -1430,6 +1461,31 @@@ config SMP_ON_U
  
          If you don't know what to do here, say Y.
  
 +config ARM_CPU_TOPOLOGY
 +      bool "Support cpu topology definition"
 +      depends on SMP && CPU_V7
 +      default y
 +      help
 +        Support ARM cpu topology definition. The MPIDR register defines
 +        affinity between processors which is then used to describe the cpu
 +        topology of an ARM System.
 +
 +config SCHED_MC
 +      bool "Multi-core scheduler support"
 +      depends on ARM_CPU_TOPOLOGY
 +      help
 +        Multi-core scheduler support improves the CPU scheduler's decision
 +        making when dealing with multi-core CPU chips at a cost of slightly
 +        increased overhead in some places. If unsure say N here.
 +
 +config SCHED_SMT
 +      bool "SMT scheduler support"
 +      depends on ARM_CPU_TOPOLOGY
 +      help
 +        Improves the CPU scheduler's decision making when dealing with
 +        MultiThreading at a cost of slightly increased overhead in some
 +        places. If unsure say N here.
 +
  config HAVE_ARM_SCU
        bool
        help
@@@ -1564,7 -1505,6 +1561,7 @@@ config THUMB2_KERNE
        depends on CPU_V7 && !CPU_V6 && !CPU_V6K && EXPERIMENTAL
        select AEABI
        select ARM_ASM_UNIFIED
 +      select ARM_UNWIND
        help
          By enabling this option, the kernel will be compiled in
          Thumb-2 mode. A compiler/assembler that understand the unified
@@@ -1890,38 -1830,6 +1887,38 @@@ config ZBOOT_ROM_SH_MOBILE_SDH
  
  endchoice
  
 +config ARM_APPENDED_DTB
 +      bool "Use appended device tree blob to zImage (EXPERIMENTAL)"
 +      depends on OF && !ZBOOT_ROM && EXPERIMENTAL
 +      help
 +        With this option, the boot code will look for a device tree binary
 +        (DTB) appended to zImage
 +        (e.g. cat zImage <filename>.dtb > zImage_w_dtb).
 +
 +        This is meant as a backward compatibility convenience for those
 +        systems with a bootloader that can't be upgraded to accommodate
 +        the documented boot protocol using a device tree.
 +
 +        Beware that there is very little in terms of protection against
 +        this option being confused by leftover garbage in memory that might
 +        look like a DTB header after a reboot if no actual DTB is appended
 +        to zImage.  Do not leave this option active in a production kernel
 +        if you don't intend to always append a DTB.  Proper passing of the
 +        location into r2 of a bootloader provided DTB is always preferable
 +        to this option.
 +
 +config ARM_ATAG_DTB_COMPAT
 +      bool "Supplement the appended DTB with traditional ATAG information"
 +      depends on ARM_APPENDED_DTB
 +      help
 +        Some old bootloaders can't be updated to a DTB capable one, yet
 +        they provide ATAGs with memory configuration, the ramdisk address,
 +        the kernel cmdline string, etc.  Such information is dynamically
 +        provided by the bootloader and can't always be stored in a static
 +        DTB.  To allow a device tree enabled kernel to be used with such
 +        bootloaders, this option allows zImage to extract the information
 +        from the ATAG list and store it at run time into the appended DTB.
 +
  config CMDLINE
        string "Default kernel command string"
        default ""
@@@ -2068,7 -1976,6 +2065,7 @@@ config CPU_FREQ_PX
        bool
        depends on CPU_FREQ && ARCH_PXA && PXA25x
        default y
 +      select CPU_FREQ_TABLE
        select CPU_FREQ_DEFAULT_GOV_USERSPACE
  
  config CPU_FREQ_S3C
@@@ -2212,14 -2119,11 +2209,14 @@@ menu "Power management options
  source "kernel/power/Kconfig"
  
  config ARCH_SUSPEND_POSSIBLE
-       depends on !ARCH_S5P64X0 && !ARCH_S5PC100
+       depends on !ARCH_S5PC100
        depends on CPU_ARM920T || CPU_ARM926T || CPU_SA1100 || \
                CPU_V6 || CPU_V6K || CPU_V7 || CPU_XSC3 || CPU_XSCALE
        def_bool y
  
 +config ARM_CPU_SUSPEND
 +      def_bool PM_SLEEP
 +
  endmenu
  
  source "net/Kconfig"
index 44013e0672fed751614e48528238f51f9061df8b,dd660eb2020482b544ba762beb89134eb1e2f40a..59299ea5b2ffdb74c6343af3e1613d61039caa18
@@@ -12,12 -12,15 +12,17 @@@ if ARCH_EXYNOS
  config CPU_EXYNOS4210
        bool
        select SAMSUNG_DMADEV
 +      select ARM_CPU_SUSPEND if PM
+       select S5P_PM if PM
+       select S5P_SLEEP if PM
        help
          Enable EXYNOS4210 CPU support
  
  config SOC_EXYNOS4212
        bool
++      select ARM_CPU_SUSPEND if PM
+       select S5P_PM if PM
+       select S5P_SLEEP if PM
        help
          Enable EXYNOS4212 SoC support
  
@@@ -137,6 -140,14 +142,14 @@@ config MACH_SMDKV31
        select S3C_DEV_RTC
        select S3C_DEV_WDT
        select S3C_DEV_I2C1
+       select S5P_DEV_FIMC0
+       select S5P_DEV_FIMC1
+       select S5P_DEV_FIMC2
+       select S5P_DEV_FIMC3
+       select S5P_DEV_I2C_HDMIPHY
+       select S5P_DEV_MFC
+       select S5P_DEV_TV
+       select S5P_DEV_USB_EHCI
        select S3C_DEV_HSMMC
        select S3C_DEV_HSMMC1
        select S3C_DEV_HSMMC2
        select EXYNOS4_SETUP_I2C1
        select EXYNOS4_SETUP_KEYPAD
        select EXYNOS4_SETUP_SDHCI
+       select EXYNOS4_SETUP_USB_PHY
        help
          Machine support for Samsung SMDKV310
  
@@@ -176,19 -188,26 +190,26 @@@ config MACH_UNIVERSAL_C21
        select S5P_DEV_FIMC1
        select S5P_DEV_FIMC2
        select S5P_DEV_FIMC3
+       select S5P_DEV_CSIS0
+       select S5P_DEV_FIMD0
        select S3C_DEV_HSMMC
        select S3C_DEV_HSMMC2
        select S3C_DEV_HSMMC3
        select S3C_DEV_I2C1
        select S3C_DEV_I2C3
        select S3C_DEV_I2C5
+       select S5P_DEV_I2C_HDMIPHY
        select S5P_DEV_MFC
        select S5P_DEV_ONENAND
+       select S5P_DEV_TV
        select EXYNOS4_DEV_PD
+       select EXYNOS4_SETUP_FIMD0
        select EXYNOS4_SETUP_I2C1
        select EXYNOS4_SETUP_I2C3
        select EXYNOS4_SETUP_I2C5
        select EXYNOS4_SETUP_SDHCI
+       select EXYNOS4_SETUP_FIMC
+       select S5P_SETUP_MIPIPHY
        help
          Machine support for Samsung Mobile Universal S5PC210 Reference
          Board.
@@@ -197,6 -216,8 +218,8 @@@ config MACH_NUR
        bool "Mobile NURI Board"
        select CPU_EXYNOS4210
        select S3C_DEV_WDT
+       select S3C_DEV_RTC
+       select S5P_DEV_FIMD0
        select S3C_DEV_HSMMC
        select S3C_DEV_HSMMC2
        select S3C_DEV_HSMMC3
        select S5P_DEV_MFC
        select S5P_DEV_USB_EHCI
        select EXYNOS4_DEV_PD
+       select EXYNOS4_SETUP_FIMD0
        select EXYNOS4_SETUP_I2C1
        select EXYNOS4_SETUP_I2C3
        select EXYNOS4_SETUP_I2C5
@@@ -221,8 -243,22 +245,22 @@@ config MACH_ORIGE
        select CPU_EXYNOS4210
        select S3C_DEV_RTC
        select S3C_DEV_WDT
+       select S3C_DEV_HSMMC
        select S3C_DEV_HSMMC2
+       select S5P_DEV_FIMC0
+       select S5P_DEV_FIMC1
+       select S5P_DEV_FIMC2
+       select S5P_DEV_FIMC3
+       select S5P_DEV_FIMD0
+       select S5P_DEV_I2C_HDMIPHY
+       select S5P_DEV_TV
+       select S5P_DEV_USB_EHCI
+       select EXYNOS4_DEV_PD
+       select SAMSUNG_DEV_BACKLIGHT
+       select SAMSUNG_DEV_PWM
+       select EXYNOS4_SETUP_FIMD0
        select EXYNOS4_SETUP_SDHCI
+       select EXYNOS4_SETUP_USB_PHY
        help
          Machine support for ORIGEN based on Samsung EXYNOS4210
  
index a52024e309b0352ea09d15f78ade07619e4e9c65,db616916d7a4b012085ef0f46300ad27026ee5f4..2894f0adef5c325dd117c0224d5ddbf40809b0c7
@@@ -151,6 -151,11 +151,11 @@@ static int exynos4_clk_ip_mfc_ctrl(stru
        return s5p_gatectrl(S5P_CLKGATE_IP_MFC, clk, enable);
  }
  
+ static int exynos4_clksrc_mask_tv_ctrl(struct clk *clk, int enable)
+ {
+       return s5p_gatectrl(S5P_CLKSRC_MASK_TV, clk, enable);
+ }
  static int exynos4_clk_ip_cam_ctrl(struct clk *clk, int enable)
  {
        return s5p_gatectrl(S5P_CLKGATE_IP_CAM, clk, enable);
@@@ -191,6 -196,16 +196,16 @@@ static int exynos4_clk_ip_perir_ctrl(st
        return s5p_gatectrl(S5P_CLKGATE_IP_PERIR, clk, enable);
  }
  
+ static int exynos4_clk_hdmiphy_ctrl(struct clk *clk, int enable)
+ {
+       return s5p_gatectrl(S5P_HDMI_PHY_CONTROL, clk, enable);
+ }
+ static int exynos4_clk_dac_ctrl(struct clk *clk, int enable)
+ {
+       return s5p_gatectrl(S5P_DAC_PHY_CONTROL, clk, enable);
+ }
  /* Core list of CMU_CPU side */
  
  static struct clksrc_clk clk_mout_apll = {
@@@ -507,14 -522,49 +522,44 @@@ static struct clk init_clocks_off[] = 
                .parent         = &clk_aclk_133.clk,
                .enable         = exynos4_clk_ip_fsys_ctrl,
                .ctrlbit        = (1 << 9),
 -      }, {
 -              .name           = "sata",
 -              .parent         = &clk_aclk_133.clk,
 -              .enable         = exynos4_clk_ip_fsys_ctrl,
 -              .ctrlbit        = (1 << 10),
+       }, {
+               .name           = "dac",
+               .devname        = "s5p-sdo",
+               .enable         = exynos4_clk_ip_tv_ctrl,
+               .ctrlbit        = (1 << 2),
+       }, {
+               .name           = "mixer",
+               .devname        = "s5p-mixer",
+               .enable         = exynos4_clk_ip_tv_ctrl,
+               .ctrlbit        = (1 << 1),
+       }, {
+               .name           = "vp",
+               .devname        = "s5p-mixer",
+               .enable         = exynos4_clk_ip_tv_ctrl,
+               .ctrlbit        = (1 << 0),
+       }, {
+               .name           = "hdmi",
+               .devname        = "exynos4-hdmi",
+               .enable         = exynos4_clk_ip_tv_ctrl,
+               .ctrlbit        = (1 << 3),
+       }, {
+               .name           = "hdmiphy",
+               .devname        = "exynos4-hdmi",
+               .enable         = exynos4_clk_hdmiphy_ctrl,
+               .ctrlbit        = (1 << 0),
+       }, {
+               .name           = "dacphy",
+               .devname        = "s5p-sdo",
+               .enable         = exynos4_clk_dac_ctrl,
+               .ctrlbit        = (1 << 0),
        }, {
                .name           = "dma",
-               .devname        = "s3c-pl330.0",
+               .devname        = "dma-pl330.0",
                .enable         = exynos4_clk_ip_fsys_ctrl,
                .ctrlbit        = (1 << 0),
        }, {
                .name           = "dma",
-               .devname        = "s3c-pl330.1",
+               .devname        = "dma-pl330.1",
                .enable         = exynos4_clk_ip_fsys_ctrl,
                .ctrlbit        = (1 << 1),
        }, {
                .parent         = &clk_aclk_100.clk,
                .enable         = exynos4_clk_ip_peril_ctrl,
                .ctrlbit        = (1 << 13),
+       }, {
+               .name           = "i2c",
+               .devname        = "s3c2440-hdmiphy-i2c",
+               .parent         = &clk_aclk_100.clk,
+               .enable         = exynos4_clk_ip_peril_ctrl,
+               .ctrlbit        = (1 << 14),
        }, {
                .name           = "SYSMMU_MDMA",
                .enable         = exynos4_clk_ip_image_ctrl,
@@@ -836,6 -892,81 +887,81 @@@ static struct clksrc_sources clkset_mou
        .nr_sources     = ARRAY_SIZE(clkset_mout_mfc_list),
  };
  
+ static struct clk *clkset_sclk_dac_list[] = {
+       [0] = &clk_sclk_vpll.clk,
+       [1] = &clk_sclk_hdmiphy,
+ };
+ static struct clksrc_sources clkset_sclk_dac = {
+       .sources        = clkset_sclk_dac_list,
+       .nr_sources     = ARRAY_SIZE(clkset_sclk_dac_list),
+ };
+ static struct clksrc_clk clk_sclk_dac = {
+       .clk            = {
+               .name           = "sclk_dac",
+               .enable         = exynos4_clksrc_mask_tv_ctrl,
+               .ctrlbit        = (1 << 8),
+       },
+       .sources = &clkset_sclk_dac,
+       .reg_src = { .reg = S5P_CLKSRC_TV, .shift = 8, .size = 1 },
+ };
+ static struct clksrc_clk clk_sclk_pixel = {
+       .clk            = {
+               .name           = "sclk_pixel",
+               .parent = &clk_sclk_vpll.clk,
+       },
+       .reg_div = { .reg = S5P_CLKDIV_TV, .shift = 0, .size = 4 },
+ };
+ static struct clk *clkset_sclk_hdmi_list[] = {
+       [0] = &clk_sclk_pixel.clk,
+       [1] = &clk_sclk_hdmiphy,
+ };
+ static struct clksrc_sources clkset_sclk_hdmi = {
+       .sources        = clkset_sclk_hdmi_list,
+       .nr_sources     = ARRAY_SIZE(clkset_sclk_hdmi_list),
+ };
+ static struct clksrc_clk clk_sclk_hdmi = {
+       .clk            = {
+               .name           = "sclk_hdmi",
+               .enable         = exynos4_clksrc_mask_tv_ctrl,
+               .ctrlbit        = (1 << 0),
+       },
+       .sources = &clkset_sclk_hdmi,
+       .reg_src = { .reg = S5P_CLKSRC_TV, .shift = 0, .size = 1 },
+ };
+ static struct clk *clkset_sclk_mixer_list[] = {
+       [0] = &clk_sclk_dac.clk,
+       [1] = &clk_sclk_hdmi.clk,
+ };
+ static struct clksrc_sources clkset_sclk_mixer = {
+       .sources        = clkset_sclk_mixer_list,
+       .nr_sources     = ARRAY_SIZE(clkset_sclk_mixer_list),
+ };
+ static struct clksrc_clk clk_sclk_mixer = {
+       .clk            = {
+               .name           = "sclk_mixer",
+               .enable         = exynos4_clksrc_mask_tv_ctrl,
+               .ctrlbit        = (1 << 4),
+       },
+       .sources = &clkset_sclk_mixer,
+       .reg_src = { .reg = S5P_CLKSRC_TV, .shift = 4, .size = 1 },
+ };
+ static struct clksrc_clk *sclk_tv[] = {
+       &clk_sclk_dac,
+       &clk_sclk_pixel,
+       &clk_sclk_hdmi,
+       &clk_sclk_mixer,
+ };
  static struct clksrc_clk clk_dout_mmc0 = {
        .clk            = {
                .name           = "dout_mmc0",
@@@ -1162,6 -1293,71 +1288,71 @@@ static struct clk_ops exynos4_fout_apll
        .get_rate = exynos4_fout_apll_get_rate,
  };
  
+ static u32 vpll_div[][8] = {
+       {  54000000, 3, 53, 3, 1024, 0, 17, 0 },
+       { 108000000, 3, 53, 2, 1024, 0, 17, 0 },
+ };
+ static unsigned long exynos4_vpll_get_rate(struct clk *clk)
+ {
+       return clk->rate;
+ }
+ static int exynos4_vpll_set_rate(struct clk *clk, unsigned long rate)
+ {
+       unsigned int vpll_con0, vpll_con1 = 0;
+       unsigned int i;
+       /* Return if nothing changed */
+       if (clk->rate == rate)
+               return 0;
+       vpll_con0 = __raw_readl(S5P_VPLL_CON0);
+       vpll_con0 &= ~(0x1 << 27 |                                      \
+                       PLL90XX_MDIV_MASK << PLL46XX_MDIV_SHIFT |       \
+                       PLL90XX_PDIV_MASK << PLL46XX_PDIV_SHIFT |       \
+                       PLL90XX_SDIV_MASK << PLL46XX_SDIV_SHIFT);
+       vpll_con1 = __raw_readl(S5P_VPLL_CON1);
+       vpll_con1 &= ~(PLL46XX_MRR_MASK << PLL46XX_MRR_SHIFT |  \
+                       PLL46XX_MFR_MASK << PLL46XX_MFR_SHIFT | \
+                       PLL4650C_KDIV_MASK << PLL46XX_KDIV_SHIFT);
+       for (i = 0; i < ARRAY_SIZE(vpll_div); i++) {
+               if (vpll_div[i][0] == rate) {
+                       vpll_con0 |= vpll_div[i][1] << PLL46XX_PDIV_SHIFT;
+                       vpll_con0 |= vpll_div[i][2] << PLL46XX_MDIV_SHIFT;
+                       vpll_con0 |= vpll_div[i][3] << PLL46XX_SDIV_SHIFT;
+                       vpll_con1 |= vpll_div[i][4] << PLL46XX_KDIV_SHIFT;
+                       vpll_con1 |= vpll_div[i][5] << PLL46XX_MFR_SHIFT;
+                       vpll_con1 |= vpll_div[i][6] << PLL46XX_MRR_SHIFT;
+                       vpll_con0 |= vpll_div[i][7] << 27;
+                       break;
+               }
+       }
+       if (i == ARRAY_SIZE(vpll_div)) {
+               printk(KERN_ERR "%s: Invalid Clock VPLL Frequency\n",
+                               __func__);
+               return -EINVAL;
+       }
+       __raw_writel(vpll_con0, S5P_VPLL_CON0);
+       __raw_writel(vpll_con1, S5P_VPLL_CON1);
+       /* Wait for VPLL lock */
+       while (!(__raw_readl(S5P_VPLL_CON0) & (1 << PLL46XX_LOCKED_SHIFT)))
+               continue;
+       clk->rate = rate;
+       return 0;
+ }
+ static struct clk_ops exynos4_vpll_ops = {
+       .get_rate = exynos4_vpll_get_rate,
+       .set_rate = exynos4_vpll_set_rate,
+ };
  void __init_or_cpufreq exynos4_setup_clocks(void)
  {
        struct clk *xtal_clk;
        clk_fout_apll.ops = &exynos4_fout_apll_ops;
        clk_fout_mpll.rate = mpll;
        clk_fout_epll.rate = epll;
+       clk_fout_vpll.ops = &exynos4_vpll_ops;
        clk_fout_vpll.rate = vpll;
  
        printk(KERN_INFO "EXYNOS4: PLL settings, A=%ld, M=%ld, E=%ld V=%ld",
  }
  
  static struct clk *clks[] __initdata = {
-       /* Nothing here yet */
+       &clk_sclk_hdmi27m,
+       &clk_sclk_hdmiphy,
+       &clk_sclk_usbphy0,
+       &clk_sclk_usbphy1,
  };
  
  #ifdef CONFIG_PM_SLEEP
@@@ -1280,6 -1480,9 +1475,9 @@@ void __init exynos4_register_clocks(voi
        for (ptr = 0; ptr < ARRAY_SIZE(sysclks); ptr++)
                s3c_register_clksrc(sysclks[ptr], 1);
  
+       for (ptr = 0; ptr < ARRAY_SIZE(sclk_tv); ptr++)
+               s3c_register_clksrc(sclk_tv[ptr], 1);
        s3c_register_clksrc(clksrcs, ARRAY_SIZE(clksrcs));
        s3c_register_clocks(init_clocks, ARRAY_SIZE(init_clocks));
  
index 343a540d86a988d4d55a54b8dea79c87eb876ef7,a99c2f4a523f2e8e81a71ad6940654a2e1e7c9a4..3d7ebc557a723aa3446b5a6287e8d446d254274f
@@@ -72,8 -72,8 +72,8 @@@ void __init s3c2410_init_uarts(struct s
  
  void __init s3c2410_map_io(void)
  {
-       s3c24xx_gpiocfg_default.set_pull = s3c_gpio_setpull_1up;
-       s3c24xx_gpiocfg_default.get_pull = s3c_gpio_getpull_1up;
+       s3c24xx_gpiocfg_default.set_pull = s3c24xx_gpio_setpull_1up;
+       s3c24xx_gpiocfg_default.get_pull = s3c24xx_gpio_getpull_1up;
  
        iotable_init(s3c2410_iodesc, ARRAY_SIZE(s3c2410_iodesc));
  }
@@@ -170,9 -170,7 +170,9 @@@ int __init s3c2410_init(void
  {
        printk("S3C2410: Initialising architecture\n");
  
 +#ifdef CONFIG_PM
        register_syscore_ops(&s3c2410_pm_syscore_ops);
 +#endif
        register_syscore_ops(&s3c24xx_irq_syscore_ops);
  
        return sysdev_register(&s3c2410_sysdev);
index 20b3fdfb3051fb7533ec67cee9b5659b13dfda22,3156b7a71371c5b78c60c52fa0e5c56b65e65d30..7dbee81c8908f35fb035e55c6caffe25870250ca
@@@ -97,9 -97,7 +97,9 @@@ int __init s3c2416_init(void
  
        s3c_fb_setname("s3c2443-fb");
  
 +#ifdef CONFIG_PM
        register_syscore_ops(&s3c2416_pm_syscore_ops);
 +#endif
        register_syscore_ops(&s3c24xx_irq_syscore_ops);
  
        return sysdev_register(&s3c2416_sysdev);
@@@ -120,8 -118,8 +120,8 @@@ void __init s3c2416_init_uarts(struct s
  
  void __init s3c2416_map_io(void)
  {
-       s3c24xx_gpiocfg_default.set_pull = s3c_gpio_setpull_updown;
-       s3c24xx_gpiocfg_default.get_pull = s3c_gpio_getpull_updown;
+       s3c24xx_gpiocfg_default.set_pull = samsung_gpio_setpull_updown;
+       s3c24xx_gpiocfg_default.get_pull = samsung_gpio_getpull_updown;
  
        /* initialize device information early */
        s3c2416_default_sdhci0();
index 2270d3360216abffa913fcbdfff19384a300e558,fc84e481efcfca3e7da5535590971bb8af4deb27..37f8cc6aabd4636ba5d8166e93ba473c204978cc
@@@ -55,9 -55,7 +55,9 @@@ int __init s3c2440_init(void
  
        /* register suspend/resume handlers */
  
 +#ifdef CONFIG_PM
        register_syscore_ops(&s3c2410_pm_syscore_ops);
 +#endif
        register_syscore_ops(&s3c244x_pm_syscore_ops);
        register_syscore_ops(&s3c24xx_irq_syscore_ops);
  
@@@ -70,6 -68,6 +70,6 @@@ void __init s3c2440_map_io(void
  {
        s3c244x_map_io();
  
-       s3c24xx_gpiocfg_default.set_pull = s3c_gpio_setpull_1up;
-       s3c24xx_gpiocfg_default.get_pull = s3c_gpio_getpull_1up;
+       s3c24xx_gpiocfg_default.set_pull = s3c24xx_gpio_setpull_1up;
+       s3c24xx_gpiocfg_default.get_pull = s3c24xx_gpio_getpull_1up;
  }
index 6f2b65e6e06868ba96bc27df27dfec5643eac254,48e273ce9f9a798a7005c0414cfb77085de9a2b2..2c822e09392f7a00e4bf935f055f16a40eb80303
@@@ -169,9 -169,7 +169,9 @@@ int __init s3c2442_init(void
  {
        printk("S3C2442: Initialising architecture\n");
  
 +#ifdef CONFIG_PM
        register_syscore_ops(&s3c2410_pm_syscore_ops);
 +#endif
        register_syscore_ops(&s3c244x_pm_syscore_ops);
        register_syscore_ops(&s3c24xx_irq_syscore_ops);
  
@@@ -182,6 -180,6 +182,6 @@@ void __init s3c2442_map_io(void
  {
        s3c244x_map_io();
  
-       s3c24xx_gpiocfg_default.set_pull = s3c_gpio_setpull_1down;
-       s3c24xx_gpiocfg_default.get_pull = s3c_gpio_getpull_1down;
+       s3c24xx_gpiocfg_default.set_pull = s3c24xx_gpio_setpull_1down;
+       s3c24xx_gpiocfg_default.get_pull = s3c24xx_gpio_getpull_1down;
  }
index 9a197e55f66955c5e55521edc22e5c857a4af590,7b9dadadb0a524c26380954a88670cc85c9882ec..ab16e5568c4c526db5fb90865bd7b1e97609305f
@@@ -16,12 -16,10 +16,9 @@@ config PLAT_S5
        select S3C_GPIO_TRACK
        select S5P_GPIO_DRVSTR
        select SAMSUNG_GPIOLIB_4BIT
-       select S3C_GPIO_CFG_S3C64XX
-       select S3C_GPIO_PULL_UPDOWN
-       select S3C_GPIO_CFG_S3C24XX
        select PLAT_SAMSUNG
        select SAMSUNG_CLKSRC
        select SAMSUNG_IRQ_VIC_TIMER
 -      select SAMSUNG_IRQ_UART
        help
          Base platform code for Samsung's S5P series SoC.
  
@@@ -42,6 -40,12 +39,12 @@@ config S5P_HR
        help
          Use the High Resolution timer support
  
+ config S5P_PM
+       bool
+       help
+         Common code for power management support on S5P and newer SoCs
+         Note: Do not select this for S5P6440 and S5P6450.
  comment "System MMU"
  
  config S5P_SYSTEM_MMU
        help
          Say Y here if you want to enable System MMU
  
+ config S5P_SLEEP
+       bool
+       help
+         Internal config node to apply common S5P sleep management code.
+         Can be selected by S5P and newer SoCs with similar sleep procedure.
  config S5P_DEV_FIMC0
        bool
        help
@@@ -75,6 -85,11 +84,11 @@@ config S5P_DEV_FIMD
        help
          Compile in platform device definitions for FIMD controller 0
  
+ config S5P_DEV_I2C_HDMIPHY
+       bool
+       help
+         Compile in platform device definitions for I2C HDMIPHY controller
  config S5P_DEV_MFC
        bool
        help
@@@ -95,6 -110,11 +109,11 @@@ config S5P_DEV_CSIS
        help
          Compile in platform device definitions for MIPI-CSIS channel 1
  
+ config S5P_DEV_TV
+       bool
+       help
+         Compile in platform device definition for TV interface
  config S5P_DEV_USB_EHCI
        bool
        help
index c65eb791d1bb6d68f4fdc2b60ee9e2b4b45ceae4,a566523d34ecfe1743f99d2b6df359844da4712e..1fdfaa4599ced6465f647bc77578a92c9694b9bc
@@@ -37,7 -37,7 +37,7 @@@ struct s5p_gpioint_bank 
        int                     start;
        int                     nr_groups;
        int                     irq;
-       struct s3c_gpio_chip    **chips;
+       struct samsung_gpio_chip        **chips;
        void                    (*handler)(unsigned int, struct irq_desc *);
  };
  
@@@ -87,7 -87,7 +87,7 @@@ static void s5p_gpioint_handler(unsigne
        chained_irq_enter(chip, desc);
  
        for (group = 0; group < bank->nr_groups; group++) {
-               struct s3c_gpio_chip *chip = bank->chips[group];
+               struct samsung_gpio_chip *chip = bank->chips[group];
                if (!chip)
                        continue;
  
        chained_irq_exit(chip, desc);
  }
  
- static __init int s5p_gpioint_add(struct s3c_gpio_chip *chip)
+ static __init int s5p_gpioint_add(struct samsung_gpio_chip *chip)
  {
        static int used_gpioint_groups = 0;
        int group = chip->group;
                return -EINVAL;
  
        if (!bank->handler) {
-               bank->chips = kzalloc(sizeof(struct s3c_gpio_chip *) *
+               bank->chips = kzalloc(sizeof(struct samsung_gpio_chip *) *
                                      bank->nr_groups, GFP_KERNEL);
                if (!bank->chips)
                        return -ENOMEM;
        ct->chip.irq_mask = irq_gc_mask_set_bit;
        ct->chip.irq_unmask = irq_gc_mask_clr_bit;
        ct->chip.irq_set_type = s5p_gpioint_set_type,
 -      ct->regs.ack = PEND_OFFSET + REG_OFFSET(chip->group);
 -      ct->regs.mask = MASK_OFFSET + REG_OFFSET(chip->group);
 -      ct->regs.type = CON_OFFSET + REG_OFFSET(chip->group);
 +      ct->regs.ack = PEND_OFFSET + REG_OFFSET(group - bank->start);
 +      ct->regs.mask = MASK_OFFSET + REG_OFFSET(group - bank->start);
 +      ct->regs.type = CON_OFFSET + REG_OFFSET(group - bank->start);
        irq_setup_generic_chip(gc, IRQ_MSK(chip->chip.ngpio),
                               IRQ_GC_INIT_MASK_CACHE,
                               IRQ_NOREQUEST | IRQ_NOPROBE, 0);
  
  int __init s5p_register_gpio_interrupt(int pin)
  {
-       struct s3c_gpio_chip *my_chip = s3c_gpiolib_getchip(pin);
+       struct samsung_gpio_chip *my_chip = samsung_gpiolib_getchip(pin);
        int offset, group;
        int ret;
  
index 7a96198e3a7878d819c310facd78367e3c41cc00,74714c155e14623d33728d8a26f7ead7df6834ce..313eb26cfa62cb6e953ef865ba260e6e5ee23393
@@@ -65,6 -65,11 +65,6 @@@ config SAMSUNG_IRQ_VIC_TIME
         help
           Internal configuration to build the VIC timer interrupt code.
  
 -config SAMSUNG_IRQ_UART
 -       bool
 -       help
 -         Internal configuration to build the IRQ UART demux code.
 -
  # options for gpio configuration support
  
  config SAMSUNG_GPIOLIB_4BIT
          configuration. GPIOlib shall be compiled only for S3C64XX and S5P
          series of processors.
  
- config S3C_GPIO_CFG_S3C24XX
-       bool
-       help
-         Internal configuration to enable S3C24XX style GPIO configuration
-         functions.
  config S3C_GPIO_CFG_S3C64XX
        bool
        help
          Internal configuration to enable S3C64XX style GPIO configuration
          functions.
  
- config S3C_GPIO_PULL_UPDOWN
-       bool
-       help
-         Internal configuration to enable the correct GPIO pull helper
- config S3C_GPIO_PULL_S3C2443
-       bool
-       select S3C_GPIO_PULL_UPDOWN
-       help
-         Internal configuration to enable the correct GPIO pull helper for S3C2443-style GPIO
- config S3C_GPIO_PULL_DOWN
-       bool
-       help
-         Internal configuration to enable the correct GPIO pull helper
- config S3C_GPIO_PULL_UP
-       bool
-       help
-         Internal configuration to enable the correct GPIO pull helper
  config S5P_GPIO_DRVSTR
        bool
        help
@@@ -365,11 -343,4 +338,11 @@@ config SAMSUNG_P
        help
          Say Y here if you want to control Power Domain by Runtime PM.
  
 +config DEBUG_S3C_UART
 +      depends on PLAT_SAMSUNG
 +      int
 +      default "0" if DEBUG_S3C_UART0
 +      default "1" if DEBUG_S3C_UART1
 +      default "2" if DEBUG_S3C_UART2
 +
  endif
index 3dd5dbad55c6db34d1c2c06f8bebb9cae1fcfc25,a524fab221ddea3e4e45ef00f12f98550de64ea9..6012366f33cb5ebf42ed978a6e424059a4d62f26
@@@ -1,4 -1,4 +1,4 @@@
- # arch/arm/plat-s3c64xx/Makefile
+ # arch/arm/plat-samsung/Makefile
  #
  # Copyright 2009 Simtec Electronics
  #
@@@ -15,12 -15,10 +15,9 @@@ obj-y                               += init.o cpu.
  obj-$(CONFIG_ARCH_USES_GETTIMEOFFSET)   += time.o
  obj-y                         += clock.o
  obj-y                         += pwm-clock.o
- obj-y                         += gpio.o
- obj-y                         += gpio-config.o
- obj-y                         += dev-asocdma.o
  
  obj-$(CONFIG_SAMSUNG_CLKSRC)  += clock-clksrc.o
  
 -obj-$(CONFIG_SAMSUNG_IRQ_UART)        += irq-uart.o
  obj-$(CONFIG_SAMSUNG_IRQ_VIC_TIMER) += irq-vic-timer.o
  
  # ADC
@@@ -31,33 -29,9 +28,9 @@@ obj-$(CONFIG_S3C_ADC)        += adc.
  
  obj-y                         += platformdata.o
  
- obj-$(CONFIG_S3C_DEV_HSMMC)   += dev-hsmmc.o
- obj-$(CONFIG_S3C_DEV_HSMMC1)  += dev-hsmmc1.o
- obj-$(CONFIG_S3C_DEV_HSMMC2)  += dev-hsmmc2.o
- obj-$(CONFIG_S3C_DEV_HSMMC3)  += dev-hsmmc3.o
- obj-$(CONFIG_S3C_DEV_HWMON)   += dev-hwmon.o
- obj-y                         += dev-i2c0.o
- obj-$(CONFIG_S3C_DEV_I2C1)    += dev-i2c1.o
- obj-$(CONFIG_S3C_DEV_I2C2)    += dev-i2c2.o
- obj-$(CONFIG_S3C_DEV_I2C3)    += dev-i2c3.o
- obj-$(CONFIG_S3C_DEV_I2C4)    += dev-i2c4.o
- obj-$(CONFIG_S3C_DEV_I2C5)    += dev-i2c5.o
- obj-$(CONFIG_S3C_DEV_I2C6)    += dev-i2c6.o
- obj-$(CONFIG_S3C_DEV_I2C7)    += dev-i2c7.o
- obj-$(CONFIG_S3C_DEV_FB)      += dev-fb.o
+ obj-y                         += devs.o
  obj-y                         += dev-uart.o
- obj-$(CONFIG_S3C_DEV_USB_HOST)        += dev-usb.o
- obj-$(CONFIG_S3C_DEV_USB_HSOTG)       += dev-usb-hsotg.o
- obj-$(CONFIG_S3C_DEV_WDT)     += dev-wdt.o
- obj-$(CONFIG_S3C_DEV_NAND)    += dev-nand.o
- obj-$(CONFIG_S3C_DEV_ONENAND) += dev-onenand.o
- obj-$(CONFIG_S3C_DEV_RTC)     += dev-rtc.o
- obj-$(CONFIG_SAMSUNG_DEV_ADC) += dev-adc.o
- obj-$(CONFIG_SAMSUNG_DEV_IDE) += dev-ide.o
- obj-$(CONFIG_SAMSUNG_DEV_TS)  += dev-ts.o
- obj-$(CONFIG_SAMSUNG_DEV_KEYPAD)      += dev-keypad.o
- obj-$(CONFIG_SAMSUNG_DEV_PWM) += dev-pwm.o
  obj-$(CONFIG_SAMSUNG_DEV_BACKLIGHT)   += dev-backlight.o
  
  # DMA support
index 0000000000000000000000000000000000000000,94ecf8c5c85747b473e112a5b1ca0c29fbda57a6..08d1a7ef97b7e4a634e197893dc51cff29dd246a
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,115 +1,80 @@@
 -/* UART interrupts, each UART has 4 intterupts per channel so
 - * use the space between the ISA and S3C main interrupts. Note, these
 - * are not in the same order as the S3C24XX series! */
 -
 -#define IRQ_S5P_UART_BASE0    (16)
 -#define IRQ_S5P_UART_BASE1    (20)
 -#define IRQ_S5P_UART_BASE2    (24)
 -#define IRQ_S5P_UART_BASE3    (28)
 -
 -#define UART_IRQ_RXD          (0)
 -#define UART_IRQ_ERR          (1)
 -#define UART_IRQ_TXD          (2)
 -
 -#define IRQ_S5P_UART_RX0      (IRQ_S5P_UART_BASE0 + UART_IRQ_RXD)
 -#define IRQ_S5P_UART_TX0      (IRQ_S5P_UART_BASE0 + UART_IRQ_TXD)
 -#define IRQ_S5P_UART_ERR0     (IRQ_S5P_UART_BASE0 + UART_IRQ_ERR)
 -
 -#define IRQ_S5P_UART_RX1      (IRQ_S5P_UART_BASE1 + UART_IRQ_RXD)
 -#define IRQ_S5P_UART_TX1      (IRQ_S5P_UART_BASE1 + UART_IRQ_TXD)
 -#define IRQ_S5P_UART_ERR1     (IRQ_S5P_UART_BASE1 + UART_IRQ_ERR)
 -
 -#define IRQ_S5P_UART_RX2      (IRQ_S5P_UART_BASE2 + UART_IRQ_RXD)
 -#define IRQ_S5P_UART_TX2      (IRQ_S5P_UART_BASE2 + UART_IRQ_TXD)
 -#define IRQ_S5P_UART_ERR2     (IRQ_S5P_UART_BASE2 + UART_IRQ_ERR)
 -
 -#define IRQ_S5P_UART_RX3      (IRQ_S5P_UART_BASE3 + UART_IRQ_RXD)
 -#define IRQ_S5P_UART_TX3      (IRQ_S5P_UART_BASE3 + UART_IRQ_TXD)
 -#define IRQ_S5P_UART_ERR3     (IRQ_S5P_UART_BASE3 + UART_IRQ_ERR)
 -
 -/* S3C compatibilty defines */
 -#define IRQ_S3CUART_RX0               IRQ_S5P_UART_RX0
 -#define IRQ_S3CUART_RX1               IRQ_S5P_UART_RX1
 -#define IRQ_S3CUART_RX2               IRQ_S5P_UART_RX2
 -#define IRQ_S3CUART_RX3               IRQ_S5P_UART_RX3
 -
+ /* linux/arch/arm/plat-samsung/include/plat/irqs.h
+  *
+  * Copyright (c) 2009 Samsung Electronics Co., Ltd.
+  *            http://www.samsung.com/
+  *
+  * S5P Common IRQ support
+  *
+  * This program is free software; you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License version 2 as
+  * published by the Free Software Foundation.
+ */
+ #ifndef __PLAT_SAMSUNG_IRQS_H
+ #define __PLAT_SAMSUNG_IRQS_H __FILE__
+ /* we keep the first set of CPU IRQs out of the range of
+  * the ISA space, so that the PC104 has them to itself
+  * and we don't end up having to do horrible things to the
+  * standard ISA drivers....
+  *
+  * note, since we're using the VICs, our start must be a
+  * mulitple of 32 to allow the common code to work
+  */
+ #define S5P_IRQ_OFFSET                (32)
+ #define S5P_IRQ(x)            ((x) + S5P_IRQ_OFFSET)
+ #define S5P_VIC0_BASE         S5P_IRQ(0)
+ #define S5P_VIC1_BASE         S5P_IRQ(32)
+ #define S5P_VIC2_BASE         S5P_IRQ(64)
+ #define S5P_VIC3_BASE         S5P_IRQ(96)
+ #define VIC_BASE(x)           (S5P_VIC0_BASE + ((x)*32))
+ #define IRQ_VIC0_BASE         S5P_VIC0_BASE
+ #define IRQ_VIC1_BASE         S5P_VIC1_BASE
+ #define IRQ_VIC2_BASE         S5P_VIC2_BASE
+ /* VIC based IRQs */
+ #define S5P_IRQ_VIC0(x)               (S5P_VIC0_BASE + (x))
+ #define S5P_IRQ_VIC1(x)               (S5P_VIC1_BASE + (x))
+ #define S5P_IRQ_VIC2(x)               (S5P_VIC2_BASE + (x))
+ #define S5P_IRQ_VIC3(x)               (S5P_VIC3_BASE + (x))
+ #define S5P_TIMER_IRQ(x)      (11 + (x))
+ #define IRQ_TIMER0            S5P_TIMER_IRQ(0)
+ #define IRQ_TIMER1            S5P_TIMER_IRQ(1)
+ #define IRQ_TIMER2            S5P_TIMER_IRQ(2)
+ #define IRQ_TIMER3            S5P_TIMER_IRQ(3)
+ #define IRQ_TIMER4            S5P_TIMER_IRQ(4)
+ #define IRQ_EINT(x)           ((x) < 16 ? ((x) + S5P_EINT_BASE1) \
+                                       : ((x) - 16 + S5P_EINT_BASE2))
+ #define EINT_OFFSET(irq)      ((irq) < S5P_EINT_BASE2 ? \
+                                               ((irq) - S5P_EINT_BASE1) : \
+                                               ((irq) + 16 - S5P_EINT_BASE2))
+ #define IRQ_EINT_BIT(x)               EINT_OFFSET(x)
+ /* Typically only a few gpio chips require gpio interrupt support.
+    To avoid memory waste irq descriptors are allocated only for
+    S5P_GPIOINT_GROUP_COUNT chips, each with total number of
+    S5P_GPIOINT_GROUP_SIZE pins/irqs. Each GPIOINT group can be assiged
+    to any gpio chip with the s5p_register_gpio_interrupt() function */
+ #define S5P_GPIOINT_GROUP_COUNT 4
+ #define S5P_GPIOINT_GROUP_SIZE        8
+ #define S5P_GPIOINT_COUNT     (S5P_GPIOINT_GROUP_COUNT * S5P_GPIOINT_GROUP_SIZE)
+ /* IRQ types common for all s5p platforms */
+ #define S5P_IRQ_TYPE_LEVEL_LOW                (0x00)
+ #define S5P_IRQ_TYPE_LEVEL_HIGH               (0x01)
+ #define S5P_IRQ_TYPE_EDGE_FALLING     (0x02)
+ #define S5P_IRQ_TYPE_EDGE_RISING      (0x03)
+ #define S5P_IRQ_TYPE_EDGE_BOTH                (0x04)
+ #endif /* __PLAT_SAMSUNG_IRQS_H */
diff --combined drivers/gpio/Kconfig
index 8b3c745b1b051f7924fc3a95c113dd840a60ec4a,ca44d2cceb020a557460dbde9f6de0fc461f27a1..74603ca06e34e8b1abbb9b4429aa27b120013cda
@@@ -95,10 -95,6 +95,6 @@@ config GPIO_EP93X
        depends on ARCH_EP93XX
        select GPIO_GENERIC
  
- config GPIO_EXYNOS4
-       def_bool y
-       depends on CPU_EXYNOS4210
  config GPIO_MPC5200
        def_bool y
        depends on PPC_MPC52xx
@@@ -131,18 -127,6 +127,6 @@@ config GPIO_MX
        select GPIO_GENERIC
        select GENERIC_IRQ_CHIP
  
- config GPIO_PLAT_SAMSUNG
-       def_bool y
-       depends on SAMSUNG_GPIOLIB_4BIT
- config GPIO_S5PC100
-       def_bool y
-       depends on CPU_S5PC100
- config GPIO_S5PV210
-       def_bool y
-       depends on CPU_S5PV210
  config GPIO_PL061
        bool "PrimeCell PL061 GPIO support"
        depends on ARM_AMBA
@@@ -178,18 -162,9 +162,18 @@@ config GPIO_SC
          The Intel Tunnel Creek processor has 5 GPIOs powered by the
          core power rail and 9 from suspend power supply.
  
 +config GPIO_U300
 +      bool "ST-Ericsson U300 COH 901 335/571 GPIO"
 +      depends on GPIOLIB && ARCH_U300
 +      help
 +        Say yes here to support GPIO interface on ST-Ericsson U300.
 +        The names of the two IP block variants supported are
 +        COH 901 335 and COH 901 571/3. They contain 3, 5 or 7
 +        ports of 8 GPIO pins each.
 +
  config GPIO_VX855
        tristate "VIA VX855/VX875 GPIO"
 -      depends on MFD_SUPPORT && PCI
 +      depends on PCI
        select MFD_CORE
        select MFD_VX855
        help
@@@ -397,7 -372,6 +381,7 @@@ config GPIO_LANGWEL
  config GPIO_PCH
        tristate "Intel EG20T PCH / OKI SEMICONDUCTOR ML7223 IOH GPIO"
        depends on PCI && X86
 +      select GENERIC_IRQ_CHIP
        help
          This driver is for PCH(Platform controller Hub) GPIO of Intel Topcliff
          which is an IOH(Input/Output Hub) for x86 embedded processor.
  config GPIO_ML_IOH
        tristate "OKI SEMICONDUCTOR ML7213 IOH GPIO support"
        depends on PCI
 +      select GENERIC_IRQ_CHIP
        help
          ML7213 is companion chip for Intel Atom E6xx series.
          This driver can be used for OKI SEMICONDUCTOR ML7213 IOH(Input/Output
@@@ -428,6 -401,7 +412,6 @@@ config GPIO_TIMBERDAL
  config GPIO_RDC321X
        tristate "RDC R-321x GPIO support"
        depends on PCI
 -      select MFD_SUPPORT
        select MFD_CORE
        select MFD_RDC321X
        help
diff --combined drivers/gpio/Makefile
index 19c5d27b6d2e916216594bca14e7243983634bf1,62db458c850d1e5fc83c544e7a30b412c942d932..4a9ad2f99ada80499c058bfefe80edd398ec6552
@@@ -14,14 -14,10 +14,13 @@@ obj-$(CONFIG_GPIO_ADP5588) += gpio-adp5
  obj-$(CONFIG_GPIO_BT8XX)      += gpio-bt8xx.o
  obj-$(CONFIG_GPIO_CS5535)     += gpio-cs5535.o
  obj-$(CONFIG_GPIO_DA9052)     += gpio-da9052.o
 +obj-$(CONFIG_ARCH_DAVINCI)    += gpio-davinci.o
  obj-$(CONFIG_GPIO_EP93XX)     += gpio-ep93xx.o
- obj-$(CONFIG_GPIO_EXYNOS4)    += gpio-exynos4.o
  obj-$(CONFIG_GPIO_IT8761E)    += gpio-it8761e.o
  obj-$(CONFIG_GPIO_JANZ_TTL)   += gpio-janz-ttl.o
 +obj-$(CONFIG_MACH_KS8695)     += gpio-ks8695.o
  obj-$(CONFIG_GPIO_LANGWELL)   += gpio-langwell.o
 +obj-$(CONFIG_ARCH_LPC32XX)    += gpio-lpc32xx.o
  obj-$(CONFIG_GPIO_MAX730X)    += gpio-max730x.o
  obj-$(CONFIG_GPIO_MAX7300)    += gpio-max7300.o
  obj-$(CONFIG_GPIO_MAX7301)    += gpio-max7301.o
@@@ -40,20 -36,14 +39,17 @@@ obj-$(CONFIG_GPIO_PCA953X) += gpio-pca9
  obj-$(CONFIG_GPIO_PCF857X)    += gpio-pcf857x.o
  obj-$(CONFIG_GPIO_PCH)                += gpio-pch.o
  obj-$(CONFIG_GPIO_PL061)      += gpio-pl061.o
 +obj-$(CONFIG_PLAT_PXA)                += gpio-pxa.o
  obj-$(CONFIG_GPIO_RDC321X)    += gpio-rdc321x.o
- obj-$(CONFIG_GPIO_PLAT_SAMSUNG)       += gpio-plat-samsung.o
- obj-$(CONFIG_GPIO_S5PC100)    += gpio-s5pc100.o
- obj-$(CONFIG_GPIO_S5PV210)    += gpio-s5pv210.o
+ obj-$(CONFIG_PLAT_SAMSUNG)    += gpio-samsung.o
 +obj-$(CONFIG_ARCH_SA1100)     += gpio-sa1100.o
  obj-$(CONFIG_GPIO_SCH)                += gpio-sch.o
  obj-$(CONFIG_GPIO_STMPE)      += gpio-stmpe.o
  obj-$(CONFIG_GPIO_SX150X)     += gpio-sx150x.o
  obj-$(CONFIG_GPIO_TC3589X)    += gpio-tc3589x.o
  obj-$(CONFIG_ARCH_TEGRA)      += gpio-tegra.o
  obj-$(CONFIG_GPIO_TIMBERDALE) += gpio-timberdale.o
 +obj-$(CONFIG_ARCH_DAVINCI_TNETV107X) += gpio-tnetv107x.o
  obj-$(CONFIG_GPIO_TPS65910)   += gpio-tps65910.o
  obj-$(CONFIG_GPIO_TPS65912)   += gpio-tps65912.o
  obj-$(CONFIG_GPIO_TWL4030)    += gpio-twl4030.o
This page took 0.18468 seconds and 4 git commands to generate.