2008-10-31 16:14:28 +00:00
/* 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>
2008-10-31 16:14:38 +00:00
# include <linux/mmc/host.h>
2008-10-31 16:14:28 +00:00
# include <mach/map.h>
2008-10-31 16:14:38 +00:00
# include <plat/sdhci.h>
2008-10-31 16:14:28 +00:00
# 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 ;
2008-10-31 16:14:38 +00:00
struct s3c_sdhci_platdata s3c_hsmmc0_def_platdata = {
. max_width = 4 ,
. host_caps = ( MMC_CAP_4_BIT_DATA |
MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED ) ,
} ;
2008-10-31 16:14:28 +00:00
struct platform_device s3c_device_hsmmc0 = {
2008-10-31 16:14:38 +00:00
. 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 ,
. platform_data = & s3c_hsmmc0_def_platdata ,
} ,
2008-10-31 16:14:28 +00:00
} ;
2008-10-31 16:14:38 +00:00
void s3c_sdhci0_set_platdata ( struct s3c_sdhci_platdata * pd )
{
struct s3c_sdhci_platdata * set = & s3c_hsmmc0_def_platdata ;
set - > max_width = pd - > max_width ;
if ( pd - > cfg_gpio )
set - > cfg_gpio = pd - > cfg_gpio ;
if ( pd - > cfg_card )
set - > cfg_card = pd - > cfg_card ;
}