瀏覽代碼

[ARM] S3C: Move HSMMC device definition to plat-s3ec

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>
Ben Dooks 16 年之前
父節點
當前提交
5b323c7beb

+ 2 - 0
arch/arm/mach-s3c2410/include/mach/irqs.h

@@ -134,6 +134,8 @@
 #define IRQ_S3C2443_HSMMC	S3C2410_IRQ(20)		/* IRQ_SDI */
 #define IRQ_S3C2443_HSMMC	S3C2410_IRQ(20)		/* IRQ_SDI */
 #define IRQ_S3C2443_NAND	S3C2410_IRQ(24)		/* reserved */
 #define IRQ_S3C2443_NAND	S3C2410_IRQ(24)		/* reserved */
 
 
+#define IRQ_HSMMC0		IRQ_S3C2443_HSMMC
+
 #define IRQ_S3C2443_LCD1	S3C2410_IRQSUB(14)
 #define IRQ_S3C2443_LCD1	S3C2410_IRQSUB(14)
 #define IRQ_S3C2443_LCD2	S3C2410_IRQSUB(15)
 #define IRQ_S3C2443_LCD2	S3C2410_IRQSUB(15)
 #define IRQ_S3C2443_LCD3	S3C2410_IRQSUB(16)
 #define IRQ_S3C2443_LCD3	S3C2410_IRQSUB(16)

+ 1 - 0
arch/arm/mach-s3c2410/include/mach/map.h

@@ -102,5 +102,6 @@
 #define S3C24XX_PA_NAND	    S3C2410_PA_NAND
 #define S3C24XX_PA_NAND	    S3C2410_PA_NAND
 
 
 #define S3C_PA_UART	    S3C24XX_PA_UART
 #define S3C_PA_UART	    S3C24XX_PA_UART
+#define S3C_PA_HSMMC0	    S3C2443_PA_HSMMC
 
 
 #endif /* __ASM_ARCH_MAP_H */
 #endif /* __ASM_ARCH_MAP_H */

+ 1 - 0
arch/arm/mach-s3c2443/Kconfig

@@ -24,6 +24,7 @@ config MACH_SMDK2443
 	bool "SMDK2443"
 	bool "SMDK2443"
 	select CPU_S3C2443
 	select CPU_S3C2443
 	select MACH_SMDK
 	select MACH_SMDK
+	select S3C_DEV_HSMMC
 	help
 	help
 	  Say Y here if you are using an SMDK2443
 	  Say Y here if you are using an SMDK2443
 
 

+ 1 - 1
arch/arm/mach-s3c2443/mach-smdk2443.c

@@ -104,7 +104,7 @@ static struct s3c2410_uartcfg smdk2443_uartcfgs[] __initdata = {
 static struct platform_device *smdk2443_devices[] __initdata = {
 static struct platform_device *smdk2443_devices[] __initdata = {
 	&s3c_device_wdt,
 	&s3c_device_wdt,
 	&s3c_device_i2c,
 	&s3c_device_i2c,
-	&s3c_device_hsmmc,
+	&s3c_device_hsmmc0,
 };
 };
 
 
 static void __init smdk2443_map_io(void)
 static void __init smdk2443_map_io(void)

+ 9 - 0
arch/arm/mach-s3c6400/include/mach/map.h

@@ -17,6 +17,12 @@
 
 
 #include <plat/map-base.h>
 #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_UART		(0x7F005000)
 #define S3C_PA_UART0		(S3C_PA_UART + 0x00)
 #define S3C_PA_UART0		(S3C_PA_UART + 0x00)
 #define S3C_PA_UART1		(S3C_PA_UART + 0x400)
 #define S3C_PA_UART1		(S3C_PA_UART + 0x400)
@@ -49,5 +55,8 @@
 
 
 /* compatibiltiy defines. */
 /* compatibiltiy defines. */
 #define S3C_PA_TIMER		S3C64XX_PA_TIMER
 #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 */
 #endif /* __ASM_ARCH_6400_MAP_H */

+ 1 - 0
arch/arm/mach-s3c6410/Kconfig

@@ -17,5 +17,6 @@ config CPU_S3C6410
 config MACH_SMDK6410
 config MACH_SMDK6410
 	bool "SMDK6410"
 	bool "SMDK6410"
 	select CPU_S3C6410
 	select CPU_S3C6410
+	select S3C_DEV_HSMMC
 	help
 	help
 	  Machine support for the Samsung SMDK6410
 	  Machine support for the Samsung SMDK6410

+ 8 - 0
arch/arm/plat-s3c/Kconfig

@@ -102,3 +102,11 @@ config S3C_LOWLEVEL_UART_PORT
 	  such as the `Uncompressing...` at start time. The value of
 	  such as the `Uncompressing...` at start time. The value of
 	  this configuration should be between zero and two. The port
 	  this configuration should be between zero and two. The port
 	  must have been initialised by the boot-loader before use.
 	  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

+ 5 - 1
arch/arm/plat-s3c/Makefile

@@ -14,4 +14,8 @@ obj-				:=
 obj-y				+=  init.o
 obj-y				+=  init.o
 obj-y				+= time.o
 obj-y				+= time.o
 obj-y				+= clock.o
 obj-y				+= clock.o
-obj-y				+= pwm-clock.o
+obj-y				+= pwm-clock.o
+
+# devices
+
+obj-$(CONFIG_S3C_DEV_HSMMC)	+= dev-hsmmc.o

+ 47 - 0
arch/arm/plat-s3c/dev-hsmmc.c

@@ -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
+	}
+};

+ 3 - 1
arch/arm/plat-s3c/include/plat/devs.h

@@ -32,7 +32,9 @@ extern struct platform_device s3c_device_iis;
 extern struct platform_device s3c_device_rtc;
 extern struct platform_device s3c_device_rtc;
 extern struct platform_device s3c_device_adc;
 extern struct platform_device s3c_device_adc;
 extern struct platform_device s3c_device_sdi;
 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_spi0;
 extern struct platform_device s3c_device_spi1;
 extern struct platform_device s3c_device_spi1;

+ 0 - 30
arch/arm/plat-s3c24xx/devs.c

@@ -403,36 +403,6 @@ struct platform_device s3c_device_sdi = {
 
 
 EXPORT_SYMBOL(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) */
 /* SPI (0) */
 
 
 static struct resource s3c_spi0_resource[] = {
 static struct resource s3c_spi0_resource[] = {