2010-06-10 15:22:16 +09:00
/* linux/arch/arm/plat-samsung/dev-hsmmc3.c
*
* Copyright ( c ) 2010 Samsung Electronics Co . , Ltd .
* http : //www.samsung.com
*
* Copyright ( c ) 2008 Simtec Electronics
* Ben Dooks < ben @ simtec . co . uk >
* http : //armlinux.simtec.co.uk/
*
* Based on arch / arm / plat - samsung / dev - hsmmc1 . c
*
* Samsung device definition for hsmmc device 3
*
* 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 <linux/mmc/host.h>
# include <mach/map.h>
# include <plat/sdhci.h>
# include <plat/devs.h>
# define S3C_SZ_HSMMC (0x1000)
static struct resource s3c_hsmmc3_resource [ ] = {
[ 0 ] = {
. start = S3C_PA_HSMMC3 ,
. end = S3C_PA_HSMMC3 + S3C_SZ_HSMMC - 1 ,
. flags = IORESOURCE_MEM ,
} ,
[ 1 ] = {
2010-08-20 21:09:18 +09:00
. start = IRQ_HSMMC3 ,
. end = IRQ_HSMMC3 ,
2010-06-10 15:22:16 +09:00
. flags = IORESOURCE_IRQ ,
}
} ;
static u64 s3c_device_hsmmc3_dmamask = 0xffffffffUL ;
struct s3c_sdhci_platdata s3c_hsmmc3_def_platdata = {
. max_width = 4 ,
. host_caps = ( MMC_CAP_4_BIT_DATA |
MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED ) ,
2010-10-08 18:03:27 +09:00
. clk_type = S3C_SDHCI_CLK_DIV_INTERNAL ,
2010-06-10 15:22:16 +09:00
} ;
struct platform_device s3c_device_hsmmc3 = {
. name = " s3c-sdhci " ,
. id = 3 ,
. num_resources = ARRAY_SIZE ( s3c_hsmmc3_resource ) ,
. resource = s3c_hsmmc3_resource ,
. dev = {
. dma_mask = & s3c_device_hsmmc3_dmamask ,
. coherent_dma_mask = 0xffffffffUL ,
. platform_data = & s3c_hsmmc3_def_platdata ,
} ,
} ;
void s3c_sdhci3_set_platdata ( struct s3c_sdhci_platdata * pd )
{
struct s3c_sdhci_platdata * set = & s3c_hsmmc3_def_platdata ;
2010-07-23 09:27:18 +09:00
set - > cd_type = pd - > cd_type ;
set - > ext_cd_init = pd - > ext_cd_init ;
set - > ext_cd_cleanup = pd - > ext_cd_cleanup ;
set - > ext_cd_gpio = pd - > ext_cd_gpio ;
set - > ext_cd_gpio_invert = pd - > ext_cd_gpio_invert ;
2010-06-10 15:22:16 +09:00
2010-10-08 18:03:23 +09:00
if ( pd - > max_width )
set - > max_width = pd - > max_width ;
2010-06-10 15:22:16 +09:00
if ( pd - > cfg_gpio )
set - > cfg_gpio = pd - > cfg_gpio ;
if ( pd - > cfg_card )
set - > cfg_card = pd - > cfg_card ;
2010-10-08 18:03:23 +09:00
if ( pd - > host_caps )
set - > host_caps | = pd - > host_caps ;
2010-10-08 18:03:27 +09:00
if ( pd - > clk_type )
set - > clk_type = pd - > clk_type ;
2010-06-10 15:22:16 +09:00
}