1/* linux/arch/arm/plat-s3c/dev-hsmmc1.c 2 * 3 * Copyright (c) 2008 Simtec Electronics 4 * Ben Dooks <ben@simtec.co.uk> 5 * http://armlinux.simtec.co.uk/ 6 * 7 * S3C series device definition for hsmmc device 1 8 * 9 * This program is free software; you can redistribute it and/or modify 10 * it under the terms of the GNU General Public License version 2 as 11 * published by the Free Software Foundation. 12*/ 13 14#include <linux/kernel.h> 15#include <linux/platform_device.h> 16#include <linux/mmc/host.h> 17 18#include <mach/map.h> 19#include <plat/sdhci.h> 20#include <plat/devs.h> 21#include <plat/cpu.h> 22 23#define S3C_SZ_HSMMC (0x1000) 24 25static struct resource s3c_hsmmc1_resource[] = { 26 [0] = { 27 .start = S3C_PA_HSMMC1, 28 .end = S3C_PA_HSMMC1 + S3C_SZ_HSMMC - 1, 29 .flags = IORESOURCE_MEM, 30 }, 31 [1] = { 32 .start = IRQ_HSMMC1, 33 .end = IRQ_HSMMC1, 34 .flags = IORESOURCE_IRQ, 35 } 36}; 37 38static u64 s3c_device_hsmmc1_dmamask = 0xffffffffUL; 39 40struct s3c_sdhci_platdata s3c_hsmmc1_def_platdata = { 41 .max_width = 4, 42 .host_caps = (MMC_CAP_4_BIT_DATA | 43 MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED), 44}; 45 46struct platform_device s3c_device_hsmmc1 = { 47 .name = "s3c-sdhci", 48 .id = 1, 49 .num_resources = ARRAY_SIZE(s3c_hsmmc1_resource), 50 .resource = s3c_hsmmc1_resource, 51 .dev = { 52 .dma_mask = &s3c_device_hsmmc1_dmamask, 53 .coherent_dma_mask = 0xffffffffUL, 54 .platform_data = &s3c_hsmmc1_def_platdata, 55 }, 56}; 57 58void s3c_sdhci1_set_platdata(struct s3c_sdhci_platdata *pd) 59{ 60 struct s3c_sdhci_platdata *set = &s3c_hsmmc1_def_platdata; 61 62 set->max_width = pd->max_width; 63 set->cd_type = pd->cd_type; 64 set->ext_cd_init = pd->ext_cd_init; 65 set->ext_cd_cleanup = pd->ext_cd_cleanup; 66 set->ext_cd_gpio = pd->ext_cd_gpio; 67 set->ext_cd_gpio_invert = pd->ext_cd_gpio_invert; 68 69 if (pd->cfg_gpio) 70 set->cfg_gpio = pd->cfg_gpio; 71 if (pd->cfg_card) 72 set->cfg_card = pd->cfg_card; 73 if (pd->host_caps) 74 set->host_caps = pd->host_caps; 75} 76