diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-11 14:19:09 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-11 14:19:09 -0500 |
commit | 11b84c585764155d7cc75f95f1bdc86432e5e3cb (patch) | |
tree | 2c4718ae6ec42f47d09f8e7649eef5e7a1b00f2b /include/linux/mmc | |
parent | 29594404d7fe73cd80eaa4ee8c43dcc53970c60e (diff) | |
parent | 71e69211eac889898dec5a21270347591eb2d001 (diff) |
Merge tag 'mmc-updates-for-3.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc
Pull MMC updates from Chris Ball:
"MMC highlights for 3.8:
Core:
- Expose access to the eMMC RPMB ("Replay Protected Memory Block")
area by extending the existing mmc_block ioctl.
- Add SDIO powered-suspend DT properties to the core MMC DT binding.
- Add no-1-8-v DT flag for boards where the SD controller reports
that it supports 1.8V but the board itself has no way to switch to
1.8V.
- More work on switching to 1.8V UHS support using a vqmmc regulator.
- Fix up a case where the slot-gpio helper may fail to reset the host
controller properly if a card was removed during a transfer.
- Fix several cases where a broken device could cause an infinite
loop while we wait for a register to update.
Drivers:
- at91-mci: Remove obsolete driver, atmel-mci handles these devices
now.
- sdhci-dove: Allow using GPIOs for card-detect notifications.
- sdhci-esdhc: Fix for recovering from ADMA errors on broken silicon.
- sdhci-s3c: Add pinctrl support.
- wmt-sdmmc: New driver for WonderMedia SD/MMC controllers."
* tag 'mmc-updates-for-3.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc: (65 commits)
mmc: sdhci: implement the .card_event() method
mmc: extend the slot-gpio card-detection to use host's .card_event() method
mmc: add a card-event host operation
mmc: sdhci-s3c: Fix compilation warning
mmc: sdhci-pci: Enable SDHCI_CAN_DO_HISPD for Ricoh SDHCI controller
mmc: sdhci-dove: allow GPIOs to be used for card detection on Dove
mmc: sdhci-dove: use two-stage initialization for sdhci-pltfm
mmc: sdhci-dove: use devm_clk_get()
mmc: eSDHC: Recover from ADMA errors
mmc: dw_mmc: remove duplicated buswidth code
mmc: dw_mmc: relocate where dw_mci_setup_bus() is called from
mmc: Limit MMC speed to 52MHz if not HS200
mmc: dw_mmc: use devres functions in dw_mmc
mmc: sh_mmcif: remove unneeded clock connection ID
mmc: sh_mobile_sdhi: remove unneeded clock connection ID
mmc: sh_mobile_sdhi: fix clock frequency printing
mmc: Remove redundant null check before kfree in bus.c
mmc: Remove redundant null check before kfree in sdio_bus.c
mmc: sdhci-imx-esdhc: use more devm_* functions
mmc: dt: add no-1-8-v device tree flag
...
Diffstat (limited to 'include/linux/mmc')
-rw-r--r-- | include/linux/mmc/card.h | 2 | ||||
-rw-r--r-- | include/linux/mmc/core.h | 2 | ||||
-rw-r--r-- | include/linux/mmc/dw_mmc.h | 5 | ||||
-rw-r--r-- | include/linux/mmc/host.h | 17 | ||||
-rw-r--r-- | include/linux/mmc/mmc.h | 2 | ||||
-rw-r--r-- | include/linux/mmc/mxs-mmc.h | 19 | ||||
-rw-r--r-- | include/linux/mmc/sdhci.h | 6 |
7 files changed, 22 insertions, 31 deletions
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h index 943550dfe9ea..5c69315d60cc 100644 --- a/include/linux/mmc/card.h +++ b/include/linux/mmc/card.h | |||
@@ -85,6 +85,7 @@ struct mmc_ext_csd { | |||
85 | bool boot_ro_lockable; | 85 | bool boot_ro_lockable; |
86 | u8 raw_exception_status; /* 53 */ | 86 | u8 raw_exception_status; /* 53 */ |
87 | u8 raw_partition_support; /* 160 */ | 87 | u8 raw_partition_support; /* 160 */ |
88 | u8 raw_rpmb_size_mult; /* 168 */ | ||
88 | u8 raw_erased_mem_count; /* 181 */ | 89 | u8 raw_erased_mem_count; /* 181 */ |
89 | u8 raw_ext_csd_structure; /* 194 */ | 90 | u8 raw_ext_csd_structure; /* 194 */ |
90 | u8 raw_card_type; /* 196 */ | 91 | u8 raw_card_type; /* 196 */ |
@@ -206,6 +207,7 @@ struct mmc_part { | |||
206 | #define MMC_BLK_DATA_AREA_MAIN (1<<0) | 207 | #define MMC_BLK_DATA_AREA_MAIN (1<<0) |
207 | #define MMC_BLK_DATA_AREA_BOOT (1<<1) | 208 | #define MMC_BLK_DATA_AREA_BOOT (1<<1) |
208 | #define MMC_BLK_DATA_AREA_GP (1<<2) | 209 | #define MMC_BLK_DATA_AREA_GP (1<<2) |
210 | #define MMC_BLK_DATA_AREA_RPMB (1<<3) | ||
209 | }; | 211 | }; |
210 | 212 | ||
211 | /* | 213 | /* |
diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h index 9b9cdafc7737..5bf7c2274fcb 100644 --- a/include/linux/mmc/core.h +++ b/include/linux/mmc/core.h | |||
@@ -170,6 +170,8 @@ extern int mmc_erase_group_aligned(struct mmc_card *card, unsigned int from, | |||
170 | extern unsigned int mmc_calc_max_discard(struct mmc_card *card); | 170 | extern unsigned int mmc_calc_max_discard(struct mmc_card *card); |
171 | 171 | ||
172 | extern int mmc_set_blocklen(struct mmc_card *card, unsigned int blocklen); | 172 | extern int mmc_set_blocklen(struct mmc_card *card, unsigned int blocklen); |
173 | extern int mmc_set_blockcount(struct mmc_card *card, unsigned int blockcount, | ||
174 | bool is_rel_write); | ||
173 | extern int mmc_hw_reset(struct mmc_host *host); | 175 | extern int mmc_hw_reset(struct mmc_host *host); |
174 | extern int mmc_hw_reset_check(struct mmc_host *host); | 176 | extern int mmc_hw_reset_check(struct mmc_host *host); |
175 | extern int mmc_can_reset(struct mmc_card *card); | 177 | extern int mmc_can_reset(struct mmc_card *card); |
diff --git a/include/linux/mmc/dw_mmc.h b/include/linux/mmc/dw_mmc.h index 96531664a061..34be4f47293c 100644 --- a/include/linux/mmc/dw_mmc.h +++ b/include/linux/mmc/dw_mmc.h | |||
@@ -229,8 +229,9 @@ struct dw_mci_board { | |||
229 | u32 quirks; /* Workaround / Quirk flags */ | 229 | u32 quirks; /* Workaround / Quirk flags */ |
230 | unsigned int bus_hz; /* Clock speed at the cclk_in pad */ | 230 | unsigned int bus_hz; /* Clock speed at the cclk_in pad */ |
231 | 231 | ||
232 | unsigned int caps; /* Capabilities */ | 232 | u32 caps; /* Capabilities */ |
233 | unsigned int caps2; /* More capabilities */ | 233 | u32 caps2; /* More capabilities */ |
234 | u32 pm_caps; /* PM capabilities */ | ||
234 | /* | 235 | /* |
235 | * Override fifo depth. If 0, autodetect it from the FIFOTH register, | 236 | * Override fifo depth. If 0, autodetect it from the FIFOTH register, |
236 | * but note that this may not be reliable after a bootloader has used | 237 | * but note that this may not be reliable after a bootloader has used |
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h index 7abb0e1f7bda..61a10c17aabd 100644 --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h | |||
@@ -53,12 +53,12 @@ struct mmc_ios { | |||
53 | #define MMC_TIMING_LEGACY 0 | 53 | #define MMC_TIMING_LEGACY 0 |
54 | #define MMC_TIMING_MMC_HS 1 | 54 | #define MMC_TIMING_MMC_HS 1 |
55 | #define MMC_TIMING_SD_HS 2 | 55 | #define MMC_TIMING_SD_HS 2 |
56 | #define MMC_TIMING_UHS_SDR12 MMC_TIMING_LEGACY | 56 | #define MMC_TIMING_UHS_SDR12 3 |
57 | #define MMC_TIMING_UHS_SDR25 MMC_TIMING_SD_HS | 57 | #define MMC_TIMING_UHS_SDR25 4 |
58 | #define MMC_TIMING_UHS_SDR50 3 | 58 | #define MMC_TIMING_UHS_SDR50 5 |
59 | #define MMC_TIMING_UHS_SDR104 4 | 59 | #define MMC_TIMING_UHS_SDR104 6 |
60 | #define MMC_TIMING_UHS_DDR50 5 | 60 | #define MMC_TIMING_UHS_DDR50 7 |
61 | #define MMC_TIMING_MMC_HS200 6 | 61 | #define MMC_TIMING_MMC_HS200 8 |
62 | 62 | ||
63 | #define MMC_SDR_MODE 0 | 63 | #define MMC_SDR_MODE 0 |
64 | #define MMC_1_2V_DDR_MODE 1 | 64 | #define MMC_1_2V_DDR_MODE 1 |
@@ -136,6 +136,7 @@ struct mmc_host_ops { | |||
136 | void (*enable_preset_value)(struct mmc_host *host, bool enable); | 136 | void (*enable_preset_value)(struct mmc_host *host, bool enable); |
137 | int (*select_drive_strength)(unsigned int max_dtr, int host_drv, int card_drv); | 137 | int (*select_drive_strength)(unsigned int max_dtr, int host_drv, int card_drv); |
138 | void (*hw_reset)(struct mmc_host *host); | 138 | void (*hw_reset)(struct mmc_host *host); |
139 | void (*card_event)(struct mmc_host *host); | ||
139 | }; | 140 | }; |
140 | 141 | ||
141 | struct mmc_card; | 142 | struct mmc_card; |
@@ -211,7 +212,7 @@ struct mmc_host { | |||
211 | #define MMC_VDD_34_35 0x00400000 /* VDD voltage 3.4 ~ 3.5 */ | 212 | #define MMC_VDD_34_35 0x00400000 /* VDD voltage 3.4 ~ 3.5 */ |
212 | #define MMC_VDD_35_36 0x00800000 /* VDD voltage 3.5 ~ 3.6 */ | 213 | #define MMC_VDD_35_36 0x00800000 /* VDD voltage 3.5 ~ 3.6 */ |
213 | 214 | ||
214 | unsigned long caps; /* Host capabilities */ | 215 | u32 caps; /* Host capabilities */ |
215 | 216 | ||
216 | #define MMC_CAP_4_BIT_DATA (1 << 0) /* Can the host do 4 bit transfers */ | 217 | #define MMC_CAP_4_BIT_DATA (1 << 0) /* Can the host do 4 bit transfers */ |
217 | #define MMC_CAP_MMC_HIGHSPEED (1 << 1) /* Can do MMC high-speed timing */ | 218 | #define MMC_CAP_MMC_HIGHSPEED (1 << 1) /* Can do MMC high-speed timing */ |
@@ -241,7 +242,7 @@ struct mmc_host { | |||
241 | #define MMC_CAP_CMD23 (1 << 30) /* CMD23 supported. */ | 242 | #define MMC_CAP_CMD23 (1 << 30) /* CMD23 supported. */ |
242 | #define MMC_CAP_HW_RESET (1 << 31) /* Hardware reset */ | 243 | #define MMC_CAP_HW_RESET (1 << 31) /* Hardware reset */ |
243 | 244 | ||
244 | unsigned int caps2; /* More host capabilities */ | 245 | u32 caps2; /* More host capabilities */ |
245 | 246 | ||
246 | #define MMC_CAP2_BOOTPART_NOACC (1 << 0) /* Boot partition no access */ | 247 | #define MMC_CAP2_BOOTPART_NOACC (1 << 0) /* Boot partition no access */ |
247 | #define MMC_CAP2_CACHE_CTRL (1 << 1) /* Allow cache control */ | 248 | #define MMC_CAP2_CACHE_CTRL (1 << 1) /* Allow cache control */ |
diff --git a/include/linux/mmc/mmc.h b/include/linux/mmc/mmc.h index 01e4b394029b..94d532e41c61 100644 --- a/include/linux/mmc/mmc.h +++ b/include/linux/mmc/mmc.h | |||
@@ -286,6 +286,7 @@ struct _mmc_csd { | |||
286 | #define EXT_CSD_BKOPS_START 164 /* W */ | 286 | #define EXT_CSD_BKOPS_START 164 /* W */ |
287 | #define EXT_CSD_SANITIZE_START 165 /* W */ | 287 | #define EXT_CSD_SANITIZE_START 165 /* W */ |
288 | #define EXT_CSD_WR_REL_PARAM 166 /* RO */ | 288 | #define EXT_CSD_WR_REL_PARAM 166 /* RO */ |
289 | #define EXT_CSD_RPMB_MULT 168 /* RO */ | ||
289 | #define EXT_CSD_BOOT_WP 173 /* R/W */ | 290 | #define EXT_CSD_BOOT_WP 173 /* R/W */ |
290 | #define EXT_CSD_ERASE_GROUP_DEF 175 /* R/W */ | 291 | #define EXT_CSD_ERASE_GROUP_DEF 175 /* R/W */ |
291 | #define EXT_CSD_PART_CONFIG 179 /* R/W */ | 292 | #define EXT_CSD_PART_CONFIG 179 /* R/W */ |
@@ -339,6 +340,7 @@ struct _mmc_csd { | |||
339 | 340 | ||
340 | #define EXT_CSD_PART_CONFIG_ACC_MASK (0x7) | 341 | #define EXT_CSD_PART_CONFIG_ACC_MASK (0x7) |
341 | #define EXT_CSD_PART_CONFIG_ACC_BOOT0 (0x1) | 342 | #define EXT_CSD_PART_CONFIG_ACC_BOOT0 (0x1) |
343 | #define EXT_CSD_PART_CONFIG_ACC_RPMB (0x3) | ||
342 | #define EXT_CSD_PART_CONFIG_ACC_GP0 (0x4) | 344 | #define EXT_CSD_PART_CONFIG_ACC_GP0 (0x4) |
343 | 345 | ||
344 | #define EXT_CSD_PART_SUPPORT_PART_EN (0x1) | 346 | #define EXT_CSD_PART_SUPPORT_PART_EN (0x1) |
diff --git a/include/linux/mmc/mxs-mmc.h b/include/linux/mmc/mxs-mmc.h deleted file mode 100644 index 7c2ad3a7f2f3..000000000000 --- a/include/linux/mmc/mxs-mmc.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2011 Freescale Semiconductor, Inc. All Rights Reserved. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | |||
9 | #ifndef __LINUX_MMC_MXS_MMC_H__ | ||
10 | #define __LINUX_MMC_MXS_MMC_H__ | ||
11 | |||
12 | struct mxs_mmc_platform_data { | ||
13 | int wp_gpio; /* write protect pin */ | ||
14 | unsigned int flags; | ||
15 | #define SLOTF_4_BIT_CAPABLE (1 << 0) | ||
16 | #define SLOTF_8_BIT_CAPABLE (1 << 1) | ||
17 | }; | ||
18 | |||
19 | #endif /* __LINUX_MMC_MXS_MMC_H__ */ | ||
diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h index 1edcb4dad8c4..4bbc3301fbbf 100644 --- a/include/linux/mmc/sdhci.h +++ b/include/linux/mmc/sdhci.h | |||
@@ -92,6 +92,8 @@ struct sdhci_host { | |||
92 | 92 | ||
93 | #define SDHCI_QUIRK2_HOST_OFF_CARD_ON (1<<0) | 93 | #define SDHCI_QUIRK2_HOST_OFF_CARD_ON (1<<0) |
94 | #define SDHCI_QUIRK2_HOST_NO_CMD23 (1<<1) | 94 | #define SDHCI_QUIRK2_HOST_NO_CMD23 (1<<1) |
95 | /* The system physically doesn't support 1.8v, even if the host does */ | ||
96 | #define SDHCI_QUIRK2_NO_1_8_V (1<<2) | ||
95 | 97 | ||
96 | int irq; /* Device IRQ */ | 98 | int irq; /* Device IRQ */ |
97 | void __iomem *ioaddr; /* Mapped address */ | 99 | void __iomem *ioaddr; /* Mapped address */ |
@@ -158,8 +160,8 @@ struct sdhci_host { | |||
158 | 160 | ||
159 | struct timer_list timer; /* Timer for timeouts */ | 161 | struct timer_list timer; /* Timer for timeouts */ |
160 | 162 | ||
161 | unsigned int caps; /* Alternative CAPABILITY_0 */ | 163 | u32 caps; /* Alternative CAPABILITY_0 */ |
162 | unsigned int caps1; /* Alternative CAPABILITY_1 */ | 164 | u32 caps1; /* Alternative CAPABILITY_1 */ |
163 | 165 | ||
164 | unsigned int ocr_avail_sdio; /* OCR bit masks */ | 166 | unsigned int ocr_avail_sdio; /* OCR bit masks */ |
165 | unsigned int ocr_avail_sd; | 167 | unsigned int ocr_avail_sd; |