pata_via: Fix 6410 misdetect
authorAlan Cox <alan@lxorguk.ukuu.org.uk>
Tue, 29 Apr 2008 13:10:57 +0000 (14:10 +0100)
committerJeff Garzik <jgarzik@redhat.com>
Tue, 29 Apr 2008 21:41:10 +0000 (17:41 -0400)
The discrete VIA ATA chips don't have 0x40 enable bits. We check that
properly in one location but not another. This causes some users 6410
RAID cards to be incorrectly skipped.

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

index d4840748fb5c902cfdd15bee9ee9c3b39081914d..2fea6cbe7755853b73331d09c1de61ccbba28a35 100644 (file)
@@ -464,11 +464,12 @@ static int via_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
        }
        pci_dev_put(isa);
 
-       /* 0x40 low bits indicate enabled channels */
-       pci_read_config_byte(pdev, 0x40 , &enable);
-       enable &= 3;
-       if (enable == 0) {
-               return -ENODEV;
+       if (!(config->flags & VIA_NO_ENABLES)) {
+               /* 0x40 low bits indicate enabled channels */
+               pci_read_config_byte(pdev, 0x40 , &enable);
+               enable &= 3;
+               if (enable == 0)
+                       return -ENODEV;
        }
 
        /* Initialise the FIFO for the enabled channels. */