]> git.sur5r.net Git - u-boot/blobdiff - include/mmc.h
cfi_flash: Remove assignments from if conditions
[u-boot] / include / mmc.h
index c11f69859ed708e77f033b54c66d1030a7da08f8..a46eaed74699b982ca046bc34ea769c29a3283c4 100644 (file)
 #include <linux/compiler.h>
 #include <part.h>
 
+#if CONFIG_IS_ENABLED(MMC_HS200_SUPPORT)
+#define MMC_SUPPORTS_TUNING
+#endif
+#if CONFIG_IS_ENABLED(MMC_UHS_SUPPORT)
+#define MMC_SUPPORTS_TUNING
+#endif
+
 /* SD/MMC version bits; 8 flags, 8 major, 8 minor, 8 change */
 #define SD_VERSION_SD  (1U << 31)
 #define MMC_VERSION_MMC        (1U << 30)
@@ -425,6 +432,7 @@ struct dm_mmc_ops {
         */
        int (*get_wp)(struct udevice *dev);
 
+#ifdef MMC_SUPPORTS_TUNING
        /**
         * execute_tuning() - Start the tuning process
         *
@@ -433,7 +441,9 @@ struct dm_mmc_ops {
         * @return 0 if OK, -ve on error
         */
        int (*execute_tuning)(struct udevice *dev, uint opcode);
+#endif
 
+#if CONFIG_IS_ENABLED(MMC_UHS_SUPPORT)
        /**
         * wait_dat0() - wait until dat0 is in the target state
         *              (CLK must be running during the wait)
@@ -444,6 +454,7 @@ struct dm_mmc_ops {
         * @return 0 if dat0 is in the target state, -ve on error
         */
        int (*wait_dat0)(struct udevice *dev, int state, int timeout);
+#endif
 };
 
 #define mmc_get_ops(dev)        ((struct dm_mmc_ops *)(dev)->driver->ops)
@@ -500,13 +511,13 @@ enum bus_mode {
        SD_LEGACY,
        MMC_HS,
        SD_HS,
+       MMC_HS_52,
+       MMC_DDR_52,
        UHS_SDR12,
        UHS_SDR25,
        UHS_SDR50,
-       UHS_SDR104,
        UHS_DDR50,
-       MMC_HS_52,
-       MMC_DDR_52,
+       UHS_SDR104,
        MMC_HS_200,
        MMC_MODES_END
 };
@@ -516,8 +527,12 @@ void mmc_dump_capabilities(const char *text, uint caps);
 
 static inline bool mmc_is_mode_ddr(enum bus_mode mode)
 {
-       if ((mode == MMC_DDR_52) || (mode == UHS_DDR50))
+       if (mode == MMC_DDR_52)
                return true;
+#if CONFIG_IS_ENABLED(MMC_UHS_SUPPORT)
+       else if (mode == UHS_DDR50)
+               return true;
+#endif
        else
                return false;
 }
@@ -528,7 +543,11 @@ static inline bool mmc_is_mode_ddr(enum bus_mode mode)
 
 static inline bool supports_uhs(uint caps)
 {
+#if CONFIG_IS_ENABLED(MMC_UHS_SUPPORT)
        return (caps & UHS_CAPS) ? true : false;
+#else
+       return false;
+#endif
 }
 
 /*
@@ -566,17 +585,25 @@ struct mmc {
        uint tran_speed;
        uint legacy_speed; /* speed for the legacy mode provided by the card */
        uint read_bl_len;
+#if CONFIG_IS_ENABLED(MMC_WRITE)
        uint write_bl_len;
        uint erase_grp_size;    /* in 512-byte sectors */
+#endif
+#if CONFIG_IS_ENABLED(MMC_HW_PARTITIONING)
        uint hc_wp_grp_size;    /* in 512-byte sectors */
+#endif
+#if CONFIG_IS_ENABLED(MMC_WRITE)
        struct sd_ssr   ssr;    /* SD status register */
+#endif
        u64 capacity;
        u64 capacity_user;
        u64 capacity_boot;
        u64 capacity_rpmb;
        u64 capacity_gp[4];
+#ifndef CONFIG_SPL_BUILD
        u64 enh_user_start;
        u64 enh_user_size;
+#endif
 #if !CONFIG_IS_ENABLED(BLK)
        struct blk_desc block_dev;
 #endif
@@ -650,6 +677,17 @@ void mmc_destroy(struct mmc *mmc);
 int mmc_unbind(struct udevice *dev);
 int mmc_initialize(bd_t *bis);
 int mmc_init(struct mmc *mmc);
+int mmc_send_tuning(struct mmc *mmc, u32 opcode, int *cmd_error);
+
+/**
+ * mmc_of_parse() - Parse the device tree to get the capabilities of the host
+ *
+ * @dev:       MMC device
+ * @cfg:       MMC configuration
+ * @return 0 if OK, -ve on error
+ */
+int mmc_of_parse(struct udevice *dev, struct mmc_config *cfg);
+
 int mmc_read(struct mmc *mmc, u64 src, uchar *dst, int size);
 
 /**