|
@@ -67,6 +67,7 @@ static struct variant_data variant_arm = {
|
|
|
.f_max = 100000000,
|
|
|
.reversed_irq_handling = true,
|
|
|
.mmcimask1 = true,
|
|
|
+ .irq_pio_mask = MCI_IRQ_PIO_MASK,
|
|
|
.start_err = MCI_STARTBITERR,
|
|
|
.opendrain = MCI_ROD,
|
|
|
.init = mmci_variant_init,
|
|
@@ -85,6 +86,7 @@ static struct variant_data variant_arm_extended_fifo = {
|
|
|
.pwrreg_powerup = MCI_PWR_UP,
|
|
|
.f_max = 100000000,
|
|
|
.mmcimask1 = true,
|
|
|
+ .irq_pio_mask = MCI_IRQ_PIO_MASK,
|
|
|
.start_err = MCI_STARTBITERR,
|
|
|
.opendrain = MCI_ROD,
|
|
|
.init = mmci_variant_init,
|
|
@@ -104,6 +106,7 @@ static struct variant_data variant_arm_extended_fifo_hwfc = {
|
|
|
.pwrreg_powerup = MCI_PWR_UP,
|
|
|
.f_max = 100000000,
|
|
|
.mmcimask1 = true,
|
|
|
+ .irq_pio_mask = MCI_IRQ_PIO_MASK,
|
|
|
.start_err = MCI_STARTBITERR,
|
|
|
.opendrain = MCI_ROD,
|
|
|
.init = mmci_variant_init,
|
|
@@ -129,6 +132,7 @@ static struct variant_data variant_u300 = {
|
|
|
.pwrreg_clkgate = true,
|
|
|
.pwrreg_nopower = true,
|
|
|
.mmcimask1 = true,
|
|
|
+ .irq_pio_mask = MCI_IRQ_PIO_MASK,
|
|
|
.start_err = MCI_STARTBITERR,
|
|
|
.opendrain = MCI_OD,
|
|
|
.init = mmci_variant_init,
|
|
@@ -155,6 +159,7 @@ static struct variant_data variant_nomadik = {
|
|
|
.pwrreg_clkgate = true,
|
|
|
.pwrreg_nopower = true,
|
|
|
.mmcimask1 = true,
|
|
|
+ .irq_pio_mask = MCI_IRQ_PIO_MASK,
|
|
|
.start_err = MCI_STARTBITERR,
|
|
|
.opendrain = MCI_OD,
|
|
|
.init = mmci_variant_init,
|
|
@@ -187,6 +192,7 @@ static struct variant_data variant_ux500 = {
|
|
|
.busy_detect_mask = MCI_ST_BUSYENDMASK,
|
|
|
.pwrreg_nopower = true,
|
|
|
.mmcimask1 = true,
|
|
|
+ .irq_pio_mask = MCI_IRQ_PIO_MASK,
|
|
|
.start_err = MCI_STARTBITERR,
|
|
|
.opendrain = MCI_OD,
|
|
|
.init = mmci_variant_init,
|
|
@@ -221,6 +227,7 @@ static struct variant_data variant_ux500v2 = {
|
|
|
.busy_detect_mask = MCI_ST_BUSYENDMASK,
|
|
|
.pwrreg_nopower = true,
|
|
|
.mmcimask1 = true,
|
|
|
+ .irq_pio_mask = MCI_IRQ_PIO_MASK,
|
|
|
.start_err = MCI_STARTBITERR,
|
|
|
.opendrain = MCI_OD,
|
|
|
.init = mmci_variant_init,
|
|
@@ -237,6 +244,7 @@ static struct variant_data variant_stm32 = {
|
|
|
.cmdreg_lrsp_crc = MCI_CPSM_RESPONSE | MCI_CPSM_LONGRSP,
|
|
|
.cmdreg_srsp_crc = MCI_CPSM_RESPONSE,
|
|
|
.cmdreg_srsp = MCI_CPSM_RESPONSE,
|
|
|
+ .irq_pio_mask = MCI_IRQ_PIO_MASK,
|
|
|
.datalength_bits = 24,
|
|
|
.datactrl_blocksz = 11,
|
|
|
.datactrl_dpsm_enable = MCI_DPSM_ENABLE,
|
|
@@ -273,6 +281,7 @@ static struct variant_data variant_qcom = {
|
|
|
.qcom_fifo = true,
|
|
|
.qcom_dml = true,
|
|
|
.mmcimask1 = true,
|
|
|
+ .irq_pio_mask = MCI_IRQ_PIO_MASK,
|
|
|
.start_err = MCI_STARTBITERR,
|
|
|
.opendrain = MCI_ROD,
|
|
|
.init = qcom_variant_init,
|
|
@@ -556,7 +565,7 @@ static void mmci_set_mask1(struct mmci_host *host, unsigned int mask)
|
|
|
if (host->singleirq) {
|
|
|
unsigned int mask0 = readl(base + MMCIMASK0);
|
|
|
|
|
|
- mask0 &= ~MCI_IRQ1MASK;
|
|
|
+ mask0 &= ~variant->irq_pio_mask;
|
|
|
mask0 |= mask;
|
|
|
|
|
|
writel(mask0, base + MMCIMASK0);
|
|
@@ -1458,7 +1467,7 @@ static irqreturn_t mmci_irq(int irq, void *dev_id)
|
|
|
if (status & host->mask1_reg)
|
|
|
mmci_pio_irq(irq, dev_id);
|
|
|
|
|
|
- status &= ~MCI_IRQ1MASK;
|
|
|
+ status &= ~host->variant->irq_pio_mask;
|
|
|
}
|
|
|
|
|
|
/*
|