From 6a9975678eced5ba9e5d7a769c416bcf052b6167 Mon Sep 17 00:00:00 2001 From: Linus Walleij Date: Mon, 14 Sep 2009 12:57:11 +0100 Subject: [PATCH] --- yaml --- r: 166051 b: refs/heads/master c: 9e6c82cd3e1a739ef48bf8c1decc8e7a7d8de3ac h: refs/heads/master i: 166049: 6f4267e1ca06a3df3da806be4dd547bc4c5f3543 166047: 006f8ad70fbace57eb0cc0a86ffcecd1aceb221a v: v3 --- [refs] | 2 +- trunk/arch/arm/include/asm/mach/mmc.h | 1 + trunk/arch/arm/mach-u300/mmc.c | 2 ++ trunk/drivers/mmc/host/mmci.c | 4 ++++ 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index c5ada34f69d8..22dcf3e9f976 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a6a6464a0ecd20c5f1594a4fe5b24af6181b7366 +refs/heads/master: 9e6c82cd3e1a739ef48bf8c1decc8e7a7d8de3ac diff --git a/trunk/arch/arm/include/asm/mach/mmc.h b/trunk/arch/arm/include/asm/mach/mmc.h index b490ecc79def..27bec555ee16 100644 --- a/trunk/arch/arm/include/asm/mach/mmc.h +++ b/trunk/arch/arm/include/asm/mach/mmc.h @@ -12,6 +12,7 @@ struct mmc_platform_data { unsigned int (*status)(struct device *); int gpio_wp; int gpio_cd; + unsigned long capabilities; }; #endif diff --git a/trunk/arch/arm/mach-u300/mmc.c b/trunk/arch/arm/mach-u300/mmc.c index 585cc013639d..089b9957b6a4 100644 --- a/trunk/arch/arm/mach-u300/mmc.c +++ b/trunk/arch/arm/mach-u300/mmc.c @@ -158,6 +158,8 @@ int __devinit mmc_init(struct amba_device *adev) mmci_card->mmc0_plat_data.status = mmc_status; mmci_card->mmc0_plat_data.gpio_wp = -1; mmci_card->mmc0_plat_data.gpio_cd = -1; + mmci_card->mmc0_plat_data.capabilities = MMC_CAP_MMC_HIGHSPEED | + MMC_CAP_SD_HIGHSPEED | MMC_CAP_4_BIT_DATA; mmcsd_device->platform_data = (void *) &mmci_card->mmc0_plat_data; diff --git a/trunk/drivers/mmc/host/mmci.c b/trunk/drivers/mmc/host/mmci.c index 031141a7c87e..bf7c05b29e2c 100644 --- a/trunk/drivers/mmc/host/mmci.c +++ b/trunk/drivers/mmc/host/mmci.c @@ -62,6 +62,9 @@ static void mmci_set_clkreg(struct mmci_host *host, unsigned int desired) /* clk |= MCI_CLK_PWRSAVE; */ } + if (host->mmc->ios.bus_width == MMC_BUS_WIDTH_4) + clk |= MCI_WIDE_BUS; + writel(clk, host->base + MMCICLOCK); } @@ -601,6 +604,7 @@ static int __devinit mmci_probe(struct amba_device *dev, struct amba_id *id) mmc->f_min = (host->mclk + 511) / 512; mmc->f_max = min(host->mclk, fmax); mmc->ocr_avail = plat->ocr_mask; + mmc->caps = plat->capabilities; /* * We can do SGIO