Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 794b0bcc authored by Asutosh Das's avatar Asutosh Das Committed by Matt Wagantall
Browse files

mmc: core: Add support to read command queue parameters



eMMC cards with EXT_CSD version >= 7, optionally support command
queuing feature as defined by JEDEC eMMC5.1. Add support for probing
command queue feature for such type of cards.

Change-Id: I9454d0d6997ccbd1778a147354859467f4a9a7d3
Signed-off-by: default avatarSujit Reddy Thumma <sthumma@codeaurora.org>
Signed-off-by: default avatarAsutosh Das <asutoshd@codeaurora.org>
Signed-off-by: default avatarVenkat Gopalakrishnan <venkatg@codeaurora.org>
parent df63c9cb
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -647,6 +647,24 @@ static int mmc_read_ext_csd(struct mmc_card *card, u8 *ext_csd)
		card->ext_csd.data_sector_size = 512;
	}

	if (card->ext_csd.rev >= 7) {
		card->ext_csd.cmdq_support = ext_csd[EXT_CSD_CMDQ_SUPPORT];
		if (card->ext_csd.cmdq_support) {
			/*
			 * Queue Depth = N + 1,
			 * see JEDEC JESD84-B51 section 7.4.19
			 */
			card->ext_csd.cmdq_depth =
				ext_csd[EXT_CSD_CMDQ_DEPTH] + 1;
			pr_info("%s: CMDQ supported: depth: %d\n",
				mmc_hostname(card->host),
				card->ext_csd.cmdq_depth);
		}
	} else {
		card->ext_csd.cmdq_support = 0;
		card->ext_csd.cmdq_depth = 0;
	}

out:
	return err;
}
+2 −0
Original line number Diff line number Diff line
@@ -116,6 +116,8 @@ struct mmc_ext_csd {
	u8			raw_pwr_cl_ddr_200_360;	/* 253 */
	u8			raw_bkops_status;	/* 246 */
	u8			raw_sectors[4];		/* 212 - 4 bytes */
	u8			cmdq_depth;		/* 307 */
	u8			cmdq_support;		/* 308 */

	unsigned int            feature_support;
#define MMC_DISCARD_FEATURE	BIT(0)                  /* CMD38 feature */
+2 −0
Original line number Diff line number Diff line
@@ -274,6 +274,8 @@ struct _mmc_csd {
#define EXT_CSD_GENERIC_CMD6_TIME	248	/* RO */
#define EXT_CSD_CACHE_SIZE		249	/* RO, 4 bytes */
#define EXT_CSD_PWR_CL_DDR_200_360	253	/* RO */
#define EXT_CSD_CMDQ_DEPTH		307	/* RO */
#define EXT_CSD_CMDQ_SUPPORT		308	/* RO */
#define EXT_CSD_TAG_UNIT_SIZE		498	/* RO */
#define EXT_CSD_DATA_TAG_SUPPORT	499	/* RO */
#define EXT_CSD_MAX_PACKED_WRITES	500	/* RO */