Commit 403a0293 authored by Avri Altman's avatar Avri Altman Committed by Ulf Hansson
Browse files

mmc: core: Add open-ended Ext memory addressing



For open-ended read/write - just send CMD22 before issuing the command.

Reviewed-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Signed-off-by: default avatarAvri Altman <avri.altman@wdc.com>
Link: https://lore.kernel.org/r/20241006051148.160278-5-avri.altman@wdc.com


Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 93387385
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1759,6 +1759,11 @@ static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq,
		brq->sbc.flags = MMC_RSP_R1 | MMC_CMD_AC;
		brq->mrq.sbc = &brq->sbc;
	}

	if (mmc_card_ult_capacity(card)) {
		brq->cmd.ext_addr = blk_rq_pos(req) >> 32;
		brq->cmd.has_ext_addr = true;
	}
}

#define MMC_MAX_RETRIES		5
+3 −0
Original line number Diff line number Diff line
@@ -336,6 +336,9 @@ int mmc_start_request(struct mmc_host *host, struct mmc_request *mrq)
{
	int err;

	if (mrq->cmd && mrq->cmd->has_ext_addr)
		mmc_send_ext_addr(host, mrq->cmd->ext_addr);

	init_completion(&mrq->cmd_completion);

	mmc_retune_hold(host);
+4 −0
Original line number Diff line number Diff line
@@ -96,6 +96,10 @@ struct mmc_command {
	unsigned int		busy_timeout;	/* busy detect timeout in ms */
	struct mmc_data		*data;		/* data segment associated with cmd */
	struct mmc_request	*mrq;		/* associated request */

	/* for SDUC */
	bool has_ext_addr;
	u8 ext_addr;
};

struct mmc_data {