summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTony Lin <tony.lin@freescale.com>2011-07-12 11:08:22 +0800
committerTony Lin <tony.lin@freescale.com>2011-07-13 19:08:41 +0800
commitaf5ae3ea01b0e9ff814c72db794ddf39ffe0a0a6 (patch)
tree4f3f2e8f90bb056bf4d3f674af5580900e64bba9 /include
parent2c2800864fed559b72d5554d4747c7e59d0c64c6 (diff)
ENGR00152547-02 [MX6Q]add SDHC3.0 support on uSDHC controller
add CMD used on SDHC3.0 card add specific parameters for SDHC3.0 card tuning Signed-off-by: Tony Lin <tony.lin@freescale.com>
Diffstat (limited to 'include')
-rw-r--r--include/linux/mmc/card.h4
-rw-r--r--include/linux/mmc/host.h7
-rw-r--r--include/linux/mmc/sd.h4
-rw-r--r--include/linux/mmc/sdhci.h4
4 files changed, 17 insertions, 2 deletions
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
index 43dea1dde6bf..ed2af09ef0d6 100644
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
@@ -66,6 +66,7 @@ struct sd_scr {
unsigned char bus_widths;
#define SD_SCR_BUS_WIDTH_1 (1<<0)
#define SD_SCR_BUS_WIDTH_4 (1<<2)
+ unsigned char sda_vsn3;
};
struct sd_ssr {
@@ -120,6 +121,9 @@ 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_SD_SDR50 (1<<5) /* card is in sdr50 mode */
+#define MMC_STATE_SD_SDR104 (1<<6) /* card is in sdr104 mode */
+#define MMC_STATE_SD_DDR50 (1<<7) /* card is in ddr50 mode */
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 */
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
index bcb793ec7374..f0035078c75d 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -56,6 +56,9 @@ struct mmc_ios {
#define MMC_SDR_MODE 0
#define MMC_1_2V_DDR_MODE 1
#define MMC_1_8V_DDR_MODE 2
+
+ unsigned int tuning_flag; /* request tuning only */
+ unsigned int tuning; /* tuning parameter */
};
struct mmc_host_ops {
@@ -193,7 +196,9 @@ struct mmc_host {
unsigned int max_req_size; /* maximum number of bytes in one req */
unsigned int max_blk_size; /* maximum size of one mmc block */
unsigned int max_blk_count; /* maximum number of blocks in one req */
-
+ unsigned int tuning_min;
+ unsigned int tuning_max;
+ unsigned int tuning_step;
/* private data */
spinlock_t lock; /* lock for claim and bus ops */
diff --git a/include/linux/mmc/sd.h b/include/linux/mmc/sd.h
index 3fd85e088cc3..d76ca1c5d3e9 100644
--- a/include/linux/mmc/sd.h
+++ b/include/linux/mmc/sd.h
@@ -84,5 +84,7 @@
#define SD_SWITCH_ACCESS_DEF 0
#define SD_SWITCH_ACCESS_HS 1
-#endif
+#define SD_VOLTAGE_SWITCH 11
+#define SD_TUNING_CMD 19
+#endif
diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h
index 83bd9f76709a..0c9a039d0cf9 100644
--- a/include/linux/mmc/sdhci.h
+++ b/include/linux/mmc/sdhci.h
@@ -145,6 +145,10 @@ struct sdhci_host {
unsigned int ocr_avail_sd;
unsigned int ocr_avail_mmc;
+ unsigned int tuning_min;
+ unsigned int tuning_max;
+ unsigned int tuning_step;
+
unsigned long private[0] ____cacheline_aligned;
};
#endif /* __SDHCI_H */