diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-26 14:00:41 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-26 14:00:41 -0500 |
| commit | ccc039d65f24172eebab5e0160462d3417799af5 (patch) | |
| tree | c02513223bebadd57da5b6648a497f99684111e2 /include/linux | |
| parent | 1c2948380b699dfdbb25a7de740392dd9e6f0613 (diff) | |
| parent | 945be38caa287b177b8c17ffaae7754cab6a658f (diff) | |
Merge tag 'mmc-updates-for-3.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc
Pull MMC updates from Chris Ball:
"MMC highlights for 3.14:
Core:
- Avoid get_cd() on cards marked nonremovable
Drivers:
- arasan: New driver for controllers found in e.g. Xilinx Zynq SoC
- dwmmc: Support Hisilicon K3 SoC controllers
- esdhc-imx: Support for HS200 mode, DDR modes on MX6, runtime PM
- sdhci-pci: Support O2Micro/BayHubTech controllers used in laptops
like Lenovo ThinkPad W540, Dell Latitude E5440, Dell Latitude E6540
- tegra: Support Tegra124 SoCs"
* tag 'mmc-updates-for-3.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc: (55 commits)
mmc: sdhci-pci: Fix possibility of chip->fixes being null
mmc: sdhci-pci: Fix BYT sd card getting stuck in runtime suspend
mmc: sdhci: Allow for long command timeouts
mmc: sdio: add a quirk for broken SDIO_CCCR_INTx polling
mmc: sdhci: fix lockdep error in tuning routine
mmc: dw_mmc: k3: remove clk_table
mmc: dw_mmc: fix dw_mci_get_cd
mmc: dw_mmc: fix sparse non static symbol warning
mmc: sdhci-esdhc-imx: fix warning during module remove function
mmc: sdhci-esdhc-imx: fix access hardirq-unsafe lock in atomic context
mmc: core: sd: implement proper support for sd3.0 au sizes
mmc: atmel-mci: add vmmc-supply support
mmc: sdhci-pci: add broken HS200 quirk for Intel Merrifield
mmc: sdhci: add quirk for broken HS200 support
mmc: arasan: Add driver for Arasan SDHCI
mmc: dw_mmc: add dw_mmc-k3 for k3 platform
mmc: dw_mmc: use slot-gpio to handle cd pin
mmc: sdhci-pci: add support of O2Micro/BayHubTech SD hosts
mmc: sdhci-pci: break out definitions to header file
mmc: tmio: fixup compile error
...
Conflicts:
MAINTAINERS
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/mfd/tmio.h | 8 | ||||
| -rw-r--r-- | include/linux/mmc/card.h | 8 | ||||
| -rw-r--r-- | include/linux/mmc/sdhci.h | 2 | ||||
| -rw-r--r-- | include/linux/mmc/tmio.h | 1 |
4 files changed, 18 insertions, 1 deletions
diff --git a/include/linux/mfd/tmio.h b/include/linux/mfd/tmio.h index b22883d60500..8f6f2e91e7ae 100644 --- a/include/linux/mfd/tmio.h +++ b/include/linux/mfd/tmio.h | |||
| @@ -76,6 +76,13 @@ | |||
| 76 | */ | 76 | */ |
| 77 | #define TMIO_MMC_USE_GPIO_CD (1 << 5) | 77 | #define TMIO_MMC_USE_GPIO_CD (1 << 5) |
| 78 | 78 | ||
| 79 | /* | ||
| 80 | * Some controllers doesn't have over 0x100 register. | ||
| 81 | * it is used to checking accessibility of | ||
| 82 | * CTL_SD_CARD_CLK_CTL / CTL_CLK_AND_WAIT_CTL | ||
| 83 | */ | ||
| 84 | #define TMIO_MMC_HAVE_HIGH_REG (1 << 6) | ||
| 85 | |||
| 79 | int tmio_core_mmc_enable(void __iomem *cnf, int shift, unsigned long base); | 86 | int tmio_core_mmc_enable(void __iomem *cnf, int shift, unsigned long base); |
| 80 | int tmio_core_mmc_resume(void __iomem *cnf, int shift, unsigned long base); | 87 | int tmio_core_mmc_resume(void __iomem *cnf, int shift, unsigned long base); |
| 81 | void tmio_core_mmc_pwr(void __iomem *cnf, int shift, int state); | 88 | void tmio_core_mmc_pwr(void __iomem *cnf, int shift, int state); |
| @@ -102,6 +109,7 @@ struct tmio_mmc_data { | |||
| 102 | unsigned long capabilities; | 109 | unsigned long capabilities; |
| 103 | unsigned long capabilities2; | 110 | unsigned long capabilities2; |
| 104 | unsigned long flags; | 111 | unsigned long flags; |
| 112 | unsigned long bus_shift; | ||
| 105 | u32 ocr_mask; /* available voltages */ | 113 | u32 ocr_mask; /* available voltages */ |
| 106 | struct tmio_mmc_dma *dma; | 114 | struct tmio_mmc_dma *dma; |
| 107 | struct device *dev; | 115 | struct device *dev; |
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h index 176fdf824b14..b73027298b3a 100644 --- a/include/linux/mmc/card.h +++ b/include/linux/mmc/card.h | |||
| @@ -271,9 +271,10 @@ struct mmc_card { | |||
| 271 | #define MMC_QUIRK_INAND_CMD38 (1<<6) /* iNAND devices have broken CMD38 */ | 271 | #define MMC_QUIRK_INAND_CMD38 (1<<6) /* iNAND devices have broken CMD38 */ |
| 272 | #define MMC_QUIRK_BLK_NO_CMD23 (1<<7) /* Avoid CMD23 for regular multiblock */ | 272 | #define MMC_QUIRK_BLK_NO_CMD23 (1<<7) /* Avoid CMD23 for regular multiblock */ |
| 273 | #define MMC_QUIRK_BROKEN_BYTE_MODE_512 (1<<8) /* Avoid sending 512 bytes in */ | 273 | #define MMC_QUIRK_BROKEN_BYTE_MODE_512 (1<<8) /* Avoid sending 512 bytes in */ |
| 274 | /* byte mode */ | ||
| 274 | #define MMC_QUIRK_LONG_READ_TIME (1<<9) /* Data read time > CSD says */ | 275 | #define MMC_QUIRK_LONG_READ_TIME (1<<9) /* Data read time > CSD says */ |
| 275 | #define MMC_QUIRK_SEC_ERASE_TRIM_BROKEN (1<<10) /* Skip secure for erase/trim */ | 276 | #define MMC_QUIRK_SEC_ERASE_TRIM_BROKEN (1<<10) /* Skip secure for erase/trim */ |
| 276 | /* byte mode */ | 277 | #define MMC_QUIRK_BROKEN_IRQ_POLLING (1<<11) /* Polling SDIO_CCCR_INTx could create a fake interrupt */ |
| 277 | 278 | ||
| 278 | unsigned int erase_size; /* erase size in sectors */ | 279 | unsigned int erase_size; /* erase size in sectors */ |
| 279 | unsigned int erase_shift; /* if erase unit is power 2 */ | 280 | unsigned int erase_shift; /* if erase unit is power 2 */ |
| @@ -505,6 +506,11 @@ static inline int mmc_card_long_read_time(const struct mmc_card *c) | |||
| 505 | return c->quirks & MMC_QUIRK_LONG_READ_TIME; | 506 | return c->quirks & MMC_QUIRK_LONG_READ_TIME; |
| 506 | } | 507 | } |
| 507 | 508 | ||
| 509 | static inline int mmc_card_broken_irq_polling(const struct mmc_card *c) | ||
| 510 | { | ||
| 511 | return c->quirks & MMC_QUIRK_BROKEN_IRQ_POLLING; | ||
| 512 | } | ||
| 513 | |||
| 508 | #define mmc_card_name(c) ((c)->cid.prod_name) | 514 | #define mmc_card_name(c) ((c)->cid.prod_name) |
| 509 | #define mmc_card_id(c) (dev_name(&(c)->dev)) | 515 | #define mmc_card_id(c) (dev_name(&(c)->dev)) |
| 510 | 516 | ||
diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h index 3e781b8c0be7..362927c48f97 100644 --- a/include/linux/mmc/sdhci.h +++ b/include/linux/mmc/sdhci.h | |||
| @@ -98,6 +98,8 @@ struct sdhci_host { | |||
| 98 | #define SDHCI_QUIRK2_CARD_ON_NEEDS_BUS_ON (1<<4) | 98 | #define SDHCI_QUIRK2_CARD_ON_NEEDS_BUS_ON (1<<4) |
| 99 | /* Controller has a non-standard host control register */ | 99 | /* Controller has a non-standard host control register */ |
| 100 | #define SDHCI_QUIRK2_BROKEN_HOST_CONTROL (1<<5) | 100 | #define SDHCI_QUIRK2_BROKEN_HOST_CONTROL (1<<5) |
| 101 | /* Controller does not support HS200 */ | ||
| 102 | #define SDHCI_QUIRK2_BROKEN_HS200 (1<<6) | ||
| 101 | 103 | ||
| 102 | int irq; /* Device IRQ */ | 104 | int irq; /* Device IRQ */ |
| 103 | void __iomem *ioaddr; /* Mapped address */ | 105 | void __iomem *ioaddr; /* Mapped address */ |
diff --git a/include/linux/mmc/tmio.h b/include/linux/mmc/tmio.h index a1c1f321e519..84d9053b5dca 100644 --- a/include/linux/mmc/tmio.h +++ b/include/linux/mmc/tmio.h | |||
| @@ -33,6 +33,7 @@ | |||
| 33 | #define CTL_SDIO_IRQ_MASK 0x38 | 33 | #define CTL_SDIO_IRQ_MASK 0x38 |
| 34 | #define CTL_DMA_ENABLE 0xd8 | 34 | #define CTL_DMA_ENABLE 0xd8 |
| 35 | #define CTL_RESET_SD 0xe0 | 35 | #define CTL_RESET_SD 0xe0 |
| 36 | #define CTL_VERSION 0xe2 | ||
| 36 | #define CTL_SDIO_REGS 0x100 | 37 | #define CTL_SDIO_REGS 0x100 |
| 37 | #define CTL_CLK_AND_WAIT_CTL 0x138 | 38 | #define CTL_CLK_AND_WAIT_CTL 0x138 |
| 38 | #define CTL_RESET_SDIO 0x1e0 | 39 | #define CTL_RESET_SDIO 0x1e0 |
