SЬren Schmidt wrote: > Modified files: > sys/dev/ata ata-pci.c > Log: > Fix treating some modern chips (mem mapped) as legacy devices.
Hi, SЬren. Seems that PCIP_STORAGE_IDE_MASTERDEV, PCIP_STORAGE_IDE_MODEPRIM and PCIP_STORAGE_IDE_MODESEC should be related to the PCIS_STORAGE_IDE subclass. My Marvell 88SE6141 chip have PCIS_STORAGE_SATA subclass and PCIP_STORAGE_SATA_AHCI_1_0|PCIS_STORAGE_OTHER programming interface. And this chip detected as a legacy controller. What you think about the attached patch? -- WBR, Andrey V. Elsukov
--- /usr/src/sys/dev/ata/ata-pci.c 2007-10-29 08:01:06.000000000 +0300 +++ ata-pci.c 2007-10-29 08:11:20.000000000 +0300 @@ -59,15 +59,17 @@ int ata_legacy(device_t dev) { - return (((pci_read_config(dev, PCIR_PROGIF, 1)&PCIP_STORAGE_IDE_MASTERDEV)&& - ((pci_read_config(dev, PCIR_PROGIF, 1) & - (PCIP_STORAGE_IDE_MODEPRIM | PCIP_STORAGE_IDE_MODESEC)) != + uint32_t pi, scc; + pi = pci_read_config(dev, PCIR_PROGIF, 1); + scc = pci_read_config(dev, PCIR_SUBCLASS, 1); + return ((scc == PCIS_STORAGE_IDE && (pi & PCIP_STORAGE_IDE_MASTERDEV) && + ((pi & (PCIP_STORAGE_IDE_MODEPRIM | PCIP_STORAGE_IDE_MODESEC)) != (PCIP_STORAGE_IDE_MODEPRIM | PCIP_STORAGE_IDE_MODESEC))) || - (!pci_read_config(dev, PCIR_BAR(0), 4) && - !pci_read_config(dev, PCIR_BAR(1), 4) && - !pci_read_config(dev, PCIR_BAR(2), 4) && - !pci_read_config(dev, PCIR_BAR(3), 4) && - !pci_read_config(dev, PCIR_BAR(5), 4))); + (pci_read_config(dev, PCIR_BAR(0), 4) == 0 && + pci_read_config(dev, PCIR_BAR(1), 4) == 0 && + pci_read_config(dev, PCIR_BAR(2), 4) == 0 && + pci_read_config(dev, PCIR_BAR(3), 4) == 0 && + pci_read_config(dev, PCIR_BAR(5), 4) == 0)); } int
_______________________________________________ cvs-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/cvs-all To unsubscribe, send any mail to "[EMAIL PROTECTED]"