pata_ali: Fix regression with old devices
authorAlan Cox <alan@linux.intel.com>
Mon, 30 Nov 2009 13:23:05 +0000 (13:23 +0000)
committerJeff Garzik <jgarzik@redhat.com>
Thu, 3 Dec 2009 07:46:36 +0000 (02:46 -0500)
Making the new stuff work broke some of the old chipsets. We need to go
back to the old set up values for these it seems. Unfortunately even with
documentation this is basically a mix of cargoculting and guesswork.

Chased down to the exact line by Gianluca.

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/ata/pata_ali.c

index 1432dc9d0ab819d899ac3a506606a6778b146f30..9434114b2ca8cb6f42e40d4ed2091360cd2add9e 100644 (file)
@@ -453,7 +453,9 @@ static void ali_init_chipset(struct pci_dev *pdev)
                        /* Clear CD-ROM DMA write bit */
                        tmp &= 0x7F;
                /* Cable and UDMA */
-               pci_write_config_byte(pdev, 0x4B, tmp | 0x09);
+               if (pdev->revision >= 0xc2)
+                       tmp |= 0x01;
+               pci_write_config_byte(pdev, 0x4B, tmp | 0x08);
                /*
                 * CD_ROM DMA on (0x53 bit 0). Enable this even if we want
                 * to use PIO. 0x53 bit 1 (rev 20 only) - enable FIFO control