aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mmc/card.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/mmc/card.h')
-rw-r--r--include/linux/mmc/card.h20
1 files changed, 17 insertions, 3 deletions
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
index 6ad43554ac0..9178aa48209 100644
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
@@ -77,6 +77,12 @@ struct mmc_ext_csd {
77 u8 raw_sec_feature_support;/* 231 */ 77 u8 raw_sec_feature_support;/* 231 */
78 u8 raw_trim_mult; /* 232 */ 78 u8 raw_trim_mult; /* 232 */
79 u8 raw_sectors[4]; /* 212 - 4 bytes */ 79 u8 raw_sectors[4]; /* 212 - 4 bytes */
80 bool hpi_en; /* HPI enablebit */
81 bool hpi; /* HPI support bit */
82 unsigned int hpi_cmd; /* cmd used as HPI */
83 u8 out_of_int_time; /* out of int time */
84 bool bk_ops; /* BK ops support bit */
85 bool bk_ops_en; /* BK ops enable bit */
80}; 86};
81 87
82struct sd_scr { 88struct sd_scr {
@@ -176,6 +182,8 @@ struct mmc_card {
176#define MMC_STATE_BLOCKADDR (1<<3) /* card uses block-addressing */ 182#define MMC_STATE_BLOCKADDR (1<<3) /* card uses block-addressing */
177#define MMC_STATE_HIGHSPEED_DDR (1<<4) /* card is in high speed mode */ 183#define MMC_STATE_HIGHSPEED_DDR (1<<4) /* card is in high speed mode */
178#define MMC_STATE_ULTRAHIGHSPEED (1<<5) /* card is in ultra high speed mode */ 184#define MMC_STATE_ULTRAHIGHSPEED (1<<5) /* card is in ultra high speed mode */
185#define MMC_STATE_DOING_BKOPS (1<<6) /* Card doing bkops */
186#define MMC_STATE_NEED_BKOPS (1<<7) /* Card needs to do bkops */
179#define MMC_CARD_SDXC (1<<6) /* card is SDXC */ 187#define MMC_CARD_SDXC (1<<6) /* card is SDXC */
180 unsigned int quirks; /* card quirks */ 188 unsigned int quirks; /* card quirks */
181#define MMC_QUIRK_LENIENT_FN0 (1<<0) /* allow SDIO FN0 writes outside of the VS CCCR range */ 189#define MMC_QUIRK_LENIENT_FN0 (1<<0) /* allow SDIO FN0 writes outside of the VS CCCR range */
@@ -312,9 +320,10 @@ static inline void __maybe_unused remove_quirk(struct mmc_card *card, int data)
312#define mmc_card_highspeed(c) ((c)->state & MMC_STATE_HIGHSPEED) 320#define mmc_card_highspeed(c) ((c)->state & MMC_STATE_HIGHSPEED)
313#define mmc_card_blockaddr(c) ((c)->state & MMC_STATE_BLOCKADDR) 321#define mmc_card_blockaddr(c) ((c)->state & MMC_STATE_BLOCKADDR)
314#define mmc_card_ddr_mode(c) ((c)->state & MMC_STATE_HIGHSPEED_DDR) 322#define mmc_card_ddr_mode(c) ((c)->state & MMC_STATE_HIGHSPEED_DDR)
315#define mmc_sd_card_uhs(c) ((c)->state & MMC_STATE_ULTRAHIGHSPEED) 323#define mmc_sd_card_uhs(c) ((c)->state & MMC_STATE_ULTRAHIGHSPEED)
316#define mmc_card_ext_capacity(c) ((c)->state & MMC_CARD_SDXC) 324#define mmc_card_ext_capacity(c) ((c)->state & MMC_CARD_SDXC)
317 325#define mmc_card_doing_bkops(c) ((c)->state & MMC_STATE_DOING_BKOPS)
326#define mmc_card_need_bkops(c) ((c)->state & MMC_STATE_NEED_BKOPS)
318#define mmc_card_set_present(c) ((c)->state |= MMC_STATE_PRESENT) 327#define mmc_card_set_present(c) ((c)->state |= MMC_STATE_PRESENT)
319#define mmc_card_set_readonly(c) ((c)->state |= MMC_STATE_READONLY) 328#define mmc_card_set_readonly(c) ((c)->state |= MMC_STATE_READONLY)
320#define mmc_card_set_highspeed(c) ((c)->state |= MMC_STATE_HIGHSPEED) 329#define mmc_card_set_highspeed(c) ((c)->state |= MMC_STATE_HIGHSPEED)
@@ -356,6 +365,11 @@ static inline void __maybe_unused remove_quirk_sd(struct mmc_card *card,
356 if (mmc_card_sd(card)) 365 if (mmc_card_sd(card))
357 card->quirks &= ~data; 366 card->quirks &= ~data;
358} 367}
368#define mmc_card_set_doing_bkops(c) ((c)->state |= MMC_STATE_DOING_BKOPS)
369#define mmc_card_set_need_bkops(c) ((c)->state |= MMC_STATE_NEED_BKOPS)
370
371#define mmc_card_clr_doing_bkops(c) ((c)->state &= ~MMC_STATE_DOING_BKOPS)
372#define mmc_card_clr_need_bkops(c) ((c)->state &= ~MMC_STATE_NEED_BKOPS)
359 373
360static inline int mmc_card_lenient_fn0(const struct mmc_card *c) 374static inline int mmc_card_lenient_fn0(const struct mmc_card *c)
361{ 375{
@@ -403,4 +417,4 @@ extern void mmc_unregister_driver(struct mmc_driver *);
403extern void mmc_fixup_device(struct mmc_card *card, 417extern void mmc_fixup_device(struct mmc_card *card,
404 const struct mmc_fixup *table); 418 const struct mmc_fixup *table);
405 419
406#endif 420#endif /* LINUX_MMC_CARD_H */