[ARM] S3C: Move HSMMC device definition to plat-s3ec
authorBen Dooks <ben-linux@fluff.org>
Fri, 31 Oct 2008 16:14:28 +0000 (16:14 +0000)
committerBen Dooks <ben-linux@fluff.org>
Mon, 15 Dec 2008 23:32:34 +0000 (23:32 +0000)
Move the definition for the hsmmc device to plat-s3c
to be shared between the s3c24xx and s3c64xx platforms.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
arch/arm/mach-s3c2410/include/mach/irqs.h
arch/arm/mach-s3c2410/include/mach/map.h
arch/arm/mach-s3c2443/Kconfig
arch/arm/mach-s3c2443/mach-smdk2443.c
arch/arm/mach-s3c6400/include/mach/map.h
arch/arm/mach-s3c6410/Kconfig
arch/arm/plat-s3c/Kconfig
arch/arm/plat-s3c/Makefile
arch/arm/plat-s3c/dev-hsmmc.c [new file with mode: 0644]
arch/arm/plat-s3c/include/plat/devs.h
arch/arm/plat-s3c24xx/devs.c

index 950c71bf14893376341e9e6ecc3768b882419993..fa8764b05692fe6499803bfb26611eb24d8ee72d 100644 (file)
 #define IRQ_S3C2443_HSMMC      S3C2410_IRQ(20)         /* IRQ_SDI */
 #define IRQ_S3C2443_NAND       S3C2410_IRQ(24)         /* reserved */
 
+#define IRQ_HSMMC0             IRQ_S3C2443_HSMMC
+
 #define IRQ_S3C2443_LCD1       S3C2410_IRQSUB(14)
 #define IRQ_S3C2443_LCD2       S3C2410_IRQSUB(15)
 #define IRQ_S3C2443_LCD3       S3C2410_IRQSUB(16)
index 918e3463297fd214289e81c6f419a349653d93bf..d5ae6823fed4875403c433bd898f809a12ccfac1 100644 (file)
 #define S3C24XX_PA_NAND            S3C2410_PA_NAND
 
 #define S3C_PA_UART        S3C24XX_PA_UART
+#define S3C_PA_HSMMC0      S3C2443_PA_HSMMC
 
 #endif /* __ASM_ARCH_MAP_H */
index 14252f57375468d4d9809fe5e6475550962a688d..212141baebec29ac005c0bc4699762ed6945fcd1 100644 (file)
@@ -24,6 +24,7 @@ config MACH_SMDK2443
        bool "SMDK2443"
        select CPU_S3C2443
        select MACH_SMDK
+       select S3C_DEV_HSMMC
        help
          Say Y here if you are using an SMDK2443
 
