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

Commit 4cdfdf34 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "mmc: cmdq_hci: Fix ADMA error issue"

parents 3c7f4024 e0cc2601
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -486,10 +486,9 @@ static int cmdq_dma_map(struct mmc_host *host, struct mmc_request *mrq)
	return sg_count;
}

static void cmdq_set_tran_desc(u8 *desc,
				 dma_addr_t addr, int len, bool end)
static void cmdq_set_tran_desc(u8 *desc, dma_addr_t addr, int len,
				bool end, bool is_dma64)
{
	__le64 *dataddr = (__le64 __force *)(desc + 4);
	__le32 *attr = (__le32 __force *)desc;

	*attr = (VALID(1) |
@@ -498,7 +497,15 @@ static void cmdq_set_tran_desc(u8 *desc,
		 ACT(0x4) |
		 DAT_LENGTH(len));

	if (is_dma64) {
		__le64 *dataddr = (__le64 __force *)(desc + 4);

		dataddr[0] = cpu_to_le64(addr);
	} else {
		__le32 *dataddr = (__le32 __force *)(desc + 4);

		dataddr[0] = cpu_to_le32(addr);
	}
}

static int cmdq_prep_tran_desc(struct mmc_request *mrq,
@@ -527,7 +534,7 @@ static int cmdq_prep_tran_desc(struct mmc_request *mrq,

		if ((i+1) == sg_count)
			end = true;
		cmdq_set_tran_desc(desc, addr, len, end);
		cmdq_set_tran_desc(desc, addr, len, end, cq_host->dma64);
		desc += cq_host->trans_desc_len;
	}