summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorYangbo Lu <yangbo.lu@nxp.com>2020-09-01 16:58:01 +0800
committerPeng Fan <peng.fan@nxp.com>2020-10-12 15:46:29 +0800
commitb1a4247b411522bc4b81dd349c5945dea0b3e9f8 (patch)
tree3c1f41cde9aeaeda3d872f5a93422c90b11e0dbf /include
parent1fdefd1d0d12ac728e29a67a224777299840a397 (diff)
downloadu-boot-b1a4247b411522bc4b81dd349c5945dea0b3e9f8.tar.gz
u-boot-b1a4247b411522bc4b81dd349c5945dea0b3e9f8.tar.xz
u-boot-b1a4247b411522bc4b81dd349c5945dea0b3e9f8.zip
mmc: fsl_esdhc: support tuning for eMMC HS200
Support tuning process for eMMC HS200 for eSDHC. Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
Diffstat (limited to 'include')
-rw-r--r--include/fsl_esdhc.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/include/fsl_esdhc.h b/include/fsl_esdhc.h
index 7f8f8edc62..0a426e1471 100644
--- a/include/fsl_esdhc.h
+++ b/include/fsl_esdhc.h
@@ -74,8 +74,10 @@
#define IRQSTATEN_TC (0x00000002)
#define IRQSTATEN_CC (0x00000001)
+/* eSDHC control register */
#define ESDHCCTL 0x0002e40c
#define ESDHCCTL_PCS (0x00080000)
+#define ESDHCCTL_FAF (0x00040000)
#define PRSSTAT 0x0002e024
#define PRSSTAT_DAT0 (0x01000000)
@@ -154,6 +156,12 @@
#define BLKATTR_SIZE(x) (x & 0x1fff)
#define MAX_BLK_CNT 0x7fff /* so malloc will have enough room with 32M */
+/* Auto CMD error status register / system control 2 register */
+#define EXECUTE_TUNING 0x00400000
+#define SMPCLKSEL 0x00800000
+#define UHSM_MASK 0x00070000
+#define UHSM_SDR104_HS200 0x00030000
+
/* Host controller capabilities register */
#define HOSTCAPBLT_VS18 0x04000000
#define HOSTCAPBLT_VS30 0x02000000
@@ -162,6 +170,11 @@
#define HOSTCAPBLT_DMAS 0x00400000
#define HOSTCAPBLT_HSS 0x00200000
+/* Tuning block control register */
+#define TBCTL_TB_EN 0x00000004
+
+#define MAX_TUNING_LOOP 40
+
struct fsl_esdhc_cfg {
phys_addr_t esdhc_base;
u32 sdhc_clk;
@@ -203,10 +216,6 @@ struct fsl_esdhc_cfg {
int fsl_esdhc_mmc_init(struct bd_info *bis);
int fsl_esdhc_initialize(struct bd_info *bis, struct fsl_esdhc_cfg *cfg);
void fdt_fixup_esdhc(void *blob, struct bd_info *bd);
-#ifdef MMC_SUPPORTS_TUNING
-static inline int fsl_esdhc_execute_tuning(struct udevice *dev,
- uint32_t opcode) {return 0; }
-#endif
#else
static inline int fsl_esdhc_mmc_init(struct bd_info *bis) { return -ENOSYS; }
static inline void fdt_fixup_esdhc(void *blob, struct bd_info *bd) {}