diff --git a/common/ta_helper.c b/common/ta_helper.c
index d1b0eb1..b4886f6 100644
--- a/common/ta_helper.c
+++ b/common/ta_helper.c
@@ -6,6 +6,9 @@
 
 #include <tee/ta_helper.h>
 
+/* Log TA client API error codes. */
+#define LOCAL_DEBUG 1
+
 #ifdef LOCAL_DEBUG
 #define TA_HELPER_DEBUG(...) fprintf(stderr, __VA_ARGS__)
 #else
diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c
index ef8b348..d8bb0f0 100644
--- a/drivers/usb/gadget/f_fastboot.c
+++ b/drivers/usb/gadget/f_fastboot.c
@@ -672,6 +672,82 @@
 	return getvar_response_buffer;
 }
 
+static const char *get_emmc_wear_eol(const char *arg)
+{
+	struct mmc *mmc = find_mmc_device(CONFIG_FASTBOOT_FLASH_MMC_DEV);
+	if (!mmc || !mmc->ext_csd) {
+		return "no eMMC info";
+	}
+
+	const uint8_t value = mmc->ext_csd[EXT_CSD_PRE_EOL_INFO];
+
+	// Convert raw value into something human-readable.
+	// See eMMC spec v5.1 section 7.4.24.
+	const char *readable;
+	switch (value) {
+	case 0x00:
+		readable = "undefined";
+		break;
+	case 0x01:
+		readable = "normal";
+		break;
+	case 0x02:
+		readable = "warning";
+		break;
+	case 0x03:
+		readable = "urgent";
+		break;
+	default:
+		readable = "unknown";
+		break;
+	}
+
+	snprintf(getvar_response_buffer, GETVAR_RESPONSE_BUFFER_LEN, "%s (%d)",
+		 readable, value);
+	return getvar_response_buffer;
+}
+
+static const char *s_emmc_wear_level_list[] = { "A", "B", NULL };
+static const char *get_emmc_wear_level(const char *arg)
+{
+	if (!arg) {
+		return NULL;
+	}
+
+	struct mmc *mmc = find_mmc_device(CONFIG_FASTBOOT_FLASH_MMC_DEV);
+	if (!mmc || !mmc->ext_csd) {
+		return "no eMMC info";
+	}
+
+	uint value = 0;
+	if (strcmp(arg, "A") == 0) {
+		value = mmc->dev_lifetime_est_typ_a;
+	} else if (strcmp(arg, "B") == 0) {
+		value = mmc->dev_lifetime_est_typ_b;
+	} else {
+		return NULL;
+	}
+
+	// Convert raw value into something human-readable.
+	// See eMMC spec v5.1 sections 7.4.22 and 7.4.23.
+	char readable[16];
+	if (value == 0x00) {
+		strncpy(readable, "undefined", sizeof(readable));
+	} else if (value <= 0x0A) {
+		uint low = value * 10;
+		uint high = low + 10;
+		snprintf(readable, sizeof(readable), "%d%%-%d%%", low, high);
+	} else if (value == 0x0B) {
+		strncpy(readable, "EOL", sizeof(readable));
+	} else {
+		strncpy(readable, "unknown", sizeof(readable));
+	}
+
+	snprintf(getvar_response_buffer, GETVAR_RESPONSE_BUFFER_LEN, "%s (%d)",
+		 readable, value);
+	return getvar_response_buffer;
+}
+
 // Returns the board that the bootloader was compiled for.
 static const char *get_bootloader_board(const char *arg)
 {
@@ -1021,6 +1097,15 @@
 		.func = get_emmc_vendor,
 	},
 	{
+		.name = "emmc-wear-eol",
+		.func = get_emmc_wear_eol,
+	},
+	{
+		.name = "emmc-wear-level",
+		.func = get_emmc_wear_level,
+		.default_args = s_emmc_wear_level_list,
+	},
+	{
 		.name = "hw-revision",
 		.func = get_hw_revision,
 	},
diff --git a/include/mmc.h b/include/mmc.h
index 90a6803..1e3bc66 100644
--- a/include/mmc.h
+++ b/include/mmc.h
@@ -236,6 +236,7 @@
 #define EXT_CSD_HC_WP_GRP_SIZE		221	/* RO */
 #define EXT_CSD_HC_ERASE_GRP_SIZE	224	/* RO */
 #define EXT_CSD_BOOT_MULT		226	/* RO */
+#define EXT_CSD_PRE_EOL_INFO		267	/* RO */
 #define EXT_CSD_DEV_LIFETIME_EST_TYP_A	268	/* RO */
 #define EXT_CSD_DEV_LIFETIME_EST_TYP_B	269	/* RO */
 #define EXT_CSD_BKOPS_SUPPORT		502	/* RO */
