mirror of
https://github.com/torvalds/linux.git
synced 2024-11-19 02:21:47 +00:00
28c80aa707
This patch adds clock types into platform data to support external clock divider instead of internal clock divider. It is defined that what kinds of clock type is used in machine. Signed-off-by: Jeongbae Seo <jeongbae.seo@samsung.com> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
80 lines
2.0 KiB
C
80 lines
2.0 KiB
C
/* linux/arch/arm/plat-s3c/dev-hsmmc1.c
|
|
*
|
|
* Copyright (c) 2008 Simtec Electronics
|
|
* Ben Dooks <ben@simtec.co.uk>
|
|
* http://armlinux.simtec.co.uk/
|
|
*
|
|
* S3C series device definition for hsmmc device 1
|
|
*
|
|
* 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>
|
|
#include <plat/cpu.h>
|
|
|
|
#define S3C_SZ_HSMMC (0x1000)
|
|
|
|
static struct resource s3c_hsmmc1_resource[] = {
|
|
[0] = {
|
|
.start = S3C_PA_HSMMC1,
|
|
.end = S3C_PA_HSMMC1 + S3C_SZ_HSMMC - 1,
|
|
.flags = IORESOURCE_MEM,
|
|
},
|
|
[1] = {
|
|
.start = IRQ_HSMMC1,
|
|
.end = IRQ_HSMMC1,
|
|
.flags = IORESOURCE_IRQ,
|
|
}
|
|
};
|
|
|
|
static u64 s3c_device_hsmmc1_dmamask = 0xffffffffUL;
|
|
|
|
struct s3c_sdhci_platdata s3c_hsmmc1_def_platdata = {
|
|
.max_width = 4,
|
|
.host_caps = (MMC_CAP_4_BIT_DATA |
|
|
MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED),
|
|
.clk_type = S3C_SDHCI_CLK_DIV_INTERNAL,
|
|
};
|
|
|
|
struct platform_device s3c_device_hsmmc1 = {
|
|
.name = "s3c-sdhci",
|
|
.id = 1,
|
|
.num_resources = ARRAY_SIZE(s3c_hsmmc1_resource),
|
|
.resource = s3c_hsmmc1_resource,
|
|
.dev = {
|
|
.dma_mask = &s3c_device_hsmmc1_dmamask,
|
|
.coherent_dma_mask = 0xffffffffUL,
|
|
.platform_data = &s3c_hsmmc1_def_platdata,
|
|
},
|
|
};
|
|
|
|
void s3c_sdhci1_set_platdata(struct s3c_sdhci_platdata *pd)
|
|
{
|
|
struct s3c_sdhci_platdata *set = &s3c_hsmmc1_def_platdata;
|
|
|
|
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;
|
|
|
|
if (pd->max_width)
|
|
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;
|
|
if (pd->host_caps)
|
|
set->host_caps |= pd->host_caps;
|
|
if (pd->clk_type)
|
|
set->clk_type = pd->clk_type;
|
|
}
|