Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc: sdhci: Add NO_BUSY_IRQ quirk for Marvell CAFE host chip sdhci: Add quirk for controllers with no end-of-busy IRQ
This commit is contained in:
Коммит
d86a1c3de5
|
@ -107,6 +107,7 @@ static const struct sdhci_pci_fixes sdhci_ene_714 = {
|
||||||
|
|
||||||
static const struct sdhci_pci_fixes sdhci_cafe = {
|
static const struct sdhci_pci_fixes sdhci_cafe = {
|
||||||
.quirks = SDHCI_QUIRK_NO_SIMULT_VDD_AND_POWER |
|
.quirks = SDHCI_QUIRK_NO_SIMULT_VDD_AND_POWER |
|
||||||
|
SDHCI_QUIRK_NO_BUSY_IRQ |
|
||||||
SDHCI_QUIRK_BROKEN_TIMEOUT_VAL,
|
SDHCI_QUIRK_BROKEN_TIMEOUT_VAL,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1291,8 +1291,11 @@ static void sdhci_cmd_irq(struct sdhci_host *host, u32 intmask)
|
||||||
if (host->cmd->data)
|
if (host->cmd->data)
|
||||||
DBG("Cannot wait for busy signal when also "
|
DBG("Cannot wait for busy signal when also "
|
||||||
"doing a data transfer");
|
"doing a data transfer");
|
||||||
else
|
else if (!(host->quirks & SDHCI_QUIRK_NO_BUSY_IRQ))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
/* The controller does not support the end-of-busy IRQ,
|
||||||
|
* fall through and take the SDHCI_INT_RESPONSE */
|
||||||
}
|
}
|
||||||
|
|
||||||
if (intmask & SDHCI_INT_RESPONSE)
|
if (intmask & SDHCI_INT_RESPONSE)
|
||||||
|
|
|
@ -208,6 +208,8 @@ struct sdhci_host {
|
||||||
#define SDHCI_QUIRK_BROKEN_TIMEOUT_VAL (1<<12)
|
#define SDHCI_QUIRK_BROKEN_TIMEOUT_VAL (1<<12)
|
||||||
/* Controller has an issue with buffer bits for small transfers */
|
/* Controller has an issue with buffer bits for small transfers */
|
||||||
#define SDHCI_QUIRK_BROKEN_SMALL_PIO (1<<13)
|
#define SDHCI_QUIRK_BROKEN_SMALL_PIO (1<<13)
|
||||||
|
/* Controller does not provide transfer-complete interrupt when not busy */
|
||||||
|
#define SDHCI_QUIRK_NO_BUSY_IRQ (1<<14)
|
||||||
|
|
||||||
int irq; /* Device IRQ */
|
int irq; /* Device IRQ */
|
||||||
void __iomem * ioaddr; /* Mapped address */
|
void __iomem * ioaddr; /* Mapped address */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче