From: "John W. Linville" The siimage driver proports to support the Adaptec SA-1210 SATA controller. However, at least some of those cards boot-up with their interrupts disabled internally. The siimage driver currently ignores that fact, so that driver does not actually work with those cards. This patch enables those interrupts on cards that need it. Signed-off-by: John W. Linville Cc: Bartlomiej Zolnierkiewicz Signed-off-by: Andrew Morton --- drivers/ide/pci/siimage.c | 9 +++++++++ 1 files changed, 9 insertions(+) diff -puN drivers/ide/pci/siimage.c~siimage-enable-interrupts-on-adaptec-sa-1210-card drivers/ide/pci/siimage.c --- 25/drivers/ide/pci/siimage.c~siimage-enable-interrupts-on-adaptec-sa-1210-card Tue Oct 11 13:57:27 2005 +++ 25-akpm/drivers/ide/pci/siimage.c Tue Oct 11 13:57:27 2005 @@ -701,6 +701,7 @@ static unsigned int setup_mmio_siimage ( unsigned long barsize = pci_resource_len(dev, 5); u8 tmpbyte = 0; void __iomem *ioaddr; + u32 tmp, irq_mask; /* * Drop back to PIO if we can't map the mmio. Some @@ -726,6 +727,14 @@ static unsigned int setup_mmio_siimage ( pci_set_drvdata(dev, (void *) ioaddr); if (pdev_is_sata(dev)) { + /* make sure IDE0/1 interrupts are not masked */ + irq_mask = (1 << 22) | (1 << 23); + tmp = readl(ioaddr + 0x48); + if (tmp & irq_mask) { + tmp &= ~irq_mask; + writel(tmp, ioaddr + 0x48); + readl(ioaddr + 0x48); /* flush */ + } writel(0, ioaddr + 0x148); writel(0, ioaddr + 0x1C8); } _