diff options
Diffstat (limited to 'drivers/ata/sata_mv.c')
-rw-r--r-- | drivers/ata/sata_mv.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c index 4ae1a4138b47..74b1080d116d 100644 --- a/drivers/ata/sata_mv.c +++ b/drivers/ata/sata_mv.c | |||
@@ -2218,12 +2218,13 @@ static irqreturn_t mv_interrupt(int irq, void *dev_instance) | |||
2218 | else | 2218 | else |
2219 | handled = mv_host_intr(host, pending_irqs); | 2219 | handled = mv_host_intr(host, pending_irqs); |
2220 | } | 2220 | } |
2221 | spin_unlock(&host->lock); | ||
2222 | 2221 | ||
2223 | /* for MSI: unmask; interrupt cause bits will retrigger now */ | 2222 | /* for MSI: unmask; interrupt cause bits will retrigger now */ |
2224 | if (using_msi) | 2223 | if (using_msi) |
2225 | writel(hpriv->main_irq_mask, hpriv->main_irq_mask_addr); | 2224 | writel(hpriv->main_irq_mask, hpriv->main_irq_mask_addr); |
2226 | 2225 | ||
2226 | spin_unlock(&host->lock); | ||
2227 | |||
2227 | return IRQ_RETVAL(handled); | 2228 | return IRQ_RETVAL(handled); |
2228 | } | 2229 | } |
2229 | 2230 | ||
@@ -3114,19 +3115,17 @@ static int mv_init_host(struct ata_host *host, unsigned int board_idx) | |||
3114 | writelfl(0, hc_mmio + HC_IRQ_CAUSE_OFS); | 3115 | writelfl(0, hc_mmio + HC_IRQ_CAUSE_OFS); |
3115 | } | 3116 | } |
3116 | 3117 | ||
3117 | if (!IS_SOC(hpriv)) { | 3118 | /* Clear any currently outstanding host interrupt conditions */ |
3118 | /* Clear any currently outstanding host interrupt conditions */ | 3119 | writelfl(0, mmio + hpriv->irq_cause_ofs); |
3119 | writelfl(0, mmio + hpriv->irq_cause_ofs); | ||
3120 | 3120 | ||
3121 | /* and unmask interrupt generation for host regs */ | 3121 | /* and unmask interrupt generation for host regs */ |
3122 | writelfl(hpriv->unmask_all_irqs, mmio + hpriv->irq_mask_ofs); | 3122 | writelfl(hpriv->unmask_all_irqs, mmio + hpriv->irq_mask_ofs); |
3123 | 3123 | ||
3124 | /* | 3124 | /* |
3125 | * enable only global host interrupts for now. | 3125 | * enable only global host interrupts for now. |
3126 | * The per-port interrupts get done later as ports are set up. | 3126 | * The per-port interrupts get done later as ports are set up. |
3127 | */ | 3127 | */ |
3128 | mv_set_main_irq_mask(host, 0, PCI_ERR); | 3128 | mv_set_main_irq_mask(host, 0, PCI_ERR); |
3129 | } | ||
3130 | done: | 3129 | done: |
3131 | return rc; | 3130 | return rc; |
3132 | } | 3131 | } |