diff --git a/ChangeLog b/ChangeLog index f5ebc103b..5f5a8838a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2006-03-16 Daniel Stone + + * hw/xfree86/common/xf86PciInfo.h: + * hw/xfree86/os-support/bus/zx1PCI.c: + Add support for ZX2 PCI-E local bus adaptors. (Alex Williamson, HP) + + * hw/xfree86/os-support/bus/zx1PCI.c: + Use soft timeout register to avoid MCAs when probing for non-existent + local bus adaptors on ZX2. (Alex Williamson, HP) + 2006-03-15 Adam Jackson * configure.ac: diff --git a/hw/xfree86/common/xf86PciInfo.h b/hw/xfree86/common/xf86PciInfo.h index 7d0056de1..c18d512a9 100644 --- a/hw/xfree86/common/xf86PciInfo.h +++ b/hw/xfree86/common/xf86PciInfo.h @@ -507,6 +507,7 @@ #define PCI_CHIP_ZX2_LBA 0x12EE #define PCI_CHIP_ZX2_SBA 0x4030 #define PCI_CHIP_ZX2_IOC 0x4031 +#define PCI_CHIP_ZX2_PCIE 0x4037 /* SGS */ #define PCI_CHIP_STG2000 0x0008 diff --git a/hw/xfree86/os-support/bus/zx1PCI.c b/hw/xfree86/os-support/bus/zx1PCI.c index 81111a0ab..b6a33d27c 100644 --- a/hw/xfree86/os-support/bus/zx1PCI.c +++ b/hw/xfree86/os-support/bus/zx1PCI.c @@ -105,6 +105,7 @@ #define LBA_CLEAR_ERROR 0x0000000010UL #define LBA_HARD_FAIL 0x0000000040UL #define LBA_RESET_COMPLETE 0x0100000000UL +#define LBA_RESET_TIMEOUT 0x0200000000UL #define ROPE_PAGE_CONTROL 0x1418U @@ -563,6 +564,15 @@ xf86PreScanZX1(void) /* Prevent hard-fails */ zx1_lbacntl[i] = MIO_QUAD((i << 3) + LBA_PORT0_CNTRL) & ~(LBA_RESET_FUNCTION | LBA_CLEAR_ERROR); + + if (zx1_lbacntl[i] & LBA_RESET_TIMEOUT) { + /* Ignore this rope and its couplings */ + do { + zx1_ropemap[i++] = -1; + } while ((i < 8) && (zx1_ropemap[i] < i)); + continue; /* Avoid over-incrementing 'i' */ + } + if (zx1_lbacntl[i] & LBA_HARD_FAIL) MIO_QUAD((i << 3) + LBA_PORT0_CNTRL) = zx1_lbacntl[i] & ~LBA_HARD_FAIL; @@ -574,6 +584,7 @@ xf86PreScanZX1(void) case DEVID(VENDOR_HP, CHIP_ZX1_LBA): /* Mercury */ case DEVID(VENDOR_HP, CHIP_ZX1_AGP8): /* QuickSilver */ case DEVID(VENDOR_HP, CHIP_ZX2_LBA): + case DEVID(VENDOR_HP, CHIP_ZX2_PCIE): /* Expected vendor/device IDs */ zx1_busno[i] = (unsigned int)IOA_BYTE(i, IOA_SECONDARY_BUS); @@ -971,6 +982,7 @@ xf86PostScanZX1(void) case DEVID(VENDOR_HP, CHIP_ZX2_SBA): case DEVID(VENDOR_HP, CHIP_ZX2_IOC): case DEVID(VENDOR_HP, CHIP_ZX2_LBA): + case DEVID(VENDOR_HP, CHIP_ZX2_PCIE): xfree(pPCI); /* Remove it */ continue;