[PATCH] 5/7 AU1100 MMC support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Interrupt management fix up.

Signed-off-by: Rodolfo Giometti <giometti@xxxxxxxx>

-- 

GNU/Linux Solutions                  e-mail:    giometti@xxxxxxxxxxxx
Linux Device Driver                             giometti@xxxxxxxxx
Embedded Systems                     		giometti@xxxxxxxx
UNIX programming                     phone:     +39 349 2432127
diff --git a/drivers/mmc/au1xmmc.c b/drivers/mmc/au1xmmc.c
index 10e8e06..f2d44cd 100644
--- a/drivers/mmc/au1xmmc.c
+++ b/drivers/mmc/au1xmmc.c
@@ -772,11 +772,7 @@ static irqreturn_t au1xmmc_irq(int irq, 
 {
 	struct au1xmmc_host *host = dev_id;
 	u32 status;
-	int i, ret = 0;
-
-	disable_irq(AU1100_SD_IRQ);
-
-	u32 handled = 1;
+	int ret = IRQ_HANDLED;
 
 	status = au_readl(HOST_STATUS(host));
 
@@ -821,15 +817,12 @@ #endif
 	}
 	else if (status & 0x203FBC70) {
 		dbg("Unhandled status %8.8x\n", host->id, status);
-		handled = 0;
+		ret = IRQ_NONE;
 	}
 
 	au_writel(status, HOST_STATUS(host));
 	au_sync();
 
-	ret |= handled;
-
-	enable_irq(AU1100_SD_IRQ);
 	return ret;
 }
 
@@ -987,7 +980,6 @@ static int __devinit au1xmmc_probe(struc
 	info("MMC controller set up at %x irq %d (mode=%s)\n",
 		host->id, base_addr_phys, host->irq, dma ? "dma" : "pio");
 
-	enable_irq(AU1100_SD_IRQ);
 	platform_set_drvdata(pdev, host);
 
 	return 0;
@@ -1021,8 +1013,6 @@ static int __devexit au1xmmc_remove(stru
 	if (!host)
 		return 0;
 
-	disable_irq(AU1100_SD_IRQ);
-
 	tasklet_kill(&host->data_task);
 	tasklet_kill(&host->finish_task);
 

[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux