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

Commit e67f65c3 authored by Sahitya Tummala's avatar Sahitya Tummala
Browse files

mmc: sdhci: add a quirk to define non standard tuning



Some controllers need SW to compare the data received
from the card for a tuning command. Add a quirk for
such non standard controllers so that they can read
the data from the controller using ADMA/PIO and do the
tuning sequence from SW to determine the appropriate phase.

Change-Id: I15edfdf0442e3ac678c70df29482b3304cf1215a
Signed-off-by: default avatarSahitya Tummala <stummala@codeaurora.org>
parent 5cee81b6
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -2927,8 +2927,9 @@ static void sdhci_data_irq(struct sdhci_host *host, u32 intmask)

	/* CMD19 generates _only_ Buffer Read Ready interrupt */
	if (intmask & SDHCI_INT_DATA_AVAIL) {
		if (command == MMC_SEND_TUNING_BLOCK ||
		    command == MMC_SEND_TUNING_BLOCK_HS200) {
		if (!(host->quirks2 & SDHCI_QUIRK2_NON_STANDARD_TUNING) &&
			(command == MMC_SEND_TUNING_BLOCK ||
			command == MMC_SEND_TUNING_BLOCK_HS200)) {
			host->tuning_done = 1;
			wake_up(&host->buf_ready_int);
			return;
+6 −0
Original line number Diff line number Diff line
@@ -181,6 +181,12 @@ struct sdhci_host {
#define SDHCI_QUIRK2_USE_RESET_WORKAROUND		(1<<20)
/* Some controllers doesn't have have any LED control */
#define SDHCI_QUIRK2_BROKEN_LED_CONTROL			(1<<21)
/*
 * Some controllers doesn't follow the tuning procedure as defined in spec.
 * The tuning data has to be compared from SW driver to validate the correct
 * phase.
 */
#define SDHCI_QUIRK2_NON_STANDARD_TUNING (1 << 22)

	int irq;		/* Device IRQ */
	void __iomem *ioaddr;	/* Mapped address */