index a7fe65f3dcc16a08b0212adfd4abd373174d7435..815a3bd1d37b7fe42efbbee6ed51653f5278cf04 100644 (file)
@@ -104,7 +104,7 @@ static struct s3c2410_uartcfg smdk2443_uartcfgs[] __initdata = {
 static struct platform_device *smdk2443_devices[] __initdata = {
        &s3c_device_wdt,
        &s3c_device_i2c,
-       &s3c_device_hsmmc,
+       &s3c_device_hsmmc0,
 };
 
 static void __init smdk2443_map_io(void)
index 618f09d637b2627108a1a165a76fb8cd0ee3ccf9..aadaaaf2d8b6172384fd82685c6cfa8e2eae160b 100644 (file)
 
 #include <plat/map-base.h>
 
+/* HSMMC units */
+#define S3C64XX_PA_HSMMC(x)    (0x7C200000 + ((x) * 0x100000))
+#define S3C64XX_PA_HSMMC0      S3C64XX_PA_HSMMC(0)
+#define S3C64XX_PA_HSMMC1      S3C64XX_PA_HSMMC(1)
+#define S3C64XX_PA_HSMMC2      S3C64XX_PA_HSMMC(2)
+
 #define S3C_PA_UART            (0x7F005000)
 #define S3C_PA_UART0           (S3C_PA_UART + 0x00)
 #define S3C_PA_UART1           (S3C_PA_UART + 0x400)
@@ -49,5 +55,8 @@
 
 /* compatibiltiy defines. */
 #define S3C_PA_TIMER           S3C64XX_PA_TIMER
+#define S3C_PA_HSMMC0          S3C64XX_PA_HSMMC0
+#define S3C_PA_HSMMC1          S3C64XX_PA_HSMMC1
+#define S3C_PA_HSMMC2          S3C64XX_PA_HSMMC2
 
 #endif /* __ASM_ARCH_6400_MAP_H */
index 75b1244cf8abce5114ab2c22bf9eed9fb3d8b607..d7ccc269086c69f563c0aa1c42b0f466c1cec730 100644 (file)
@@ -17,5 +17,6 @@ config CPU_S3C6410
 config MACH_SMDK6410
        bool "SMDK6410"
        select CPU_S3C6410
+       select S3C_DEV_HSMMC
        help
          Machine support for the Samsung SMDK6410
index 6fa261a3d4058b5d72f691c290ec26167c7e3c6b..0deb1054975fb0534424412fe130bd69aa511165 100644 (file)
@@ -102,3 +102,11 @@ config S3C_LOWLEVEL_UART_PORT
          such as the `Uncompressing...` at start time. The value of
          this configuration should be between zero and two. The port
          must have been initialised by the boot-loader before use.
+
+# device definitions to compile in
+
+config S3C_DEV_HSMMC
+       bool
+       depends on PLAT_S3C
+       help
+         Compile in platform device definitions for HSMMC code
index a2fe3c77564ecae51b8ada9f5f81852358ed8bc2..b95a9c1064679f71e6912489860578b8993e110c 100644 (file)
@@ -14,4 +14,8 @@ obj-                          :=
 obj-y                          +=  init.o
 obj-y                          += time.o
 obj-y                          += clock.o
-obj-y                          += pwm-clock.o
\ No newline at end of file
+obj-y                          += pwm-clock.o
+
+# devices
+
+obj-$(CONFIG_S3C_DEV_HSMMC)    += dev-hsmmc.o
diff --git a/arch/arm/plat-s3c/dev-hsmmc.c b/arch/arm/plat-s3c/dev-hsmmc.c
new file mode 100644 (file)
index 0000000..5a5ef74
--- /dev/null
@@ -0,0 +1,47 @@
+/* linux/arch/arm/plat-s3c/dev-hsmmc.c
+ *
+ * Copyright (c) 2008 Simtec Electronics
+ *     Ben Dooks <ben@simtec.co.uk>
+ *     http://armlinux.simtec.co.uk/
+ *
+ * S3C series device definition for hsmmc devices
+ *
+ * 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/platform_device.h>
+
+#include <mach/map.h>
+#include <plat/devs.h>
+#include <plat/cpu.h>
+
+#define S3C_SZ_HSMMC   (0x1000)
+
+static struct resource s3c_hsmmc_resource[] = {
+       [0] = {
+               .start = S3C_PA_HSMMC0,
+               .end   = S3C_PA_HSMMC0 + S3C_SZ_HSMMC - 1,
+               .flags = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start = IRQ_HSMMC0,
+               .end   = IRQ_HSMMC0,
+               .flags = IORESOURCE_IRQ,
+       }
+};
+
+static u64 s3c_device_hsmmc_dmamask = 0xffffffffUL;
+
+struct platform_device s3c_device_hsmmc0 = {
+       .name             = "s3c-sdhci",
+       .id               = 0,
+       .num_resources    = ARRAY_SIZE(s3c_hsmmc_resource),
+       .resource         = s3c_hsmmc_resource,
+       .dev              = {
+               .dma_mask = &s3c_device_hsmmc_dmamask,
+               .coherent_dma_mask = 0xffffffffUL
+       }
+};
index a689c7c5ac23775854929498f00edc6f0cbac1e5..f173863b8cc743ac6e12378fb85d0ed6bca49b32 100644 (file)
@@ -32,7 +32,9 @@ extern struct platform_device s3c_device_iis;
 extern struct platform_device s3c_device_rtc;
 extern struct platform_device s3c_device_adc;
 extern struct platform_device s3c_device_sdi;
-extern struct platform_device s3c_device_hsmmc;
+extern struct platform_device s3c_device_hsmmc0;
+extern struct platform_device s3c_device_hsmmc1;
+extern struct platform_device s3c_device_hsmmc2;
 
 extern struct platform_device s3c_device_spi0;
 extern struct platform_device s3c_device_spi1;
index ea445850ff4749a8e442a24f6f811048e04832c4..3a2fcd94791e47bcf9ada88fabd061d38c02e14e 100644 (file)
@@ -403,36 +403,6 @@ struct platform_device s3c_device_sdi = {
 
 EXPORT_SYMBOL(s3c_device_sdi);
 
-/* High-speed MMC/SD */
-
-static struct resource s3c_hsmmc_resource[] = {
-       [0] = {
-               .start = S3C2443_PA_HSMMC,
-               .end   = S3C2443_PA_HSMMC + S3C2443_SZ_HSMMC - 1,
-               .flags = IORESOURCE_MEM,
-       },
-       [1] = {
-               .start = IRQ_S3C2443_HSMMC,
-               .end   = IRQ_S3C2443_HSMMC,
-               .flags = IORESOURCE_IRQ,
-       }
-};
-
-static u64 s3c_device_hsmmc_dmamask = 0xffffffffUL;
-
-struct platform_device s3c_device_hsmmc = {
-       .name             = "s3c-sdhci",
-       .id               = -1,
-       .num_resources    = ARRAY_SIZE(s3c_hsmmc_resource),
-       .resource         = s3c_hsmmc_resource,
-       .dev              = {
-               .dma_mask = &s3c_device_hsmmc_dmamask,
-               .coherent_dma_mask = 0xffffffffUL
-       }
-};
-
-
-
 /* SPI (0) */
 
 static struct resource s3c_spi0_resource[] = {