|
@@ -30,6 +30,7 @@ struct mmc_csd {
|
|
|
unsigned short cmdclass;
|
|
|
unsigned short tacc_clks;
|
|
|
unsigned int tacc_ns;
|
|
|
+ unsigned int c_size;
|
|
|
unsigned int r2w_factor;
|
|
|
unsigned int max_dtr;
|
|
|
unsigned int erase_size; /* In sectors */
|
|
@@ -158,6 +159,8 @@ struct mmc_card {
|
|
|
#define MMC_STATE_HIGHSPEED (1<<2) /* card is in high speed mode */
|
|
|
#define MMC_STATE_BLOCKADDR (1<<3) /* card uses block-addressing */
|
|
|
#define MMC_STATE_HIGHSPEED_DDR (1<<4) /* card is in high speed mode */
|
|
|
+#define MMC_STATE_ULTRAHIGHSPEED (1<<5) /* card is in ultra high speed mode */
|
|
|
+#define MMC_CARD_SDXC (1<<6) /* card is SDXC */
|
|
|
unsigned int quirks; /* card quirks */
|
|
|
#define MMC_QUIRK_LENIENT_FN0 (1<<0) /* allow SDIO FN0 writes outside of the VS CCCR range */
|
|
|
#define MMC_QUIRK_BLKSZ_FOR_BYTE_MODE (1<<1) /* use func->cur_blksize */
|
|
@@ -293,12 +296,16 @@ static inline void __maybe_unused remove_quirk(struct mmc_card *card, int data)
|
|
|
#define mmc_card_highspeed(c) ((c)->state & MMC_STATE_HIGHSPEED)
|
|
|
#define mmc_card_blockaddr(c) ((c)->state & MMC_STATE_BLOCKADDR)
|
|
|
#define mmc_card_ddr_mode(c) ((c)->state & MMC_STATE_HIGHSPEED_DDR)
|
|
|
+#define mmc_sd_card_uhs(c) ((c)->state & MMC_STATE_ULTRAHIGHSPEED)
|
|
|
+#define mmc_card_ext_capacity(c) ((c)->state & MMC_CARD_SDXC)
|
|
|
|
|
|
#define mmc_card_set_present(c) ((c)->state |= MMC_STATE_PRESENT)
|
|
|
#define mmc_card_set_readonly(c) ((c)->state |= MMC_STATE_READONLY)
|
|
|
#define mmc_card_set_highspeed(c) ((c)->state |= MMC_STATE_HIGHSPEED)
|
|
|
#define mmc_card_set_blockaddr(c) ((c)->state |= MMC_STATE_BLOCKADDR)
|
|
|
#define mmc_card_set_ddr_mode(c) ((c)->state |= MMC_STATE_HIGHSPEED_DDR)
|
|
|
+#define mmc_sd_card_set_uhs(c) ((c)->state |= MMC_STATE_ULTRAHIGHSPEED)
|
|
|
+#define mmc_card_set_ext_capacity(c) ((c)->state |= MMC_CARD_SDXC)
|
|
|
|
|
|
static inline int mmc_card_lenient_fn0(const struct mmc_card *c)
|
|
|
{
|