diff options
| author | Ingo Molnar <mingo@kernel.org> | 2014-12-12 03:09:03 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2014-12-12 03:09:03 -0500 |
| commit | 3459f0d78ffe27a1b341c22eb158b622eaaea3fc (patch) | |
| tree | 715b0575eec541d0181876ad367ca5480cdcecf3 /include/linux/mmc | |
| parent | 9fc81d87420d0d3fd62d5e5529972c0ad9eab9cc (diff) | |
| parent | bee2782f30f66898be3f74ad02e4d1f87a969694 (diff) | |
Merge branch 'linus' into perf/urgent, to pick up the upstream merged bits
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'include/linux/mmc')
| -rw-r--r-- | include/linux/mmc/card.h | 23 | ||||
| -rw-r--r-- | include/linux/mmc/core.h | 3 | ||||
| -rw-r--r-- | include/linux/mmc/dw_mmc.h | 7 | ||||
| -rw-r--r-- | include/linux/mmc/host.h | 1 | ||||
| -rw-r--r-- | include/linux/mmc/mmc.h | 3 | ||||
| -rw-r--r-- | include/linux/mmc/sdhci.h | 18 | ||||
| -rw-r--r-- | include/linux/mmc/sdio_func.h | 2 |
7 files changed, 32 insertions, 25 deletions
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h index b0692d28f8e6..4d69c00497bd 100644 --- a/include/linux/mmc/card.h +++ b/include/linux/mmc/card.h | |||
| @@ -88,6 +88,9 @@ struct mmc_ext_csd { | |||
| 88 | unsigned int data_tag_unit_size; /* DATA TAG UNIT size */ | 88 | unsigned int data_tag_unit_size; /* DATA TAG UNIT size */ |
| 89 | unsigned int boot_ro_lock; /* ro lock support */ | 89 | unsigned int boot_ro_lock; /* ro lock support */ |
| 90 | bool boot_ro_lockable; | 90 | bool boot_ro_lockable; |
| 91 | bool ffu_capable; /* Firmware upgrade support */ | ||
| 92 | #define MMC_FIRMWARE_LEN 8 | ||
| 93 | u8 fwrev[MMC_FIRMWARE_LEN]; /* FW version */ | ||
| 91 | u8 raw_exception_status; /* 54 */ | 94 | u8 raw_exception_status; /* 54 */ |
| 92 | u8 raw_partition_support; /* 160 */ | 95 | u8 raw_partition_support; /* 160 */ |
| 93 | u8 raw_rpmb_size_mult; /* 168 */ | 96 | u8 raw_rpmb_size_mult; /* 168 */ |
| @@ -509,24 +512,8 @@ static inline int mmc_card_broken_irq_polling(const struct mmc_card *c) | |||
| 509 | 512 | ||
| 510 | #define mmc_dev_to_card(d) container_of(d, struct mmc_card, dev) | 513 | #define mmc_dev_to_card(d) container_of(d, struct mmc_card, dev) |
| 511 | 514 | ||
| 512 | #define mmc_list_to_card(l) container_of(l, struct mmc_card, node) | 515 | extern int mmc_register_driver(struct device_driver *); |
| 513 | #define mmc_get_drvdata(c) dev_get_drvdata(&(c)->dev) | 516 | extern void mmc_unregister_driver(struct device_driver *); |
| 514 | #define mmc_set_drvdata(c,d) dev_set_drvdata(&(c)->dev, d) | ||
| 515 | |||
| 516 | /* | ||
| 517 | * MMC device driver (e.g., Flash card, I/O card...) | ||
| 518 | */ | ||
| 519 | struct mmc_driver { | ||
| 520 | struct device_driver drv; | ||
| 521 | int (*probe)(struct mmc_card *); | ||
| 522 | void (*remove)(struct mmc_card *); | ||
| 523 | int (*suspend)(struct mmc_card *); | ||
| 524 | int (*resume)(struct mmc_card *); | ||
| 525 | void (*shutdown)(struct mmc_card *); | ||
| 526 | }; | ||
| 527 | |||
| 528 | extern int mmc_register_driver(struct mmc_driver *); | ||
| 529 | extern void mmc_unregister_driver(struct mmc_driver *); | ||
| 530 | 517 | ||
| 531 | extern void mmc_fixup_device(struct mmc_card *card, | 518 | extern void mmc_fixup_device(struct mmc_card *card, |
| 532 | const struct mmc_fixup *table); | 519 | const struct mmc_fixup *table); |
diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h index f206e29f94d7..cb2b0400d284 100644 --- a/include/linux/mmc/core.h +++ b/include/linux/mmc/core.h | |||
| @@ -154,7 +154,8 @@ extern void mmc_start_bkops(struct mmc_card *card, bool from_exception); | |||
| 154 | extern int __mmc_switch(struct mmc_card *, u8, u8, u8, unsigned int, bool, | 154 | extern int __mmc_switch(struct mmc_card *, u8, u8, u8, unsigned int, bool, |
| 155 | bool, bool); | 155 | bool, bool); |
| 156 | extern int mmc_switch(struct mmc_card *, u8, u8, u8, unsigned int); | 156 | extern int mmc_switch(struct mmc_card *, u8, u8, u8, unsigned int); |
| 157 | extern int mmc_send_ext_csd(struct mmc_card *card, u8 *ext_csd); | 157 | extern int mmc_send_tuning(struct mmc_host *host); |
| 158 | extern int mmc_get_ext_csd(struct mmc_card *card, u8 **new_ext_csd); | ||
| 158 | 159 | ||
| 159 | #define MMC_ERASE_ARG 0x00000000 | 160 | #define MMC_ERASE_ARG 0x00000000 |
| 160 | #define MMC_SECURE_ERASE_ARG 0x80000000 | 161 | #define MMC_SECURE_ERASE_ARG 0x80000000 |
diff --git a/include/linux/mmc/dw_mmc.h b/include/linux/mmc/dw_mmc.h index 001366927cf4..42b724e8d503 100644 --- a/include/linux/mmc/dw_mmc.h +++ b/include/linux/mmc/dw_mmc.h | |||
| @@ -54,6 +54,7 @@ struct mmc_data; | |||
| 54 | * transfer is in progress. | 54 | * transfer is in progress. |
| 55 | * @use_dma: Whether DMA channel is initialized or not. | 55 | * @use_dma: Whether DMA channel is initialized or not. |
| 56 | * @using_dma: Whether DMA is in use for the current transfer. | 56 | * @using_dma: Whether DMA is in use for the current transfer. |
| 57 | * @dma_64bit_address: Whether DMA supports 64-bit address mode or not. | ||
| 57 | * @sg_dma: Bus address of DMA buffer. | 58 | * @sg_dma: Bus address of DMA buffer. |
| 58 | * @sg_cpu: Virtual address of DMA buffer. | 59 | * @sg_cpu: Virtual address of DMA buffer. |
| 59 | * @dma_ops: Pointer to platform-specific DMA callbacks. | 60 | * @dma_ops: Pointer to platform-specific DMA callbacks. |
| @@ -96,6 +97,7 @@ struct mmc_data; | |||
| 96 | * @quirks: Set of quirks that apply to specific versions of the IP. | 97 | * @quirks: Set of quirks that apply to specific versions of the IP. |
| 97 | * @irq_flags: The flags to be passed to request_irq. | 98 | * @irq_flags: The flags to be passed to request_irq. |
| 98 | * @irq: The irq value to be passed to request_irq. | 99 | * @irq: The irq value to be passed to request_irq. |
| 100 | * @sdio_id0: Number of slot0 in the SDIO interrupt registers. | ||
| 99 | * | 101 | * |
| 100 | * Locking | 102 | * Locking |
| 101 | * ======= | 103 | * ======= |
| @@ -135,11 +137,11 @@ struct dw_mci { | |||
| 135 | struct mmc_command stop_abort; | 137 | struct mmc_command stop_abort; |
| 136 | unsigned int prev_blksz; | 138 | unsigned int prev_blksz; |
| 137 | unsigned char timing; | 139 | unsigned char timing; |
| 138 | struct workqueue_struct *card_workqueue; | ||
| 139 | 140 | ||
| 140 | /* DMA interface members*/ | 141 | /* DMA interface members*/ |
| 141 | int use_dma; | 142 | int use_dma; |
| 142 | int using_dma; | 143 | int using_dma; |
| 144 | int dma_64bit_address; | ||
| 143 | 145 | ||
| 144 | dma_addr_t sg_dma; | 146 | dma_addr_t sg_dma; |
| 145 | void *sg_cpu; | 147 | void *sg_cpu; |
| @@ -154,7 +156,6 @@ struct dw_mci { | |||
| 154 | u32 stop_cmdr; | 156 | u32 stop_cmdr; |
| 155 | u32 dir_status; | 157 | u32 dir_status; |
| 156 | struct tasklet_struct tasklet; | 158 | struct tasklet_struct tasklet; |
| 157 | struct work_struct card_work; | ||
| 158 | unsigned long pending_events; | 159 | unsigned long pending_events; |
| 159 | unsigned long completed_events; | 160 | unsigned long completed_events; |
| 160 | enum dw_mci_state state; | 161 | enum dw_mci_state state; |
| @@ -193,6 +194,8 @@ struct dw_mci { | |||
| 193 | bool vqmmc_enabled; | 194 | bool vqmmc_enabled; |
| 194 | unsigned long irq_flags; /* IRQ flags */ | 195 | unsigned long irq_flags; /* IRQ flags */ |
| 195 | int irq; | 196 | int irq; |
| 197 | |||
| 198 | int sdio_id0; | ||
| 196 | }; | 199 | }; |
| 197 | 200 | ||
| 198 | /* DMA ops for Internal/External DMAC interface */ | 201 | /* DMA ops for Internal/External DMAC interface */ |
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h index df0c15396bbf..9f322706f7cb 100644 --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h | |||
| @@ -289,6 +289,7 @@ struct mmc_host { | |||
| 289 | #define MMC_CAP2_HS400_1_2V (1 << 16) /* Can support HS400 1.2V */ | 289 | #define MMC_CAP2_HS400_1_2V (1 << 16) /* Can support HS400 1.2V */ |
| 290 | #define MMC_CAP2_HS400 (MMC_CAP2_HS400_1_8V | \ | 290 | #define MMC_CAP2_HS400 (MMC_CAP2_HS400_1_8V | \ |
| 291 | MMC_CAP2_HS400_1_2V) | 291 | MMC_CAP2_HS400_1_2V) |
| 292 | #define MMC_CAP2_HSX00_1_2V (MMC_CAP2_HS200_1_2V_SDR | MMC_CAP2_HS400_1_2V) | ||
| 292 | #define MMC_CAP2_SDIO_IRQ_NOTHREAD (1 << 17) | 293 | #define MMC_CAP2_SDIO_IRQ_NOTHREAD (1 << 17) |
| 293 | 294 | ||
| 294 | mmc_pm_flag_t pm_caps; /* supported pm features */ | 295 | mmc_pm_flag_t pm_caps; /* supported pm features */ |
diff --git a/include/linux/mmc/mmc.h b/include/linux/mmc/mmc.h index 1cd00b3a75b9..49ad7a943638 100644 --- a/include/linux/mmc/mmc.h +++ b/include/linux/mmc/mmc.h | |||
| @@ -296,6 +296,7 @@ struct _mmc_csd { | |||
| 296 | #define EXT_CSD_SANITIZE_START 165 /* W */ | 296 | #define EXT_CSD_SANITIZE_START 165 /* W */ |
| 297 | #define EXT_CSD_WR_REL_PARAM 166 /* RO */ | 297 | #define EXT_CSD_WR_REL_PARAM 166 /* RO */ |
| 298 | #define EXT_CSD_RPMB_MULT 168 /* RO */ | 298 | #define EXT_CSD_RPMB_MULT 168 /* RO */ |
| 299 | #define EXT_CSD_FW_CONFIG 169 /* R/W */ | ||
| 299 | #define EXT_CSD_BOOT_WP 173 /* R/W */ | 300 | #define EXT_CSD_BOOT_WP 173 /* R/W */ |
| 300 | #define EXT_CSD_ERASE_GROUP_DEF 175 /* R/W */ | 301 | #define EXT_CSD_ERASE_GROUP_DEF 175 /* R/W */ |
| 301 | #define EXT_CSD_PART_CONFIG 179 /* R/W */ | 302 | #define EXT_CSD_PART_CONFIG 179 /* R/W */ |
| @@ -332,6 +333,8 @@ struct _mmc_csd { | |||
| 332 | #define EXT_CSD_GENERIC_CMD6_TIME 248 /* RO */ | 333 | #define EXT_CSD_GENERIC_CMD6_TIME 248 /* RO */ |
| 333 | #define EXT_CSD_CACHE_SIZE 249 /* RO, 4 bytes */ | 334 | #define EXT_CSD_CACHE_SIZE 249 /* RO, 4 bytes */ |
| 334 | #define EXT_CSD_PWR_CL_DDR_200_360 253 /* RO */ | 335 | #define EXT_CSD_PWR_CL_DDR_200_360 253 /* RO */ |
| 336 | #define EXT_CSD_FIRMWARE_VERSION 254 /* RO, 8 bytes */ | ||
| 337 | #define EXT_CSD_SUPPORTED_MODE 493 /* RO */ | ||
| 335 | #define EXT_CSD_TAG_UNIT_SIZE 498 /* RO */ | 338 | #define EXT_CSD_TAG_UNIT_SIZE 498 /* RO */ |
| 336 | #define EXT_CSD_DATA_TAG_SUPPORT 499 /* RO */ | 339 | #define EXT_CSD_DATA_TAG_SUPPORT 499 /* RO */ |
| 337 | #define EXT_CSD_MAX_PACKED_WRITES 500 /* RO */ | 340 | #define EXT_CSD_MAX_PACKED_WRITES 500 /* RO */ |
diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h index dba793e3a331..375af80bde7d 100644 --- a/include/linux/mmc/sdhci.h +++ b/include/linux/mmc/sdhci.h | |||
| @@ -100,6 +100,12 @@ struct sdhci_host { | |||
| 100 | #define SDHCI_QUIRK2_BROKEN_DDR50 (1<<7) | 100 | #define SDHCI_QUIRK2_BROKEN_DDR50 (1<<7) |
| 101 | /* Stop command (CMD12) can set Transfer Complete when not using MMC_RSP_BUSY */ | 101 | /* Stop command (CMD12) can set Transfer Complete when not using MMC_RSP_BUSY */ |
| 102 | #define SDHCI_QUIRK2_STOP_WITH_TC (1<<8) | 102 | #define SDHCI_QUIRK2_STOP_WITH_TC (1<<8) |
| 103 | /* Controller does not support 64-bit DMA */ | ||
| 104 | #define SDHCI_QUIRK2_BROKEN_64_BIT_DMA (1<<9) | ||
| 105 | /* need clear transfer mode register before send cmd */ | ||
| 106 | #define SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD (1<<10) | ||
| 107 | /* Capability register bit-63 indicates HS400 support */ | ||
| 108 | #define SDHCI_QUIRK2_CAPS_BIT63_FOR_HS400 (1<<11) | ||
| 103 | 109 | ||
| 104 | int irq; /* Device IRQ */ | 110 | int irq; /* Device IRQ */ |
| 105 | void __iomem *ioaddr; /* Mapped address */ | 111 | void __iomem *ioaddr; /* Mapped address */ |
| @@ -130,6 +136,7 @@ struct sdhci_host { | |||
| 130 | #define SDHCI_SDIO_IRQ_ENABLED (1<<9) /* SDIO irq enabled */ | 136 | #define SDHCI_SDIO_IRQ_ENABLED (1<<9) /* SDIO irq enabled */ |
| 131 | #define SDHCI_SDR104_NEEDS_TUNING (1<<10) /* SDR104/HS200 needs tuning */ | 137 | #define SDHCI_SDR104_NEEDS_TUNING (1<<10) /* SDR104/HS200 needs tuning */ |
| 132 | #define SDHCI_USING_RETUNING_TIMER (1<<11) /* Host is using a retuning timer for the card */ | 138 | #define SDHCI_USING_RETUNING_TIMER (1<<11) /* Host is using a retuning timer for the card */ |
| 139 | #define SDHCI_USE_64_BIT_DMA (1<<12) /* Use 64-bit DMA */ | ||
| 133 | 140 | ||
| 134 | unsigned int version; /* SDHCI spec. version */ | 141 | unsigned int version; /* SDHCI spec. version */ |
| 135 | 142 | ||
| @@ -155,12 +162,19 @@ struct sdhci_host { | |||
| 155 | 162 | ||
| 156 | int sg_count; /* Mapped sg entries */ | 163 | int sg_count; /* Mapped sg entries */ |
| 157 | 164 | ||
| 158 | u8 *adma_desc; /* ADMA descriptor table */ | 165 | void *adma_table; /* ADMA descriptor table */ |
| 159 | u8 *align_buffer; /* Bounce buffer */ | 166 | void *align_buffer; /* Bounce buffer */ |
| 167 | |||
| 168 | size_t adma_table_sz; /* ADMA descriptor table size */ | ||
| 169 | size_t align_buffer_sz; /* Bounce buffer size */ | ||
| 160 | 170 | ||
| 161 | dma_addr_t adma_addr; /* Mapped ADMA descr. table */ | 171 | dma_addr_t adma_addr; /* Mapped ADMA descr. table */ |
| 162 | dma_addr_t align_addr; /* Mapped bounce buffer */ | 172 | dma_addr_t align_addr; /* Mapped bounce buffer */ |
| 163 | 173 | ||
| 174 | unsigned int desc_sz; /* ADMA descriptor size */ | ||
| 175 | unsigned int align_sz; /* ADMA alignment */ | ||
| 176 | unsigned int align_mask; /* ADMA alignment mask */ | ||
| 177 | |||
| 164 | struct tasklet_struct finish_tasklet; /* Tasklet structures */ | 178 | struct tasklet_struct finish_tasklet; /* Tasklet structures */ |
| 165 | 179 | ||
| 166 | struct timer_list timer; /* Timer for timeouts */ | 180 | struct timer_list timer; /* Timer for timeouts */ |
diff --git a/include/linux/mmc/sdio_func.h b/include/linux/mmc/sdio_func.h index 50f0bc952328..aab032a6ae61 100644 --- a/include/linux/mmc/sdio_func.h +++ b/include/linux/mmc/sdio_func.h | |||
| @@ -84,8 +84,6 @@ struct sdio_driver { | |||
| 84 | struct device_driver drv; | 84 | struct device_driver drv; |
| 85 | }; | 85 | }; |
| 86 | 86 | ||
| 87 | #define to_sdio_driver(d) container_of(d, struct sdio_driver, drv) | ||
| 88 | |||
| 89 | /** | 87 | /** |
| 90 | * SDIO_DEVICE - macro used to describe a specific SDIO device | 88 | * SDIO_DEVICE - macro used to describe a specific SDIO device |
| 91 | * @vend: the 16 bit manufacturer code | 89 | * @vend: the 16 bit manufacturer code |
