--- linux-2.6.22-rc2/arch/arm/mach-s3c2443/mach-smdk2443.c	2007-05-20 11:30:11.000000000 +0100
+++ linux-2.6.22-rc2-hsmmc/arch/arm/mach-s3c2443/mach-smdk2443.c	2007-05-20 17:35:44.000000000 +0100
@@ -104,6 +104,7 @@ static struct s3c2410_uartcfg smdk2443_u
 static struct platform_device *smdk2443_devices[] __initdata = {
 	&s3c_device_wdt,
 	&s3c_device_i2c,
+	&s3c_device_hsmmc,
 };
 
 static void __init smdk2443_map_io(void)
--- linux-2.6.22-rc2/arch/arm/plat-s3c24xx/devs.c	2007-04-26 04:08:32.000000000 +0100
+++ linux-2.6.22-rc2-hsmmc/arch/arm/plat-s3c24xx/devs.c	2007-05-20 17:39:15.000000000 +0100
@@ -402,6 +402,36 @@ 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[] = {
--- linux-2.6.22-rc2/include/asm-arm/plat-s3c24xx/devs.h	2007-04-26 04:08:32.000000000 +0100
+++ linux-2.6.22-rc2-hsmmc/include/asm-arm/plat-s3c24xx/devs.h	2007-05-20 17:36:08.000000000 +0100
@@ -29,6 +29,7 @@ extern struct platform_device s3c_device
 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_spi0;
 extern struct platform_device s3c_device_spi1;

