diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-28 23:59:45 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-28 23:59:45 -0400 |
commit | b5174fa3a7f4f8f150bfa3b917c92608953dfa0f (patch) | |
tree | 5efd32dd52fe55f760094e78f18acd3ff869751d /arch | |
parent | afb9bd704c7116076879352a2cc2c43aa12c1e14 (diff) | |
parent | 135111cc5595c6a24dd826d503e2d2bae92da1c4 (diff) |
Merge tag 'mmc-merge-for-3.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc
Pull MMC updates from Chris Ball:
Core:
* Support for MMC 4.5 Data Tag feature -- we tag REQ_META, so devices
that support Data Tag will provide increased throughput for metadata.
* Faster detection of card removal on I/O errors.
Drivers:
* dw_mmc now supports eMMC Power Off Notify, has PCI support, and
implements pre_req and post_req for asynchronous requests.
* omap_hsmmc now supports device tree.
* esdhc now has power management support.
* sdhci-tegra now supports Tegra30 devices.
* sdhci-spear now supports hibernation.
* tmio_mmc now supports using a GPIO for card detection.
* Intel PCH now supports 8-bit bus transfers.
* tag 'mmc-merge-for-3.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc: (53 commits)
mmc: sh_mmcif: simplify bitmask macros
mmc: sh_mobile_sdhi: support modular mmc-core with non-standard hotplug
mmc: sh_mobile_sdhi: add a callback for board specific init code
mmc: tmio: cosmetic: prettify the tmio_mmc_set_ios() function
mmc: sh_mobile_sdhi: do not manage PM clocks manually
mmc: tmio_mmc: remove unused sdio_irq_enabled flag
mmc: tmio_mmc: power status flag doesn't have to be exposed in platform data
mmc: sh_mobile_sdhi: pass card hotplug GPIO number to TMIO MMC
mmc: tmio_mmc: support the generic MMC GPIO card hotplug helper
mmc: tmio: calculate the native hotplug condition only once
mmc: simplify mmc_cd_gpio_request() by removing two parameters
mmc: sdhci-pci: allow 8-bit bus width for Intel PCH
mmc: sdhci: check interrupt flags in ISR again
mmc: sdhci-pci: Add MSI support
mmc: core: warn when card doesn't support HPI
mmc: davinci: Poll status for small size transfers
mmc: davinci: Eliminate spurious interrupts
mmc: omap_hsmmc: Avoid a regulator voltage change with dt
mmc: omap_hsmmc: Convert hsmmc driver to use device tree
mmc: sdhci-pci: add SDHCI_QUIRK2_HOST_OFF_CARD_ON for Medfield SDIO
...
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-exynos/mach-nuri.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-exynos/mach-universal_c210.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-omap2/hsmmc.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-omap2/hsmmc.h | 2 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/plat/mmc.h | 2 |
5 files changed, 8 insertions, 11 deletions
diff --git a/arch/arm/mach-exynos/mach-nuri.c b/arch/arm/mach-exynos/mach-nuri.c index 82ea6fccfb34..b3982c867c9c 100644 --- a/arch/arm/mach-exynos/mach-nuri.c +++ b/arch/arm/mach-exynos/mach-nuri.c | |||
@@ -111,7 +111,7 @@ static struct s3c_sdhci_platdata nuri_hsmmc0_data __initdata = { | |||
111 | .max_width = 8, | 111 | .max_width = 8, |
112 | .host_caps = (MMC_CAP_8_BIT_DATA | MMC_CAP_4_BIT_DATA | | 112 | .host_caps = (MMC_CAP_8_BIT_DATA | MMC_CAP_4_BIT_DATA | |
113 | MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED | | 113 | MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED | |
114 | MMC_CAP_DISABLE | MMC_CAP_ERASE), | 114 | MMC_CAP_ERASE), |
115 | .cd_type = S3C_SDHCI_CD_PERMANENT, | 115 | .cd_type = S3C_SDHCI_CD_PERMANENT, |
116 | .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, | 116 | .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, |
117 | }; | 117 | }; |
@@ -150,8 +150,7 @@ static struct platform_device emmc_fixed_voltage = { | |||
150 | static struct s3c_sdhci_platdata nuri_hsmmc2_data __initdata = { | 150 | static struct s3c_sdhci_platdata nuri_hsmmc2_data __initdata = { |
151 | .max_width = 4, | 151 | .max_width = 4, |
152 | .host_caps = MMC_CAP_4_BIT_DATA | | 152 | .host_caps = MMC_CAP_4_BIT_DATA | |
153 | MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED | | 153 | MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED, |
154 | MMC_CAP_DISABLE, | ||
155 | .ext_cd_gpio = EXYNOS4_GPX3(3), /* XEINT_27 */ | 154 | .ext_cd_gpio = EXYNOS4_GPX3(3), /* XEINT_27 */ |
156 | .ext_cd_gpio_invert = 1, | 155 | .ext_cd_gpio_invert = 1, |
157 | .cd_type = S3C_SDHCI_CD_GPIO, | 156 | .cd_type = S3C_SDHCI_CD_GPIO, |
diff --git a/arch/arm/mach-exynos/mach-universal_c210.c b/arch/arm/mach-exynos/mach-universal_c210.c index 28658da9f423..6bb9dbdd73fd 100644 --- a/arch/arm/mach-exynos/mach-universal_c210.c +++ b/arch/arm/mach-exynos/mach-universal_c210.c | |||
@@ -745,8 +745,7 @@ static struct platform_device universal_gpio_keys = { | |||
745 | static struct s3c_sdhci_platdata universal_hsmmc0_data __initdata = { | 745 | static struct s3c_sdhci_platdata universal_hsmmc0_data __initdata = { |
746 | .max_width = 8, | 746 | .max_width = 8, |
747 | .host_caps = (MMC_CAP_8_BIT_DATA | MMC_CAP_4_BIT_DATA | | 747 | .host_caps = (MMC_CAP_8_BIT_DATA | MMC_CAP_4_BIT_DATA | |
748 | MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED | | 748 | MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED), |
749 | MMC_CAP_DISABLE), | ||
750 | .cd_type = S3C_SDHCI_CD_PERMANENT, | 749 | .cd_type = S3C_SDHCI_CD_PERMANENT, |
751 | .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, | 750 | .clk_type = S3C_SDHCI_CLK_DIV_EXTERNAL, |
752 | }; | 751 | }; |
@@ -784,8 +783,7 @@ static struct platform_device mmc0_fixed_voltage = { | |||
784 | static struct s3c_sdhci_platdata universal_hsmmc2_data __initdata = { | 783 | static struct s3c_sdhci_platdata universal_hsmmc2_data __initdata = { |
785 | .max_width = 4, | 784 | .max_width = 4, |
786 | .host_caps = MMC_CAP_4_BIT_DATA | | 785 | .host_caps = MMC_CAP_4_BIT_DATA | |
787 | MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED | | 786 | MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED, |
788 | MMC_CAP_DISABLE, | ||
789 | .ext_cd_gpio = EXYNOS4_GPX3(4), /* XEINT_28 */ | 787 | .ext_cd_gpio = EXYNOS4_GPX3(4), /* XEINT_28 */ |
790 | .ext_cd_gpio_invert = 1, | 788 | .ext_cd_gpio_invert = 1, |
791 | .cd_type = S3C_SDHCI_CD_GPIO, | 789 | .cd_type = S3C_SDHCI_CD_GPIO, |
@@ -796,8 +794,7 @@ static struct s3c_sdhci_platdata universal_hsmmc2_data __initdata = { | |||
796 | static struct s3c_sdhci_platdata universal_hsmmc3_data __initdata = { | 794 | static struct s3c_sdhci_platdata universal_hsmmc3_data __initdata = { |
797 | .max_width = 4, | 795 | .max_width = 4, |
798 | .host_caps = MMC_CAP_4_BIT_DATA | | 796 | .host_caps = MMC_CAP_4_BIT_DATA | |
799 | MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED | | 797 | MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED, |
800 | MMC_CAP_DISABLE, | ||
801 | .cd_type = S3C_SDHCI_CD_EXTERNAL, | 798 | .cd_type = S3C_SDHCI_CD_EXTERNAL, |
802 | }; | 799 | }; |
803 | 800 | ||
diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c index 8121720e942f..100db6217f39 100644 --- a/arch/arm/mach-omap2/hsmmc.c +++ b/arch/arm/mach-omap2/hsmmc.c | |||
@@ -316,6 +316,7 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c, | |||
316 | mmc->slots[0].pm_caps = c->pm_caps; | 316 | mmc->slots[0].pm_caps = c->pm_caps; |
317 | mmc->slots[0].internal_clock = !c->ext_clock; | 317 | mmc->slots[0].internal_clock = !c->ext_clock; |
318 | mmc->dma_mask = 0xffffffff; | 318 | mmc->dma_mask = 0xffffffff; |
319 | mmc->max_freq = c->max_freq; | ||
319 | if (cpu_is_omap44xx()) | 320 | if (cpu_is_omap44xx()) |
320 | mmc->reg_offset = OMAP4_MMC_REG_OFFSET; | 321 | mmc->reg_offset = OMAP4_MMC_REG_OFFSET; |
321 | else | 322 | else |
diff --git a/arch/arm/mach-omap2/hsmmc.h b/arch/arm/mach-omap2/hsmmc.h index 07831cc3c171..7f2e790e0929 100644 --- a/arch/arm/mach-omap2/hsmmc.h +++ b/arch/arm/mach-omap2/hsmmc.h | |||
@@ -27,6 +27,8 @@ struct omap2_hsmmc_info { | |||
27 | char *name; /* or NULL for default */ | 27 | char *name; /* or NULL for default */ |
28 | struct platform_device *pdev; /* mmc controller instance */ | 28 | struct platform_device *pdev; /* mmc controller instance */ |
29 | int ocr_mask; /* temporary HACK */ | 29 | int ocr_mask; /* temporary HACK */ |
30 | int max_freq; /* maximum clock, if constrained by external | ||
31 | * circuitry, or 0 for default */ | ||
30 | /* Remux (pad configuration) when powering on/off */ | 32 | /* Remux (pad configuration) when powering on/off */ |
31 | void (*remux)(struct device *dev, int slot, int power_on); | 33 | void (*remux)(struct device *dev, int slot, int power_on); |
32 | /* init some special card */ | 34 | /* init some special card */ |
diff --git a/arch/arm/plat-omap/include/plat/mmc.h b/arch/arm/plat-omap/include/plat/mmc.h index f75946c3293d..7a38750c0079 100644 --- a/arch/arm/plat-omap/include/plat/mmc.h +++ b/arch/arm/plat-omap/include/plat/mmc.h | |||
@@ -137,8 +137,6 @@ struct omap_mmc_platform_data { | |||
137 | int (*set_power)(struct device *dev, int slot, | 137 | int (*set_power)(struct device *dev, int slot, |
138 | int power_on, int vdd); | 138 | int power_on, int vdd); |
139 | int (*get_ro)(struct device *dev, int slot); | 139 | int (*get_ro)(struct device *dev, int slot); |
140 | int (*set_sleep)(struct device *dev, int slot, int sleep, | ||
141 | int vdd, int cardsleep); | ||
142 | void (*remux)(struct device *dev, int slot, int power_on); | 140 | void (*remux)(struct device *dev, int slot, int power_on); |
143 | /* Call back before enabling / disabling regulators */ | 141 | /* Call back before enabling / disabling regulators */ |
144 | void (*before_set_reg)(struct device *dev, int slot, | 142 | void (*before_set_reg)(struct device *dev, int slot, |