Merge tag 's5pv210-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux...
authorArnd Bergmann <arnd@arndb.de>
Sat, 26 Jul 2014 10:01:10 +0000 (12:01 +0200)
committerArnd Bergmann <arnd@arndb.de>
Sat, 26 Jul 2014 10:01:27 +0000 (12:01 +0200)
Merge "Samsung S5PV210 DT support for v3.17" from Kukjin Kim:

- support common clock framework for s5pv210 clock
- add generic PHY driver on s5pv210 to support it via DT
- add dt support for s5pv210-goni, smdkc110, smdkv210 and torbreck boards
- remove board files from mach-s5pv210 and unused codes
- enable multiplatform for s5pv210

* tag 's5pv210-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung:
  clk: samsung: s5pv210: Remove legacy board support
  ARM: SAMSUNG: Remove remaining legacy code
  gpio: samsung: Remove legacy support of S5PV210
  ARM: S5PV210: Enable multi-platform build support
  cpufreq: s5pv210: Make the driver multiplatform aware
  ARM: S5PV210: Register cpufreq platform device
  ARM: S5PV210: move debug-macro.S into the common space
  ARM: S5PV210: Untie PM support from legacy code
  ARM: S5PV210: Remove support for board files
  ARM: dts: Add Device tree for s5pc110/s5pv210 boards
  ARM: dts: Add Device tree for s5pv210 SoC
  ARM: S5PV210: Add board file for boot using Device Tree
  phy: Add support for S5PV210 to the Exynos USB 2.0 PHY driver
  clk: samsung: Add S5PV210 Audio Subsystem clock driver
  ARM: SAMSUNG: Remove legacy clock code
  serial: samsung: Remove support for legacy clock code
  cpufreq: s3c24xx: Remove some dead code
  ARM: S5PV210: Migrate clock handling to Common Clock Framework
  clk: samsung: Add clock driver for S5PV210 and compatible SoCs

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
125 files changed:
Documentation/devicetree/bindings/clock/clk-s5pv210-audss.txt [new file with mode: 0644]
Documentation/devicetree/bindings/clock/samsung,s5pv210-clock.txt [new file with mode: 0644]
Documentation/devicetree/bindings/phy/samsung-phy.txt
arch/arm/Kconfig
arch/arm/Kconfig.debug
arch/arm/Makefile
arch/arm/boot/dts/Makefile
arch/arm/boot/dts/s5pv210-aquila.dts [new file with mode: 0644]
arch/arm/boot/dts/s5pv210-goni.dts [new file with mode: 0644]
arch/arm/boot/dts/s5pv210-pinctrl.dtsi [new file with mode: 0644]
arch/arm/boot/dts/s5pv210-smdkc110.dts [new file with mode: 0644]
arch/arm/boot/dts/s5pv210-smdkv210.dts [new file with mode: 0644]
arch/arm/boot/dts/s5pv210-torbreck.dts [new file with mode: 0644]
arch/arm/boot/dts/s5pv210.dtsi [new file with mode: 0644]
arch/arm/include/debug/s5pv210.S [new file with mode: 0644]
arch/arm/mach-exynos/pm.c
arch/arm/mach-s3c24xx/common.c
arch/arm/mach-s3c24xx/iotiming-s3c2412.c
arch/arm/mach-s3c24xx/mach-h1940.c
arch/arm/mach-s3c24xx/mach-jive.c
arch/arm/mach-s3c24xx/mach-smdk2413.c
arch/arm/mach-s3c24xx/mach-smdk2416.c
arch/arm/mach-s3c24xx/mach-smdk2443.c
arch/arm/mach-s3c24xx/mach-vstms.c
arch/arm/mach-s3c24xx/s3c2410.c
arch/arm/mach-s3c24xx/s3c2412.c
arch/arm/mach-s3c24xx/s3c2442.c
arch/arm/mach-s3c24xx/s3c244x.c
arch/arm/mach-s3c64xx/mach-anw6410.c
arch/arm/mach-s3c64xx/mach-crag6410.c
arch/arm/mach-s3c64xx/mach-hmt.c
arch/arm/mach-s3c64xx/mach-ncp.c
arch/arm/mach-s3c64xx/mach-smartq.c
arch/arm/mach-s3c64xx/mach-smdk6400.c
arch/arm/mach-s3c64xx/mach-smdk6410.c
arch/arm/mach-s3c64xx/s3c6400.c
arch/arm/mach-s3c64xx/s3c6410.c
arch/arm/mach-s5pv210/Kconfig
arch/arm/mach-s5pv210/Makefile
arch/arm/mach-s5pv210/Makefile.boot [deleted file]
arch/arm/mach-s5pv210/clock.c [deleted file]
arch/arm/mach-s5pv210/common.c [deleted file]
arch/arm/mach-s5pv210/common.h
arch/arm/mach-s5pv210/dev-audio.c [deleted file]
arch/arm/mach-s5pv210/dma.c [deleted file]
arch/arm/mach-s5pv210/include/mach/debug-macro.S [deleted file]
arch/arm/mach-s5pv210/include/mach/dma.h [deleted file]
arch/arm/mach-s5pv210/include/mach/gpio.h [deleted file]
arch/arm/mach-s5pv210/include/mach/hardware.h [deleted file]
arch/arm/mach-s5pv210/include/mach/irqs.h [deleted file]
arch/arm/mach-s5pv210/include/mach/map.h [deleted file]
arch/arm/mach-s5pv210/include/mach/memory.h [deleted file]
arch/arm/mach-s5pv210/include/mach/pm-core.h [deleted file]
arch/arm/mach-s5pv210/include/mach/regs-clock.h
arch/arm/mach-s5pv210/include/mach/regs-gpio.h [deleted file]
arch/arm/mach-s5pv210/include/mach/regs-irq.h [deleted file]
arch/arm/mach-s5pv210/mach-aquila.c [deleted file]
arch/arm/mach-s5pv210/mach-goni.c [deleted file]
arch/arm/mach-s5pv210/mach-smdkc110.c [deleted file]
arch/arm/mach-s5pv210/mach-smdkv210.c [deleted file]
arch/arm/mach-s5pv210/mach-torbreck.c [deleted file]
arch/arm/mach-s5pv210/pm.c
arch/arm/mach-s5pv210/s5pv210.c [new file with mode: 0644]
arch/arm/mach-s5pv210/setup-fb-24bpp.c [deleted file]
arch/arm/mach-s5pv210/setup-fimc.c [deleted file]
arch/arm/mach-s5pv210/setup-i2c0.c [deleted file]
arch/arm/mach-s5pv210/setup-i2c1.c [deleted file]
arch/arm/mach-s5pv210/setup-i2c2.c [deleted file]
arch/arm/mach-s5pv210/setup-ide.c [deleted file]
arch/arm/mach-s5pv210/setup-keypad.c [deleted file]
arch/arm/mach-s5pv210/setup-sdhci-gpio.c [deleted file]
arch/arm/mach-s5pv210/setup-spi.c [deleted file]
arch/arm/mach-s5pv210/setup-usb-phy.c [deleted file]
arch/arm/mach-s5pv210/sleep.S [new file with mode: 0644]
arch/arm/plat-samsung/Kconfig
arch/arm/plat-samsung/Makefile
arch/arm/plat-samsung/clock-clksrc.c [deleted file]
arch/arm/plat-samsung/clock.c [deleted file]
arch/arm/plat-samsung/cpu.c
arch/arm/plat-samsung/devs.c
arch/arm/plat-samsung/include/plat/camport.h [deleted file]
arch/arm/plat-samsung/include/plat/clock-clksrc.h [deleted file]
arch/arm/plat-samsung/include/plat/clock.h [deleted file]
arch/arm/plat-samsung/include/plat/cpu-freq-core.h
arch/arm/plat-samsung/include/plat/cpu.h
arch/arm/plat-samsung/include/plat/devs.h
arch/arm/plat-samsung/include/plat/fb-core.h
arch/arm/plat-samsung/include/plat/fb.h
arch/arm/plat-samsung/include/plat/fimc-core.h [deleted file]
arch/arm/plat-samsung/include/plat/gpio-cfg.h
arch/arm/plat-samsung/include/plat/hdmi.h [deleted file]
arch/arm/plat-samsung/include/plat/irqs.h [deleted file]
arch/arm/plat-samsung/include/plat/mfc.h [deleted file]
arch/arm/plat-samsung/include/plat/pll.h [deleted file]
arch/arm/plat-samsung/include/plat/s5p-clock.h [deleted file]
arch/arm/plat-samsung/include/plat/sdhci.h
arch/arm/plat-samsung/include/plat/tv-core.h [deleted file]
arch/arm/plat-samsung/init.c
arch/arm/plat-samsung/pm-gpio.c
arch/arm/plat-samsung/s5p-clock.c [deleted file]
arch/arm/plat-samsung/s5p-dev-mfc.c
arch/arm/plat-samsung/s5p-dev-uart.c [deleted file]
arch/arm/plat-samsung/s5p-irq-eint.c [deleted file]
arch/arm/plat-samsung/s5p-irq-gpioint.c [deleted file]
arch/arm/plat-samsung/s5p-irq-pm.c [deleted file]
arch/arm/plat-samsung/s5p-irq.c [deleted file]
arch/arm/plat-samsung/s5p-pm.c [deleted file]
arch/arm/plat-samsung/s5p-sleep.S [deleted file]
drivers/clk/samsung/Makefile
drivers/clk/samsung/clk-s5pv210-audss.c [new file with mode: 0644]
drivers/clk/samsung/clk-s5pv210.c [new file with mode: 0644]
drivers/cpufreq/s3c2410-cpufreq.c
drivers/cpufreq/s3c2412-cpufreq.c
drivers/cpufreq/s3c2440-cpufreq.c
drivers/cpufreq/s3c24xx-cpufreq.c
drivers/cpufreq/s5pv210-cpufreq.c
drivers/gpio/gpio-samsung.c
drivers/phy/Kconfig
drivers/phy/Makefile
drivers/phy/phy-s5pv210-usb2.c [new file with mode: 0644]
drivers/phy/phy-samsung-usb2.c
drivers/phy/phy-samsung-usb2.h
drivers/tty/serial/samsung.c
include/dt-bindings/clock/s5pv210-audss.h [new file with mode: 0644]
include/dt-bindings/clock/s5pv210.h [new file with mode: 0644]

diff --git a/Documentation/devicetree/bindings/clock/clk-s5pv210-audss.txt b/Documentation/devicetree/bindings/clock/clk-s5pv210-audss.txt
new file mode 100644 (file)
index 0000000..4fc869b
--- /dev/null
@@ -0,0 +1,53 @@
+* Samsung Audio Subsystem Clock Controller
+
+The Samsung Audio Subsystem clock controller generates and supplies clocks
+to Audio Subsystem block available in the S5PV210 and compatible SoCs.
+
+Required Properties:
+
+- compatible: should be "samsung,s5pv210-audss-clock".
+- reg: physical base address and length of the controller's register set.
+
+- #clock-cells: should be 1.
+
+- clocks:
+  - hclk: AHB bus clock of the Audio Subsystem.
+  - xxti: Optional fixed rate PLL reference clock, parent of mout_audss. If
+    not specified (i.e. xusbxti is used for PLL reference), it is fixed to
+    a clock named "xxti".
+  - fout_epll: Input PLL to the AudioSS block, parent of mout_audss.
+  - iiscdclk0: Optional external i2s clock, parent of mout_i2s. If not
+    specified, it is fixed to a clock named "iiscdclk0".
+  - sclk_audio0: Audio bus clock, parent of mout_i2s.
+
+- clock-names: Aliases for the above clocks. They should be "hclk",
+  "xxti", "fout_epll", "iiscdclk0", and "sclk_audio0" respectively.
+
+All available clocks are defined as preprocessor macros in
+dt-bindings/clock/s5pv210-audss-clk.h header and can be used in device
+tree sources.
+
+Example: Clock controller node.
+
+       clk_audss: clock-controller@c0900000 {
+               compatible = "samsung,s5pv210-audss-clock";
+               reg = <0xc0900000 0x1000>;
+               #clock-cells = <1>;
+               clock-names = "hclk", "xxti",
+                               "fout_epll", "sclk_audio0";
+               clocks = <&clocks DOUT_HCLKP>, <&xxti>,
+                               <&clocks FOUT_EPLL>, <&clocks SCLK_AUDIO0>;
+       };
+
+Example: I2S controller node that consumes the clock generated by the clock
+        controller. Refer to the standard clock bindings for information
+         about 'clocks' and 'clock-names' property.
+
+       i2s0: i2s@03830000 {
+               /* ... */
+               clock-names = "iis", "i2s_opclk0",
+                               "i2s_opclk1";
+               clocks = <&clk_audss CLK_I2S>, <&clk_audss CLK_I2S>,
+                               <&clk_audss CLK_DOUT_AUD_BUS>;
+               /* ... */
+       };
diff --git a/Documentation/devicetree/bindings/clock/samsung,s5pv210-clock.txt b/Documentation/devicetree/bindings/clock/samsung,s5pv210-clock.txt
new file mode 100644 (file)
index 0000000..effd940
--- /dev/null
@@ -0,0 +1,78 @@
+* Samsung S5P6442/S5PC110/S5PV210 Clock Controller
+
+Samsung S5P6442, S5PC110 and S5PV210 SoCs contain integrated clock
+controller, which generates and supplies clock to various controllers
+within the SoC.
+
+Required Properties:
+
+- compatible: should be one of following:
+       - "samsung,s5pv210-clock" : for clock controller of Samsung
+         S5PC110/S5PV210 SoCs,
+       - "samsung,s5p6442-clock" : for clock controller of Samsung
+         S5P6442 SoC.
+
+- reg: physical base address of the controller and length of memory mapped
+  region.
+
+- #clock-cells: should be 1.
+
+All available clocks are defined as preprocessor macros in
+dt-bindings/clock/s5pv210.h header and can be used in device tree sources.
+
+External clocks:
+
+There are several clocks that are generated outside the SoC. It is expected
+that they are defined using standard clock bindings with following
+clock-output-names:
+ - "xxti": external crystal oscillator connected to XXTI and XXTO pins of
+the SoC,
+ - "xusbxti": external crystal oscillator connected to XUSBXTI and XUSBXTO
+pins of the SoC,
+
+A subset of above clocks available on given board shall be specified in
+board device tree, including the system base clock, as selected by XOM[0]
+pin of the SoC. Refer to generic fixed rate clock bindings
+documentation[1] for more information how to specify these clocks.
+
+[1] Documentation/devicetree/bindings/clock/fixed-clock.txt
+
+Example: Clock controller node:
+
+       clock: clock-controller@7e00f000 {
+               compatible = "samsung,s5pv210-clock";
+               reg = <0x7e00f000 0x1000>;
+               #clock-cells = <1>;
+       };
+
+Example: Required external clocks:
+
+       xxti: clock-xxti {
+               compatible = "fixed-clock";
+               clock-output-names = "xxti";
+               clock-frequency = <24000000>;
+               #clock-cells = <0>;
+       };
+
+       xusbxti: clock-xusbxti {
+               compatible = "fixed-clock";
+               clock-output-names = "xusbxti";
+               clock-frequency = <24000000>;
+               #clock-cells = <0>;
+       };
+
+Example: UART controller node that consumes the clock generated by the clock
+  controller (refer to the standard clock bindings for information about
+  "clocks" and "clock-names" properties):
+
+       uart0: serial@e2900000 {
+               compatible = "samsung,s5pv210-uart";
+               reg = <0xe2900000 0x400>;
+               interrupt-parent = <&vic1>;
+               interrupts = <10>;
+               clock-names = "uart", "clk_uart_baud0",
+                               "clk_uart_baud1";
+               clocks = <&clocks UART0>, <&clocks UART0>,
+                               <&clocks SCLK_UART0>;
+               status = "disabled";
+       };
index 2049261d8c315430d35fdebbb0c066d7d1eeda56..7dce043a6e29b2f88bbdb4d2e75a47b11e654a5a 100644 (file)
@@ -26,6 +26,7 @@ Samsung S5P/EXYNOS SoC series USB PHY
 
 Required properties:
 - compatible : should be one of the listed compatibles:
+       - "samsung,s5pv210-usb2-phy"
        - "samsung,exynos4210-usb2-phy"
        - "samsung,exynos4x12-usb2-phy"
        - "samsung,exynos5250-usb2-phy"
index 03a302267ea4e7522b8ae022292ff9e9c02de6e8..f505f9ec792da53769cdb7a1d3f8560c6003012f 100644 (file)
@@ -744,25 +744,6 @@ config ARCH_S3C64XX
        help
          Samsung S3C64XX series based systems
 
-config ARCH_S5PV210
-       bool "Samsung S5PV210/S5PC110"
-       select ARCH_HAS_HOLES_MEMORYMODEL
-       select ARCH_SPARSEMEM_ENABLE
-       select ATAGS
-       select CLKDEV_LOOKUP
-       select CLKSRC_SAMSUNG_PWM
-       select CPU_V7
-       select GENERIC_CLOCKEVENTS
-       select GPIO_SAMSUNG
-       select HAVE_S3C2410_I2C if I2C
-       select HAVE_S3C2410_WATCHDOG if WATCHDOG
-       select HAVE_S3C_RTC if RTC_CLASS
-       select NEED_MACH_GPIO_H
-       select NEED_MACH_MEMORY_H
-       select SAMSUNG_ATAGS
-       help
-         Samsung S5PV210/S5PC110 series based systems
-
 config ARCH_DAVINCI
        bool "TI DaVinci"
        select ARCH_HAS_HOLES_MEMORYMODEL
@@ -1500,7 +1481,8 @@ config ARM_PSCI
 config ARCH_NR_GPIO
        int
        default 1024 if ARCH_SHMOBILE || ARCH_TEGRA
-       default 512 if ARCH_EXYNOS || ARCH_KEYSTONE || SOC_OMAP5 || SOC_DRA7XX || ARCH_S3C24XX || ARCH_S3C64XX
+       default 512 if ARCH_EXYNOS || ARCH_KEYSTONE || SOC_OMAP5 || \
+               SOC_DRA7XX || ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210
        default 416 if ARCH_SUNXI
        default 392 if ARCH_U8500
        default 352 if ARCH_VT8500
index 9cce733ba24182a1cb92d028186e4d90de58bec2..640770c7b6d2e71e399ba44cbf110afa0b9bf75f 100644 (file)
@@ -617,6 +617,7 @@ choice
                depends on PLAT_SAMSUNG
                select DEBUG_EXYNOS_UART if ARCH_EXYNOS
                select DEBUG_S3C24XX_UART if ARCH_S3C24XX
+               select DEBUG_S5PV210_UART if ARCH_S5PV210
                bool "Use Samsung S3C UART 0 for low-level debug"
                help
                  Say Y here if you want the debug print routines to direct
@@ -627,6 +628,7 @@ choice
                depends on PLAT_SAMSUNG
                select DEBUG_EXYNOS_UART if ARCH_EXYNOS
                select DEBUG_S3C24XX_UART if ARCH_S3C24XX
+               select DEBUG_S5PV210_UART if ARCH_S5PV210
                bool "Use Samsung S3C UART 1 for low-level debug"
                help
                  Say Y here if you want the debug print routines to direct
@@ -637,6 +639,7 @@ choice
                depends on PLAT_SAMSUNG
                select DEBUG_EXYNOS_UART if ARCH_EXYNOS
                select DEBUG_S3C24XX_UART if ARCH_S3C24XX
+               select DEBUG_S5PV210_UART if ARCH_S5PV210
                bool "Use Samsung S3C UART 2 for low-level debug"
                help
                  Say Y here if you want the debug print routines to direct
@@ -644,8 +647,9 @@ choice
                  by the boot-loader before use.
 
        config DEBUG_S3C_UART3
-               depends on PLAT_SAMSUNG && ARCH_EXYNOS
-               select DEBUG_EXYNOS_UART
+               depends on PLAT_SAMSUNG && (ARCH_EXYNOS || ARCH_S5PV210)
+               select DEBUG_EXYNOS_UART if ARCH_EXYNOS
+               select DEBUG_S5PV210_UART if ARCH_S5PV210
                bool "Use Samsung S3C UART 3 for low-level debug"
                help
                  Say Y here if you want the debug print routines to direct
@@ -945,6 +949,9 @@ config DEBUG_S3C2410_UART
 config DEBUG_S3C24XX_UART
        bool
 
+config DEBUG_S5PV210_UART
+       bool
+
 config DEBUG_OMAP2PLUS_UART
        bool
        depends on ARCH_OMAP2PLUS
@@ -1005,6 +1012,7 @@ config DEBUG_LL_INCLUDE
        default "debug/msm.S" if DEBUG_MSM_UART || DEBUG_QCOM_UARTDM
        default "debug/omap2plus.S" if DEBUG_OMAP2PLUS_UART
        default "debug/s3c24xx.S" if DEBUG_S3C24XX_UART
+       default "debug/s5pv210.S" if DEBUG_S5PV210_UART
        default "debug/sirf.S" if DEBUG_SIRFPRIMA2_UART1 || DEBUG_SIRFMARCO_UART1
        default "debug/sti.S" if DEBUG_STI_UART
        default "debug/tegra.S" if DEBUG_TEGRA_UART
index c3a032405e3a167a66e31ae358895b8e9bda7718..a1e21e81b7aa4e688d949b70d6fa42e65fa1d728 100644 (file)
@@ -210,11 +210,11 @@ machine-$(CONFIG_PLAT_SPEAR)              += spear
 plat-$(CONFIG_ARCH_EXYNOS)     += samsung
 plat-$(CONFIG_ARCH_OMAP)       += omap
 plat-$(CONFIG_ARCH_S3C64XX)    += samsung
+plat-$(CONFIG_ARCH_S5PV210)    += samsung
 plat-$(CONFIG_PLAT_IOP)                += iop
 plat-$(CONFIG_PLAT_ORION)      += orion
 plat-$(CONFIG_PLAT_PXA)                += pxa
 plat-$(CONFIG_PLAT_S3C24XX)    += samsung
-plat-$(CONFIG_PLAT_S5P)                += samsung
 plat-$(CONFIG_PLAT_VERSATILE)  += versatile
 
 ifeq ($(CONFIG_ARCH_EBSA110),y)
@@ -238,7 +238,7 @@ MACHINE  :=
 endif
 
 machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y))
-platdirs := $(patsubst %,arch/arm/plat-%/,$(plat-y))
+platdirs := $(patsubst %,arch/arm/plat-%/,$(sort $(plat-y)))
 
 ifneq ($(CONFIG_ARCH_MULTIPLATFORM),y)
 ifeq ($(KBUILD_SRC),)
index 67c59dc2d23adf46af3f7b8a07d6f4a63833ef93..3c08b79e825dada6b054e65a777a72f587f54d21 100644 (file)
@@ -318,6 +318,11 @@ dtb-$(CONFIG_ARCH_QCOM) += \
 dtb-$(CONFIG_ARCH_S3C24XX) += s3c2416-smdk2416.dtb
 dtb-$(CONFIG_ARCH_S3C64XX) += s3c6410-mini6410.dtb \
        s3c6410-smdk6410.dtb
+dtb-$(CONFIG_ARCH_S5PV210) += s5pv210-aquila.dtb \
+       s5pv210-goni.dtb \
+       s5pv210-smdkc110.dtb \
+       s5pv210-smdkv210.dtb \
+       s5pv210-torbreck.dtb
 dtb-$(CONFIG_ARCH_SHMOBILE_LEGACY) += r7s72100-genmai.dtb \
        r8a7740-armadillo800eva.dtb \
        r8a7778-bockw.dtb \
diff --git a/arch/arm/boot/dts/s5pv210-aquila.dts b/arch/arm/boot/dts/s5pv210-aquila.dts
new file mode 100644 (file)
index 0000000..aa31b84
--- /dev/null
@@ -0,0 +1,392 @@
+/*
+ * Samsung's S5PV210 SoC device tree source
+ *
+ * Copyright (c) 2013-2014 Samsung Electronics, Co. Ltd.
+ *
+ * Mateusz Krawczuk <m.krawczuk@partner.samsung.com>
+ * Tomasz Figa <t.figa@samsung.com>
+ *
+ * Board device tree source for Samsung Aquila board.
+ *
+ * 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.
+ */
+
+/dts-v1/;
+#include <dt-bindings/input/input.h>
+#include "s5pv210.dtsi"
+
+/ {
+       model = "Samsung Aquila based on S5PC110";
+       compatible = "samsung,aquila", "samsung,s5pv210";
+
+       aliases {
+               i2c3 = &i2c_pmic;
+       };
+
+       chosen {
+               bootargs = "console=ttySAC2,115200n8 root=/dev/mmcblk1p5 rw rootwait ignore_loglevel earlyprintk";
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x30000000 0x05000000
+                       0x40000000 0x18000000>;
+       };
+
+       regulators {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               vtf_reg: fixed-regulator@0 {
+                       compatible = "regulator-fixed";
+                       reg = <0>;
+                       regulator-name = "V_TF_2.8V";
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+                       gpios = <&mp05 4 0>;
+                       enable-active-high;
+               };
+
+               pda_reg: fixed-regulator@1 {
+                       compatible = "regulator-fixed";
+                       regulator-name = "VCC_1.8V_PDA";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       reg = <1>;
+               };
+
+               bat_reg: fixed-regulator@2 {
+                       compatible = "regulator-fixed";
+                       regulator-name = "V_BAT";
+                       regulator-min-microvolt = <3700000>;
+                       regulator-max-microvolt = <3700000>;
+                       reg = <2>;
+               };
+       };
+
+       i2c_pmic: i2c-pmic {
+               compatible = "i2c-gpio";
+               gpios = <&gpj4 0 0>, /* sda */
+                       <&gpj4 3 0>; /* scl */
+               i2c-gpio,delay-us = <2>;        /* ~100 kHz */
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pmic@66 {
+                       compatible = "national,lp3974";
+                       reg = <0x66>;
+
+                       max8998,pmic-buck1-default-dvs-idx = <0>;
+                       max8998,pmic-buck1-dvs-gpios = <&gph0 3 0>,
+                                                       <&gph0 4 0>;
+                       max8998,pmic-buck1-dvs-voltage = <1200000>, <1200000>,
+                                                       <1200000>, <1200000>;
+
+                       max8998,pmic-buck2-default-dvs-idx = <0>;
+                       max8998,pmic-buck2-dvs-gpio = <&gph0 5 0>;
+                       max8998,pmic-buck2-dvs-voltage = <1200000>, <1200000>;
+
+                       regulators {
+                               ldo2_reg: LDO2 {
+                                       regulator-name = "VALIVE_1.1V";
+                                       regulator-min-microvolt = <1100000>;
+                                       regulator-max-microvolt = <1100000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo3_reg: LDO3 {
+                                       regulator-name = "VUSB+MIPI_1.1V";
+                                       regulator-min-microvolt = <1100000>;
+                                       regulator-max-microvolt = <1100000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo4_reg: LDO4 {
+                                       regulator-name = "VADC_3.3V";
+                                       regulator-min-microvolt = <3300000>;
+                                       regulator-max-microvolt = <3300000>;
+                               };
+
+                               ldo5_reg: LDO5 {
+                                       regulator-name = "VTF_2.8V";
+                                       regulator-min-microvolt = <2800000>;
+                                       regulator-max-microvolt = <2800000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo6_reg: LDO6 {
+                                       regulator-name = "VCC_3.3V";
+                                       regulator-min-microvolt = <3300000>;
+                                       regulator-max-microvolt = <3300000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo7_reg: LDO7 {
+                                       regulator-name = "VCC_3.0V";
+                                       regulator-min-microvolt = <3000000>;
+                                       regulator-max-microvolt = <3000000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                               };
+
+                               ldo8_reg: LDO8 {
+                                       regulator-name = "VUSB+VDAC_3.3V";
+                                       regulator-min-microvolt = <3300000>;
+                                       regulator-max-microvolt = <3300000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo9_reg: LDO9 {
+                                       regulator-name = "VCC+VCAM_2.8V";
+                                       regulator-min-microvolt = <2800000>;
+                                       regulator-max-microvolt = <2800000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo10_reg: LDO10 {
+                                       regulator-name = "VPLL_1.1V";
+                                       regulator-min-microvolt = <1100000>;
+                                       regulator-max-microvolt = <1100000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                               };
+
+                               ldo11_reg: LDO11 {
+                                       regulator-name = "CAM_IO_2.8V";
+                                       regulator-min-microvolt = <2800000>;
+                                       regulator-max-microvolt = <2800000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo12_reg: LDO12 {
+                                       regulator-name = "CAM_ISP_1.2V";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo13_reg: LDO13 {
+                                       regulator-name = "CAM_A_2.8V";
+                                       regulator-min-microvolt = <2800000>;
+                                       regulator-max-microvolt = <2800000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo14_reg: LDO14 {
+                                       regulator-name = "CAM_CIF_1.8V";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo15_reg: LDO15 {
+                                       regulator-name = "CAM_AF_3.3V";
+                                       regulator-min-microvolt = <3300000>;
+                                       regulator-max-microvolt = <3300000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo16_reg: LDO16 {
+                                       regulator-name = "VMIPI_1.8V";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo17_reg: LDO17 {
+                                       regulator-name = "CAM_8M_1.8V";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       regulator-always-on;
+                               };
+
+                               buck1_reg: BUCK1 {
+                                       regulator-name = "VARM_1.2V";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-always-on;
+                               };
+
+                               buck2_reg: BUCK2 {
+                                       regulator-name = "VINT_1.2V";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-always-on;
+                               };
+
+                               buck3_reg: BUCK3 {
+                                       regulator-name = "VCC_1.8V";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       regulator-always-on;
+                               };
+
+                               buck4_reg: BUCK4 {
+                                       regulator-name = "CAM_CORE_1.2V";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-always-on;
+                               };
+
+                               vichg_reg: ENVICHG {
+                                       regulator-name = "VICHG";
+                               };
+
+                               safeout1_reg: ESAFEOUT1 {
+                                       regulator-name = "SAFEOUT1";
+                                       regulator-always-on;
+                               };
+
+                               safeout2_reg: ESAFEOUT2 {
+                                       regulator-name = "SAFEOUT2";
+                                       regulator-boot-on;
+                               };
+                       };
+               };
+
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               power-key {
+                       gpios = <&gph2 6 1>;
+                       linux,code = <KEY_POWER>;
+                       label = "power";
+                       debounce-interval = <1>;
+                       gpio-key,wakeup;
+               };
+       };
+};
+
+&xusbxti {
+       clock-frequency = <24000000>;
+};
+
+&keypad {
+       linux,input-no-autorepeat;
+       linux,input-wakeup;
+       samsung,keypad-num-rows = <3>;
+       samsung,keypad-num-columns = <3>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&keypad_row0>, <&keypad_row1>, <&keypad_row2>,
+                       <&keypad_col0>, <&keypad_col1>, <&keypad_col2>;
+       status = "okay";
+
+       key_1 {
+               keypad,row = <0>;
+               keypad,column = <1>;
+               linux,code = <KEY_CONNECT>;
+       };
+
+       key_2 {
+               keypad,row = <0>;
+               keypad,column = <2>;
+               linux,code = <KEY_BACK>;
+       };
+
+       key_3 {
+               keypad,row = <1>;
+               keypad,column = <1>;
+               linux,code = <KEY_CAMERA_FOCUS>;
+       };
+
+       key_4 {
+               keypad,row = <1>;
+               keypad,column = <2>;
+               linux,code = <KEY_VOLUMEUP>;
+       };
+
+       key_5 {
+               keypad,row = <2>;
+               keypad,column = <1>;
+               linux,code = <KEY_CAMERA>;
+       };
+
+       key_6 {
+               keypad,row = <2>;
+               keypad,column = <2>;
+               linux,code = <KEY_VOLUMEDOWN>;
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+};
+
+&uart3 {
+       status = "okay";
+};
+
+&sdhci0 {
+       bus-width = <4>;
+       non-removable;
+       status = "okay";
+       vmmc-supply = <&ldo5_reg>;
+       pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4>;
+       pinctrl-names = "default";
+};
+
+&sdhci2 {
+       bus-width = <4>;
+       cd-gpios = <&gph3 4 1>;
+       vmmc-supply = <&vtf_reg>;
+       cd-inverted;
+       pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4 &t_flash_detect>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&onenand {
+       status = "okay";
+};
+
+&hsotg {
+       vusb_a-supply = <&ldo3_reg>;
+       vusb_d-supply = <&ldo8_reg>;
+       status = "okay";
+};
+
+&usbphy {
+       status = "okay";
+};
+
+&fimd {
+       pinctrl-0 = <&lcd_clk &lcd_data24 &pwm1_out>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       display-timings {
+               native-mode = <&timing0>;
+               timing0: timing {
+                       clock-frequency = <0>;
+                       hactive = <800>;
+                       vactive = <480>;
+                       hfront-porch = <16>;
+                       hback-porch = <16>;
+                       hsync-len = <2>;
+                       vback-porch = <3>;
+                       vfront-porch = <28>;
+                       vsync-len = <1>;
+               };
+       };
+};
+
+&pinctrl0 {
+       t_flash_detect: t-flash-detect {
+               samsung,pins = "gph3-4";
+               samsung,pin-function = <0>;
+               samsung,pin-pud = <0>;
+       };
+};
diff --git a/arch/arm/boot/dts/s5pv210-goni.dts b/arch/arm/boot/dts/s5pv210-goni.dts
new file mode 100644 (file)
index 0000000..6387c77
--- /dev/null
@@ -0,0 +1,449 @@
+/*
+ * Samsung's S5PV210 SoC device tree source
+ *
+ * Copyright (c) 2013-2014 Samsung Electronics, Co. Ltd.
+ *
+ * Mateusz Krawczuk <m.krawczuk@partner.samsung.com>
+ * Tomasz Figa <t.figa@samsung.com>
+ *
+ * Board device tree source for Samsung Goni board.
+ *
+ * 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.
+ */
+
+/dts-v1/;
+#include <dt-bindings/input/input.h>
+#include "s5pv210.dtsi"
+
+/ {
+       model = "Samsung Goni based on S5PC110";
+       compatible = "samsung,goni", "samsung,s5pv210";
+
+       aliases {
+               i2c3 = &i2c_pmic;
+       };
+
+       chosen {
+               bootargs = "console=ttySAC0,115200n8 root=/dev/mmcblk0p5 rw rootwait ignore_loglevel earlyprintk";
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x30000000 0x05000000
+                       0x40000000 0x10000000
+                       0x50000000 0x08000000>;
+       };
+
+       regulators {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               vtf_reg: fixed-regulator@0 {
+                       compatible = "regulator-fixed";
+                       regulator-name = "V_TF_2.8V";
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+                       reg = <0>;
+                       gpios = <&mp05 4 0>;
+                       enable-active-high;
+               };
+
+               pda_reg: fixed-regulator@1 {
+                       compatible = "regulator-fixed";
+                       regulator-name = "VCC_1.8V_PDA";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       reg = <1>;
+               };
+
+               bat_reg: fixed-regulator@2 {
+                       compatible = "regulator-fixed";
+                       regulator-name = "V_BAT";
+                       regulator-min-microvolt = <3700000>;
+                       regulator-max-microvolt = <3700000>;
+                       reg = <2>;
+               };
+
+               tsp_reg: fixed-regulator@3 {
+                       compatible = "regulator-fixed";
+                       regulator-name = "TSP_VDD";
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+                       reg = <3>;
+                       gpios = <&gpj1 3 0>;
+                       enable-active-high;
+               };
+       };
+
+       i2c_pmic: i2c-pmic {
+               compatible = "i2c-gpio";
+               gpios = <&gpj4 0 0>, /* sda */
+                       <&gpj4 3 0>; /* scl */
+               i2c-gpio,delay-us = <2>;        /* ~100 kHz */
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pmic@66 {
+                       compatible = "national,lp3974";
+                       reg = <0x66>;
+
+                       max8998,pmic-buck1-default-dvs-idx = <0>;
+                       max8998,pmic-buck1-dvs-gpios = <&gph0 3 0>,
+                                                       <&gph0 4 0>;
+                       max8998,pmic-buck1-dvs-voltage = <1200000>, <1200000>,
+                                                       <1200000>, <1200000>;
+
+                       max8998,pmic-buck2-default-dvs-idx = <0>;
+                       max8998,pmic-buck2-dvs-gpio = <&gph0 5 0>;
+                       max8998,pmic-buck2-dvs-voltage = <1200000>, <1200000>;
+
+                       regulators {
+                               ldo2_reg: LDO2 {
+                                       regulator-name = "VALIVE_1.1V";
+                                       regulator-min-microvolt = <1100000>;
+                                       regulator-max-microvolt = <1100000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo3_reg: LDO3 {
+                                       regulator-name = "VUSB+MIPI_1.1V";
+                                       regulator-min-microvolt = <1100000>;
+                                       regulator-max-microvolt = <1100000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo4_reg: LDO4 {
+                                       regulator-name = "VADC_3.3V";
+                                       regulator-min-microvolt = <3300000>;
+                                       regulator-max-microvolt = <3300000>;
+                               };
+
+                               ldo5_reg: LDO5 {
+                                       regulator-name = "VTF_2.8V";
+                                       regulator-min-microvolt = <2800000>;
+                                       regulator-max-microvolt = <2800000>;
+                               };
+
+                               ldo6_reg: LDO6 {
+                                       regulator-name = "VCC_3.3V";
+                                       regulator-min-microvolt = <3300000>;
+                                       regulator-max-microvolt = <3300000>;
+                               };
+
+                               ldo7_reg: LDO7 {
+                                       regulator-name = "VLCD_1.8V";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       regulator-always-on;
+                               };
+
+                               ldo8_reg: LDO8 {
+                                       regulator-name = "VUSB+VDAC_3.3V";
+                                       regulator-min-microvolt = <3300000>;
+                                       regulator-max-microvolt = <3300000>;
+                               };
+
+                               ldo9_reg: LDO9 {
+                                       regulator-name = "VCC+VCAM_2.8V";
+                                       regulator-min-microvolt = <2800000>;
+                                       regulator-max-microvolt = <2800000>;
+                               };
+
+                               ldo10_reg: LDO10 {
+                                       regulator-name = "VPLL_1.1V";
+                                       regulator-min-microvolt = <1100000>;
+                                       regulator-max-microvolt = <1100000>;
+                                       regulator-boot-on;
+                               };
+
+                               ldo11_reg: LDO11 {
+                                       regulator-name = "CAM_IO_2.8V";
+                                       regulator-min-microvolt = <2800000>;
+                                       regulator-max-microvolt = <2800000>;
+                               };
+
+                               ldo12_reg: LDO12 {
+                                       regulator-name = "CAM_ISP_1.2V";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                               };
+
+                               ldo13_reg: LDO13 {
+                                       regulator-name = "CAM_A_2.8V";
+                                       regulator-min-microvolt = <2800000>;
+                                       regulator-max-microvolt = <2800000>;
+                               };
+
+                               ldo14_reg: LDO14 {
+                                       regulator-name = "CAM_CIF_1.8V";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                               };
+
+                               ldo15_reg: LDO15 {
+                                       regulator-name = "CAM_AF_3.3V";
+                                       regulator-min-microvolt = <3300000>;
+                                       regulator-max-microvolt = <3300000>;
+                               };
+
+                               ldo16_reg: LDO16 {
+                                       regulator-name = "VMIPI_1.8V";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                               };
+
+                               ldo17_reg: LDO17 {
+                                       regulator-name = "CAM_8M_1.8V";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       regulator-always-on;
+                               };
+
+                               buck1_reg: BUCK1 {
+                                       regulator-name = "VARM_1.2V";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                               };
+
+                               buck2_reg: BUCK2 {
+                                       regulator-name = "VINT_1.2V";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                               };
+
+                               buck3_reg: BUCK3 {
+                                       regulator-name = "VCC_1.8V";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       regulator-always-on;
+                               };
+
+                               buck4_reg: BUCK4 {
+                                       regulator-name = "CAM_CORE_1.2V";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       regulator-always-on;
+                               };
+                       };
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               power-key {
+                       gpios = <&gph2 6 1>;
+                       linux,code = <KEY_POWER>;
+                       label = "power";
+                       debounce-interval = <1>;
+                       gpio-key,wakeup;
+               };
+       };
+};
+
+&xusbxti {
+       clock-frequency = <24000000>;
+};
+
+&keypad {
+       linux,input-no-autorepeat;
+       linux,input-wakeup;
+       samsung,keypad-num-rows = <3>;
+       samsung,keypad-num-columns = <3>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&keypad_row0>, <&keypad_row1>, <&keypad_row2>,
+                       <&keypad_col0>, <&keypad_col1>, <&keypad_col2>;
+       status = "okay";
+
+       key_1 {
+               keypad,row = <0>;
+               keypad,column = <1>;
+               linux,code = <KEY_CONNECT>;
+       };
+
+       key_2 {
+               keypad,row = <0>;
+               keypad,column = <2>;
+               linux,code = <KEY_BACK>;
+       };
+
+       key_3 {
+               keypad,row = <1>;
+               keypad,column = <1>;
+               linux,code = <KEY_CAMERA_FOCUS>;
+       };
+
+       key_4 {
+               keypad,row = <1>;
+               keypad,column = <2>;
+               linux,code = <KEY_VOLUMEUP>;
+       };
+
+       key_5 {
+               keypad,row = <2>;
+               keypad,column = <1>;
+               linux,code = <KEY_CAMERA>;
+       };
+
+       key_6 {
+               keypad,row = <2>;
+               keypad,column = <2>;
+               linux,code = <KEY_VOLUMEDOWN>;
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+};
+
+&uart3 {
+       status = "okay";
+};
+
+&sdhci0 {
+       bus-width = <4>;
+       non-removable;
+       vmmc-supply = <&ldo5_reg>;
+       pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_cd &sd0_bus1 &sd0_bus4>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&sdhci2 {
+       bus-width = <4>;
+       cd-gpios = <&gph3 4 1>;
+       vmmc-supply = <&vtf_reg>;
+       cd-inverted;
+       pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&hsotg {
+       vusb_a-supply = <&ldo3_reg>;
+       vusb_d-supply = <&ldo8_reg>;
+       status = "okay";
+};
+
+&usbphy {
+       status = "okay";
+};
+
+&i2c2 {
+       samsung,i2c-sda-delay = <100>;
+       samsung,i2c-max-bus-freq = <400000>;
+       samsung,i2c-slave-addr = <0x10>;
+       status = "okay";
+
+       tsp@4a {
+               compatible = "atmel,maxtouch";
+               reg = <0x4a>;
+               interrupt-parent = <&gpj0>;
+               interrupts = <5 2>;
+
+               atmel,x-line = <17>;
+               atmel,y-line = <11>;
+               atmel,x-size = <800>;
+               atmel,y-size = <480>;
+               atmel,burst-length = <0x21>;
+               atmel,threshold = <0x28>;
+               atmel,orientation = <1>;
+
+               vdd-supply = <&tsp_reg>;
+       };
+};
+
+&i2c0 {
+       samsung,i2c-sda-delay = <100>;
+       samsung,i2c-max-bus-freq = <100000>;
+       samsung,i2c-slave-addr = <0x10>;
+       status = "okay";
+
+       noon010pc30: sensor@30 {
+               compatible = "siliconfile,noon010pc30";
+               reg = <0x30>;
+               vddio-supply = <&ldo11_reg>;
+               vdda-supply = <&ldo13_reg>;
+               vdd_core-supply = <&ldo14_reg>;
+
+               clock-frequency = <16000000>;
+               clocks = <&clock_cam 0>;
+               clock-names = "mclk";
+               nreset-gpios = <&gpb 2 0>;
+               nstby-gpios = <&gpb 0 0>;
+
+               port {
+                       noon010pc30_ep: endpoint {
+                               remote-endpoint = <&fimc0_ep>;
+                               bus-width = <8>;
+                               hsync-active = <0>;
+                               vsync-active = <1>;
+                               pclk-sample = <1>;
+                       };
+               };
+       };
+};
+
+&camera {
+       pinctrl-0 = <&cam_port_a_io &cam_port_a_clk_active>;
+       pinctrl-1 = <&cam_port_a_io &cam_port_a_clk_idle>;
+       pinctrl-names = "default", "idle";
+
+       parallel-ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               /* camera A input */
+               port@1 {
+                       reg = <1>;
+                       fimc0_ep: endpoint {
+                               remote-endpoint = <&noon010pc30_ep>;
+                               bus-width = <8>;
+                               hsync-active = <1>;
+                               vsync-active = <1>;
+                               pclk-sample = <0>;
+                       };
+               };
+       };
+};
+
+&fimd {
+       pinctrl-0 = <&lcd_clk &lcd_data24>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       display-timings {
+               native-mode = <&timing0>;
+               timing0: timing {
+                       /* 480x800@55Hz */
+                       clock-frequency = <23439570>;
+                       hactive = <480>;
+                       hfront-porch = <16>;
+                       hback-porch = <16>;
+                       hsync-len = <2>;
+                       vactive = <800>;
+                       vback-porch = <2>;
+                       vfront-porch = <28>;
+                       vsync-len = <1>;
+                       hsync-active = <0>;
+                       vsync-active = <0>;
+                       de-active = <0>;
+                       pixelclk-active = <0>;
+               };
+       };
+};
+
+&onenand {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/s5pv210-pinctrl.dtsi b/arch/arm/boot/dts/s5pv210-pinctrl.dtsi
new file mode 100644 (file)
index 0000000..8c71408
--- /dev/null
@@ -0,0 +1,839 @@
+/*
+ * Samsung's S5PV210 SoC device tree source
+ *
+ * Copyright (c) 2013-2014 Samsung Electronics, Co. Ltd.
+ *
+ * Mateusz Krawczuk <m.krawczuk@partner.samsung.com>
+ * Tomasz Figa <t.figa@samsung.com>
+ *
+ * Samsung's S5PV210 SoC device nodes are listed in this file. S5PV210
+ * based board files can include this file and provide values for board specfic
+ * bindings.
+ *
+ * Note: This file does not include device nodes for all the controllers in
+ * S5PV210 SoC. As device tree coverage for S5PV210 increases, additional
+ * nodes can be added to this file.
+ *
+ * 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.
+ */
+
+&pinctrl0 {
+       gpa0: gpa0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpa1: gpa1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb: gpb {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc0: gpc0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc1: gpc1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpd0: gpd0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpd1: gpd1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpe0: gpe0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpe1: gpe1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf0: gpf0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf1: gpf1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf2: gpf2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf3: gpf3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg0: gpg0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg1: gpg1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg2: gpg2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg3: gpg3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpj0: gpj0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpj1: gpj1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpj2: gpj2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpj3: gpj3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpj4: gpj4 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpgi: gpgi {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       mp01: mp01 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       mp02: mp02 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       mp03: mp03 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       mp04: mp04 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       mp05: mp05 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       mp06: mp06 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       mp07: mp07 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gph0: gph0 {
+               gpio-controller;
+               interrupt-controller;
+               interrupt-parent = <&vic0>;
+               interrupts = <0>, <1>, <2>, <3>,
+                               <4>, <5>, <6>, <7>;
+               #gpio-cells = <2>;
+               #interrupt-cells = <2>;
+       };
+
+       gph1: gph1 {
+               gpio-controller;
+               interrupt-controller;
+               interrupt-parent = <&vic0>;
+               interrupts = <8>, <9>, <10>, <11>,
+                               <12>, <13>, <14>, <15>;
+               #gpio-cells = <2>;
+               #interrupt-cells = <2>;
+       };
+
+       gph2: gph2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+               #interrupt-cells = <2>;
+       };
+
+       gph3: gph3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+               #interrupt-cells = <2>;
+       };
+
+       uart0_data: uart0-data {
+               samsung,pins = "gpa0-0", "gpa0-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart0_fctl: uart0-fctl {
+               samsung,pins = "gpa0-2", "gpa0-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart1_data: uart1-data {
+               samsung,pins = "gpa0-4", "gpa0-5";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart1_fctl: uart1-fctl {
+               samsung,pins = "gpa0-6", "gpa0-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart2_data: uart2-data {
+               samsung,pins = "gpa1-0", "gpa1-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart2_fctl: uart2-fctl {
+               samsung,pins = "gpa1-2", "gpa1-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart3_data: uart3-data {
+               samsung,pins = "gpa1-2", "gpa1-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart_audio: uart-audio {
+               samsung,pins = "gpa1-2", "gpa1-3";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       spi0_bus: spi0-bus {
+               samsung,pins = "gpb-0", "gpb-2", "gpb-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <0>;
+       };
+
+       spi1_bus: spi1-bus {
+               samsung,pins = "gpb-4", "gpb-6", "gpb-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2s0_bus: i2s0-bus {
+               samsung,pins = "gpi-0", "gpi-1", "gpi-2", "gpi-3",
+                               "gpi-4", "gpi-5", "gpi-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2s1_bus: i2s1-bus {
+               samsung,pins = "gpc0-0", "gpc0-1", "gpc0-2", "gpc0-3",
+                               "gpc0-4";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2s2_bus: i2s2-bus {
+               samsung,pins = "gpc1-0", "gpc1-1", "gpc1-2", "gpc1-3",
+                               "gpc1-4";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pcm1_bus: pcm1-bus {
+               samsung,pins = "gpc0-0", "gpc0-1", "gpc0-2", "gpc0-3",
+                               "gpc0-4";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       ac97_bus: ac97-bus {
+               samsung,pins = "gpc0-0", "gpc0-1", "gpc0-2", "gpc0-3",
+                               "gpc0-4";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2s2_bus: i2s2-bus {
+               samsung,pins = "gpc1-0", "gpc1-1", "gpc1-2", "gpc1-3",
+                               "gpc1-4";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pcm2_bus: pcm2-bus {
+               samsung,pins = "gpc1-0", "gpc1-1", "gpc1-2", "gpc1-3",
+                               "gpc1-4";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       spdif_bus: spdif-bus {
+               samsung,pins = "gpc1-0", "gpc1-1";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       spi2_bus: spi2-bus {
+               samsung,pins = "gpc1-1", "gpc1-2", "gpc1-3", "gpc1-4";
+               samsung,pin-function = <5>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c0_bus: i2c0-bus {
+               samsung,pins = "gpd1-0", "gpd1-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c1_bus: i2c1-bus {
+               samsung,pins = "gpd1-2", "gpd1-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c2_bus: i2c2-bus {
+               samsung,pins = "gpd1-4", "gpd1-5";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm0_out: pwm0-out {
+               samsung,pins = "gpd0-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm1_out: pwm1-out {
+               samsung,pins = "gpd0-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm2_out: pwm2-out {
+               samsung,pins = "gpd0-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm3_out: pwm3-out {
+               samsung,pins = "gpd0-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       keypad_row0: keypad-row-0 {
+               samsung,pins = "gph3-0";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       keypad_row1: keypad-row-1 {
+               samsung,pins = "gph3-1";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       keypad_row2: keypad-row-2 {
+               samsung,pins = "gph3-2";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       keypad_row3: keypad-row-3 {
+               samsung,pins = "gph3-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       keypad_row4: keypad-row-4 {
+               samsung,pins = "gph3-4";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       keypad_row5: keypad-row-5 {
+               samsung,pins = "gph3-5";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       keypad_row6: keypad-row-6 {
+               samsung,pins = "gph3-6";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       keypad_row7: keypad-row-7 {
+               samsung,pins = "gph3-7";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       keypad_col0: keypad-col-0 {
+               samsung,pins = "gph2-0";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       keypad_col1: keypad-col-1 {
+               samsung,pins = "gph2-1";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       keypad_col2: keypad-col-2 {
+               samsung,pins = "gph2-2";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       keypad_col3: keypad-col-3 {
+               samsung,pins = "gph2-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       keypad_col4: keypad-col-4 {
+               samsung,pins = "gph2-4";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       keypad_col5: keypad-col-5 {
+               samsung,pins = "gph2-5";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       keypad_col6: keypad-col-6 {
+               samsung,pins = "gph2-6";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       keypad_col7: keypad-col-7 {
+               samsung,pins = "gph2-7";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       sd0_clk: sd0-clk {
+               samsung,pins = "gpg0-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_cmd: sd0-cmd {
+               samsung,pins = "gpg0-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_cd: sd0-cd {
+               samsung,pins = "gpg0-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_bus1: sd0-bus-width1 {
+               samsung,pins = "gpg0-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_bus4: sd0-bus-width4 {
+               samsung,pins = "gpg0-3", "gpg0-4", "gpg0-5", "gpg0-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_bus8: sd0-bus-width8 {
+               samsung,pins = "gpg1-3", "gpg1-4", "gpg1-5", "gpg1-6";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_clk: sd1-clk {
+               samsung,pins = "gpg1-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_cmd: sd1-cmd {
+               samsung,pins = "gpg1-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_cd: sd1-cd {
+               samsung,pins = "gpg1-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_bus1: sd1-bus-width1 {
+               samsung,pins = "gpg1-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_bus4: sd1-bus-width4 {
+               samsung,pins = "gpg1-3", "gpg1-4", "gpg1-5", "gpg1-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_clk: sd2-clk {
+               samsung,pins = "gpg2-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_cmd: sd2-cmd {
+               samsung,pins = "gpg2-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_cd: sd2-cd {
+               samsung,pins = "gpg2-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_bus1: sd2-bus-width1 {
+               samsung,pins = "gpg2-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_bus4: sd2-bus-width4 {
+               samsung,pins = "gpg2-3", "gpg2-4", "gpg2-5", "gpg2-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_bus8: sd2-bus-width8 {
+               samsung,pins = "gpg3-3", "gpg3-4", "gpg3-5", "gpg3-6";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd3_clk: sd3-clk {
+               samsung,pins = "gpg3-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd3_cmd: sd3-cmd {
+               samsung,pins = "gpg3-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd3_cd: sd3-cd {
+               samsung,pins = "gpg3-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd3_bus1: sd3-bus-width1 {
+               samsung,pins = "gpg3-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd3_bus4: sd3-bus-width4 {
+               samsung,pins = "gpg3-3", "gpg3-4", "gpg3-5", "gpg3-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <2>;
+               samsung,pin-drv = <3>;
+       };
+
+       eint0: ext-int0 {
+               samsung,pins = "gph0-0";
+               samsung,pin-function = <0xf>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       eint8: ext-int8 {
+               samsung,pins = "gph1-0";
+               samsung,pin-function = <0xf>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       eint15: ext-int15 {
+               samsung,pins = "gph1-7";
+               samsung,pin-function = <0xf>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       eint16: ext-int16 {
+               samsung,pins = "gph2-0";
+               samsung,pin-function = <0xf>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       eint31: ext-int31 {
+               samsung,pins = "gph3-7";
+               samsung,pin-function = <0xf>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_port_a_io: cam-port-a-io {
+               samsung,pins = "gpe0-0", "gpe0-1", "gpe0-2", "gpe0-3",
+                               "gpe0-4", "gpe0-5", "gpe0-6", "gpe0-7",
+                               "gpe1-0", "gpe1-1", "gpe1-2", "gpe1-4";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_port_a_clk_active: cam-port-a-clk-active {
+               samsung,pins = "gpe1-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       cam_port_a_clk_idle: cam-port-a-clk-idle {
+               samsung,pins = "gpe1-3";
+               samsung,pin-function = <0>;
+               samsung,pin-pud = <1>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_port_b_io: cam-port-b-io {
+               samsung,pins = "gpj0-0", "gpj0-1", "gpj0-2", "gpj0-3",
+                               "gpj0-4", "gpj0-5", "gpj0-6", "gpj0-7",
+                               "gpj1-0", "gpj1-1", "gpj1-2", "gpj1-4";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_port_b_clk_active: cam-port-b-clk-active {
+               samsung,pins = "gpj1-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       cam_port_b_clk_idle: cam-port-b-clk-idle {
+               samsung,pins = "gpj1-3";
+               samsung,pin-function = <0>;
+               samsung,pin-pud = <1>;
+               samsung,pin-drv = <0>;
+       };
+
+               lcd_ctrl: lcd-ctrl {
+               samsung,pins = "gpd0-0", "gpd0-1";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       lcd_sync: lcd-sync {
+               samsung,pins = "gpf0-0", "gpf0-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       lcd_clk: lcd-clk {
+               samsung,pins = "gpf0-0", "gpf0-1", "gpf0-2", "gpf0-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       lcd_data24: lcd-data-width24 {
+               samsung,pins =  "gpf0-4", "gpf0-5", "gpf0-6", "gpf0-7",
+                               "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3",
+                               "gpf1-4", "gpf1-5", "gpf1-6", "gpf1-7",
+                               "gpf2-0", "gpf2-1", "gpf2-2", "gpf2-3",
+                               "gpf2-4", "gpf2-5", "gpf2-6", "gpf2-7",
+                               "gpf3-0", "gpf3-1", "gpf3-2", "gpf3-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+};
diff --git a/arch/arm/boot/dts/s5pv210-smdkc110.dts b/arch/arm/boot/dts/s5pv210-smdkc110.dts
new file mode 100644 (file)
index 0000000..1eedab7
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Samsung's S5PV210 SoC device tree source
+ *
+ * Copyright (c) 2013-2014 Samsung Electronics, Co. Ltd.
+ *
+ * Mateusz Krawczuk <m.krawczuk@partner.samsung.com>
+ * Tomasz Figa <t.figa@samsung.com>
+ *
+ * Board device tree source for YIC System SMDC110 board.
+ *
+ * NOTE: This file is completely based on original board file for mach-smdkc110
+ * available in Linux 3.15 and intends to provide equivalent level of hardware
+ * support. Due to lack of hardware, _no_ testing has been performed.
+ *
+ * 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.
+ */
+
+/dts-v1/;
+#include <dt-bindings/input/input.h>
+#include "s5pv210.dtsi"
+
+/ {
+       model = "YIC System SMDKC110 based on S5PC110";
+       compatible = "yic,smdkc110", "samsung,s5pv210";
+
+       chosen {
+               bootargs = "console=ttySAC0,115200n8 root=/dev/mmcblk0p1 rw rootwait ignore_loglevel earlyprintk";
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x20000000 0x20000000>;
+       };
+};
+
+&xusbxti {
+       clock-frequency = <24000000>;
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+};
+
+&uart3 {
+       status = "okay";
+};
+
+&rtc {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+
+       audio-codec@1b {
+               compatible = "wlf,wm8580";
+               reg = <0x1b>;
+       };
+
+       eeprom@50 {
+               compatible = "atmel,24c08";
+               reg = <0x50>;
+       };
+};
+
+&i2s0 {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/s5pv210-smdkv210.dts b/arch/arm/boot/dts/s5pv210-smdkv210.dts
new file mode 100644 (file)
index 0000000..cb85218
--- /dev/null
@@ -0,0 +1,238 @@
+/*
+ * Samsung's S5PV210 SoC device tree source
+ *
+ * Copyright (c) 2013-2014 Samsung Electronics, Co. Ltd.
+ *
+ * Mateusz Krawczuk <m.krawczuk@partner.samsung.com>
+ * Tomasz Figa <t.figa@samsung.com>
+ *
+ * Board device tree source for YIC System SMDV210 board.
+ *
+ * NOTE: This file is completely based on original board file for mach-smdkv210
+ * available in Linux 3.15 and intends to provide equivalent level of hardware
+ * support. Due to lack of hardware, _no_ testing has been performed.
+ *
+ * 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.
+ */
+
+/dts-v1/;
+#include <dt-bindings/input/input.h>
+#include "s5pv210.dtsi"
+
+/ {
+       model = "YIC System SMDKV210 based on S5PV210";
+       compatible = "yic,smdkv210", "samsung,s5pv210";
+
+       chosen {
+               bootargs = "console=ttySAC0,115200n8 root=/dev/mmcblk0p1 rw rootwait ignore_loglevel earlyprintk";
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x20000000 0x40000000>;
+       };
+
+       ethernet@18000000 {
+               compatible = "davicom,dm9000";
+               reg = <0xA8000000 0x2 0xA8000002 0x2>;
+               interrupt-parent = <&gph1>;
+               interrupts = <1 4>;
+               local-mac-address = [00 00 de ad be ef];
+               davicom,no-eeprom;
+       };
+
+       backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm 3 5000000 0>;
+               brightness-levels = <0 4 8 16 32 64 128 255>;
+               default-brightness-level = <6>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwm3_out>;
+       };
+};
+
+&xusbxti {
+       clock-frequency = <24000000>;
+};
+
+&keypad {
+       linux,input-no-autorepeat;
+       linux,input-wakeup;
+       samsung,keypad-num-rows = <8>;
+       samsung,keypad-num-columns = <8>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&keypad_row0>, <&keypad_row1>, <&keypad_row2>,
+                       <&keypad_row3>, <&keypad_row4>, <&keypad_row5>,
+                       <&keypad_row6>, <&keypad_row7>,
+                       <&keypad_col0>, <&keypad_col1>, <&keypad_col2>,
+                       <&keypad_col3>, <&keypad_col4>, <&keypad_col5>,
+                       <&keypad_col6>, <&keypad_col7>;
+       status = "okay";
+
+       key_1 {
+               keypad,row = <0>;
+               keypad,column = <3>;
+               linux,code = <KEY_1>;
+       };
+
+       key_2 {
+               keypad,row = <0>;
+               keypad,column = <4>;
+               linux,code = <KEY_2>;
+       };
+
+       key_3 {
+               keypad,row = <0>;
+               keypad,column = <5>;
+               linux,code = <KEY_3>;
+       };
+
+       key_4 {
+               keypad,row = <0>;
+               keypad,column = <6>;
+               linux,code = <KEY_4>;
+       };
+
+       key_5 {
+               keypad,row = <0
+               >;
+               keypad,column = <7>;
+               linux,code = <KEY_5>;
+       };
+
+       key_6 {
+               keypad,row = <1>;
+               keypad,column = <3>;
+               linux,code = <KEY_A>;
+       };
+       key_7 {
+               keypad,row = <1>;
+               keypad,column = <4>;
+               linux,code = <KEY_B>;
+       };
+
+       key_8 {
+               keypad,row = <1>;
+               keypad,column = <5>;
+               linux,code = <KEY_C>;
+       };
+
+       key_9 {
+               keypad,row = <1>;
+               keypad,column = <6>;
+               linux,code = <KEY_D>;
+       };
+
+       key_10 {
+               keypad,row = <1>;
+               keypad,column = <7>;
+               linux,code = <KEY_E>;
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+};
+
+&uart3 {
+       status = "okay";
+};
+
+&rtc {
+       status = "okay";
+};
+
+&sdhci0 {
+       bus-width = <4>;
+       pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_cd &sd0_bus1 &sd0_bus4>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&sdhci1 {
+       bus-width = <4>;
+       pinctrl-0 = <&sd1_clk &sd1_cmd &sd1_cd &sd1_bus1 &sd1_bus4>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&sdhci2 {
+       bus-width = <4>;
+       pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus1 &sd2_bus4>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&sdhci3 {
+       bus-width = <4>;
+       pinctrl-0 = <&sd3_clk &sd3_cmd &sd3_cd &sd3_bus1 &sd3_bus4>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&hsotg {
+       status = "okay";
+};
+
+&usbphy {
+       status = "okay";
+};
+
+&fimd {
+       pinctrl-0 = <&lcd_clk &lcd_data24>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       display-timings {
+               native-mode = <&timing0>;
+
+               timing0: timing@0 {
+                       /* 800x480@60Hz */
+                       clock-frequency = <24373920>;
+                       hactive = <800>;
+                       vactive = <480>;
+                       hfront-porch = <8>;
+                       hback-porch = <13>;
+                       hsync-len = <3>;
+                       vback-porch = <7>;
+                       vfront-porch = <5>;
+                       vsync-len = <1>;
+                       hsync-active = <0>;
+                       vsync-active = <0>;
+                       de-active = <1>;
+                       pixelclk-active = <1>;
+               };
+       };
+};
+
+&pwm {
+       samsung,pwm-outputs = <3>;
+};
+
+&i2c0 {
+       status = "okay";
+
+       audio-codec@1b {
+               compatible = "wlf,wm8580";
+               reg = <0x1b>;
+       };
+
+       eeprom@50 {
+               compatible = "atmel,24c08";
+               reg = <0x50>;
+       };
+};
+
+&i2s0 {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/s5pv210-torbreck.dts b/arch/arm/boot/dts/s5pv210-torbreck.dts
new file mode 100644 (file)
index 0000000..622599f
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * Samsung's S5PV210 SoC device tree source
+ *
+ * Copyright (c) 2013-2014 Samsung Electronics, Co. Ltd.
+ *
+ * Mateusz Krawczuk <m.krawczuk@partner.samsung.com>
+ * Tomasz Figa <t.figa@samsung.com>
+ *
+ * Board device tree source for Torbreck board.
+ *
+ * NOTE: This file is completely based on original board file for mach-torbreck
+ * available in Linux 3.15 and intends to provide equivalent level of hardware
+ * support. Due to lack of hardware, _no_ testing has been performed.
+ *
+ * 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.
+ */
+
+/dts-v1/;
+#include <dt-bindings/input/input.h>
+#include "s5pv210.dtsi"
+
+/ {
+       model = "aESOP Torbreck based on S5PV210";
+       compatible = "aesop,torbreck", "samsung,s5pv210";
+
+       chosen {
+               bootargs = "console=ttySAC0,115200n8 root=/dev/mmcblk0p1 rw rootwait ignore_loglevel earlyprintk";
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x20000000 0x20000000>;
+       };
+};
+
+&xusbxti {
+       clock-frequency = <24000000>;
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+};
+
+&uart3 {
+       status = "okay";
+};
+
+&rtc {
+       status = "okay";
+};
+
+&sdhci0 {
+       bus-width = <4>;
+       pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_cd &sd0_bus1 &sd0_bus4>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&sdhci1 {
+       bus-width = <4>;
+       pinctrl-0 = <&sd1_clk &sd1_cmd &sd1_cd &sd1_bus1 &sd1_bus4>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&sdhci2 {
+       bus-width = <4>;
+       pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus1 &sd2_bus4>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&sdhci3 {
+       bus-width = <4>;
+       pinctrl-0 = <&sd3_clk &sd3_cmd &sd3_cd &sd3_bus1 &sd3_bus4>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&i2s0 {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/s5pv210.dtsi b/arch/arm/boot/dts/s5pv210.dtsi
new file mode 100644 (file)
index 0000000..8344a0e
--- /dev/null
@@ -0,0 +1,633 @@
+/*
+ * Samsung's S5PV210 SoC device tree source
+ *
+ * Copyright (c) 2013-2014 Samsung Electronics, Co. Ltd.
+ *
+ * Mateusz Krawczuk <m.krawczuk@partner.samsung.com>
+ * Tomasz Figa <t.figa@samsung.com>
+ *
+ * Samsung's S5PV210 SoC device nodes are listed in this file. S5PV210
+ * based board files can include this file and provide values for board specfic
+ * bindings.
+ *
+ * Note: This file does not include device nodes for all the controllers in
+ * S5PV210 SoC. As device tree coverage for S5PV210 increases, additional
+ * nodes can be added to this file.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+*/
+
+#include "skeleton.dtsi"
+#include <dt-bindings/clock/s5pv210.h>
+#include <dt-bindings/clock/s5pv210-audss.h>
+
+/ {
+       aliases {
+               csis0 = &csis0;
+               fimc0 = &fimc0;
+               fimc1 = &fimc1;
+               fimc2 = &fimc2;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2s0 = &i2s0;
+               i2s1 = &i2s1;
+               i2s2 = &i2s2;
+               pinctrl0 = &pinctrl0;
+               spi0 = &spi0;
+               spi1 = &spi1;
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a8";
+                       reg = <0>;
+               };
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               external-clocks {
+                       compatible = "simple-bus";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       xxti: oscillator@0 {
+                               compatible = "fixed-clock";
+                               reg = <0>;
+                               clock-frequency = <0>;
+                               clock-output-names = "xxti";
+                               #clock-cells = <0>;
+                       };
+
+                       xusbxti: oscillator@1 {
+                               compatible = "fixed-clock";
+                               reg = <1>;
+                               clock-frequency = <0>;
+                               clock-output-names = "xusbxti";
+                               #clock-cells = <0>;
+                       };
+               };
+
+               onenand: onenand@b0000000 {
+                       compatible = "samsung,s5pv210-onenand";
+                       reg = <0xb0600000 0x2000>,
+                               <0xb0000000 0x20000>,
+                               <0xb0040000 0x20000>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <31>;
+                       clocks = <&clocks CLK_NANDXL>, <&clocks DOUT_FLASH>;
+                       clock-names = "bus", "onenand";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       status = "disabled";
+               };
+
+               chipid@e0000000 {
+                       compatible = "samsung,s5pv210-chipid";
+                       reg = <0xe0000000 0x1000>;
+               };
+
+               clocks: clock-controller@e0100000 {
+                       compatible = "samsung,s5pv210-clock", "simple-bus";
+                       reg = <0xe0100000 0x10000>;
+                       clock-names = "xxti", "xusbxti";
+                       clocks = <&xxti>, <&xusbxti>;
+                       #clock-cells = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+
+                       pmu_syscon: syscon@e0108000 {
+                               compatible = "samsung-s5pv210-pmu", "syscon";
+                               reg = <0xe0108000 0x8000>;
+                       };
+               };
+
+               pinctrl0: pinctrl@e0200000 {
+                       compatible = "samsung,s5pv210-pinctrl";
+                       reg = <0xe0200000 0x1000>;
+                       interrupt-parent = <&vic0>;
+                       interrupts = <30>;
+
+                       wakeup-interrupt-controller {
+                               compatible = "samsung,exynos4210-wakeup-eint";
+                               interrupts = <16>;
+                               interrupt-parent = <&vic0>;
+                       };
+               };
+
+               amba {
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       compatible = "arm,amba-bus";
+                       ranges;
+
+                       pdma0: dma@e0900000 {
+                               compatible = "arm,pl330", "arm,primecell";
+                               reg = <0xe0900000 0x1000>;
+                               interrupt-parent = <&vic0>;
+                               interrupts = <19>;
+                               clocks = <&clocks CLK_PDMA0>;
+                               clock-names = "apb_pclk";
+                               #dma-cells = <1>;
+                               #dma-channels = <8>;
+                               #dma-requests = <32>;
+                       };
+
+                       pdma1: dma@e0a00000 {
+                               compatible = "arm,pl330", "arm,primecell";
+                               reg = <0xe0a00000 0x1000>;
+                               interrupt-parent = <&vic0>;
+                               interrupts = <20>;
+                               clocks = <&clocks CLK_PDMA1>;
+                               clock-names = "apb_pclk";
+                               #dma-cells = <1>;
+                               #dma-channels = <8>;
+                               #dma-requests = <32>;
+                       };
+               };
+
+               spi0: spi@e1300000 {
+                       compatible = "samsung,s5pv210-spi";
+                       reg = <0xe1300000 0x1000>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <15>;
+                       dmas = <&pdma0 7>, <&pdma0 6>;
+                       dma-names = "tx", "rx";
+                       clocks = <&clocks SCLK_SPI0>, <&clocks CLK_SPI0>;
+                       clock-names = "spi", "spi_busclk0";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&spi0_bus>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               spi1: spi@e1400000 {
+                       compatible = "samsung,s5pv210-spi";
+                       reg = <0xe1400000 0x1000>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <16>;
+                       dmas = <&pdma1 7>, <&pdma1 6>;
+                       dma-names = "tx", "rx";
+                       clocks = <&clocks SCLK_SPI1>, <&clocks CLK_SPI1>;
+                       clock-names = "spi", "spi_busclk0";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&spi1_bus>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               keypad: keypad@e1600000 {
+                       compatible = "samsung,s5pv210-keypad";
+                       reg = <0xe1600000 0x1000>;
+                       interrupt-parent = <&vic2>;
+                       interrupts = <25>;
+                       clocks = <&clocks CLK_KEYIF>;
+                       clock-names = "keypad";
+                       status = "disabled";
+               };
+
+               i2c0: i2c@e1800000 {
+                       compatible = "samsung,s3c2440-i2c";
+                       reg = <0xe1800000 0x1000>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <14>;
+                       clocks = <&clocks CLK_I2C0>;
+                       clock-names = "i2c";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c0_bus>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c2: i2c@e1a00000 {
+                       compatible = "samsung,s3c2440-i2c";
+                       reg = <0xe1a00000 0x1000>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <19>;
+                       clocks = <&clocks CLK_I2C2>;
+                       clock-names = "i2c";
+                       pinctrl-0 = <&i2c2_bus>;
+                       pinctrl-names = "default";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               audio-subsystem {
+                       compatible = "samsung,s5pv210-audss", "simple-bus";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+
+                       clk_audss: clock-controller@eee10000 {
+                               compatible = "samsung,s5pv210-audss-clock";
+                               reg = <0xeee10000 0x1000>;
+                               clock-names = "hclk", "xxti",
+                                               "fout_epll",
+                                               "sclk_audio0";
+                               clocks = <&clocks DOUT_HCLKP>, <&xxti>,
+                                               <&clocks FOUT_EPLL>,
+                                               <&clocks SCLK_AUDIO0>;
+                               #clock-cells = <1>;
+                       };
+
+                       i2s0: i2s@eee30000 {
+                               compatible = "samsung,s5pv210-i2s";
+                               reg = <0xeee30000 0x1000>;
+                               interrupt-parent = <&vic2>;
+                               interrupts = <16>;
+                               dma-names = "rx", "tx", "tx-sec";
+                               dmas = <&pdma1 9>, <&pdma1 10>, <&pdma1 11>;
+                               clock-names = "iis",
+                                               "i2s_opclk0",
+                                               "i2s_opclk1";
+                               clocks = <&clk_audss CLK_I2S>,
+                                               <&clk_audss CLK_I2S>,
+                                               <&clk_audss CLK_DOUT_AUD_BUS>;
+                               samsung,idma-addr = <0xc0010000>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&i2s0_bus>;
+                               #sound-dai-cells = <0>;
+                               status = "disabled";
+                       };
+               };
+
+               i2s1: i2s@e2100000 {
+                       compatible = "samsung,s3c6410-i2s";
+                       reg = <0xe2100000 0x1000>;
+                       interrupt-parent = <&vic2>;
+                       interrupts = <17>;
+                       dma-names = "rx", "tx";
+                       dmas = <&pdma1 12>, <&pdma1 13>;
+                       clock-names = "iis", "i2s_opclk0";
+                       clocks = <&clocks CLK_I2S1>, <&clocks SCLK_AUDIO1>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2s1_bus>;
+                       #sound-dai-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2s2: i2s@e2a00000 {
+                       compatible = "samsung,s3c6410-i2s";
+                       reg = <0xe2a00000 0x1000>;
+                       interrupt-parent = <&vic2>;
+                       interrupts = <18>;
+                       dma-names = "rx", "tx";
+                       dmas = <&pdma1 14>, <&pdma1 15>;
+                       clock-names = "iis", "i2s_opclk0";
+                       clocks = <&clocks CLK_I2S2>, <&clocks SCLK_AUDIO2>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2s2_bus>;
+                       #sound-dai-cells = <0>;
+                       status = "disabled";
+               };
+
+               pwm: pwm@e2500000 {
+                       compatible = "samsung,s5pc100-pwm";
+                       reg = <0xe2500000 0x1000>;
+                       interrupt-parent = <&vic0>;
+                       interrupts = <21>, <22>, <23>, <24>, <25>;
+                       clock-names = "timers";
+                       clocks = <&clocks CLK_PWM>;
+                       #pwm-cells = <3>;
+               };
+
+               watchdog: watchdog@e2700000 {
+                       compatible = "samsung,s3c2410-wdt";
+                       reg = <0xe2700000 0x1000>;
+                       interrupt-parent = <&vic0>;
+                       interrupts = <26>;
+                       clock-names = "watchdog";
+                       clocks = <&clocks CLK_WDT>;
+               };
+
+               rtc: rtc@e2800000 {
+                       compatible = "samsung,s3c6410-rtc";
+                       reg = <0xe2800000 0x100>;
+                       interrupt-parent = <&vic0>;
+                       interrupts = <28>, <29>;
+                       clocks = <&clocks CLK_RTC>;
+                       clock-names = "rtc";
+                       status = "disabled";
+               };
+
+               uart0: serial@e2900000 {
+                       compatible = "samsung,s5pv210-uart";
+                       reg = <0xe2900000 0x400>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <10>;
+                       clock-names = "uart", "clk_uart_baud0",
+                                       "clk_uart_baud1";
+                       clocks = <&clocks CLK_UART0>, <&clocks CLK_UART0>,
+                                       <&clocks SCLK_UART0>;
+                       status = "disabled";
+               };
+
+               uart1: serial@e2900400 {
+                       compatible = "samsung,s5pv210-uart";
+                       reg = <0xe2900400 0x400>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <11>;
+                       clock-names = "uart", "clk_uart_baud0",
+                                       "clk_uart_baud1";
+                       clocks = <&clocks CLK_UART1>, <&clocks CLK_UART1>,
+                                       <&clocks SCLK_UART1>;
+                       status = "disabled";
+               };
+
+               uart2: serial@e2900800 {
+                       compatible = "samsung,s5pv210-uart";
+                       reg = <0xe2900800 0x400>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <12>;
+                       clock-names = "uart", "clk_uart_baud0",
+                                       "clk_uart_baud1";
+                       clocks = <&clocks CLK_UART2>, <&clocks CLK_UART2>,
+                                       <&clocks SCLK_UART2>;
+                       status = "disabled";
+               };
+
+               uart3: serial@e2900c00 {
+                       compatible = "samsung,s5pv210-uart";
+                       reg = <0xe2900c00 0x400>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <13>;
+                       clock-names = "uart", "clk_uart_baud0",
+                                       "clk_uart_baud1";
+                       clocks = <&clocks CLK_UART3>, <&clocks CLK_UART3>,
+                                       <&clocks SCLK_UART3>;
+                       status = "disabled";
+               };
+
+               sdhci0: sdhci@eb000000 {
+                       compatible = "samsung,s3c6410-sdhci";
+                       reg = <0xeb000000 0x100000>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <26>;
+                       clock-names = "hsmmc", "mmc_busclk.0", "mmc_busclk.2";
+                       clocks = <&clocks CLK_HSMMC0>, <&clocks CLK_HSMMC0>,
+                                       <&clocks SCLK_MMC0>;
+                       status = "disabled";
+               };
+
+               sdhci1: sdhci@eb100000 {
+                       compatible = "samsung,s3c6410-sdhci";
+                       reg = <0xeb100000 0x100000>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <27>;
+                       clock-names = "hsmmc", "mmc_busclk.0", "mmc_busclk.2";
+                       clocks = <&clocks CLK_HSMMC1>, <&clocks CLK_HSMMC1>,
+                                       <&clocks SCLK_MMC1>;
+                       status = "disabled";
+               };
+
+               sdhci2: sdhci@eb200000 {
+                       compatible = "samsung,s3c6410-sdhci";
+                       reg = <0xeb200000 0x100000>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <28>;
+                       clock-names = "hsmmc", "mmc_busclk.0", "mmc_busclk.2";
+                       clocks = <&clocks CLK_HSMMC2>, <&clocks CLK_HSMMC2>,
+                                       <&clocks SCLK_MMC2>;
+                       status = "disabled";
+               };
+
+               sdhci3: sdhci@eb300000 {
+                       compatible = "samsung,s3c6410-sdhci";
+                       reg = <0xeb300000 0x100000>;
+                       interrupt-parent = <&vic3>;
+                       interrupts = <2>;
+                       clock-names = "hsmmc", "mmc_busclk.0", "mmc_busclk.3";
+                       clocks = <&clocks CLK_HSMMC3>, <&clocks CLK_HSMMC3>,
+                                       <&clocks SCLK_MMC3>;
+                       status = "disabled";
+               };
+
+               hsotg: hsotg@ec000000 {
+                       compatible = "samsung,s3c6400-hsotg";
+                       reg = <0xec000000 0x20000>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <24>;
+                       clocks = <&clocks CLK_USB_OTG>;
+                       clock-names = "otg";
+                       phy-names = "usb2-phy";
+                       phys = <&usbphy 0>;
+                       status = "disabled";
+               };
+
+               usbphy: usbphy@ec100000 {
+                       compatible = "samsung,s5pv210-usb2-phy";
+                       reg = <0xec100000 0x100>;
+                       samsung,pmureg-phandle = <&pmu_syscon>;
+                       clocks = <&clocks CLK_USB_OTG>, <&xusbxti>;
+                       clock-names = "phy", "ref";
+                       #phy-cells = <1>;
+                       status = "disabled";
+               };
+
+               ehci: ehci@ec200000 {
+                       compatible = "samsung,exynos4210-ehci";
+                       reg = <0xec200000 0x100>;
+                       interrupts = <23>;
+                       interrupt-parent = <&vic1>;
+                       clocks = <&clocks CLK_USB_HOST>;
+                       clock-names = "usbhost";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+
+                       port@0 {
+                               reg = <0>;
+                               phys = <&usbphy 1>;
+                       };
+               };
+
+               ohci: ohci@ec300000 {
+                       compatible = "samsung,exynos4210-ohci";
+                       reg = <0xec300000 0x100>;
+                       interrupts = <23>;
+                       clocks = <&clocks CLK_USB_HOST>;
+                       clock-names = "usbhost";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+
+                       port@0 {
+                               reg = <0>;
+                               phys = <&usbphy 1>;
+                       };
+               };
+
+               mfc: codec@f1700000 {
+                       compatible = "samsung,mfc-v5";
+                       reg = <0xf1700000 0x10000>;
+                       interrupt-parent = <&vic2>;
+                       interrupts = <14>;
+                       clocks = <&clocks DOUT_MFC>, <&clocks CLK_MFC>;
+                       clock-names = "sclk_mfc", "mfc";
+               };
+
+               vic0: interrupt-controller@f2000000 {
+                       compatible = "arm,pl192-vic";
+                       interrupt-controller;
+                       reg = <0xf2000000 0x1000>;
+                       #interrupt-cells = <1>;
+               };
+
+               vic1: interrupt-controller@f2100000 {
+                       compatible = "arm,pl192-vic";
+                       interrupt-controller;
+                       reg = <0xf2100000 0x1000>;
+                       #interrupt-cells = <1>;
+               };
+
+               vic2: interrupt-controller@f2200000 {
+                       compatible = "arm,pl192-vic";
+                       interrupt-controller;
+                       reg = <0xf2200000 0x1000>;
+                       #interrupt-cells = <1>;
+               };
+
+               vic3: interrupt-controller@f2300000 {
+                       compatible = "arm,pl192-vic";
+                       interrupt-controller;
+                       reg = <0xf2300000 0x1000>;
+                       #interrupt-cells = <1>;
+               };
+
+               fimd: fimd@f8000000 {
+                       compatible = "samsung,exynos4210-fimd";
+                       interrupt-parent = <&vic2>;
+                       reg = <0xf8000000 0x20000>;
+                       interrupt-names = "fifo", "vsync", "lcd_sys";
+                       interrupts = <0>, <1>, <2>;
+                       clocks = <&clocks SCLK_FIMD>, <&clocks CLK_FIMD>;
+                       clock-names = "sclk_fimd", "fimd";
+                       status = "disabled";
+               };
+
+               g2d: g2d@fa000000 {
+                       compatible = "samsung,s5pv210-g2d";
+                       reg = <0xfa000000 0x1000>;
+                       interrupt-parent = <&vic2>;
+                       interrupts = <9>;
+                       clocks = <&clocks DOUT_G2D>, <&clocks CLK_G2D>;
+                       clock-names = "sclk_fimg2d", "fimg2d";
+               };
+
+               mdma1: mdma@fa200000 {
+                       compatible = "arm,pl330", "arm,primecell";
+                       reg = <0xfa200000 0x1000>;
+                       interrupt-parent = <&vic0>;
+                       interrupts = <18>;
+                       clocks = <&clocks CLK_MDMA>;
+                       clock-names = "apb_pclk";
+                       #dma-cells = <1>;
+                       #dma-channels = <8>;
+                       #dma-requests = <1>;
+               };
+
+               i2c1: i2c@fab00000 {
+                       compatible = "samsung,s3c2440-i2c";
+                       reg = <0xfab00000 0x1000>;
+                       interrupt-parent = <&vic2>;
+                       interrupts = <13>;
+                       clocks = <&clocks CLK_I2C1>;
+                       clock-names = "i2c";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c1_bus>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               camera: camera {
+                       compatible = "samsung,fimc", "simple-bus";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <>;
+                       clocks = <&clocks SCLK_CAM0>, <&clocks SCLK_CAM1>;
+                       clock-names = "sclk_cam0", "sclk_cam1";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+
+                       clock_cam: clock-controller {
+                               #clock-cells = <1>;
+                       };
+
+                       csis0: csis@fa600000 {
+                               compatible = "samsung,s5pv210-csis";
+                               reg = <0xfa600000 0x4000>;
+                               interrupt-parent = <&vic2>;
+                               interrupts = <29>;
+                               clocks = <&clocks CLK_CSIS>,
+                                               <&clocks SCLK_CSIS>;
+                               clock-names = "clk_csis",
+                                               "sclk_csis";
+                               bus-width = <4>;
+                               status = "disabled";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+
+                       fimc0: fimc@fb200000 {
+                               compatible = "samsung,s5pv210-fimc";
+                               reg = <0xfb200000 0x1000>;
+                               interrupts = <5>;
+                               interrupt-parent = <&vic2>;
+                               clocks = <&clocks CLK_FIMC0>,
+                                               <&clocks SCLK_FIMC0>;
+                               clock-names = "fimc",
+                                               "sclk_fimc";
+                               samsung,pix-limits = <4224 8192 1920 4224>;
+                               samsung,mainscaler-ext;
+                               samsung,cam-if;
+                       };
+
+                       fimc1: fimc@fb300000 {
+                               compatible = "samsung,s5pv210-fimc";
+                               reg = <0xfb300000 0x1000>;
+                               interrupt-parent = <&vic2>;
+                               interrupts = <6>;
+                               clocks = <&clocks CLK_FIMC1>,
+                                               <&clocks SCLK_FIMC1>;
+                               clock-names = "fimc",
+                                               "sclk_fimc";
+                               samsung,pix-limits = <4224 8192 1920 4224>;
+                               samsung,mainscaler-ext;
+                               samsung,cam-if;
+                       };
+
+                       fimc2: fimc@fb400000 {
+                               compatible = "samsung,s5pv210-fimc";
+                               reg = <0xfb400000 0x1000>;
+                               interrupt-parent = <&vic2>;
+                               interrupts = <7>;
+                               clocks = <&clocks CLK_FIMC2>,
+                                               <&clocks SCLK_FIMC2>;
+                               clock-names = "fimc",
+                                               "sclk_fimc";
+                               samsung,pix-limits = <4224 8192 1920 4224>;
+                               samsung,mainscaler-ext;
+                               samsung,lcd-wb;
+                       };
+               };
+       };
+};
+
+#include "s5pv210-pinctrl.dtsi"
diff --git a/arch/arm/include/debug/s5pv210.S b/arch/arm/include/debug/s5pv210.S
new file mode 100644 (file)
index 0000000..4f1a73e
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
+ *             http://www.samsung.com
+ *
+ * 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.
+*/
+
+/* pull in the relevant register and map files. */
+
+#define S3C_ADDR_BASE   0xF6000000
+#define S3C_VA_UART    S3C_ADDR_BASE + 0x01000000
+#define S5PV210_PA_UART        0xe2900000
+
+       /* note, for the boot process to work we have to keep the UART
+        * virtual address aligned to an 1MiB boundary for the L1
+        * mapping the head code makes. We keep the UART virtual address
+        * aligned and add in the offset when we load the value here.
+        */
+
+       .macro addruart, rp, rv, tmp
+               ldr     \rp, =S5PV210_PA_UART
+               ldr     \rv, =S3C_VA_UART
+#if CONFIG_DEBUG_S3C_UART != 0
+               add     \rp, \rp, #(0x400 * CONFIG_DEBUG_S3C_UART)
+               add     \rv, \rv, #(0x400 * CONFIG_DEBUG_S3C_UART)
+#endif
+       .endm
+
+#define fifo_full fifo_full_s5pv210
+#define fifo_level fifo_level_s5pv210
+
+#include <debug/samsung.S>
index bcb96be1efee56e68f988261aa2c496eb2d6da80..c4c6d98ada52e03ce42d4b67f616c725d98a8d8e 100644 (file)
@@ -28,7 +28,6 @@
 #include <asm/suspend.h>
 
 #include <plat/pm-common.h>
-#include <plat/pll.h>
 #include <plat/regs-srom.h>
 
 #include <mach/map.h>
index c0763b8377455fba802441a65901649668f18846..44fa95df926286bebedf3070f196c263cad3ee0b 100644 (file)
@@ -49,9 +49,7 @@
 
 #include <plat/cpu.h>
 #include <plat/devs.h>
-#include <plat/clock.h>
 #include <plat/cpu-freq.h>
-#include <plat/pll.h>
 #include <plat/pwm-core.h>
 #include <plat/watchdog-reset.h>
 
index bd064c05c4738584e91934765347eb4f85bfdaea..28b13951de8783fb3160b486889d7c6eee798499 100644 (file)
@@ -29,7 +29,6 @@
 
 #include <plat/cpu.h>
 #include <plat/cpu-freq-core.h>
-#include <plat/clock.h>
 
 #include <mach/s3c2412.h>
 
index fbf5487ae5d1998fd5ec8f5de2df93026b3327e4..c9a99bbad5459007cdfdc91ae15d6f848bacc60b 100644 (file)
@@ -60,7 +60,6 @@
 #include <plat/cpu.h>
 #include <plat/devs.h>
 #include <plat/gpio-cfg.h>
-#include <plat/pll.h>
 #include <plat/pm.h>
 #include <plat/samsung-time.h>
 
 
 #define H1940_LATCH_BIT(x)     (1 << ((x) + 16 - S3C_GPIO_END))
 
+#define S3C24XX_PLL_MDIV_SHIFT         (12)
+#define S3C24XX_PLL_PDIV_SHIFT         (4)
+#define S3C24XX_PLL_SDIV_SHIFT         (0)
+
 static struct map_desc h1940_iodesc[] __initdata = {
        [0] = {
                .virtual        = (unsigned long)H1940_LATCH,
index e81ea82c55f9de9269a680e4d84f7cb710648963..e647b47244a947f0dff96d1d991af7e50908e5e6 100644 (file)
@@ -48,7 +48,6 @@
 #include <linux/mtd/partitions.h>
 
 #include <plat/gpio-cfg.h>
-#include <plat/clock.h>
 #include <plat/devs.h>
 #include <plat/cpu.h>
 #include <plat/pm.h>
index fb3b80e44595fed2629c22d0793c3545cdd8eba0..10726bf8492019133b8589c27f0a9402ecee9e8d 100644 (file)
@@ -43,7 +43,6 @@
 #include <mach/gpio-samsung.h>
 #include <mach/fb.h>
 
-#include <plat/clock.h>
 #include <plat/devs.h>
 #include <plat/cpu.h>
 #include <plat/samsung-time.h>
index fa6f30d23601d24c46e4ca2925ce6e0f1c135db2..24189e8e85605939a5bd51d34ce86a5f082c2ec6 100644 (file)
@@ -44,7 +44,6 @@
 #include <linux/platform_data/i2c-s3c2410.h>
 
 #include <plat/gpio-cfg.h>
-#include <plat/clock.h>
 #include <plat/devs.h>
 #include <plat/cpu.h>
 #include <linux/platform_data/mtd-nand-s3c2410.h>
index ef5d5ea33182f797679406baa79d8a8cfe704e15..0ed77614dcfe724baffe334093120df774740954 100644 (file)
@@ -38,7 +38,6 @@
 #include <mach/fb.h>
 #include <linux/platform_data/i2c-s3c2410.h>
 
-#include <plat/clock.h>
 #include <plat/devs.h>
 #include <plat/cpu.h>
 #include <plat/samsung-time.h>
index 9104c2be36c957fd8263b8d11ad73ca2cfa94be0..9d4f6475069887ff1b4c5addd0d276aea265d114 100644 (file)
@@ -42,7 +42,6 @@
 #include <linux/platform_data/i2c-s3c2410.h>
 #include <linux/platform_data/mtd-nand-s3c2410.h>
 
-#include <plat/clock.h>
 #include <plat/devs.h>
 #include <plat/cpu.h>
 #include <plat/samsung-time.h>
index 7eab888298836e957dd81b97ba33aeba2902ccf6..5ffe828cd659f2c6a41de1838e10e06928c95e9a 100644 (file)
@@ -41,8 +41,6 @@
 
 #include <plat/cpu.h>
 #include <plat/devs.h>
-#include <plat/clock.h>
-#include <plat/pll.h>
 #include <plat/pm.h>
 #include <plat/watchdog-reset.h>
 
@@ -83,10 +81,6 @@ void __init s3c2410_map_io(void)
        iotable_init(s3c2410_iodesc, ARRAY_SIZE(s3c2410_iodesc));
 }
 
-void __init_or_cpufreq s3c2410_setup_clocks(void)
-{
-}
-
 struct bus_type s3c2410_subsys = {
        .name = "s3c2410-core",
        .dev_name = "s3c2410-core",
index d49f52fbc842d125082f81196e2b61f6db290b63..569f3f5a6c71ea861141bbb0c94af18e882c99e4 100644 (file)
 #include <mach/regs-clock.h>
 #include <mach/regs-gpio.h>
 
-#include <plat/clock.h>
 #include <plat/cpu.h>
 #include <plat/cpu-freq.h>
 #include <plat/devs.h>
 #include <plat/nand-core.h>
-#include <plat/pll.h>
 #include <plat/pm.h>
 #include <plat/regs-spi.h>
 
@@ -171,10 +169,6 @@ void __init s3c2412_map_io(void)
        iotable_init(s3c2412_iodesc, ARRAY_SIZE(s3c2412_iodesc));
 }
 
-void __init_or_cpufreq s3c2412_setup_clocks(void)
-{
-}
-
 /* need to register the subsystem before we actually register the device, and
  * we also need to ensure that it has been initialised before any of the
  * drivers even try to use it (even if not on an s3c2412 based system)
index fb9da2b603a2d290e8753a3d7e4fa7282b656122..7b043349f1c8297c6256ac2690d924d2e59d2c81 100644 (file)
@@ -43,7 +43,6 @@
 
 #include <mach/regs-clock.h>
 
-#include <plat/clock.h>
 #include <plat/cpu.h>
 #include <plat/pm.h>
 
index 4a64bcc9eb515eb79be4cee1fd182e6254569920..d1c3e65785a1305f6c8565385ddb6fde6064ca5d 100644 (file)
 #include <mach/regs-clock.h>
 #include <mach/regs-gpio.h>
 
-#include <plat/clock.h>
 #include <plat/devs.h>
 #include <plat/cpu.h>
 #include <plat/pm.h>
-#include <plat/pll.h>
 #include <plat/nand-core.h>
 #include <plat/watchdog-reset.h>
 
@@ -78,10 +76,6 @@ void __init s3c244x_map_io(void)
        s3c2410_device_dclk.name = "s3c2440-dclk";
 }
 
-void __init_or_cpufreq s3c244x_setup_clocks(void)
-{
-}
-
 /* Since the S3C2442 and S3C2440 share items, put both subsystems here */
 
 struct bus_type s3c2440_subsys = {
index 55eb6a69655bb14e9b69b76587921e5933c7d178..60576dfbea8d42cf152cdd0aced552f10f888d27 100644 (file)
@@ -45,7 +45,6 @@
 #include <linux/platform_data/i2c-s3c2410.h>
 #include <plat/fb.h>
 
-#include <plat/clock.h>
 #include <plat/devs.h>
 #include <plat/cpu.h>
 #include <mach/regs-gpio.h>
index 4b0199fff9f59e9390c23a8a703cbf253bd40bf8..fe116334afda929958a2671ba224bb06d8fe88be 100644 (file)
@@ -58,7 +58,6 @@
 #include <linux/platform_data/spi-s3c64xx.h>
 
 #include <plat/keypad.h>
-#include <plat/clock.h>
 #include <plat/devs.h>
 #include <plat/cpu.h>
 #include <plat/adc.h>
index 72cee08c8bf53c0a929135b64546705fb40efd74..19e8feb908fdba504cda3f150202f053dbd21255 100644 (file)
@@ -39,7 +39,6 @@
 #include <plat/fb.h>
 #include <linux/platform_data/mtd-nand-s3c2410.h>
 
-#include <plat/clock.h>
 #include <plat/devs.h>
 #include <plat/cpu.h>
 #include <plat/samsung-time.h>
index 67f06a9ae656bb3c8955a480ef9298bd490b0dc8..4bae7dc49eeabe9a9602f8efda7bb06e89eb931b 100644 (file)
@@ -40,7 +40,6 @@
 #include <linux/platform_data/i2c-s3c2410.h>
 #include <plat/fb.h>
 
-#include <plat/clock.h>
 #include <plat/devs.h>
 #include <plat/cpu.h>
 #include <plat/samsung-time.h>
index 78dd6f73c072fa76c0f1e8a35b5374cec0eca918..b3d13537a7f0b2a0ce1fb3adfcd28efce08f7c3b 100644 (file)
@@ -28,7 +28,6 @@
 #include <mach/regs-gpio.h>
 #include <mach/gpio-samsung.h>
 
-#include <plat/clock.h>
 #include <plat/cpu.h>
 #include <plat/devs.h>
 #include <linux/platform_data/i2c-s3c2410.h>
index c85d1cbe769f079dfa9800829c8d072041e4d250..91074976834042646cb8a42e6d4ffe44eb1fd59c 100644 (file)
@@ -30,7 +30,6 @@
 #include <mach/hardware.h>
 #include <mach/map.h>
 
-#include <plat/clock.h>
 #include <plat/devs.h>
 #include <plat/cpu.h>
 #include <linux/platform_data/i2c-s3c2410.h>
index c6a8b2ab0240c6978e705635479f9c84c65940f3..1dc86d76b530032a75cdd644a34219909cf8f7c9 100644 (file)
@@ -63,7 +63,6 @@
 #include <plat/fb.h>
 #include <plat/gpio-cfg.h>
 
-#include <plat/clock.h>
 #include <plat/devs.h>
 #include <plat/cpu.h>
 #include <plat/adc.h>
index 8c42807bf57903ca19d64caf82448570dffee053..1ce48c54cd9c82c1fd499b03aff3f3a79fb3e653 100644 (file)
@@ -39,7 +39,6 @@
 
 #include <plat/cpu.h>
 #include <plat/devs.h>
-#include <plat/clock.h>
 #include <plat/sdhci.h>
 #include <plat/iic-core.h>
 #include <plat/onenand-core.h>
index 5be3f09bac92e3395738267b0f7574c4f6a02e3e..b2a7930548d907f265d159b30f216b362d717ad2 100644 (file)
@@ -40,7 +40,6 @@
 
 #include <plat/cpu.h>
 #include <plat/devs.h>
-#include <plat/clock.h>
 #include <plat/sdhci.h>
 #include <plat/ata-core.h>
 #include <plat/adc-core.h>
index f60f2862856d5a0e7087cb759e7c659afab1280d..330bfc8fcd52d2c74e796e4bdb1d5d2d90a884e0 100644 (file)
 
 # Configuration options for the S5PV210/S5PC110
 
+config ARCH_S5PV210
+       bool "Samsung S5PV210/S5PC110" if ARCH_MULTI_V7
+       select ARCH_HAS_HOLES_MEMORYMODEL
+       select ARCH_REQUIRE_GPIOLIB
+       select ARM_VIC
+       select CLKSRC_SAMSUNG_PWM
+       select COMMON_CLK_SAMSUNG
+       select HAVE_S3C2410_I2C if I2C
+       select HAVE_S3C2410_WATCHDOG if WATCHDOG
+       select HAVE_S3C_RTC if RTC_CLASS
+       select PINCTRL
+       select PINCTRL_EXYNOS
+       help
+         Samsung S5PV210/S5PC110 series based systems
+
 if ARCH_S5PV210
 
 config CPU_S5PV210
-       bool
+       def_bool y
        select ARM_AMBA
        select PL330_DMA if DMADEVICES
-       select S5P_EXT_INT
-       select S5P_PM if PM
-       select S5P_SLEEP if PM
        help
          Enable S5PV210 CPU support
 
-config S5PV210_SETUP_I2C1
-       bool
-       help
-         Common setup code for i2c bus 1.
-
-config S5PV210_SETUP_I2C2
-       bool
-       help
-         Common setup code for i2c bus 2.
-
-config S5PV210_SETUP_IDE
-       bool
-       help
-         Common setup code for S5PV210 IDE GPIO configurations
-
-config S5PV210_SETUP_FB_24BPP
-       bool
-       help
-          Common setup code for S5PV210 with an 24bpp RGB display helper.
-
-config S5PV210_SETUP_KEYPAD
-       bool
-       help
-         Common setup code for keypad.
-
-config S5PV210_SETUP_SDHCI
-        bool
-        select S5PV210_SETUP_SDHCI_GPIO
-        help
-          Internal helper functions for S5PV210 based SDHCI systems
-
-config S5PV210_SETUP_SDHCI_GPIO
-       bool
-       help
-         Common setup code for SDHCI gpio.
-
-config S5PV210_SETUP_FIMC
-       bool
-       help
-         Common setup code for the camera interfaces.
-
-config S5PV210_SETUP_SPI
-       bool
-       help
-         Common setup code for SPI GPIO configurations.
-
-config S5PV210_SETUP_USB_PHY
-       bool
-       help
-         Common setup code for USB PHY controller
-
-menu "S5PC110 Machines"
-
-config MACH_AQUILA
-       bool "Aquila"
-       select CPU_S5PV210
-       select S3C_DEV_FB
-       select S3C_DEV_HSMMC
-       select S3C_DEV_HSMMC1
-       select S3C_DEV_HSMMC2
-       select S5PV210_SETUP_FB_24BPP
-       select S5PV210_SETUP_SDHCI
-       select S5PV210_SETUP_USB_PHY
-       select S5P_DEV_FIMC0
-       select S5P_DEV_FIMC1
-       select S5P_DEV_FIMC2
-       select S5P_DEV_ONENAND
-       help
-         Machine support for the Samsung Aquila target based on S5PC110 SoC
-
-config MACH_GONI
-       bool "GONI"
-       select CPU_S5PV210
-       select S3C_DEV_FB
-       select S3C_DEV_HSMMC
-       select S3C_DEV_HSMMC1
-       select S3C_DEV_HSMMC2
-       select S3C_DEV_I2C1
-       select S3C_DEV_I2C2
-       select S3C_DEV_USB_HSOTG
-       select S5PV210_SETUP_FB_24BPP
-       select S5PV210_SETUP_FIMC
-       select S5PV210_SETUP_I2C1
-       select S5PV210_SETUP_I2C2
-       select S5PV210_SETUP_KEYPAD
-       select S5PV210_SETUP_SDHCI
-       select S5PV210_SETUP_USB_PHY
-       select S5P_DEV_FIMC0
-       select S5P_DEV_FIMC1
-       select S5P_DEV_FIMC2
-       select S5P_DEV_MFC
-       select S5P_DEV_ONENAND
-       select S5P_DEV_TV
-       select S5P_GPIO_INT
-       select SAMSUNG_DEV_KEYPAD
-       help
-         Machine support for Samsung GONI board
-         S5PC110(MCP) is one of package option of S5PV210
-
-config MACH_SMDKC110
-       bool "SMDKC110"
-       select CPU_S5PV210
-       select S3C_DEV_I2C1
-       select S3C_DEV_I2C2
-       select S3C_DEV_RTC
-       select S3C_DEV_WDT
-       select S5PV210_SETUP_I2C1
-       select S5PV210_SETUP_I2C2
-       select S5PV210_SETUP_IDE
-       select S5P_DEV_FIMC0
-       select S5P_DEV_FIMC1
-       select S5P_DEV_FIMC2
-       select S5P_DEV_MFC
-       select SAMSUNG_DEV_IDE
-       help
-         Machine support for Samsung SMDKC110
-         S5PC110(MCP) is one of package option of S5PV210
-
-endmenu
-
-menu "S5PV210 Machines"
-
-config MACH_SMDKV210
-       bool "SMDKV210"
-       select CPU_S5PV210
-       select S3C_DEV_FB
-       select S3C_DEV_HSMMC
-       select S3C_DEV_HSMMC1
-       select S3C_DEV_HSMMC2
-       select S3C_DEV_HSMMC3
-       select S3C_DEV_I2C1
-       select S3C_DEV_I2C2
-       select S3C_DEV_RTC
-       select S3C_DEV_USB_HSOTG
-       select S3C_DEV_WDT
-       select S5PV210_SETUP_FB_24BPP
-       select S5PV210_SETUP_I2C1
-       select S5PV210_SETUP_I2C2
-       select S5PV210_SETUP_IDE
-       select S5PV210_SETUP_KEYPAD
-       select S5PV210_SETUP_SDHCI
-       select S5PV210_SETUP_USB_PHY
-       select S5P_DEV_FIMC0
-       select S5P_DEV_FIMC1
-       select S5P_DEV_FIMC2
-       select S5P_DEV_JPEG
-       select S5P_DEV_MFC
-       select SAMSUNG_DEV_ADC
-       select SAMSUNG_DEV_BACKLIGHT
-       select SAMSUNG_DEV_IDE
-       select SAMSUNG_DEV_KEYPAD
-       select SAMSUNG_DEV_PWM
-       select SAMSUNG_DEV_TS
-       help
-         Machine support for Samsung SMDKV210
-
-config MACH_TORBRECK
-       bool "Torbreck"
-       select ARCH_SPARSEMEM_ENABLE
-       select CPU_S5PV210
-       select S3C_DEV_HSMMC
-       select S3C_DEV_HSMMC1
-       select S3C_DEV_HSMMC2
-       select S3C_DEV_HSMMC3
-       select S3C_DEV_I2C1
-       select S3C_DEV_I2C2
-       select S3C_DEV_RTC
-       select S3C_DEV_WDT
-       select S5PV210_SETUP_I2C1
-       select S5PV210_SETUP_I2C2
-       select S5PV210_SETUP_SDHCI
-       select SAMSUNG_DEV_IDE
-       help
-         Machine support for aESOP Torbreck
-
-endmenu
-
 endif
index 1c4e41998a1031f2dcc6de7e3b690494391bba17..7dc2d0e25a83363e337e5e6e8433ee66ae1527cc 100644 (file)
@@ -5,6 +5,8 @@
 #
 # Licensed under GPLv2
 
+ccflags-$(CONFIG_ARCH_MULTIPLATFORM) += -I$(srctree)/$(src)/include -I$(srctree)/arch/arm/plat-samsung/include
+
 obj-y                          :=
 obj-m                          :=
 obj-n                          :=
@@ -12,31 +14,8 @@ obj-                         :=
 
 # Core
 
-obj-y                          += common.o clock.o
-
-obj-$(CONFIG_PM)               += pm.o
-
-obj-y                          += dma.o
+obj-$(CONFIG_PM_SLEEP)         += pm.o sleep.o
 
 # machine support
 
-obj-$(CONFIG_MACH_AQUILA)      += mach-aquila.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-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_IDE)                += setup-ide.o
-obj-$(CONFIG_S5PV210_SETUP_KEYPAD)     += setup-keypad.o
-obj-$(CONFIG_S5PV210_SETUP_SDHCI_GPIO) += setup-sdhci-gpio.o
-obj-$(CONFIG_S5PV210_SETUP_SPI)                += setup-spi.o
-obj-$(CONFIG_S5PV210_SETUP_USB_PHY) += setup-usb-phy.o
+obj-y                          += s5pv210.o
diff --git a/arch/arm/mach-s5pv210/Makefile.boot b/arch/arm/mach-s5pv210/Makefile.boot
deleted file mode 100644 (file)
index 79ece40..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-   zreladdr-y  += 0x20008000
-params_phys-y  := 0x20000100
diff --git a/arch/arm/mach-s5pv210/clock.c b/arch/arm/mach-s5pv210/clock.c
deleted file mode 100644 (file)
index ca46372..0000000
+++ /dev/null
@@ -1,1365 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/clock.c
- *
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * S5PV210 - Clock 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.
-*/
-
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/list.h>
-#include <linux/errno.h>
-#include <linux/err.h>
-#include <linux/clk.h>
-#include <linux/device.h>
-#include <linux/io.h>
-
-#include <mach/map.h>
-
-#include <plat/cpu-freq.h>
-#include <mach/regs-clock.h>
-#include <plat/clock.h>
-#include <plat/cpu.h>
-#include <plat/pll.h>
-#include <plat/s5p-clock.h>
-#include <plat/clock-clksrc.h>
-
-#include "common.h"
-
-static unsigned long xtal;
-
-static struct clksrc_clk clk_mout_apll = {
-       .clk    = {
-               .name           = "mout_apll",
-       },
-       .sources        = &clk_src_apll,
-       .reg_src        = { .reg = S5P_CLK_SRC0, .shift = 0, .size = 1 },
-};
-
-static struct clksrc_clk clk_mout_epll = {
-       .clk    = {
-               .name           = "mout_epll",
-       },
-       .sources        = &clk_src_epll,
-       .reg_src        = { .reg = S5P_CLK_SRC0, .shift = 8, .size = 1 },
-};
-
-static struct clksrc_clk clk_mout_mpll = {
-       .clk = {
-               .name           = "mout_mpll",
-       },
-       .sources        = &clk_src_mpll,
-       .reg_src        = { .reg = S5P_CLK_SRC0, .shift = 4, .size = 1 },
-};
-
-static struct clk *clkset_armclk_list[] = {
-       [0] = &clk_mout_apll.clk,
-       [1] = &clk_mout_mpll.clk,
-};
-
-static struct clksrc_sources clkset_armclk = {
-       .sources        = clkset_armclk_list,
-       .nr_sources     = ARRAY_SIZE(clkset_armclk_list),
-};
-
-static struct clksrc_clk clk_armclk = {
-       .clk    = {
-               .name           = "armclk",
-       },
-       .sources        = &clkset_armclk,
-       .reg_src        = { .reg = S5P_CLK_SRC0, .shift = 16, .size = 1 },
-       .reg_div        = { .reg = S5P_CLK_DIV0, .shift = 0, .size = 3 },
-};
-
-static struct clksrc_clk clk_hclk_msys = {
-       .clk    = {
-               .name           = "hclk_msys",
-               .parent         = &clk_armclk.clk,
-       },
-       .reg_div        = { .reg = S5P_CLK_DIV0, .shift = 8, .size = 3 },
-};
-
-static struct clksrc_clk clk_pclk_msys = {
-       .clk    = {
-               .name           = "pclk_msys",
-               .parent         = &clk_hclk_msys.clk,
-       },
-       .reg_div        = { .reg = S5P_CLK_DIV0, .shift = 12, .size = 3 },
-};
-
-static struct clksrc_clk clk_sclk_a2m = {
-       .clk    = {
-               .name           = "sclk_a2m",
-               .parent         = &clk_mout_apll.clk,
-       },
-       .reg_div        = { .reg = S5P_CLK_DIV0, .shift = 4, .size = 3 },
-};
-
-static struct clk *clkset_hclk_sys_list[] = {
-       [0] = &clk_mout_mpll.clk,
-       [1] = &clk_sclk_a2m.clk,
-};
-
-static struct clksrc_sources clkset_hclk_sys = {
-       .sources        = clkset_hclk_sys_list,
-       .nr_sources     = ARRAY_SIZE(clkset_hclk_sys_list),
-};
-
-static struct clksrc_clk clk_hclk_dsys = {
-       .clk    = {
-               .name   = "hclk_dsys",
-       },
-       .sources        = &clkset_hclk_sys,
-       .reg_src        = { .reg = S5P_CLK_SRC0, .shift = 20, .size = 1 },
-       .reg_div        = { .reg = S5P_CLK_DIV0, .shift = 16, .size = 4 },
-};
-
-static struct clksrc_clk clk_pclk_dsys = {
-       .clk    = {
-               .name   = "pclk_dsys",
-               .parent = &clk_hclk_dsys.clk,
-       },
-       .reg_div = { .reg = S5P_CLK_DIV0, .shift = 20, .size = 3 },
-};
-
-static struct clksrc_clk clk_hclk_psys = {
-       .clk    = {
-               .name   = "hclk_psys",
-       },
-       .sources        = &clkset_hclk_sys,
-       .reg_src        = { .reg = S5P_CLK_SRC0, .shift = 24, .size = 1 },
-       .reg_div        = { .reg = S5P_CLK_DIV0, .shift = 24, .size = 4 },
-};
-
-static struct clksrc_clk clk_pclk_psys = {
-       .clk    = {
-               .name   = "pclk_psys",
-               .parent = &clk_hclk_psys.clk,
-       },
-       .reg_div        = { .reg = S5P_CLK_DIV0, .shift = 28, .size = 3 },
-};
-
-static int s5pv210_clk_ip0_ctrl(struct clk *clk, int enable)
-{
-       return s5p_gatectrl(S5P_CLKGATE_IP0, clk, enable);
-}
-
-static int s5pv210_clk_ip1_ctrl(struct clk *clk, int enable)
-{
-       return s5p_gatectrl(S5P_CLKGATE_IP1, clk, enable);
-}
-
-static int s5pv210_clk_ip2_ctrl(struct clk *clk, int enable)
-{
-       return s5p_gatectrl(S5P_CLKGATE_IP2, clk, enable);
-}
-
-static int s5pv210_clk_ip3_ctrl(struct clk *clk, int enable)
-{
-       return s5p_gatectrl(S5P_CLKGATE_IP3, clk, enable);
-}
-
-static int s5pv210_clk_mask0_ctrl(struct clk *clk, int enable)
-{
-       return s5p_gatectrl(S5P_CLK_SRC_MASK0, clk, enable);
-}
-
-static int s5pv210_clk_mask1_ctrl(struct clk *clk, int enable)
-{
-       return s5p_gatectrl(S5P_CLK_SRC_MASK1, clk, enable);
-}
-
-static int s5pv210_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);
-}
-
-static struct clk clk_sclk_hdmi27m = {
-       .name           = "sclk_hdmi27m",
-       .rate           = 27000000,
-};
-
-static struct clk clk_sclk_hdmiphy = {
-       .name           = "sclk_hdmiphy",
-};
-
-static struct clk clk_sclk_usbphy0 = {
-       .name           = "sclk_usbphy0",
-};
-
-static struct clk clk_sclk_usbphy1 = {
-       .name           = "sclk_usbphy1",
-};
-
-static struct clk clk_pcmcdclk0 = {
-       .name           = "pcmcdclk",
-};
-
-static struct clk clk_pcmcdclk1 = {
-       .name           = "pcmcdclk",
-};
-
-static struct clk clk_pcmcdclk2 = {
-       .name           = "pcmcdclk",
-};
-
-static struct clk *clkset_vpllsrc_list[] = {
-       [0] = &clk_fin_vpll,
-       [1] = &clk_sclk_hdmi27m,
-};
-
-static struct clksrc_sources clkset_vpllsrc = {
-       .sources        = clkset_vpllsrc_list,
-       .nr_sources     = ARRAY_SIZE(clkset_vpllsrc_list),
-};
-
-static struct clksrc_clk clk_vpllsrc = {
-       .clk    = {
-               .name           = "vpll_src",
-               .enable         = s5pv210_clk_mask0_ctrl,
-               .ctrlbit        = (1 << 7),
-       },
-       .sources        = &clkset_vpllsrc,
-       .reg_src        = { .reg = S5P_CLK_SRC1, .shift = 28, .size = 1 },
-};
-
-static struct clk *clkset_sclk_vpll_list[] = {
-       [0] = &clk_vpllsrc.clk,
-       [1] = &clk_fout_vpll,
-};
-
-static struct clksrc_sources clkset_sclk_vpll = {
-       .sources        = clkset_sclk_vpll_list,
-       .nr_sources     = ARRAY_SIZE(clkset_sclk_vpll_list),
-};
-
-static struct clksrc_clk clk_sclk_vpll = {
-       .clk    = {
-               .name           = "sclk_vpll",
-       },
-       .sources        = &clkset_sclk_vpll,
-       .reg_src        = { .reg = S5P_CLK_SRC0, .shift = 12, .size = 1 },
-};
-
-static struct clk *clkset_moutdmc0src_list[] = {
-       [0] = &clk_sclk_a2m.clk,
-       [1] = &clk_mout_mpll.clk,
-       [2] = NULL,
-       [3] = NULL,
-};
-
-static struct clksrc_sources clkset_moutdmc0src = {
-       .sources        = clkset_moutdmc0src_list,
-       .nr_sources     = ARRAY_SIZE(clkset_moutdmc0src_list),
-};
-
-static struct clksrc_clk clk_mout_dmc0 = {
-       .clk    = {
-               .name           = "mout_dmc0",
-       },
-       .sources        = &clkset_moutdmc0src,
-       .reg_src        = { .reg = S5P_CLK_SRC6, .shift = 24, .size = 2 },
-};
-
-static struct clksrc_clk clk_sclk_dmc0 = {
-       .clk    = {
-               .name           = "sclk_dmc0",
-               .parent         = &clk_mout_dmc0.clk,
-       },
-       .reg_div        = { .reg = S5P_CLK_DIV6, .shift = 28, .size = 4 },
-};
-
-static unsigned long s5pv210_clk_imem_get_rate(struct clk *clk)
-{
-       return clk_get_rate(clk->parent) / 2;
-}
-
-static struct clk_ops clk_hclk_imem_ops = {
-       .get_rate       = s5pv210_clk_imem_get_rate,
-};
-
-static unsigned long s5pv210_clk_fout_apll_get_rate(struct clk *clk)
-{
-       return s5p_get_pll45xx(xtal, __raw_readl(S5P_APLL_CON), pll_4508);
-}
-
-static struct clk_ops clk_fout_apll_ops = {
-       .get_rate       = s5pv210_clk_fout_apll_get_rate,
-};
-
-static struct clk init_clocks_off[] = {
-       {
-               .name           = "rot",
-               .parent         = &clk_hclk_dsys.clk,
-               .enable         = s5pv210_clk_ip0_ctrl,
-               .ctrlbit        = (1<<29),
-       }, {
-               .name           = "fimc",
-               .devname        = "s5pv210-fimc.0",
-               .parent         = &clk_hclk_dsys.clk,
-               .enable         = s5pv210_clk_ip0_ctrl,
-               .ctrlbit        = (1 << 24),
-       }, {
-               .name           = "fimc",
-               .devname        = "s5pv210-fimc.1",
-               .parent         = &clk_hclk_dsys.clk,
-               .enable         = s5pv210_clk_ip0_ctrl,
-               .ctrlbit        = (1 << 25),
-       }, {
-               .name           = "fimc",
-               .devname        = "s5pv210-fimc.2",
-               .parent         = &clk_hclk_dsys.clk,
-               .enable         = s5pv210_clk_ip0_ctrl,
-               .ctrlbit        = (1 << 26),
-       }, {
-               .name           = "jpeg",
-               .parent         = &clk_hclk_dsys.clk,
-               .enable         = s5pv210_clk_ip0_ctrl,
-               .ctrlbit        = (1 << 28),
-       }, {
-               .name           = "mfc",
-               .devname        = "s5p-mfc",
-               .parent         = &clk_pclk_psys.clk,
-               .enable         = s5pv210_clk_ip0_ctrl,
-               .ctrlbit        = (1 << 16),
-       }, {
-               .name           = "dac",
-               .devname        = "s5p-sdo",
-               .parent         = &clk_hclk_dsys.clk,
-               .enable         = s5pv210_clk_ip1_ctrl,
-               .ctrlbit        = (1 << 10),
-       }, {
-               .name           = "mixer",
-               .devname        = "s5p-mixer",
-               .parent         = &clk_hclk_dsys.clk,
-               .enable         = s5pv210_clk_ip1_ctrl,
-               .ctrlbit        = (1 << 9),
-       }, {
-               .name           = "vp",
-               .devname        = "s5p-mixer",
-               .parent         = &clk_hclk_dsys.clk,
-               .enable         = s5pv210_clk_ip1_ctrl,
-               .ctrlbit        = (1 << 8),
-       }, {
-               .name           = "hdmi",
-               .devname        = "s5pv210-hdmi",
-               .parent         = &clk_hclk_dsys.clk,
-               .enable         = s5pv210_clk_ip1_ctrl,
-               .ctrlbit        = (1 << 11),
-       }, {
-               .name           = "hdmiphy",
-               .devname        = "s5pv210-hdmi",
-               .enable         = s5pv210_clk_hdmiphy_ctrl,
-               .ctrlbit        = (1 << 0),
-       }, {
-               .name           = "dacphy",
-               .devname        = "s5p-sdo",
-               .enable         = exynos4_clk_dac_ctrl,
-               .ctrlbit        = (1 << 0),
-       }, {
-               .name           = "otg",
-               .parent         = &clk_hclk_psys.clk,
-               .enable         = s5pv210_clk_ip1_ctrl,
-               .ctrlbit        = (1<<16),
-       }, {
-               .name           = "usb-host",
-               .parent         = &clk_hclk_psys.clk,
-               .enable         = s5pv210_clk_ip1_ctrl,
-               .ctrlbit        = (1<<17),
-       }, {
-               .name           = "lcd",
-               .parent         = &clk_hclk_dsys.clk,
-               .enable         = s5pv210_clk_ip1_ctrl,
-               .ctrlbit        = (1<<0),
-       }, {
-               .name           = "cfcon",
-               .parent         = &clk_hclk_psys.clk,
-               .enable         = s5pv210_clk_ip1_ctrl,
-               .ctrlbit        = (1<<25),
-       }, {
-               .name           = "systimer",
-               .parent         = &clk_pclk_psys.clk,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1<<16),
-       }, {
-               .name           = "watchdog",
-               .parent         = &clk_pclk_psys.clk,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1<<22),
-       }, {
-               .name           = "rtc",
-               .parent         = &clk_pclk_psys.clk,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1<<15),
-       }, {
-               .name           = "i2c",
-               .devname        = "s3c2440-i2c.0",
-               .parent         = &clk_pclk_psys.clk,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1<<7),
-       }, {
-               .name           = "i2c",
-               .devname        = "s3c2440-i2c.1",
-               .parent         = &clk_pclk_psys.clk,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1 << 10),
-       }, {
-               .name           = "i2c",
-               .devname        = "s3c2440-i2c.2",
-               .parent         = &clk_pclk_psys.clk,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1<<9),
-       }, {
-               .name           = "i2c",
-               .devname        = "s3c2440-hdmiphy-i2c",
-               .parent         = &clk_pclk_psys.clk,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1 << 11),
-       }, {
-               .name           = "spi",
-               .devname        = "s5pv210-spi.0",
-               .parent         = &clk_pclk_psys.clk,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1<<12),
-       }, {
-               .name           = "spi",
-               .devname        = "s5pv210-spi.1",
-               .parent         = &clk_pclk_psys.clk,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1<<13),
-       }, {
-               .name           = "spi",
-               .devname        = "s5pv210-spi.2",
-               .parent         = &clk_pclk_psys.clk,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1<<14),
-       }, {
-               .name           = "timers",
-               .parent         = &clk_pclk_psys.clk,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1<<23),
-       }, {
-               .name           = "adc",
-               .parent         = &clk_pclk_psys.clk,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1<<24),
-       }, {
-               .name           = "keypad",
-               .parent         = &clk_pclk_psys.clk,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1<<21),
-       }, {
-               .name           = "iis",
-               .devname        = "samsung-i2s.0",
-               .parent         = &clk_p,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1<<4),
-       }, {
-               .name           = "iis",
-               .devname        = "samsung-i2s.1",
-               .parent         = &clk_p,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1 << 5),
-       }, {
-               .name           = "iis",
-               .devname        = "samsung-i2s.2",
-               .parent         = &clk_p,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1 << 6),
-       }, {
-               .name           = "spdif",
-               .parent         = &clk_p,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1 << 0),
-       },
-};
-
-static struct clk init_clocks[] = {
-       {
-               .name           = "hclk_imem",
-               .parent         = &clk_hclk_msys.clk,
-               .ctrlbit        = (1 << 5),
-               .enable         = s5pv210_clk_ip0_ctrl,
-               .ops            = &clk_hclk_imem_ops,
-       }, {
-               .name           = "uart",
-               .devname        = "s5pv210-uart.0",
-               .parent         = &clk_pclk_psys.clk,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1 << 17),
-       }, {
-               .name           = "uart",
-               .devname        = "s5pv210-uart.1",
-               .parent         = &clk_pclk_psys.clk,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1 << 18),
-       }, {
-               .name           = "uart",
-               .devname        = "s5pv210-uart.2",
-               .parent         = &clk_pclk_psys.clk,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1 << 19),
-       }, {
-               .name           = "uart",
-               .devname        = "s5pv210-uart.3",
-               .parent         = &clk_pclk_psys.clk,
-               .enable         = s5pv210_clk_ip3_ctrl,
-               .ctrlbit        = (1 << 20),
-       }, {
-               .name           = "sromc",
-               .parent         = &clk_hclk_psys.clk,
-               .enable         = s5pv210_clk_ip1_ctrl,
-               .ctrlbit        = (1 << 26),
-       },
-};
-
-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 clk_pdma0 = {
-       .name           = "pdma0",
-       .parent         = &clk_hclk_psys.clk,
-       .enable         = s5pv210_clk_ip0_ctrl,
-       .ctrlbit        = (1 << 3),
-};
-
-static struct clk clk_pdma1 = {
-       .name           = "pdma1",
-       .parent         = &clk_hclk_psys.clk,
-       .enable         = s5pv210_clk_ip0_ctrl,
-       .ctrlbit        = (1 << 4),
-};
-
-static struct clk *clkset_uart_list[] = {
-       [6] = &clk_mout_mpll.clk,
-       [7] = &clk_mout_epll.clk,
-};
-
-static struct clksrc_sources clkset_uart = {
-       .sources        = clkset_uart_list,
-       .nr_sources     = ARRAY_SIZE(clkset_uart_list),
-};
-
-static struct clk *clkset_group1_list[] = {
-       [0] = &clk_sclk_a2m.clk,
-       [1] = &clk_mout_mpll.clk,
-       [2] = &clk_mout_epll.clk,
-       [3] = &clk_sclk_vpll.clk,
-};
-
-static struct clksrc_sources clkset_group1 = {
-       .sources        = clkset_group1_list,
-       .nr_sources     = ARRAY_SIZE(clkset_group1_list),
-};
-
-static struct clk *clkset_sclk_onenand_list[] = {
-       [0] = &clk_hclk_psys.clk,
-       [1] = &clk_hclk_dsys.clk,
-};
-
-static struct clksrc_sources clkset_sclk_onenand = {
-       .sources        = clkset_sclk_onenand_list,
-       .nr_sources     = ARRAY_SIZE(clkset_sclk_onenand_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         = s5pv210_clk_mask0_ctrl,
-               .ctrlbit        = (1 << 2),
-       },
-       .sources        = &clkset_sclk_dac,
-       .reg_src        = { .reg = S5P_CLK_SRC1, .shift = 8, .size = 1 },
-};
-
-static struct clksrc_clk clk_sclk_pixel = {
-       .clk            = {
-               .name           = "sclk_pixel",
-               .parent         = &clk_sclk_vpll.clk,
-       },
-       .reg_div        = { .reg = S5P_CLK_DIV1, .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         = s5pv210_clk_mask0_ctrl,
-               .ctrlbit        = (1 << 0),
-       },
-       .sources        = &clkset_sclk_hdmi,
-       .reg_src        = { .reg = S5P_CLK_SRC1, .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         = s5pv210_clk_mask0_ctrl,
-               .ctrlbit        = (1 << 1),
-       },
-       .sources = &clkset_sclk_mixer,
-       .reg_src = { .reg = S5P_CLK_SRC1, .shift = 4, .size = 1 },
-};
-
-static struct clksrc_clk *sclk_tv[] = {
-       &clk_sclk_dac,
-       &clk_sclk_pixel,
-       &clk_sclk_hdmi,
-       &clk_sclk_mixer,
-};
-
-static struct clk *clkset_sclk_audio0_list[] = {
-       [0] = &clk_ext_xtal_mux,
-       [1] = &clk_pcmcdclk0,
-       [2] = &clk_sclk_hdmi27m,
-       [3] = &clk_sclk_usbphy0,
-       [4] = &clk_sclk_usbphy1,
-       [5] = &clk_sclk_hdmiphy,
-       [6] = &clk_mout_mpll.clk,
-       [7] = &clk_mout_epll.clk,
-       [8] = &clk_sclk_vpll.clk,
-};
-
-static struct clksrc_sources clkset_sclk_audio0 = {
-       .sources        = clkset_sclk_audio0_list,
-       .nr_sources     = ARRAY_SIZE(clkset_sclk_audio0_list),
-};
-
-static struct clksrc_clk clk_sclk_audio0 = {
-       .clk            = {
-               .name           = "sclk_audio",
-               .devname        = "soc-audio.0",
-               .enable         = s5pv210_clk_mask0_ctrl,
-               .ctrlbit        = (1 << 24),
-       },
-       .sources = &clkset_sclk_audio0,
-       .reg_src = { .reg = S5P_CLK_SRC6, .shift = 0, .size = 4 },
-       .reg_div = { .reg = S5P_CLK_DIV6, .shift = 0, .size = 4 },
-};
-
-static struct clk *clkset_sclk_audio1_list[] = {
-       [0] = &clk_ext_xtal_mux,
-       [1] = &clk_pcmcdclk1,
-       [2] = &clk_sclk_hdmi27m,
-       [3] = &clk_sclk_usbphy0,
-       [4] = &clk_sclk_usbphy1,
-       [5] = &clk_sclk_hdmiphy,
-       [6] = &clk_mout_mpll.clk,
-       [7] = &clk_mout_epll.clk,
-       [8] = &clk_sclk_vpll.clk,
-};
-
-static struct clksrc_sources clkset_sclk_audio1 = {
-       .sources        = clkset_sclk_audio1_list,
-       .nr_sources     = ARRAY_SIZE(clkset_sclk_audio1_list),
-};
-
-static struct clksrc_clk clk_sclk_audio1 = {
-       .clk            = {
-               .name           = "sclk_audio",
-               .devname        = "soc-audio.1",
-               .enable         = s5pv210_clk_mask0_ctrl,
-               .ctrlbit        = (1 << 25),
-       },
-       .sources = &clkset_sclk_audio1,
-       .reg_src = { .reg = S5P_CLK_SRC6, .shift = 4, .size = 4 },
-       .reg_div = { .reg = S5P_CLK_DIV6, .shift = 4, .size = 4 },
-};
-
-static struct clk *clkset_sclk_audio2_list[] = {
-       [0] = &clk_ext_xtal_mux,
-       [1] = &clk_pcmcdclk0,
-       [2] = &clk_sclk_hdmi27m,
-       [3] = &clk_sclk_usbphy0,
-       [4] = &clk_sclk_usbphy1,
-       [5] = &clk_sclk_hdmiphy,
-       [6] = &clk_mout_mpll.clk,
-       [7] = &clk_mout_epll.clk,
-       [8] = &clk_sclk_vpll.clk,
-};
-
-static struct clksrc_sources clkset_sclk_audio2 = {
-       .sources        = clkset_sclk_audio2_list,
-       .nr_sources     = ARRAY_SIZE(clkset_sclk_audio2_list),
-};
-
-static struct clksrc_clk clk_sclk_audio2 = {
-       .clk            = {
-               .name           = "sclk_audio",
-               .devname        = "soc-audio.2",
-               .enable         = s5pv210_clk_mask0_ctrl,
-               .ctrlbit        = (1 << 26),
-       },
-       .sources = &clkset_sclk_audio2,
-       .reg_src = { .reg = S5P_CLK_SRC6, .shift = 8, .size = 4 },
-       .reg_div = { .reg = S5P_CLK_DIV6, .shift = 8, .size = 4 },
-};
-
-static struct clk *clkset_sclk_spdif_list[] = {
-       [0] = &clk_sclk_audio0.clk,
-       [1] = &clk_sclk_audio1.clk,
-       [2] = &clk_sclk_audio2.clk,
-};
-
-static struct clksrc_sources clkset_sclk_spdif = {
-       .sources        = clkset_sclk_spdif_list,
-       .nr_sources     = ARRAY_SIZE(clkset_sclk_spdif_list),
-};
-
-static struct clksrc_clk clk_sclk_spdif = {
-       .clk            = {
-               .name           = "sclk_spdif",
-               .enable         = s5pv210_clk_mask0_ctrl,
-               .ctrlbit        = (1 << 27),
-               .ops            = &s5p_sclk_spdif_ops,
-       },
-       .sources = &clkset_sclk_spdif,
-       .reg_src = { .reg = S5P_CLK_SRC6, .shift = 12, .size = 2 },
-};
-
-static struct clk *clkset_group2_list[] = {
-       [0] = &clk_ext_xtal_mux,
-       [1] = &clk_xusbxti,
-       [2] = &clk_sclk_hdmi27m,
-       [3] = &clk_sclk_usbphy0,
-       [4] = &clk_sclk_usbphy1,
-       [5] = &clk_sclk_hdmiphy,
-       [6] = &clk_mout_mpll.clk,
-       [7] = &clk_mout_epll.clk,
-       [8] = &clk_sclk_vpll.clk,
-};
-
-static struct clksrc_sources clkset_group2 = {
-       .sources        = clkset_group2_list,
-       .nr_sources     = ARRAY_SIZE(clkset_group2_list),
-};
-
-static struct clksrc_clk clksrcs[] = {
-       {
-               .clk    = {
-                       .name           = "sclk_dmc",
-               },
-               .sources = &clkset_group1,
-               .reg_src = { .reg = S5P_CLK_SRC6, .shift = 24, .size = 2 },
-               .reg_div = { .reg = S5P_CLK_DIV6, .shift = 28, .size = 4 },
-       }, {
-               .clk    = {
-                       .name           = "sclk_onenand",
-               },
-               .sources = &clkset_sclk_onenand,
-               .reg_src = { .reg = S5P_CLK_SRC0, .shift = 28, .size = 1 },
-               .reg_div = { .reg = S5P_CLK_DIV6, .shift = 12, .size = 3 },
-       }, {
-               .clk    = {
-                       .name           = "sclk_fimc",
-                       .devname        = "s5pv210-fimc.0",
-                       .enable         = s5pv210_clk_mask1_ctrl,
-                       .ctrlbit        = (1 << 2),
-               },
-               .sources = &clkset_group2,
-               .reg_src = { .reg = S5P_CLK_SRC3, .shift = 12, .size = 4 },
-               .reg_div = { .reg = S5P_CLK_DIV3, .shift = 12, .size = 4 },
-       }, {
-               .clk    = {
-                       .name           = "sclk_fimc",
-                       .devname        = "s5pv210-fimc.1",
-                       .enable         = s5pv210_clk_mask1_ctrl,
-                       .ctrlbit        = (1 << 3),
-               },
-               .sources = &clkset_group2,
-               .reg_src = { .reg = S5P_CLK_SRC3, .shift = 16, .size = 4 },
-               .reg_div = { .reg = S5P_CLK_DIV3, .shift = 16, .size = 4 },
-       }, {
-               .clk    = {
-                       .name           = "sclk_fimc",
-                       .devname        = "s5pv210-fimc.2",
-                       .enable         = s5pv210_clk_mask1_ctrl,
-                       .ctrlbit        = (1 << 4),
-               },
-               .sources = &clkset_group2,
-               .reg_src = { .reg = S5P_CLK_SRC3, .shift = 20, .size = 4 },
-               .reg_div = { .reg = S5P_CLK_DIV3, .shift = 20, .size = 4 },
-       }, {
-               .clk            = {
-                       .name           = "sclk_cam0",
-                       .enable         = s5pv210_clk_mask0_ctrl,
-                       .ctrlbit        = (1 << 3),
-               },
-               .sources = &clkset_group2,
-               .reg_src = { .reg = S5P_CLK_SRC1, .shift = 12, .size = 4 },
-               .reg_div = { .reg = S5P_CLK_DIV1, .shift = 12, .size = 4 },
-       }, {
-               .clk            = {
-                       .name           = "sclk_cam1",
-                       .enable         = s5pv210_clk_mask0_ctrl,
-                       .ctrlbit        = (1 << 4),
-               },
-               .sources = &clkset_group2,
-               .reg_src = { .reg = S5P_CLK_SRC1, .shift = 16, .size = 4 },
-               .reg_div = { .reg = S5P_CLK_DIV1, .shift = 16, .size = 4 },
-       }, {
-               .clk            = {
-                       .name           = "sclk_fimd",
-                       .enable         = s5pv210_clk_mask0_ctrl,
-                       .ctrlbit        = (1 << 5),
-               },
-               .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_mfc",
-                       .devname        = "s5p-mfc",
-                       .enable         = s5pv210_clk_ip0_ctrl,
-                       .ctrlbit        = (1 << 16),
-               },
-               .sources = &clkset_group1,
-               .reg_src = { .reg = S5P_CLK_SRC2, .shift = 4, .size = 2 },
-               .reg_div = { .reg = S5P_CLK_DIV2, .shift = 4, .size = 4 },
-       }, {
-               .clk            = {
-                       .name           = "sclk_g2d",
-                       .enable         = s5pv210_clk_ip0_ctrl,
-                       .ctrlbit        = (1 << 12),
-               },
-               .sources = &clkset_group1,
-               .reg_src = { .reg = S5P_CLK_SRC2, .shift = 8, .size = 2 },
-               .reg_div = { .reg = S5P_CLK_DIV2, .shift = 8, .size = 4 },
-       }, {
-               .clk            = {
-                       .name           = "sclk_g3d",
-                       .enable         = s5pv210_clk_ip0_ctrl,
-                       .ctrlbit        = (1 << 8),
-               },
-               .sources = &clkset_group1,
-               .reg_src = { .reg = S5P_CLK_SRC2, .shift = 0, .size = 2 },
-               .reg_div = { .reg = S5P_CLK_DIV2, .shift = 0, .size = 4 },
-       }, {
-               .clk            = {
-                       .name           = "sclk_csis",
-                       .enable         = s5pv210_clk_mask0_ctrl,
-                       .ctrlbit        = (1 << 6),
-               },
-               .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_pwi",
-                       .enable         = s5pv210_clk_mask0_ctrl,
-                       .ctrlbit        = (1 << 29),
-               },
-               .sources = &clkset_group2,
-               .reg_src = { .reg = S5P_CLK_SRC6, .shift = 20, .size = 4 },
-               .reg_div = { .reg = S5P_CLK_DIV6, .shift = 24, .size = 4 },
-       }, {
-               .clk            = {
-                       .name           = "sclk_pwm",
-                       .enable         = s5pv210_clk_mask0_ctrl,
-                       .ctrlbit        = (1 << 19),
-               },
-               .sources = &clkset_group2,
-               .reg_src = { .reg = S5P_CLK_SRC5, .shift = 12, .size = 4 },
-               .reg_div = { .reg = S5P_CLK_DIV5, .shift = 12, .size = 4 },
-       },
-};
-
-static struct clksrc_clk clk_sclk_uart0 = {
-       .clk    = {
-               .name           = "uclk1",
-               .devname        = "s5pv210-uart.0",
-               .enable         = s5pv210_clk_mask0_ctrl,
-               .ctrlbit        = (1 << 12),
-       },
-       .sources = &clkset_uart,
-       .reg_src = { .reg = S5P_CLK_SRC4, .shift = 16, .size = 4 },
-       .reg_div = { .reg = S5P_CLK_DIV4, .shift = 16, .size = 4 },
-};
-
-static struct clksrc_clk clk_sclk_uart1 = {
-       .clk            = {
-               .name           = "uclk1",
-               .devname        = "s5pv210-uart.1",
-               .enable         = s5pv210_clk_mask0_ctrl,
-               .ctrlbit        = (1 << 13),
-       },
-       .sources = &clkset_uart,
-       .reg_src = { .reg = S5P_CLK_SRC4, .shift = 20, .size = 4 },
-       .reg_div = { .reg = S5P_CLK_DIV4, .shift = 20, .size = 4 },
-};
-
-static struct clksrc_clk clk_sclk_uart2 = {
-       .clk            = {
-               .name           = "uclk1",
-               .devname        = "s5pv210-uart.2",
-               .enable         = s5pv210_clk_mask0_ctrl,
-               .ctrlbit        = (1 << 14),
-       },
-       .sources = &clkset_uart,
-       .reg_src = { .reg = S5P_CLK_SRC4, .shift = 24, .size = 4 },
-       .reg_div = { .reg = S5P_CLK_DIV4, .shift = 24, .size = 4 },
-};
-
-static struct clksrc_clk clk_sclk_uart3        = {
-       .clk            = {
-               .name           = "uclk1",
-               .devname        = "s5pv210-uart.3",
-               .enable         = s5pv210_clk_mask0_ctrl,
-               .ctrlbit        = (1 << 15),
-       },
-       .sources = &clkset_uart,
-       .reg_src = { .reg = S5P_CLK_SRC4, .shift = 28, .size = 4 },
-       .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        = "s5pv210-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        = "s5pv210-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,
-       &clk_pdma0,
-       &clk_pdma1,
-};
-
-/* Clock initialisation code */
-static struct clksrc_clk *sysclks[] = {
-       &clk_mout_apll,
-       &clk_mout_epll,
-       &clk_mout_mpll,
-       &clk_armclk,
-       &clk_hclk_msys,
-       &clk_sclk_a2m,
-       &clk_hclk_dsys,
-       &clk_hclk_psys,
-       &clk_pclk_msys,
-       &clk_pclk_dsys,
-       &clk_pclk_psys,
-       &clk_vpllsrc,
-       &clk_sclk_vpll,
-       &clk_mout_dmc0,
-       &clk_sclk_dmc0,
-       &clk_sclk_audio0,
-       &clk_sclk_audio1,
-       &clk_sclk_audio2,
-       &clk_sclk_spdif,
-};
-
-static u32 epll_div[][6] = {
-       {  48000000, 0, 48, 3, 3, 0 },
-       {  96000000, 0, 48, 3, 2, 0 },
-       { 144000000, 1, 72, 3, 2, 0 },
-       { 192000000, 0, 48, 3, 1, 0 },
-       { 288000000, 1, 72, 3, 1, 0 },
-       {  32750000, 1, 65, 3, 4, 35127 },
-       {  32768000, 1, 65, 3, 4, 35127 },
-       {  45158400, 0, 45, 3, 3, 10355 },
-       {  45000000, 0, 45, 3, 3, 10355 },
-       {  45158000, 0, 45, 3, 3, 10355 },
-       {  49125000, 0, 49, 3, 3, 9961 },
-       {  49152000, 0, 49, 3, 3, 9961 },
-       {  67737600, 1, 67, 3, 3, 48366 },
-       {  67738000, 1, 67, 3, 3, 48366 },
-       {  73800000, 1, 73, 3, 3, 47710 },
-       {  73728000, 1, 73, 3, 3, 47710 },
-       {  36000000, 1, 32, 3, 4, 0 },
-       {  60000000, 1, 60, 3, 3, 0 },
-       {  72000000, 1, 72, 3, 3, 0 },
-       {  80000000, 1, 80, 3, 3, 0 },
-       {  84000000, 0, 42, 3, 2, 0 },
-       {  50000000, 0, 50, 3, 3, 0 },
-};
-
-static int s5pv210_epll_set_rate(struct clk *clk, unsigned long rate)
-{
-       unsigned int epll_con, epll_con_k;
-       unsigned int i;
-
-       /* Return if nothing changed */
-       if (clk->rate == rate)
-               return 0;
-
-       epll_con = __raw_readl(S5P_EPLL_CON);
-       epll_con_k = __raw_readl(S5P_EPLL_CON1);
-
-       epll_con_k &= ~PLL46XX_KDIV_MASK;
-       epll_con &= ~(1 << 27 |
-                       PLL46XX_MDIV_MASK << PLL46XX_MDIV_SHIFT |
-                       PLL46XX_PDIV_MASK << PLL46XX_PDIV_SHIFT |
-                       PLL46XX_SDIV_MASK << PLL46XX_SDIV_SHIFT);
-
-       for (i = 0; i < ARRAY_SIZE(epll_div); i++) {
-               if (epll_div[i][0] == rate) {
-                       epll_con_k |= epll_div[i][5] << 0;
-                       epll_con |= (epll_div[i][1] << 27 |
-                                       epll_div[i][2] << PLL46XX_MDIV_SHIFT |
-                                       epll_div[i][3] << PLL46XX_PDIV_SHIFT |
-                                       epll_div[i][4] << PLL46XX_SDIV_SHIFT);
-                       break;
-               }
-       }
-
-       if (i == ARRAY_SIZE(epll_div)) {
-               printk(KERN_ERR "%s: Invalid Clock EPLL Frequency\n",
-                               __func__);
-               return -EINVAL;
-       }
-
-       __raw_writel(epll_con, S5P_EPLL_CON);
-       __raw_writel(epll_con_k, S5P_EPLL_CON1);
-
-       printk(KERN_WARNING "EPLL Rate changes from %lu to %lu\n",
-                       clk->rate, rate);
-
-       clk->rate = rate;
-
-       return 0;
-}
-
-static struct clk_ops s5pv210_epll_ops = {
-       .set_rate = s5pv210_epll_set_rate,
-       .get_rate = s5p_epll_get_rate,
-};
-
-static u32 vpll_div[][5] = {
-       {  54000000, 3, 53, 3, 0 },
-       { 108000000, 3, 53, 2, 0 },
-};
-
-static unsigned long s5pv210_vpll_get_rate(struct clk *clk)
-{
-       return clk->rate;
-}
-
-static int s5pv210_vpll_set_rate(struct clk *clk, unsigned long rate)
-{
-       unsigned int vpll_con;
-       unsigned int i;
-
-       /* Return if nothing changed */
-       if (clk->rate == rate)
-               return 0;
-
-       vpll_con = __raw_readl(S5P_VPLL_CON);
-       vpll_con &= ~(0x1 << 27 |                                       \
-                       PLL90XX_MDIV_MASK << PLL90XX_MDIV_SHIFT |       \
-                       PLL90XX_PDIV_MASK << PLL90XX_PDIV_SHIFT |       \
-                       PLL90XX_SDIV_MASK << PLL90XX_SDIV_SHIFT);
-
-       for (i = 0; i < ARRAY_SIZE(vpll_div); i++) {
-               if (vpll_div[i][0] == rate) {
-                       vpll_con |= vpll_div[i][1] << PLL90XX_PDIV_SHIFT;
-                       vpll_con |= vpll_div[i][2] << PLL90XX_MDIV_SHIFT;
-                       vpll_con |= vpll_div[i][3] << PLL90XX_SDIV_SHIFT;
-                       vpll_con |= vpll_div[i][4] << 27;
-                       break;
-               }
-       }
-
-       if (i == ARRAY_SIZE(vpll_div)) {
-               printk(KERN_ERR "%s: Invalid Clock VPLL Frequency\n",
-                               __func__);
-               return -EINVAL;
-       }
-
-       __raw_writel(vpll_con, S5P_VPLL_CON);
-
-       /* Wait for VPLL lock */
-       while (!(__raw_readl(S5P_VPLL_CON) & (1 << PLL90XX_LOCKED_SHIFT)))
-               continue;
-
-       clk->rate = rate;
-       return 0;
-}
-static struct clk_ops s5pv210_vpll_ops = {
-       .get_rate = s5pv210_vpll_get_rate,
-       .set_rate = s5pv210_vpll_set_rate,
-};
-
-void __init_or_cpufreq s5pv210_setup_clocks(void)
-{
-       struct clk *xtal_clk;
-       unsigned long vpllsrc;
-       unsigned long armclk;
-       unsigned long hclk_msys;
-       unsigned long hclk_dsys;
-       unsigned long hclk_psys;
-       unsigned long pclk_msys;
-       unsigned long pclk_dsys;
-       unsigned long pclk_psys;
-       unsigned long apll;
-       unsigned long mpll;
-       unsigned long epll;
-       unsigned long vpll;
-       unsigned int ptr;
-       u32 clkdiv0, clkdiv1;
-
-       /* Set functions for clk_fout_epll */
-       clk_fout_epll.enable = s5p_epll_enable;
-       clk_fout_epll.ops = &s5pv210_epll_ops;
-
-       printk(KERN_DEBUG "%s: registering clocks\n", __func__);
-
-       clkdiv0 = __raw_readl(S5P_CLK_DIV0);
-       clkdiv1 = __raw_readl(S5P_CLK_DIV1);
-
-       printk(KERN_DEBUG "%s: clkdiv0 = %08x, clkdiv1 = %08x\n",
-                               __func__, clkdiv0, clkdiv1);
-
-       xtal_clk = clk_get(NULL, "xtal");
-       BUG_ON(IS_ERR(xtal_clk));
-
-       xtal = clk_get_rate(xtal_clk);
-       clk_put(xtal_clk);
-
-       printk(KERN_DEBUG "%s: xtal is %ld\n", __func__, xtal);
-
-       apll = s5p_get_pll45xx(xtal, __raw_readl(S5P_APLL_CON), pll_4508);
-       mpll = s5p_get_pll45xx(xtal, __raw_readl(S5P_MPLL_CON), pll_4502);
-       epll = s5p_get_pll46xx(xtal, __raw_readl(S5P_EPLL_CON),
-                               __raw_readl(S5P_EPLL_CON1), pll_4600);
-       vpllsrc = clk_get_rate(&clk_vpllsrc.clk);
-       vpll = s5p_get_pll45xx(vpllsrc, __raw_readl(S5P_VPLL_CON), pll_4502);
-
-       clk_fout_apll.ops = &clk_fout_apll_ops;
-       clk_fout_mpll.rate = mpll;
-       clk_fout_epll.rate = epll;
-       clk_fout_vpll.ops = &s5pv210_vpll_ops;
-       clk_fout_vpll.rate = vpll;
-
-       printk(KERN_INFO "S5PV210: PLL settings, A=%ld, M=%ld, E=%ld V=%ld",
-                       apll, mpll, epll, vpll);
-
-       armclk = clk_get_rate(&clk_armclk.clk);
-       hclk_msys = clk_get_rate(&clk_hclk_msys.clk);
-       hclk_dsys = clk_get_rate(&clk_hclk_dsys.clk);
-       hclk_psys = clk_get_rate(&clk_hclk_psys.clk);
-       pclk_msys = clk_get_rate(&clk_pclk_msys.clk);
-       pclk_dsys = clk_get_rate(&clk_pclk_dsys.clk);
-       pclk_psys = clk_get_rate(&clk_pclk_psys.clk);
-
-       printk(KERN_INFO "S5PV210: ARMCLK=%ld, HCLKM=%ld, HCLKD=%ld\n"
-                        "HCLKP=%ld, PCLKM=%ld, PCLKD=%ld, PCLKP=%ld\n",
-                       armclk, hclk_msys, hclk_dsys, hclk_psys,
-                       pclk_msys, pclk_dsys, pclk_psys);
-
-       clk_f.rate = armclk;
-       clk_h.rate = hclk_psys;
-       clk_p.rate = pclk_psys;
-
-       for (ptr = 0; ptr < ARRAY_SIZE(clksrcs); ptr++)
-               s3c_set_clksrc(&clksrcs[ptr], true);
-}
-
-static struct clk *clks[] __initdata = {
-       &clk_sclk_hdmi27m,
-       &clk_sclk_hdmiphy,
-       &clk_sclk_usbphy0,
-       &clk_sclk_usbphy1,
-       &clk_pcmcdclk0,
-       &clk_pcmcdclk1,
-       &clk_pcmcdclk2,
-};
-
-static struct clk_lookup s5pv210_clk_lookup[] = {
-       CLKDEV_INIT(NULL, "clk_uart_baud0", &clk_p),
-       CLKDEV_INIT("s5pv210-uart.0", "clk_uart_baud1", &clk_sclk_uart0.clk),
-       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("s5pv210-spi.0", "spi_busclk1", &clk_sclk_spi0.clk),
-       CLKDEV_INIT("s5pv210-spi.1", "spi_busclk1", &clk_sclk_spi1.clk),
-       CLKDEV_INIT("dma-pl330.0", "apb_pclk", &clk_pdma0),
-       CLKDEV_INIT("dma-pl330.1", "apb_pclk", &clk_pdma1),
-};
-
-void __init s5pv210_register_clocks(void)
-{
-       int ptr;
-
-       s3c24xx_register_clocks(clks, ARRAY_SIZE(clks));
-
-       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);
-
-       for (ptr = 0; ptr < ARRAY_SIZE(clksrc_cdev); ptr++)
-               s3c_register_clksrc(clksrc_cdev[ptr], 1);
-
-       s3c_register_clksrc(clksrcs, ARRAY_SIZE(clksrcs));
-       s3c_register_clocks(init_clocks, ARRAY_SIZE(init_clocks));
-
-       s3c_register_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off));
-       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);
-
-}
diff --git a/arch/arm/mach-s5pv210/common.c b/arch/arm/mach-s5pv210/common.c
deleted file mode 100644 (file)
index 7024dcd..0000000
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * Copyright (c) 2009-2011 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com
- *
- * Common Codes for S5PV210
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/interrupt.h>
-#include <linux/list.h>
-#include <linux/timer.h>
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/clk.h>
-#include <linux/io.h>
-#include <linux/device.h>
-#include <clocksource/samsung_pwm.h>
-#include <linux/platform_device.h>
-#include <linux/sched.h>
-#include <linux/dma-mapping.h>
-#include <linux/serial_core.h>
-#include <linux/serial_s3c.h>
-
-#include <asm/proc-fns.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-#include <asm/mach/irq.h>
-
-#include <mach/map.h>
-#include <mach/regs-clock.h>
-
-#include <plat/cpu.h>
-#include <plat/clock.h>
-#include <plat/devs.h>
-#include <plat/sdhci.h>
-#include <plat/adc-core.h>
-#include <plat/ata-core.h>
-#include <plat/fb-core.h>
-#include <plat/fimc-core.h>
-#include <plat/iic-core.h>
-#include <plat/keypad-core.h>
-#include <plat/pwm-core.h>
-#include <plat/tv-core.h>
-#include <plat/spi-core.h>
-
-#include "common.h"
-
-static const char name_s5pv210[] = "S5PV210/S5PC110";
-
-static struct cpu_table cpu_ids[] __initdata = {
-       {
-               .idcode         = S5PV210_CPU_ID,
-               .idmask         = S5PV210_CPU_MASK,
-               .map_io         = s5pv210_map_io,
-               .init_clocks    = s5pv210_init_clocks,
-               .init_uarts     = s5pv210_init_uarts,
-               .init           = s5pv210_init,
-               .name           = name_s5pv210,
-       },
-};
-
-/* Initial IO mappings */
-
-static struct map_desc s5pv210_iodesc[] __initdata = {
-       {
-               .virtual        = (unsigned long)S5P_VA_CHIPID,
-               .pfn            = __phys_to_pfn(S5PV210_PA_CHIPID),
-               .length         = SZ_4K,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = (unsigned long)S3C_VA_SYS,
-               .pfn            = __phys_to_pfn(S5PV210_PA_SYSCON),
-               .length         = SZ_64K,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = (unsigned long)S3C_VA_TIMER,
-               .pfn            = __phys_to_pfn(S5PV210_PA_TIMER),
-               .length         = SZ_16K,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = (unsigned long)S3C_VA_WATCHDOG,
-               .pfn            = __phys_to_pfn(S5PV210_PA_WATCHDOG),
-               .length         = SZ_4K,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = (unsigned long)S5P_VA_SROMC,
-               .pfn            = __phys_to_pfn(S5PV210_PA_SROMC),
-               .length         = SZ_4K,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = (unsigned long)S5P_VA_SYSTIMER,
-               .pfn            = __phys_to_pfn(S5PV210_PA_SYSTIMER),
-               .length         = SZ_4K,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = (unsigned long)S5P_VA_GPIO,
-               .pfn            = __phys_to_pfn(S5PV210_PA_GPIO),
-               .length         = SZ_4K,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = (unsigned long)VA_VIC0,
-               .pfn            = __phys_to_pfn(S5PV210_PA_VIC0),
-               .length         = SZ_16K,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = (unsigned long)VA_VIC1,
-               .pfn            = __phys_to_pfn(S5PV210_PA_VIC1),
-               .length         = SZ_16K,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = (unsigned long)VA_VIC2,
-               .pfn            = __phys_to_pfn(S5PV210_PA_VIC2),
-               .length         = SZ_16K,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = (unsigned long)VA_VIC3,
-               .pfn            = __phys_to_pfn(S5PV210_PA_VIC3),
-               .length         = SZ_16K,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = (unsigned long)S3C_VA_UART,
-               .pfn            = __phys_to_pfn(S3C_PA_UART),
-               .length         = SZ_512K,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = (unsigned long)S5P_VA_DMC0,
-               .pfn            = __phys_to_pfn(S5PV210_PA_DMC0),
-               .length         = SZ_4K,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = (unsigned long)S5P_VA_DMC1,
-               .pfn            = __phys_to_pfn(S5PV210_PA_DMC1),
-               .length         = SZ_4K,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = (unsigned long)S3C_VA_USB_HSPHY,
-               .pfn            =__phys_to_pfn(S5PV210_PA_HSPHY),
-               .length         = SZ_4K,
-               .type           = MT_DEVICE,
-       }
-};
-
-void s5pv210_restart(enum reboot_mode mode, const char *cmd)
-{
-       __raw_writel(0x1, S5P_SWRESET);
-}
-
-static struct samsung_pwm_variant s5pv210_pwm_variant = {
-       .bits           = 32,
-       .div_base       = 0,
-       .has_tint_cstat = true,
-       .tclk_mask      = (1 << 5),
-};
-
-void __init samsung_set_timer_source(unsigned int event, unsigned int source)
-{
-       s5pv210_pwm_variant.output_mask = BIT(SAMSUNG_PWM_NUM) - 1;
-       s5pv210_pwm_variant.output_mask &= ~(BIT(event) | BIT(source));
-}
-
-void __init samsung_timer_init(void)
-{
-       unsigned int timer_irqs[SAMSUNG_PWM_NUM] = {
-               IRQ_TIMER0_VIC, IRQ_TIMER1_VIC, IRQ_TIMER2_VIC,
-               IRQ_TIMER3_VIC, IRQ_TIMER4_VIC,
-       };
-
-       samsung_pwm_clocksource_init(S3C_VA_TIMER,
-                                       timer_irqs, &s5pv210_pwm_variant);
-}
-
-/*
- * s5pv210_map_io
- *
- * register the standard cpu IO areas
- */
-
-void __init s5pv210_init_io(struct map_desc *mach_desc, int size)
-{
-       /* initialize the io descriptors we need for initialization */
-       iotable_init(s5pv210_iodesc, ARRAY_SIZE(s5pv210_iodesc));
-       if (mach_desc)
-               iotable_init(mach_desc, size);
-
-       /* detect cpu id and rev. */
-       s5p_init_cpu(S5P_VA_CHIPID);
-
-       s3c_init_cpu(samsung_cpu_id, cpu_ids, ARRAY_SIZE(cpu_ids));
-
-       samsung_pwm_set_platdata(&s5pv210_pwm_variant);
-}
-
-void __init s5pv210_map_io(void)
-{
-       /* initialise device information early */
-       s5pv210_default_sdhci0();
-       s5pv210_default_sdhci1();
-       s5pv210_default_sdhci2();
-       s5pv210_default_sdhci3();
-
-       s3c_adc_setname("samsung-adc-v3");
-
-       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");
-
-       /* setup TV devices */
-       s5p_hdmi_setname("s5pv210-hdmi");
-
-       s3c64xx_spi_setname("s5pv210-spi");
-}
-
-void __init s5pv210_init_clocks(int xtal)
-{
-       printk(KERN_DEBUG "%s: initializing clocks\n", __func__);
-
-       s3c24xx_register_baseclocks(xtal);
-       s5p_register_clocks(xtal);
-       s5pv210_register_clocks();
-       s5pv210_setup_clocks();
-}
-
-void __init s5pv210_init_irq(void)
-{
-       u32 vic[4];     /* S5PV210 supports 4 VIC */
-
-       /* All the VICs are fully populated. */
-       vic[0] = ~0;
-       vic[1] = ~0;
-       vic[2] = ~0;
-       vic[3] = ~0;
-
-       s5p_init_irq(vic, ARRAY_SIZE(vic));
-}
-
-struct bus_type s5pv210_subsys = {
-       .name           = "s5pv210-core",
-       .dev_name       = "s5pv210-core",
-};
-
-static struct device s5pv210_dev = {
-       .bus    = &s5pv210_subsys,
-};
-
-static int __init s5pv210_core_init(void)
-{
-       return subsys_system_register(&s5pv210_subsys, NULL);
-}
-core_initcall(s5pv210_core_init);
-
-int __init s5pv210_init(void)
-{
-       printk(KERN_INFO "S5PV210: Initializing architecture\n");
-       return device_register(&s5pv210_dev);
-}
-
-/* uart registration process */
-
-void __init s5pv210_init_uarts(struct s3c2410_uartcfg *cfg, int no)
-{
-       s3c24xx_init_uartdevs("s5pv210-uart", s5p_uart_resources, cfg, no);
-}
index fe1beb54e548ee88d9259a2a310a6b7e73ba0904..2ad387c1ecf0498f6ebdacbab69d8810199e1cd6 100644 (file)
 #ifndef __ARCH_ARM_MACH_S5PV210_COMMON_H
 #define __ARCH_ARM_MACH_S5PV210_COMMON_H
 
-#include <linux/reboot.h>
-
-void s5pv210_init_io(struct map_desc *mach_desc, int size);
-void s5pv210_init_irq(void);
-
-void s5pv210_register_clocks(void);
-void s5pv210_setup_clocks(void);
-
-void s5pv210_restart(enum reboot_mode mode, const char *cmd);
-
-extern  int s5pv210_init(void);
-extern void s5pv210_map_io(void);
-extern void s5pv210_init_clocks(int xtal);
-extern void s5pv210_init_uarts(struct s3c2410_uartcfg *cfg, int no);
+#ifdef CONFIG_PM_SLEEP
+u32 exynos_get_eint_wake_mask(void);
+void s5pv210_cpu_resume(void);
+void s5pv210_pm_init(void);
+#else
+static inline void s5pv210_pm_init(void) {}
+#endif
 
 #endif /* __ARCH_ARM_MACH_S5PV210_COMMON_H */
diff --git a/arch/arm/mach-s5pv210/dev-audio.c b/arch/arm/mach-s5pv210/dev-audio.c
deleted file mode 100644 (file)
index 2d67361..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/dev-audio.c
- *
- * Copyright (c) 2010 Samsung Electronics Co. Ltd
- *     Jaswinder Singh <jassi.brar@samsung.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/platform_device.h>
-#include <linux/dma-mapping.h>
-#include <linux/gpio.h>
-
-#include <plat/gpio-cfg.h>
-#include <linux/platform_data/asoc-s3c.h>
-
-#include <mach/map.h>
-#include <mach/dma.h>
-#include <mach/irqs.h>
-
-#define S5PV210_AUDSS_INT_MEM  (0xC0000000)
-
-static int s5pv210_cfg_i2s(struct platform_device *pdev)
-{
-       /* configure GPIO for i2s port */
-       switch (pdev->id) {
-       case 0:
-               s3c_gpio_cfgpin_range(S5PV210_GPI(0), 7, S3C_GPIO_SFN(2));
-               break;
-       case 1:
-               s3c_gpio_cfgpin_range(S5PV210_GPC0(0), 5, S3C_GPIO_SFN(2));
-               break;
-       case 2:
-               s3c_gpio_cfgpin_range(S5PV210_GPC1(0), 5, S3C_GPIO_SFN(4));
-               break;
-       default:
-               printk(KERN_ERR "Invalid Device %d\n", pdev->id);
-               return -EINVAL;
-       }
-
-       return 0;
-}
-
-static struct s3c_audio_pdata i2sv5_pdata = {
-       .cfg_gpio = s5pv210_cfg_i2s,
-       .type = {
-               .i2s = {
-                       .quirks = QUIRK_PRI_6CHAN | QUIRK_SEC_DAI
-                                        | QUIRK_NEED_RSTCLR,
-                       .idma_addr = S5PV210_AUDSS_INT_MEM,
-               },
-       },
-};
-
-static struct resource s5pv210_iis0_resource[] = {
-       [0] = DEFINE_RES_MEM(S5PV210_PA_IIS0, SZ_256),
-       [1] = DEFINE_RES_DMA(DMACH_I2S0_TX),
-       [2] = DEFINE_RES_DMA(DMACH_I2S0_RX),
-       [3] = DEFINE_RES_DMA(DMACH_I2S0S_TX),
-};
-
-struct platform_device s5pv210_device_iis0 = {
-       .name = "samsung-i2s",
-       .id = 0,
-       .num_resources    = ARRAY_SIZE(s5pv210_iis0_resource),
-       .resource         = s5pv210_iis0_resource,
-       .dev = {
-               .platform_data = &i2sv5_pdata,
-       },
-};
-
-static struct s3c_audio_pdata i2sv3_pdata = {
-       .cfg_gpio = s5pv210_cfg_i2s,
-};
-
-static struct resource s5pv210_iis1_resource[] = {
-       [0] = DEFINE_RES_MEM(S5PV210_PA_IIS1, SZ_256),
-       [1] = DEFINE_RES_DMA(DMACH_I2S1_TX),
-       [2] = DEFINE_RES_DMA(DMACH_I2S1_RX),
-};
-
-struct platform_device s5pv210_device_iis1 = {
-       .name             = "samsung-i2s",
-       .id               = 1,
-       .num_resources    = ARRAY_SIZE(s5pv210_iis1_resource),
-       .resource         = s5pv210_iis1_resource,
-       .dev = {
-               .platform_data = &i2sv3_pdata,
-       },
-};
-
-static struct resource s5pv210_iis2_resource[] = {
-       [0] = DEFINE_RES_MEM(S5PV210_PA_IIS2, SZ_256),
-       [1] = DEFINE_RES_DMA(DMACH_I2S2_TX),
-       [2] = DEFINE_RES_DMA(DMACH_I2S2_RX),
-};
-
-struct platform_device s5pv210_device_iis2 = {
-       .name             = "samsung-i2s",
-       .id               = 2,
-       .num_resources    = ARRAY_SIZE(s5pv210_iis2_resource),
-       .resource         = s5pv210_iis2_resource,
-       .dev = {
-               .platform_data = &i2sv3_pdata,
-       },
-};
-
-/* PCM Controller platform_devices */
-
-static int s5pv210_pcm_cfg_gpio(struct platform_device *pdev)
-{
-       switch (pdev->id) {
-       case 0:
-               s3c_gpio_cfgpin_range(S5PV210_GPI(0), 5, S3C_GPIO_SFN(3));
-               break;
-       case 1:
-               s3c_gpio_cfgpin_range(S5PV210_GPC0(0), 5, S3C_GPIO_SFN(3));
-               break;
-       case 2:
-               s3c_gpio_cfgpin_range(S5PV210_GPC1(0), 5, S3C_GPIO_SFN(2));
-               break;
-       default:
-               printk(KERN_DEBUG "Invalid PCM Controller number!");
-               return -EINVAL;
-       }
-
-       return 0;
-}
-
-static struct s3c_audio_pdata s3c_pcm_pdata = {
-       .cfg_gpio = s5pv210_pcm_cfg_gpio,
-};
-
-static struct resource s5pv210_pcm0_resource[] = {
-       [0] = DEFINE_RES_MEM(S5PV210_PA_PCM0, SZ_256),
-       [1] = DEFINE_RES_DMA(DMACH_PCM0_TX),
-       [2] = DEFINE_RES_DMA(DMACH_PCM0_RX),
-};
-
-struct platform_device s5pv210_device_pcm0 = {
-       .name             = "samsung-pcm",
-       .id               = 0,
-       .num_resources    = ARRAY_SIZE(s5pv210_pcm0_resource),
-       .resource         = s5pv210_pcm0_resource,
-       .dev = {
-               .platform_data = &s3c_pcm_pdata,
-       },
-};
-
-static struct resource s5pv210_pcm1_resource[] = {
-       [0] = DEFINE_RES_MEM(S5PV210_PA_PCM1, SZ_256),
-       [1] = DEFINE_RES_DMA(DMACH_PCM1_TX),
-       [2] = DEFINE_RES_DMA(DMACH_PCM1_RX),
-};
-
-struct platform_device s5pv210_device_pcm1 = {
-       .name             = "samsung-pcm",
-       .id               = 1,
-       .num_resources    = ARRAY_SIZE(s5pv210_pcm1_resource),
-       .resource         = s5pv210_pcm1_resource,
-       .dev = {
-               .platform_data = &s3c_pcm_pdata,
-       },
-};
-
-static struct resource s5pv210_pcm2_resource[] = {
-       [0] = DEFINE_RES_MEM(S5PV210_PA_PCM2, SZ_256),
-       [1] = DEFINE_RES_DMA(DMACH_PCM2_TX),
-       [2] = DEFINE_RES_DMA(DMACH_PCM2_RX),
-};
-
-struct platform_device s5pv210_device_pcm2 = {
-       .name             = "samsung-pcm",
-       .id               = 2,
-       .num_resources    = ARRAY_SIZE(s5pv210_pcm2_resource),
-       .resource         = s5pv210_pcm2_resource,
-       .dev = {
-               .platform_data = &s3c_pcm_pdata,
-       },
-};
-
-/* AC97 Controller platform devices */
-
-static int s5pv210_ac97_cfg_gpio(struct platform_device *pdev)
-{
-       return s3c_gpio_cfgpin_range(S5PV210_GPC0(0), 5, S3C_GPIO_SFN(4));
-}
-
-static struct resource s5pv210_ac97_resource[] = {
-       [0] = DEFINE_RES_MEM(S5PV210_PA_AC97, SZ_256),
-       [1] = DEFINE_RES_DMA(DMACH_AC97_PCMOUT),
-       [2] = DEFINE_RES_DMA(DMACH_AC97_PCMIN),
-       [3] = DEFINE_RES_DMA(DMACH_AC97_MICIN),
-       [4] = DEFINE_RES_IRQ(IRQ_AC97),
-};
-
-static struct s3c_audio_pdata s3c_ac97_pdata = {
-       .cfg_gpio = s5pv210_ac97_cfg_gpio,
-};
-
-static u64 s5pv210_ac97_dmamask = DMA_BIT_MASK(32);
-
-struct platform_device s5pv210_device_ac97 = {
-       .name             = "samsung-ac97",
-       .id               = -1,
-       .num_resources    = ARRAY_SIZE(s5pv210_ac97_resource),
-       .resource         = s5pv210_ac97_resource,
-       .dev = {
-               .platform_data = &s3c_ac97_pdata,
-               .dma_mask = &s5pv210_ac97_dmamask,
-               .coherent_dma_mask = DMA_BIT_MASK(32),
-       },
-};
-
-/* S/PDIF Controller platform_device */
-
-static int s5pv210_spdif_cfg_gpio(struct platform_device *pdev)
-{
-       s3c_gpio_cfgpin_range(S5PV210_GPC1(0), 2, S3C_GPIO_SFN(3));
-
-       return 0;
-}
-
-static struct resource s5pv210_spdif_resource[] = {
-       [0] = DEFINE_RES_MEM(S5PV210_PA_SPDIF, SZ_256),
-       [1] = DEFINE_RES_DMA(DMACH_SPDIF),
-};
-
-static struct s3c_audio_pdata samsung_spdif_pdata = {
-       .cfg_gpio = s5pv210_spdif_cfg_gpio,
-};
-
-static u64 s5pv210_spdif_dmamask = DMA_BIT_MASK(32);
-
-struct platform_device s5pv210_device_spdif = {
-       .name           = "samsung-spdif",
-       .id             = -1,
-       .num_resources  = ARRAY_SIZE(s5pv210_spdif_resource),
-       .resource       = s5pv210_spdif_resource,
-       .dev = {
-               .platform_data = &samsung_spdif_pdata,
-               .dma_mask = &s5pv210_spdif_dmamask,
-               .coherent_dma_mask = DMA_BIT_MASK(32),
-       },
-};
diff --git a/arch/arm/mach-s5pv210/dma.c b/arch/arm/mach-s5pv210/dma.c
deleted file mode 100644 (file)
index b8337e2..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/dma.c
- *
- * Copyright (c) 2011 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com
- *
- * Copyright (C) 2010 Samsung Electronics Co. Ltd.
- *     Jaswinder Singh <jassi.brar@samsung.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <linux/dma-mapping.h>
-#include <linux/amba/bus.h>
-#include <linux/amba/pl330.h>
-
-#include <asm/irq.h>
-#include <plat/devs.h>
-#include <plat/irqs.h>
-
-#include <mach/map.h>
-#include <mach/irqs.h>
-#include <mach/dma.h>
-
-static u8 pdma0_peri[] = {
-       DMACH_UART0_RX,
-       DMACH_UART0_TX,
-       DMACH_UART1_RX,
-       DMACH_UART1_TX,
-       DMACH_UART2_RX,
-       DMACH_UART2_TX,
-       DMACH_UART3_RX,
-       DMACH_UART3_TX,
-       DMACH_MAX,
-       DMACH_I2S0_RX,
-       DMACH_I2S0_TX,
-       DMACH_I2S0S_TX,
-       DMACH_I2S1_RX,
-       DMACH_I2S1_TX,
-       DMACH_MAX,
-       DMACH_MAX,
-       DMACH_SPI0_RX,
-       DMACH_SPI0_TX,
-       DMACH_SPI1_RX,
-       DMACH_SPI1_TX,
-       DMACH_MAX,
-       DMACH_MAX,
-       DMACH_AC97_MICIN,
-       DMACH_AC97_PCMIN,
-       DMACH_AC97_PCMOUT,
-       DMACH_MAX,
-       DMACH_PWM,
-       DMACH_SPDIF,
-};
-
-static struct dma_pl330_platdata s5pv210_pdma0_pdata = {
-       .nr_valid_peri = ARRAY_SIZE(pdma0_peri),
-       .peri_id = pdma0_peri,
-};
-
-static AMBA_AHB_DEVICE(s5pv210_pdma0, "dma-pl330.0", 0x00041330,
-       S5PV210_PA_PDMA0, {IRQ_PDMA0}, &s5pv210_pdma0_pdata);
-
-static u8 pdma1_peri[] = {
-       DMACH_UART0_RX,
-       DMACH_UART0_TX,
-       DMACH_UART1_RX,
-       DMACH_UART1_TX,
-       DMACH_UART2_RX,
-       DMACH_UART2_TX,
-       DMACH_UART3_RX,
-       DMACH_UART3_TX,
-       DMACH_MAX,
-       DMACH_I2S0_RX,
-       DMACH_I2S0_TX,
-       DMACH_I2S0S_TX,
-       DMACH_I2S1_RX,
-       DMACH_I2S1_TX,
-       DMACH_I2S2_RX,
-       DMACH_I2S2_TX,
-       DMACH_SPI0_RX,
-       DMACH_SPI0_TX,
-       DMACH_SPI1_RX,
-       DMACH_SPI1_TX,
-       DMACH_MAX,
-       DMACH_MAX,
-       DMACH_PCM0_RX,
-       DMACH_PCM0_TX,
-       DMACH_PCM1_RX,
-       DMACH_PCM1_TX,
-       DMACH_MSM_REQ0,
-       DMACH_MSM_REQ1,
-       DMACH_MSM_REQ2,
-       DMACH_MSM_REQ3,
-       DMACH_PCM2_RX,
-       DMACH_PCM2_TX,
-};
-
-static struct dma_pl330_platdata s5pv210_pdma1_pdata = {
-       .nr_valid_peri = ARRAY_SIZE(pdma1_peri),
-       .peri_id = pdma1_peri,
-};
-
-static AMBA_AHB_DEVICE(s5pv210_pdma1, "dma-pl330.1", 0x00041330,
-       S5PV210_PA_PDMA1, {IRQ_PDMA1}, &s5pv210_pdma1_pdata);
-
-static int __init s5pv210_dma_init(void)
-{
-       dma_cap_set(DMA_SLAVE, s5pv210_pdma0_pdata.cap_mask);
-       dma_cap_set(DMA_CYCLIC, s5pv210_pdma0_pdata.cap_mask);
-       amba_device_register(&s5pv210_pdma0_device, &iomem_resource);
-
-       dma_cap_set(DMA_SLAVE, s5pv210_pdma1_pdata.cap_mask);
-       dma_cap_set(DMA_CYCLIC, s5pv210_pdma1_pdata.cap_mask);
-       amba_device_register(&s5pv210_pdma1_device, &iomem_resource);
-
-       return 0;
-}
-arch_initcall(s5pv210_dma_init);
diff --git a/arch/arm/mach-s5pv210/include/mach/debug-macro.S b/arch/arm/mach-s5pv210/include/mach/debug-macro.S
deleted file mode 100644 (file)
index 30b511a..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/include/mach/debug-macro.S
- *
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * Based on arch/arm/mach-s3c6400/include/mach/debug-macro.S
- *
- * 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.
-*/
-
-/* pull in the relevant register and map files. */
-
-#include <linux/serial_s3c.h>
-#include <mach/map.h>
-
-       /* note, for the boot process to work we have to keep the UART
-        * virtual address aligned to an 1MiB boundary for the L1
-        * mapping the head code makes. We keep the UART virtual address
-        * aligned and add in the offset when we load the value here.
-        */
-
-       .macro addruart, rp, rv, tmp
-               ldr     \rp, = S3C_PA_UART
-               ldr     \rv, = S3C_VA_UART
-#if CONFIG_DEBUG_S3C_UART != 0
-               add     \rp, \rp, #(0x400 * CONFIG_DEBUG_S3C_UART)
-               add     \rv, \rv, #(0x400 * CONFIG_DEBUG_S3C_UART)
-#endif
-       .endm
-
-#define fifo_full fifo_full_s5pv210
-#define fifo_level fifo_level_s5pv210
-
-/* include the reset of the code which will do the work, we're only
- * compiling for a single cpu processor type so the default of s3c2440
- * will be fine with us.
- */
-
-#include <debug/samsung.S>
diff --git a/arch/arm/mach-s5pv210/include/mach/dma.h b/arch/arm/mach-s5pv210/include/mach/dma.h
deleted file mode 100644 (file)
index 201842a..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2010 Samsung Electronics Co. Ltd.
- *     Jaswinder Singh <jassi.brar@samsung.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef __MACH_DMA_H
-#define __MACH_DMA_H
-
-/* This platform uses the common DMA API driver for PL330 */
-#include <plat/dma-pl330.h>
-
-#endif /* __MACH_DMA_H */
diff --git a/arch/arm/mach-s5pv210/include/mach/gpio.h b/arch/arm/mach-s5pv210/include/mach/gpio.h
deleted file mode 100644 (file)
index 6c8b903..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/include/mach/gpio.h
- *
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * S5PV210 - GPIO lib 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 __ASM_ARCH_GPIO_H
-#define __ASM_ARCH_GPIO_H __FILE__
-
-/* Practically, GPIO banks up to MP03 are the configurable gpio banks */
-
-/* GPIO bank sizes */
-#define S5PV210_GPIO_A0_NR     (8)
-#define S5PV210_GPIO_A1_NR     (4)
-#define S5PV210_GPIO_B_NR      (8)
-#define S5PV210_GPIO_C0_NR     (5)
-#define S5PV210_GPIO_C1_NR     (5)
-#define S5PV210_GPIO_D0_NR     (4)
-#define S5PV210_GPIO_D1_NR     (6)
-#define S5PV210_GPIO_E0_NR     (8)
-#define S5PV210_GPIO_E1_NR     (5)
-#define S5PV210_GPIO_F0_NR     (8)
-#define S5PV210_GPIO_F1_NR     (8)
-#define S5PV210_GPIO_F2_NR     (8)
-#define S5PV210_GPIO_F3_NR     (6)
-#define S5PV210_GPIO_G0_NR     (7)
-#define S5PV210_GPIO_G1_NR     (7)
-#define S5PV210_GPIO_G2_NR     (7)
-#define S5PV210_GPIO_G3_NR     (7)
-#define S5PV210_GPIO_H0_NR     (8)
-#define S5PV210_GPIO_H1_NR     (8)
-#define S5PV210_GPIO_H2_NR     (8)
-#define S5PV210_GPIO_H3_NR     (8)
-#define S5PV210_GPIO_I_NR      (7)
-#define S5PV210_GPIO_J0_NR     (8)
-#define S5PV210_GPIO_J1_NR     (6)
-#define S5PV210_GPIO_J2_NR     (8)
-#define S5PV210_GPIO_J3_NR     (8)
-#define S5PV210_GPIO_J4_NR     (5)
-
-#define S5PV210_GPIO_MP01_NR   (8)
-#define S5PV210_GPIO_MP02_NR   (4)
-#define S5PV210_GPIO_MP03_NR   (8)
-#define S5PV210_GPIO_MP04_NR   (8)
-#define S5PV210_GPIO_MP05_NR   (8)
-
-/* GPIO bank numbers */
-
-/* CONFIG_S3C_GPIO_SPACE allows the user to select extra
- * space for debugging purposes so that any accidental
- * change from one gpio bank to another can be caught.
-*/
-
-#define S5PV210_GPIO_NEXT(__gpio) \
-       ((__gpio##_START) + (__gpio##_NR) + CONFIG_S3C_GPIO_SPACE + 1)
-
-enum s5p_gpio_number {
-       S5PV210_GPIO_A0_START   = 0,
-       S5PV210_GPIO_A1_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_A0),
-       S5PV210_GPIO_B_START    = S5PV210_GPIO_NEXT(S5PV210_GPIO_A1),
-       S5PV210_GPIO_C0_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_B),
-       S5PV210_GPIO_C1_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_C0),
-       S5PV210_GPIO_D0_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_C1),
-       S5PV210_GPIO_D1_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_D0),
-       S5PV210_GPIO_E0_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_D1),
-       S5PV210_GPIO_E1_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_E0),
-       S5PV210_GPIO_F0_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_E1),
-       S5PV210_GPIO_F1_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_F0),
-       S5PV210_GPIO_F2_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_F1),
-       S5PV210_GPIO_F3_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_F2),
-       S5PV210_GPIO_G0_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_F3),
-       S5PV210_GPIO_G1_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_G0),
-       S5PV210_GPIO_G2_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_G1),
-       S5PV210_GPIO_G3_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_G2),
-       S5PV210_GPIO_H0_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_G3),
-       S5PV210_GPIO_H1_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_H0),
-       S5PV210_GPIO_H2_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_H1),
-       S5PV210_GPIO_H3_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_H2),
-       S5PV210_GPIO_I_START    = S5PV210_GPIO_NEXT(S5PV210_GPIO_H3),
-       S5PV210_GPIO_J0_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_I),
-       S5PV210_GPIO_J1_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_J0),
-       S5PV210_GPIO_J2_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_J1),
-       S5PV210_GPIO_J3_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_J2),
-       S5PV210_GPIO_J4_START   = S5PV210_GPIO_NEXT(S5PV210_GPIO_J3),
-       S5PV210_GPIO_MP01_START = S5PV210_GPIO_NEXT(S5PV210_GPIO_J4),
-       S5PV210_GPIO_MP02_START = S5PV210_GPIO_NEXT(S5PV210_GPIO_MP01),
-       S5PV210_GPIO_MP03_START = S5PV210_GPIO_NEXT(S5PV210_GPIO_MP02),
-       S5PV210_GPIO_MP04_START = S5PV210_GPIO_NEXT(S5PV210_GPIO_MP03),
-       S5PV210_GPIO_MP05_START = S5PV210_GPIO_NEXT(S5PV210_GPIO_MP04),
-};
-
-/* S5PV210 GPIO number definitions */
-#define S5PV210_GPA0(_nr)      (S5PV210_GPIO_A0_START + (_nr))
-#define S5PV210_GPA1(_nr)      (S5PV210_GPIO_A1_START + (_nr))
-#define S5PV210_GPB(_nr)       (S5PV210_GPIO_B_START + (_nr))
-#define S5PV210_GPC0(_nr)      (S5PV210_GPIO_C0_START + (_nr))
-#define S5PV210_GPC1(_nr)      (S5PV210_GPIO_C1_START + (_nr))
-#define S5PV210_GPD0(_nr)      (S5PV210_GPIO_D0_START + (_nr))
-#define S5PV210_GPD1(_nr)      (S5PV210_GPIO_D1_START + (_nr))
-#define S5PV210_GPE0(_nr)      (S5PV210_GPIO_E0_START + (_nr))
-#define S5PV210_GPE1(_nr)      (S5PV210_GPIO_E1_START + (_nr))
-#define S5PV210_GPF0(_nr)      (S5PV210_GPIO_F0_START + (_nr))
-#define S5PV210_GPF1(_nr)      (S5PV210_GPIO_F1_START + (_nr))
-#define S5PV210_GPF2(_nr)      (S5PV210_GPIO_F2_START + (_nr))
-#define S5PV210_GPF3(_nr)      (S5PV210_GPIO_F3_START + (_nr))
-#define S5PV210_GPG0(_nr)      (S5PV210_GPIO_G0_START + (_nr))
-#define S5PV210_GPG1(_nr)      (S5PV210_GPIO_G1_START + (_nr))
-#define S5PV210_GPG2(_nr)      (S5PV210_GPIO_G2_START + (_nr))
-#define S5PV210_GPG3(_nr)      (S5PV210_GPIO_G3_START + (_nr))
-#define S5PV210_GPH0(_nr)      (S5PV210_GPIO_H0_START + (_nr))
-#define S5PV210_GPH1(_nr)      (S5PV210_GPIO_H1_START + (_nr))
-#define S5PV210_GPH2(_nr)      (S5PV210_GPIO_H2_START + (_nr))
-#define S5PV210_GPH3(_nr)      (S5PV210_GPIO_H3_START + (_nr))
-#define S5PV210_GPI(_nr)       (S5PV210_GPIO_I_START + (_nr))
-#define S5PV210_GPJ0(_nr)      (S5PV210_GPIO_J0_START + (_nr))
-#define S5PV210_GPJ1(_nr)      (S5PV210_GPIO_J1_START + (_nr))
-#define S5PV210_GPJ2(_nr)      (S5PV210_GPIO_J2_START + (_nr))
-#define S5PV210_GPJ3(_nr)      (S5PV210_GPIO_J3_START + (_nr))
-#define S5PV210_GPJ4(_nr)      (S5PV210_GPIO_J4_START + (_nr))
-#define S5PV210_MP01(_nr)      (S5PV210_GPIO_MP01_START + (_nr))
-#define S5PV210_MP02(_nr)      (S5PV210_GPIO_MP02_START + (_nr))
-#define S5PV210_MP03(_nr)      (S5PV210_GPIO_MP03_START + (_nr))
-#define S5PV210_MP04(_nr)      (S5PV210_GPIO_MP04_START + (_nr))
-#define S5PV210_MP05(_nr)      (S5PV210_GPIO_MP05_START + (_nr))
-
-/* the end of the S5PV210 specific gpios */
-#define S5PV210_GPIO_END       (S5PV210_MP05(S5PV210_GPIO_MP05_NR) + 1)
-#define S3C_GPIO_END           S5PV210_GPIO_END
-
-/* define the number of gpios we need to the one after the MP05() range */
-#define ARCH_NR_GPIOS          (S5PV210_MP05(S5PV210_GPIO_MP05_NR) +   \
-                                CONFIG_SAMSUNG_GPIO_EXTRA + 1)
-
-#endif /* __ASM_ARCH_GPIO_H */
diff --git a/arch/arm/mach-s5pv210/include/mach/hardware.h b/arch/arm/mach-s5pv210/include/mach/hardware.h
deleted file mode 100644 (file)
index fada7a3..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/include/mach/hardware.h
- *
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * S5PV210 - Hardware 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 __ASM_ARCH_HARDWARE_H
-#define __ASM_ARCH_HARDWARE_H __FILE__
-
-/* currently nothing here, placeholder */
-
-#endif /* __ASM_ARCH_HARDWARE_H */
diff --git a/arch/arm/mach-s5pv210/include/mach/irqs.h b/arch/arm/mach-s5pv210/include/mach/irqs.h
deleted file mode 100644 (file)
index 5e0de3a..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/include/mach/irqs.h
- *
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * S5PV210 - IRQ definitions
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#ifndef __ASM_ARCH_IRQS_H
-#define __ASM_ARCH_IRQS_H __FILE__
-
-#include <plat/irqs.h>
-
-/* VIC0: System, DMA, Timer */
-
-#define IRQ_EINT16_31          S5P_IRQ_VIC0(16)
-#define IRQ_BATF               S5P_IRQ_VIC0(17)
-#define IRQ_MDMA               S5P_IRQ_VIC0(18)
-#define IRQ_PDMA0              S5P_IRQ_VIC0(19)
-#define IRQ_PDMA1              S5P_IRQ_VIC0(20)
-#define IRQ_TIMER0_VIC         S5P_IRQ_VIC0(21)
-#define IRQ_TIMER1_VIC         S5P_IRQ_VIC0(22)
-#define IRQ_TIMER2_VIC         S5P_IRQ_VIC0(23)
-#define IRQ_TIMER3_VIC         S5P_IRQ_VIC0(24)
-#define IRQ_TIMER4_VIC         S5P_IRQ_VIC0(25)
-#define IRQ_SYSTIMER           S5P_IRQ_VIC0(26)
-#define IRQ_WDT                        S5P_IRQ_VIC0(27)
-#define IRQ_RTC_ALARM          S5P_IRQ_VIC0(28)
-#define IRQ_RTC_TIC            S5P_IRQ_VIC0(29)
-#define IRQ_GPIOINT            S5P_IRQ_VIC0(30)
-#define IRQ_FIMC3              S5P_IRQ_VIC0(31)
-
-/* VIC1: ARM, Power, Memory, Connectivity, Storage */
-
-#define IRQ_PMU                        S5P_IRQ_VIC1(0)
-#define IRQ_CORTEX1            S5P_IRQ_VIC1(1)
-#define IRQ_CORTEX2            S5P_IRQ_VIC1(2)
-#define IRQ_CORTEX3            S5P_IRQ_VIC1(3)
-#define IRQ_CORTEX4            S5P_IRQ_VIC1(4)
-#define IRQ_IEMAPC             S5P_IRQ_VIC1(5)
-#define IRQ_IEMIEC             S5P_IRQ_VIC1(6)
-#define IRQ_ONENAND            S5P_IRQ_VIC1(7)
-#define IRQ_NFC                        S5P_IRQ_VIC1(8)
-#define IRQ_CFCON              S5P_IRQ_VIC1(9)
-#define IRQ_UART0              S5P_IRQ_VIC1(10)
-#define IRQ_UART1              S5P_IRQ_VIC1(11)
-#define IRQ_UART2              S5P_IRQ_VIC1(12)
-#define IRQ_UART3              S5P_IRQ_VIC1(13)
-#define IRQ_IIC                        S5P_IRQ_VIC1(14)
-#define IRQ_SPI0               S5P_IRQ_VIC1(15)
-#define IRQ_SPI1               S5P_IRQ_VIC1(16)
-#define IRQ_SPI2               S5P_IRQ_VIC1(17)
-#define IRQ_IRDA               S5P_IRQ_VIC1(18)
-#define IRQ_IIC2               S5P_IRQ_VIC1(19)
-#define IRQ_IIC_HDMIPHY                S5P_IRQ_VIC1(20)
-#define IRQ_HSIRX              S5P_IRQ_VIC1(21)
-#define IRQ_HSITX              S5P_IRQ_VIC1(22)
-#define IRQ_UHOST              S5P_IRQ_VIC1(23)
-#define IRQ_OTG                        S5P_IRQ_VIC1(24)
-#define IRQ_MSM                        S5P_IRQ_VIC1(25)
-#define IRQ_HSMMC0             S5P_IRQ_VIC1(26)
-#define IRQ_HSMMC1             S5P_IRQ_VIC1(27)
-#define IRQ_HSMMC2             S5P_IRQ_VIC1(28)
-#define IRQ_MIPI_CSIS          S5P_IRQ_VIC1(29)
-#define IRQ_MIPIDSI            S5P_IRQ_VIC1(30)
-#define IRQ_ONENAND_AUDI       S5P_IRQ_VIC1(31)
-
-/* VIC2: Multimedia, Audio, Security */
-
-#define IRQ_LCD0               S5P_IRQ_VIC2(0)
-#define IRQ_LCD1               S5P_IRQ_VIC2(1)
-#define IRQ_LCD2               S5P_IRQ_VIC2(2)
-#define IRQ_LCD3               S5P_IRQ_VIC2(3)
-#define IRQ_ROTATOR            S5P_IRQ_VIC2(4)
-#define IRQ_FIMC0              S5P_IRQ_VIC2(5)
-#define IRQ_FIMC1              S5P_IRQ_VIC2(6)
-#define IRQ_FIMC2              S5P_IRQ_VIC2(7)
-#define IRQ_JPEG               S5P_IRQ_VIC2(8)
-#define IRQ_2D                 S5P_IRQ_VIC2(9)
-#define IRQ_3D                 S5P_IRQ_VIC2(10)
-#define IRQ_MIXER              S5P_IRQ_VIC2(11)
-#define IRQ_HDMI               S5P_IRQ_VIC2(12)
-#define IRQ_IIC1               S5P_IRQ_VIC2(13)
-#define IRQ_MFC                        S5P_IRQ_VIC2(14)
-#define IRQ_SDO                        S5P_IRQ_VIC2(15)
-#define IRQ_I2S0               S5P_IRQ_VIC2(16)
-#define IRQ_I2S1               S5P_IRQ_VIC2(17)
-#define IRQ_I2S2               S5P_IRQ_VIC2(18)
-#define IRQ_AC97               S5P_IRQ_VIC2(19)
-#define IRQ_PCM0               S5P_IRQ_VIC2(20)
-#define IRQ_PCM1               S5P_IRQ_VIC2(21)
-#define IRQ_SPDIF              S5P_IRQ_VIC2(22)
-#define IRQ_ADC                        S5P_IRQ_VIC2(23)
-#define IRQ_PENDN              S5P_IRQ_VIC2(24)
-#define IRQ_TC                 IRQ_PENDN
-#define IRQ_KEYPAD             S5P_IRQ_VIC2(25)
-#define IRQ_CG                 S5P_IRQ_VIC2(26)
-#define IRQ_SSS_INT            S5P_IRQ_VIC2(27)
-#define IRQ_SSS_HASH           S5P_IRQ_VIC2(28)
-#define IRQ_PCM2               S5P_IRQ_VIC2(29)
-#define IRQ_SDMIRQ             S5P_IRQ_VIC2(30)
-#define IRQ_SDMFIQ             S5P_IRQ_VIC2(31)
-
-/* VIC3: Etc */
-
-#define IRQ_IPC                        S5P_IRQ_VIC3(0)
-#define IRQ_HOSTIF             S5P_IRQ_VIC3(1)
-#define IRQ_HSMMC3             S5P_IRQ_VIC3(2)
-#define IRQ_CEC                        S5P_IRQ_VIC3(3)
-#define IRQ_TSI                        S5P_IRQ_VIC3(4)
-#define IRQ_MDNIE0             S5P_IRQ_VIC3(5)
-#define IRQ_MDNIE1             S5P_IRQ_VIC3(6)
-#define IRQ_MDNIE2             S5P_IRQ_VIC3(7)
-#define IRQ_MDNIE3             S5P_IRQ_VIC3(8)
-#define IRQ_VIC_END            S5P_IRQ_VIC3(31)
-
-#define S5P_EINT_BASE1         (S5P_IRQ_VIC0(0))
-#define S5P_EINT_BASE2         (IRQ_VIC_END + 1)
-
-/* GPIO interrupt */
-#define S5P_GPIOINT_BASE       (IRQ_EINT(31) + 1)
-#define S5P_GPIOINT_GROUP_MAXNR        22
-
-/* Set the default NR_IRQS */
-#define NR_IRQS                        (IRQ_EINT(31) + S5P_GPIOINT_COUNT + 1)
-
-/* Compatibility */
-#define IRQ_LCD_FIFO           IRQ_LCD0
-#define IRQ_LCD_VSYNC          IRQ_LCD1
-#define IRQ_LCD_SYSTEM         IRQ_LCD2
-#define IRQ_MIPI_CSIS0         IRQ_MIPI_CSIS
-
-#endif /* ASM_ARCH_IRQS_H */
diff --git a/arch/arm/mach-s5pv210/include/mach/map.h b/arch/arm/mach-s5pv210/include/mach/map.h
deleted file mode 100644 (file)
index 763929a..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/include/mach/map.h
- *
- * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * S5PV210 - Memory map definitions
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#ifndef __ASM_ARCH_MAP_H
-#define __ASM_ARCH_MAP_H __FILE__
-
-#include <plat/map-base.h>
-#include <plat/map-s5p.h>
-
-#define S5PV210_PA_SDRAM               0x20000000
-
-#define S5PV210_PA_SROM_BANK5          0xA8000000
-
-#define S5PC110_PA_ONENAND             0xB0000000
-#define S5PC110_PA_ONENAND_DMA         0xB0600000
-
-#define S5PV210_PA_CHIPID              0xE0000000
-
-#define S5PV210_PA_SYSCON              0xE0100000
-
-#define S5PV210_PA_GPIO                        0xE0200000
-
-#define S5PV210_PA_SPDIF               0xE1100000
-
-#define S5PV210_PA_SPI0                        0xE1300000
-#define S5PV210_PA_SPI1                        0xE1400000
-
-#define S5PV210_PA_KEYPAD              0xE1600000
-
-#define S5PV210_PA_ADC                 0xE1700000
-
-#define S5PV210_PA_IIC0                        0xE1800000
-#define S5PV210_PA_IIC1                        0xFAB00000
-#define S5PV210_PA_IIC2                        0xE1A00000
-
-#define S5PV210_PA_AC97                        0xE2200000
-
-#define S5PV210_PA_PCM0                        0xE2300000
-#define S5PV210_PA_PCM1                        0xE1200000
-#define S5PV210_PA_PCM2                        0xE2B00000
-
-#define S5PV210_PA_TIMER               0xE2500000
-#define S5PV210_PA_SYSTIMER            0xE2600000
-#define S5PV210_PA_WATCHDOG            0xE2700000
-#define S5PV210_PA_RTC                 0xE2800000
-
-#define S5PV210_PA_UART                        0xE2900000
-
-#define S5PV210_PA_SROMC               0xE8000000
-
-#define S5PV210_PA_CFCON               0xE8200000
-
-#define S5PV210_PA_MFC                 0xF1700000
-
-#define S5PV210_PA_HSMMC(x)            (0xEB000000 + ((x) * 0x100000))
-
-#define S5PV210_PA_HSOTG               0xEC000000
-#define S5PV210_PA_HSPHY               0xEC100000
-
-#define S5PV210_PA_IIS0                        0xEEE30000
-#define S5PV210_PA_IIS1                        0xE2100000
-#define S5PV210_PA_IIS2                        0xE2A00000
-
-#define S5PV210_PA_DMC0                        0xF0000000
-#define S5PV210_PA_DMC1                        0xF1400000
-
-#define S5PV210_PA_VIC0                        0xF2000000
-#define S5PV210_PA_VIC1                        0xF2100000
-#define S5PV210_PA_VIC2                        0xF2200000
-#define S5PV210_PA_VIC3                        0xF2300000
-
-#define S5PV210_PA_FB                  0xF8000000
-
-#define S5PV210_PA_MDMA                        0xFA200000
-#define S5PV210_PA_PDMA0               0xE0900000
-#define S5PV210_PA_PDMA1               0xE0A00000
-
-#define S5PV210_PA_MIPI_CSIS           0xFA600000
-
-#define S5PV210_PA_FIMC0               0xFB200000
-#define S5PV210_PA_FIMC1               0xFB300000
-#define S5PV210_PA_FIMC2               0xFB400000
-
-#define S5PV210_PA_JPEG                        0xFB600000
-
-#define S5PV210_PA_SDO                 0xF9000000
-#define S5PV210_PA_VP                  0xF9100000
-#define S5PV210_PA_MIXER               0xF9200000
-#define S5PV210_PA_HDMI                        0xFA100000
-#define S5PV210_PA_IIC_HDMIPHY         0xFA900000
-
-/* Compatibiltiy Defines */
-
-#define S3C_PA_FB                      S5PV210_PA_FB
-#define S3C_PA_HSMMC0                  S5PV210_PA_HSMMC(0)
-#define S3C_PA_HSMMC1                  S5PV210_PA_HSMMC(1)
-#define S3C_PA_HSMMC2                  S5PV210_PA_HSMMC(2)
-#define S3C_PA_HSMMC3                  S5PV210_PA_HSMMC(3)
-#define S3C_PA_IIC                     S5PV210_PA_IIC0
-#define S3C_PA_IIC1                    S5PV210_PA_IIC1
-#define S3C_PA_IIC2                    S5PV210_PA_IIC2
-#define S3C_PA_RTC                     S5PV210_PA_RTC
-#define S3C_PA_USB_HSOTG               S5PV210_PA_HSOTG
-#define S3C_PA_WDT                     S5PV210_PA_WATCHDOG
-#define S3C_PA_SPI0                    S5PV210_PA_SPI0
-#define S3C_PA_SPI1                    S5PV210_PA_SPI1
-
-#define S5P_PA_CHIPID                  S5PV210_PA_CHIPID
-#define S5P_PA_FIMC0                   S5PV210_PA_FIMC0
-#define S5P_PA_FIMC1                   S5PV210_PA_FIMC1
-#define S5P_PA_FIMC2                   S5PV210_PA_FIMC2
-#define S5P_PA_MIPI_CSIS0              S5PV210_PA_MIPI_CSIS
-#define S5P_PA_MFC                     S5PV210_PA_MFC
-#define S5P_PA_IIC_HDMIPHY             S5PV210_PA_IIC_HDMIPHY
-
-#define S5P_PA_SDO                     S5PV210_PA_SDO
-#define S5P_PA_VP                      S5PV210_PA_VP
-#define S5P_PA_MIXER                   S5PV210_PA_MIXER
-#define S5P_PA_HDMI                    S5PV210_PA_HDMI
-
-#define S5P_PA_ONENAND                 S5PC110_PA_ONENAND
-#define S5P_PA_ONENAND_DMA             S5PC110_PA_ONENAND_DMA
-#define S5P_PA_SDRAM                   S5PV210_PA_SDRAM
-#define S5P_PA_SROMC                   S5PV210_PA_SROMC
-#define S5P_PA_SYSCON                  S5PV210_PA_SYSCON
-#define S5P_PA_TIMER                   S5PV210_PA_TIMER
-
-#define S5P_PA_JPEG                    S5PV210_PA_JPEG
-
-#define SAMSUNG_PA_ADC                 S5PV210_PA_ADC
-#define SAMSUNG_PA_CFCON               S5PV210_PA_CFCON
-#define SAMSUNG_PA_KEYPAD              S5PV210_PA_KEYPAD
-#define SAMSUNG_PA_TIMER               S5PV210_PA_TIMER
-
-/* UART */
-
-#define S3C_VA_UARTx(x)                        (S3C_VA_UART + ((x) * S3C_UART_OFFSET))
-
-#define S3C_PA_UART                    S5PV210_PA_UART
-
-#define S5P_PA_UART(x)                 (S3C_PA_UART + ((x) * S3C_UART_OFFSET))
-#define S5P_PA_UART0                   S5P_PA_UART(0)
-#define S5P_PA_UART1                   S5P_PA_UART(1)
-#define S5P_PA_UART2                   S5P_PA_UART(2)
-#define S5P_PA_UART3                   S5P_PA_UART(3)
-
-#define S5P_SZ_UART                    SZ_256
-
-#endif /* __ASM_ARCH_MAP_H */
diff --git a/arch/arm/mach-s5pv210/include/mach/memory.h b/arch/arm/mach-s5pv210/include/mach/memory.h
deleted file mode 100644 (file)
index 2d3cfa2..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/include/mach/memory.h
- *
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * S5PV210 - Memory definitions
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#ifndef __ASM_ARCH_MEMORY_H
-#define __ASM_ARCH_MEMORY_H
-
-#define PLAT_PHYS_OFFSET               UL(0x20000000)
-
-/*
- * Sparsemem support
- * Physical memory can be located from 0x20000000 to 0x7fffffff,
- * so MAX_PHYSMEM_BITS is 31.
- */
-
-#define MAX_PHYSMEM_BITS       31
-#define SECTION_SIZE_BITS      28
-
-#endif /* __ASM_ARCH_MEMORY_H */
diff --git a/arch/arm/mach-s5pv210/include/mach/pm-core.h b/arch/arm/mach-s5pv210/include/mach/pm-core.h
deleted file mode 100644 (file)
index eba8aea..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/include/mach/pm-core.h
- *
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com
- *
- * Based on arch/arm/mach-s3c2410/include/mach/pm-core.h,
- * Copyright 2008 Simtec Electronics
- *      Ben Dooks <ben@simtec.co.uk>
- *      http://armlinux.simtec.co.uk/
- *
- * S5PV210 - PM core support for arch/arm/plat-s5p/pm.c
- *
- * 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.
-*/
-
-static inline void s3c_pm_debug_init_uart(void)
-{
-       /* nothing here yet */
-}
-
-static inline void s3c_pm_arch_prepare_irqs(void)
-{
-       __raw_writel(s3c_irqwake_intmask, S5P_WAKEUP_MASK);
-       __raw_writel(s3c_irqwake_eintmask, S5P_EINT_WAKEUP_MASK);
-}
-
-static inline void s3c_pm_arch_stop_clocks(void)
-{
-       /* nothing here yet */
-}
-
-static inline void s3c_pm_arch_show_resume_irqs(void)
-{
-       /* nothing here yet */
-}
-
-static inline void s3c_pm_arch_update_uart(void __iomem *regs,
-                                          struct pm_uart_save *save)
-{
-       /* nothing here yet */
-}
-
-static inline void s3c_pm_restored_gpios(void) { }
-static inline void samsung_pm_saved_gpios(void) { }
index e345584d4c34ccbd8363680038ad1511adf04b2a..b14ffcd7f6ccbcc523b4f0cf4db47ebe30305b5e 100644 (file)
@@ -13,7 +13,7 @@
 #ifndef __ASM_ARCH_REGS_CLOCK_H
 #define __ASM_ARCH_REGS_CLOCK_H __FILE__
 
-#include <mach/map.h>
+#include <plat/map-base.h>
 
 #define S5P_CLKREG(x)          (S3C_VA_SYS + (x))
 
diff --git a/arch/arm/mach-s5pv210/include/mach/regs-gpio.h b/arch/arm/mach-s5pv210/include/mach/regs-gpio.h
deleted file mode 100644 (file)
index de0c899..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/include/mach/regs-gpio.h
- *
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com
- *
- * S5PV210 - GPIO (including EINT) register definitions
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#ifndef __ASM_ARCH_REGS_GPIO_H
-#define __ASM_ARCH_REGS_GPIO_H __FILE__
-
-#include <mach/map.h>
-
-#define S5PV210_EINT30CON              (S5P_VA_GPIO + 0xE00)
-#define S5P_EINT_CON(x)                        (S5PV210_EINT30CON + ((x) * 0x4))
-
-#define S5PV210_EINT30FLTCON0          (S5P_VA_GPIO + 0xE80)
-#define S5P_EINT_FLTCON(x)             (S5PV210_EINT30FLTCON0 + ((x) * 0x4))
-
-#define S5PV210_EINT30MASK             (S5P_VA_GPIO + 0xF00)
-#define S5P_EINT_MASK(x)               (S5PV210_EINT30MASK + ((x) * 0x4))
-
-#define S5PV210_EINT30PEND             (S5P_VA_GPIO + 0xF40)
-#define S5P_EINT_PEND(x)               (S5PV210_EINT30PEND + ((x) * 0x4))
-
-#define EINT_REG_NR(x)                 (EINT_OFFSET(x) >> 3)
-
-#define eint_irq_to_bit(irq)           (1 << (EINT_OFFSET(irq) & 0x7))
-
-#define EINT_MODE              S3C_GPIO_SFN(0xf)
-
-#define EINT_GPIO_0(x)         S5PV210_GPH0(x)
-#define EINT_GPIO_1(x)         S5PV210_GPH1(x)
-#define EINT_GPIO_2(x)         S5PV210_GPH2(x)
-#define EINT_GPIO_3(x)         S5PV210_GPH3(x)
-
-#endif /* __ASM_ARCH_REGS_GPIO_H */
diff --git a/arch/arm/mach-s5pv210/include/mach/regs-irq.h b/arch/arm/mach-s5pv210/include/mach/regs-irq.h
deleted file mode 100644 (file)
index d8bc1e6..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/include/mach/regs-irq.h
- *
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * S5PV210 - IRQ register definitions
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#ifndef __ASM_ARCH_REGS_IRQ_H
-#define __ASM_ARCH_REGS_IRQ_H __FILE__
-
-#include <mach/map.h>
-
-#endif /* __ASM_ARCH_REGS_IRQ_H */
diff --git a/arch/arm/mach-s5pv210/mach-aquila.c b/arch/arm/mach-s5pv210/mach-aquila.c
deleted file mode 100644 (file)
index cc37eda..0000000
+++ /dev/null
@@ -1,687 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/mach-aquila.c
- *
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/init.h>
-#include <linux/serial_core.h>
-#include <linux/serial_s3c.h>
-#include <linux/fb.h>
-#include <linux/i2c.h>
-#include <linux/i2c-gpio.h>
-#include <linux/mfd/max8998.h>
-#include <linux/mfd/wm8994/pdata.h>
-#include <linux/regulator/fixed.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 <asm/setup.h>
-#include <asm/mach-types.h>
-
-#include <video/samsung_fimd.h>
-#include <mach/map.h>
-#include <mach/regs-clock.h>
-
-#include <plat/gpio-cfg.h>
-#include <plat/devs.h>
-#include <plat/cpu.h>
-#include <plat/fb.h>
-#include <plat/fimc-core.h>
-#include <plat/sdhci.h>
-#include <plat/samsung-time.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 |        \
-                                S3C2410_UCON_TXIRQMODE |       \
-                                S3C2410_UCON_RXIRQMODE |       \
-                                S3C2410_UCON_RXFIFO_TOI |      \
-                                S3C2443_UCON_RXERR_IRQEN)
-
-#define AQUILA_ULCON_DEFAULT   S3C2410_LCON_CS8
-
-#define AQUILA_UFCON_DEFAULT   S3C2410_UFCON_FIFOMODE
-
-static struct s3c2410_uartcfg aquila_uartcfgs[] __initdata = {
-       [0] = {
-               .hwport         = 0,
-               .flags          = 0,
-               .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           = AQUILA_UCON_DEFAULT,
-               .ulcon          = AQUILA_ULCON_DEFAULT,
-               .ufcon          = AQUILA_UFCON_DEFAULT |
-                       S5PV210_UFCON_TXTRIG64 | S5PV210_UFCON_RXTRIG64,
-       },
-       [2] = {
-               .hwport         = 2,
-               .flags          = 0,
-               .ucon           = AQUILA_UCON_DEFAULT,
-               .ulcon          = AQUILA_ULCON_DEFAULT,
-               .ufcon          = AQUILA_UFCON_DEFAULT |
-                       S5PV210_UFCON_TXTRIG16 | S5PV210_UFCON_RXTRIG16,
-       },
-       [3] = {
-               .hwport         = 3,
-               .flags          = 0,
-               .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 = {
-       .max_bpp = 32,
-       .default_bpp = 16,
-       .xres = 480,
-       .yres = 800,
-};
-
-static struct s3c_fb_pd_win aquila_fb_win1 = {
-       .max_bpp = 32,
-       .default_bpp = 16,
-       .xres = 480,
-       .yres = 800,
-};
-
-static struct fb_videomode aquila_lcd_timing = {
-       .left_margin = 16,
-       .right_margin = 16,
-       .upper_margin = 3,
-       .lower_margin = 28,
-       .hsync_len = 2,
-       .vsync_len = 2,
-       .xres = 480,
-       .yres = 800,
-};
-
-static struct s3c_fb_platdata aquila_lcd_pdata __initdata = {
-       .win[0]         = &aquila_fb_win0,
-       .win[1]         = &aquila_fb_win1,
-       .vtiming        = &aquila_lcd_timing,
-       .vidcon0        = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
-       .vidcon1        = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC |
-                         VIDCON1_INV_VCLK | VIDCON1_INV_VDEN,
-       .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 =
-       REGULATOR_SUPPLY("vddarm", NULL);
-
-static struct regulator_consumer_supply buck2_consumer =
-       REGULATOR_SUPPLY("vddint", NULL);
-
-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  = 1,
-       .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  = 1,
-       .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,
-       .buck1_set1     = S5PV210_GPH0(3),
-       .buck1_set2     = S5PV210_GPH0(4),
-       .buck2_set3     = S5PV210_GPH0(5),
-       .buck1_voltage  = { 1200000, 1200000, 1200000, 1200000 },
-       .buck2_voltage  = { 1200000, 1200000 },
-};
-#endif
-
-static struct regulator_consumer_supply wm8994_fixed_voltage0_supplies[] = {
-       REGULATOR_SUPPLY("DBVDD", "5-001a"),
-       REGULATOR_SUPPLY("AVDD2", "5-001a"),
-       REGULATOR_SUPPLY("CPVDD", "5-001a"),
-};
-
-static struct regulator_consumer_supply wm8994_fixed_voltage1_supplies[] = {
-       REGULATOR_SUPPLY("SPKVDD1", "5-001a"),
-       REGULATOR_SUPPLY("SPKVDD2", "5-001a"),
-};
-
-static struct regulator_init_data wm8994_fixed_voltage0_init_data = {
-       .constraints = {
-               .always_on = 1,
-       },
-       .num_consumer_supplies  = ARRAY_SIZE(wm8994_fixed_voltage0_supplies),
-       .consumer_supplies      = wm8994_fixed_voltage0_supplies,
-};
-
-static struct regulator_init_data wm8994_fixed_voltage1_init_data = {
-       .constraints = {
-               .always_on = 1,
-       },
-       .num_consumer_supplies  = ARRAY_SIZE(wm8994_fixed_voltage1_supplies),
-       .consumer_supplies      = wm8994_fixed_voltage1_supplies,
-};
-
-static struct fixed_voltage_config wm8994_fixed_voltage0_config = {
-       .supply_name    = "VCC_1.8V_PDA",
-       .microvolts     = 1800000,
-       .gpio           = -EINVAL,
-       .init_data      = &wm8994_fixed_voltage0_init_data,
-};
-
-static struct fixed_voltage_config wm8994_fixed_voltage1_config = {
-       .supply_name    = "V_BAT",
-       .microvolts     = 3700000,
-       .gpio           = -EINVAL,
-       .init_data      = &wm8994_fixed_voltage1_init_data,
-};
-
-static struct platform_device wm8994_fixed_voltage0 = {
-       .name           = "reg-fixed-voltage",
-       .id             = 0,
-       .dev            = {
-               .platform_data  = &wm8994_fixed_voltage0_config,
-       },
-};
-
-static struct platform_device wm8994_fixed_voltage1 = {
-       .name           = "reg-fixed-voltage",
-       .id             = 1,
-       .dev            = {
-               .platform_data  = &wm8994_fixed_voltage1_config,
-       },
-};
-
-static struct regulator_consumer_supply wm8994_avdd1_supply =
-       REGULATOR_SUPPLY("AVDD1", "5-001a");
-
-static struct regulator_consumer_supply wm8994_dcvdd_supply =
-       REGULATOR_SUPPLY("DCVDD", "5-001a");
-
-static struct regulator_init_data wm8994_ldo1_data = {
-       .constraints    = {
-               .name           = "AVDD1_3.0V",
-               .valid_ops_mask = REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies  = 1,
-       .consumer_supplies      = &wm8994_avdd1_supply,
-};
-
-static struct regulator_init_data wm8994_ldo2_data = {
-       .constraints    = {
-               .name           = "DCVDD_1.0V",
-       },
-       .num_consumer_supplies  = 1,
-       .consumer_supplies      = &wm8994_dcvdd_supply,
-};
-
-static struct wm8994_pdata wm8994_platform_data = {
-       /* configure gpio1 function: 0x0001(Logic level input/output) */
-       .gpio_defaults[0] = 0x0001,
-       /* configure gpio3/4/5/7 function for AIF2 voice */
-       .gpio_defaults[2] = 0x8100,
-       .gpio_defaults[3] = 0x8100,
-       .gpio_defaults[4] = 0x8100,
-       .gpio_defaults[6] = 0x0100,
-       /* configure gpio8/9/10/11 function for AIF3 BT */
-       .gpio_defaults[7] = 0x8100,
-       .gpio_defaults[8] = 0x0100,
-       .gpio_defaults[9] = 0x0100,
-       .gpio_defaults[10] = 0x0100,
-       .ldo[0] = { S5PV210_MP03(6), &wm8994_ldo1_data },       /* XM0FRNB_2 */
-       .ldo[1] = { 0, &wm8994_ldo2_data },
-};
-
-/* 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
-};
-
-/* GPIO I2C AP 1.8V */
-#define AP_I2C_GPIO_BUS_5      5
-static struct i2c_gpio_platform_data aquila_i2c_gpio5_data = {
-       .sda_pin        = S5PV210_MP05(3),      /* XM0ADDR_11 */
-       .scl_pin        = S5PV210_MP05(2),      /* XM0ADDR_10 */
-};
-
-static struct platform_device aquila_i2c_gpio5 = {
-       .name           = "i2c-gpio",
-       .id             = AP_I2C_GPIO_BUS_5,
-       .dev            = {
-               .platform_data  = &aquila_i2c_gpio5_data,
-       },
-};
-
-static struct i2c_board_info i2c_gpio5_devs[] __initdata = {
-       {
-               /* CS/ADDR = low 0x34 (FYI: high = 0x36) */
-               I2C_BOARD_INFO("wm8994", 0x1a),
-               .platform_data  = &wm8994_platform_data,
-       },
-};
-
-/* 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_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);
-       s3c_sdhci2_set_platdata(&aquila_hsmmc2_data);
-};
-
-/* Audio device */
-static struct platform_device aquila_device_audio = {
-       .name = "smdk-audio",
-       .id = -1,
-};
-
-static struct platform_device *aquila_devices[] __initdata = {
-       &aquila_i2c_gpio_pmic,
-       &aquila_i2c_gpio5,
-       &aquila_device_gpiokeys,
-       &aquila_device_audio,
-       &s3c_device_fb,
-       &s5p_device_onenand,
-       &s3c_device_hsmmc0,
-       &s3c_device_hsmmc1,
-       &s3c_device_hsmmc2,
-       &s5p_device_fimc0,
-       &s5p_device_fimc1,
-       &s5p_device_fimc2,
-       &s5p_device_fimc_md,
-       &s5pv210_device_iis0,
-       &wm8994_fixed_voltage0,
-       &wm8994_fixed_voltage1,
-};
-
-static void __init aquila_sound_init(void)
-{
-       unsigned int gpio;
-
-       /* CODEC_XTAL_EN
-        *
-        * The Aquila board have a oscillator which provide main clock
-        * to WM8994 codec. The oscillator provide 24MHz clock to WM8994
-        * clock. Set gpio setting of "CODEC_XTAL_EN" to enable a oscillator.
-        * */
-       gpio = S5PV210_GPH3(2);         /* XEINT_26 */
-       gpio_request(gpio, "CODEC_XTAL_EN");
-       s3c_gpio_cfgpin(gpio, S3C_GPIO_OUTPUT);
-       s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
-
-       /* Ths main clock of WM8994 codec uses the output of CLKOUT pin.
-        * The CLKOUT[9:8] set to 0x3(XUSBXTI) of 0xE010E000(OTHERS)
-        * because it needs 24MHz clock to operate WM8994 codec.
-        */
-       __raw_writel(__raw_readl(S5P_OTHERS) | (0x3 << 8), S5P_OTHERS);
-}
-
-static void __init aquila_map_io(void)
-{
-       s5pv210_init_io(NULL, 0);
-       s3c24xx_init_clocks(24000000);
-       s3c24xx_init_uarts(aquila_uartcfgs, ARRAY_SIZE(aquila_uartcfgs));
-       samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
-}
-
-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");
-
-       /* SOUND */
-       aquila_sound_init();
-       i2c_register_board_info(AP_I2C_GPIO_BUS_5, i2c_gpio5_devs,
-                       ARRAY_SIZE(i2c_gpio5_devs));
-
-       /* FB */
-       s3c_fb_set_platdata(&aquila_lcd_pdata);
-
-       platform_add_devices(aquila_devices, ARRAY_SIZE(aquila_devices));
-}
-
-MACHINE_START(AQUILA, "Aquila")
-       /* Maintainers:
-          Marek Szyprowski <m.szyprowski@samsung.com>
-          Kyungmin Park <kyungmin.park@samsung.com> */
-       .atag_offset    = 0x100,
-       .init_irq       = s5pv210_init_irq,
-       .map_io         = aquila_map_io,
-       .init_machine   = aquila_machine_init,
-       .init_time      = samsung_timer_init,
-       .restart        = s5pv210_restart,
-MACHINE_END
diff --git a/arch/arm/mach-s5pv210/mach-goni.c b/arch/arm/mach-s5pv210/mach-goni.c
deleted file mode 100644 (file)
index c1ce921..0000000
+++ /dev/null
@@ -1,916 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/mach-goni.c
- *
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/init.h>
-#include <linux/serial_core.h>
-#include <linux/serial_s3c.h>
-#include <linux/fb.h>
-#include <linux/i2c.h>
-#include <linux/i2c-gpio.h>
-#include <linux/i2c/atmel_mxt_ts.h>
-#include <linux/mfd/max8998.h>
-#include <linux/mfd/wm8994/pdata.h>
-#include <linux/regulator/fixed.h>
-#include <linux/spi/spi.h>
-#include <linux/spi/spi_gpio.h>
-#include <linux/lcd.h>
-#include <linux/gpio_keys.h>
-#include <linux/input.h>
-#include <linux/gpio.h>
-#include <linux/mmc/host.h>
-#include <linux/interrupt.h>
-#include <linux/platform_data/s3c-hsotg.h>
-
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-#include <asm/setup.h>
-#include <asm/mach-types.h>
-
-#include <video/samsung_fimd.h>
-#include <mach/map.h>
-#include <mach/regs-clock.h>
-
-#include <plat/gpio-cfg.h>
-#include <plat/devs.h>
-#include <plat/cpu.h>
-#include <plat/fb.h>
-#include <linux/platform_data/i2c-s3c2410.h>
-#include <plat/keypad.h>
-#include <plat/sdhci.h>
-#include <plat/clock.h>
-#include <plat/samsung-time.h>
-#include <plat/mfc.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 |        \
-                                S3C2410_UCON_TXIRQMODE |       \
-                                S3C2410_UCON_RXIRQMODE |       \
-                                S3C2410_UCON_RXFIFO_TOI |      \
-                                S3C2443_UCON_RXERR_IRQEN)
-
-#define GONI_ULCON_DEFAULT     S3C2410_LCON_CS8
-
-#define GONI_UFCON_DEFAULT     S3C2410_UFCON_FIFOMODE
-
-static struct s3c2410_uartcfg goni_uartcfgs[] __initdata = {
-       [0] = {
-               .hwport         = 0,
-               .flags          = 0,
-               .ucon           = GONI_UCON_DEFAULT,
-               .ulcon          = GONI_ULCON_DEFAULT,
-               .ufcon          = GONI_UFCON_DEFAULT |
-                       S5PV210_UFCON_TXTRIG256 | S5PV210_UFCON_RXTRIG256,
-       },
-       [1] = {
-               .hwport         = 1,
-               .flags          = 0,
-               .ucon           = GONI_UCON_DEFAULT,
-               .ulcon          = GONI_ULCON_DEFAULT,
-               .ufcon          = GONI_UFCON_DEFAULT |
-                       S5PV210_UFCON_TXTRIG64 | S5PV210_UFCON_RXTRIG64,
-       },
-       [2] = {
-               .hwport         = 2,
-               .flags          = 0,
-               .ucon           = GONI_UCON_DEFAULT,
-               .ulcon          = GONI_ULCON_DEFAULT,
-               .ufcon          = GONI_UFCON_DEFAULT |
-                       S5PV210_UFCON_TXTRIG16 | S5PV210_UFCON_RXTRIG16,
-       },
-       [3] = {
-               .hwport         = 3,
-               .flags          = 0,
-               .ucon           = GONI_UCON_DEFAULT,
-               .ulcon          = GONI_ULCON_DEFAULT,
-               .ufcon          = GONI_UFCON_DEFAULT |
-                       S5PV210_UFCON_TXTRIG16 | S5PV210_UFCON_RXTRIG16,
-       },
-};
-
-/* Frame Buffer */
-static struct s3c_fb_pd_win goni_fb_win0 = {
-       .max_bpp        = 32,
-       .default_bpp    = 16,
-       .xres           = 480,
-       .yres           = 800,
-       .virtual_x      = 480,
-       .virtual_y      = 2 * 800,
-};
-
-static struct fb_videomode goni_lcd_timing = {
-       .left_margin    = 16,
-       .right_margin   = 16,
-       .upper_margin   = 2,
-       .lower_margin   = 28,
-       .hsync_len      = 2,
-       .vsync_len      = 1,
-       .xres           = 480,
-       .yres           = 800,
-       .refresh        = 55,
-};
-
-static struct s3c_fb_platdata goni_lcd_pdata __initdata = {
-       .win[0]         = &goni_fb_win0,
-       .vtiming        = &goni_lcd_timing,
-       .vidcon0        = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB |
-                         VIDCON0_CLKSEL_LCD,
-       .vidcon1        = VIDCON1_INV_VCLK | VIDCON1_INV_VDEN
-                         | VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
-       .setup_gpio     = s5pv210_fb_gpio_setup_24bpp,
-};
-
-static int lcd_power_on(struct lcd_device *ld, int enable)
-{
-       return 1;
-}
-
-static int reset_lcd(struct lcd_device *ld)
-{
-       static unsigned int first = 1;
-       int reset_gpio = -1;
-
-       reset_gpio = S5PV210_MP05(5);
-
-       if (first) {
-               gpio_request(reset_gpio, "MLCD_RST");
-               first = 0;
-       }
-
-       gpio_direction_output(reset_gpio, 1);
-       return 1;
-}
-
-static struct lcd_platform_data goni_lcd_platform_data = {
-       .reset                  = reset_lcd,
-       .power_on               = lcd_power_on,
-       .lcd_enabled            = 0,
-       .reset_delay            = 120,  /* 120ms */
-       .power_on_delay         = 25,   /* 25ms */
-       .power_off_delay        = 200,  /* 200ms */
-};
-
-#define LCD_BUS_NUM    3
-static struct spi_board_info spi_board_info[] __initdata = {
-       {
-               .modalias       = "s6e63m0",
-               .platform_data  = &goni_lcd_platform_data,
-               .max_speed_hz   = 1200000,
-               .bus_num        = LCD_BUS_NUM,
-               .chip_select    = 0,
-               .mode           = SPI_MODE_3,
-               .controller_data = (void *)S5PV210_MP01(1), /* DISPLAY_CS */
-       },
-};
-
-static struct spi_gpio_platform_data lcd_spi_gpio_data = {
-       .sck    = S5PV210_MP04(1), /* DISPLAY_CLK */
-       .mosi   = S5PV210_MP04(3), /* DISPLAY_SI */
-       .miso   = SPI_GPIO_NO_MISO,
-       .num_chipselect = 1,
-};
-
-static struct platform_device goni_spi_gpio = {
-       .name   = "spi_gpio",
-       .id     = LCD_BUS_NUM,
-       .dev    = {
-               .parent         = &s3c_device_fb.dev,
-               .platform_data  = &lcd_spi_gpio_data,
-       },
-};
-
-/* KEYPAD */
-static uint32_t keymap[] __initdata = {
-       /* KEY(row, col, keycode) */
-       KEY(0, 1, KEY_MENU),            /* Send */
-       KEY(0, 2, KEY_BACK),            /* End */
-       KEY(1, 1, KEY_CONFIG),          /* Half shot */
-       KEY(1, 2, KEY_VOLUMEUP),
-       KEY(2, 1, KEY_CAMERA),          /* Full shot */
-       KEY(2, 2, KEY_VOLUMEDOWN),
-};
-
-static struct matrix_keymap_data keymap_data __initdata = {
-       .keymap         = keymap,
-       .keymap_size    = ARRAY_SIZE(keymap),
-};
-
-static struct samsung_keypad_platdata keypad_data __initdata = {
-       .keymap_data    = &keymap_data,
-       .rows           = 3,
-       .cols           = 3,
-};
-
-/* Radio */
-static struct i2c_board_info i2c1_devs[] __initdata = {
-       {
-               I2C_BOARD_INFO("si470x", 0x10),
-       },
-};
-
-static void __init goni_radio_init(void)
-{
-       int gpio;
-
-       gpio = S5PV210_GPJ2(4);                 /* XMSMDATA_4 */
-       gpio_request(gpio, "FM_INT");
-       s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(0xf));
-       i2c1_devs[0].irq = gpio_to_irq(gpio);
-
-       gpio = S5PV210_GPJ2(5);                 /* XMSMDATA_5 */
-       gpio_request_one(gpio, GPIOF_OUT_INIT_HIGH, "FM_RST");
-}
-
-/* TSP */
-static struct mxt_platform_data qt602240_platform_data = {
-       .irqflags       = IRQF_TRIGGER_FALLING,
-};
-
-static struct s3c2410_platform_i2c i2c2_data __initdata = {
-       .flags          = 0,
-       .bus_num        = 2,
-       .slave_addr     = 0x10,
-       .frequency      = 400 * 1000,
-       .sda_delay      = 100,
-};
-
-static struct i2c_board_info i2c2_devs[] __initdata = {
-       {
-               I2C_BOARD_INFO("qt602240_ts", 0x4a),
-               .platform_data = &qt602240_platform_data,
-       },
-};
-
-static void __init goni_tsp_init(void)
-{
-       int gpio;
-
-       gpio = S5PV210_GPJ1(3);         /* XMSMADDR_11 */
-       gpio_request_one(gpio, GPIOF_OUT_INIT_HIGH, "TSP_LDO_ON");
-       gpio_export(gpio, 0);
-
-       gpio = S5PV210_GPJ0(5);         /* XMSMADDR_5 */
-       gpio_request(gpio, "TSP_INT");
-
-       s5p_register_gpio_interrupt(gpio);
-       s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(0xf));
-       s3c_gpio_setpull(gpio, S3C_GPIO_PULL_UP);
-       i2c2_devs[0].irq = gpio_to_irq(gpio);
-}
-
-/* USB OTG */
-static struct s3c_hsotg_plat goni_hsotg_pdata;
-
-/* MAX8998 regulators */
-#if defined(CONFIG_REGULATOR_MAX8998) || defined(CONFIG_REGULATOR_MAX8998_MODULE)
-
-static struct regulator_consumer_supply goni_ldo3_consumers[] = {
-       REGULATOR_SUPPLY("vusb_a", "s3c-hsotg"),
-};
-
-static struct regulator_consumer_supply goni_ldo5_consumers[] = {
-       REGULATOR_SUPPLY("vmmc", "s3c-sdhci.0"),
-};
-
-static struct regulator_consumer_supply goni_ldo8_consumers[] = {
-       REGULATOR_SUPPLY("vusb_d", "s3c-hsotg"),
-       REGULATOR_SUPPLY("vdd33a_dac", "s5p-sdo"),
-};
-
-static struct regulator_consumer_supply goni_ldo11_consumers[] = {
-       REGULATOR_SUPPLY("vddio", "0-0030"), /* "CAM_IO_2.8V" */
-};
-
-static struct regulator_consumer_supply goni_ldo13_consumers[] = {
-       REGULATOR_SUPPLY("vdda", "0-0030"), /* "CAM_A_2.8V" */
-};
-
-static struct regulator_consumer_supply goni_ldo14_consumers[] = {
-       REGULATOR_SUPPLY("vdd_core", "0-0030"), /* "CAM_CIF_1.8V" */
-};
-
-static struct regulator_init_data goni_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 goni_ldo3_data = {
-       .constraints    = {
-               .name           = "VUSB+MIPI_1.1V",
-               .min_uV         = 1100000,
-               .max_uV         = 1100000,
-               .apply_uV       = 1,
-               .valid_ops_mask = REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies = ARRAY_SIZE(goni_ldo3_consumers),
-       .consumer_supplies = goni_ldo3_consumers,
-};
-
-static struct regulator_init_data goni_ldo4_data = {
-       .constraints    = {
-               .name           = "VDAC_3.3V",
-               .min_uV         = 3300000,
-               .max_uV         = 3300000,
-               .apply_uV       = 1,
-       },
-};
-
-static struct regulator_init_data goni_ldo5_data = {
-       .constraints    = {
-               .name           = "VTF_2.8V",
-               .min_uV         = 2800000,
-               .max_uV         = 2800000,
-               .apply_uV       = 1,
-               .valid_ops_mask = REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies = ARRAY_SIZE(goni_ldo5_consumers),
-       .consumer_supplies = goni_ldo5_consumers,
-};
-
-static struct regulator_init_data goni_ldo6_data = {
-       .constraints    = {
-               .name           = "VCC_3.3V",
-               .min_uV         = 3300000,
-               .max_uV         = 3300000,
-               .apply_uV       = 1,
-       },
-};
-
-static struct regulator_init_data goni_ldo7_data = {
-       .constraints    = {
-               .name           = "VLCD_1.8V",
-               .min_uV         = 1800000,
-               .max_uV         = 1800000,
-               .apply_uV       = 1,
-               .always_on      = 1,
-       },
-};
-
-static struct regulator_init_data goni_ldo8_data = {
-       .constraints    = {
-               .name           = "VUSB+VADC_3.3V",
-               .min_uV         = 3300000,
-               .max_uV         = 3300000,
-               .apply_uV       = 1,
-               .valid_ops_mask = REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies = ARRAY_SIZE(goni_ldo8_consumers),
-       .consumer_supplies = goni_ldo8_consumers,
-};
-
-static struct regulator_init_data goni_ldo9_data = {
-       .constraints    = {
-               .name           = "VCC+VCAM_2.8V",
-               .min_uV         = 2800000,
-               .max_uV         = 2800000,
-               .apply_uV       = 1,
-       },
-};
-
-static struct regulator_init_data goni_ldo10_data = {
-       .constraints    = {
-               .name           = "VPLL_1.1V",
-               .min_uV         = 1100000,
-               .max_uV         = 1100000,
-               .apply_uV       = 1,
-               .boot_on        = 1,
-       },
-};
-
-static struct regulator_init_data goni_ldo11_data = {
-       .constraints    = {
-               .name           = "CAM_IO_2.8V",
-               .min_uV         = 2800000,
-               .max_uV         = 2800000,
-               .apply_uV       = 1,
-               .valid_ops_mask = REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies  = ARRAY_SIZE(goni_ldo11_consumers),
-       .consumer_supplies      = goni_ldo11_consumers,
-};
-
-static struct regulator_init_data goni_ldo12_data = {
-       .constraints    = {
-               .name           = "CAM_ISP_1.2V",
-               .min_uV         = 1200000,
-               .max_uV         = 1200000,
-               .apply_uV       = 1,
-       },
-};
-
-static struct regulator_init_data goni_ldo13_data = {
-       .constraints    = {
-               .name           = "CAM_A_2.8V",
-               .min_uV         = 2800000,
-               .max_uV         = 2800000,
-               .apply_uV       = 1,
-               .valid_ops_mask = REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies  = ARRAY_SIZE(goni_ldo13_consumers),
-       .consumer_supplies      = goni_ldo13_consumers,
-};
-
-static struct regulator_init_data goni_ldo14_data = {
-       .constraints    = {
-               .name           = "CAM_CIF_1.8V",
-               .min_uV         = 1800000,
-               .max_uV         = 1800000,
-               .apply_uV       = 1,
-               .valid_ops_mask = REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies  = ARRAY_SIZE(goni_ldo14_consumers),
-       .consumer_supplies      = goni_ldo14_consumers,
-};
-
-static struct regulator_init_data goni_ldo15_data = {
-       .constraints    = {
-               .name           = "CAM_AF_3.3V",
-               .min_uV         = 3300000,
-               .max_uV         = 3300000,
-               .apply_uV       = 1,
-       },
-};
-
-static struct regulator_init_data goni_ldo16_data = {
-       .constraints    = {
-               .name           = "VMIPI_1.8V",
-               .min_uV         = 1800000,
-               .max_uV         = 1800000,
-               .apply_uV       = 1,
-       },
-};
-
-static struct regulator_init_data goni_ldo17_data = {
-       .constraints    = {
-               .name           = "VCC_3.0V_LCD",
-               .min_uV         = 3000000,
-               .max_uV         = 3000000,
-               .apply_uV       = 1,
-               .always_on      = 1,
-       },
-};
-
-/* BUCK */
-static struct regulator_consumer_supply buck1_consumer =
-       REGULATOR_SUPPLY("vddarm", NULL);
-
-static struct regulator_consumer_supply buck2_consumer =
-       REGULATOR_SUPPLY("vddint", NULL);
-
-static struct regulator_consumer_supply buck3_consumer =
-       REGULATOR_SUPPLY("vdet", "s5p-sdo");
-
-
-static struct regulator_init_data goni_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  = 1,
-       .consumer_supplies      = &buck1_consumer,
-};
-
-static struct regulator_init_data goni_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  = 1,
-       .consumer_supplies      = &buck2_consumer,
-};
-
-static struct regulator_init_data goni_buck3_data = {
-       .constraints    = {
-               .name           = "VCC_1.8V",
-               .min_uV         = 1800000,
-               .max_uV         = 1800000,
-               .apply_uV       = 1,
-               .state_mem      = {
-                       .enabled = 1,
-               },
-       },
-       .num_consumer_supplies  = 1,
-       .consumer_supplies      = &buck3_consumer,
-};
-
-static struct regulator_init_data goni_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 goni_regulators[] = {
-       { MAX8998_LDO2,  &goni_ldo2_data },
-       { MAX8998_LDO3,  &goni_ldo3_data },
-       { MAX8998_LDO4,  &goni_ldo4_data },
-       { MAX8998_LDO5,  &goni_ldo5_data },
-       { MAX8998_LDO6,  &goni_ldo6_data },
-       { MAX8998_LDO7,  &goni_ldo7_data },
-       { MAX8998_LDO8,  &goni_ldo8_data },
-       { MAX8998_LDO9,  &goni_ldo9_data },
-       { MAX8998_LDO10, &goni_ldo10_data },
-       { MAX8998_LDO11, &goni_ldo11_data },
-       { MAX8998_LDO12, &goni_ldo12_data },
-       { MAX8998_LDO13, &goni_ldo13_data },
-       { MAX8998_LDO14, &goni_ldo14_data },
-       { MAX8998_LDO15, &goni_ldo15_data },
-       { MAX8998_LDO16, &goni_ldo16_data },
-       { MAX8998_LDO17, &goni_ldo17_data },
-       { MAX8998_BUCK1, &goni_buck1_data },
-       { MAX8998_BUCK2, &goni_buck2_data },
-       { MAX8998_BUCK3, &goni_buck3_data },
-       { MAX8998_BUCK4, &goni_buck4_data },
-};
-
-static struct max8998_platform_data goni_max8998_pdata = {
-       .num_regulators = ARRAY_SIZE(goni_regulators),
-       .regulators     = goni_regulators,
-       .buck1_set1     = S5PV210_GPH0(3),
-       .buck1_set2     = S5PV210_GPH0(4),
-       .buck2_set3     = S5PV210_GPH0(5),
-       .buck1_voltage  = { 1200000, 1200000, 1200000, 1200000 },
-       .buck2_voltage  = { 1200000, 1200000 },
-};
-#endif
-
-static struct regulator_consumer_supply wm8994_fixed_voltage0_supplies[] = {
-       REGULATOR_SUPPLY("DBVDD", "5-001a"),
-       REGULATOR_SUPPLY("AVDD2", "5-001a"),
-       REGULATOR_SUPPLY("CPVDD", "5-001a"),
-};
-
-static struct regulator_consumer_supply wm8994_fixed_voltage1_supplies[] = {
-       REGULATOR_SUPPLY("SPKVDD1", "5-001a"),
-       REGULATOR_SUPPLY("SPKVDD2", "5-001a"),
-};
-
-static struct regulator_init_data wm8994_fixed_voltage0_init_data = {
-       .constraints = {
-               .always_on = 1,
-       },
-       .num_consumer_supplies  = ARRAY_SIZE(wm8994_fixed_voltage0_supplies),
-       .consumer_supplies      = wm8994_fixed_voltage0_supplies,
-};
-
-static struct regulator_init_data wm8994_fixed_voltage1_init_data = {
-       .constraints = {
-               .always_on = 1,
-       },
-       .num_consumer_supplies  = ARRAY_SIZE(wm8994_fixed_voltage1_supplies),
-       .consumer_supplies      = wm8994_fixed_voltage1_supplies,
-};
-
-static struct fixed_voltage_config wm8994_fixed_voltage0_config = {
-       .supply_name    = "VCC_1.8V_PDA",
-       .microvolts     = 1800000,
-       .gpio           = -EINVAL,
-       .init_data      = &wm8994_fixed_voltage0_init_data,
-};
-
-static struct fixed_voltage_config wm8994_fixed_voltage1_config = {
-       .supply_name    = "V_BAT",
-       .microvolts     = 3700000,
-       .gpio           = -EINVAL,
-       .init_data      = &wm8994_fixed_voltage1_init_data,
-};
-
-static struct platform_device wm8994_fixed_voltage0 = {
-       .name           = "reg-fixed-voltage",
-       .id             = 0,
-       .dev            = {
-               .platform_data  = &wm8994_fixed_voltage0_config,
-       },
-};
-
-static struct platform_device wm8994_fixed_voltage1 = {
-       .name           = "reg-fixed-voltage",
-       .id             = 1,
-       .dev            = {
-               .platform_data  = &wm8994_fixed_voltage1_config,
-       },
-};
-
-static struct regulator_consumer_supply wm8994_avdd1_supply =
-       REGULATOR_SUPPLY("AVDD1", "5-001a");
-
-static struct regulator_consumer_supply wm8994_dcvdd_supply =
-       REGULATOR_SUPPLY("DCVDD", "5-001a");
-
-static struct regulator_init_data wm8994_ldo1_data = {
-       .constraints    = {
-               .name           = "AVDD1_3.0V",
-               .valid_ops_mask = REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies  = 1,
-       .consumer_supplies      = &wm8994_avdd1_supply,
-};
-
-static struct regulator_init_data wm8994_ldo2_data = {
-       .constraints    = {
-               .name           = "DCVDD_1.0V",
-       },
-       .num_consumer_supplies  = 1,
-       .consumer_supplies      = &wm8994_dcvdd_supply,
-};
-
-static struct wm8994_pdata wm8994_platform_data = {
-       /* configure gpio1 function: 0x0001(Logic level input/output) */
-       .gpio_defaults[0] = 0x0001,
-       /* configure gpio3/4/5/7 function for AIF2 voice */
-       .gpio_defaults[2] = 0x8100,
-       .gpio_defaults[3] = 0x8100,
-       .gpio_defaults[4] = 0x8100,
-       .gpio_defaults[6] = 0x0100,
-       /* configure gpio8/9/10/11 function for AIF3 BT */
-       .gpio_defaults[7] = 0x8100,
-       .gpio_defaults[8] = 0x0100,
-       .gpio_defaults[9] = 0x0100,
-       .gpio_defaults[10] = 0x0100,
-       .ldo[0] = { S5PV210_MP03(6), &wm8994_ldo1_data },       /* XM0FRNB_2 */
-       .ldo[1] = { 0, &wm8994_ldo2_data },
-};
-
-/* GPIO I2C PMIC */
-#define AP_I2C_GPIO_PMIC_BUS_4 4
-static struct i2c_gpio_platform_data goni_i2c_gpio_pmic_data = {
-       .sda_pin        = S5PV210_GPJ4(0),      /* XMSMCSN */
-       .scl_pin        = S5PV210_GPJ4(3),      /* XMSMIRQN */
-};
-
-static struct platform_device goni_i2c_gpio_pmic = {
-       .name           = "i2c-gpio",
-       .id             = AP_I2C_GPIO_PMIC_BUS_4,
-       .dev            = {
-               .platform_data  = &goni_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 = &goni_max8998_pdata,
-       },
-#endif
-};
-
-/* GPIO I2C AP 1.8V */
-#define AP_I2C_GPIO_BUS_5      5
-static struct i2c_gpio_platform_data goni_i2c_gpio5_data = {
-       .sda_pin        = S5PV210_MP05(3),      /* XM0ADDR_11 */
-       .scl_pin        = S5PV210_MP05(2),      /* XM0ADDR_10 */
-};
-
-static struct platform_device goni_i2c_gpio5 = {
-       .name           = "i2c-gpio",
-       .id             = AP_I2C_GPIO_BUS_5,
-       .dev            = {
-               .platform_data  = &goni_i2c_gpio5_data,
-       },
-};
-
-static struct i2c_board_info i2c_gpio5_devs[] __initdata = {
-       {
-               /* CS/ADDR = low 0x34 (FYI: high = 0x36) */
-               I2C_BOARD_INFO("wm8994", 0x1a),
-               .platform_data  = &wm8994_platform_data,
-       },
-};
-
-/* PMIC Power button */
-static struct gpio_keys_button goni_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 goni_gpio_keys_data = {
-       .buttons        = goni_gpio_keys_table,
-       .nbuttons       = ARRAY_SIZE(goni_gpio_keys_table),
-};
-
-static struct platform_device goni_device_gpiokeys = {
-       .name = "gpio-keys",
-       .dev = {
-               .platform_data = &goni_gpio_keys_data,
-       },
-};
-
-static void __init goni_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 goni_hsmmc0_data __initdata = {
-       .max_width              = 4,
-       .cd_type                = S3C_SDHCI_CD_PERMANENT,
-};
-
-/* Wireless LAN */
-static struct s3c_sdhci_platdata goni_hsmmc1_data __initdata = {
-       .max_width              = 4,
-       .cd_type                = S3C_SDHCI_CD_EXTERNAL,
-       /* ext_cd_{init,cleanup} callbacks will be added later */
-};
-
-/* External Flash */
-#define GONI_EXT_FLASH_EN      S5PV210_MP05(4)
-#define GONI_EXT_FLASH_CD      S5PV210_GPH3(4)
-static struct s3c_sdhci_platdata goni_hsmmc2_data __initdata = {
-       .max_width              = 4,
-       .cd_type                = S3C_SDHCI_CD_GPIO,
-       .ext_cd_gpio            = GONI_EXT_FLASH_CD,
-       .ext_cd_gpio_invert     = 1,
-};
-
-static struct regulator_consumer_supply mmc2_supplies[] = {
-       REGULATOR_SUPPLY("vmmc", "s3c-sdhci.2"),
-};
-
-static struct regulator_init_data mmc2_fixed_voltage_init_data = {
-       .constraints            = {
-               .name           = "V_TF_2.8V",
-               .valid_ops_mask = REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies  = ARRAY_SIZE(mmc2_supplies),
-       .consumer_supplies      = mmc2_supplies,
-};
-
-static struct fixed_voltage_config mmc2_fixed_voltage_config = {
-       .supply_name            = "EXT_FLASH_EN",
-       .microvolts             = 2800000,
-       .gpio                   = GONI_EXT_FLASH_EN,
-       .enable_high            = true,
-       .init_data              = &mmc2_fixed_voltage_init_data,
-};
-
-static struct platform_device mmc2_fixed_voltage = {
-       .name           = "reg-fixed-voltage",
-       .id             = 2,
-       .dev            = {
-               .platform_data  = &mmc2_fixed_voltage_config,
-       },
-};
-
-static void goni_setup_sdhci(void)
-{
-       s3c_sdhci0_set_platdata(&goni_hsmmc0_data);
-       s3c_sdhci1_set_platdata(&goni_hsmmc1_data);
-       s3c_sdhci2_set_platdata(&goni_hsmmc2_data);
-};
-
-/* Audio device */
-static struct platform_device goni_device_audio = {
-       .name = "smdk-audio",
-       .id = -1,
-};
-
-static struct platform_device *goni_devices[] __initdata = {
-       &s3c_device_fb,
-       &s5p_device_onenand,
-       &goni_spi_gpio,
-       &goni_i2c_gpio_pmic,
-       &goni_i2c_gpio5,
-       &goni_device_audio,
-       &mmc2_fixed_voltage,
-       &goni_device_gpiokeys,
-       &s5p_device_mfc,
-       &s5p_device_mfc_l,
-       &s5p_device_mfc_r,
-       &s5p_device_mixer,
-       &s5p_device_sdo,
-       &s3c_device_i2c0,
-       &s3c_device_hsmmc0,
-       &s3c_device_hsmmc1,
-       &s3c_device_hsmmc2,
-       &s5pv210_device_iis0,
-       &s3c_device_usb_hsotg,
-       &samsung_device_keypad,
-       &s3c_device_i2c1,
-       &s3c_device_i2c2,
-       &wm8994_fixed_voltage0,
-       &wm8994_fixed_voltage1,
-};
-
-static void __init goni_sound_init(void)
-{
-       /* Ths main clock of WM8994 codec uses the output of CLKOUT pin.
-        * The CLKOUT[9:8] set to 0x3(XUSBXTI) of 0xE010E000(OTHERS)
-        * because it needs 24MHz clock to operate WM8994 codec.
-        */
-       __raw_writel(__raw_readl(S5P_OTHERS) | (0x3 << 8), S5P_OTHERS);
-}
-
-static void __init goni_map_io(void)
-{
-       s5pv210_init_io(NULL, 0);
-       s3c24xx_init_clocks(clk_xusbxti.rate);
-       s3c24xx_init_uarts(goni_uartcfgs, ARRAY_SIZE(goni_uartcfgs));
-       samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
-}
-
-static void __init goni_reserve(void)
-{
-       s5p_mfc_reserve_mem(0x43000000, 8 << 20, 0x51000000, 8 << 20);
-}
-
-static void __init goni_machine_init(void)
-{
-       /* Radio: call before I2C 1 registeration */
-       goni_radio_init();
-
-       /* I2C0 */
-       s3c_i2c0_set_platdata(NULL);
-
-       /* I2C1 */
-       s3c_i2c1_set_platdata(NULL);
-       i2c_register_board_info(1, i2c1_devs, ARRAY_SIZE(i2c1_devs));
-
-       /* TSP: call before I2C 2 registeration */
-       goni_tsp_init();
-
-       /* I2C2 */
-       s3c_i2c2_set_platdata(&i2c2_data);
-       i2c_register_board_info(2, i2c2_devs, ARRAY_SIZE(i2c2_devs));
-
-       /* PMIC */
-       goni_pmic_init();
-       i2c_register_board_info(AP_I2C_GPIO_PMIC_BUS_4, i2c_gpio_pmic_devs,
-                       ARRAY_SIZE(i2c_gpio_pmic_devs));
-       /* SDHCI */
-       goni_setup_sdhci();
-
-       /* SOUND */
-       goni_sound_init();
-       i2c_register_board_info(AP_I2C_GPIO_BUS_5, i2c_gpio5_devs,
-                       ARRAY_SIZE(i2c_gpio5_devs));
-
-       /* FB */
-       s3c_fb_set_platdata(&goni_lcd_pdata);
-
-       s3c_hsotg_set_platdata(&goni_hsotg_pdata);
-
-       /* SPI */
-       spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
-
-       /* KEYPAD */
-       samsung_keypad_set_platdata(&keypad_data);
-
-       platform_add_devices(goni_devices, ARRAY_SIZE(goni_devices));
-}
-
-MACHINE_START(GONI, "GONI")
-       /* Maintainers: Kyungmin Park <kyungmin.park@samsung.com> */
-       .atag_offset    = 0x100,
-       .init_irq       = s5pv210_init_irq,
-       .map_io         = goni_map_io,
-       .init_machine   = goni_machine_init,
-       .init_time      = samsung_timer_init,
-       .reserve        = &goni_reserve,
-       .restart        = s5pv210_restart,
-MACHINE_END
diff --git a/arch/arm/mach-s5pv210/mach-smdkc110.c b/arch/arm/mach-s5pv210/mach-smdkc110.c
deleted file mode 100644 (file)
index 448e1d2..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/mach-smdkc110.c
- *
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/init.h>
-#include <linux/serial_core.h>
-#include <linux/serial_s3c.h>
-#include <linux/i2c.h>
-#include <linux/device.h>
-
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-#include <asm/setup.h>
-#include <asm/mach-types.h>
-
-#include <mach/map.h>
-#include <mach/regs-clock.h>
-
-#include <plat/devs.h>
-#include <plat/cpu.h>
-#include <linux/platform_data/ata-samsung_cf.h>
-#include <linux/platform_data/i2c-s3c2410.h>
-#include <plat/pm.h>
-#include <plat/samsung-time.h>
-#include <plat/mfc.h>
-
-#include "common.h"
-
-/* Following are default values for UCON, ULCON and UFCON UART registers */
-#define SMDKC110_UCON_DEFAULT  (S3C2410_UCON_TXILEVEL |        \
-                                S3C2410_UCON_RXILEVEL |        \
-                                S3C2410_UCON_TXIRQMODE |       \
-                                S3C2410_UCON_RXIRQMODE |       \
-                                S3C2410_UCON_RXFIFO_TOI |      \
-                                S3C2443_UCON_RXERR_IRQEN)
-
-#define SMDKC110_ULCON_DEFAULT S3C2410_LCON_CS8
-
-#define SMDKC110_UFCON_DEFAULT (S3C2410_UFCON_FIFOMODE |       \
-                                S5PV210_UFCON_TXTRIG4 |        \
-                                S5PV210_UFCON_RXTRIG4)
-
-static struct s3c2410_uartcfg smdkv210_uartcfgs[] __initdata = {
-       [0] = {
-               .hwport         = 0,
-               .flags          = 0,
-               .ucon           = SMDKC110_UCON_DEFAULT,
-               .ulcon          = SMDKC110_ULCON_DEFAULT,
-               .ufcon          = SMDKC110_UFCON_DEFAULT,
-       },
-       [1] = {
-               .hwport         = 1,
-               .flags          = 0,
-               .ucon           = SMDKC110_UCON_DEFAULT,
-               .ulcon          = SMDKC110_ULCON_DEFAULT,
-               .ufcon          = SMDKC110_UFCON_DEFAULT,
-       },
-       [2] = {
-               .hwport         = 2,
-               .flags          = 0,
-               .ucon           = SMDKC110_UCON_DEFAULT,
-               .ulcon          = SMDKC110_ULCON_DEFAULT,
-               .ufcon          = SMDKC110_UFCON_DEFAULT,
-       },
-       [3] = {
-               .hwport         = 3,
-               .flags          = 0,
-               .ucon           = SMDKC110_UCON_DEFAULT,
-               .ulcon          = SMDKC110_ULCON_DEFAULT,
-               .ufcon          = SMDKC110_UFCON_DEFAULT,
-       },
-};
-
-static struct s3c_ide_platdata smdkc110_ide_pdata __initdata = {
-       .setup_gpio     = s5pv210_ide_setup_gpio,
-};
-
-static struct platform_device *smdkc110_devices[] __initdata = {
-       &s5pv210_device_iis0,
-       &s5pv210_device_ac97,
-       &s5pv210_device_spdif,
-       &s3c_device_cfcon,
-       &s3c_device_i2c0,
-       &s3c_device_i2c1,
-       &s3c_device_i2c2,
-       &s3c_device_rtc,
-       &s3c_device_wdt,
-       &s5p_device_fimc0,
-       &s5p_device_fimc1,
-       &s5p_device_fimc2,
-       &s5p_device_fimc_md,
-       &s5p_device_mfc,
-       &s5p_device_mfc_l,
-       &s5p_device_mfc_r,
-};
-
-static struct i2c_board_info smdkc110_i2c_devs0[] __initdata = {
-       { I2C_BOARD_INFO("24c08", 0x50), },     /* Samsung S524AD0XD1 */
-       { I2C_BOARD_INFO("wm8580", 0x1b), },
-};
-
-static struct i2c_board_info smdkc110_i2c_devs1[] __initdata = {
-       /* To Be Updated */
-};
-
-static struct i2c_board_info smdkc110_i2c_devs2[] __initdata = {
-       /* To Be Updated */
-};
-
-static void __init smdkc110_map_io(void)
-{
-       s5pv210_init_io(NULL, 0);
-       s3c24xx_init_clocks(24000000);
-       s3c24xx_init_uarts(smdkv210_uartcfgs, ARRAY_SIZE(smdkv210_uartcfgs));
-       samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
-}
-
-static void __init smdkc110_reserve(void)
-{
-       s5p_mfc_reserve_mem(0x43000000, 8 << 20, 0x51000000, 8 << 20);
-}
-
-static void __init smdkc110_machine_init(void)
-{
-       s3c_pm_init();
-
-       s3c_i2c0_set_platdata(NULL);
-       s3c_i2c1_set_platdata(NULL);
-       s3c_i2c2_set_platdata(NULL);
-       i2c_register_board_info(0, smdkc110_i2c_devs0,
-                       ARRAY_SIZE(smdkc110_i2c_devs0));
-       i2c_register_board_info(1, smdkc110_i2c_devs1,
-                       ARRAY_SIZE(smdkc110_i2c_devs1));
-       i2c_register_board_info(2, smdkc110_i2c_devs2,
-                       ARRAY_SIZE(smdkc110_i2c_devs2));
-
-       s3c_ide_set_platdata(&smdkc110_ide_pdata);
-
-       platform_add_devices(smdkc110_devices, ARRAY_SIZE(smdkc110_devices));
-}
-
-MACHINE_START(SMDKC110, "SMDKC110")
-       /* Maintainer: Kukjin Kim <kgene.kim@samsung.com> */
-       .atag_offset    = 0x100,
-       .init_irq       = s5pv210_init_irq,
-       .map_io         = smdkc110_map_io,
-       .init_machine   = smdkc110_machine_init,
-       .init_time      = samsung_timer_init,
-       .restart        = s5pv210_restart,
-       .reserve        = &smdkc110_reserve,
-MACHINE_END
diff --git a/arch/arm/mach-s5pv210/mach-smdkv210.c b/arch/arm/mach-s5pv210/mach-smdkv210.c
deleted file mode 100644 (file)
index 2a6655f..0000000
+++ /dev/null
@@ -1,337 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/mach-smdkv210.c
- *
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/i2c.h>
-#include <linux/init.h>
-#include <linux/serial_core.h>
-#include <linux/serial_s3c.h>
-#include <linux/device.h>
-#include <linux/dm9000.h>
-#include <linux/fb.h>
-#include <linux/gpio.h>
-#include <linux/delay.h>
-#include <linux/pwm_backlight.h>
-#include <linux/platform_data/s3c-hsotg.h>
-
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-#include <asm/setup.h>
-#include <asm/mach-types.h>
-
-#include <video/platform_lcd.h>
-#include <video/samsung_fimd.h>
-
-#include <mach/map.h>
-#include <mach/regs-clock.h>
-
-#include <plat/regs-srom.h>
-#include <plat/gpio-cfg.h>
-#include <plat/devs.h>
-#include <plat/cpu.h>
-#include <plat/adc.h>
-#include <linux/platform_data/touchscreen-s3c2410.h>
-#include <linux/platform_data/ata-samsung_cf.h>
-#include <linux/platform_data/i2c-s3c2410.h>
-#include <plat/keypad.h>
-#include <plat/pm.h>
-#include <plat/fb.h>
-#include <plat/samsung-time.h>
-#include <plat/backlight.h>
-#include <plat/mfc.h>
-#include <plat/clock.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 |        \
-                                S3C2410_UCON_TXIRQMODE |       \
-                                S3C2410_UCON_RXIRQMODE |       \
-                                S3C2410_UCON_RXFIFO_TOI |      \
-                                S3C2443_UCON_RXERR_IRQEN)
-
-#define SMDKV210_ULCON_DEFAULT S3C2410_LCON_CS8
-
-#define SMDKV210_UFCON_DEFAULT (S3C2410_UFCON_FIFOMODE |       \
-                                S5PV210_UFCON_TXTRIG4 |        \
-                                S5PV210_UFCON_RXTRIG4)
-
-static struct s3c2410_uartcfg smdkv210_uartcfgs[] __initdata = {
-       [0] = {
-               .hwport         = 0,
-               .flags          = 0,
-               .ucon           = SMDKV210_UCON_DEFAULT,
-               .ulcon          = SMDKV210_ULCON_DEFAULT,
-               .ufcon          = SMDKV210_UFCON_DEFAULT,
-       },
-       [1] = {
-               .hwport         = 1,
-               .flags          = 0,
-               .ucon           = SMDKV210_UCON_DEFAULT,
-               .ulcon          = SMDKV210_ULCON_DEFAULT,
-               .ufcon          = SMDKV210_UFCON_DEFAULT,
-       },
-       [2] = {
-               .hwport         = 2,
-               .flags          = 0,
-               .ucon           = SMDKV210_UCON_DEFAULT,
-               .ulcon          = SMDKV210_ULCON_DEFAULT,
-               .ufcon          = SMDKV210_UFCON_DEFAULT,
-       },
-       [3] = {
-               .hwport         = 3,
-               .flags          = 0,
-               .ucon           = SMDKV210_UCON_DEFAULT,
-               .ulcon          = SMDKV210_ULCON_DEFAULT,
-               .ufcon          = SMDKV210_UFCON_DEFAULT,
-       },
-};
-
-static struct s3c_ide_platdata smdkv210_ide_pdata __initdata = {
-       .setup_gpio     = s5pv210_ide_setup_gpio,
-};
-
-static uint32_t smdkv210_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 smdkv210_keymap_data __initdata = {
-       .keymap         = smdkv210_keymap,
-       .keymap_size    = ARRAY_SIZE(smdkv210_keymap),
-};
-
-static struct samsung_keypad_platdata smdkv210_keypad_data __initdata = {
-       .keymap_data    = &smdkv210_keymap_data,
-       .rows           = 8,
-       .cols           = 8,
-};
-
-static struct resource smdkv210_dm9000_resources[] = {
-       [0] = DEFINE_RES_MEM(S5PV210_PA_SROM_BANK5, 1),
-       [1] = DEFINE_RES_MEM(S5PV210_PA_SROM_BANK5 + 2, 1),
-       [2] = DEFINE_RES_NAMED(IRQ_EINT(9), 1, NULL, IORESOURCE_IRQ \
-                               | IORESOURCE_IRQ_HIGHLEVEL),
-};
-
-static struct dm9000_plat_data smdkv210_dm9000_platdata = {
-       .flags          = DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM,
-       .dev_addr       = { 0x00, 0x09, 0xc0, 0xff, 0xec, 0x48 },
-};
-
-static struct platform_device smdkv210_dm9000 = {
-       .name           = "dm9000",
-       .id             = -1,
-       .num_resources  = ARRAY_SIZE(smdkv210_dm9000_resources),
-       .resource       = smdkv210_dm9000_resources,
-       .dev            = {
-               .platform_data  = &smdkv210_dm9000_platdata,
-       },
-};
-
-static void smdkv210_lte480wv_set_power(struct plat_lcd_data *pd,
-                                       unsigned int power)
-{
-       if (power) {
-#if !defined(CONFIG_BACKLIGHT_PWM)
-               gpio_request_one(S5PV210_GPD0(3), GPIOF_OUT_INIT_HIGH, "GPD0");
-               gpio_free(S5PV210_GPD0(3));
-#endif
-
-               /* fire nRESET on power up */
-               gpio_request_one(S5PV210_GPH0(6), GPIOF_OUT_INIT_HIGH, "GPH0");
-
-               gpio_set_value(S5PV210_GPH0(6), 0);
-               mdelay(10);
-
-               gpio_set_value(S5PV210_GPH0(6), 1);
-               mdelay(10);
-
-               gpio_free(S5PV210_GPH0(6));
-       } else {
-#if !defined(CONFIG_BACKLIGHT_PWM)
-               gpio_request_one(S5PV210_GPD0(3), GPIOF_OUT_INIT_LOW, "GPD0");
-               gpio_free(S5PV210_GPD0(3));
-#endif
-       }
-}
-
-static struct plat_lcd_data smdkv210_lcd_lte480wv_data = {
-       .set_power      = smdkv210_lte480wv_set_power,
-};
-
-static struct platform_device smdkv210_lcd_lte480wv = {
-       .name                   = "platform-lcd",
-       .dev.parent             = &s3c_device_fb.dev,
-       .dev.platform_data      = &smdkv210_lcd_lte480wv_data,
-};
-
-static struct s3c_fb_pd_win smdkv210_fb_win0 = {
-       .max_bpp        = 32,
-       .default_bpp    = 24,
-       .xres           = 800,
-       .yres           = 480,
-};
-
-static struct fb_videomode smdkv210_lcd_timing = {
-       .left_margin    = 13,
-       .right_margin   = 8,
-       .upper_margin   = 7,
-       .lower_margin   = 5,
-       .hsync_len      = 3,
-       .vsync_len      = 1,
-       .xres           = 800,
-       .yres           = 480,
-};
-
-static struct s3c_fb_platdata smdkv210_lcd0_pdata __initdata = {
-       .win[0]         = &smdkv210_fb_win0,
-       .vtiming        = &smdkv210_lcd_timing,
-       .vidcon0        = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
-       .vidcon1        = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
-       .setup_gpio     = s5pv210_fb_gpio_setup_24bpp,
-};
-
-/* USB OTG */
-static struct s3c_hsotg_plat smdkv210_hsotg_pdata;
-
-static struct platform_device *smdkv210_devices[] __initdata = {
-       &s3c_device_adc,
-       &s3c_device_cfcon,
-       &s3c_device_fb,
-       &s3c_device_hsmmc0,
-       &s3c_device_hsmmc1,
-       &s3c_device_hsmmc2,
-       &s3c_device_hsmmc3,
-       &s3c_device_i2c0,
-       &s3c_device_i2c1,
-       &s3c_device_i2c2,
-       &samsung_device_pwm,
-       &s3c_device_rtc,
-       &s3c_device_ts,
-       &s3c_device_usb_hsotg,
-       &s3c_device_wdt,
-       &s5p_device_fimc0,
-       &s5p_device_fimc1,
-       &s5p_device_fimc2,
-       &s5p_device_fimc_md,
-       &s5p_device_jpeg,
-       &s5p_device_mfc,
-       &s5p_device_mfc_l,
-       &s5p_device_mfc_r,
-       &s5pv210_device_ac97,
-       &s5pv210_device_iis0,
-       &s5pv210_device_spdif,
-       &samsung_asoc_idma,
-       &samsung_device_keypad,
-       &smdkv210_dm9000,
-       &smdkv210_lcd_lte480wv,
-};
-
-static void __init smdkv210_dm9000_init(void)
-{
-       unsigned int tmp;
-
-       gpio_request(S5PV210_MP01(5), "nCS5");
-       s3c_gpio_cfgpin(S5PV210_MP01(5), S3C_GPIO_SFN(2));
-       gpio_free(S5PV210_MP01(5));
-
-       tmp = (5 << S5P_SROM_BCX__TACC__SHIFT);
-       __raw_writel(tmp, S5P_SROM_BC5);
-
-       tmp = __raw_readl(S5P_SROM_BW);
-       tmp &= (S5P_SROM_BW__CS_MASK << S5P_SROM_BW__NCS5__SHIFT);
-       tmp |= (1 << S5P_SROM_BW__NCS5__SHIFT);
-       __raw_writel(tmp, S5P_SROM_BW);
-}
-
-static struct i2c_board_info smdkv210_i2c_devs0[] __initdata = {
-       { I2C_BOARD_INFO("24c08", 0x50), },     /* Samsung S524AD0XD1 */
-       { I2C_BOARD_INFO("wm8580", 0x1b), },
-};
-
-static struct i2c_board_info smdkv210_i2c_devs1[] __initdata = {
-       /* To Be Updated */
-};
-
-static struct i2c_board_info smdkv210_i2c_devs2[] __initdata = {
-       /* To Be Updated */
-};
-
-/* LCD Backlight data */
-static struct samsung_bl_gpio_info smdkv210_bl_gpio_info = {
-       .no = S5PV210_GPD0(3),
-       .func = S3C_GPIO_SFN(2),
-};
-
-static struct platform_pwm_backlight_data smdkv210_bl_data = {
-       .pwm_id = 3,
-       .pwm_period_ns = 1000,
-       .enable_gpio = -1,
-};
-
-static void __init smdkv210_map_io(void)
-{
-       s5pv210_init_io(NULL, 0);
-       s3c24xx_init_clocks(clk_xusbxti.rate);
-       s3c24xx_init_uarts(smdkv210_uartcfgs, ARRAY_SIZE(smdkv210_uartcfgs));
-       samsung_set_timer_source(SAMSUNG_PWM2, SAMSUNG_PWM4);
-}
-
-static void __init smdkv210_reserve(void)
-{
-       s5p_mfc_reserve_mem(0x43000000, 8 << 20, 0x51000000, 8 << 20);
-}
-
-static void __init smdkv210_machine_init(void)
-{
-       s3c_pm_init();
-
-       smdkv210_dm9000_init();
-
-       samsung_keypad_set_platdata(&smdkv210_keypad_data);
-       s3c24xx_ts_set_platdata(NULL);
-
-       s3c_i2c0_set_platdata(NULL);
-       s3c_i2c1_set_platdata(NULL);
-       s3c_i2c2_set_platdata(NULL);
-       i2c_register_board_info(0, smdkv210_i2c_devs0,
-                       ARRAY_SIZE(smdkv210_i2c_devs0));
-       i2c_register_board_info(1, smdkv210_i2c_devs1,
-                       ARRAY_SIZE(smdkv210_i2c_devs1));
-       i2c_register_board_info(2, smdkv210_i2c_devs2,
-                       ARRAY_SIZE(smdkv210_i2c_devs2));
-
-       s3c_ide_set_platdata(&smdkv210_ide_pdata);
-
-       s3c_fb_set_platdata(&smdkv210_lcd0_pdata);
-
-       s3c_hsotg_set_platdata(&smdkv210_hsotg_pdata);
-
-       platform_add_devices(smdkv210_devices, ARRAY_SIZE(smdkv210_devices));
-
-       samsung_bl_set(&smdkv210_bl_gpio_info, &smdkv210_bl_data);
-}
-
-MACHINE_START(SMDKV210, "SMDKV210")
-       /* Maintainer: Kukjin Kim <kgene.kim@samsung.com> */
-       .atag_offset    = 0x100,
-       .init_irq       = s5pv210_init_irq,
-       .map_io         = smdkv210_map_io,
-       .init_machine   = smdkv210_machine_init,
-       .init_time      = samsung_timer_init,
-       .restart        = s5pv210_restart,
-       .reserve        = &smdkv210_reserve,
-MACHINE_END
diff --git a/arch/arm/mach-s5pv210/mach-torbreck.c b/arch/arm/mach-s5pv210/mach-torbreck.c
deleted file mode 100644 (file)
index 1578055..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/mach-torbreck.c
- *
- * Copyright (c) 2010 aESOP Community
- *             http://www.aesop.or.kr/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/i2c.h>
-#include <linux/init.h>
-#include <linux/serial_core.h>
-#include <linux/serial_s3c.h>
-
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-#include <asm/setup.h>
-#include <asm/mach-types.h>
-
-#include <mach/map.h>
-#include <mach/regs-clock.h>
-
-#include <plat/devs.h>
-#include <plat/cpu.h>
-#include <linux/platform_data/i2c-s3c2410.h>
-#include <plat/samsung-time.h>
-
-#include "common.h"
-
-/* Following are default values for UCON, ULCON and UFCON UART registers */
-#define TORBRECK_UCON_DEFAULT  (S3C2410_UCON_TXILEVEL |        \
-                                S3C2410_UCON_RXILEVEL |        \
-                                S3C2410_UCON_TXIRQMODE |       \
-                                S3C2410_UCON_RXIRQMODE |       \
-                                S3C2410_UCON_RXFIFO_TOI |      \
-                                S3C2443_UCON_RXERR_IRQEN)
-
-#define TORBRECK_ULCON_DEFAULT S3C2410_LCON_CS8
-
-#define TORBRECK_UFCON_DEFAULT (S3C2410_UFCON_FIFOMODE |       \
-                                S5PV210_UFCON_TXTRIG4 |        \
-                                S5PV210_UFCON_RXTRIG4)
-
-static struct s3c2410_uartcfg torbreck_uartcfgs[] __initdata = {
-       [0] = {
-               .hwport         = 0,
-               .flags          = 0,
-               .ucon           = TORBRECK_UCON_DEFAULT,
-               .ulcon          = TORBRECK_ULCON_DEFAULT,
-               .ufcon          = TORBRECK_UFCON_DEFAULT,
-       },
-       [1] = {
-               .hwport         = 1,
-               .flags          = 0,
-               .ucon           = TORBRECK_UCON_DEFAULT,
-               .ulcon          = TORBRECK_ULCON_DEFAULT,
-               .ufcon          = TORBRECK_UFCON_DEFAULT,
-       },
-       [2] = {
-               .hwport         = 2,
-               .flags          = 0,
-               .ucon           = TORBRECK_UCON_DEFAULT,
-               .ulcon          = TORBRECK_ULCON_DEFAULT,
-               .ufcon          = TORBRECK_UFCON_DEFAULT,
-       },
-       [3] = {
-               .hwport         = 3,
-               .flags          = 0,
-               .ucon           = TORBRECK_UCON_DEFAULT,
-               .ulcon          = TORBRECK_ULCON_DEFAULT,
-               .ufcon          = TORBRECK_UFCON_DEFAULT,
-       },
-};
-
-static struct platform_device *torbreck_devices[] __initdata = {
-       &s5pv210_device_iis0,
-       &s3c_device_cfcon,
-       &s3c_device_hsmmc0,
-       &s3c_device_hsmmc1,
-       &s3c_device_hsmmc2,
-       &s3c_device_hsmmc3,
-       &s3c_device_i2c0,
-       &s3c_device_i2c1,
-       &s3c_device_i2c2,
-       &s3c_device_rtc,
-       &s3c_device_wdt,
-};
-
-static struct i2c_board_info torbreck_i2c_devs0[] __initdata = {
-       /* To Be Updated */
-};
-
-static struct i2c_board_info torbreck_i2c_devs1[] __initdata = {
-       /* To Be Updated */
-};
-
-static struct i2c_board_info torbreck_i2c_devs2[] __initdata = {
-       /* To Be Updated */
-};
-
-static void __init torbreck_map_io(void)
-{
-       s5pv210_init_io(NULL, 0);
-       s3c24xx_init_clocks(24000000);
-       s3c24xx_init_uarts(torbreck_uartcfgs, ARRAY_SIZE(torbreck_uartcfgs));
-       samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
-}
-
-static void __init torbreck_machine_init(void)
-{
-       s3c_i2c0_set_platdata(NULL);
-       s3c_i2c1_set_platdata(NULL);
-       s3c_i2c2_set_platdata(NULL);
-       i2c_register_board_info(0, torbreck_i2c_devs0,
-                       ARRAY_SIZE(torbreck_i2c_devs0));
-       i2c_register_board_info(1, torbreck_i2c_devs1,
-                       ARRAY_SIZE(torbreck_i2c_devs1));
-       i2c_register_board_info(2, torbreck_i2c_devs2,
-                       ARRAY_SIZE(torbreck_i2c_devs2));
-
-       platform_add_devices(torbreck_devices, ARRAY_SIZE(torbreck_devices));
-}
-
-MACHINE_START(TORBRECK, "TORBRECK")
-       /* Maintainer: Hyunchul Ko <ghcstop@gmail.com> */
-       .atag_offset    = 0x100,
-       .init_irq       = s5pv210_init_irq,
-       .map_io         = torbreck_map_io,
-       .init_machine   = torbreck_machine_init,
-       .init_time      = samsung_timer_init,
-       .restart        = s5pv210_restart,
-MACHINE_END
index 3cf3f9c8ddd124e84e7124514544377cfcc4d430..123163dd2ab0b394c100eda6c828cf644fb3e495 100644 (file)
@@ -1,6 +1,6 @@
 /* linux/arch/arm/mach-s5pv210/pm.c
  *
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2010-2014 Samsung Electronics Co., Ltd.
  *             http://www.samsung.com
  *
  * S5PV210 - Power Management support
 #include <linux/syscore_ops.h>
 #include <linux/io.h>
 
-#include <plat/cpu.h>
-#include <plat/pm.h>
+#include <asm/cacheflush.h>
+#include <asm/suspend.h>
+
+#include <plat/pm-common.h>
 
-#include <mach/regs-irq.h>
 #include <mach/regs-clock.h>
 
-static struct sleep_save s5pv210_core_save[] = {
-       /* Clock source */
-       SAVE_ITEM(S5P_CLK_SRC0),
-       SAVE_ITEM(S5P_CLK_SRC1),
-       SAVE_ITEM(S5P_CLK_SRC2),
-       SAVE_ITEM(S5P_CLK_SRC3),
-       SAVE_ITEM(S5P_CLK_SRC4),
-       SAVE_ITEM(S5P_CLK_SRC5),
-       SAVE_ITEM(S5P_CLK_SRC6),
-
-       /* Clock source Mask */
-       SAVE_ITEM(S5P_CLK_SRC_MASK0),
-       SAVE_ITEM(S5P_CLK_SRC_MASK1),
-
-       /* Clock Divider */
-       SAVE_ITEM(S5P_CLK_DIV0),
-       SAVE_ITEM(S5P_CLK_DIV1),
-       SAVE_ITEM(S5P_CLK_DIV2),
-       SAVE_ITEM(S5P_CLK_DIV3),
-       SAVE_ITEM(S5P_CLK_DIV4),
-       SAVE_ITEM(S5P_CLK_DIV5),
-       SAVE_ITEM(S5P_CLK_DIV6),
-       SAVE_ITEM(S5P_CLK_DIV7),
-
-       /* Clock Main Gate */
-       SAVE_ITEM(S5P_CLKGATE_MAIN0),
-       SAVE_ITEM(S5P_CLKGATE_MAIN1),
-       SAVE_ITEM(S5P_CLKGATE_MAIN2),
-
-       /* Clock source Peri Gate */
-       SAVE_ITEM(S5P_CLKGATE_PERI0),
-       SAVE_ITEM(S5P_CLKGATE_PERI1),
-
-       /* Clock source SCLK Gate */
-       SAVE_ITEM(S5P_CLKGATE_SCLK0),
-       SAVE_ITEM(S5P_CLKGATE_SCLK1),
-
-       /* Clock IP Clock gate */
-       SAVE_ITEM(S5P_CLKGATE_IP0),
-       SAVE_ITEM(S5P_CLKGATE_IP1),
-       SAVE_ITEM(S5P_CLKGATE_IP2),
-       SAVE_ITEM(S5P_CLKGATE_IP3),
-       SAVE_ITEM(S5P_CLKGATE_IP4),
-
-       /* Clock Blcok and Bus gate */
-       SAVE_ITEM(S5P_CLKGATE_BLOCK),
-       SAVE_ITEM(S5P_CLKGATE_BUS0),
+#include "common.h"
 
+static struct sleep_save s5pv210_core_save[] = {
        /* Clock ETC */
-       SAVE_ITEM(S5P_CLK_OUT),
        SAVE_ITEM(S5P_MDNIE_SEL),
 };
 
+/*
+ * VIC wake-up support (TODO)
+ */
+static u32 s5pv210_irqwake_intmask = 0xffffffff;
+
+/*
+ * Suspend helpers.
+ */
 static int s5pv210_cpu_suspend(unsigned long arg)
 {
        unsigned long tmp;
@@ -102,8 +65,12 @@ static void s5pv210_pm_prepare(void)
 {
        unsigned int tmp;
 
+       /* Set wake-up mask registers */
+       __raw_writel(exynos_get_eint_wake_mask(), S5P_EINT_WAKEUP_MASK);
+       __raw_writel(s5pv210_irqwake_intmask, S5P_WAKEUP_MASK);
+
        /* ensure at least INFORM0 has the resume address */
-       __raw_writel(virt_to_phys(s3c_cpu_resume), S5P_INFORM0);
+       __raw_writel(virt_to_phys(s5pv210_cpu_resume), S5P_INFORM0);
 
        tmp = __raw_readl(S5P_SLEEP_CFG);
        tmp &= ~(S5P_SLEEP_CFG_OSC_EN | S5P_SLEEP_CFG_USBOSC_EN);
@@ -123,26 +90,70 @@ static void s5pv210_pm_prepare(void)
        s3c_pm_do_save(s5pv210_core_save, ARRAY_SIZE(s5pv210_core_save));
 }
 
-static int s5pv210_pm_add(struct device *dev, struct subsys_interface *sif)
+/*
+ * Suspend operations.
+ */
+static int s5pv210_suspend_enter(suspend_state_t state)
 {
-       pm_cpu_prep = s5pv210_pm_prepare;
-       pm_cpu_sleep = s5pv210_cpu_suspend;
+       int ret;
+
+       s3c_pm_debug_init();
+
+       S3C_PMDBG("%s: suspending the system...\n", __func__);
+
+       S3C_PMDBG("%s: wakeup masks: %08x,%08x\n", __func__,
+                       s5pv210_irqwake_intmask, exynos_get_eint_wake_mask());
+
+       if (s5pv210_irqwake_intmask == -1U
+           && exynos_get_eint_wake_mask() == -1U) {
+               pr_err("%s: No wake-up sources!\n", __func__);
+               pr_err("%s: Aborting sleep\n", __func__);
+               return -EINVAL;
+       }
+
+       s3c_pm_save_uarts();
+       s5pv210_pm_prepare();
+       flush_cache_all();
+       s3c_pm_check_store();
+
+       ret = cpu_suspend(0, s5pv210_cpu_suspend);
+       if (ret)
+               return ret;
+
+       s3c_pm_restore_uarts();
+
+       S3C_PMDBG("%s: wakeup stat: %08x\n", __func__,
+                       __raw_readl(S5P_WAKEUP_STAT));
+
+       s3c_pm_check_restore();
+
+       S3C_PMDBG("%s: resuming the system...\n", __func__);
 
        return 0;
 }
 
-static struct subsys_interface s5pv210_pm_interface = {
-       .name           = "s5pv210_pm",
-       .subsys         = &s5pv210_subsys,
-       .add_dev        = s5pv210_pm_add,
-};
+static int s5pv210_suspend_prepare(void)
+{
+       s3c_pm_check_prepare();
 
-static __init int s5pv210_pm_drvinit(void)
+       return 0;
+}
+
+static void s5pv210_suspend_finish(void)
 {
-       return subsys_interface_register(&s5pv210_pm_interface);
+       s3c_pm_check_cleanup();
 }
-arch_initcall(s5pv210_pm_drvinit);
 
+static const struct platform_suspend_ops s5pv210_suspend_ops = {
+       .enter          = s5pv210_suspend_enter,
+       .prepare        = s5pv210_suspend_prepare,
+       .finish         = s5pv210_suspend_finish,
+       .valid          = suspend_valid_only_mem,
+};
+
+/*
+ * Syscore operations used to delay restore of certain registers.
+ */
 static void s5pv210_pm_resume(void)
 {
        u32 tmp;
@@ -159,9 +170,11 @@ static struct syscore_ops s5pv210_pm_syscore_ops = {
        .resume         = s5pv210_pm_resume,
 };
 
-static __init int s5pv210_pm_syscore_init(void)
+/*
+ * Initialization entry point.
+ */
+void __init s5pv210_pm_init(void)
 {
        register_syscore_ops(&s5pv210_pm_syscore_ops);
-       return 0;
+       suspend_set_ops(&s5pv210_suspend_ops);
 }
-arch_initcall(s5pv210_pm_syscore_init);
diff --git a/arch/arm/mach-s5pv210/s5pv210.c b/arch/arm/mach-s5pv210/s5pv210.c
new file mode 100644 (file)
index 0000000..53feff3
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * Samsung's S5PC110/S5PV210 flattened device tree enabled machine.
+ *
+ * Copyright (c) 2013-2014 Samsung Electronics Co., Ltd.
+ * Mateusz Krawczuk <m.krawczuk@partner.samsung.com>
+ * Tomasz Figa <t.figa@samsung.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/of_fdt.h>
+#include <linux/of_platform.h>
+
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+#include <asm/system_misc.h>
+
+#include <plat/map-base.h>
+#include <mach/regs-clock.h>
+
+#include "common.h"
+
+static int __init s5pv210_fdt_map_sys(unsigned long node, const char *uname,
+                                       int depth, void *data)
+{
+       struct map_desc iodesc;
+       const __be32 *reg;
+       int len;
+
+       if (!of_flat_dt_is_compatible(node, "samsung,s5pv210-clock"))
+               return 0;
+
+       reg = of_get_flat_dt_prop(node, "reg", &len);
+       if (reg == NULL || len != (sizeof(unsigned long) * 2))
+               return 0;
+
+       iodesc.pfn = __phys_to_pfn(be32_to_cpu(reg[0]));
+       iodesc.length = be32_to_cpu(reg[1]) - 1;
+       iodesc.virtual = (unsigned long)S3C_VA_SYS;
+       iodesc.type = MT_DEVICE;
+       iotable_init(&iodesc, 1);
+
+       return 1;
+}
+
+static void __init s5pv210_dt_map_io(void)
+{
+       debug_ll_io_init();
+
+       of_scan_flat_dt(s5pv210_fdt_map_sys, NULL);
+}
+
+static void s5pv210_dt_restart(enum reboot_mode mode, const char *cmd)
+{
+       __raw_writel(0x1, S5P_SWRESET);
+}
+
+static void __init s5pv210_dt_init_late(void)
+{
+       platform_device_register_simple("s5pv210-cpufreq", -1, NULL, 0);
+       s5pv210_pm_init();
+}
+
+static char const *s5pv210_dt_compat[] __initconst = {
+       "samsung,s5pc110",
+       "samsung,s5pv210",
+       NULL
+};
+
+DT_MACHINE_START(S5PV210_DT, "Samsung S5PC110/S5PV210-based board")
+       .dt_compat = s5pv210_dt_compat,
+       .map_io = s5pv210_dt_map_io,
+       .restart = s5pv210_dt_restart,
+       .init_late = s5pv210_dt_init_late,
+MACHINE_END
diff --git a/arch/arm/mach-s5pv210/setup-fb-24bpp.c b/arch/arm/mach-s5pv210/setup-fb-24bpp.c
deleted file mode 100644 (file)
index 55103c8..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/* linux/arch/arm/plat-s5pv210/setup-fb-24bpp.c
- *
- * Copyright (c) 2009-2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * Base s5pv210 setup information for 24bpp LCD framebuffer
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/fb.h>
-#include <linux/gpio.h>
-
-#include <mach/map.h>
-#include <plat/fb.h>
-#include <mach/regs-clock.h>
-#include <plat/gpio-cfg.h>
-
-static void s5pv210_fb_cfg_gpios(unsigned int base, unsigned int nr)
-{
-       s3c_gpio_cfgrange_nopull(base, nr, S3C_GPIO_SFN(2));
-
-       for (; nr > 0; nr--, base++)
-               s5p_gpio_set_drvstr(base, S5P_GPIO_DRVSTR_LV4);
-}
-
-
-void s5pv210_fb_gpio_setup_24bpp(void)
-{
-       s5pv210_fb_cfg_gpios(S5PV210_GPF0(0), 8);
-       s5pv210_fb_cfg_gpios(S5PV210_GPF1(0), 8);
-       s5pv210_fb_cfg_gpios(S5PV210_GPF2(0), 8);
-       s5pv210_fb_cfg_gpios(S5PV210_GPF3(0), 4);
-
-       /* Set DISPLAY_CONTROL register for Display path selection.
-        *
-        * ouput   |   RGB   |   I80   |   ITU
-        * -----------------------------------
-        *  00     |   MIE   |  FIMD   |  FIMD
-        *  01     | MDNIE   | MDNIE   |  FIMD
-        *  10     |  FIMD   |  FIMD   |  FIMD
-        *  11     |  FIMD   |  FIMD   |  FIMD
-        */
-       writel(0x2, S5P_MDNIE_SEL);
-}
diff --git a/arch/arm/mach-s5pv210/setup-fimc.c b/arch/arm/mach-s5pv210/setup-fimc.c
deleted file mode 100644 (file)
index 54cc5b1..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2011 Samsung Electronics Co., Ltd.
- *
- * S5PV210 camera interface GPIO configuration.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/gpio.h>
-#include <plat/gpio-cfg.h>
-#include <plat/camport.h>
-
-int s5pv210_fimc_setup_gpio(enum s5p_camport_id id)
-{
-       u32 gpio8, gpio5;
-       int ret;
-
-       switch (id) {
-       case S5P_CAMPORT_A:
-               gpio8 = S5PV210_GPE0(0);
-               gpio5 = S5PV210_GPE1(0);
-               break;
-
-       case S5P_CAMPORT_B:
-               gpio8 = S5PV210_GPJ0(0);
-               gpio5 = S5PV210_GPJ1(0);
-               break;
-
-       default:
-               WARN(1, "Wrong camport id: %d\n", id);
-               return -EINVAL;
-       }
-
-       ret = s3c_gpio_cfgall_range(gpio8, 8, S3C_GPIO_SFN(2),
-                                   S3C_GPIO_PULL_UP);
-       if (ret)
-               return ret;
-
-       return s3c_gpio_cfgall_range(gpio5, 5, S3C_GPIO_SFN(2),
-                                    S3C_GPIO_PULL_UP);
-}
diff --git a/arch/arm/mach-s5pv210/setup-i2c0.c b/arch/arm/mach-s5pv210/setup-i2c0.c
deleted file mode 100644 (file)
index 4a15849..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/setup-i2c0.c
- *
- * Copyright (c) 2009-2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * I2C0 GPIO configuration.
- *
- * Based on plat-s3c64xx/setup-i2c0.c
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/gpio.h>
-
-struct platform_device; /* don't need the contents */
-
-#include <linux/platform_data/i2c-s3c2410.h>
-#include <plat/gpio-cfg.h>
-
-void s3c_i2c0_cfg_gpio(struct platform_device *dev)
-{
-       s3c_gpio_cfgall_range(S5PV210_GPD1(0), 2,
-                             S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP);
-}
diff --git a/arch/arm/mach-s5pv210/setup-i2c1.c b/arch/arm/mach-s5pv210/setup-i2c1.c
deleted file mode 100644 (file)
index 4777f6b..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/setup-i2c1.c
- *
- * Copyright (c) 2009-2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * I2C1 GPIO configuration.
- *
- * Based on plat-s3c64xx/setup-i2c1.c
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/gpio.h>
-
-struct platform_device; /* don't need the contents */
-
-#include <linux/platform_data/i2c-s3c2410.h>
-#include <plat/gpio-cfg.h>
-
-void s3c_i2c1_cfg_gpio(struct platform_device *dev)
-{
-       s3c_gpio_cfgall_range(S5PV210_GPD1(2), 2,
-                             S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP);
-}
diff --git a/arch/arm/mach-s5pv210/setup-i2c2.c b/arch/arm/mach-s5pv210/setup-i2c2.c
deleted file mode 100644 (file)
index bbce6c7..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/setup-i2c2.c
- *
- * Copyright (c) 2009-2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * I2C2 GPIO configuration.
- *
- * Based on plat-s3c64xx/setup-i2c0.c
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/gpio.h>
-
-struct platform_device; /* don't need the contents */
-
-#include <linux/platform_data/i2c-s3c2410.h>
-#include <plat/gpio-cfg.h>
-
-void s3c_i2c2_cfg_gpio(struct platform_device *dev)
-{
-       s3c_gpio_cfgall_range(S5PV210_GPD1(4), 2,
-                             S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP);
-}
diff --git a/arch/arm/mach-s5pv210/setup-ide.c b/arch/arm/mach-s5pv210/setup-ide.c
deleted file mode 100644 (file)
index ea123d5..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/setup-ide.c
- *
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com
- *
- * S5PV210 setup information for IDE
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#include <linux/kernel.h>
-#include <linux/gpio.h>
-
-#include <plat/gpio-cfg.h>
-
-static void s5pv210_ide_cfg_gpios(unsigned int base, unsigned int nr)
-{
-       s3c_gpio_cfgrange_nopull(base, nr, S3C_GPIO_SFN(4));
-
-       for (; nr > 0; nr--, base++)
-               s5p_gpio_set_drvstr(base, S5P_GPIO_DRVSTR_LV4);
-}
-
-void s5pv210_ide_setup_gpio(void)
-{
-       /* CF_Add[0 - 2], CF_IORDY, CF_INTRQ, CF_DMARQ, CF_DMARST, CF_DMACK */
-       s5pv210_ide_cfg_gpios(S5PV210_GPJ0(0), 8);
-
-       /* CF_Data[0 - 7] */
-       s5pv210_ide_cfg_gpios(S5PV210_GPJ2(0), 8);
-
-       /* CF_Data[8 - 15] */
-       s5pv210_ide_cfg_gpios(S5PV210_GPJ3(0), 8);
-
-       /* CF_CS0, CF_CS1, CF_IORD, CF_IOWR */
-       s5pv210_ide_cfg_gpios(S5PV210_GPJ4(0), 4);
-}
diff --git a/arch/arm/mach-s5pv210/setup-keypad.c b/arch/arm/mach-s5pv210/setup-keypad.c
deleted file mode 100644 (file)
index c56420a..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * linux/arch/arm/mach-s5pv210/setup-keypad.c
- *
- * Copyright (C) 2010 Samsung Electronics Co.Ltd
- * Author: Joonyoung Shim <jy0922.shim@samsung.com>
- *
- *  This program is free software; you can redistribute  it and/or modify it
- *  under  the terms of  the GNU General  Public License as published by the
- *  Free Software Foundation;  either version 2 of the  License, or (at your
- *  option) any later version.
- *
- */
-
-#include <linux/gpio.h>
-#include <plat/gpio-cfg.h>
-
-void samsung_keypad_cfg_gpio(unsigned int rows, unsigned int cols)
-{
-       /* Set all the necessary GPH3 pins to special-function 3: KP_ROW[x] */
-       s3c_gpio_cfgrange_nopull(S5PV210_GPH3(0), rows, S3C_GPIO_SFN(3));
-
-       /* Set all the necessary GPH2 pins to special-function 3: KP_COL[x] */
-       s3c_gpio_cfgrange_nopull(S5PV210_GPH2(0), cols, S3C_GPIO_SFN(3));
-}
diff --git a/arch/arm/mach-s5pv210/setup-sdhci-gpio.c b/arch/arm/mach-s5pv210/setup-sdhci-gpio.c
deleted file mode 100644 (file)
index 0512ada..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/* linux/arch/arm/plat-s5pc1xx/setup-sdhci-gpio.c
- *
- * Copyright (c) 2009-2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * S5PV210 - Helper functions for setting up SDHCI device(s) GPIO (HSMMC)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/interrupt.h>
-#include <linux/platform_device.h>
-#include <linux/io.h>
-#include <linux/gpio.h>
-#include <linux/mmc/host.h>
-#include <linux/mmc/card.h>
-
-#include <plat/gpio-cfg.h>
-#include <plat/sdhci.h>
-
-void s5pv210_setup_sdhci0_cfg_gpio(struct platform_device *dev, int width)
-{
-       struct s3c_sdhci_platdata *pdata = dev->dev.platform_data;
-
-       /* Set all the necessary GPG0/GPG1 pins to special-function 2 */
-       s3c_gpio_cfgrange_nopull(S5PV210_GPG0(0), 2, S3C_GPIO_SFN(2));
-
-       switch (width) {
-       case 8:
-               /* GPG1[3:6] special-function 3 */
-               s3c_gpio_cfgrange_nopull(S5PV210_GPG1(3), 4, S3C_GPIO_SFN(3));
-       case 4:
-               /* GPG0[3:6] special-function 2 */
-               s3c_gpio_cfgrange_nopull(S5PV210_GPG0(3), 4, S3C_GPIO_SFN(2));
-       default:
-               break;
-       }
-
-       if (pdata->cd_type == S3C_SDHCI_CD_INTERNAL) {
-               s3c_gpio_setpull(S5PV210_GPG0(2), S3C_GPIO_PULL_UP);
-               s3c_gpio_cfgpin(S5PV210_GPG0(2), S3C_GPIO_SFN(2));
-       }
-}
-
-void s5pv210_setup_sdhci1_cfg_gpio(struct platform_device *dev, int width)
-{
-       struct s3c_sdhci_platdata *pdata = dev->dev.platform_data;
-
-       /* Set all the necessary GPG1[0:1] pins to special-function 2 */
-       s3c_gpio_cfgrange_nopull(S5PV210_GPG1(0), 2, S3C_GPIO_SFN(2));
-
-       /* Data pin GPG1[3:6] to special-function 2 */
-       s3c_gpio_cfgrange_nopull(S5PV210_GPG1(3), 4, S3C_GPIO_SFN(2));
-
-       if (pdata->cd_type == S3C_SDHCI_CD_INTERNAL) {
-               s3c_gpio_setpull(S5PV210_GPG1(2), S3C_GPIO_PULL_UP);
-               s3c_gpio_cfgpin(S5PV210_GPG1(2), S3C_GPIO_SFN(2));
-       }
-}
-
-void s5pv210_setup_sdhci2_cfg_gpio(struct platform_device *dev, int width)
-{
-       struct s3c_sdhci_platdata *pdata = dev->dev.platform_data;
-
-       /* Set all the necessary GPG2[0:1] pins to special-function 2 */
-       s3c_gpio_cfgrange_nopull(S5PV210_GPG2(0), 2, S3C_GPIO_SFN(2));
-
-       switch (width) {
-       case 8:
-               /* Data pin GPG3[3:6] to special-function 3 */
-               s3c_gpio_cfgrange_nopull(S5PV210_GPG3(3), 4, S3C_GPIO_SFN(3));
-       case 4:
-               /* Data pin GPG2[3:6] to special-function 2 */
-               s3c_gpio_cfgrange_nopull(S5PV210_GPG2(3), 4, S3C_GPIO_SFN(2));
-       default:
-               break;
-       }
-
-       if (pdata->cd_type == S3C_SDHCI_CD_INTERNAL) {
-               s3c_gpio_setpull(S5PV210_GPG2(2), S3C_GPIO_PULL_UP);
-               s3c_gpio_cfgpin(S5PV210_GPG2(2), S3C_GPIO_SFN(2));
-       }
-}
-
-void s5pv210_setup_sdhci3_cfg_gpio(struct platform_device *dev, int width)
-{
-       struct s3c_sdhci_platdata *pdata = dev->dev.platform_data;
-
-       /* Set all the necessary GPG3[0:1] pins to special-function 2 */
-       s3c_gpio_cfgrange_nopull(S5PV210_GPG3(0), 2, S3C_GPIO_SFN(2));
-
-       /* Data pin GPG3[3:6] to special-function 2 */
-       s3c_gpio_cfgrange_nopull(S5PV210_GPG3(3), 4, S3C_GPIO_SFN(2));
-
-       if (pdata->cd_type == S3C_SDHCI_CD_INTERNAL) {
-               s3c_gpio_setpull(S5PV210_GPG3(2), S3C_GPIO_PULL_UP);
-               s3c_gpio_cfgpin(S5PV210_GPG3(2), S3C_GPIO_SFN(2));
-       }
-}
diff --git a/arch/arm/mach-s5pv210/setup-spi.c b/arch/arm/mach-s5pv210/setup-spi.c
deleted file mode 100644 (file)
index 81aecc1..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/* linux/arch/arm/mach-s5pv210/setup-spi.c
- *
- * Copyright (C) 2011 Samsung Electronics Ltd.
- *             http://www.samsung.com/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/gpio.h>
-#include <plat/gpio-cfg.h>
-
-#ifdef CONFIG_S3C64XX_DEV_SPI0
-int s3c64xx_spi0_cfg_gpio(void)
-{
-       s3c_gpio_cfgpin(S5PV210_GPB(0), S3C_GPIO_SFN(2));
-       s3c_gpio_setpull(S5PV210_GPB(0), S3C_GPIO_PULL_UP);
-       s3c_gpio_cfgall_range(S5PV210_GPB(2), 2,
-                               S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP);
-       return 0;
-}
-#endif
-
-#ifdef CONFIG_S3C64XX_DEV_SPI1
-int s3c64xx_spi1_cfg_gpio(void)
-{
-       s3c_gpio_cfgpin(S5PV210_GPB(4), S3C_GPIO_SFN(2));
-       s3c_gpio_setpull(S5PV210_GPB(4), S3C_GPIO_PULL_UP);
-       s3c_gpio_cfgall_range(S5PV210_GPB(6), 2,
-                               S3C_GPIO_SFN(2), S3C_GPIO_PULL_UP);
-       return 0;
-}
-#endif
diff --git a/arch/arm/mach-s5pv210/setup-usb-phy.c b/arch/arm/mach-s5pv210/setup-usb-phy.c
deleted file mode 100644 (file)
index b2ee533..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2012 Samsung Electronics Co.Ltd
- * Author: Joonyoung Shim <jy0922.shim@samsung.com>
- *
- * 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 Foundationr
- */
-
-#include <linux/clk.h>
-#include <linux/delay.h>
-#include <linux/err.h>
-#include <linux/io.h>
-#include <linux/platform_device.h>
-
-#include <mach/map.h>
-
-#include <plat/cpu.h>
-#include <plat/regs-usb-hsotg-phy.h>
-#include <plat/usb-phy.h>
-
-#define S5PV210_USB_PHY_CON    (S3C_VA_SYS + 0xE80C)
-#define S5PV210_USB_PHY0_EN    (1 << 0)
-#define S5PV210_USB_PHY1_EN    (1 << 1)
-
-static int s5pv210_usb_otgphy_init(struct platform_device *pdev)
-{
-       struct clk *xusbxti;
-       u32 phyclk;
-
-       writel(readl(S5PV210_USB_PHY_CON) | S5PV210_USB_PHY0_EN,
-                       S5PV210_USB_PHY_CON);
-
-       /* set clock frequency for PLL */
-       phyclk = readl(S3C_PHYCLK) & ~S3C_PHYCLK_CLKSEL_MASK;
-
-       xusbxti = clk_get(&pdev->dev, "xusbxti");
-       if (xusbxti && !IS_ERR(xusbxti)) {
-               switch (clk_get_rate(xusbxti)) {
-               case 12 * MHZ:
-                       phyclk |= S3C_PHYCLK_CLKSEL_12M;
-                       break;
-               case 24 * MHZ:
-                       phyclk |= S3C_PHYCLK_CLKSEL_24M;
-                       break;
-               default:
-               case 48 * MHZ:
-                       /* default reference clock */
-                       break;
-               }
-               clk_put(xusbxti);
-       }
-
-       /* TODO: select external clock/oscillator */
-       writel(phyclk | S3C_PHYCLK_CLK_FORCE, S3C_PHYCLK);
-
-       /* set to normal OTG PHY */
-       writel((readl(S3C_PHYPWR) & ~S3C_PHYPWR_NORMAL_MASK), S3C_PHYPWR);
-       mdelay(1);
-
-       /* reset OTG PHY and Link */
-       writel(S3C_RSTCON_PHY | S3C_RSTCON_HCLK | S3C_RSTCON_PHYCLK,
-                       S3C_RSTCON);
-       udelay(20);     /* at-least 10uS */
-       writel(0, S3C_RSTCON);
-
-       return 0;
-}
-
-static int s5pv210_usb_otgphy_exit(struct platform_device *pdev)
-{
-       writel((readl(S3C_PHYPWR) | S3C_PHYPWR_ANALOG_POWERDOWN |
-                               S3C_PHYPWR_OTG_DISABLE), S3C_PHYPWR);
-
-       writel(readl(S5PV210_USB_PHY_CON) & ~S5PV210_USB_PHY0_EN,
-                       S5PV210_USB_PHY_CON);
-
-       return 0;
-}
-
-int s5p_usb_phy_init(struct platform_device *pdev, int type)
-{
-       if (type == USB_PHY_TYPE_DEVICE)
-               return s5pv210_usb_otgphy_init(pdev);
-
-       return -EINVAL;
-}
-
-int s5p_usb_phy_exit(struct platform_device *pdev, int type)
-{
-       if (type == USB_PHY_TYPE_DEVICE)
-               return s5pv210_usb_otgphy_exit(pdev);
-
-       return -EINVAL;
-}
diff --git a/arch/arm/mach-s5pv210/sleep.S b/arch/arm/mach-s5pv210/sleep.S
new file mode 100644 (file)
index 0000000..7c43ddd
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2011-2014 Samsung Electronics Co., Ltd.
+ *             http://www.samsung.com
+ *
+ * S5PV210 Sleep Code
+ * Based on S3C64XX sleep code by:
+ *     Ben Dooks, (c) 2008 Simtec Electronics
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#include <linux/linkage.h>
+
+       .data
+       .align
+
+       /*
+        * sleep magic, to allow the bootloader to check for an valid
+        * image to resume to. Must be the first word before the
+        * s3c_cpu_resume entry.
+        */
+
+       .word   0x2bedf00d
+
+       /*
+        * s3c_cpu_resume
+        *
+        * resume code entry for bootloader to call
+        */
+
+ENTRY(s5pv210_cpu_resume)
+       b       cpu_resume
+ENDPROC(s5pv210_cpu_resume)
index 1c629c2c270fde4bcf764fb255c718bfe89620cd..1091b0a3729a187aff2fba383ea43fe7ce4fb3a1 100644 (file)
@@ -6,30 +6,16 @@
 
 config PLAT_SAMSUNG
        bool
-       depends on PLAT_S3C24XX || ARCH_S3C64XX || PLAT_S5P || ARCH_EXYNOS
+       depends on PLAT_S3C24XX || ARCH_S3C64XX || ARCH_EXYNOS || ARCH_S5PV210
        default y
        select GENERIC_IRQ_CHIP
        select NO_IOPORT_MAP
        help
          Base platform code for all Samsung SoC based systems
 
-config PLAT_S5P
-       bool
-       depends on ARCH_S5PV210
-       default y
-       select ARCH_REQUIRE_GPIOLIB
-       select ARM_VIC
-       select NO_IOPORT_MAP
-       select PLAT_SAMSUNG
-       select S3C_GPIO_TRACK
-       select S5P_GPIO_DRVSTR
-       select SAMSUNG_CLKSRC if !COMMON_CLK
-       help
-         Base platform code for Samsung's S5P series SoC.
-
 config SAMSUNG_PM
        bool
-       depends on PM && (PLAT_S3C24XX || ARCH_S3C64XX || S5P_PM)
+       depends on PM && (PLAT_S3C24XX || ARCH_S3C64XX)
        default y
        help
          Base platform power management code for samsung code
@@ -65,48 +51,6 @@ config SAMSUNG_ATAGS
 
 if SAMSUNG_ATAGS
 
-# clock options
-
-config SAMSUNG_CLOCK
-       bool
-       default y if !COMMON_CLK
-
-config SAMSUNG_CLKSRC
-       bool
-       help
-         Select the clock code for the clksrc implementation
-         used by newer systems such as the S3C64XX.
-
-config S5P_CLOCK
-       def_bool ARCH_S5PV210
-       help
-         Support common clock part for ARCH_S5P and ARCH_EXYNOS SoCs
-
-# options for IRQ support
-
-config S5P_IRQ
-       def_bool ARCH_S5PV210
-       help
-         Support common interrupt part for ARCH_S5P SoCs
-
-config S5P_EXT_INT
-       bool
-       help
-         Use the external interrupts (other than GPIO interrupts.)
-
-config S5P_GPIO_INT
-       bool
-       help
-         Common code for the GPIO interrupts (other than external interrupts.)
-
-# options for gpio configuration support
-
-config S5P_GPIO_DRVSTR
-       bool
-       help
-         Internal configuration to get and set correct GPIO driver strength
-         helper
-
 config SAMSUNG_GPIO_EXTRA
        int "Number of additional GPIO pins"
        default 128 if SAMSUNG_GPIO_EXTRA128
@@ -138,12 +82,6 @@ config S3C_GPIO_TRACK
          Internal configuration option to enable the s3c specific gpio
          chip tracking if the platform requires it.
 
-# uart options
-
-config S5P_DEV_UART
-       def_bool y
-       depends on ARCH_S5PV210
-
 # ADC driver
 
 config S3C_ADC
@@ -301,66 +239,6 @@ config SAMSUNG_DEV_BACKLIGHT
        help
          Compile in platform device definition LCD backlight with PWM Timer
 
-config S5P_DEV_CSIS0
-       bool
-       help
-         Compile in platform device definitions for MIPI-CSIS channel 0
-
-config S5P_DEV_CSIS1
-       bool
-       help
-         Compile in platform device definitions for MIPI-CSIS channel 1
-
-config S5P_DEV_FIMC0
-       bool
-       help
-         Compile in platform device definitions for FIMC controller 0
-
-config S5P_DEV_FIMC1
-       bool
-       help
-         Compile in platform device definitions for FIMC controller 1
-
-config S5P_DEV_FIMC2
-       bool
-       help
-         Compile in platform device definitions for FIMC controller 2
-
-config S5P_DEV_FIMC3
-       bool
-       help
-         Compile in platform device definitions for FIMC controller 3
-
-config S5P_DEV_FIMD0
-       bool
-       help
-         Compile in platform device definitions for FIMD controller 0
-
-config S5P_DEV_G2D
-       bool
-       help
-         Compile in platform device definitions for G2D device
-
-config S5P_DEV_I2C_HDMIPHY
-       bool
-       help
-         Compile in platform device definitions for I2C HDMIPHY controller
-
-config S5P_DEV_JPEG
-       bool
-       help
-         Compile in platform device definitions for JPEG codec
-
-config S5P_DEV_ONENAND
-       bool
-       help
-         Compile in platform device definition for OneNAND controller
-
-config S5P_DEV_TV
-       bool
-       help
-         Compile in platform device definition for TV interface
-
 config S3C24XX_PWM
        bool "PWM device support"
        select PWM
@@ -381,12 +259,6 @@ config S3C_DMA
        help
          Internal configuration for S3C DMA core
 
-config S5P_IRQ_PM
-       bool
-       default y if S5P_PM
-       help
-         Legacy IRQ power management for S5P platforms
-
 config SAMSUNG_PM_GPIO
        bool
        default y if GPIO_SAMSUNG && PM
@@ -469,17 +341,6 @@ config SAMSUNG_WDT_RESET
          Compile support for system restart by triggering watchdog reset.
          Used on SoCs that do not provide dedicated reset control.
 
-config S5P_PM
-       bool
-       help
-         Common code for power management support on S5P and newer SoCs
-
-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 DEBUG_S3C_UART
        depends on PLAT_SAMSUNG
        int
index 5e5beaa9ae15332483adef679078c0fe49cf5121..5fe175017f07bad4d698ad226e38b2c41cec0bb4 100644 (file)
@@ -5,7 +5,6 @@
 # Licensed under GPLv2
 
 ccflags-$(CONFIG_ARCH_MULTI_V7) += -I$(srctree)/$(src)/include
-ccflags-$(CONFIG_ARCH_EXYNOS)  += -I$(srctree)/arch/arm/mach-exynos/include
 
 obj-y                          :=
 obj-m                          :=
@@ -16,15 +15,6 @@ obj-                         :=
 
 obj-y                          += init.o cpu.o
 
-obj-$(CONFIG_SAMSUNG_CLOCK)    += clock.o
-
-obj-$(CONFIG_SAMSUNG_CLKSRC)   += clock-clksrc.o
-obj-$(CONFIG_S5P_CLOCK)                += s5p-clock.o
-
-obj-$(CONFIG_S5P_IRQ)          += s5p-irq.o
-obj-$(CONFIG_S5P_EXT_INT)      += s5p-irq-eint.o
-obj-$(CONFIG_S5P_GPIO_INT)     += s5p-irq-gpioint.o
-
 # ADC
 
 obj-$(CONFIG_S3C_ADC)  += adc.o
@@ -36,7 +26,6 @@ obj-$(CONFIG_SAMSUNG_ATAGS)   += platformdata.o
 obj-$(CONFIG_SAMSUNG_ATAGS)    += devs.o
 obj-$(CONFIG_SAMSUNG_ATAGS)    += dev-uart.o
 obj-$(CONFIG_S5P_DEV_MFC)      += s5p-dev-mfc.o
-obj-$(CONFIG_S5P_DEV_UART)     += s5p-dev-uart.o
 
 obj-$(CONFIG_SAMSUNG_DEV_BACKLIGHT)    += dev-backlight.o
 
@@ -58,7 +47,3 @@ obj-$(CONFIG_SAMSUNG_PM_DEBUG)        += pm-debug.o
 
 obj-$(CONFIG_SAMSUNG_WAKEMASK) += wakeup-mask.o
 obj-$(CONFIG_SAMSUNG_WDT_RESET)        += watchdog-reset.o
-
-obj-$(CONFIG_S5P_PM)           += s5p-pm.o
-obj-$(CONFIG_S5P_IRQ_PM)       += s5p-irq-pm.o
-obj-$(CONFIG_S5P_SLEEP)                += s5p-sleep.o
diff --git a/arch/arm/plat-samsung/clock-clksrc.c b/arch/arm/plat-samsung/clock-clksrc.c
deleted file mode 100644 (file)
index 786a410..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-/* linux/arch/arm/plat-samsung/clock-clksrc.c
- *
- * Copyright 2008 Simtec Electronics
- *     Ben Dooks <ben@simtec.co.uk>
- *     http://armlinux.simtec.co.uk/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/list.h>
-#include <linux/errno.h>
-#include <linux/err.h>
-#include <linux/clk.h>
-#include <linux/device.h>
-#include <linux/io.h>
-
-#include <plat/clock.h>
-#include <plat/clock-clksrc.h>
-#include <plat/cpu-freq.h>
-
-static inline struct clksrc_clk *to_clksrc(struct clk *clk)
-{
-       return container_of(clk, struct clksrc_clk, clk);
-}
-
-static inline u32 bit_mask(u32 shift, u32 nr_bits)
-{
-       u32 mask = 0xffffffff >> (32 - nr_bits);
-
-       return mask << shift;
-}
-
-static unsigned long s3c_getrate_clksrc(struct clk *clk)
-{
-       struct clksrc_clk *sclk = to_clksrc(clk);
-       unsigned long rate = clk_get_rate(clk->parent);
-       u32 clkdiv = __raw_readl(sclk->reg_div.reg);
-       u32 mask = bit_mask(sclk->reg_div.shift, sclk->reg_div.size);
-
-       clkdiv &= mask;
-       clkdiv >>= sclk->reg_div.shift;
-       clkdiv++;
-
-       rate /= clkdiv;
-       return rate;
-}
-
-static int s3c_setrate_clksrc(struct clk *clk, unsigned long rate)
-{
-       struct clksrc_clk *sclk = to_clksrc(clk);
-       void __iomem *reg = sclk->reg_div.reg;
-       unsigned int div;
-       u32 mask = bit_mask(sclk->reg_div.shift, sclk->reg_div.size);
-       u32 val;
-
-       rate = clk_round_rate(clk, rate);
-       div = clk_get_rate(clk->parent) / rate;
-       if (div > (1 << sclk->reg_div.size))
-               return -EINVAL;
-
-       val = __raw_readl(reg);
-       val &= ~mask;
-       val |= (div - 1) << sclk->reg_div.shift;
-       __raw_writel(val, reg);
-
-       return 0;
-}
-
-static int s3c_setparent_clksrc(struct clk *clk, struct clk *parent)
-{
-       struct clksrc_clk *sclk = to_clksrc(clk);
-       struct clksrc_sources *srcs = sclk->sources;
-       u32 clksrc = __raw_readl(sclk->reg_src.reg);
-       u32 mask = bit_mask(sclk->reg_src.shift, sclk->reg_src.size);
-       int src_nr = -1;
-       int ptr;
-
-       for (ptr = 0; ptr < srcs->nr_sources; ptr++)
-               if (srcs->sources[ptr] == parent) {
-                       src_nr = ptr;
-                       break;
-               }
-
-       if (src_nr >= 0) {
-               clk->parent = parent;
-
-               clksrc &= ~mask;
-               clksrc |= src_nr << sclk->reg_src.shift;
-
-               __raw_writel(clksrc, sclk->reg_src.reg);
-               return 0;
-       }
-
-       return -EINVAL;
-}
-
-static unsigned long s3c_roundrate_clksrc(struct clk *clk,
-                                             unsigned long rate)
-{
-       struct clksrc_clk *sclk = to_clksrc(clk);
-       unsigned long parent_rate = clk_get_rate(clk->parent);
-       int max_div = 1 << sclk->reg_div.size;
-       int div;
-
-       if (rate >= parent_rate)
-               rate = parent_rate;
-       else {
-               div = parent_rate / rate;
-               if (parent_rate % rate)
-                       div++;
-
-               if (div == 0)
-                       div = 1;
-               if (div > max_div)
-                       div = max_div;
-
-               rate = parent_rate / div;
-       }
-
-       return rate;
-}
-
-/* Clock initialisation code */
-
-void __init_or_cpufreq s3c_set_clksrc(struct clksrc_clk *clk, bool announce)
-{
-       struct clksrc_sources *srcs = clk->sources;
-       u32 mask = bit_mask(clk->reg_src.shift, clk->reg_src.size);
-       u32 clksrc;
-
-       if (!clk->reg_src.reg) {
-               if (!clk->clk.parent)
-                       printk(KERN_ERR "%s: no parent clock specified\n",
-                               clk->clk.name);
-               return;
-       }
-
-       clksrc = __raw_readl(clk->reg_src.reg);
-       clksrc &= mask;
-       clksrc >>= clk->reg_src.shift;
-
-       if (clksrc > srcs->nr_sources || !srcs->sources[clksrc]) {
-               printk(KERN_ERR "%s: bad source %d\n",
-                      clk->clk.name, clksrc);
-               return;
-       }
-
-       clk->clk.parent = srcs->sources[clksrc];
-
-       if (announce)
-               printk(KERN_INFO "%s: source is %s (%d), rate is %ld\n",
-                      clk->clk.name, clk->clk.parent->name, clksrc,
-                      clk_get_rate(&clk->clk));
-}
-
-static struct clk_ops clksrc_ops = {
-       .set_parent     = s3c_setparent_clksrc,
-       .get_rate       = s3c_getrate_clksrc,
-       .set_rate       = s3c_setrate_clksrc,
-       .round_rate     = s3c_roundrate_clksrc,
-};
-
-static struct clk_ops clksrc_ops_nodiv = {
-       .set_parent     = s3c_setparent_clksrc,
-};
-
-static struct clk_ops clksrc_ops_nosrc = {
-       .get_rate       = s3c_getrate_clksrc,
-       .set_rate       = s3c_setrate_clksrc,
-       .round_rate     = s3c_roundrate_clksrc,
-};
-
-void __init s3c_register_clksrc(struct clksrc_clk *clksrc, int size)
-{
-       int ret;
-
-       for (; size > 0; size--, clksrc++) {
-               if (!clksrc->reg_div.reg && !clksrc->reg_src.reg)
-                       printk(KERN_ERR "%s: clock %s has no registers set\n",
-                              __func__, clksrc->clk.name);
-
-               /* fill in the default functions */
-
-               if (!clksrc->clk.ops) {
-                       if (!clksrc->reg_div.reg)
-                               clksrc->clk.ops = &clksrc_ops_nodiv;
-                       else if (!clksrc->reg_src.reg)
-                               clksrc->clk.ops = &clksrc_ops_nosrc;
-                       else
-                               clksrc->clk.ops = &clksrc_ops;
-               }
-
-               /* setup the clocksource, but do not announce it
-                * as it may be re-set by the setup routines
-                * called after the rest of the clocks have been
-                * registered
-                */
-               s3c_set_clksrc(clksrc, false);
-
-               ret = s3c24xx_register_clock(&clksrc->clk);
-
-               if (ret < 0) {
-                       printk(KERN_ERR "%s: failed to register %s (%d)\n",
-                              __func__, clksrc->clk.name, ret);
-               }
-       }
-}
diff --git a/arch/arm/plat-samsung/clock.c b/arch/arm/plat-samsung/clock.c
deleted file mode 100644 (file)
index d103ac1..0000000
+++ /dev/null
@@ -1,539 +0,0 @@
-/* linux/arch/arm/plat-s3c24xx/clock.c
- *
- * Copyright 2004-2005 Simtec Electronics
- *     Ben Dooks <ben@simtec.co.uk>
- *
- * S3C24XX Core clock control support
- *
- * Based on, and code from linux/arch/arm/mach-versatile/clock.c
- **
- **  Copyright (C) 2004 ARM Limited.
- **  Written by Deep Blue Solutions Limited.
- *
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-*/
-
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/list.h>
-#include <linux/errno.h>
-#include <linux/err.h>
-#include <linux/platform_device.h>
-#include <linux/device.h>
-#include <linux/interrupt.h>
-#include <linux/ioport.h>
-#include <linux/clk.h>
-#include <linux/spinlock.h>
-#include <linux/io.h>
-#if defined(CONFIG_DEBUG_FS)
-#include <linux/debugfs.h>
-#endif
-
-#include <asm/irq.h>
-
-#include <plat/cpu-freq.h>
-
-#include <plat/clock.h>
-#include <plat/cpu.h>
-
-#include <linux/serial_core.h>
-#include <linux/serial_s3c.h> /* for s3c24xx_uart_devs */
-
-/* clock information */
-
-static LIST_HEAD(clocks);
-
-/* We originally used an mutex here, but some contexts (see resume)
- * are calling functions such as clk_set_parent() with IRQs disabled
- * causing an BUG to be triggered.
- */
-DEFINE_SPINLOCK(clocks_lock);
-
-/* Global watchdog clock used by arch_wtd_reset() callback */
-struct clk *s3c2410_wdtclk;
-static int __init s3c_wdt_reset_init(void)
-{
-       s3c2410_wdtclk = clk_get(NULL, "watchdog");
-       if (IS_ERR(s3c2410_wdtclk))
-               printk(KERN_WARNING "%s: warning: cannot get watchdog clock\n", __func__);
-       return 0;
-}
-arch_initcall(s3c_wdt_reset_init);
-
-/* enable and disable calls for use with the clk struct */
-
-static int clk_null_enable(struct clk *clk, int enable)
-{
-       return 0;
-}
-
-int clk_enable(struct clk *clk)
-{
-       unsigned long flags;
-
-       if (IS_ERR(clk) || clk == NULL)
-               return -EINVAL;
-
-       clk_enable(clk->parent);
-
-       spin_lock_irqsave(&clocks_lock, flags);
-
-       if ((clk->usage++) == 0)
-               (clk->enable)(clk, 1);
-
-       spin_unlock_irqrestore(&clocks_lock, flags);
-       return 0;
-}
-
-void clk_disable(struct clk *clk)
-{
-       unsigned long flags;
-
-       if (IS_ERR(clk) || clk == NULL)
-               return;
-
-       spin_lock_irqsave(&clocks_lock, flags);
-
-       if ((--clk->usage) == 0)
-               (clk->enable)(clk, 0);
-
-       spin_unlock_irqrestore(&clocks_lock, flags);
-       clk_disable(clk->parent);
-}
-
-
-unsigned long clk_get_rate(struct clk *clk)
-{
-       if (IS_ERR_OR_NULL(clk))
-               return 0;
-
-       if (clk->rate != 0)
-               return clk->rate;
-
-       if (clk->ops != NULL && clk->ops->get_rate != NULL)
-               return (clk->ops->get_rate)(clk);
-
-       if (clk->parent != NULL)
-               return clk_get_rate(clk->parent);
-
-       return clk->rate;
-}
-
-long clk_round_rate(struct clk *clk, unsigned long rate)
-{
-       if (!IS_ERR_OR_NULL(clk) && clk->ops && clk->ops->round_rate)
-               return (clk->ops->round_rate)(clk, rate);
-
-       return rate;
-}
-
-int clk_set_rate(struct clk *clk, unsigned long rate)
-{
-       unsigned long flags;
-       int ret;
-
-       if (IS_ERR_OR_NULL(clk))
-               return -EINVAL;
-
-       /* We do not default just do a clk->rate = rate as
-        * the clock may have been made this way by choice.
-        */
-
-       WARN_ON(clk->ops == NULL);
-       WARN_ON(clk->ops && clk->ops->set_rate == NULL);
-
-       if (clk->ops == NULL || clk->ops->set_rate == NULL)
-               return -EINVAL;
-
-       spin_lock_irqsave(&clocks_lock, flags);
-       ret = (clk->ops->set_rate)(clk, rate);
-       spin_unlock_irqrestore(&clocks_lock, flags);
-
-       return ret;
-}
-
-struct clk *clk_get_parent(struct clk *clk)
-{
-       return clk->parent;
-}
-
-int clk_set_parent(struct clk *clk, struct clk *parent)
-{
-       unsigned long flags;
-       int ret = 0;
-
-       if (IS_ERR_OR_NULL(clk) || IS_ERR_OR_NULL(parent))
-               return -EINVAL;
-
-       spin_lock_irqsave(&clocks_lock, flags);
-
-       if (clk->ops && clk->ops->set_parent)
-               ret = (clk->ops->set_parent)(clk, parent);
-
-       spin_unlock_irqrestore(&clocks_lock, flags);
-
-       return ret;
-}
-
-EXPORT_SYMBOL(clk_enable);
-EXPORT_SYMBOL(clk_disable);
-EXPORT_SYMBOL(clk_get_rate);
-EXPORT_SYMBOL(clk_round_rate);
-EXPORT_SYMBOL(clk_set_rate);
-EXPORT_SYMBOL(clk_get_parent);
-EXPORT_SYMBOL(clk_set_parent);
-
-/* base clocks */
-
-int clk_default_setrate(struct clk *clk, unsigned long rate)
-{
-       clk->rate = rate;
-       return 0;
-}
-
-struct clk_ops clk_ops_def_setrate = {
-       .set_rate       = clk_default_setrate,
-};
-
-struct clk clk_xtal = {
-       .name           = "xtal",
-       .rate           = 0,
-       .parent         = NULL,
-       .ctrlbit        = 0,
-};
-
-struct clk clk_ext = {
-       .name           = "ext",
-};
-
-struct clk clk_epll = {
-       .name           = "epll",
-};
-
-struct clk clk_mpll = {
-       .name           = "mpll",
-       .ops            = &clk_ops_def_setrate,
-};
-
-struct clk clk_upll = {
-       .name           = "upll",
-       .parent         = NULL,
-       .ctrlbit        = 0,
-};
-
-struct clk clk_f = {
-       .name           = "fclk",
-       .rate           = 0,
-       .parent         = &clk_mpll,
-       .ctrlbit        = 0,
-};
-
-struct clk clk_h = {
-       .name           = "hclk",
-       .rate           = 0,
-       .parent         = NULL,
-       .ctrlbit        = 0,
-       .ops            = &clk_ops_def_setrate,
-};
-
-struct clk clk_p = {
-       .name           = "pclk",
-       .rate           = 0,
-       .parent         = NULL,
-       .ctrlbit        = 0,
-       .ops            = &clk_ops_def_setrate,
-};
-
-struct clk clk_usb_bus = {
-       .name           = "usb-bus",
-       .rate           = 0,
-       .parent         = &clk_upll,
-};
-
-
-struct clk s3c24xx_uclk = {
-       .name           = "uclk",
-};
-
-/* initialise the clock system */
-
-/**
- * s3c24xx_register_clock() - register a clock
- * @clk: The clock to register
- *
- * Add the specified clock to the list of clocks known by the system.
- */
-int s3c24xx_register_clock(struct clk *clk)
-{
-       if (clk->enable == NULL)
-               clk->enable = clk_null_enable;
-
-       /* fill up the clk_lookup structure and register it*/
-       clk->lookup.dev_id = clk->devname;
-       clk->lookup.con_id = clk->name;
-       clk->lookup.clk = clk;
-       clkdev_add(&clk->lookup);
-
-       return 0;
-}
-
-/**
- * s3c24xx_register_clocks() - register an array of clock pointers
- * @clks: Pointer to an array of struct clk pointers
- * @nr_clks: The number of clocks in the @clks array.
- *
- * Call s3c24xx_register_clock() for all the clock pointers contained
- * in the @clks list. Returns the number of failures.
- */
-int s3c24xx_register_clocks(struct clk **clks, int nr_clks)
-{
-       int fails = 0;
-
-       for (; nr_clks > 0; nr_clks--, clks++) {
-               if (s3c24xx_register_clock(*clks) < 0) {
-                       struct clk *clk = *clks;
-                       printk(KERN_ERR "%s: failed to register %p: %s\n",
-                              __func__, clk, clk->name);
-                       fails++;
-               }
-       }
-
-       return fails;
-}
-
-/**
- * s3c_register_clocks() - register an array of clocks
- * @clkp: Pointer to the first clock in the array.
- * @nr_clks: Number of clocks to register.
- *
- * Call s3c24xx_register_clock() on the @clkp array given, printing an
- * error if it fails to register the clock (unlikely).
- */
-void __init s3c_register_clocks(struct clk *clkp, int nr_clks)
-{
-       int ret;
-
-       for (; nr_clks > 0; nr_clks--, clkp++) {
-               ret = s3c24xx_register_clock(clkp);
-
-               if (ret < 0) {
-                       printk(KERN_ERR "Failed to register clock %s (%d)\n",
-                              clkp->name, ret);
-               }
-       }
-}
-
-/**
- * s3c_disable_clocks() - disable an array of clocks
- * @clkp: Pointer to the first clock in the array.
- * @nr_clks: Number of clocks to register.
- *
- * for internal use only at initialisation time. disable the clocks in the
- * @clkp array.
- */
-
-void __init s3c_disable_clocks(struct clk *clkp, int nr_clks)
-{
-       for (; nr_clks > 0; nr_clks--, clkp++)
-               (clkp->enable)(clkp, 0);
-}
-
-/* initialise all the clocks */
-
-int __init s3c24xx_register_baseclocks(unsigned long xtal)
-{
-       printk(KERN_INFO "S3C24XX Clocks, Copyright 2004 Simtec Electronics\n");
-
-       clk_xtal.rate = xtal;
-
-       /* register our clocks */
-
-       if (s3c24xx_register_clock(&clk_xtal) < 0)
-               printk(KERN_ERR "failed to register master xtal\n");
-
-       if (s3c24xx_register_clock(&clk_mpll) < 0)
-               printk(KERN_ERR "failed to register mpll clock\n");
-
-       if (s3c24xx_register_clock(&clk_upll) < 0)
-               printk(KERN_ERR "failed to register upll clock\n");
-
-       if (s3c24xx_register_clock(&clk_f) < 0)
-               printk(KERN_ERR "failed to register cpu fclk\n");
-
-       if (s3c24xx_register_clock(&clk_h) < 0)
-               printk(KERN_ERR "failed to register cpu hclk\n");
-
-       if (s3c24xx_register_clock(&clk_p) < 0)
-               printk(KERN_ERR "failed to register cpu pclk\n");
-
-       return 0;
-}
-
-#if defined(CONFIG_PM_DEBUG) && defined(CONFIG_DEBUG_FS)
-/* debugfs support to trace clock tree hierarchy and attributes */
-
-static struct dentry *clk_debugfs_root;
-
-static void clock_tree_show_one(struct seq_file *s, struct clk *c, int level)
-{
-       struct clk *child;
-       const char *state;
-       char buf[255] = { 0 };
-       int n = 0;
-
-       if (c->name)
-               n = snprintf(buf, sizeof(buf) - 1, "%s", c->name);
-
-       if (c->devname)
-               n += snprintf(buf + n, sizeof(buf) - 1 - n, ":%s", c->devname);
-
-       state = (c->usage > 0) ? "on" : "off";
-
-       seq_printf(s, "%*s%-*s %-6s %-3d %-10lu\n",
-                  level * 3 + 1, "",
-                  50 - level * 3, buf,
-                  state, c->usage, clk_get_rate(c));
-
-       list_for_each_entry(child, &clocks, list) {
-               if (child->parent != c)
-                       continue;
-
-               clock_tree_show_one(s, child, level + 1);
-       }
-}
-
-static int clock_tree_show(struct seq_file *s, void *data)
-{
-       struct clk *c;
-       unsigned long flags;
-
-       seq_printf(s, " clock state ref rate\n");
-       seq_printf(s, "----------------------------------------------------\n");
-
-       spin_lock_irqsave(&clocks_lock, flags);
-
-       list_for_each_entry(c, &clocks, list)
-               if (c->parent == NULL)
-                       clock_tree_show_one(s, c, 0);
-
-       spin_unlock_irqrestore(&clocks_lock, flags);
-       return 0;
-}
-
-static int clock_tree_open(struct inode *inode, struct file *file)
-{
-       return single_open(file, clock_tree_show, inode->i_private);
-}
-
-static const struct file_operations clock_tree_fops = {
-       .open           = clock_tree_open,
-       .read           = seq_read,
-       .llseek         = seq_lseek,
-       .release        = single_release,
-};
-
-static int clock_rate_show(void *data, u64 *val)
-{
-       struct clk *c = data;
-       *val = clk_get_rate(c);
-       return 0;
-}
-DEFINE_SIMPLE_ATTRIBUTE(clock_rate_fops, clock_rate_show, NULL, "%llu\n");
-
-static int clk_debugfs_register_one(struct clk *c)
-{
-       int err;
-       struct dentry *d;
-       struct clk *pa = c->parent;
-       char s[255];
-       char *p = s;
-
-       p += sprintf(p, "%s", c->devname);
-
-       d = debugfs_create_dir(s, pa ? pa->dent : clk_debugfs_root);
-       if (!d)
-               return -ENOMEM;
-
-       c->dent = d;
-
-       d = debugfs_create_u8("usecount", S_IRUGO, c->dent, (u8 *)&c->usage);
-       if (!d) {
-               err = -ENOMEM;
-               goto err_out;
-       }
-
-       d = debugfs_create_file("rate", S_IRUGO, c->dent, c, &clock_rate_fops);
-       if (!d) {
-               err = -ENOMEM;
-               goto err_out;
-       }
-       return 0;
-
-err_out:
-       debugfs_remove_recursive(c->dent);
-       return err;
-}
-
-static int clk_debugfs_register(struct clk *c)
-{
-       int err;
-       struct clk *pa = c->parent;
-
-       if (pa && !pa->dent) {
-               err = clk_debugfs_register(pa);
-               if (err)
-                       return err;
-       }
-
-       if (!c->dent) {
-               err = clk_debugfs_register_one(c);
-               if (err)
-                       return err;
-       }
-       return 0;
-}
-
-static int __init clk_debugfs_init(void)
-{
-       struct clk *c;
-       struct dentry *d;
-       int err = -ENOMEM;
-
-       d = debugfs_create_dir("clock", NULL);
-       if (!d)
-               return -ENOMEM;
-       clk_debugfs_root = d;
-
-       d = debugfs_create_file("clock_tree", S_IRUGO, clk_debugfs_root, NULL,
-                                &clock_tree_fops);
-       if (!d)
-               goto err_out;
-
-       list_for_each_entry(c, &clocks, list) {
-               err = clk_debugfs_register(c);
-               if (err)
-                       goto err_out;
-       }
-       return 0;
-
-err_out:
-       debugfs_remove_recursive(clk_debugfs_root);
-       return err;
-}
-late_initcall(clk_debugfs_init);
-
-#endif /* defined(CONFIG_PM_DEBUG) && defined(CONFIG_DEBUG_FS) */
index 364963a0a34486ec92975888442650da491a7d9b..360618ee39e50df432f85acaeb8091ad6c3f1e0c 100644 (file)
@@ -15,8 +15,7 @@
 #include <linux/init.h>
 #include <linux/io.h>
 
-
-#include <mach/map.h>
+#include <plat/map-base.h>
 #include <plat/cpu.h>
 
 unsigned long samsung_cpu_id;
index ead4f1c94058e1ffff2f5a56a4e650510dc56ec8..83c7d154bde0971a3b9abeadeb6fb8bfaa93143a 100644 (file)
@@ -53,7 +53,6 @@
 #include <linux/platform_data/ata-samsung_cf.h>
 #include <plat/fb.h>
 #include <plat/fb-s3c2410.h>
-#include <plat/hdmi.h>
 #include <linux/platform_data/hwmon-s3c.h>
 #include <linux/platform_data/i2c-s3c2410.h>
 #include <plat/keypad.h>
@@ -145,23 +144,6 @@ struct platform_device s3c_device_camif = {
 };
 #endif /* CONFIG_CPU_S3C2440 */
 
-/* ASOC DMA */
-
-#ifdef CONFIG_PLAT_S5P 
-static struct resource samsung_asoc_idma_resource = DEFINE_RES_IRQ(IRQ_I2S0);
-
-struct platform_device samsung_asoc_idma = {
-       .name           = "samsung-idma",
-       .id             = -1,
-       .num_resources  = 1,
-       .resource       = &samsung_asoc_idma_resource,
-       .dev            = {
-               .dma_mask               = &samsung_device_dma_mask,
-               .coherent_dma_mask      = DMA_BIT_MASK(32),
-       }
-};
-#endif
-
 /* FB */
 
 #ifdef CONFIG_S3C_DEV_FB
@@ -190,151 +172,6 @@ void __init s3c_fb_set_platdata(struct s3c_fb_platdata *pd)
 }
 #endif /* CONFIG_S3C_DEV_FB */
 
-/* FIMC */
-
-#ifdef CONFIG_S5P_DEV_FIMC0
-static struct resource s5p_fimc0_resource[] = {
-       [0] = DEFINE_RES_MEM(S5P_PA_FIMC0, SZ_4K),
-       [1] = DEFINE_RES_IRQ(IRQ_FIMC0),
-};
-
-struct platform_device s5p_device_fimc0 = {
-       .name           = "s5p-fimc",
-       .id             = 0,
-       .num_resources  = ARRAY_SIZE(s5p_fimc0_resource),
-       .resource       = s5p_fimc0_resource,
-       .dev            = {
-               .dma_mask               = &samsung_device_dma_mask,
-               .coherent_dma_mask      = DMA_BIT_MASK(32),
-       },
-};
-
-struct platform_device s5p_device_fimc_md = {
-       .name   = "s5p-fimc-md",
-       .id     = -1,
-};
-#endif /* CONFIG_S5P_DEV_FIMC0 */
-
-#ifdef CONFIG_S5P_DEV_FIMC1
-static struct resource s5p_fimc1_resource[] = {
-       [0] = DEFINE_RES_MEM(S5P_PA_FIMC1, SZ_4K),
-       [1] = DEFINE_RES_IRQ(IRQ_FIMC1),
-};
-
-struct platform_device s5p_device_fimc1 = {
-       .name           = "s5p-fimc",
-       .id             = 1,
-       .num_resources  = ARRAY_SIZE(s5p_fimc1_resource),
-       .resource       = s5p_fimc1_resource,
-       .dev            = {
-               .dma_mask               = &samsung_device_dma_mask,
-               .coherent_dma_mask      = DMA_BIT_MASK(32),
-       },
-};
-#endif /* CONFIG_S5P_DEV_FIMC1 */
-
-#ifdef CONFIG_S5P_DEV_FIMC2
-static struct resource s5p_fimc2_resource[] = {
-       [0] = DEFINE_RES_MEM(S5P_PA_FIMC2, SZ_4K),
-       [1] = DEFINE_RES_IRQ(IRQ_FIMC2),
-};
-
-struct platform_device s5p_device_fimc2 = {
-       .name           = "s5p-fimc",
-       .id             = 2,
-       .num_resources  = ARRAY_SIZE(s5p_fimc2_resource),
-       .resource       = s5p_fimc2_resource,
-       .dev            = {
-               .dma_mask               = &samsung_device_dma_mask,
-               .coherent_dma_mask      = DMA_BIT_MASK(32),
-       },
-};
-#endif /* CONFIG_S5P_DEV_FIMC2 */
-
-#ifdef CONFIG_S5P_DEV_FIMC3
-static struct resource s5p_fimc3_resource[] = {
-       [0] = DEFINE_RES_MEM(S5P_PA_FIMC3, SZ_4K),
-       [1] = DEFINE_RES_IRQ(IRQ_FIMC3),
-};
-
-struct platform_device s5p_device_fimc3 = {
-       .name           = "s5p-fimc",
-       .id             = 3,
-       .num_resources  = ARRAY_SIZE(s5p_fimc3_resource),
-       .resource       = s5p_fimc3_resource,
-       .dev            = {
-               .dma_mask               = &samsung_device_dma_mask,
-               .coherent_dma_mask      = DMA_BIT_MASK(32),
-       },
-};
-#endif /* CONFIG_S5P_DEV_FIMC3 */
-
-/* G2D */
-
-#ifdef CONFIG_S5P_DEV_G2D
-static struct resource s5p_g2d_resource[] = {
-       [0] = DEFINE_RES_MEM(S5P_PA_G2D, SZ_4K),
-       [1] = DEFINE_RES_IRQ(IRQ_2D),
-};
-
-struct platform_device s5p_device_g2d = {
-       .name           = "s5p-g2d",
-       .id             = 0,
-       .num_resources  = ARRAY_SIZE(s5p_g2d_resource),
-       .resource       = s5p_g2d_resource,
-       .dev            = {
-               .dma_mask               = &samsung_device_dma_mask,
-               .coherent_dma_mask      = DMA_BIT_MASK(32),
-       },
-};
-#endif /* CONFIG_S5P_DEV_G2D */
-
-#ifdef CONFIG_S5P_DEV_JPEG
-static struct resource s5p_jpeg_resource[] = {
-       [0] = DEFINE_RES_MEM(S5P_PA_JPEG, SZ_4K),
-       [1] = DEFINE_RES_IRQ(IRQ_JPEG),
-};
-
-struct platform_device s5p_device_jpeg = {
-       .name           = "s5p-jpeg",
-       .id             = 0,
-       .num_resources  = ARRAY_SIZE(s5p_jpeg_resource),
-       .resource       = s5p_jpeg_resource,
-       .dev            = {
-               .dma_mask               = &samsung_device_dma_mask,
-               .coherent_dma_mask      = DMA_BIT_MASK(32),
-       },
-};
-#endif /*  CONFIG_S5P_DEV_JPEG */
-
-/* FIMD0 */
-
-#ifdef CONFIG_S5P_DEV_FIMD0
-static struct resource s5p_fimd0_resource[] = {
-       [0] = DEFINE_RES_MEM(S5P_PA_FIMD0, SZ_32K),
-       [1] = DEFINE_RES_IRQ_NAMED(IRQ_FIMD0_VSYNC, "vsync"),
-       [2] = DEFINE_RES_IRQ_NAMED(IRQ_FIMD0_FIFO, "fifo"),
-       [3] = DEFINE_RES_IRQ_NAMED(IRQ_FIMD0_SYSTEM, "lcd_sys"),
-};
-
-struct platform_device s5p_device_fimd0 = {
-       .name           = "s5p-fb",
-       .id             = 0,
-       .num_resources  = ARRAY_SIZE(s5p_fimd0_resource),
-       .resource       = s5p_fimd0_resource,
-       .dev            = {
-               .dma_mask               = &samsung_device_dma_mask,
-               .coherent_dma_mask      = DMA_BIT_MASK(32),
-       },
-};
-
-void __init s5p_fimd0_set_platdata(struct s3c_fb_platdata *pd)
-{
-       s3c_set_platdata(pd, sizeof(struct s3c_fb_platdata),
-                        &s5p_device_fimd0);
-}
-#endif /* CONFIG_S5P_DEV_FIMD0 */
-
 /* HWMON */
 
 #ifdef CONFIG_S3C_DEV_HWMON
@@ -722,60 +559,6 @@ void __init s3c_i2c7_set_platdata(struct s3c2410_platform_i2c *pd)
 }
 #endif /* CONFIG_S3C_DEV_I2C7 */
 
-/* I2C HDMIPHY */
-
-#ifdef CONFIG_S5P_DEV_I2C_HDMIPHY
-static struct resource s5p_i2c_resource[] = {
-       [0] = DEFINE_RES_MEM(S5P_PA_IIC_HDMIPHY, SZ_4K),
-       [1] = DEFINE_RES_IRQ(IRQ_IIC_HDMIPHY),
-};
-
-struct platform_device s5p_device_i2c_hdmiphy = {
-       .name           = "s3c2440-hdmiphy-i2c",
-       .id             = -1,
-       .num_resources  = ARRAY_SIZE(s5p_i2c_resource),
-       .resource       = s5p_i2c_resource,
-};
-
-void __init s5p_i2c_hdmiphy_set_platdata(struct s3c2410_platform_i2c *pd)
-{
-       struct s3c2410_platform_i2c *npd;
-
-       if (!pd) {
-               pd = &default_i2c_data;
-
-               if (soc_is_s5pv210())
-                       pd->bus_num = 3;
-               else
-                       pd->bus_num = 0;
-       }
-
-       npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
-                              &s5p_device_i2c_hdmiphy);
-}
-
-static struct s5p_hdmi_platform_data s5p_hdmi_def_platdata;
-
-void __init s5p_hdmi_set_platdata(struct i2c_board_info *hdmiphy_info,
-                                 struct i2c_board_info *mhl_info, int mhl_bus)
-{
-       struct s5p_hdmi_platform_data *pd = &s5p_hdmi_def_platdata;
-
-       if (soc_is_s5pv210())
-               pd->hdmiphy_bus = 3;
-       else
-               pd->hdmiphy_bus = 0;
-
-       pd->hdmiphy_info = hdmiphy_info;
-       pd->mhl_info = mhl_info;
-       pd->mhl_bus = mhl_bus;
-
-       s3c_set_platdata(pd, sizeof(struct s5p_hdmi_platform_data),
-                        &s5p_device_hdmi);
-}
-
-#endif /* CONFIG_S5P_DEV_I2C_HDMIPHY */
-
 /* I2S */
 
 #ifdef CONFIG_PLAT_S3C24XX
@@ -879,36 +662,6 @@ void __init s3c24xx_fb_set_platdata(struct s3c2410fb_mach_info *pd)
 }
 #endif /* CONFIG_PLAT_S3C24XX */
 
-/* MIPI CSIS */
-
-#ifdef CONFIG_S5P_DEV_CSIS0
-static struct resource s5p_mipi_csis0_resource[] = {
-       [0] = DEFINE_RES_MEM(S5P_PA_MIPI_CSIS0, SZ_16K),
-       [1] = DEFINE_RES_IRQ(IRQ_MIPI_CSIS0),
-};
-
-struct platform_device s5p_device_mipi_csis0 = {
-       .name           = "s5p-mipi-csis",
-       .id             = 0,
-       .num_resources  = ARRAY_SIZE(s5p_mipi_csis0_resource),
-       .resource       = s5p_mipi_csis0_resource,
-};
-#endif /* CONFIG_S5P_DEV_CSIS0 */
-
-#ifdef CONFIG_S5P_DEV_CSIS1
-static struct resource s5p_mipi_csis1_resource[] = {
-       [0] = DEFINE_RES_MEM(S5P_PA_MIPI_CSIS1, SZ_16K),
-       [1] = DEFINE_RES_IRQ(IRQ_MIPI_CSIS1),
-};
-
-struct platform_device s5p_device_mipi_csis1 = {
-       .name           = "s5p-mipi-csis",
-       .id             = 1,
-       .num_resources  = ARRAY_SIZE(s5p_mipi_csis1_resource),
-       .resource       = s5p_mipi_csis1_resource,
-};
-#endif
-
 /* NAND */
 
 #ifdef CONFIG_S3C_DEV_NAND
@@ -1052,43 +805,6 @@ void __init s3c64xx_onenand1_set_platdata(struct onenand_platform_data *pdata)
 }
 #endif /* CONFIG_S3C64XX_DEV_ONENAND1 */
 
-#ifdef CONFIG_S5P_DEV_ONENAND
-static struct resource s5p_onenand_resources[] = {
-       [0] = DEFINE_RES_MEM(S5P_PA_ONENAND, SZ_128K),
-       [1] = DEFINE_RES_MEM(S5P_PA_ONENAND_DMA, SZ_8K),
-       [2] = DEFINE_RES_IRQ(IRQ_ONENAND_AUDI),
-};
-
-struct platform_device s5p_device_onenand = {
-       .name           = "s5pc110-onenand",
-       .id             = -1,
-       .num_resources  = ARRAY_SIZE(s5p_onenand_resources),
-       .resource       = s5p_onenand_resources,
-};
-#endif /* CONFIG_S5P_DEV_ONENAND */
-
-/* PMU */
-
-#if defined(CONFIG_PLAT_S5P) && !defined(CONFIG_ARCH_EXYNOS)
-static struct resource s5p_pmu_resource[] = {
-       DEFINE_RES_IRQ(IRQ_PMU)
-};
-
-static struct platform_device s5p_device_pmu = {
-       .name           = "arm-pmu",
-       .id             = -1,
-       .num_resources  = ARRAY_SIZE(s5p_pmu_resource),
-       .resource       = s5p_pmu_resource,
-};
-
-static int __init s5p_pmu_init(void)
-{
-       platform_device_register(&s5p_device_pmu);
-       return 0;
-}
-arch_initcall(s5p_pmu_init);
-#endif /* CONFIG_PLAT_S5P */
-
 /* PWM Timer */
 
 #ifdef CONFIG_SAMSUNG_DEV_PWM
@@ -1251,52 +967,6 @@ void __init s3c24xx_ts_set_platdata(struct s3c2410_ts_mach_info *pd)
 }
 #endif /* CONFIG_SAMSUNG_DEV_TS */
 
-/* TV */
-
-#ifdef CONFIG_S5P_DEV_TV
-
-static struct resource s5p_hdmi_resources[] = {
-       [0] = DEFINE_RES_MEM(S5P_PA_HDMI, SZ_1M),
-       [1] = DEFINE_RES_IRQ(IRQ_HDMI),
-};
-
-struct platform_device s5p_device_hdmi = {
-       .name           = "s5p-hdmi",
-       .id             = -1,
-       .num_resources  = ARRAY_SIZE(s5p_hdmi_resources),
-       .resource       = s5p_hdmi_resources,
-};
-
-static struct resource s5p_sdo_resources[] = {
-       [0] = DEFINE_RES_MEM(S5P_PA_SDO, SZ_64K),
-       [1] = DEFINE_RES_IRQ(IRQ_SDO),
-};
-
-struct platform_device s5p_device_sdo = {
-       .name           = "s5p-sdo",
-       .id             = -1,
-       .num_resources  = ARRAY_SIZE(s5p_sdo_resources),
-       .resource       = s5p_sdo_resources,
-};
-
-static struct resource s5p_mixer_resources[] = {
-       [0] = DEFINE_RES_MEM_NAMED(S5P_PA_MIXER, SZ_64K, "mxr"),
-       [1] = DEFINE_RES_MEM_NAMED(S5P_PA_VP, SZ_64K, "vp"),
-       [2] = DEFINE_RES_IRQ_NAMED(IRQ_MIXER, "irq"),
-};
-
-struct platform_device s5p_device_mixer = {
-       .name           = "s5p-mixer",
-       .id             = -1,
-       .num_resources  = ARRAY_SIZE(s5p_mixer_resources),
-       .resource       = s5p_mixer_resources,
-       .dev            = {
-               .dma_mask               = &samsung_device_dma_mask,
-               .coherent_dma_mask      = DMA_BIT_MASK(32),
-       }
-};
-#endif /* CONFIG_S5P_DEV_TV */
-
 /* USB */
 
 #ifdef CONFIG_S3C_DEV_USB_HOST
diff --git a/arch/arm/plat-samsung/include/plat/camport.h b/arch/arm/plat-samsung/include/plat/camport.h
deleted file mode 100644 (file)
index a5708bf..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2011 Samsung Electronics Co., Ltd.
- *
- * S5P series camera interface helper functions
- *
- * 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_CAMPORT_H_
-#define __PLAT_SAMSUNG_CAMPORT_H_ __FILE__
-
-enum s5p_camport_id {
-       S5P_CAMPORT_A,
-       S5P_CAMPORT_B,
-};
-
-/*
- * The helper functions to configure GPIO for the camera parallel bus.
- * The camera port can be multiplexed with any FIMC entity, even multiple
- * FIMC entities are allowed to be attached to a single port simultaneously.
- * These functions are to be used in the board setup code.
- */
-int s5pv210_fimc_setup_gpio(enum s5p_camport_id id);
-int exynos4_fimc_setup_gpio(enum s5p_camport_id id);
-
-#endif /* __PLAT_SAMSUNG_CAMPORT_H */
diff --git a/arch/arm/plat-samsung/include/plat/clock-clksrc.h b/arch/arm/plat-samsung/include/plat/clock-clksrc.h
deleted file mode 100644 (file)
index 50a8ca7..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-/* linux/arch/arm/plat-samsung/include/plat/clock-clksrc.h
- *
- * Parts taken from arch/arm/plat-s3c64xx/clock.c
- *     Copyright 2008 Openmoko, Inc.
- *     Copyright 2008 Simtec Electronics
- *             Ben Dooks <ben@simtec.co.uk>
- *             http://armlinux.simtec.co.uk/
- *
- * Copyright 2009 Ben Dooks <ben-linux@fluff.org>
- * Copyright 2009 Harald Welte
- *
- * 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.
-*/
-
-/**
- * struct clksrc_sources - list of sources for a given clock
- * @sources: array of pointers to clocks
- * @nr_sources: The size of @sources
- */
-struct clksrc_sources {
-       unsigned int    nr_sources;
-       struct clk      **sources;
-};
-
-/**
- * struct clksrc_reg - register definition for clock control bits
- * @reg: pointer to the register in virtual memory.
- * @shift: the shift in bits to where the bitfield is.
- * @size: the size in bits of the bitfield.
- *
- * This specifies the size and position of the bits we are interested
- * in within the register specified by @reg.
- */
-struct clksrc_reg {
-       void __iomem            *reg;
-       unsigned short          shift;
-       unsigned short          size;
-};
-
-/**
- * struct clksrc_clk - class of clock for newer style samsung devices.
- * @clk: the standard clock representation
- * @sources: the sources for this clock
- * @reg_src: the register definition for selecting the clock's source
- * @reg_div: the register definition for the clock's output divisor
- *
- * This clock implements the features required by the newer SoCs where
- * the standard clock block provides an input mux and a post-mux divisor
- * to provide the periperhal's clock.
- *
- * The array of @sources provides the mapping of mux position to the
- * clock, and @reg_src shows the code where to modify to change the mux
- * position. The @reg_div defines how to change the divider settings on
- * the output.
- */
-struct clksrc_clk {
-       struct clk              clk;
-       struct clksrc_sources   *sources;
-
-       struct clksrc_reg       reg_src;
-       struct clksrc_reg       reg_div;
-};
-
-/**
- * s3c_set_clksrc() - setup the clock from the register settings
- * @clk: The clock to setup.
- * @announce: true to announce the setting to printk().
- *
- * Setup the clock from the current register settings, for when the
- * kernel boots or if it is resuming from a possibly unknown state.
- */
-extern void s3c_set_clksrc(struct clksrc_clk *clk, bool announce);
-
-/**
- * s3c_register_clksrc() register clocks from an array of clksrc clocks
- * @srcs: The array of clocks to register
- * @size: The size of the @srcs array.
- *
- * Initialise and register the array of clocks described by @srcs.
- */
-extern void s3c_register_clksrc(struct clksrc_clk *srcs, int size);
diff --git a/arch/arm/plat-samsung/include/plat/clock.h b/arch/arm/plat-samsung/include/plat/clock.h
deleted file mode 100644 (file)
index 63239f4..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-/* linux/arch/arm/plat-s3c/include/plat/clock.h
- *
- * Copyright (c) 2004-2005 Simtec Electronics
- *     http://www.simtec.co.uk/products/SWLINUX/
- *     Written by Ben Dooks, <ben@simtec.co.uk>
- *
- * 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 __ASM_PLAT_CLOCK_H
-#define __ASM_PLAT_CLOCK_H __FILE__
-
-#include <linux/spinlock.h>
-#include <linux/clkdev.h>
-
-struct clk;
-
-/**
- * struct clk_ops - standard clock operations
- * @set_rate: set the clock rate, see clk_set_rate().
- * @get_rate: get the clock rate, see clk_get_rate().
- * @round_rate: round a given clock rate, see clk_round_rate().
- * @set_parent: set the clock's parent, see clk_set_parent().
- *
- * Group the common clock implementations together so that we
- * don't have to keep setting the same fields again. We leave
- * enable in struct clk.
- *
- * Adding an extra layer of indirection into the process should
- * not be a problem as it is unlikely these operations are going
- * to need to be called quickly.
- */
-struct clk_ops {
-       int                 (*set_rate)(struct clk *c, unsigned long rate);
-       unsigned long       (*get_rate)(struct clk *c);
-       unsigned long       (*round_rate)(struct clk *c, unsigned long rate);
-       int                 (*set_parent)(struct clk *c, struct clk *parent);
-};
-
-struct clk {
-       struct list_head      list;
-       struct module        *owner;
-       struct clk           *parent;
-       const char           *name;
-       const char              *devname;
-       int                   id;
-       int                   usage;
-       unsigned long         rate;
-       unsigned long         ctrlbit;
-
-       struct clk_ops          *ops;
-       int                 (*enable)(struct clk *, int enable);
-       struct clk_lookup       lookup;
-#if defined(CONFIG_PM_DEBUG) && defined(CONFIG_DEBUG_FS)
-       struct dentry           *dent;  /* For visible tree hierarchy */
-#endif
-};
-
-/* other clocks which may be registered by board support */
-
-extern struct clk s3c24xx_dclk0;
-extern struct clk s3c24xx_dclk1;
-extern struct clk s3c24xx_clkout0;
-extern struct clk s3c24xx_clkout1;
-extern struct clk s3c24xx_uclk;
-
-extern struct clk clk_usb_bus;
-
-/* core clock support */
-
-extern struct clk clk_f;
-extern struct clk clk_h;
-extern struct clk clk_p;
-extern struct clk clk_mpll;
-extern struct clk clk_upll;
-extern struct clk clk_epll;
-extern struct clk clk_xtal;
-extern struct clk clk_ext;
-
-/* S3C2443/S3C2416 specific clocks */
-extern struct clksrc_clk clk_epllref;
-extern struct clksrc_clk clk_esysclk;
-
-/* S3C24XX UART clocks */
-extern struct clk s3c24xx_clk_uart0;
-extern struct clk s3c24xx_clk_uart1;
-extern struct clk s3c24xx_clk_uart2;
-
-/* S3C64XX specific clocks */
-extern struct clk clk_h2;
-extern struct clk clk_27m;
-extern struct clk clk_48m;
-extern struct clk clk_xusbxti;
-
-extern int clk_default_setrate(struct clk *clk, unsigned long rate);
-extern struct clk_ops clk_ops_def_setrate;
-
-/* exports for arch/arm/mach-s3c2410
- *
- * Please DO NOT use these outside of arch/arm/mach-s3c2410
-*/
-
-extern spinlock_t clocks_lock;
-
-extern int s3c2410_clkcon_enable(struct clk *clk, int enable);
-
-extern int s3c24xx_register_clock(struct clk *clk);
-extern int s3c24xx_register_clocks(struct clk **clk, int nr_clks);
-
-extern void s3c_register_clocks(struct clk *clk, int nr_clks);
-extern void s3c_disable_clocks(struct clk *clkp, int nr_clks);
-
-extern int s3c24xx_register_baseclocks(unsigned long xtal);
-
-extern void s5p_register_clocks(unsigned long xtal_freq);
-
-extern void s3c24xx_setup_clocks(unsigned long fclk,
-                                unsigned long hclk,
-                                unsigned long pclk);
-
-extern void s3c2410_setup_clocks(void);
-extern void s3c2412_setup_clocks(void);
-extern void s3c244x_setup_clocks(void);
-
-/* S3C2410 specific clock functions */
-
-extern int s3c2410_baseclk_add(void);
-
-/* S3C2443/S3C2416 specific clock functions */
-
-typedef unsigned int (*pll_fn)(unsigned int reg, unsigned int base);
-
-extern void s3c2443_common_setup_clocks(pll_fn get_mpll);
-extern void s3c2443_common_init_clocks(int xtal, pll_fn get_mpll,
-                                      unsigned int *divs, int nr_divs,
-                                      int divmask);
-
-extern int s3c2443_clkcon_enable_h(struct clk *clk, int enable);
-extern int s3c2443_clkcon_enable_p(struct clk *clk, int enable);
-extern int s3c2443_clkcon_enable_s(struct clk *clk, int enable);
-
-/* S3C64XX specific functions and clocks */
-
-extern int s3c64xx_sclk_ctrl(struct clk *clk, int enable);
-
-/* Global watchdog clock used by arch_wtd_reset() callback */
-
-extern struct clk *s3c2410_wdtclk;
-
-#endif /* __ASM_PLAT_CLOCK_H */
index 72d4178ad23b1d29b4dc0667aa367598f4536b33..317c523032888690bb4fb9832c13908edd47204a 100644 (file)
@@ -140,7 +140,6 @@ struct s3c_cpufreq_config {
  *     any frequency changes. This is really only need by devices like the
  *     S3C2410 where there is no or limited divider between the PLL and the
  *     ARMCLK.
- * @resume_clocks: Update the clocks on resume.
  * @get_iotiming: Get the current IO timing data, mainly for use at start.
  * @set_iotiming: Update the IO timings from the cached copies calculated
  *     from the @calc_iotiming entry when changing the frequency.
@@ -169,8 +168,6 @@ struct s3c_cpufreq_info {
 
        /* driver routines */
 
-       void            (*resume_clocks)(void);
-
        int             (*get_iotiming)(struct s3c_cpufreq_config *cfg,
                                        struct s3c_iotimings *timings);
 
index d1d4659025bbebf8da3141e12fb66e753d7bdedc..61d14f3a0426f3c16f6de24c5641b781a75161a3 100644 (file)
@@ -47,7 +47,6 @@ IS_SAMSUNG_CPU(s3c24xx, S3C24XX_CPU_ID, S3C24XX_CPU_MASK)
 IS_SAMSUNG_CPU(s3c2412, S3C2412_CPU_ID, S3C2412_CPU_MASK)
 IS_SAMSUNG_CPU(s3c6400, S3C6400_CPU_ID, S3C64XX_CPU_MASK)
 IS_SAMSUNG_CPU(s3c6410, S3C6410_CPU_ID, S3C64XX_CPU_MASK)
-IS_SAMSUNG_CPU(s5pv210, S5PV210_CPU_ID, S5PV210_CPU_MASK)
 
 #if defined(CONFIG_CPU_S3C2410) || defined(CONFIG_CPU_S3C2412) || \
     defined(CONFIG_CPU_S3C2416) || defined(CONFIG_CPU_S3C2440) || \
@@ -76,12 +75,6 @@ IS_SAMSUNG_CPU(s5pv210, S5PV210_CPU_ID, S5PV210_CPU_MASK)
 # define soc_is_s3c64xx()      0
 #endif
 
-#if defined(CONFIG_CPU_S5PV210)
-# define soc_is_s5pv210()      is_samsung_s5pv210()
-#else
-# define soc_is_s5pv210()      0
-#endif
-
 #define IODESC_ENT(x) { (unsigned long)S3C24XX_VA_##x, __phys_to_pfn(S3C24XX_PA_##x), S3C24XX_SZ_##x, MT_DEVICE }
 
 #ifndef KHZ
@@ -117,12 +110,9 @@ extern void s3c_init_cpu(unsigned long idcode,
 
 /* core initialisation functions */
 
-extern void s5p_init_irq(u32 *vic, u32 num_vic);
-
 extern void s3c24xx_init_io(struct map_desc *mach_desc, int size);
 
 extern void s3c64xx_init_cpu(void);
-extern void s5p_init_cpu(void __iomem *cpuid_addr);
 
 extern unsigned int samsung_rev(void);
 
@@ -149,8 +139,5 @@ extern struct bus_type s3c2440_subsys;
 extern struct bus_type s3c2442_subsys;
 extern struct bus_type s3c2443_subsys;
 extern struct bus_type s3c6410_subsys;
-extern struct bus_type s5pv210_subsys;
-
-extern void (*s5pc1xx_idle)(void);
 
 #endif
index 5f5a28d08c2e76d3bb7113e6e3481175655f7e5b..e23fed311e5f95246f2d0a04c91a8af32ab039e4 100644 (file)
@@ -25,9 +25,6 @@ struct s3c24xx_uart_resources {
 
 extern struct s3c24xx_uart_resources s3c2410_uart_resources[];
 extern struct s3c24xx_uart_resources s3c64xx_uart_resources[];
-extern struct s3c24xx_uart_resources s5p_uart_resources[];
-extern struct s3c24xx_uart_resources exynos4_uart_resources[];
-extern struct s3c24xx_uart_resources exynos5_uart_resources[];
 
 extern struct platform_device *s3c24xx_uart_devs[];
 extern struct platform_device *s3c24xx_uart_src[];
@@ -75,45 +72,6 @@ extern struct platform_device s3c_device_usb_hsotg;
 extern struct platform_device s3c_device_usb_hsudc;
 extern struct platform_device s3c_device_wdt;
 
-extern struct platform_device s5p_device_fimc0;
-extern struct platform_device s5p_device_fimc1;
-extern struct platform_device s5p_device_fimc2;
-extern struct platform_device s5p_device_fimc3;
-extern struct platform_device s5p_device_fimc_md;
-extern struct platform_device s5p_device_jpeg;
-extern struct platform_device s5p_device_g2d;
-extern struct platform_device s5p_device_fimd0;
-extern struct platform_device s5p_device_hdmi;
-extern struct platform_device s5p_device_i2c_hdmiphy;
-extern struct platform_device s5p_device_mfc;
-extern struct platform_device s5p_device_mfc_l;
-extern struct platform_device s5p_device_mfc_r;
-extern struct platform_device s5p_device_mipi_csis0;
-extern struct platform_device s5p_device_mipi_csis1;
-extern struct platform_device s5p_device_mixer;
-extern struct platform_device s5p_device_onenand;
-extern struct platform_device s5p_device_sdo;
-
-extern struct platform_device s5pv210_device_ac97;
-extern struct platform_device s5pv210_device_iis0;
-extern struct platform_device s5pv210_device_iis1;
-extern struct platform_device s5pv210_device_iis2;
-extern struct platform_device s5pv210_device_pcm0;
-extern struct platform_device s5pv210_device_pcm1;
-extern struct platform_device s5pv210_device_pcm2;
-extern struct platform_device s5pv210_device_spdif;
-
-extern struct platform_device exynos4_device_ac97;
-extern struct platform_device exynos4_device_ahci;
-extern struct platform_device exynos4_device_i2s0;
-extern struct platform_device exynos4_device_i2s1;
-extern struct platform_device exynos4_device_i2s2;
-extern struct platform_device exynos4_device_ohci;
-extern struct platform_device exynos4_device_pcm0;
-extern struct platform_device exynos4_device_pcm1;
-extern struct platform_device exynos4_device_pcm2;
-extern struct platform_device exynos4_device_spdif;
-
 extern struct platform_device samsung_asoc_idma;
 extern struct platform_device samsung_device_keypad;
 extern struct platform_device samsung_device_pwm;
index 6abcbf139ceedf5976cf657d1da73e93b4d8d8c2..bca383efcf6deb03fbd8786e2d6851796be38c0a 100644 (file)
@@ -26,19 +26,4 @@ static inline void s3c_fb_setname(char *name)
 #endif
 }
 
-/* Re-define device name depending on support. */
-static inline void s5p_fb_setname(int id, char *name)
-{
-       switch (id) {
-#ifdef CONFIG_S5P_DEV_FIMD0
-       case 0:
-               s5p_device_fimd0.name = name;
-       break;
-#endif
-       default:
-               printk(KERN_ERR "%s: invalid device id(%d)\n", __func__, id);
-       break;
-       }
-}
-
 #endif /* __ASM_PLAT_FB_CORE_H */
index 5a0e26afb961de6a1bf9c9e7002bb77bc26b9dcd..b89f8f2085157d3fb55dc23874b43c4ee74c4c64 100644 (file)
  */
 extern void s3c_fb_set_platdata(struct s3c_fb_platdata *pd);
 
-/**
- * s5p_fimd0_set_platdata() - Setup the FB device with platform data.
- * @pd: The platform data to set. The data is copied from the passed structure
- *      so the machine data can mark the data __initdata so that any unused
- *      machines will end up dumping their data at runtime.
- */
-extern void s5p_fimd0_set_platdata(struct s3c_fb_platdata *pd);
-
 /**
  * s3c64xx_fb_gpio_setup_24bpp() - S3C64XX setup function for 24bpp LCD
  *
@@ -40,18 +32,4 @@ extern void s5p_fimd0_set_platdata(struct s3c_fb_platdata *pd);
  */
 extern void s3c64xx_fb_gpio_setup_24bpp(void);
 
-/**
- * s5pv210_fb_gpio_setup_24bpp() - S5PV210/S5PC110 setup function for 24bpp LCD
- *
- * Initialise the GPIO for an 24bpp LCD display on the RGB interface.
- */
-extern void s5pv210_fb_gpio_setup_24bpp(void);
-
-/**
- * exynos4_fimd0_gpio_setup_24bpp() - Exynos4 setup function for 24bpp LCD0
- *
- * Initialise the GPIO for an 24bpp LCD display on the RGB interface 0.
- */
-extern void exynos4_fimd0_gpio_setup_24bpp(void);
-
 #endif /* __PLAT_S3C_FB_H */
diff --git a/arch/arm/plat-samsung/include/plat/fimc-core.h b/arch/arm/plat-samsung/include/plat/fimc-core.h
deleted file mode 100644 (file)
index 1d6cb2b..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * arch/arm/plat-samsung/include/plat/fimc-core.h
- *
- * Copyright 2010 Samsung Electronics Co., Ltd.
- *     Sylwester Nawrocki <s.nawrocki@samsung.com>
- *
- * Samsung camera interface driver core functions
- *
- * 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 __ASM_PLAT_FIMC_CORE_H
-#define __ASM_PLAT_FIMC_CORE_H __FILE__
-
-/*
- * These functions are only for use with the core support code, such as
- * the CPU-specific initialization code.
- */
-
-/* Re-define device name to differentiate the subsystem in various SoCs. */
-static inline void s3c_fimc_setname(int id, char *name)
-{
-       switch (id) {
-#ifdef CONFIG_S5P_DEV_FIMC0
-       case 0:
-               s5p_device_fimc0.name = name;
-               break;
-#endif
-#ifdef CONFIG_S5P_DEV_FIMC1
-       case 1:
-               s5p_device_fimc1.name = name;
-               break;
-#endif
-#ifdef CONFIG_S5P_DEV_FIMC2
-       case 2:
-               s5p_device_fimc2.name = name;
-               break;
-#endif
-#ifdef CONFIG_S5P_DEV_FIMC3
-       case 3:
-               s5p_device_fimc3.name = name;
-               break;
-#endif
-       default:
-               break;
-       }
-}
-
-#endif /* __ASM_PLAT_FIMC_CORE_H */
index 08740eed050c46907c21314df3b830408e7f6b6f..b5294eff18b5c7f7decd9cb842a7cf4adaa208f3 100644 (file)
@@ -27,7 +27,6 @@
 #include <linux/types.h>
 
 typedef unsigned int __bitwise__ samsung_gpio_pull_t;
-typedef unsigned int __bitwise__ s5p_gpio_drvstr_t;
 
 /* forward declaration if gpio-core.h hasn't been included */
 struct samsung_gpio_chip;
@@ -180,67 +179,4 @@ static inline int s3c_gpio_cfgrange_nopull(unsigned int pin, unsigned int size,
        return s3c_gpio_cfgall_range(pin, size, cfg, S3C_GPIO_PULL_NONE);
 }
 
-/* Define values for the drvstr available for each gpio pin.
- *
- * These values control the value of the output signal driver strength,
- * configurable on most pins on the S5P series.
- */
-#define S5P_GPIO_DRVSTR_LV1    ((__force s5p_gpio_drvstr_t)0x0)
-#define S5P_GPIO_DRVSTR_LV2    ((__force s5p_gpio_drvstr_t)0x2)
-#define S5P_GPIO_DRVSTR_LV3    ((__force s5p_gpio_drvstr_t)0x1)
-#define S5P_GPIO_DRVSTR_LV4    ((__force s5p_gpio_drvstr_t)0x3)
-
-/**
- * s5c_gpio_get_drvstr() - get the driver streght value of a gpio pin
- * @pin: The pin number to get the settings for
- *
- * Read the driver streght value for the specified pin.
-*/
-extern s5p_gpio_drvstr_t s5p_gpio_get_drvstr(unsigned int pin);
-
-/**
- * s3c_gpio_set_drvstr() - set the driver streght value of a gpio pin
- * @pin: The pin number to configure the driver streght value
- * @drvstr: The new value of the driver strength
- *
- * This function sets the driver strength value for the specified pin.
- * It will return 0 if successful, or a negative error code if the pin
- * cannot support the requested setting.
-*/
-extern int s5p_gpio_set_drvstr(unsigned int pin, s5p_gpio_drvstr_t drvstr);
-
-/**
- * s5p_register_gpio_interrupt() - register interrupt support for a gpio group
- * @pin: The pin number from the group to be registered
- *
- * This function registers gpio interrupt support for the group that the
- * specified pin belongs to.
- *
- * The total number of gpio pins is quite large ob s5p series. Registering
- * irq support for all of them would be a resource waste. Because of that the
- * interrupt support for standard gpio pins is registered dynamically.
- *
- * It will return the irq number of the interrupt that has been registered
- * or -ENOMEM if no more gpio interrupts can be registered. It is allowed
- * to call this function more than once for the same gpio group (the group
- * will be registered only once).
- */
-extern int s5p_register_gpio_interrupt(int pin);
-
-/** s5p_register_gpioint_bank() - add gpio bank for further gpio interrupt
- * registration (see s5p_register_gpio_interrupt function)
- * @chain_irq: chained irq number for the gpio int handler for this bank
- * @start: start gpio group number of this bank
- * @nr_groups: number of gpio groups handled by this bank
- *
- * This functions registers initial information about gpio banks that
- * can be later used by the s5p_register_gpio_interrupt() function to
- * enable support for gpio interrupt for particular gpio group.
- */
-#ifdef CONFIG_S5P_GPIO_INT
-extern int s5p_register_gpioint_bank(int chain_irq, int start, int nr_groups);
-#else
-#define s5p_register_gpioint_bank(chain_irq, start, nr_groups) do { } while (0)
-#endif
-
 #endif /* __PLAT_GPIO_CFG_H */
diff --git a/arch/arm/plat-samsung/include/plat/hdmi.h b/arch/arm/plat-samsung/include/plat/hdmi.h
deleted file mode 100644 (file)
index 331d046..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright (C) 2012 Samsung Electronics Co.Ltd
- *
- * This program is free software; you can redistribute  it and/or modify it
- * under  the terms of  the GNU General  Public License as published by the
- * Free Software Foundation;  either version 2 of the  License, or (at your
- * option) any later version.
- */
-
-#ifndef __PLAT_SAMSUNG_HDMI_H
-#define __PLAT_SAMSUNG_HDMI_H __FILE__
-
-extern void s5p_hdmi_set_platdata(struct i2c_board_info *hdmiphy_info,
-                                 struct i2c_board_info *mhl_info, int mhl_bus);
-
-#endif /* __PLAT_SAMSUNG_HDMI_H */
diff --git a/arch/arm/plat-samsung/include/plat/irqs.h b/arch/arm/plat-samsung/include/plat/irqs.h
deleted file mode 100644 (file)
index 039001c..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/* 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 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 --git a/arch/arm/plat-samsung/include/plat/mfc.h b/arch/arm/plat-samsung/include/plat/mfc.h
deleted file mode 100644 (file)
index 033654e..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2011 Samsung Electronics Co.Ltd
- *
- * This program is free software; you can redistribute  it and/or modify it
- * under  the terms of  the GNU General  Public License as published by the
- * Free Software Foundation;  either version 2 of the  License, or (at your
- * option) any later version.
- */
-
-#ifndef __PLAT_SAMSUNG_MFC_H
-#define __PLAT_SAMSUNG_MFC_H __FILE__
-
-struct s5p_mfc_dt_meminfo {
-       unsigned long   loff;
-       unsigned long   lsize;
-       unsigned long   roff;
-       unsigned long   rsize;
-       char            *compatible;
-};
-
-/**
- * s5p_mfc_reserve_mem - function to early reserve memory for MFC driver
- * @rbase:     base address for MFC 'right' memory interface
- * @rsize:     size of the memory reserved for MFC 'right' interface
- * @lbase:     base address for MFC 'left' memory interface
- * @lsize:     size of the memory reserved for MFC 'left' interface
- *
- * This function reserves system memory for both MFC device memory
- * interfaces and registers it to respective struct device entries as
- * coherent memory.
- */
-void __init s5p_mfc_reserve_mem(phys_addr_t rbase, unsigned int rsize,
-                               phys_addr_t lbase, unsigned int lsize);
-
-#endif /* __PLAT_SAMSUNG_MFC_H */
diff --git a/arch/arm/plat-samsung/include/plat/pll.h b/arch/arm/plat-samsung/include/plat/pll.h
deleted file mode 100644 (file)
index 357af7c..0000000
+++ /dev/null
@@ -1,323 +0,0 @@
-/* linux/arch/arm/plat-samsung/include/plat/pll.h
- *
- * Copyright (c) 2009-2011 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * Copyright 2008 Openmoko, Inc.
- * Copyright 2008 Simtec Electronics
- *     Ben Dooks <ben@simtec.co.uk>
- *     http://armlinux.simtec.co.uk/
- *
- * Samsung PLL codes
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#include <asm/div64.h>
-
-#define S3C24XX_PLL_MDIV_MASK          (0xFF)
-#define S3C24XX_PLL_PDIV_MASK          (0x1F)
-#define S3C24XX_PLL_SDIV_MASK          (0x3)
-#define S3C24XX_PLL_MDIV_SHIFT         (12)
-#define S3C24XX_PLL_PDIV_SHIFT         (4)
-#define S3C24XX_PLL_SDIV_SHIFT         (0)
-
-static inline unsigned int s3c24xx_get_pll(unsigned int pllval,
-                                          unsigned int baseclk)
-{
-       unsigned int mdiv, pdiv, sdiv;
-       uint64_t fvco;
-
-       mdiv = (pllval >> S3C24XX_PLL_MDIV_SHIFT) & S3C24XX_PLL_MDIV_MASK;
-       pdiv = (pllval >> S3C24XX_PLL_PDIV_SHIFT) & S3C24XX_PLL_PDIV_MASK;
-       sdiv = (pllval >> S3C24XX_PLL_SDIV_SHIFT) & S3C24XX_PLL_SDIV_MASK;
-
-       fvco = (uint64_t)baseclk * (mdiv + 8);
-       do_div(fvco, (pdiv + 2) << sdiv);
-
-       return (unsigned int)fvco;
-}
-
-#define S3C2416_PLL_MDIV_MASK          (0x3FF)
-#define S3C2416_PLL_PDIV_MASK          (0x3F)
-#define S3C2416_PLL_SDIV_MASK          (0x7)
-#define S3C2416_PLL_MDIV_SHIFT         (14)
-#define S3C2416_PLL_PDIV_SHIFT         (5)
-#define S3C2416_PLL_SDIV_SHIFT         (0)
-
-static inline unsigned int s3c2416_get_pll(unsigned int pllval,
-                                          unsigned int baseclk)
-{
-       unsigned int mdiv, pdiv, sdiv;
-       uint64_t fvco;
-
-       mdiv = (pllval >> S3C2416_PLL_MDIV_SHIFT) & S3C2416_PLL_MDIV_MASK;
-       pdiv = (pllval >> S3C2416_PLL_PDIV_SHIFT) & S3C2416_PLL_PDIV_MASK;
-       sdiv = (pllval >> S3C2416_PLL_SDIV_SHIFT) & S3C2416_PLL_SDIV_MASK;
-
-       fvco = (uint64_t)baseclk * mdiv;
-       do_div(fvco, (pdiv << sdiv));
-
-       return (unsigned int)fvco;
-}
-
-#define S3C6400_PLL_MDIV_MASK          (0x3FF)
-#define S3C6400_PLL_PDIV_MASK          (0x3F)
-#define S3C6400_PLL_SDIV_MASK          (0x7)
-#define S3C6400_PLL_MDIV_SHIFT         (16)
-#define S3C6400_PLL_PDIV_SHIFT         (8)
-#define S3C6400_PLL_SDIV_SHIFT         (0)
-
-static inline unsigned long s3c6400_get_pll(unsigned long baseclk,
-                                           u32 pllcon)
-{
-       u32 mdiv, pdiv, sdiv;
-       u64 fvco = baseclk;
-
-       mdiv = (pllcon >> S3C6400_PLL_MDIV_SHIFT) & S3C6400_PLL_MDIV_MASK;
-       pdiv = (pllcon >> S3C6400_PLL_PDIV_SHIFT) & S3C6400_PLL_PDIV_MASK;
-       sdiv = (pllcon >> S3C6400_PLL_SDIV_SHIFT) & S3C6400_PLL_SDIV_MASK;
-
-       fvco *= mdiv;
-       do_div(fvco, (pdiv << sdiv));
-
-       return (unsigned long)fvco;
-}
-
-#define PLL6553X_MDIV_MASK     (0x7F)
-#define PLL6553X_PDIV_MASK     (0x1F)
-#define PLL6553X_SDIV_MASK     (0x3)
-#define PLL6553X_KDIV_MASK     (0xFFFF)
-#define PLL6553X_MDIV_SHIFT    (16)
-#define PLL6553X_PDIV_SHIFT    (8)
-#define PLL6553X_SDIV_SHIFT    (0)
-
-static inline unsigned long s3c_get_pll6553x(unsigned long baseclk,
-                                            u32 pll_con0, u32 pll_con1)
-{
-       unsigned long result;
-       u32 mdiv, pdiv, sdiv, kdiv;
-       u64 tmp;
-
-       mdiv = (pll_con0 >> PLL6553X_MDIV_SHIFT) & PLL6553X_MDIV_MASK;
-       pdiv = (pll_con0 >> PLL6553X_PDIV_SHIFT) & PLL6553X_PDIV_MASK;
-       sdiv = (pll_con0 >> PLL6553X_SDIV_SHIFT) & PLL6553X_SDIV_MASK;
-       kdiv = pll_con1 & PLL6553X_KDIV_MASK;
-
-       /*
-        * We need to multiple baseclk by mdiv (the integer part) and kdiv
-        * which is in 2^16ths, so shift mdiv up (does not overflow) and
-        * add kdiv before multiplying. The use of tmp is to avoid any
-        * overflows before shifting bac down into result when multipling
-        * by the mdiv and kdiv pair.
-        */
-
-       tmp = baseclk;
-       tmp *= (mdiv << 16) + kdiv;
-       do_div(tmp, (pdiv << sdiv));
-       result = tmp >> 16;
-
-       return result;
-}
-
-#define PLL35XX_MDIV_MASK      (0x3FF)
-#define PLL35XX_PDIV_MASK      (0x3F)
-#define PLL35XX_SDIV_MASK      (0x7)
-#define PLL35XX_MDIV_SHIFT     (16)
-#define PLL35XX_PDIV_SHIFT     (8)
-#define PLL35XX_SDIV_SHIFT     (0)
-
-static inline unsigned long s5p_get_pll35xx(unsigned long baseclk, u32 pll_con)
-{
-       u32 mdiv, pdiv, sdiv;
-       u64 fvco = baseclk;
-
-       mdiv = (pll_con >> PLL35XX_MDIV_SHIFT) & PLL35XX_MDIV_MASK;
-       pdiv = (pll_con >> PLL35XX_PDIV_SHIFT) & PLL35XX_PDIV_MASK;
-       sdiv = (pll_con >> PLL35XX_SDIV_SHIFT) & PLL35XX_SDIV_MASK;
-
-       fvco *= mdiv;
-       do_div(fvco, (pdiv << sdiv));
-
-       return (unsigned long)fvco;
-}
-
-#define PLL36XX_KDIV_MASK      (0xFFFF)
-#define PLL36XX_MDIV_MASK      (0x1FF)
-#define PLL36XX_PDIV_MASK      (0x3F)
-#define PLL36XX_SDIV_MASK      (0x7)
-#define PLL36XX_MDIV_SHIFT     (16)
-#define PLL36XX_PDIV_SHIFT     (8)
-#define PLL36XX_SDIV_SHIFT     (0)
-
-static inline unsigned long s5p_get_pll36xx(unsigned long baseclk,
-                                           u32 pll_con0, u32 pll_con1)
-{
-       unsigned long result;
-       u32 mdiv, pdiv, sdiv, kdiv;
-       u64 tmp;
-
-       mdiv = (pll_con0 >> PLL36XX_MDIV_SHIFT) & PLL36XX_MDIV_MASK;
-       pdiv = (pll_con0 >> PLL36XX_PDIV_SHIFT) & PLL36XX_PDIV_MASK;
-       sdiv = (pll_con0 >> PLL36XX_SDIV_SHIFT) & PLL36XX_SDIV_MASK;
-       kdiv = pll_con1 & PLL36XX_KDIV_MASK;
-
-       tmp = baseclk;
-
-       tmp *= (mdiv << 16) + kdiv;
-       do_div(tmp, (pdiv << sdiv));
-       result = tmp >> 16;
-
-       return result;
-}
-
-#define PLL45XX_MDIV_MASK      (0x3FF)
-#define PLL45XX_PDIV_MASK      (0x3F)
-#define PLL45XX_SDIV_MASK      (0x7)
-#define PLL45XX_MDIV_SHIFT     (16)
-#define PLL45XX_PDIV_SHIFT     (8)
-#define PLL45XX_SDIV_SHIFT     (0)
-
-enum pll45xx_type_t {
-       pll_4500,
-       pll_4502,
-       pll_4508
-};
-
-static inline unsigned long s5p_get_pll45xx(unsigned long baseclk, u32 pll_con,
-                                           enum pll45xx_type_t pll_type)
-{
-       u32 mdiv, pdiv, sdiv;
-       u64 fvco = baseclk;
-
-       mdiv = (pll_con >> PLL45XX_MDIV_SHIFT) & PLL45XX_MDIV_MASK;
-       pdiv = (pll_con >> PLL45XX_PDIV_SHIFT) & PLL45XX_PDIV_MASK;
-       sdiv = (pll_con >> PLL45XX_SDIV_SHIFT) & PLL45XX_SDIV_MASK;
-
-       if (pll_type == pll_4508)
-               sdiv = sdiv - 1;
-
-       fvco *= mdiv;
-       do_div(fvco, (pdiv << sdiv));
-
-       return (unsigned long)fvco;
-}
-
-/* CON0 bit-fields */
-#define PLL46XX_MDIV_MASK      (0x1FF)
-#define PLL46XX_PDIV_MASK      (0x3F)
-#define PLL46XX_SDIV_MASK      (0x7)
-#define PLL46XX_LOCKED_SHIFT   (29)
-#define PLL46XX_MDIV_SHIFT     (16)
-#define PLL46XX_PDIV_SHIFT     (8)
-#define PLL46XX_SDIV_SHIFT     (0)
-
-/* CON1 bit-fields */
-#define PLL46XX_MRR_MASK       (0x1F)
-#define PLL46XX_MFR_MASK       (0x3F)
-#define PLL46XX_KDIV_MASK      (0xFFFF)
-#define PLL4650C_KDIV_MASK     (0xFFF)
-#define PLL46XX_MRR_SHIFT      (24)
-#define PLL46XX_MFR_SHIFT      (16)
-#define PLL46XX_KDIV_SHIFT     (0)
-
-enum pll46xx_type_t {
-       pll_4600,
-       pll_4650,
-       pll_4650c,
-};
-
-static inline unsigned long s5p_get_pll46xx(unsigned long baseclk,
-                                           u32 pll_con0, u32 pll_con1,
-                                           enum pll46xx_type_t pll_type)
-{
-       unsigned long result;
-       u32 mdiv, pdiv, sdiv, kdiv;
-       u64 tmp;
-
-       mdiv = (pll_con0 >> PLL46XX_MDIV_SHIFT) & PLL46XX_MDIV_MASK;
-       pdiv = (pll_con0 >> PLL46XX_PDIV_SHIFT) & PLL46XX_PDIV_MASK;
-       sdiv = (pll_con0 >> PLL46XX_SDIV_SHIFT) & PLL46XX_SDIV_MASK;
-       kdiv = pll_con1 & PLL46XX_KDIV_MASK;
-
-       if (pll_type == pll_4650c)
-               kdiv = pll_con1 & PLL4650C_KDIV_MASK;
-       else
-               kdiv = pll_con1 & PLL46XX_KDIV_MASK;
-
-       tmp = baseclk;
-
-       if (pll_type == pll_4600) {
-               tmp *= (mdiv << 16) + kdiv;
-               do_div(tmp, (pdiv << sdiv));
-               result = tmp >> 16;
-       } else {
-               tmp *= (mdiv << 10) + kdiv;
-               do_div(tmp, (pdiv << sdiv));
-               result = tmp >> 10;
-       }
-
-       return result;
-}
-
-#define PLL90XX_MDIV_MASK      (0xFF)
-#define PLL90XX_PDIV_MASK      (0x3F)
-#define PLL90XX_SDIV_MASK      (0x7)
-#define PLL90XX_KDIV_MASK      (0xffff)
-#define PLL90XX_LOCKED_SHIFT   (29)
-#define PLL90XX_MDIV_SHIFT     (16)
-#define PLL90XX_PDIV_SHIFT     (8)
-#define PLL90XX_SDIV_SHIFT     (0)
-#define PLL90XX_KDIV_SHIFT     (0)
-
-static inline unsigned long s5p_get_pll90xx(unsigned long baseclk,
-                                           u32 pll_con, u32 pll_conk)
-{
-       unsigned long result;
-       u32 mdiv, pdiv, sdiv, kdiv;
-       u64 tmp;
-
-       mdiv = (pll_con >> PLL90XX_MDIV_SHIFT) & PLL90XX_MDIV_MASK;
-       pdiv = (pll_con >> PLL90XX_PDIV_SHIFT) & PLL90XX_PDIV_MASK;
-       sdiv = (pll_con >> PLL90XX_SDIV_SHIFT) & PLL90XX_SDIV_MASK;
-       kdiv = pll_conk & PLL90XX_KDIV_MASK;
-
-       /*
-        * We need to multiple baseclk by mdiv (the integer part) and kdiv
-        * which is in 2^16ths, so shift mdiv up (does not overflow) and
-        * add kdiv before multiplying. The use of tmp is to avoid any
-        * overflows before shifting bac down into result when multipling
-        * by the mdiv and kdiv pair.
-        */
-
-       tmp = baseclk;
-       tmp *= (mdiv << 16) + kdiv;
-       do_div(tmp, (pdiv << sdiv));
-       result = tmp >> 16;
-
-       return result;
-}
-
-#define PLL65XX_MDIV_MASK      (0x3FF)
-#define PLL65XX_PDIV_MASK      (0x3F)
-#define PLL65XX_SDIV_MASK      (0x7)
-#define PLL65XX_MDIV_SHIFT     (16)
-#define PLL65XX_PDIV_SHIFT     (8)
-#define PLL65XX_SDIV_SHIFT     (0)
-
-static inline unsigned long s5p_get_pll65xx(unsigned long baseclk, u32 pll_con)
-{
-       u32 mdiv, pdiv, sdiv;
-       u64 fvco = baseclk;
-
-       mdiv = (pll_con >> PLL65XX_MDIV_SHIFT) & PLL65XX_MDIV_MASK;
-       pdiv = (pll_con >> PLL65XX_PDIV_SHIFT) & PLL65XX_PDIV_MASK;
-       sdiv = (pll_con >> PLL65XX_SDIV_SHIFT) & PLL65XX_SDIV_MASK;
-
-       fvco *= mdiv;
-       do_div(fvco, (pdiv << sdiv));
-
-       return (unsigned long)fvco;
-}
diff --git a/arch/arm/plat-samsung/include/plat/s5p-clock.h b/arch/arm/plat-samsung/include/plat/s5p-clock.h
deleted file mode 100644 (file)
index acacc4b..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/* linux/arch/arm/plat-samsung/include/plat/s5p-clock.h
- *
- * Copyright (c) 2009-2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com
- *
- * Header file for s5p clock 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 __ASM_PLAT_S5P_CLOCK_H
-#define __ASM_PLAT_S5P_CLOCK_H __FILE__
-
-#include <linux/clk.h>
-
-#define GET_DIV(clk, field) ((((clk) & field##_MASK) >> field##_SHIFT) + 1)
-
-#define clk_fin_apll clk_ext_xtal_mux
-#define clk_fin_bpll clk_ext_xtal_mux
-#define clk_fin_cpll clk_ext_xtal_mux
-#define clk_fin_mpll clk_ext_xtal_mux
-#define clk_fin_epll clk_ext_xtal_mux
-#define clk_fin_dpll clk_ext_xtal_mux
-#define clk_fin_vpll clk_ext_xtal_mux
-#define clk_fin_hpll clk_ext_xtal_mux
-
-extern struct clk clk_ext_xtal_mux;
-extern struct clk clk_xusbxti;
-extern struct clk clk_48m;
-extern struct clk s5p_clk_27m;
-extern struct clk clk_fout_apll;
-extern struct clk clk_fout_bpll;
-extern struct clk clk_fout_bpll_div2;
-extern struct clk clk_fout_cpll;
-extern struct clk clk_fout_mpll;
-extern struct clk clk_fout_mpll_div2;
-extern struct clk clk_fout_epll;
-extern struct clk clk_fout_dpll;
-extern struct clk clk_fout_vpll;
-extern struct clk clk_arm;
-extern struct clk clk_vpll;
-
-extern struct clksrc_sources clk_src_apll;
-extern struct clksrc_sources clk_src_bpll;
-extern struct clksrc_sources clk_src_bpll_fout;
-extern struct clksrc_sources clk_src_cpll;
-extern struct clksrc_sources clk_src_mpll;
-extern struct clksrc_sources clk_src_mpll_fout;
-extern struct clksrc_sources clk_src_epll;
-extern struct clksrc_sources clk_src_dpll;
-
-extern int s5p_gatectrl(void __iomem *reg, struct clk *clk, int enable);
-
-/* Common EPLL operations for S5P platform */
-extern int s5p_epll_enable(struct clk *clk, int enable);
-extern unsigned long s5p_epll_get_rate(struct clk *clk);
-
-/* SPDIF clk operations common for S5PV210/C110 and Exynos4 */
-extern int s5p_spdif_set_rate(struct clk *clk, unsigned long rate);
-extern unsigned long s5p_spdif_get_rate(struct clk *clk);
-
-extern struct clk_ops s5p_sclk_spdif_ops;
-#endif /* __ASM_PLAT_S5P_CLOCK_H */
index f84b6cbc874538923236334f3f70e1851bfa4098..2787553c3ae2656cda4ec74db512970ce945d296 100644 (file)
@@ -57,14 +57,6 @@ extern void s3c2416_setup_sdhci1_cfg_gpio(struct platform_device *, int w);
 extern void s3c64xx_setup_sdhci0_cfg_gpio(struct platform_device *, int w);
 extern void s3c64xx_setup_sdhci1_cfg_gpio(struct platform_device *, int w);
 extern void s3c64xx_setup_sdhci2_cfg_gpio(struct platform_device *, int w);
-extern void s5pv210_setup_sdhci0_cfg_gpio(struct platform_device *, int w);
-extern void s5pv210_setup_sdhci1_cfg_gpio(struct platform_device *, int w);
-extern void s5pv210_setup_sdhci2_cfg_gpio(struct platform_device *, int w);
-extern void s5pv210_setup_sdhci3_cfg_gpio(struct platform_device *, int w);
-extern void exynos4_setup_sdhci0_cfg_gpio(struct platform_device *, int w);
-extern void exynos4_setup_sdhci1_cfg_gpio(struct platform_device *, int w);
-extern void exynos4_setup_sdhci2_cfg_gpio(struct platform_device *, int w);
-extern void exynos4_setup_sdhci3_cfg_gpio(struct platform_device *, int w);
 
 /* S3C2416 SDHCI setup */
 
@@ -144,45 +136,6 @@ static inline void s3c6400_default_sdhci2(void) { }
 
 #endif /* CONFIG_S3C64XX_SETUP_SDHCI */
 
-/* S5PV210 SDHCI setup */
-
-#ifdef CONFIG_S5PV210_SETUP_SDHCI
-static inline void s5pv210_default_sdhci0(void)
-{
-#ifdef CONFIG_S3C_DEV_HSMMC
-       s3c_hsmmc0_def_platdata.cfg_gpio = s5pv210_setup_sdhci0_cfg_gpio;
-#endif
-}
-
-static inline void s5pv210_default_sdhci1(void)
-{
-#ifdef CONFIG_S3C_DEV_HSMMC1
-       s3c_hsmmc1_def_platdata.cfg_gpio = s5pv210_setup_sdhci1_cfg_gpio;
-#endif
-}
-
-static inline void s5pv210_default_sdhci2(void)
-{
-#ifdef CONFIG_S3C_DEV_HSMMC2
-       s3c_hsmmc2_def_platdata.cfg_gpio = s5pv210_setup_sdhci2_cfg_gpio;
-#endif
-}
-
-static inline void s5pv210_default_sdhci3(void)
-{
-#ifdef CONFIG_S3C_DEV_HSMMC3
-       s3c_hsmmc3_def_platdata.cfg_gpio = s5pv210_setup_sdhci3_cfg_gpio;
-#endif
-}
-
-#else
-static inline void s5pv210_default_sdhci0(void) { }
-static inline void s5pv210_default_sdhci1(void) { }
-static inline void s5pv210_default_sdhci2(void) { }
-static inline void s5pv210_default_sdhci3(void) { }
-
-#endif /* CONFIG_S5PV210_SETUP_SDHCI */
-
 static inline void s3c_sdhci_setname(int id, char *name)
 {
        switch (id) {
diff --git a/arch/arm/plat-samsung/include/plat/tv-core.h b/arch/arm/plat-samsung/include/plat/tv-core.h
deleted file mode 100644 (file)
index 3bc34f3..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * arch/arm/plat-samsung/include/plat/tv.h
- *
- * Copyright 2011 Samsung Electronics Co., Ltd.
- *     Tomasz Stanislawski <t.stanislaws@samsung.com>
- *
- * Samsung TV driver core functions
- *
- * 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 __SAMSUNG_PLAT_TV_H
-#define __SAMSUNG_PLAT_TV_H __FILE__
-
-/*
- * These functions are only for use with the core support code, such as
- * the CPU-specific initialization code.
- */
-
-/* Re-define device name to differentiate the subsystem in various SoCs. */
-static inline void s5p_hdmi_setname(char *name)
-{
-#ifdef CONFIG_S5P_DEV_TV
-       s5p_device_hdmi.name = name;
-#endif
-}
-
-static inline void s5p_mixer_setname(char *name)
-{
-#ifdef CONFIG_S5P_DEV_TV
-       s5p_device_mixer.name = name;
-#endif
-}
-
-static inline void s5p_sdo_setname(char *name)
-{
-#ifdef CONFIG_S5P_DEV_TV
-       s5p_device_sdo.name = name;
-#endif
-}
-
-#endif /* __SAMSUNG_PLAT_TV_H */
index a1f925f3121f19fe5d14da8d5184b5423eb3d9b5..11fbbc26e49fdd85273edc996504a189065d94cf 100644 (file)
@@ -30,7 +30,6 @@
 
 #include <plat/cpu.h>
 #include <plat/devs.h>
-#include <plat/clock.h>
 
 static struct cpu_table *cpu;
 
index da268813901bf21cdfdc1ee23c01a43ddcf574ff..f6084f641e6f561cff1a660f4be6deef7ccd8403 100644 (file)
@@ -196,7 +196,7 @@ struct samsung_gpio_pm samsung_gpio_pm_2bit = {
        .resume = samsung_gpio_pm_2bit_resume,
 };
 
-#if defined(CONFIG_ARCH_S3C64XX) || defined(CONFIG_PLAT_S5P)
+#if defined(CONFIG_ARCH_S3C64XX)
 static void samsung_gpio_pm_4bit_save(struct samsung_gpio_chip *chip)
 {
        chip->pm_save[1] = __raw_readl(chip->base + OFFS_CON);
@@ -306,7 +306,7 @@ struct samsung_gpio_pm samsung_gpio_pm_4bit = {
        .save   = samsung_gpio_pm_4bit_save,
        .resume = samsung_gpio_pm_4bit_resume,
 };
-#endif /* CONFIG_ARCH_S3C64XX || CONFIG_PLAT_S5P */
+#endif /* CONFIG_ARCH_S3C64XX */
 
 /**
  * samsung_pm_save_gpio() - save gpio chip data for suspend
diff --git a/arch/arm/plat-samsung/s5p-clock.c b/arch/arm/plat-samsung/s5p-clock.c
deleted file mode 100644 (file)
index 48a1599..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * Copyright 2009 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * S5P - Common clock 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.
-*/
-
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/list.h>
-#include <linux/errno.h>
-#include <linux/err.h>
-#include <linux/clk.h>
-#include <linux/device.h>
-#include <linux/io.h>
-#include <asm/div64.h>
-
-#include <mach/regs-clock.h>
-
-#include <plat/clock.h>
-#include <plat/clock-clksrc.h>
-#include <plat/s5p-clock.h>
-
-/* fin_apll, fin_mpll and fin_epll are all the same clock, which we call
- * clk_ext_xtal_mux.
-*/
-struct clk clk_ext_xtal_mux = {
-       .name           = "ext_xtal",
-       .id             = -1,
-};
-
-struct clk clk_xusbxti = {
-       .name           = "xusbxti",
-       .id             = -1,
-       .rate           = 24000000,
-};
-
-struct clk s5p_clk_27m = {
-       .name           = "clk_27m",
-       .id             = -1,
-       .rate           = 27000000,
-};
-
-/* 48MHz USB Phy clock output */
-struct clk clk_48m = {
-       .name           = "clk_48m",
-       .id             = -1,
-       .rate           = 48000000,
-};
-
-/* APLL clock output
- * No need .ctrlbit, this is always on
-*/
-struct clk clk_fout_apll = {
-       .name           = "fout_apll",
-       .id             = -1,
-};
-
-/* BPLL clock output */
-
-struct clk clk_fout_bpll = {
-       .name           = "fout_bpll",
-       .id             = -1,
-};
-
-struct clk clk_fout_bpll_div2 = {
-       .name           = "fout_bpll_div2",
-       .id             = -1,
-};
-
-/* CPLL clock output */
-
-struct clk clk_fout_cpll = {
-       .name           = "fout_cpll",
-       .id             = -1,
-};
-
-/* MPLL clock output
- * No need .ctrlbit, this is always on
-*/
-struct clk clk_fout_mpll = {
-       .name           = "fout_mpll",
-       .id             = -1,
-};
-
-struct clk clk_fout_mpll_div2 = {
-       .name           = "fout_mpll_div2",
-       .id             = -1,
-};
-
-/* EPLL clock output */
-struct clk clk_fout_epll = {
-       .name           = "fout_epll",
-       .id             = -1,
-       .ctrlbit        = (1 << 31),
-};
-
-/* DPLL clock output */
-struct clk clk_fout_dpll = {
-       .name           = "fout_dpll",
-       .id             = -1,
-       .ctrlbit        = (1 << 31),
-};
-
-/* VPLL clock output */
-struct clk clk_fout_vpll = {
-       .name           = "fout_vpll",
-       .id             = -1,
-       .ctrlbit        = (1 << 31),
-};
-
-/* Possible clock sources for APLL Mux */
-static struct clk *clk_src_apll_list[] = {
-       [0] = &clk_fin_apll,
-       [1] = &clk_fout_apll,
-};
-
-struct clksrc_sources clk_src_apll = {
-       .sources        = clk_src_apll_list,
-       .nr_sources     = ARRAY_SIZE(clk_src_apll_list),
-};
-
-/* Possible clock sources for BPLL Mux */
-static struct clk *clk_src_bpll_list[] = {
-       [0] = &clk_fin_bpll,
-       [1] = &clk_fout_bpll,
-};
-
-struct clksrc_sources clk_src_bpll = {
-       .sources        = clk_src_bpll_list,
-       .nr_sources     = ARRAY_SIZE(clk_src_bpll_list),
-};
-
-static struct clk *clk_src_bpll_fout_list[] = {
-       [0] = &clk_fout_bpll_div2,
-       [1] = &clk_fout_bpll,
-};
-
-struct clksrc_sources clk_src_bpll_fout = {
-       .sources        = clk_src_bpll_fout_list,
-       .nr_sources     = ARRAY_SIZE(clk_src_bpll_fout_list),
-};
-
-/* Possible clock sources for CPLL Mux */
-static struct clk *clk_src_cpll_list[] = {
-       [0] = &clk_fin_cpll,
-       [1] = &clk_fout_cpll,
-};
-
-struct clksrc_sources clk_src_cpll = {
-       .sources        = clk_src_cpll_list,
-       .nr_sources     = ARRAY_SIZE(clk_src_cpll_list),
-};
-
-/* Possible clock sources for MPLL Mux */
-static struct clk *clk_src_mpll_list[] = {
-       [0] = &clk_fin_mpll,
-       [1] = &clk_fout_mpll,
-};
-
-struct clksrc_sources clk_src_mpll = {
-       .sources        = clk_src_mpll_list,
-       .nr_sources     = ARRAY_SIZE(clk_src_mpll_list),
-};
-
-static struct clk *clk_src_mpll_fout_list[] = {
-       [0] = &clk_fout_mpll_div2,
-       [1] = &clk_fout_mpll,
-};
-
-struct clksrc_sources clk_src_mpll_fout = {
-       .sources        = clk_src_mpll_fout_list,
-       .nr_sources     = ARRAY_SIZE(clk_src_mpll_fout_list),
-};
-
-/* Possible clock sources for EPLL Mux */
-static struct clk *clk_src_epll_list[] = {
-       [0] = &clk_fin_epll,
-       [1] = &clk_fout_epll,
-};
-
-struct clksrc_sources clk_src_epll = {
-       .sources        = clk_src_epll_list,
-       .nr_sources     = ARRAY_SIZE(clk_src_epll_list),
-};
-
-/* Possible clock sources for DPLL Mux */
-static struct clk *clk_src_dpll_list[] = {
-       [0] = &clk_fin_dpll,
-       [1] = &clk_fout_dpll,
-};
-
-struct clksrc_sources clk_src_dpll = {
-       .sources        = clk_src_dpll_list,
-       .nr_sources     = ARRAY_SIZE(clk_src_dpll_list),
-};
-
-struct clk clk_vpll = {
-       .name           = "vpll",
-       .id             = -1,
-};
-
-int s5p_gatectrl(void __iomem *reg, struct clk *clk, int enable)
-{
-       unsigned int ctrlbit = clk->ctrlbit;
-       u32 con;
-
-       con = __raw_readl(reg);
-       con = enable ? (con | ctrlbit) : (con & ~ctrlbit);
-       __raw_writel(con, reg);
-       return 0;
-}
-
-int s5p_epll_enable(struct clk *clk, int enable)
-{
-       unsigned int ctrlbit = clk->ctrlbit;
-       unsigned int epll_con = __raw_readl(S5P_EPLL_CON) & ~ctrlbit;
-
-       if (enable)
-               __raw_writel(epll_con | ctrlbit, S5P_EPLL_CON);
-       else
-               __raw_writel(epll_con, S5P_EPLL_CON);
-
-       return 0;
-}
-
-unsigned long s5p_epll_get_rate(struct clk *clk)
-{
-       return clk->rate;
-}
-
-int s5p_spdif_set_rate(struct clk *clk, unsigned long rate)
-{
-       struct clk *pclk;
-       int ret;
-
-       pclk = clk_get_parent(clk);
-       if (IS_ERR(pclk))
-               return -EINVAL;
-
-       ret = pclk->ops->set_rate(pclk, rate);
-       clk_put(pclk);
-
-       return ret;
-}
-
-unsigned long s5p_spdif_get_rate(struct clk *clk)
-{
-       struct clk *pclk;
-       int rate;
-
-       pclk = clk_get_parent(clk);
-       if (IS_ERR(pclk))
-               return -EINVAL;
-
-       rate = pclk->ops->get_rate(pclk);
-       clk_put(pclk);
-
-       return rate;
-}
-
-struct clk_ops s5p_sclk_spdif_ops = {
-       .set_rate       = s5p_spdif_set_rate,
-       .get_rate       = s5p_spdif_get_rate,
-};
-
-static struct clk *s5p_clks[] __initdata = {
-       &clk_ext_xtal_mux,
-       &clk_48m,
-       &s5p_clk_27m,
-       &clk_fout_apll,
-       &clk_fout_mpll,
-       &clk_fout_epll,
-       &clk_fout_dpll,
-       &clk_fout_vpll,
-       &clk_vpll,
-       &clk_xusbxti,
-};
-
-void __init s5p_register_clocks(unsigned long xtal_freq)
-{
-       int ret;
-
-       clk_ext_xtal_mux.rate = xtal_freq;
-
-       ret = s3c24xx_register_clocks(s5p_clks, ARRAY_SIZE(s5p_clks));
-       if (ret > 0)
-               printk(KERN_ERR "Failed to register s5p clocks\n");
-}
index 469b86260fe3f75e97987dafb1d557ebdf4b0fb1..0b04b6b0fa302f97fef4996de97efe59ca572be4 100644 (file)
 #include <linux/of_fdt.h>
 #include <linux/of.h>
 
-#include <plat/mfc.h>
-
-#ifdef CONFIG_SAMSUNG_ATAGS
-#include <mach/map.h>
-#include <mach/irqs.h>
-#include <plat/devs.h>
-
-static struct resource s5p_mfc_resource[] = {
-       [0] = DEFINE_RES_MEM(S5P_PA_MFC, SZ_64K),
-       [1] = DEFINE_RES_IRQ(IRQ_MFC),
-};
-
-struct platform_device s5p_device_mfc = {
-       .name           = "s5p-mfc",
-       .id             = -1,
-       .num_resources  = ARRAY_SIZE(s5p_mfc_resource),
-       .resource       = s5p_mfc_resource,
-};
-
-/*
- * MFC hardware has 2 memory interfaces which are modelled as two separate
- * platform devices to let dma-mapping distinguish between them.
- *
- * MFC parent device (s5p_device_mfc) must be registered before memory
- * interface specific devices (s5p_device_mfc_l and s5p_device_mfc_r).
- */
-
-struct platform_device s5p_device_mfc_l = {
-       .name           = "s5p-mfc-l",
-       .id             = -1,
-       .dev            = {
-               .parent                 = &s5p_device_mfc.dev,
-               .dma_mask               = &s5p_device_mfc_l.dev.coherent_dma_mask,
-               .coherent_dma_mask      = DMA_BIT_MASK(32),
-       },
-};
-
-struct platform_device s5p_device_mfc_r = {
-       .name           = "s5p-mfc-r",
-       .id             = -1,
-       .dev            = {
-               .parent                 = &s5p_device_mfc.dev,
-               .dma_mask               = &s5p_device_mfc_r.dev.coherent_dma_mask,
-               .coherent_dma_mask      = DMA_BIT_MASK(32),
-       },
-};
-#else
 static struct platform_device s5p_device_mfc_l;
 static struct platform_device s5p_device_mfc_r;
-#endif
+
+struct s5p_mfc_dt_meminfo {
+       unsigned long   loff;
+       unsigned long   lsize;
+       unsigned long   roff;
+       unsigned long   rsize;
+       char            *compatible;
+};
 
 struct s5p_mfc_reserved_mem {
        phys_addr_t     base;
@@ -77,7 +37,7 @@ struct s5p_mfc_reserved_mem {
 static struct s5p_mfc_reserved_mem s5p_mfc_mem[2] __initdata;
 
 
-void __init s5p_mfc_reserve_mem(phys_addr_t rbase, unsigned int rsize,
+static void __init s5p_mfc_reserve_mem(phys_addr_t rbase, unsigned int rsize,
                                phys_addr_t lbase, unsigned int lsize)
 {
        int i;
@@ -100,28 +60,6 @@ void __init s5p_mfc_reserve_mem(phys_addr_t rbase, unsigned int rsize,
        }
 }
 
-#ifdef CONFIG_SAMSUNG_ATAGS
-static int __init s5p_mfc_memory_init(void)
-{
-       int i;
-
-       for (i = 0; i < ARRAY_SIZE(s5p_mfc_mem); i++) {
-               struct s5p_mfc_reserved_mem *area = &s5p_mfc_mem[i];
-               if (!area->base)
-                       continue;
-
-               if (dma_declare_coherent_memory(area->dev, area->base,
-                               area->base, area->size,
-                               DMA_MEMORY_MAP | DMA_MEMORY_EXCLUSIVE) == 0)
-                       printk(KERN_ERR "Failed to declare coherent memory for MFC device (%ld bytes at 0x%08lx)\n",
-                              area->size, (unsigned long) area->base);
-       }
-       return 0;
-}
-device_initcall(s5p_mfc_memory_init);
-#endif
-
-#ifdef CONFIG_OF
 int __init s5p_fdt_alloc_mfc_mem(unsigned long node, const char *uname,
                                int depth, void *data)
 {
@@ -154,4 +92,3 @@ int __init s5p_fdt_alloc_mfc_mem(unsigned long node, const char *uname,
 
        return 1;
 }
-#endif
diff --git a/arch/arm/plat-samsung/s5p-dev-uart.c b/arch/arm/plat-samsung/s5p-dev-uart.c
deleted file mode 100644 (file)
index 8c4487a..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (c) 2009,2012 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * Base S5P UART resource and device definitions
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/interrupt.h>
-#include <linux/list.h>
-#include <linux/ioport.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach/arch.h>
-#include <asm/mach/irq.h>
-#include <mach/map.h>
-
-#include <plat/devs.h>
-
- /* Serial port registrations */
-
-static struct resource s5p_uart0_resource[] = {
-       [0] = DEFINE_RES_MEM(S5P_PA_UART0, S5P_SZ_UART),
-       [1] = DEFINE_RES_IRQ(IRQ_UART0),
-};
-
-static struct resource s5p_uart1_resource[] = {
-       [0] = DEFINE_RES_MEM(S5P_PA_UART1, S5P_SZ_UART),
-       [1] = DEFINE_RES_IRQ(IRQ_UART1),
-};
-
-static struct resource s5p_uart2_resource[] = {
-       [0] = DEFINE_RES_MEM(S5P_PA_UART2, S5P_SZ_UART),
-       [1] = DEFINE_RES_IRQ(IRQ_UART2),
-};
-
-static struct resource s5p_uart3_resource[] = {
-#if CONFIG_SERIAL_SAMSUNG_UARTS > 3
-       [0] = DEFINE_RES_MEM(S5P_PA_UART3, S5P_SZ_UART),
-       [1] = DEFINE_RES_IRQ(IRQ_UART3),
-#endif
-};
-
-static struct resource s5p_uart4_resource[] = {
-#if CONFIG_SERIAL_SAMSUNG_UARTS > 4
-       [0] = DEFINE_RES_MEM(S5P_PA_UART4, S5P_SZ_UART),
-       [1] = DEFINE_RES_IRQ(IRQ_UART4),
-#endif
-};
-
-static struct resource s5p_uart5_resource[] = {
-#if CONFIG_SERIAL_SAMSUNG_UARTS > 5
-       [0] = DEFINE_RES_MEM(S5P_PA_UART5, S5P_SZ_UART),
-       [1] = DEFINE_RES_IRQ(IRQ_UART5),
-#endif
-};
-
-struct s3c24xx_uart_resources s5p_uart_resources[] __initdata = {
-       [0] = {
-               .resources      = s5p_uart0_resource,
-               .nr_resources   = ARRAY_SIZE(s5p_uart0_resource),
-       },
-       [1] = {
-               .resources      = s5p_uart1_resource,
-               .nr_resources   = ARRAY_SIZE(s5p_uart1_resource),
-       },
-       [2] = {
-               .resources      = s5p_uart2_resource,
-               .nr_resources   = ARRAY_SIZE(s5p_uart2_resource),
-       },
-       [3] = {
-               .resources      = s5p_uart3_resource,
-               .nr_resources   = ARRAY_SIZE(s5p_uart3_resource),
-       },
-       [4] = {
-               .resources      = s5p_uart4_resource,
-               .nr_resources   = ARRAY_SIZE(s5p_uart4_resource),
-       },
-       [5] = {
-               .resources      = s5p_uart5_resource,
-               .nr_resources   = ARRAY_SIZE(s5p_uart5_resource),
-       },
-};
diff --git a/arch/arm/plat-samsung/s5p-irq-eint.c b/arch/arm/plat-samsung/s5p-irq-eint.c
deleted file mode 100644 (file)
index ebee4dc..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com
- *
- * S5P - IRQ EINT 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.
-*/
-
-#include <linux/kernel.h>
-#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/io.h>
-#include <linux/device.h>
-#include <linux/gpio.h>
-#include <linux/irqchip/arm-vic.h>
-#include <linux/of.h>
-
-#include <plat/regs-irqtype.h>
-
-#include <mach/map.h>
-#include <plat/cpu.h>
-#include <plat/pm.h>
-
-#include <plat/gpio-cfg.h>
-#include <mach/regs-gpio.h>
-
-static inline void s5p_irq_eint_mask(struct irq_data *data)
-{
-       u32 mask;
-
-       mask = __raw_readl(S5P_EINT_MASK(EINT_REG_NR(data->irq)));
-       mask |= eint_irq_to_bit(data->irq);
-       __raw_writel(mask, S5P_EINT_MASK(EINT_REG_NR(data->irq)));
-}
-
-static void s5p_irq_eint_unmask(struct irq_data *data)
-{
-       u32 mask;
-
-       mask = __raw_readl(S5P_EINT_MASK(EINT_REG_NR(data->irq)));
-       mask &= ~(eint_irq_to_bit(data->irq));
-       __raw_writel(mask, S5P_EINT_MASK(EINT_REG_NR(data->irq)));
-}
-
-static inline void s5p_irq_eint_ack(struct irq_data *data)
-{
-       __raw_writel(eint_irq_to_bit(data->irq),
-                    S5P_EINT_PEND(EINT_REG_NR(data->irq)));
-}
-
-static void s5p_irq_eint_maskack(struct irq_data *data)
-{
-       /* compiler should in-line these */
-       s5p_irq_eint_mask(data);
-       s5p_irq_eint_ack(data);
-}
-
-static int s5p_irq_eint_set_type(struct irq_data *data, unsigned int type)
-{
-       int offs = EINT_OFFSET(data->irq);
-       int shift;
-       u32 ctrl, mask;
-       u32 newvalue = 0;
-
-       switch (type) {
-       case IRQ_TYPE_EDGE_RISING:
-               newvalue = S5P_IRQ_TYPE_EDGE_RISING;
-               break;
-
-       case IRQ_TYPE_EDGE_FALLING:
-               newvalue = S5P_IRQ_TYPE_EDGE_FALLING;
-               break;
-
-       case IRQ_TYPE_EDGE_BOTH:
-               newvalue = S5P_IRQ_TYPE_EDGE_BOTH;
-               break;
-
-       case IRQ_TYPE_LEVEL_LOW:
-               newvalue = S5P_IRQ_TYPE_LEVEL_LOW;
-               break;
-
-       case IRQ_TYPE_LEVEL_HIGH:
-               newvalue = S5P_IRQ_TYPE_LEVEL_HIGH;
-               break;
-
-       default:
-               printk(KERN_ERR "No such irq type %d", type);
-               return -EINVAL;
-       }
-
-       shift = (offs & 0x7) * 4;
-       mask = 0x7 << shift;
-
-       ctrl = __raw_readl(S5P_EINT_CON(EINT_REG_NR(data->irq)));
-       ctrl &= ~mask;
-       ctrl |= newvalue << shift;
-       __raw_writel(ctrl, S5P_EINT_CON(EINT_REG_NR(data->irq)));
-
-       if ((0 <= offs) && (offs < 8))
-               s3c_gpio_cfgpin(EINT_GPIO_0(offs & 0x7), EINT_MODE);
-
-       else if ((8 <= offs) && (offs < 16))
-               s3c_gpio_cfgpin(EINT_GPIO_1(offs & 0x7), EINT_MODE);
-
-       else if ((16 <= offs) && (offs < 24))
-               s3c_gpio_cfgpin(EINT_GPIO_2(offs & 0x7), EINT_MODE);
-
-       else if ((24 <= offs) && (offs < 32))
-               s3c_gpio_cfgpin(EINT_GPIO_3(offs & 0x7), EINT_MODE);
-
-       else
-               printk(KERN_ERR "No such irq number %d", offs);
-
-       return 0;
-}
-
-static struct irq_chip s5p_irq_eint = {
-       .name           = "s5p-eint",
-       .irq_mask       = s5p_irq_eint_mask,
-       .irq_unmask     = s5p_irq_eint_unmask,
-       .irq_mask_ack   = s5p_irq_eint_maskack,
-       .irq_ack        = s5p_irq_eint_ack,
-       .irq_set_type   = s5p_irq_eint_set_type,
-#ifdef CONFIG_PM
-       .irq_set_wake   = s3c_irqext_wake,
-#endif
-};
-
-/* s5p_irq_demux_eint
- *
- * This function demuxes the IRQ from the group0 external interrupts,
- * from EINTs 16 to 31. It is designed to be inlined into the specific
- * handler s5p_irq_demux_eintX_Y.
- *
- * Each EINT pend/mask registers handle eight of them.
- */
-static inline void s5p_irq_demux_eint(unsigned int start)
-{
-       u32 status = __raw_readl(S5P_EINT_PEND(EINT_REG_NR(start)));
-       u32 mask = __raw_readl(S5P_EINT_MASK(EINT_REG_NR(start)));
-       unsigned int irq;
-
-       status &= ~mask;
-       status &= 0xff;
-
-       while (status) {
-               irq = fls(status) - 1;
-               generic_handle_irq(irq + start);
-               status &= ~(1 << irq);
-       }
-}
-
-static void s5p_irq_demux_eint16_31(unsigned int irq, struct irq_desc *desc)
-{
-       s5p_irq_demux_eint(IRQ_EINT(16));
-       s5p_irq_demux_eint(IRQ_EINT(24));
-}
-
-static inline void s5p_irq_vic_eint_mask(struct irq_data *data)
-{
-       void __iomem *base = irq_data_get_irq_chip_data(data);
-
-       s5p_irq_eint_mask(data);
-       writel(1 << EINT_OFFSET(data->irq), base + VIC_INT_ENABLE_CLEAR);
-}
-
-static void s5p_irq_vic_eint_unmask(struct irq_data *data)
-{
-       void __iomem *base = irq_data_get_irq_chip_data(data);
-
-       s5p_irq_eint_unmask(data);
-       writel(1 << EINT_OFFSET(data->irq), base + VIC_INT_ENABLE);
-}
-
-static inline void s5p_irq_vic_eint_ack(struct irq_data *data)
-{
-       __raw_writel(eint_irq_to_bit(data->irq),
-                    S5P_EINT_PEND(EINT_REG_NR(data->irq)));
-}
-
-static void s5p_irq_vic_eint_maskack(struct irq_data *data)
-{
-       s5p_irq_vic_eint_mask(data);
-       s5p_irq_vic_eint_ack(data);
-}
-
-static struct irq_chip s5p_irq_vic_eint = {
-       .name           = "s5p_vic_eint",
-       .irq_mask       = s5p_irq_vic_eint_mask,
-       .irq_unmask     = s5p_irq_vic_eint_unmask,
-       .irq_mask_ack   = s5p_irq_vic_eint_maskack,
-       .irq_ack        = s5p_irq_vic_eint_ack,
-       .irq_set_type   = s5p_irq_eint_set_type,
-#ifdef CONFIG_PM
-       .irq_set_wake   = s3c_irqext_wake,
-#endif
-};
-
-static int __init s5p_init_irq_eint(void)
-{
-       int irq;
-
-       if (of_have_populated_dt())
-               return -ENODEV;
-
-       for (irq = IRQ_EINT(0); irq <= IRQ_EINT(15); irq++)
-               irq_set_chip(irq, &s5p_irq_vic_eint);
-
-       for (irq = IRQ_EINT(16); irq <= IRQ_EINT(31); irq++) {
-               irq_set_chip_and_handler(irq, &s5p_irq_eint, handle_level_irq);
-               set_irq_flags(irq, IRQF_VALID);
-       }
-
-       irq_set_chained_handler(IRQ_EINT16_31, s5p_irq_demux_eint16_31);
-       return 0;
-}
-
-arch_initcall(s5p_init_irq_eint);
diff --git a/arch/arm/plat-samsung/s5p-irq-gpioint.c b/arch/arm/plat-samsung/s5p-irq-gpioint.c
deleted file mode 100644 (file)
index fafdb05..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- * Author: Kyungmin Park <kyungmin.park@samsung.com>
- * Author: Joonyoung Shim <jy0922.shim@samsung.com>
- * Author: Marek Szyprowski <m.szyprowski@samsung.com>
- *
- *  This program is free software; you can redistribute  it and/or modify it
- *  under  the terms of  the GNU General  Public License as published by the
- *  Free Software Foundation;  either version 2 of the  License, or (at your
- *  option) any later version.
- *
- */
-
-#include <linux/kernel.h>
-#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/irqchip/chained_irq.h>
-#include <linux/io.h>
-#include <linux/gpio.h>
-#include <linux/slab.h>
-
-#include <mach/map.h>
-#include <plat/gpio-core.h>
-#include <plat/gpio-cfg.h>
-
-#define GPIO_BASE(chip)                ((void __iomem *)((unsigned long)((chip)->base) & 0xFFFFF000u))
-
-#define CON_OFFSET             0x700
-#define MASK_OFFSET            0x900
-#define PEND_OFFSET            0xA00
-#define REG_OFFSET(x)          ((x) << 2)
-
-struct s5p_gpioint_bank {
-       struct list_head        list;
-       int                     start;
-       int                     nr_groups;
-       int                     irq;
-       struct samsung_gpio_chip        **chips;
-       void                    (*handler)(unsigned int, struct irq_desc *);
-};
-
-static LIST_HEAD(banks);
-
-static int s5p_gpioint_set_type(struct irq_data *d, unsigned int type)
-{
-       struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
-       struct irq_chip_type *ct = gc->chip_types;
-       unsigned int shift = (d->irq - gc->irq_base) << 2;
-
-       switch (type) {
-       case IRQ_TYPE_EDGE_RISING:
-               type = S5P_IRQ_TYPE_EDGE_RISING;
-               break;
-       case IRQ_TYPE_EDGE_FALLING:
-               type = S5P_IRQ_TYPE_EDGE_FALLING;
-               break;
-       case IRQ_TYPE_EDGE_BOTH:
-               type = S5P_IRQ_TYPE_EDGE_BOTH;
-               break;
-       case IRQ_TYPE_LEVEL_HIGH:
-               type = S5P_IRQ_TYPE_LEVEL_HIGH;
-               break;
-       case IRQ_TYPE_LEVEL_LOW:
-               type = S5P_IRQ_TYPE_LEVEL_LOW;
-               break;
-       case IRQ_TYPE_NONE:
-       default:
-               printk(KERN_WARNING "No irq type\n");
-               return -EINVAL;
-       }
-
-       gc->type_cache &= ~(0x7 << shift);
-       gc->type_cache |= type << shift;
-       writel(gc->type_cache, gc->reg_base + ct->regs.type);
-       return 0;
-}
-
-static void s5p_gpioint_handler(unsigned int irq, struct irq_desc *desc)
-{
-       struct s5p_gpioint_bank *bank = irq_get_handler_data(irq);
-       int group, pend_offset, mask_offset;
-       unsigned int pend, mask;
-
-       struct irq_chip *chip = irq_get_chip(irq);
-       chained_irq_enter(chip, desc);
-
-       for (group = 0; group < bank->nr_groups; group++) {
-               struct samsung_gpio_chip *chip = bank->chips[group];
-               if (!chip)
-                       continue;
-
-               pend_offset = REG_OFFSET(group);
-               pend = __raw_readl(GPIO_BASE(chip) + PEND_OFFSET + pend_offset);
-               if (!pend)
-                       continue;
-
-               mask_offset = REG_OFFSET(group);
-               mask = __raw_readl(GPIO_BASE(chip) + MASK_OFFSET + mask_offset);
-               pend &= ~mask;
-
-               while (pend) {
-                       int offset = fls(pend) - 1;
-                       int real_irq = chip->irq_base + offset;
-                       generic_handle_irq(real_irq);
-                       pend &= ~BIT(offset);
-               }
-       }
-       chained_irq_exit(chip, desc);
-}
-
-static __init int s5p_gpioint_add(struct samsung_gpio_chip *chip)
-{
-       static int used_gpioint_groups = 0;
-       int group = chip->group;
-       struct s5p_gpioint_bank *b, *bank = NULL;
-       struct irq_chip_generic *gc;
-       struct irq_chip_type *ct;
-
-       if (used_gpioint_groups >= S5P_GPIOINT_GROUP_COUNT)
-               return -ENOMEM;
-
-       list_for_each_entry(b, &banks, list) {
-               if (group >= b->start && group < b->start + b->nr_groups) {
-                       bank = b;
-                       break;
-               }
-       }
-       if (!bank)
-               return -EINVAL;
-
-       if (!bank->handler) {
-               bank->chips = kzalloc(sizeof(struct samsung_gpio_chip *) *
-                                     bank->nr_groups, GFP_KERNEL);
-               if (!bank->chips)
-                       return -ENOMEM;
-
-               irq_set_chained_handler(bank->irq, s5p_gpioint_handler);
-               irq_set_handler_data(bank->irq, bank);
-               bank->handler = s5p_gpioint_handler;
-               printk(KERN_INFO "Registered chained gpio int handler for interrupt %d.\n",
-                      bank->irq);
-       }
-
-       /*
-        * chained GPIO irq has been successfully registered, allocate new gpio
-        * int group and assign irq nubmers
-        */
-       chip->irq_base = S5P_GPIOINT_BASE +
-                        used_gpioint_groups * S5P_GPIOINT_GROUP_SIZE;
-       used_gpioint_groups++;
-
-       bank->chips[group - bank->start] = chip;
-
-       gc = irq_alloc_generic_chip("s5p_gpioint", 1, chip->irq_base,
-                                   GPIO_BASE(chip),
-                                   handle_level_irq);
-       if (!gc)
-               return -ENOMEM;
-       ct = gc->chip_types;
-       ct->chip.irq_ack = irq_gc_ack_set_bit;
-       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(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);
-       return 0;
-}
-
-int __init s5p_register_gpio_interrupt(int pin)
-{
-       struct samsung_gpio_chip *my_chip = samsung_gpiolib_getchip(pin);
-       int offset, group;
-       int ret;
-
-       if (!my_chip)
-               return -EINVAL;
-
-       offset = pin - my_chip->chip.base;
-       group = my_chip->group;
-
-       /* check if the group has been already registered */
-       if (my_chip->irq_base)
-               goto success;
-
-       /* register gpio group */
-       ret = s5p_gpioint_add(my_chip);
-       if (ret == 0) {
-               my_chip->chip.to_irq = samsung_gpiolib_to_irq;
-               printk(KERN_INFO "Registered interrupt support for gpio group %d.\n",
-                      group);
-               goto success;
-       }
-       return ret;
-success:
-       my_chip->bitmap_gpio_int |= BIT(offset);
-
-       return my_chip->irq_base + offset;
-}
-
-int __init s5p_register_gpioint_bank(int chain_irq, int start, int nr_groups)
-{
-       struct s5p_gpioint_bank *bank;
-
-       bank = kzalloc(sizeof(*bank), GFP_KERNEL);
-       if (!bank)
-               return -ENOMEM;
-
-       bank->start = start;
-       bank->nr_groups = nr_groups;
-       bank->irq = chain_irq;
-
-       list_add_tail(&bank->list, &banks);
-       return 0;
-}
diff --git a/arch/arm/plat-samsung/s5p-irq-pm.c b/arch/arm/plat-samsung/s5p-irq-pm.c
deleted file mode 100644 (file)
index 52b1694..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com
- *
- * Based on arch/arm/plat-s3c24xx/irq-pm.c,
- * Copyright (c) 2003,2004 Simtec Electronics
- *     Ben Dooks <ben@simtec.co.uk>
- *     http://armlinux.simtec.co.uk/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/interrupt.h>
-
-#include <plat/cpu.h>
-#include <plat/irqs.h>
-#include <plat/pm.h>
-#include <mach/map.h>
-
-#include <mach/regs-gpio.h>
-#include <mach/regs-irq.h>
-
-/* state for IRQs over sleep */
-
-/* default is to allow for EINT0..EINT31, and IRQ_RTC_TIC, IRQ_RTC_ALARM,
- * as wakeup sources
- *
- * set bit to 1 in allow bitfield to enable the wakeup settings on it
-*/
-
-unsigned long s3c_irqwake_intallow     = 0x00000006L;
-unsigned long s3c_irqwake_eintallow    = 0xffffffffL;
-
-int s3c_irq_wake(struct irq_data *data, unsigned int state)
-{
-       unsigned long irqbit;
-       unsigned int irq_rtc_tic, irq_rtc_alarm;
-
-       irq_rtc_tic = IRQ_RTC_TIC;
-       irq_rtc_alarm = IRQ_RTC_ALARM;
-
-       if (data->irq == irq_rtc_tic || data->irq == irq_rtc_alarm) {
-               irqbit = 1 << (data->irq + 1 - irq_rtc_alarm);
-
-               if (!state)
-                       s3c_irqwake_intmask |= irqbit;
-               else
-                       s3c_irqwake_intmask &= ~irqbit;
-       } else {
-               return -ENOENT;
-       }
-
-       return 0;
-}
-
-static struct sleep_save eint_save[] = {
-       SAVE_ITEM(S5P_EINT_CON(0)),
-       SAVE_ITEM(S5P_EINT_CON(1)),
-       SAVE_ITEM(S5P_EINT_CON(2)),
-       SAVE_ITEM(S5P_EINT_CON(3)),
-
-       SAVE_ITEM(S5P_EINT_FLTCON(0)),
-       SAVE_ITEM(S5P_EINT_FLTCON(1)),
-       SAVE_ITEM(S5P_EINT_FLTCON(2)),
-       SAVE_ITEM(S5P_EINT_FLTCON(3)),
-       SAVE_ITEM(S5P_EINT_FLTCON(4)),
-       SAVE_ITEM(S5P_EINT_FLTCON(5)),
-       SAVE_ITEM(S5P_EINT_FLTCON(6)),
-       SAVE_ITEM(S5P_EINT_FLTCON(7)),
-
-       SAVE_ITEM(S5P_EINT_MASK(0)),
-       SAVE_ITEM(S5P_EINT_MASK(1)),
-       SAVE_ITEM(S5P_EINT_MASK(2)),
-       SAVE_ITEM(S5P_EINT_MASK(3)),
-};
-
-int s3c24xx_irq_suspend(void)
-{
-       s3c_pm_do_save(eint_save, ARRAY_SIZE(eint_save));
-
-       return 0;
-}
-
-void s3c24xx_irq_resume(void)
-{
-       s3c_pm_do_restore(eint_save, ARRAY_SIZE(eint_save));
-}
-
diff --git a/arch/arm/plat-samsung/s5p-irq.c b/arch/arm/plat-samsung/s5p-irq.c
deleted file mode 100644 (file)
index ddfaca9..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2009 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com/
- *
- * S5P - Interrupt handling
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#include <linux/kernel.h>
-#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/io.h>
-#include <linux/irqchip/arm-vic.h>
-
-#include <mach/irqs.h>
-#include <mach/map.h>
-#include <plat/cpu.h>
-
-void __init s5p_init_irq(u32 *vic, u32 num_vic)
-{
-#ifdef CONFIG_ARM_VIC
-       int irq;
-
-       /* initialize the VICs */
-       for (irq = 0; irq < num_vic; irq++)
-               vic_init(VA_VIC(irq), VIC_BASE(irq), vic[irq], 0);
-#endif
-}
diff --git a/arch/arm/plat-samsung/s5p-pm.c b/arch/arm/plat-samsung/s5p-pm.c
deleted file mode 100644 (file)
index 0747468..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2010 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com
- *
- * S5P Power Manager (Suspend-To-RAM) support
- *
- * Based on arch/arm/plat-s3c24xx/pm.c
- * Copyright (c) 2004,2006 Simtec Electronics
- *     Ben Dooks <ben@simtec.co.uk>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#include <linux/suspend.h>
-#include <plat/pm.h>
-
-#define PFX "s5p pm: "
-
-/* s3c_pm_configure_extint
- *
- * configure all external interrupt pins
-*/
-
-void s3c_pm_configure_extint(void)
-{
-       /* nothing here yet */
-}
-
-void s3c_pm_restore_core(void)
-{
-       /* nothing here yet */
-}
-
-void s3c_pm_save_core(void)
-{
-       /* nothing here yet */
-}
-
diff --git a/arch/arm/plat-samsung/s5p-sleep.S b/arch/arm/plat-samsung/s5p-sleep.S
deleted file mode 100644 (file)
index 25c68ce..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd.
- *             http://www.samsung.com
- *
- * Common S5P Sleep Code
- * Based on S3C64XX sleep code by:
- *     Ben Dooks, (c) 2008 Simtec Electronics
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-*/
-
-#include <linux/linkage.h>
-
-       .data
-       .align
-
-       /*
-        * sleep magic, to allow the bootloader to check for an valid
-        * image to resume to. Must be the first word before the
-        * s3c_cpu_resume entry.
-        */
-
-       .word   0x2bedf00d
-
-       /*
-        * s3c_cpu_resume
-        *
-        * resume code entry for bootloader to call
-        */
-
-ENTRY(s3c_cpu_resume)
-       b       cpu_resume
-ENDPROC(s3c_cpu_resume)
index 69e81773164e82cf0ad23d484a4db679d37ab01b..9f256a4ba7755813d1db94571285fa4f6518230b 100644 (file)
@@ -16,3 +16,4 @@ obj-$(CONFIG_S3C2410_COMMON_DCLK)+= clk-s3c2410-dclk.o
 obj-$(CONFIG_S3C2412_COMMON_CLK)+= clk-s3c2412.o
 obj-$(CONFIG_S3C2443_COMMON_CLK)+= clk-s3c2443.o
 obj-$(CONFIG_ARCH_S3C64XX)     += clk-s3c64xx.o
+obj-$(CONFIG_ARCH_S5PV210)     += clk-s5pv210.o clk-s5pv210-audss.o
diff --git a/drivers/clk/samsung/clk-s5pv210-audss.c b/drivers/clk/samsung/clk-s5pv210-audss.c
new file mode 100644 (file)
index 0000000..a8053b4
--- /dev/null
@@ -0,0 +1,241 @@
+/*
+ * Copyright (c) 2014 Tomasz Figa <t.figa@samsung.com>
+ *
+ * Based on Exynos Audio Subsystem Clock Controller driver:
+ *
+ * Copyright (c) 2013 Samsung Electronics Co., Ltd.
+ * Author: Padmavathi Venna <padma.v@samsung.com>
+ *
+ * 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.
+ *
+ * Driver for Audio Subsystem Clock Controller of S5PV210-compatible SoCs.
+*/
+
+#include <linux/clkdev.h>
+#include <linux/io.h>
+#include <linux/clk-provider.h>
+#include <linux/of_address.h>
+#include <linux/syscore_ops.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+
+#include <dt-bindings/clock/s5pv210-audss.h>
+
+static DEFINE_SPINLOCK(lock);
+static struct clk **clk_table;
+static void __iomem *reg_base;
+static struct clk_onecell_data clk_data;
+
+#define ASS_CLK_SRC 0x0
+#define ASS_CLK_DIV 0x4
+#define ASS_CLK_GATE 0x8
+
+#ifdef CONFIG_PM_SLEEP
+static unsigned long reg_save[][2] = {
+       {ASS_CLK_SRC,  0},
+       {ASS_CLK_DIV,  0},
+       {ASS_CLK_GATE, 0},
+};
+
+static int s5pv210_audss_clk_suspend(void)
+{
+       int i;
+
+       for (i = 0; i < ARRAY_SIZE(reg_save); i++)
+               reg_save[i][1] = readl(reg_base + reg_save[i][0]);
+
+       return 0;
+}
+
+static void s5pv210_audss_clk_resume(void)
+{
+       int i;
+
+       for (i = 0; i < ARRAY_SIZE(reg_save); i++)
+               writel(reg_save[i][1], reg_base + reg_save[i][0]);
+}
+
+static struct syscore_ops s5pv210_audss_clk_syscore_ops = {
+       .suspend        = s5pv210_audss_clk_suspend,
+       .resume         = s5pv210_audss_clk_resume,
+};
+#endif /* CONFIG_PM_SLEEP */
+
+/* register s5pv210_audss clocks */
+static int s5pv210_audss_clk_probe(struct platform_device *pdev)
+{
+       int i, ret = 0;
+       struct resource *res;
+       const char *mout_audss_p[2];
+       const char *mout_i2s_p[3];
+       const char *hclk_p;
+       struct clk *hclk, *pll_ref, *pll_in, *cdclk, *sclk_audio;
+
+       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       reg_base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(reg_base)) {
+               dev_err(&pdev->dev, "failed to map audss registers\n");
+               return PTR_ERR(reg_base);
+       }
+
+       clk_table = devm_kzalloc(&pdev->dev,
+                               sizeof(struct clk *) * AUDSS_MAX_CLKS,
+                               GFP_KERNEL);
+       if (!clk_table)
+               return -ENOMEM;
+
+       clk_data.clks = clk_table;
+       clk_data.clk_num = AUDSS_MAX_CLKS;
+
+       hclk = devm_clk_get(&pdev->dev, "hclk");
+       if (IS_ERR(hclk)) {
+               dev_err(&pdev->dev, "failed to get hclk clock\n");
+               return PTR_ERR(hclk);
+       }
+
+       pll_in = devm_clk_get(&pdev->dev, "fout_epll");
+       if (IS_ERR(pll_in)) {
+               dev_err(&pdev->dev, "failed to get fout_epll clock\n");
+               return PTR_ERR(pll_in);
+       }
+
+       sclk_audio = devm_clk_get(&pdev->dev, "sclk_audio0");
+       if (IS_ERR(sclk_audio)) {
+               dev_err(&pdev->dev, "failed to get sclk_audio0 clock\n");
+               return PTR_ERR(sclk_audio);
+       }
+
+       /* iiscdclk0 is an optional external I2S codec clock */
+       cdclk = devm_clk_get(&pdev->dev, "iiscdclk0");
+       pll_ref = devm_clk_get(&pdev->dev, "xxti");
+
+       if (!IS_ERR(pll_ref))
+               mout_audss_p[0] = __clk_get_name(pll_ref);
+       else
+               mout_audss_p[0] = "xxti";
+       mout_audss_p[1] = __clk_get_name(pll_in);
+       clk_table[CLK_MOUT_AUDSS] = clk_register_mux(NULL, "mout_audss",
+                               mout_audss_p, ARRAY_SIZE(mout_audss_p),
+                               CLK_SET_RATE_NO_REPARENT,
+                               reg_base + ASS_CLK_SRC, 0, 1, 0, &lock);
+
+       mout_i2s_p[0] = "mout_audss";
+       if (!IS_ERR(cdclk))
+               mout_i2s_p[1] = __clk_get_name(cdclk);
+       else
+               mout_i2s_p[1] = "iiscdclk0";
+       mout_i2s_p[2] = __clk_get_name(sclk_audio);
+       clk_table[CLK_MOUT_I2S_A] = clk_register_mux(NULL, "mout_i2s_audss",
+                               mout_i2s_p, ARRAY_SIZE(mout_i2s_p),
+                               CLK_SET_RATE_NO_REPARENT,
+                               reg_base + ASS_CLK_SRC, 2, 2, 0, &lock);
+
+       clk_table[CLK_DOUT_AUD_BUS] = clk_register_divider(NULL,
+                               "dout_aud_bus", "mout_audss", 0,
+                               reg_base + ASS_CLK_DIV, 0, 4, 0, &lock);
+       clk_table[CLK_DOUT_I2S_A] = clk_register_divider(NULL, "dout_i2s_audss",
+                               "mout_i2s_audss", 0, reg_base + ASS_CLK_DIV,
+                               4, 4, 0, &lock);
+
+       clk_table[CLK_I2S] = clk_register_gate(NULL, "i2s_audss",
+                               "dout_i2s_audss", CLK_SET_RATE_PARENT,
+                               reg_base + ASS_CLK_GATE, 6, 0, &lock);
+
+       hclk_p = __clk_get_name(hclk);
+
+       clk_table[CLK_HCLK_I2S] = clk_register_gate(NULL, "hclk_i2s_audss",
+                               hclk_p, CLK_IGNORE_UNUSED,
+                               reg_base + ASS_CLK_GATE, 5, 0, &lock);
+       clk_table[CLK_HCLK_UART] = clk_register_gate(NULL, "hclk_uart_audss",
+                               hclk_p, CLK_IGNORE_UNUSED,
+                               reg_base + ASS_CLK_GATE, 4, 0, &lock);
+       clk_table[CLK_HCLK_HWA] = clk_register_gate(NULL, "hclk_hwa_audss",
+                               hclk_p, CLK_IGNORE_UNUSED,
+                               reg_base + ASS_CLK_GATE, 3, 0, &lock);
+       clk_table[CLK_HCLK_DMA] = clk_register_gate(NULL, "hclk_dma_audss",
+                               hclk_p, CLK_IGNORE_UNUSED,
+                               reg_base + ASS_CLK_GATE, 2, 0, &lock);
+       clk_table[CLK_HCLK_BUF] = clk_register_gate(NULL, "hclk_buf_audss",
+                               hclk_p, CLK_IGNORE_UNUSED,
+                               reg_base + ASS_CLK_GATE, 1, 0, &lock);
+       clk_table[CLK_HCLK_RP] = clk_register_gate(NULL, "hclk_rp_audss",
+                               hclk_p, CLK_IGNORE_UNUSED,
+                               reg_base + ASS_CLK_GATE, 0, 0, &lock);
+
+       for (i = 0; i < clk_data.clk_num; i++) {
+               if (IS_ERR(clk_table[i])) {
+                       dev_err(&pdev->dev, "failed to register clock %d\n", i);
+                       ret = PTR_ERR(clk_table[i]);
+                       goto unregister;
+               }
+       }
+
+       ret = of_clk_add_provider(pdev->dev.of_node, of_clk_src_onecell_get,
+                                       &clk_data);
+       if (ret) {
+               dev_err(&pdev->dev, "failed to add clock provider\n");
+               goto unregister;
+       }
+
+#ifdef CONFIG_PM_SLEEP
+       register_syscore_ops(&s5pv210_audss_clk_syscore_ops);
+#endif
+
+       return 0;
+
+unregister:
+       for (i = 0; i < clk_data.clk_num; i++) {
+               if (!IS_ERR(clk_table[i]))
+                       clk_unregister(clk_table[i]);
+       }
+
+       return ret;
+}
+
+static int s5pv210_audss_clk_remove(struct platform_device *pdev)
+{
+       int i;
+
+       of_clk_del_provider(pdev->dev.of_node);
+
+       for (i = 0; i < clk_data.clk_num; i++) {
+               if (!IS_ERR(clk_table[i]))
+                       clk_unregister(clk_table[i]);
+       }
+
+       return 0;
+}
+
+static const struct of_device_id s5pv210_audss_clk_of_match[] = {
+       { .compatible = "samsung,s5pv210-audss-clock", },
+       {},
+};
+
+static struct platform_driver s5pv210_audss_clk_driver = {
+       .driver = {
+               .name = "s5pv210-audss-clk",
+               .owner = THIS_MODULE,
+               .of_match_table = s5pv210_audss_clk_of_match,
+       },
+       .probe = s5pv210_audss_clk_probe,
+       .remove = s5pv210_audss_clk_remove,
+};
+
+static int __init s5pv210_audss_clk_init(void)
+{
+       return platform_driver_register(&s5pv210_audss_clk_driver);
+}
+core_initcall(s5pv210_audss_clk_init);
+
+static void __exit s5pv210_audss_clk_exit(void)
+{
+       platform_driver_unregister(&s5pv210_audss_clk_driver);
+}
+module_exit(s5pv210_audss_clk_exit);
+
+MODULE_AUTHOR("Tomasz Figa <t.figa@samsung.com>");
+MODULE_DESCRIPTION("S5PV210 Audio Subsystem Clock Controller");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:s5pv210-audss-clk");
diff --git a/drivers/clk/samsung/clk-s5pv210.c b/drivers/clk/samsung/clk-s5pv210.c
new file mode 100644 (file)
index 0000000..d270a20
--- /dev/null
@@ -0,0 +1,856 @@
+/*
+ * Copyright (c) 2013 Samsung Electronics Co., Ltd.
+ * Author: Mateusz Krawczuk <m.krawczuk@partner.samsung.com>
+ *
+ * Based on clock drivers for S3C64xx and Exynos4 SoCs.
+ *
+ * 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.
+ *
+ * Common Clock Framework support for all S5PC110/S5PV210 SoCs.
+ */
+
+#include <linux/clk.h>
+#include <linux/clkdev.h>
+#include <linux/clk-provider.h>
+#include <linux/of.h>
+#include <linux/of_address.h>
+#include <linux/syscore_ops.h>
+
+#include "clk.h"
+#include "clk-pll.h"
+
+#include <dt-bindings/clock/s5pv210.h>
+
+/* S5PC110/S5PV210 clock controller register offsets */
+#define APLL_LOCK              0x0000
+#define MPLL_LOCK              0x0008
+#define EPLL_LOCK              0x0010
+#define VPLL_LOCK              0x0020
+#define APLL_CON0              0x0100
+#define APLL_CON1              0x0104
+#define MPLL_CON               0x0108
+#define EPLL_CON0              0x0110
+#define EPLL_CON1              0x0114
+#define VPLL_CON               0x0120
+#define CLK_SRC0               0x0200
+#define CLK_SRC1               0x0204
+#define CLK_SRC2               0x0208
+#define CLK_SRC3               0x020c
+#define CLK_SRC4               0x0210
+#define CLK_SRC5               0x0214
+#define CLK_SRC6               0x0218
+#define CLK_SRC_MASK0          0x0280
+#define CLK_SRC_MASK1          0x0284
+#define CLK_DIV0               0x0300
+#define CLK_DIV1               0x0304
+#define CLK_DIV2               0x0308
+#define CLK_DIV3               0x030c
+#define CLK_DIV4               0x0310
+#define CLK_DIV5               0x0314
+#define CLK_DIV6               0x0318
+#define CLK_DIV7               0x031c
+#define CLK_GATE_MAIN0         0x0400
+#define CLK_GATE_MAIN1         0x0404
+#define CLK_GATE_MAIN2         0x0408
+#define CLK_GATE_PERI0         0x0420
+#define CLK_GATE_PERI1         0x0424
+#define CLK_GATE_SCLK0         0x0440
+#define CLK_GATE_SCLK1         0x0444
+#define CLK_GATE_IP0           0x0460
+#define CLK_GATE_IP1           0x0464
+#define CLK_GATE_IP2           0x0468
+#define CLK_GATE_IP3           0x046c
+#define CLK_GATE_IP4           0x0470
+#define CLK_GATE_BLOCK         0x0480
+#define CLK_GATE_IP5           0x0484
+#define CLK_OUT                        0x0500
+#define MISC                   0xe000
+#define OM_STAT                        0xe100
+
+/* IDs of PLLs available on S5PV210/S5P6442 SoCs */
+enum {
+       apll,
+       mpll,
+       epll,
+       vpll,
+};
+
+/* IDs of external clocks (used for legacy boards) */
+enum {
+       xxti,
+       xusbxti,
+};
+
+static void __iomem *reg_base;
+
+#ifdef CONFIG_PM_SLEEP
+static struct samsung_clk_reg_dump *s5pv210_clk_dump;
+
+/* List of registers that need to be preserved across suspend/resume. */
+static unsigned long s5pv210_clk_regs[] __initdata = {
+       CLK_SRC0,
+       CLK_SRC1,
+       CLK_SRC2,
+       CLK_SRC3,
+       CLK_SRC4,
+       CLK_SRC5,
+       CLK_SRC6,
+       CLK_SRC_MASK0,
+       CLK_SRC_MASK1,
+       CLK_DIV0,
+       CLK_DIV1,
+       CLK_DIV2,
+       CLK_DIV3,
+       CLK_DIV4,
+       CLK_DIV5,
+       CLK_DIV6,
+       CLK_DIV7,
+       CLK_GATE_MAIN0,
+       CLK_GATE_MAIN1,
+       CLK_GATE_MAIN2,
+       CLK_GATE_PERI0,
+       CLK_GATE_PERI1,
+       CLK_GATE_SCLK0,
+       CLK_GATE_SCLK1,
+       CLK_GATE_IP0,
+       CLK_GATE_IP1,
+       CLK_GATE_IP2,
+       CLK_GATE_IP3,
+       CLK_GATE_IP4,
+       CLK_GATE_IP5,
+       CLK_GATE_BLOCK,
+       APLL_LOCK,
+       MPLL_LOCK,
+       EPLL_LOCK,
+       VPLL_LOCK,
+       APLL_CON0,
+       APLL_CON1,
+       MPLL_CON,
+       EPLL_CON0,
+       EPLL_CON1,
+       VPLL_CON,
+       CLK_OUT,
+};
+
+static int s5pv210_clk_suspend(void)
+{
+       samsung_clk_save(reg_base, s5pv210_clk_dump,
+                               ARRAY_SIZE(s5pv210_clk_regs));
+       return 0;
+}
+
+static void s5pv210_clk_resume(void)
+{
+       samsung_clk_restore(reg_base, s5pv210_clk_dump,
+                               ARRAY_SIZE(s5pv210_clk_regs));
+}
+
+static struct syscore_ops s5pv210_clk_syscore_ops = {
+       .suspend = s5pv210_clk_suspend,
+       .resume = s5pv210_clk_resume,
+};
+
+static void s5pv210_clk_sleep_init(void)
+{
+       s5pv210_clk_dump =
+               samsung_clk_alloc_reg_dump(s5pv210_clk_regs,
+                                          ARRAY_SIZE(s5pv210_clk_regs));
+       if (!s5pv210_clk_dump) {
+               pr_warn("%s: Failed to allocate sleep save data\n", __func__);
+               return;
+       }
+
+       register_syscore_ops(&s5pv210_clk_syscore_ops);
+}
+#else
+static inline void s5pv210_clk_sleep_init(void) { }
+#endif
+
+/* Mux parent lists. */
+static const char *fin_pll_p[] __initconst = {
+       "xxti",
+       "xusbxti"
+};
+
+static const char *mout_apll_p[] __initconst = {
+       "fin_pll",
+       "fout_apll"
+};
+
+static const char *mout_mpll_p[] __initconst = {
+       "fin_pll",
+       "fout_mpll"
+};
+
+static const char *mout_epll_p[] __initconst = {
+       "fin_pll",
+       "fout_epll"
+};
+
+static const char *mout_vpllsrc_p[] __initconst = {
+       "fin_pll",
+       "sclk_hdmi27m"
+};
+
+static const char *mout_vpll_p[] __initconst = {
+       "mout_vpllsrc",
+       "fout_vpll"
+};
+
+static const char *mout_group1_p[] __initconst = {
+       "dout_a2m",
+       "mout_mpll",
+       "mout_epll",
+       "mout_vpll"
+};
+
+static const char *mout_group2_p[] __initconst = {
+       "xxti",
+       "xusbxti",
+       "sclk_hdmi27m",
+       "sclk_usbphy0",
+       "sclk_usbphy1",
+       "sclk_hdmiphy",
+       "mout_mpll",
+       "mout_epll",
+       "mout_vpll",
+};
+
+static const char *mout_audio0_p[] __initconst = {
+       "xxti",
+       "pcmcdclk0",
+       "sclk_hdmi27m",
+       "sclk_usbphy0",
+       "sclk_usbphy1",
+       "sclk_hdmiphy",
+       "mout_mpll",
+       "mout_epll",
+       "mout_vpll",
+};
+
+static const char *mout_audio1_p[] __initconst = {
+       "i2scdclk1",
+       "pcmcdclk1",
+       "sclk_hdmi27m",
+       "sclk_usbphy0",
+       "sclk_usbphy1",
+       "sclk_hdmiphy",
+       "mout_mpll",
+       "mout_epll",
+       "mout_vpll",
+};
+
+static const char *mout_audio2_p[] __initconst = {
+       "i2scdclk2",
+       "pcmcdclk2",
+       "sclk_hdmi27m",
+       "sclk_usbphy0",
+       "sclk_usbphy1",
+       "sclk_hdmiphy",
+       "mout_mpll",
+       "mout_epll",
+       "mout_vpll",
+};
+
+static const char *mout_spdif_p[] __initconst = {
+       "dout_audio0",
+       "dout_audio1",
+       "dout_audio3",
+};
+
+static const char *mout_group3_p[] __initconst = {
+       "mout_apll",
+       "mout_mpll"
+};
+
+static const char *mout_group4_p[] __initconst = {
+       "mout_mpll",
+       "dout_a2m"
+};
+
+static const char *mout_flash_p[] __initconst = {
+       "dout_hclkd",
+       "dout_hclkp"
+};
+
+static const char *mout_dac_p[] __initconst = {
+       "mout_vpll",
+       "sclk_hdmiphy"
+};
+
+static const char *mout_hdmi_p[] __initconst = {
+       "sclk_hdmiphy",
+       "dout_tblk"
+};
+
+static const char *mout_mixer_p[] __initconst = {
+       "mout_dac",
+       "mout_hdmi"
+};
+
+static const char *mout_vpll_6442_p[] __initconst = {
+       "fin_pll",
+       "fout_vpll"
+};
+
+static const char *mout_mixer_6442_p[] __initconst = {
+       "mout_vpll",
+       "dout_mixer"
+};
+
+static const char *mout_d0sync_6442_p[] __initconst = {
+       "mout_dsys",
+       "div_apll"
+};
+
+static const char *mout_d1sync_6442_p[] __initconst = {
+       "mout_psys",
+       "div_apll"
+};
+
+static const char *mout_group2_6442_p[] __initconst = {
+       "fin_pll",
+       "none",
+       "none",
+       "sclk_usbphy0",
+       "none",
+       "none",
+       "mout_mpll",
+       "mout_epll",
+       "mout_vpll",
+};
+
+static const char *mout_audio0_6442_p[] __initconst = {
+       "fin_pll",
+       "pcmcdclk0",
+       "none",
+       "sclk_usbphy0",
+       "none",
+       "none",
+       "mout_mpll",
+       "mout_epll",
+       "mout_vpll",
+};
+
+static const char *mout_audio1_6442_p[] __initconst = {
+       "i2scdclk1",
+       "pcmcdclk1",
+       "none",
+       "sclk_usbphy0",
+       "none",
+       "none",
+       "mout_mpll",
+       "mout_epll",
+       "mout_vpll",
+       "fin_pll",
+};
+
+static const char *mout_clksel_p[] __initconst = {
+       "fout_apll_clkout",
+       "fout_mpll_clkout",
+       "fout_epll",
+       "fout_vpll",
+       "sclk_usbphy0",
+       "sclk_usbphy1",
+       "sclk_hdmiphy",
+       "rtc",
+       "rtc_tick",
+       "dout_hclkm",
+       "dout_pclkm",
+       "dout_hclkd",
+       "dout_pclkd",
+       "dout_hclkp",
+       "dout_pclkp",
+       "dout_apll_clkout",
+       "dout_hpm",
+       "xxti",
+       "xusbxti",
+       "div_dclk"
+};
+
+static const char *mout_clksel_6442_p[] __initconst = {
+       "fout_apll_clkout",
+       "fout_mpll_clkout",
+       "fout_epll",
+       "fout_vpll",
+       "sclk_usbphy0",
+       "none",
+       "none",
+       "rtc",
+       "rtc_tick",
+       "none",
+       "none",
+       "dout_hclkd",
+       "dout_pclkd",
+       "dout_hclkp",
+       "dout_pclkp",
+       "dout_apll_clkout",
+       "none",
+       "fin_pll",
+       "none",
+       "div_dclk"
+};
+
+static const char *mout_clkout_p[] __initconst = {
+       "dout_clkout",
+       "none",
+       "xxti",
+       "xusbxti"
+};
+
+/* Common fixed factor clocks. */
+static struct samsung_fixed_factor_clock ffactor_clks[] __initdata = {
+       FFACTOR(FOUT_APLL_CLKOUT, "fout_apll_clkout", "fout_apll", 1, 4, 0),
+       FFACTOR(FOUT_MPLL_CLKOUT, "fout_mpll_clkout", "fout_mpll", 1, 2, 0),
+       FFACTOR(DOUT_APLL_CLKOUT, "dout_apll_clkout", "dout_apll", 1, 4, 0),
+};
+
+/* PLL input mux (fin_pll), which needs to be registered before PLLs. */
+static struct samsung_mux_clock early_mux_clks[] __initdata = {
+       MUX_F(FIN_PLL, "fin_pll", fin_pll_p, OM_STAT, 0, 1,
+                                       CLK_MUX_READ_ONLY, 0),
+};
+
+/* Common clock muxes. */
+static struct samsung_mux_clock mux_clks[] __initdata = {
+       MUX(MOUT_FLASH, "mout_flash", mout_flash_p, CLK_SRC0, 28, 1),
+       MUX(MOUT_PSYS, "mout_psys", mout_group4_p, CLK_SRC0, 24, 1),
+       MUX(MOUT_DSYS, "mout_dsys", mout_group4_p, CLK_SRC0, 20, 1),
+       MUX(MOUT_MSYS, "mout_msys", mout_group3_p, CLK_SRC0, 16, 1),
+       MUX(MOUT_EPLL, "mout_epll", mout_epll_p, CLK_SRC0, 8, 1),
+       MUX(MOUT_MPLL, "mout_mpll", mout_mpll_p, CLK_SRC0, 4, 1),
+       MUX(MOUT_APLL, "mout_apll", mout_apll_p, CLK_SRC0, 0, 1),
+
+       MUX(MOUT_CLKOUT, "mout_clkout", mout_clkout_p, MISC, 8, 2),
+};
+
+/* S5PV210-specific clock muxes. */
+static struct samsung_mux_clock s5pv210_mux_clks[] __initdata = {
+       MUX(MOUT_VPLL, "mout_vpll", mout_vpll_p, CLK_SRC0, 12, 1),
+
+       MUX(MOUT_VPLLSRC, "mout_vpllsrc", mout_vpllsrc_p, CLK_SRC1, 28, 1),
+       MUX(MOUT_CSIS, "mout_csis", mout_group2_p, CLK_SRC1, 24, 4),
+       MUX(MOUT_FIMD, "mout_fimd", mout_group2_p, CLK_SRC1, 20, 4),
+       MUX(MOUT_CAM1, "mout_cam1", mout_group2_p, CLK_SRC1, 16, 4),
+       MUX(MOUT_CAM0, "mout_cam0", mout_group2_p, CLK_SRC1, 12, 4),
+       MUX(MOUT_DAC, "mout_dac", mout_dac_p, CLK_SRC1, 8, 1),
+       MUX(MOUT_MIXER, "mout_mixer", mout_mixer_p, CLK_SRC1, 4, 1),
+       MUX(MOUT_HDMI, "mout_hdmi", mout_hdmi_p, CLK_SRC1, 0, 1),
+
+       MUX(MOUT_G2D, "mout_g2d", mout_group1_p, CLK_SRC2, 8, 2),
+       MUX(MOUT_MFC, "mout_mfc", mout_group1_p, CLK_SRC2, 4, 2),
+       MUX(MOUT_G3D, "mout_g3d", mout_group1_p, CLK_SRC2, 0, 2),
+
+       MUX(MOUT_FIMC2, "mout_fimc2", mout_group2_p, CLK_SRC3, 20, 4),
+       MUX(MOUT_FIMC1, "mout_fimc1", mout_group2_p, CLK_SRC3, 16, 4),
+       MUX(MOUT_FIMC0, "mout_fimc0", mout_group2_p, CLK_SRC3, 12, 4),
+
+       MUX(MOUT_UART3, "mout_uart3", mout_group2_p, CLK_SRC4, 28, 4),
+       MUX(MOUT_UART2, "mout_uart2", mout_group2_p, CLK_SRC4, 24, 4),
+       MUX(MOUT_UART1, "mout_uart1", mout_group2_p, CLK_SRC4, 20, 4),
+       MUX(MOUT_UART0, "mout_uart0", mout_group2_p, CLK_SRC4, 16, 4),
+       MUX(MOUT_MMC3, "mout_mmc3", mout_group2_p, CLK_SRC4, 12, 4),
+       MUX(MOUT_MMC2, "mout_mmc2", mout_group2_p, CLK_SRC4, 8, 4),
+       MUX(MOUT_MMC1, "mout_mmc1", mout_group2_p, CLK_SRC4, 4, 4),
+       MUX(MOUT_MMC0, "mout_mmc0", mout_group2_p, CLK_SRC4, 0, 4),
+
+       MUX(MOUT_PWM, "mout_pwm", mout_group2_p, CLK_SRC5, 12, 4),
+       MUX(MOUT_SPI1, "mout_spi1", mout_group2_p, CLK_SRC5, 4, 4),
+       MUX(MOUT_SPI0, "mout_spi0", mout_group2_p, CLK_SRC5, 0, 4),
+
+       MUX(MOUT_DMC0, "mout_dmc0", mout_group1_p, CLK_SRC6, 24, 2),
+       MUX(MOUT_PWI, "mout_pwi", mout_group2_p, CLK_SRC6, 20, 4),
+       MUX(MOUT_HPM, "mout_hpm", mout_group3_p, CLK_SRC6, 16, 1),
+       MUX(MOUT_SPDIF, "mout_spdif", mout_spdif_p, CLK_SRC6, 12, 2),
+       MUX(MOUT_AUDIO2, "mout_audio2", mout_audio2_p, CLK_SRC6, 8, 4),
+       MUX(MOUT_AUDIO1, "mout_audio1", mout_audio1_p, CLK_SRC6, 4, 4),
+       MUX(MOUT_AUDIO0, "mout_audio0", mout_audio0_p, CLK_SRC6, 0, 4),
+
+       MUX(MOUT_CLKSEL, "mout_clksel", mout_clksel_p, CLK_OUT, 12, 5),
+};
+
+/* S5P6442-specific clock muxes. */
+static struct samsung_mux_clock s5p6442_mux_clks[] __initdata = {
+       MUX(MOUT_VPLL, "mout_vpll", mout_vpll_6442_p, CLK_SRC0, 12, 1),
+
+       MUX(MOUT_FIMD, "mout_fimd", mout_group2_6442_p, CLK_SRC1, 20, 4),
+       MUX(MOUT_CAM1, "mout_cam1", mout_group2_6442_p, CLK_SRC1, 16, 4),
+       MUX(MOUT_CAM0, "mout_cam0", mout_group2_6442_p, CLK_SRC1, 12, 4),
+       MUX(MOUT_MIXER, "mout_mixer", mout_mixer_6442_p, CLK_SRC1, 4, 1),
+
+       MUX(MOUT_D0SYNC, "mout_d0sync", mout_d0sync_6442_p, CLK_SRC2, 28, 1),
+       MUX(MOUT_D1SYNC, "mout_d1sync", mout_d1sync_6442_p, CLK_SRC2, 24, 1),
+
+       MUX(MOUT_FIMC2, "mout_fimc2", mout_group2_6442_p, CLK_SRC3, 20, 4),
+       MUX(MOUT_FIMC1, "mout_fimc1", mout_group2_6442_p, CLK_SRC3, 16, 4),
+       MUX(MOUT_FIMC0, "mout_fimc0", mout_group2_6442_p, CLK_SRC3, 12, 4),
+
+       MUX(MOUT_UART2, "mout_uart2", mout_group2_6442_p, CLK_SRC4, 24, 4),
+       MUX(MOUT_UART1, "mout_uart1", mout_group2_6442_p, CLK_SRC4, 20, 4),
+       MUX(MOUT_UART0, "mout_uart0", mout_group2_6442_p, CLK_SRC4, 16, 4),
+       MUX(MOUT_MMC2, "mout_mmc2", mout_group2_6442_p, CLK_SRC4, 8, 4),
+       MUX(MOUT_MMC1, "mout_mmc1", mout_group2_6442_p, CLK_SRC4, 4, 4),
+       MUX(MOUT_MMC0, "mout_mmc0", mout_group2_6442_p, CLK_SRC4, 0, 4),
+
+       MUX(MOUT_PWM, "mout_pwm", mout_group2_6442_p, CLK_SRC5, 12, 4),
+       MUX(MOUT_SPI0, "mout_spi0", mout_group2_6442_p, CLK_SRC5, 0, 4),
+
+       MUX(MOUT_AUDIO1, "mout_audio1", mout_audio1_6442_p, CLK_SRC6, 4, 4),
+       MUX(MOUT_AUDIO0, "mout_audio0", mout_audio0_6442_p, CLK_SRC6, 0, 4),
+
+       MUX(MOUT_CLKSEL, "mout_clksel", mout_clksel_6442_p, CLK_OUT, 12, 5),
+};
+
+/* S5PV210-specific fixed rate clocks generated inside the SoC. */
+static struct samsung_fixed_rate_clock s5pv210_frate_clks[] __initdata = {
+       FRATE(SCLK_HDMI27M, "sclk_hdmi27m", NULL, CLK_IS_ROOT, 27000000),
+       FRATE(SCLK_HDMIPHY, "sclk_hdmiphy", NULL, CLK_IS_ROOT, 27000000),
+       FRATE(SCLK_USBPHY0, "sclk_usbphy0", NULL, CLK_IS_ROOT, 48000000),
+       FRATE(SCLK_USBPHY1, "sclk_usbphy1", NULL, CLK_IS_ROOT, 48000000),
+};
+
+/* S5P6442-specific fixed rate clocks generated inside the SoC. */
+static struct samsung_fixed_rate_clock s5p6442_frate_clks[] __initdata = {
+       FRATE(SCLK_USBPHY0, "sclk_usbphy0", NULL, CLK_IS_ROOT, 30000000),
+};
+
+/* Common clock dividers. */
+static struct samsung_div_clock div_clks[] __initdata = {
+       DIV(DOUT_PCLKP, "dout_pclkp", "dout_hclkp", CLK_DIV0, 28, 3),
+       DIV(DOUT_PCLKD, "dout_pclkd", "dout_hclkd", CLK_DIV0, 20, 3),
+       DIV(DOUT_A2M, "dout_a2m", "mout_apll", CLK_DIV0, 4, 3),
+       DIV(DOUT_APLL, "dout_apll", "mout_msys", CLK_DIV0, 0, 3),
+
+       DIV(DOUT_FIMD, "dout_fimd", "mout_fimd", CLK_DIV1, 20, 4),
+       DIV(DOUT_CAM1, "dout_cam1", "mout_cam1", CLK_DIV1, 16, 4),
+       DIV(DOUT_CAM0, "dout_cam0", "mout_cam0", CLK_DIV1, 12, 4),
+
+       DIV(DOUT_FIMC2, "dout_fimc2", "mout_fimc2", CLK_DIV3, 20, 4),
+       DIV(DOUT_FIMC1, "dout_fimc1", "mout_fimc1", CLK_DIV3, 16, 4),
+       DIV(DOUT_FIMC0, "dout_fimc0", "mout_fimc0", CLK_DIV3, 12, 4),
+
+       DIV(DOUT_UART2, "dout_uart2", "mout_uart2", CLK_DIV4, 24, 4),
+       DIV(DOUT_UART1, "dout_uart1", "mout_uart1", CLK_DIV4, 20, 4),
+       DIV(DOUT_UART0, "dout_uart0", "mout_uart0", CLK_DIV4, 16, 4),
+       DIV(DOUT_MMC2, "dout_mmc2", "mout_mmc2", CLK_DIV4, 8, 4),
+       DIV(DOUT_MMC1, "dout_mmc1", "mout_mmc1", CLK_DIV4, 4, 4),
+       DIV(DOUT_MMC0, "dout_mmc0", "mout_mmc0", CLK_DIV4, 0, 4),
+
+       DIV(DOUT_PWM, "dout_pwm", "mout_pwm", CLK_DIV5, 12, 4),
+       DIV(DOUT_SPI0, "dout_spi0", "mout_spi0", CLK_DIV5, 0, 4),
+
+       DIV(DOUT_FLASH, "dout_flash", "mout_flash", CLK_DIV6, 12, 3),
+       DIV(DOUT_AUDIO1, "dout_audio1", "mout_audio1", CLK_DIV6, 4, 4),
+       DIV(DOUT_AUDIO0, "dout_audio0", "mout_audio0", CLK_DIV6, 0, 4),
+
+       DIV(DOUT_CLKOUT, "dout_clkout", "mout_clksel", CLK_OUT, 20, 4),
+};
+
+/* S5PV210-specific clock dividers. */
+static struct samsung_div_clock s5pv210_div_clks[] __initdata = {
+       DIV(DOUT_HCLKP, "dout_hclkp", "mout_psys", CLK_DIV0, 24, 4),
+       DIV(DOUT_HCLKD, "dout_hclkd", "mout_dsys", CLK_DIV0, 16, 4),
+       DIV(DOUT_PCLKM, "dout_pclkm", "dout_hclkm", CLK_DIV0, 12, 3),
+       DIV(DOUT_HCLKM, "dout_hclkm", "dout_apll", CLK_DIV0, 8, 3),
+
+       DIV(DOUT_CSIS, "dout_csis", "mout_csis", CLK_DIV1, 28, 4),
+       DIV(DOUT_TBLK, "dout_tblk", "mout_vpll", CLK_DIV1, 0, 4),
+
+       DIV(DOUT_G2D, "dout_g2d", "mout_g2d", CLK_DIV2, 8, 4),
+       DIV(DOUT_MFC, "dout_mfc", "mout_mfc", CLK_DIV2, 4, 4),
+       DIV(DOUT_G3D, "dout_g3d", "mout_g3d", CLK_DIV2, 0, 4),
+
+       DIV(DOUT_UART3, "dout_uart3", "mout_uart3", CLK_DIV4, 28, 4),
+       DIV(DOUT_MMC3, "dout_mmc3", "mout_mmc3", CLK_DIV4, 12, 4),
+
+       DIV(DOUT_SPI1, "dout_spi1", "mout_spi1", CLK_DIV5, 4, 4),
+
+       DIV(DOUT_DMC0, "dout_dmc0", "mout_dmc0", CLK_DIV6, 28, 4),
+       DIV(DOUT_PWI, "dout_pwi", "mout_pwi", CLK_DIV6, 24, 4),
+       DIV(DOUT_HPM, "dout_hpm", "dout_copy", CLK_DIV6, 20, 3),
+       DIV(DOUT_COPY, "dout_copy", "mout_hpm", CLK_DIV6, 16, 3),
+       DIV(DOUT_AUDIO2, "dout_audio2", "mout_audio2", CLK_DIV6, 8, 4),
+
+       DIV(DOUT_DPM, "dout_dpm", "dout_pclkp", CLK_DIV7, 8, 7),
+       DIV(DOUT_DVSEM, "dout_dvsem", "dout_pclkp", CLK_DIV7, 0, 7),
+};
+
+/* S5P6442-specific clock dividers. */
+static struct samsung_div_clock s5p6442_div_clks[] __initdata = {
+       DIV(DOUT_HCLKP, "dout_hclkp", "mout_d1sync", CLK_DIV0, 24, 4),
+       DIV(DOUT_HCLKD, "dout_hclkd", "mout_d0sync", CLK_DIV0, 16, 4),
+
+       DIV(DOUT_MIXER, "dout_mixer", "mout_vpll", CLK_DIV1, 0, 4),
+};
+
+/* Common clock gates. */
+static struct samsung_gate_clock gate_clks[] __initdata = {
+       GATE(CLK_ROTATOR, "rotator", "dout_hclkd", CLK_GATE_IP0, 29, 0, 0),
+       GATE(CLK_FIMC2, "fimc2", "dout_hclkd", CLK_GATE_IP0, 26, 0, 0),
+       GATE(CLK_FIMC1, "fimc1", "dout_hclkd", CLK_GATE_IP0, 25, 0, 0),
+       GATE(CLK_FIMC0, "fimc0", "dout_hclkd", CLK_GATE_IP0, 24, 0, 0),
+       GATE(CLK_PDMA0, "pdma0", "dout_hclkp", CLK_GATE_IP0, 3, 0, 0),
+       GATE(CLK_MDMA, "mdma", "dout_hclkd", CLK_GATE_IP0, 2, 0, 0),
+
+       GATE(CLK_SROMC, "sromc", "dout_hclkp", CLK_GATE_IP1, 26, 0, 0),
+       GATE(CLK_NANDXL, "nandxl", "dout_hclkp", CLK_GATE_IP1, 24, 0, 0),
+       GATE(CLK_USB_OTG, "usb_otg", "dout_hclkp", CLK_GATE_IP1, 16, 0, 0),
+       GATE(CLK_TVENC, "tvenc", "dout_hclkd", CLK_GATE_IP1, 10, 0, 0),
+       GATE(CLK_MIXER, "mixer", "dout_hclkd", CLK_GATE_IP1, 9, 0, 0),
+       GATE(CLK_VP, "vp", "dout_hclkd", CLK_GATE_IP1, 8, 0, 0),
+       GATE(CLK_FIMD, "fimd", "dout_hclkd", CLK_GATE_IP1, 0, 0, 0),
+
+       GATE(CLK_HSMMC2, "hsmmc2", "dout_hclkp", CLK_GATE_IP2, 18, 0, 0),
+       GATE(CLK_HSMMC1, "hsmmc1", "dout_hclkp", CLK_GATE_IP2, 17, 0, 0),
+       GATE(CLK_HSMMC0, "hsmmc0", "dout_hclkp", CLK_GATE_IP2, 16, 0, 0),
+       GATE(CLK_MODEMIF, "modemif", "dout_hclkp", CLK_GATE_IP2, 9, 0, 0),
+       GATE(CLK_SECSS, "secss", "dout_hclkp", CLK_GATE_IP2, 0, 0, 0),
+
+       GATE(CLK_PCM1, "pcm1", "dout_pclkp", CLK_GATE_IP3, 29, 0, 0),
+       GATE(CLK_PCM0, "pcm0", "dout_pclkp", CLK_GATE_IP3, 28, 0, 0),
+       GATE(CLK_TSADC, "tsadc", "dout_pclkp", CLK_GATE_IP3, 24, 0, 0),
+       GATE(CLK_PWM, "pwm", "dout_pclkp", CLK_GATE_IP3, 23, 0, 0),
+       GATE(CLK_WDT, "watchdog", "dout_pclkp", CLK_GATE_IP3, 22, 0, 0),
+       GATE(CLK_KEYIF, "keyif", "dout_pclkp", CLK_GATE_IP3, 21, 0, 0),
+       GATE(CLK_UART2, "uart2", "dout_pclkp", CLK_GATE_IP3, 19, 0, 0),
+       GATE(CLK_UART1, "uart1", "dout_pclkp", CLK_GATE_IP3, 18, 0, 0),
+       GATE(CLK_UART0, "uart0", "dout_pclkp", CLK_GATE_IP3, 17, 0, 0),
+       GATE(CLK_SYSTIMER, "systimer", "dout_pclkp", CLK_GATE_IP3, 16, 0, 0),
+       GATE(CLK_RTC, "rtc", "dout_pclkp", CLK_GATE_IP3, 15, 0, 0),
+       GATE(CLK_SPI0, "spi0", "dout_pclkp", CLK_GATE_IP3, 12, 0, 0),
+       GATE(CLK_I2C2, "i2c2", "dout_pclkp", CLK_GATE_IP3, 9, 0, 0),
+       GATE(CLK_I2C0, "i2c0", "dout_pclkp", CLK_GATE_IP3, 7, 0, 0),
+       GATE(CLK_I2S1, "i2s1", "dout_pclkp", CLK_GATE_IP3, 5, 0, 0),
+       GATE(CLK_I2S0, "i2s0", "dout_pclkp", CLK_GATE_IP3, 4, 0, 0),
+
+       GATE(CLK_SECKEY, "seckey", "dout_pclkp", CLK_GATE_IP4, 3, 0, 0),
+       GATE(CLK_CHIPID, "chipid", "dout_pclkp", CLK_GATE_IP4, 0, 0, 0),
+
+       GATE(SCLK_AUDIO1, "sclk_audio1", "dout_audio1", CLK_SRC_MASK0, 25,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_AUDIO0, "sclk_audio0", "dout_audio0", CLK_SRC_MASK0, 24,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_PWM, "sclk_pwm", "dout_pwm", CLK_SRC_MASK0, 19,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_SPI0, "sclk_spi0", "dout_spi0", CLK_SRC_MASK0, 16,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_UART2, "sclk_uart2", "dout_uart2", CLK_SRC_MASK0, 14,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_UART1, "sclk_uart1", "dout_uart1", CLK_SRC_MASK0, 13,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_UART0, "sclk_uart0", "dout_uart0", CLK_SRC_MASK0, 12,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_MMC2, "sclk_mmc2", "dout_mmc2", CLK_SRC_MASK0, 10,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_MMC1, "sclk_mmc1", "dout_mmc1", CLK_SRC_MASK0, 9,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_MMC0, "sclk_mmc0", "dout_mmc0", CLK_SRC_MASK0, 8,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_FIMD, "sclk_fimd", "dout_fimd", CLK_SRC_MASK0, 5,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_CAM1, "sclk_cam1", "dout_cam1", CLK_SRC_MASK0, 4,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_CAM0, "sclk_cam0", "dout_cam0", CLK_SRC_MASK0, 3,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_MIXER, "sclk_mixer", "mout_mixer", CLK_SRC_MASK0, 1,
+                       CLK_SET_RATE_PARENT, 0),
+
+       GATE(SCLK_FIMC2, "sclk_fimc2", "dout_fimc2", CLK_SRC_MASK1, 4,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_FIMC1, "sclk_fimc1", "dout_fimc1", CLK_SRC_MASK1, 3,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_FIMC0, "sclk_fimc0", "dout_fimc0", CLK_SRC_MASK1, 2,
+                       CLK_SET_RATE_PARENT, 0),
+};
+
+/* S5PV210-specific clock gates. */
+static struct samsung_gate_clock s5pv210_gate_clks[] __initdata = {
+       GATE(CLK_CSIS, "clk_csis", "dout_hclkd", CLK_GATE_IP0, 31, 0, 0),
+       GATE(CLK_MFC, "mfc", "dout_hclkm", CLK_GATE_IP0, 16, 0, 0),
+       GATE(CLK_G2D, "g2d", "dout_hclkd", CLK_GATE_IP0, 12, 0, 0),
+       GATE(CLK_G3D, "g3d", "dout_hclkm", CLK_GATE_IP0, 8, 0, 0),
+       GATE(CLK_IMEM, "imem", "dout_hclkm", CLK_GATE_IP0, 5, 0, 0),
+       GATE(CLK_PDMA1, "pdma1", "dout_hclkp", CLK_GATE_IP0, 4, 0, 0),
+
+       GATE(CLK_NFCON, "nfcon", "dout_hclkp", CLK_GATE_IP1, 28, 0, 0),
+       GATE(CLK_CFCON, "cfcon", "dout_hclkp", CLK_GATE_IP1, 25, 0, 0),
+       GATE(CLK_USB_HOST, "usb_host", "dout_hclkp", CLK_GATE_IP1, 17, 0, 0),
+       GATE(CLK_HDMI, "hdmi", "dout_hclkd", CLK_GATE_IP1, 11, 0, 0),
+       GATE(CLK_DSIM, "dsim", "dout_pclkd", CLK_GATE_IP1, 2, 0, 0),
+
+       GATE(CLK_TZIC3, "tzic3", "dout_hclkm", CLK_GATE_IP2, 31, 0, 0),
+       GATE(CLK_TZIC2, "tzic2", "dout_hclkm", CLK_GATE_IP2, 30, 0, 0),
+       GATE(CLK_TZIC1, "tzic1", "dout_hclkm", CLK_GATE_IP2, 29, 0, 0),
+       GATE(CLK_TZIC0, "tzic0", "dout_hclkm", CLK_GATE_IP2, 28, 0, 0),
+       GATE(CLK_TSI, "tsi", "dout_hclkd", CLK_GATE_IP2, 20, 0, 0),
+       GATE(CLK_HSMMC3, "hsmmc3", "dout_hclkp", CLK_GATE_IP2, 19, 0, 0),
+       GATE(CLK_JTAG, "jtag", "dout_hclkp", CLK_GATE_IP2, 11, 0, 0),
+       GATE(CLK_CORESIGHT, "coresight", "dout_pclkp", CLK_GATE_IP2, 8, 0, 0),
+       GATE(CLK_SDM, "sdm", "dout_pclkm", CLK_GATE_IP2, 1, 0, 0),
+
+       GATE(CLK_PCM2, "pcm2", "dout_pclkp", CLK_GATE_IP3, 30, 0, 0),
+       GATE(CLK_UART3, "uart3", "dout_pclkp", CLK_GATE_IP3, 20, 0, 0),
+       GATE(CLK_SPI1, "spi1", "dout_pclkp", CLK_GATE_IP3, 13, 0, 0),
+       GATE(CLK_I2C_HDMI_PHY, "i2c_hdmi_phy", "dout_pclkd",
+                       CLK_GATE_IP3, 11, 0, 0),
+       GATE(CLK_I2C1, "i2c1", "dout_pclkd", CLK_GATE_IP3, 10, 0, 0),
+       GATE(CLK_I2S2, "i2s2", "dout_pclkp", CLK_GATE_IP3, 6, 0, 0),
+       GATE(CLK_AC97, "ac97", "dout_pclkp", CLK_GATE_IP3, 1, 0, 0),
+       GATE(CLK_SPDIF, "spdif", "dout_pclkp", CLK_GATE_IP3, 0, 0, 0),
+
+       GATE(CLK_TZPC3, "tzpc.3", "dout_pclkd", CLK_GATE_IP4, 8, 0, 0),
+       GATE(CLK_TZPC2, "tzpc.2", "dout_pclkd", CLK_GATE_IP4, 7, 0, 0),
+       GATE(CLK_TZPC1, "tzpc.1", "dout_pclkp", CLK_GATE_IP4, 6, 0, 0),
+       GATE(CLK_TZPC0, "tzpc.0", "dout_pclkm", CLK_GATE_IP4, 5, 0, 0),
+       GATE(CLK_IEM_APC, "iem_apc", "dout_pclkp", CLK_GATE_IP4, 2, 0, 0),
+       GATE(CLK_IEM_IEC, "iem_iec", "dout_pclkp", CLK_GATE_IP4, 1, 0, 0),
+
+       GATE(CLK_JPEG, "jpeg", "dout_hclkd", CLK_GATE_IP5, 29, 0, 0),
+
+       GATE(SCLK_SPDIF, "sclk_spdif", "mout_spdif", CLK_SRC_MASK0, 27,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_AUDIO2, "sclk_audio2", "dout_audio2", CLK_SRC_MASK0, 26,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_SPI1, "sclk_spi1", "dout_spi1", CLK_SRC_MASK0, 17,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_UART3, "sclk_uart3", "dout_uart3", CLK_SRC_MASK0, 15,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_MMC3, "sclk_mmc3", "dout_mmc3", CLK_SRC_MASK0, 11,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_CSIS, "sclk_csis", "dout_csis", CLK_SRC_MASK0, 6,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_DAC, "sclk_dac", "mout_dac", CLK_SRC_MASK0, 2,
+                       CLK_SET_RATE_PARENT, 0),
+       GATE(SCLK_HDMI, "sclk_hdmi", "mout_hdmi", CLK_SRC_MASK0, 0,
+                       CLK_SET_RATE_PARENT, 0),
+};
+
+/* S5P6442-specific clock gates. */
+static struct samsung_gate_clock s5p6442_gate_clks[] __initdata = {
+       GATE(CLK_JPEG, "jpeg", "dout_hclkd", CLK_GATE_IP0, 28, 0, 0),
+       GATE(CLK_MFC, "mfc", "dout_hclkd", CLK_GATE_IP0, 16, 0, 0),
+       GATE(CLK_G2D, "g2d", "dout_hclkd", CLK_GATE_IP0, 12, 0, 0),
+       GATE(CLK_G3D, "g3d", "dout_hclkd", CLK_GATE_IP0, 8, 0, 0),
+       GATE(CLK_IMEM, "imem", "dout_hclkd", CLK_GATE_IP0, 5, 0, 0),
+
+       GATE(CLK_ETB, "etb", "dout_hclkd", CLK_GATE_IP1, 31, 0, 0),
+       GATE(CLK_ETM, "etm", "dout_hclkd", CLK_GATE_IP1, 30, 0, 0),
+
+       GATE(CLK_I2C1, "i2c1", "dout_pclkp", CLK_GATE_IP3, 8, 0, 0),
+
+       GATE(SCLK_DAC, "sclk_dac", "mout_vpll", CLK_SRC_MASK0, 2,
+                       CLK_SET_RATE_PARENT, 0),
+};
+
+/*
+ * Clock aliases for legacy clkdev look-up.
+ * NOTE: Needed only to support legacy board files.
+ */
+static struct samsung_clock_alias s5pv210_aliases[] = {
+       ALIAS(DOUT_APLL, NULL, "armclk"),
+       ALIAS(DOUT_HCLKM, NULL, "hclk_msys"),
+       ALIAS(MOUT_DMC0, NULL, "sclk_dmc0"),
+};
+
+/* S5PV210-specific PLLs. */
+static struct samsung_pll_clock s5pv210_pll_clks[] __initdata = {
+       [apll] = PLL(pll_4508, FOUT_APLL, "fout_apll", "fin_pll",
+                                               APLL_LOCK, APLL_CON0, NULL),
+       [mpll] = PLL(pll_4502, FOUT_MPLL, "fout_mpll", "fin_pll",
+                                               MPLL_LOCK, MPLL_CON, NULL),
+       [epll] = PLL(pll_4600, FOUT_EPLL, "fout_epll", "fin_pll",
+                                               EPLL_LOCK, EPLL_CON0, NULL),
+       [vpll] = PLL(pll_4502, FOUT_VPLL, "fout_vpll", "mout_vpllsrc",
+                                               VPLL_LOCK, VPLL_CON, NULL),
+};
+
+/* S5P6442-specific PLLs. */
+static struct samsung_pll_clock s5p6442_pll_clks[] __initdata = {
+       [apll] = PLL(pll_4502, FOUT_APLL, "fout_apll", "fin_pll",
+                                               APLL_LOCK, APLL_CON0, NULL),
+       [mpll] = PLL(pll_4502, FOUT_MPLL, "fout_mpll", "fin_pll",
+                                               MPLL_LOCK, MPLL_CON, NULL),
+       [epll] = PLL(pll_4500, FOUT_EPLL, "fout_epll", "fin_pll",
+                                               EPLL_LOCK, EPLL_CON0, NULL),
+       [vpll] = PLL(pll_4500, FOUT_VPLL, "fout_vpll", "fin_pll",
+                                               VPLL_LOCK, VPLL_CON, NULL),
+};
+
+static void __init __s5pv210_clk_init(struct device_node *np,
+                                     unsigned long xxti_f,
+                                     unsigned long xusbxti_f,
+                                     bool is_s5p6442)
+{
+       struct samsung_clk_provider *ctx;
+
+       ctx = samsung_clk_init(np, reg_base, NR_CLKS);
+       if (!ctx)
+               panic("%s: unable to allocate context.\n", __func__);
+
+       samsung_clk_register_mux(ctx, early_mux_clks,
+                                       ARRAY_SIZE(early_mux_clks));
+
+       if (is_s5p6442) {
+               samsung_clk_register_fixed_rate(ctx, s5p6442_frate_clks,
+                       ARRAY_SIZE(s5p6442_frate_clks));
+               samsung_clk_register_pll(ctx, s5p6442_pll_clks,
+                       ARRAY_SIZE(s5p6442_pll_clks), reg_base);
+               samsung_clk_register_mux(ctx, s5p6442_mux_clks,
+                               ARRAY_SIZE(s5p6442_mux_clks));
+               samsung_clk_register_div(ctx, s5p6442_div_clks,
+                               ARRAY_SIZE(s5p6442_div_clks));
+               samsung_clk_register_gate(ctx, s5p6442_gate_clks,
+                               ARRAY_SIZE(s5p6442_gate_clks));
+       } else {
+               samsung_clk_register_fixed_rate(ctx, s5pv210_frate_clks,
+                       ARRAY_SIZE(s5pv210_frate_clks));
+               samsung_clk_register_pll(ctx, s5pv210_pll_clks,
+                       ARRAY_SIZE(s5pv210_pll_clks), reg_base);
+               samsung_clk_register_mux(ctx, s5pv210_mux_clks,
+                               ARRAY_SIZE(s5pv210_mux_clks));
+               samsung_clk_register_div(ctx, s5pv210_div_clks,
+                               ARRAY_SIZE(s5pv210_div_clks));
+               samsung_clk_register_gate(ctx, s5pv210_gate_clks,
+                               ARRAY_SIZE(s5pv210_gate_clks));
+       }
+
+       samsung_clk_register_mux(ctx, mux_clks, ARRAY_SIZE(mux_clks));
+       samsung_clk_register_div(ctx, div_clks, ARRAY_SIZE(div_clks));
+       samsung_clk_register_gate(ctx, gate_clks, ARRAY_SIZE(gate_clks));
+
+       samsung_clk_register_fixed_factor(ctx, ffactor_clks,
+                                               ARRAY_SIZE(ffactor_clks));
+
+       samsung_clk_register_alias(ctx, s5pv210_aliases,
+                                               ARRAY_SIZE(s5pv210_aliases));
+
+       s5pv210_clk_sleep_init();
+
+       pr_info("%s clocks: mout_apll = %ld, mout_mpll = %ld\n"
+               "\tmout_epll = %ld, mout_vpll = %ld\n",
+               is_s5p6442 ? "S5P6442" : "S5PV210",
+               _get_rate("mout_apll"), _get_rate("mout_mpll"),
+               _get_rate("mout_epll"), _get_rate("mout_vpll"));
+}
+
+static void __init s5pv210_clk_dt_init(struct device_node *np)
+{
+       reg_base = of_iomap(np, 0);
+       if (!reg_base)
+               panic("%s: failed to map registers\n", __func__);
+
+       __s5pv210_clk_init(np, 0, 0, false);
+}
+CLK_OF_DECLARE(s5pv210_clk, "samsung,s5pv210-clock", s5pv210_clk_dt_init);
+
+static void __init s5p6442_clk_dt_init(struct device_node *np)
+{
+       reg_base = of_iomap(np, 0);
+       if (!reg_base)
+               panic("%s: failed to map registers\n", __func__);
+
+       __s5pv210_clk_init(np, 0, 0, true);
+}
+CLK_OF_DECLARE(s5p6442_clk, "samsung,s5p6442-clock", s5p6442_clk_dt_init);
index cfa0dd8723ec1fd34aa13d664a6485d9313aa8a4..b8e5da8e188b57eecdc13eb569143f94f3a8b4cc 100644 (file)
@@ -26,7 +26,6 @@
 #include <mach/regs-clock.h>
 
 #include <plat/cpu.h>
-#include <plat/clock.h>
 #include <plat/cpu-freq-core.h>
 
 /* Note, 2410A has an extra mode for 1:4:4 ratio, bit 2 of CLKDIV */
@@ -104,7 +103,6 @@ static struct s3c_cpufreq_info s3c2410_cpufreq_info = {
        .calc_iotiming  = s3c2410_iotiming_calc,
        .set_iotiming   = s3c2410_iotiming_set,
        .get_iotiming   = s3c2410_iotiming_get,
-       .resume_clocks  = s3c2410_setup_clocks,
 
        .set_fvco       = s3c2410_set_fvco,
        .set_refresh    = s3c2410_cpufreq_setrefresh,
index 4645b4898996bc38df1dff6a23a4f9d12176fa8c..eb262133fef25e31b261edeaf19725a34746759d 100644 (file)
@@ -28,7 +28,6 @@
 #include <mach/s3c2412.h>
 
 #include <plat/cpu.h>
-#include <plat/clock.h>
 #include <plat/cpu-freq-core.h>
 
 /* our clock resources. */
@@ -188,8 +187,6 @@ static struct s3c_cpufreq_info s3c2412_cpufreq_info = {
        .set_iotiming   = s3c2412_iotiming_set,
        .get_iotiming   = s3c2412_iotiming_get,
 
-       .resume_clocks  = s3c2412_setup_clocks,
-
        .debug_io_show  = s3c_cpufreq_debugfs_call(s3c2412_iotiming_debugfs),
 };
 
index f84ed10755b57b7af8cfaa8acb5c212afac7c156..0129f5c70a610b941e14bc5f8912681b0f7bc3f7 100644 (file)
@@ -29,7 +29,6 @@
 
 #include <plat/cpu.h>
 #include <plat/cpu-freq-core.h>
-#include <plat/clock.h>
 
 static struct clk *xtal;
 static struct clk *fclk;
@@ -262,8 +261,6 @@ static struct s3c_cpufreq_info s3c2440_cpufreq_info = {
        .calc_divs      = s3c2440_cpufreq_calcdivs,
        .calc_freqtable = s3c2440_cpufreq_calctable,
 
-       .resume_clocks  = s3c244x_setup_clocks,
-
        .debug_io_show  = s3c_cpufreq_debugfs_call(s3c2410_iotiming_debugfs),
 };
 
index 227ebf7c1eeab087b6e799a2e6e779d3439cd52f..d00f1cee45094a6c01e004934de6e2928d4e9222 100644 (file)
@@ -27,7 +27,6 @@
 #include <asm/mach/map.h>
 
 #include <plat/cpu.h>
-#include <plat/clock.h>
 #include <plat/cpu-freq-core.h>
 
 #include <mach/regs-clock.h>
index 19a10b89fef7af44a86df0699a7c90490346e5e7..9a68225a757e44edd2554f9672197ee64363a5ad 100644 (file)
 #include <linux/clk.h>
 #include <linux/io.h>
 #include <linux/cpufreq.h>
+#include <linux/of.h>
+#include <linux/of_address.h>
+#include <linux/platform_device.h>
 #include <linux/reboot.h>
 #include <linux/regulator/consumer.h>
 
-#include <mach/map.h>
-#include <mach/regs-clock.h>
+static void __iomem *clk_base;
+static void __iomem *dmc_base[2];
+
+#define S5P_CLKREG(x)          (clk_base + (x))
+
+#define S5P_APLL_LOCK          S5P_CLKREG(0x00)
+#define S5P_APLL_CON           S5P_CLKREG(0x100)
+#define S5P_CLK_SRC0           S5P_CLKREG(0x200)
+#define S5P_CLK_SRC2           S5P_CLKREG(0x208)
+#define S5P_CLK_DIV0           S5P_CLKREG(0x300)
+#define S5P_CLK_DIV2           S5P_CLKREG(0x308)
+#define S5P_CLK_DIV6           S5P_CLKREG(0x318)
+#define S5P_CLKDIV_STAT0       S5P_CLKREG(0x1000)
+#define S5P_CLKDIV_STAT1       S5P_CLKREG(0x1004)
+#define S5P_CLKMUX_STAT0       S5P_CLKREG(0x1100)
+#define S5P_CLKMUX_STAT1       S5P_CLKREG(0x1104)
+
+#define S5P_ARM_MCS_CON                S5P_CLKREG(0x6100)
+
+/* CLKSRC0 */
+#define S5P_CLKSRC0_MUX200_SHIFT       (16)
+#define S5P_CLKSRC0_MUX200_MASK                (0x1 << S5P_CLKSRC0_MUX200_SHIFT)
+#define S5P_CLKSRC0_MUX166_MASK                (0x1<<20)
+#define S5P_CLKSRC0_MUX133_MASK                (0x1<<24)
+
+/* CLKSRC2 */
+#define S5P_CLKSRC2_G3D_SHIFT           (0)
+#define S5P_CLKSRC2_G3D_MASK            (0x3 << S5P_CLKSRC2_G3D_SHIFT)
+#define S5P_CLKSRC2_MFC_SHIFT           (4)
+#define S5P_CLKSRC2_MFC_MASK            (0x3 << S5P_CLKSRC2_MFC_SHIFT)
+
+/* CLKDIV0 */
+#define S5P_CLKDIV0_APLL_SHIFT         (0)
+#define S5P_CLKDIV0_APLL_MASK          (0x7 << S5P_CLKDIV0_APLL_SHIFT)
+#define S5P_CLKDIV0_A2M_SHIFT          (4)
+#define S5P_CLKDIV0_A2M_MASK           (0x7 << S5P_CLKDIV0_A2M_SHIFT)
+#define S5P_CLKDIV0_HCLK200_SHIFT      (8)
+#define S5P_CLKDIV0_HCLK200_MASK       (0x7 << S5P_CLKDIV0_HCLK200_SHIFT)
+#define S5P_CLKDIV0_PCLK100_SHIFT      (12)
+#define S5P_CLKDIV0_PCLK100_MASK       (0x7 << S5P_CLKDIV0_PCLK100_SHIFT)
+#define S5P_CLKDIV0_HCLK166_SHIFT      (16)
+#define S5P_CLKDIV0_HCLK166_MASK       (0xF << S5P_CLKDIV0_HCLK166_SHIFT)
+#define S5P_CLKDIV0_PCLK83_SHIFT       (20)
+#define S5P_CLKDIV0_PCLK83_MASK                (0x7 << S5P_CLKDIV0_PCLK83_SHIFT)
+#define S5P_CLKDIV0_HCLK133_SHIFT      (24)
+#define S5P_CLKDIV0_HCLK133_MASK       (0xF << S5P_CLKDIV0_HCLK133_SHIFT)
+#define S5P_CLKDIV0_PCLK66_SHIFT       (28)
+#define S5P_CLKDIV0_PCLK66_MASK                (0x7 << S5P_CLKDIV0_PCLK66_SHIFT)
+
+/* CLKDIV2 */
+#define S5P_CLKDIV2_G3D_SHIFT           (0)
+#define S5P_CLKDIV2_G3D_MASK            (0xF << S5P_CLKDIV2_G3D_SHIFT)
+#define S5P_CLKDIV2_MFC_SHIFT           (4)
+#define S5P_CLKDIV2_MFC_MASK            (0xF << S5P_CLKDIV2_MFC_SHIFT)
+
+/* CLKDIV6 */
+#define S5P_CLKDIV6_ONEDRAM_SHIFT       (28)
+#define S5P_CLKDIV6_ONEDRAM_MASK        (0xF << S5P_CLKDIV6_ONEDRAM_SHIFT)
 
 static struct clk *dmc0_clk;
 static struct clk *dmc1_clk;
@@ -142,9 +201,9 @@ static void s5pv210_set_refresh(enum s5pv210_dmc_port ch, unsigned long freq)
        void __iomem *reg = NULL;
 
        if (ch == DMC0) {
-               reg = (S5P_VA_DMC0 + 0x30);
+               reg = (dmc_base[0] + 0x30);
        } else if (ch == DMC1) {
-               reg = (S5P_VA_DMC1 + 0x30);
+               reg = (dmc_base[1] + 0x30);
        } else {
                printk(KERN_ERR "Cannot find DMC port\n");
                return;
@@ -472,7 +531,7 @@ static int __init s5pv210_cpu_init(struct cpufreq_policy *policy)
         * check_mem_type : This driver only support LPDDR & LPDDR2.
         * other memory type is not supported.
         */
-       mem_type = check_mem_type(S5P_VA_DMC0);
+       mem_type = check_mem_type(dmc_base[0]);
 
        if ((mem_type != LPDDR) && (mem_type != LPDDR2)) {
                printk(KERN_ERR "CPUFreq doesn't support this memory type\n");
@@ -481,10 +540,10 @@ static int __init s5pv210_cpu_init(struct cpufreq_policy *policy)
        }
 
        /* Find current refresh counter and frequency each DMC */
-       s5pv210_dram_conf[0].refresh = (__raw_readl(S5P_VA_DMC0 + 0x30) * 1000);
+       s5pv210_dram_conf[0].refresh = (__raw_readl(dmc_base[0] + 0x30) * 1000);
        s5pv210_dram_conf[0].freq = clk_get_rate(dmc0_clk);
 
-       s5pv210_dram_conf[1].refresh = (__raw_readl(S5P_VA_DMC1 + 0x30) * 1000);
+       s5pv210_dram_conf[1].refresh = (__raw_readl(dmc_base[1] + 0x30) * 1000);
        s5pv210_dram_conf[1].freq = clk_get_rate(dmc1_clk);
 
        policy->suspend_freq = SLEEP_FREQ;
@@ -527,8 +586,55 @@ static struct notifier_block s5pv210_cpufreq_reboot_notifier = {
        .notifier_call = s5pv210_cpufreq_reboot_notifier_event,
 };
 
-static int __init s5pv210_cpufreq_init(void)
+static int s5pv210_cpufreq_probe(struct platform_device *pdev)
 {
+       struct device_node *np;
+       int id;
+
+       /*
+        * HACK: This is a temporary workaround to get access to clock
+        * and DMC controller registers directly and remove static mappings
+        * and dependencies on platform headers. It is necessary to enable
+        * S5PV210 multi-platform support and will be removed together with
+        * this whole driver as soon as S5PV210 gets migrated to use
+        * cpufreq-cpu0 driver.
+        */
+       np = of_find_compatible_node(NULL, NULL, "samsung,s5pv210-clock");
+       if (!np) {
+               pr_err("%s: failed to find clock controller DT node\n",
+                       __func__);
+               return -ENODEV;
+       }
+
+       clk_base = of_iomap(np, 0);
+       if (!clk_base) {
+               pr_err("%s: failed to map clock registers\n", __func__);
+               return -EFAULT;
+       }
+
+       for_each_compatible_node(np, NULL, "samsung,s5pv210-dmc") {
+               id = of_alias_get_id(np, "dmc");
+               if (id < 0 || id >= ARRAY_SIZE(dmc_base)) {
+                       pr_err("%s: failed to get alias of dmc node '%s'\n",
+                               __func__, np->name);
+                       return id;
+               }
+
+               dmc_base[id] = of_iomap(np, 0);
+               if (!dmc_base[id]) {
+                       pr_err("%s: failed to map dmc%d registers\n",
+                               __func__, id);
+                       return -EFAULT;
+               }
+       }
+
+       for (id = 0; id < ARRAY_SIZE(dmc_base); ++id) {
+               if (!dmc_base[id]) {
+                       pr_err("%s: failed to find dmc%d node\n", __func__, id);
+                       return -ENODEV;
+               }
+       }
+
        arm_regulator = regulator_get(NULL, "vddarm");
        if (IS_ERR(arm_regulator)) {
                pr_err("failed to get regulator vddarm");
@@ -547,4 +653,11 @@ static int __init s5pv210_cpufreq_init(void)
        return cpufreq_register_driver(&s5pv210_driver);
 }
 
-late_initcall(s5pv210_cpufreq_init);
+static struct platform_driver s5pv210_cpufreq_platdrv = {
+       .driver = {
+               .name   = "s5pv210-cpufreq",
+               .owner  = THIS_MODULE,
+       },
+       .probe = s5pv210_cpufreq_probe,
+};
+module_platform_driver(s5pv210_cpufreq_platdrv);
index 7d4281e0d90154c9b50f0b9d958f9738a5843d66..27298fd212d7497753f42135b534aebdd7c2ab0f 100644 (file)
@@ -1169,234 +1169,9 @@ static struct samsung_gpio_chip s3c64xx_gpios_2bit[] = {
 #endif
 };
 
-/*
- * Followings are the gpio banks in S5PV210/S5PC110
- *
- * The 'config' member when left to NULL, is initialized to the default
- * structure samsung_gpio_cfgs[3] in the init function below.
- *
- * The 'base' member is also initialized in the init function below.
- * Note: The initialization of 'base' member of samsung_gpio_chip structure
- * uses the above macro and depends on the banks being listed in order here.
- */
-
-static struct samsung_gpio_chip s5pv210_gpios_4bit[] = {
-#ifdef CONFIG_CPU_S5PV210
-       {
-               .chip   = {
-                       .base   = S5PV210_GPA0(0),
-                       .ngpio  = S5PV210_GPIO_A0_NR,
-                       .label  = "GPA0",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPA1(0),
-                       .ngpio  = S5PV210_GPIO_A1_NR,
-                       .label  = "GPA1",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPB(0),
-                       .ngpio  = S5PV210_GPIO_B_NR,
-                       .label  = "GPB",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPC0(0),
-                       .ngpio  = S5PV210_GPIO_C0_NR,
-                       .label  = "GPC0",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPC1(0),
-                       .ngpio  = S5PV210_GPIO_C1_NR,
-                       .label  = "GPC1",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPD0(0),
-                       .ngpio  = S5PV210_GPIO_D0_NR,
-                       .label  = "GPD0",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPD1(0),
-                       .ngpio  = S5PV210_GPIO_D1_NR,
-                       .label  = "GPD1",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPE0(0),
-                       .ngpio  = S5PV210_GPIO_E0_NR,
-                       .label  = "GPE0",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPE1(0),
-                       .ngpio  = S5PV210_GPIO_E1_NR,
-                       .label  = "GPE1",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPF0(0),
-                       .ngpio  = S5PV210_GPIO_F0_NR,
-                       .label  = "GPF0",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPF1(0),
-                       .ngpio  = S5PV210_GPIO_F1_NR,
-                       .label  = "GPF1",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPF2(0),
-                       .ngpio  = S5PV210_GPIO_F2_NR,
-                       .label  = "GPF2",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPF3(0),
-                       .ngpio  = S5PV210_GPIO_F3_NR,
-                       .label  = "GPF3",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPG0(0),
-                       .ngpio  = S5PV210_GPIO_G0_NR,
-                       .label  = "GPG0",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPG1(0),
-                       .ngpio  = S5PV210_GPIO_G1_NR,
-                       .label  = "GPG1",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPG2(0),
-                       .ngpio  = S5PV210_GPIO_G2_NR,
-                       .label  = "GPG2",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPG3(0),
-                       .ngpio  = S5PV210_GPIO_G3_NR,
-                       .label  = "GPG3",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPI(0),
-                       .ngpio  = S5PV210_GPIO_I_NR,
-                       .label  = "GPI",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPJ0(0),
-                       .ngpio  = S5PV210_GPIO_J0_NR,
-                       .label  = "GPJ0",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPJ1(0),
-                       .ngpio  = S5PV210_GPIO_J1_NR,
-                       .label  = "GPJ1",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPJ2(0),
-                       .ngpio  = S5PV210_GPIO_J2_NR,
-                       .label  = "GPJ2",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPJ3(0),
-                       .ngpio  = S5PV210_GPIO_J3_NR,
-                       .label  = "GPJ3",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_GPJ4(0),
-                       .ngpio  = S5PV210_GPIO_J4_NR,
-                       .label  = "GPJ4",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_MP01(0),
-                       .ngpio  = S5PV210_GPIO_MP01_NR,
-                       .label  = "MP01",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_MP02(0),
-                       .ngpio  = S5PV210_GPIO_MP02_NR,
-                       .label  = "MP02",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_MP03(0),
-                       .ngpio  = S5PV210_GPIO_MP03_NR,
-                       .label  = "MP03",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_MP04(0),
-                       .ngpio  = S5PV210_GPIO_MP04_NR,
-                       .label  = "MP04",
-               },
-       }, {
-               .chip   = {
-                       .base   = S5PV210_MP05(0),
-                       .ngpio  = S5PV210_GPIO_MP05_NR,
-                       .label  = "MP05",
-               },
-       }, {
-               .base   = (S5P_VA_GPIO + 0xC00),
-               .irq_base = IRQ_EINT(0),
-               .chip   = {
-                       .base   = S5PV210_GPH0(0),
-                       .ngpio  = S5PV210_GPIO_H0_NR,
-                       .label  = "GPH0",
-                       .to_irq = samsung_gpiolib_to_irq,
-               },
-       }, {
-               .base   = (S5P_VA_GPIO + 0xC20),
-               .irq_base = IRQ_EINT(8),
-               .chip   = {
-                       .base   = S5PV210_GPH1(0),
-                       .ngpio  = S5PV210_GPIO_H1_NR,
-                       .label  = "GPH1",
-                       .to_irq = samsung_gpiolib_to_irq,
-               },
-       }, {
-               .base   = (S5P_VA_GPIO + 0xC40),
-               .irq_base = IRQ_EINT(16),
-               .chip   = {
-                       .base   = S5PV210_GPH2(0),
-                       .ngpio  = S5PV210_GPIO_H2_NR,
-                       .label  = "GPH2",
-                       .to_irq = samsung_gpiolib_to_irq,
-               },
-       }, {
-               .base   = (S5P_VA_GPIO + 0xC60),
-               .irq_base = IRQ_EINT(24),
-               .chip   = {
-                       .base   = S5PV210_GPH3(0),
-                       .ngpio  = S5PV210_GPIO_H3_NR,
-                       .label  = "GPH3",
-                       .to_irq = samsung_gpiolib_to_irq,
-               },
-       },
-#endif
-};
-
 /* TODO: cleanup soc_is_* */
 static __init int samsung_gpiolib_init(void)
 {
-       struct samsung_gpio_chip *chip;
-       int i, nr_chips;
-       int group = 0;
-
        /*
         * Currently there are two drivers that can provide GPIO support for
         * Samsung SoCs. For device tree enabled platforms, the new
@@ -1420,21 +1195,6 @@ static __init int samsung_gpiolib_init(void)
                                S3C64XX_VA_GPIO);
                samsung_gpiolib_add_4bit2_chips(s3c64xx_gpios_4bit2,
                                ARRAY_SIZE(s3c64xx_gpios_4bit2));
-       } else if (soc_is_s5pv210()) {
-               group = 0;
-               chip = s5pv210_gpios_4bit;
-               nr_chips = ARRAY_SIZE(s5pv210_gpios_4bit);
-
-               for (i = 0; i < nr_chips; i++, chip++) {
-                       if (!chip->config) {
-                               chip->config = &samsung_gpio_cfgs[3];
-                               chip->group = group++;
-                       }
-               }
-               samsung_gpiolib_add_4bit_chips(s5pv210_gpios_4bit, nr_chips, S5P_VA_GPIO);
-#if defined(CONFIG_CPU_S5PV210) && defined(CONFIG_S5P_GPIO_INT)
-               s5p_register_gpioint_bank(IRQ_GPIOINT, 0, S5P_GPIOINT_GROUP_MAXNR);
-#endif
        } else {
                WARN(1, "Unknown SoC in gpio-samsung, no GPIOs added\n");
                return -ENODEV;
index 64b98d242ea625b7b29d2b08e0bb2c00e83ddec5..b0525e03782aea9e23ff4fcd78ddc02a5c56203b 100644 (file)
@@ -132,6 +132,16 @@ config PHY_SAMSUNG_USB2
          particular SoCs has to be enabled in addition to this driver. Number
          and type of supported phys depends on the SoC.
 
+config PHY_S5PV210_USB2
+       bool "Support for S5PV210"
+       depends on PHY_SAMSUNG_USB2
+       depends on ARCH_S5PV210
+       help
+         Enable USB PHY support for S5PV210. This option requires that Samsung
+         USB 2.0 PHY driver is enabled and means that support for this
+         particular SoC is compiled in the driver. In case of S5PV210 two phys
+         are available - device and host.
+
 config PHY_EXYNOS4210_USB2
        bool "Support for Exynos 4210"
        depends on PHY_SAMSUNG_USB2
index b4f1d57706015b0af572462627002d7727ec1bac..2983808e1626ea1f350efb3b082860f6c68f1e33 100644 (file)
@@ -18,5 +18,6 @@ phy-exynos-usb2-y                     += phy-samsung-usb2.o
 phy-exynos-usb2-$(CONFIG_PHY_EXYNOS4210_USB2)  += phy-exynos4210-usb2.o
 phy-exynos-usb2-$(CONFIG_PHY_EXYNOS4X12_USB2)  += phy-exynos4x12-usb2.o
 phy-exynos-usb2-$(CONFIG_PHY_EXYNOS5250_USB2)  += phy-exynos5250-usb2.o
+phy-exynos-usb2-$(CONFIG_PHY_S5PV210_USB2)     += phy-s5pv210-usb2.o
 obj-$(CONFIG_PHY_EXYNOS5_USBDRD)       += phy-exynos5-usbdrd.o
 obj-$(CONFIG_PHY_XGENE)                        += phy-xgene.o
diff --git a/drivers/phy/phy-s5pv210-usb2.c b/drivers/phy/phy-s5pv210-usb2.c
new file mode 100644 (file)
index 0000000..004d320
--- /dev/null
@@ -0,0 +1,187 @@
+/*
+ * Samsung SoC USB 1.1/2.0 PHY driver - S5PV210 support
+ *
+ * Copyright (C) 2013 Samsung Electronics Co., Ltd.
+ * Authors: Kamil Debski <k.debski@samsung.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/delay.h>
+#include <linux/io.h>
+#include <linux/phy/phy.h>
+#include "phy-samsung-usb2.h"
+
+/* Exynos USB PHY registers */
+
+/* PHY power control */
+#define S5PV210_UPHYPWR                        0x0
+
+#define S5PV210_UPHYPWR_PHY0_SUSPEND   BIT(0)
+#define S5PV210_UPHYPWR_PHY0_PWR       BIT(3)
+#define S5PV210_UPHYPWR_PHY0_OTG_PWR   BIT(4)
+#define S5PV210_UPHYPWR_PHY0   ( \
+       S5PV210_UPHYPWR_PHY0_SUSPEND | \
+       S5PV210_UPHYPWR_PHY0_PWR | \
+       S5PV210_UPHYPWR_PHY0_OTG_PWR)
+
+#define S5PV210_UPHYPWR_PHY1_SUSPEND   BIT(6)
+#define S5PV210_UPHYPWR_PHY1_PWR       BIT(7)
+#define S5PV210_UPHYPWR_PHY1 ( \
+       S5PV210_UPHYPWR_PHY1_SUSPEND | \
+       S5PV210_UPHYPWR_PHY1_PWR)
+
+/* PHY clock control */
+#define S5PV210_UPHYCLK                        0x4
+
+#define S5PV210_UPHYCLK_PHYFSEL_MASK   (0x3 << 0)
+#define S5PV210_UPHYCLK_PHYFSEL_48MHZ  (0x0 << 0)
+#define S5PV210_UPHYCLK_PHYFSEL_24MHZ  (0x3 << 0)
+#define S5PV210_UPHYCLK_PHYFSEL_12MHZ  (0x2 << 0)
+
+#define S5PV210_UPHYCLK_PHY0_ID_PULLUP BIT(2)
+#define S5PV210_UPHYCLK_PHY0_COMMON_ON BIT(4)
+#define S5PV210_UPHYCLK_PHY1_COMMON_ON BIT(7)
+
+/* PHY reset control */
+#define S5PV210_UPHYRST                        0x8
+
+#define S5PV210_URSTCON_PHY0           BIT(0)
+#define S5PV210_URSTCON_OTG_HLINK      BIT(1)
+#define S5PV210_URSTCON_OTG_PHYLINK    BIT(2)
+#define S5PV210_URSTCON_PHY1_ALL       BIT(3)
+#define S5PV210_URSTCON_HOST_LINK_ALL  BIT(4)
+
+/* Isolation, configured in the power management unit */
+#define S5PV210_USB_ISOL_OFFSET                0x680c
+#define S5PV210_USB_ISOL_DEVICE                BIT(0)
+#define S5PV210_USB_ISOL_HOST          BIT(1)
+
+
+enum s5pv210_phy_id {
+       S5PV210_DEVICE,
+       S5PV210_HOST,
+       S5PV210_NUM_PHYS,
+};
+
+/*
+ * s5pv210_rate_to_clk() converts the supplied clock rate to the value that
+ * can be written to the phy register.
+ */
+static int s5pv210_rate_to_clk(unsigned long rate, u32 *reg)
+{
+       switch (rate) {
+       case 12 * MHZ:
+               *reg = S5PV210_UPHYCLK_PHYFSEL_12MHZ;
+               break;
+       case 24 * MHZ:
+               *reg = S5PV210_UPHYCLK_PHYFSEL_24MHZ;
+               break;
+       case 48 * MHZ:
+               *reg = S5PV210_UPHYCLK_PHYFSEL_48MHZ;
+               break;
+       default:
+               return -EINVAL;
+       }
+
+       return 0;
+}
+
+static void s5pv210_isol(struct samsung_usb2_phy_instance *inst, bool on)
+{
+       struct samsung_usb2_phy_driver *drv = inst->drv;
+       u32 mask;
+
+       switch (inst->cfg->id) {
+       case S5PV210_DEVICE:
+               mask = S5PV210_USB_ISOL_DEVICE;
+               break;
+       case S5PV210_HOST:
+               mask = S5PV210_USB_ISOL_HOST;
+               break;
+       default:
+               return;
+       };
+
+       regmap_update_bits(drv->reg_pmu, S5PV210_USB_ISOL_OFFSET,
+                                                       mask, on ? 0 : mask);
+}
+
+static void s5pv210_phy_pwr(struct samsung_usb2_phy_instance *inst, bool on)
+{
+       struct samsung_usb2_phy_driver *drv = inst->drv;
+       u32 rstbits = 0;
+       u32 phypwr = 0;
+       u32 rst;
+       u32 pwr;
+
+       switch (inst->cfg->id) {
+       case S5PV210_DEVICE:
+               phypwr =        S5PV210_UPHYPWR_PHY0;
+               rstbits =       S5PV210_URSTCON_PHY0;
+               break;
+       case S5PV210_HOST:
+               phypwr =        S5PV210_UPHYPWR_PHY1;
+               rstbits =       S5PV210_URSTCON_PHY1_ALL |
+                               S5PV210_URSTCON_HOST_LINK_ALL;
+               break;
+       };
+
+       if (on) {
+               writel(drv->ref_reg_val, drv->reg_phy + S5PV210_UPHYCLK);
+
+               pwr = readl(drv->reg_phy + S5PV210_UPHYPWR);
+               pwr &= ~phypwr;
+               writel(pwr, drv->reg_phy + S5PV210_UPHYPWR);
+
+               rst = readl(drv->reg_phy + S5PV210_UPHYRST);
+               rst |= rstbits;
+               writel(rst, drv->reg_phy + S5PV210_UPHYRST);
+               udelay(10);
+               rst &= ~rstbits;
+               writel(rst, drv->reg_phy + S5PV210_UPHYRST);
+       } else {
+               pwr = readl(drv->reg_phy + S5PV210_UPHYPWR);
+               pwr |= phypwr;
+               writel(pwr, drv->reg_phy + S5PV210_UPHYPWR);
+       }
+}
+
+static int s5pv210_power_on(struct samsung_usb2_phy_instance *inst)
+{
+       s5pv210_isol(inst, 0);
+       s5pv210_phy_pwr(inst, 1);
+
+       return 0;
+}
+
+static int s5pv210_power_off(struct samsung_usb2_phy_instance *inst)
+{
+       s5pv210_phy_pwr(inst, 0);
+       s5pv210_isol(inst, 1);
+
+       return 0;
+}
+
+static const struct samsung_usb2_common_phy s5pv210_phys[S5PV210_NUM_PHYS] = {
+       [S5PV210_DEVICE] = {
+               .label          = "device",
+               .id             = S5PV210_DEVICE,
+               .power_on       = s5pv210_power_on,
+               .power_off      = s5pv210_power_off,
+       },
+       [S5PV210_HOST] = {
+               .label          = "host",
+               .id             = S5PV210_HOST,
+               .power_on       = s5pv210_power_on,
+               .power_off      = s5pv210_power_off,
+       },
+};
+
+const struct samsung_usb2_phy_config s5pv210_usb2_phy_config = {
+       .num_phys       = ARRAY_SIZE(s5pv210_phys),
+       .phys           = s5pv210_phys,
+       .rate_to_clk    = s5pv210_rate_to_clk,
+};
index 1e69a32c221dc5e3376796d4f78edcb1f8be609f..29e4ab987645f7ca8e2bdad9387c9c76ce5af4d8 100644 (file)
@@ -87,6 +87,12 @@ static struct phy *samsung_usb2_phy_xlate(struct device *dev,
 }
 
 static const struct of_device_id samsung_usb2_phy_of_match[] = {
+#ifdef CONFIG_PHY_S5PV210_USB2
+       {
+               .compatible = "samsung,s5pv210-usb2-phy",
+               .data = &s5pv210_usb2_phy_config,
+       },
+#endif
 #ifdef CONFIG_PHY_EXYNOS4210_USB2
        {
                .compatible = "samsung,exynos4210-usb2-phy",
index 45b3170652bdfec8eb648b4e2541ab1c6cc23faf..1c55795d442959b906e4474e88c046df5fae99be 100644 (file)
@@ -61,6 +61,7 @@ struct samsung_usb2_phy_config {
        bool has_mode_switch;
 };
 
+extern const struct samsung_usb2_phy_config s5pv210_usb2_phy_config;
 extern const struct samsung_usb2_phy_config exynos4210_usb2_phy_config;
 extern const struct samsung_usb2_phy_config exynos4x12_usb2_phy_config;
 extern const struct samsung_usb2_phy_config exynos5250_usb2_phy_config;
index c1d3ebdf3b97cf25f81699db1c697dcdf2f478cd..bc8674a63082be0ed988379c4773109226698b27 100644 (file)
 
 #include <asm/irq.h>
 
-#ifdef CONFIG_SAMSUNG_CLOCK
-#include <plat/clock.h>
-#endif
-
 #include "samsung.h"
 
 #if    defined(CONFIG_SERIAL_SAMSUNG_DEBUG) && \
diff --git a/include/dt-bindings/clock/s5pv210-audss.h b/include/dt-bindings/clock/s5pv210-audss.h
new file mode 100644 (file)
index 0000000..fe57406
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2014 Tomasz Figa <tomasz.figa@gmail.com>
+ *
+ * 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.
+ *
+ * This header provides constants for Samsung audio subsystem
+ * clock controller.
+ *
+ * The constants defined in this header are being used in dts
+ * and s5pv210 audss driver.
+ */
+
+#ifndef _DT_BINDINGS_CLOCK_S5PV210_AUDSS_H
+#define _DT_BINDINGS_CLOCK_S5PV210_AUDSS_H
+
+#define CLK_MOUT_AUDSS         0
+#define CLK_MOUT_I2S_A         1
+
+#define CLK_DOUT_AUD_BUS       2
+#define CLK_DOUT_I2S_A         3
+
+#define CLK_I2S                        4
+#define CLK_HCLK_I2S           5
+#define CLK_HCLK_UART          6
+#define CLK_HCLK_HWA           7
+#define CLK_HCLK_DMA           8
+#define CLK_HCLK_BUF           9
+#define CLK_HCLK_RP            10
+
+#define AUDSS_MAX_CLKS         11
+
+#endif
diff --git a/include/dt-bindings/clock/s5pv210.h b/include/dt-bindings/clock/s5pv210.h
new file mode 100644 (file)
index 0000000..e88986b
--- /dev/null
@@ -0,0 +1,239 @@
+/*
+ * Copyright (c) 2013 Samsung Electronics Co., Ltd.
+ * Author: Mateusz Krawczuk <m.krawczuk@partner.samsung.com>
+ *
+ * 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.
+ *
+ * Device Tree binding constants for Samsung S5PV210 clock controller.
+ */
+
+#ifndef _DT_BINDINGS_CLOCK_S5PV210_H
+#define _DT_BINDINGS_CLOCK_S5PV210_H
+
+/* Core clocks. */
+#define FIN_PLL                        1
+#define FOUT_APLL              2
+#define FOUT_MPLL              3
+#define FOUT_EPLL              4
+#define FOUT_VPLL              5
+
+/* Muxes. */
+#define MOUT_FLASH             6
+#define MOUT_PSYS              7
+#define MOUT_DSYS              8
+#define MOUT_MSYS              9
+#define MOUT_VPLL              10
+#define MOUT_EPLL              11
+#define MOUT_MPLL              12
+#define MOUT_APLL              13
+#define MOUT_VPLLSRC           14
+#define MOUT_CSIS              15
+#define MOUT_FIMD              16
+#define MOUT_CAM1              17
+#define MOUT_CAM0              18
+#define MOUT_DAC               19
+#define MOUT_MIXER             20
+#define MOUT_HDMI              21
+#define MOUT_G2D               22
+#define MOUT_MFC               23
+#define MOUT_G3D               24
+#define MOUT_FIMC2             25
+#define MOUT_FIMC1             26
+#define MOUT_FIMC0             27
+#define MOUT_UART3             28
+#define MOUT_UART2             29
+#define MOUT_UART1             30
+#define MOUT_UART0             31
+#define MOUT_MMC3              32
+#define MOUT_MMC2              33
+#define MOUT_MMC1              34
+#define MOUT_MMC0              35
+#define MOUT_PWM               36
+#define MOUT_SPI0              37
+#define MOUT_SPI1              38
+#define MOUT_DMC0              39
+#define MOUT_PWI               40
+#define MOUT_HPM               41
+#define MOUT_SPDIF             42
+#define MOUT_AUDIO2            43
+#define MOUT_AUDIO1            44
+#define MOUT_AUDIO0            45
+
+/* Dividers. */
+#define DOUT_PCLKP             46
+#define DOUT_HCLKP             47
+#define DOUT_PCLKD             48
+#define DOUT_HCLKD             49
+#define DOUT_PCLKM             50
+#define DOUT_HCLKM             51
+#define DOUT_A2M               52
+#define DOUT_APLL              53
+#define DOUT_CSIS              54
+#define DOUT_FIMD              55
+#define DOUT_CAM1              56
+#define DOUT_CAM0              57
+#define DOUT_TBLK              58
+#define DOUT_G2D               59
+#define DOUT_MFC               60
+#define DOUT_G3D               61
+#define DOUT_FIMC2             62
+#define DOUT_FIMC1             63
+#define DOUT_FIMC0             64
+#define DOUT_UART3             65
+#define DOUT_UART2             66
+#define DOUT_UART1             67
+#define DOUT_UART0             68
+#define DOUT_MMC3              69
+#define DOUT_MMC2              70
+#define DOUT_MMC1              71
+#define DOUT_MMC0              72
+#define DOUT_PWM               73
+#define DOUT_SPI1              74
+#define DOUT_SPI0              75
+#define DOUT_DMC0              76
+#define DOUT_PWI               77
+#define DOUT_HPM               78
+#define DOUT_COPY              79
+#define DOUT_FLASH             80
+#define DOUT_AUDIO2            81
+#define DOUT_AUDIO1            82
+#define DOUT_AUDIO0            83
+#define DOUT_DPM               84
+#define DOUT_DVSEM             85
+
+/* Gates */
+#define SCLK_FIMC              86
+#define CLK_CSIS               87
+#define CLK_ROTATOR            88
+#define CLK_FIMC2              89
+#define CLK_FIMC1              90
+#define CLK_FIMC0              91
+#define CLK_MFC                        92
+#define CLK_G2D                        93
+#define CLK_G3D                        94
+#define CLK_IMEM               95
+#define CLK_PDMA1              96
+#define CLK_PDMA0              97
+#define CLK_MDMA               98
+#define CLK_DMC1               99
+#define CLK_DMC0               100
+#define CLK_NFCON              101
+#define CLK_SROMC              102
+#define CLK_CFCON              103
+#define CLK_NANDXL             104
+#define CLK_USB_HOST           105
+#define CLK_USB_OTG            106
+#define CLK_HDMI               107
+#define CLK_TVENC              108
+#define CLK_MIXER              109
+#define CLK_VP                 110
+#define CLK_DSIM               111
+#define CLK_FIMD               112
+#define CLK_TZIC3              113
+#define CLK_TZIC2              114
+#define CLK_TZIC1              115
+#define CLK_TZIC0              116
+#define CLK_VIC3               117
+#define CLK_VIC2               118
+#define CLK_VIC1               119
+#define CLK_VIC0               120
+#define CLK_TSI                        121
+#define CLK_HSMMC3             122
+#define CLK_HSMMC2             123
+#define CLK_HSMMC1             124
+#define CLK_HSMMC0             125
+#define CLK_JTAG               126
+#define CLK_MODEMIF            127
+#define CLK_CORESIGHT          128
+#define CLK_SDM                        129
+#define CLK_SECSS              130
+#define CLK_PCM2               131
+#define CLK_PCM1               132
+#define CLK_PCM0               133
+#define CLK_SYSCON             134
+#define CLK_GPIO               135
+#define CLK_TSADC              136
+#define CLK_PWM                        137
+#define CLK_WDT                        138
+#define CLK_KEYIF              139
+#define CLK_UART3              140
+#define CLK_UART2              141
+#define CLK_UART1              142
+#define CLK_UART0              143
+#define CLK_SYSTIMER           144
+#define CLK_RTC                        145
+#define CLK_SPI1               146
+#define CLK_SPI0               147
+#define CLK_I2C_HDMI_PHY       148
+#define CLK_I2C1               149
+#define CLK_I2C2               150
+#define CLK_I2C0               151
+#define CLK_I2S1               152
+#define CLK_I2S2               153
+#define CLK_I2S0               154
+#define CLK_AC97               155
+#define CLK_SPDIF              156
+#define CLK_TZPC3              157
+#define CLK_TZPC2              158
+#define CLK_TZPC1              159
+#define CLK_TZPC0              160
+#define CLK_SECKEY             161
+#define CLK_IEM_APC            162
+#define CLK_IEM_IEC            163
+#define CLK_CHIPID             164
+#define CLK_JPEG               163
+
+/* Special clocks*/
+#define SCLK_PWI               164
+#define SCLK_SPDIF             165
+#define SCLK_AUDIO2            166
+#define SCLK_AUDIO1            167
+#define SCLK_AUDIO0            168
+#define SCLK_PWM               169
+#define SCLK_SPI1              170
+#define SCLK_SPI0              171
+#define SCLK_UART3             172
+#define SCLK_UART2             173
+#define SCLK_UART1             174
+#define SCLK_UART0             175
+#define SCLK_MMC3              176
+#define SCLK_MMC2              177
+#define SCLK_MMC1              178
+#define SCLK_MMC0              179
+#define SCLK_FINVPLL           180
+#define SCLK_CSIS              181
+#define SCLK_FIMD              182
+#define SCLK_CAM1              183
+#define SCLK_CAM0              184
+#define SCLK_DAC               185
+#define SCLK_MIXER             186
+#define SCLK_HDMI              187
+#define SCLK_FIMC2             188
+#define SCLK_FIMC1             189
+#define SCLK_FIMC0             190
+#define SCLK_HDMI27M           191
+#define SCLK_HDMIPHY           192
+#define SCLK_USBPHY0           193
+#define SCLK_USBPHY1           194
+
+/* S5P6442-specific clocks */
+#define MOUT_D0SYNC            195
+#define MOUT_D1SYNC            196
+#define DOUT_MIXER             197
+#define CLK_ETB                        198
+#define CLK_ETM                        199
+
+/* CLKOUT */
+#define FOUT_APLL_CLKOUT       200
+#define FOUT_MPLL_CLKOUT       201
+#define DOUT_APLL_CLKOUT       202
+#define MOUT_CLKSEL            203
+#define DOUT_CLKOUT            204
+#define MOUT_CLKOUT            205
+
+/* Total number of clocks. */
+#define NR_CLKS                        206
+
+#endif /* _DT_BINDINGS_CLOCK_S5PV210_H */
This page took 0.198892 seconds and 5 git commands to generate.