diff options
Diffstat (limited to 'hw/xfree86/os-support/bus')
-rw-r--r-- | hw/xfree86/os-support/bus/460gxPCI.c | 21 | ||||
-rw-r--r-- | hw/xfree86/os-support/bus/Pci.c | 126 | ||||
-rw-r--r-- | hw/xfree86/os-support/bus/Pci.h | 56 | ||||
-rw-r--r-- | hw/xfree86/os-support/bus/Sbus.c | 23 | ||||
-rw-r--r-- | hw/xfree86/os-support/bus/e8870PCI.c | 4 | ||||
-rw-r--r-- | hw/xfree86/os-support/bus/freebsdPci.c | 4 | ||||
-rw-r--r-- | hw/xfree86/os-support/bus/ix86Pci.c | 80 | ||||
-rw-r--r-- | hw/xfree86/os-support/bus/netbsdPci.c | 13 | ||||
-rw-r--r-- | hw/xfree86/os-support/bus/sparcPci.c | 8 | ||||
-rw-r--r-- | hw/xfree86/os-support/bus/xf86Pci.h | 36 | ||||
-rw-r--r-- | hw/xfree86/os-support/bus/xf86Sbus.h | 8 | ||||
-rw-r--r-- | hw/xfree86/os-support/bus/zx1PCI.c | 39 |
12 files changed, 257 insertions, 161 deletions
diff --git a/hw/xfree86/os-support/bus/460gxPCI.c b/hw/xfree86/os-support/bus/460gxPCI.c index 4840fd144..3b16f401a 100644 --- a/hw/xfree86/os-support/bus/460gxPCI.c +++ b/hw/xfree86/os-support/bus/460gxPCI.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.c,v 1.2 2003/01/10 22:05:45 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/460gxPCI.c,v 1.4 2003/08/29 21:08:06 tsi Exp $ */ /* * Copyright (C) 2002-2003 The XFree86 Project, Inc. All Rights Reserved. * @@ -122,7 +122,7 @@ Control460GXBridge(int bus, CARD16 mask, CARD16 value) * host bridges. */ static void -Get460GXBridgeBusses(int bus, int *primary, int *secondary, int *subordinate) +Get460GXBridgeBuses(int bus, int *primary, int *secondary, int *subordinate) { pciConfigPtr pPCI = Verify460GXBus(bus); int i; @@ -217,7 +217,7 @@ xf86PreScan460GX(void) /* First look for a 460GX's primary host bridge */ tag = PCI_MAKE_TAG(0, 0x10, 0); - if (pciReadLong(tag, PCI_ID_REG) != DEVID(INTEL, 460GX_SAC)) { + if (pciReadLong(tag, PCI_ID_REG) != DEVID(VENDOR_INTEL, CHIP_460GX_SAC)) { cbn_460gx = -1; return FALSE; } @@ -239,7 +239,7 @@ xf86PreScan460GX(void) } tag = PCI_MAKE_TAG(cbn_460gx, 0, 0); - if (pciReadLong(tag, PCI_ID_REG) != DEVID(INTEL, 460GX_SAC)) { + if (pciReadLong(tag, PCI_ID_REG) != DEVID(VENDOR_INTEL, CHIP_460GX_SAC)) { /* Sanity check failed */ cbn_460gx = -1; return TRUE; @@ -253,7 +253,8 @@ xf86PreScan460GX(void) for (i = 0, devno = 0x10; devno <= 0x17; i++, devno++) { tag = PCI_MAKE_TAG(cbn_460gx, devno, 0); - if (pciReadLong(tag, PCI_ID_REG) != DEVID(INTEL, 460GX_SAC)) { + if (pciReadLong(tag, PCI_ID_REG) != + DEVID(VENDOR_INTEL, CHIP_460GX_SAC)) { /* Sanity check failed */ cbn_460gx = -1; return TRUE; @@ -272,8 +273,8 @@ xf86PreScan460GX(void) tag = PCI_MAKE_TAG(cbn_460gx, devno, 1); tmp = pciReadLong(tag, PCI_ID_REG); switch (tmp) { - case DEVID(INTEL, 460GX_PXB): - case DEVID(INTEL, 460GX_WXB): + case DEVID(VENDOR_INTEL, CHIP_460GX_PXB): + case DEVID(VENDOR_INTEL, CHIP_460GX_WXB): if (cbdevs_460gx & (1 << devno)) { /* Sanity check failed */ cbn_460gx = -1; @@ -289,7 +290,7 @@ xf86PreScan460GX(void) has_err_460gx[i] = 1; break; - case DEVID(INTEL, 460GX_GXB_1): + case DEVID(VENDOR_INTEL, CHIP_460GX_GXB_1): if (cbdevs_460gx & (1 << devno)) { /* Sanity check failed */ cbn_460gx = -1; @@ -323,7 +324,7 @@ xf86PreScan460GX(void) } /* - * The 460GX spec says that any access to busses higher than CBN will be + * The 460GX spec says that any access to buses higher than CBN will be * master-aborted. It seems possible however that this is not the case in * all 460GX implementations. For now, limit the bus scan to CBN, unless * we have already found a higher bus number. @@ -353,7 +354,7 @@ xf86PostScan460GX(void) /* Set up our extra bus functions */ BusFuncs_460gx = *(pciBusInfo[0]->funcs); BusFuncs_460gx.pciControlBridge = Control460GXBridge; - BusFuncs_460gx.pciGetBridgeBusses = Get460GXBridgeBusses; + BusFuncs_460gx.pciGetBridgeBuses = Get460GXBridgeBuses; BusFuncs_460gx.pciGetBridgeResources = Get460GXBridgeResources; /* diff --git a/hw/xfree86/os-support/bus/Pci.c b/hw/xfree86/os-support/bus/Pci.c index c7777827d..a0b639143 100644 --- a/hw/xfree86/os-support/bus/Pci.c +++ b/hw/xfree86/os-support/bus/Pci.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/Pci.c,v 1.71.2.2 2003/05/06 17:00:45 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/Pci.c,v 1.81 2003/09/24 02:43:34 dawes Exp $ */ /* * Pci.c - New server PCI access functions * @@ -19,8 +19,6 @@ * pciWriteByte() - Write an 8 bit value to a device's cfg space * pciSetBitsLong() - Write a 32 bit value against a mask * pciSetBitsByte() - Write an 8 bit value against a mask - * pciLongFunc() - Return pointer to the requested low level - * function * pciTag() - Return tag for a given PCI bus, device, & * function * pciBusAddrToHostAddr() - Convert a PCI address to a host address @@ -170,6 +168,33 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ +/* + * Copyright (c) 1999-2003 by The XFree86 Project, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of the copyright holder(s) + * and author(s) shall not be used in advertising or otherwise to promote + * the sale, use or other dealings in this Software without prior written + * authorization from the copyright holder(s) and author(s). + */ + #include <errno.h> #include <signal.h> #include "Xarch.h" @@ -376,7 +401,7 @@ pciSetBitsLong(PCITAG tag, int offset, CARD32 mask, CARD32 val) pciInit(); if ((bus >= 0) && (bus < pciNumBuses) && pciBusInfo[bus] && - pciBusInfo[bus]->funcs->pciReadLong) { + pciBusInfo[bus]->funcs->pciSetBitsLong) { (*pciBusInfo[bus]->funcs->pciSetBitsLong)(tag, offset, mask, val); } } @@ -393,27 +418,6 @@ pciSetBitsByte(PCITAG tag, int offset, CARD8 mask, CARD8 val) pciSetBitsLong(tag, aligned_offset, tmp_mask, tmp_val); } -pointer -pciLongFunc(PCITAG tag, pciFunc func) -{ - int bus = PCI_BUS_FROM_TAG(tag); - - pciInit(); - - if ((bus < 0) || (bus > pciNumBuses) || !pciBusInfo[bus] || - !pciBusInfo[bus]->funcs->pciReadLong) return NULL; - - switch (func) { - case WRITE: - return (void *)pciBusInfo[bus]->funcs->pciWriteLong; - case READ: - return (void *)pciBusInfo[bus]->funcs->pciReadLong; - case SET_BITS: - return (void *)pciBusInfo[bus]->funcs->pciSetBitsLong; - } - return NULL; -} - ADDRESS pciBusAddrToHostAddr(PCITAG tag, PciAddrType type, ADDRESS addr) { @@ -551,11 +555,7 @@ pciGetBaseSize(PCITAG tag, int index, Bool destructive, Bool *min) } /* I/O maps can be no larger than 8 bits */ -#if defined(Lynx) && defined(__powerpc__) - if (PCI_MAP_IS_IO(addr1) && bits > 8) -#else if ((index < 6) && PCI_MAP_IS_IO(addr1) && bits > 8) -#endif bits = 8; /* ROM maps can be no larger than 24 bits */ if (index == 6 && bits > 24) @@ -569,6 +569,8 @@ pciTag(int busnum, int devnum, int funcnum) return(PCI_MAKE_TAG(busnum,devnum,funcnum)); } +#if defined(PCI_MFDEV_SUPPORT) || defined(PowerMAX_OS) + Bool pciMfDev(int busnum, int devnum) { @@ -579,7 +581,7 @@ pciMfDev(int busnum, int devnum) tag0 = PCI_MAKE_TAG(busnum, devnum, 0); id0 = pciReadLong(tag0, PCI_ID_REG); - if (id0 == 0xffffffff) + if ((CARD16)(id0 + 1) <= (CARD16)1UL) return FALSE; val = pciReadLong(tag0, PCI_HEADER_MISC) & 0x00ff0000; @@ -594,10 +596,15 @@ pciMfDev(int busnum, int devnum) */ tag1 = PCI_MAKE_TAG(busnum, devnum, 1); id1 = pciReadLong(tag1, PCI_ID_REG); - if (id1 == 0xffffffff || id1 == 0x00000000) + if ((CARD16)(id1 + 1) <= (CARD16)1UL) + return FALSE; + + /* Vendor IDs should match */ + if ((id0 ^ id1) & 0x0000ffff) return FALSE; if ((id0 != id1) || + /* Note the following test is valid for header types 0, 1 and 2 */ (pciReadLong(tag0, PCI_MAP_REG_START) != pciReadLong(tag1, PCI_MAP_REG_START))) return TRUE; @@ -605,6 +612,8 @@ pciMfDev(int busnum, int devnum) return FALSE; } +#endif + /* * Generic find/read/write functions */ @@ -678,6 +687,7 @@ pciGenFindNext(void) * No more devices for this bus. Next bus please */ if (speculativeProbe) { + NextSpeculativeBus: xfree(pciBusInfo[pciBusNum]); pciBusInfo[pciBusNum] = NULL; speculativeProbe = FALSE; @@ -715,7 +725,7 @@ pciGenFindNext(void) #endif pciDeviceTag = PCI_MAKE_TAG(pciBusNum, pciDevNum, pciFuncNum); inProbe = TRUE; - devid = pciReadLong(pciDeviceTag, 0); + devid = pciReadLong(pciDeviceTag, PCI_ID_REG); inProbe = FALSE; #ifdef DEBUGPCI ErrorF("pciGenFindNext: pciDeviceTag = 0x%lx, devid = 0x%lx\n", pciDeviceTag, devid); @@ -723,18 +733,36 @@ pciGenFindNext(void) if ((CARD16)(devid + 1U) <= (CARD16)1UL) continue; /* Nobody home. Next device please */ + /* + * Some devices mis-decode configuration cycles in such a way as to + * create phantom buses. + */ + if (speculativeProbe && (pciDevNum == 0) && (pciFuncNum == 0) && + (PCI_BUS_NO_DOMAIN(pciBusNum) > 0)) { + for (;;) { + if (++pciDevNum >= pciBusInfo[pciBusNum]->numDevices) + goto NextSpeculativeBus; + if (devid != + pciReadLong(PCI_MAKE_TAG(pciBusNum, pciDevNum, 0), + PCI_ID_REG)) + break; + } + + pciDevNum = 0; + } + if (pciNumBuses <= pciBusNum) pciNumBuses = pciBusNum + 1; speculativeProbe = FALSE; previousBus = pciBusNum; +#ifdef PCI_BRIDGE_SUPPORT /* * Before checking for a specific devid, look for enabled * PCI to PCI bridge devices. If one is found, create and * initialize a bus info record (if one does not already exist). */ -#ifdef PCI_BRIDGE_SUPPORT tmp = pciReadLong(pciDeviceTag, PCI_CLASS_REG); base_class = PCI_CLASS_EXTRACT(tmp); sub_class = PCI_SUBCLASS_EXTRACT(tmp); @@ -754,7 +782,7 @@ pciGenFindNext(void) (sub_class != PCI_SUBCLASS_BRIDGE_CARDBUS)) xf86Msg(X_WARNING, "pciGenFindNext: primary bus mismatch on PCI" - " bridge 0x%08x (0x%02x, 0x%02x)\n", + " bridge 0x%08lx (0x%02x, 0x%02x)\n", pciDeviceTag, pciBusNum, pri_bus); pri_bus = pciBusNum; } @@ -970,12 +998,6 @@ xf86scanpci(int flags) for (i = 0; i < 17; i++) /* PCI hdr plus 1st dev spec dword */ devp->cfgspc.dwords[i] = pciReadLong(tag, i * sizeof(CARD32)); -#ifdef ARCH_PCI_HOST_BRIDGE - if ((devp->pci_base_class == PCI_CLASS_BRIDGE) && - (devp->pci_sub_class == PCI_SUBCLASS_BRIDGE_HOST)) - ARCH_PCI_HOST_BRIDGE(devp); -#endif - /* Some broken devices don't implement this field... */ if (devp->pci_header_type == 0xff) devp->pci_header_type = 0; @@ -1115,7 +1137,7 @@ xf86MapPciMem(int ScreenNum, int Flags, PCITAG Tag, ADDRESS Base, base = xf86MapDomainMemory(ScreenNum, Flags, Tag, hostbase, Size); if (!base) { FatalError("xf86MapPciMem: Could not mmap PCI memory " - "[base=0x%x,hostbase=0x%x,size=%x] (%s)\n", + "[base=0x%lx,hostbase=0x%lx,size=%lx] (%s)\n", Base, hostbase, Size, strerror(errno)); } /* @@ -1165,8 +1187,8 @@ handlePciBIOS(PCITAG Tag, int basereg, savebase = pciReadLong(Tag, PCI_MAP_REG_START+(b_reg<<2)); xf86MsgVerb(X_INFO,5,"xf86ReadPciBios: modifying membase[%i]" " for device %i:%i:%i\n", basereg, - PCI_BUS_FROM_TAG(Tag), PCI_DEV_FROM_TAG(Tag), - PCI_FUNC_FROM_TAG(Tag)); + (int)PCI_BUS_FROM_TAG(Tag), (int)PCI_DEV_FROM_TAG(Tag), + (int)PCI_FUNC_FROM_TAG(Tag)); pciWriteLong(Tag, PCI_MAP_REG_START + (b_reg << 2), (CARD32)~0); } @@ -1275,7 +1297,7 @@ readPciBios(PCITAG Tag, CARD8* tmp, ADDRESS hostbase, pointer args) } if ((rd->Offset) > (image_length)) { xf86Msg(X_WARNING,"xf86ReadPciBios: requesting data past " - "end of BIOS %i > %i\n",(rd->Offset) , (image_length)); + "end of BIOS %li > %i\n",(rd->Offset) , (image_length)); } else { if ((rd->Offset + rd->Len) > (image_length)) { rd->Len = (image_length) - rd->Offset; @@ -1299,7 +1321,7 @@ getPciBIOSTypes(PCITAG Tag, CARD8* tmp, ADDRESS hostbase, pointer arg) /* We found a PCI BIOS Image. Now we collect the types type */ do { unsigned short data_off = tmp[0x18] | (tmp[0x19] << 8); - unsigned char data[16]; + unsigned char data[0x16]; unsigned int i_length; if ((xf86ReadDomainMemory(Tag, hostbase + data_off, sizeof(data), data) @@ -1359,22 +1381,20 @@ HandlePciBios(PCITAG Tag, int basereg, if (!num) return 0; #define PCI_ENA (PCI_CMD_MEM_ENABLE | PCI_CMD_IO_ENABLE) - Acc1 = ((ReadProcPtr)(pciLongFunc(Tag,READ)))(Tag,PCI_CMD_STAT_REG); - ((WriteProcPtr)(pciLongFunc(Tag,WRITE)))(Tag, - PCI_CMD_STAT_REG,(Acc1 & ~PCI_ENA)); + Acc1 = pciReadLong(Tag, PCI_CMD_STAT_REG); + pciWriteLong(Tag, PCI_CMD_STAT_REG, (Acc1 & ~PCI_ENA)); for (i = 0; i < num; i++) { - Acc2 = ((ReadProcPtr)(pciLongFunc(pTag[i],READ)))(pTag[i],PCI_CMD_STAT_REG); - ((WriteProcPtr)(pciLongFunc(pTag[i],WRITE)))(pTag[i], - PCI_CMD_STAT_REG,(Acc2 | PCI_ENA)); + Acc2 = pciReadLong(pTag[i], PCI_CMD_STAT_REG); + pciWriteLong(pTag[i], PCI_CMD_STAT_REG, (Acc2 | PCI_ENA)); n = handlePciBIOS(pTag[i],0,func,ptr); - ((WriteProcPtr)(pciLongFunc(pTag[i],WRITE)))(pTag[i],PCI_CMD_STAT_REG,Acc2); + pciWriteLong(pTag[i], PCI_CMD_STAT_REG, Acc2); if (n) break; } - ((WriteProcPtr)(pciLongFunc(Tag,WRITE)))(Tag,PCI_CMD_STAT_REG,Acc1); + pciWriteLong(Tag, PCI_CMD_STAT_REG, Acc1); return n; } diff --git a/hw/xfree86/os-support/bus/Pci.h b/hw/xfree86/os-support/bus/Pci.h index 8fb421b34..74ca95baf 100644 --- a/hw/xfree86/os-support/bus/Pci.h +++ b/hw/xfree86/os-support/bus/Pci.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/Pci.h,v 1.36.2.1 2003/03/21 22:29:59 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/Pci.h,v 1.44 2003/11/07 23:57:47 dawes Exp $ */ /* * Copyright 1998 by Concurrent Computer Corporation * @@ -69,6 +69,33 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * */ +/* + * Copyright (c) 1999-2003 by The XFree86 Project, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of the copyright holder(s) + * and author(s) shall not be used in advertising or otherwise to promote + * the sale, use or other dealings in this Software without prior written + * authorization from the copyright holder(s) and author(s). + */ + /* * This file has the private Pci definitions. The public ones are imported @@ -98,7 +125,7 @@ #endif #define DEVID(vendor, device) \ - ((CARD32)((PCI_CHIP_##device << 16) | PCI_VENDOR_##vendor)) + ((CARD32)((PCI_##device << 16) | PCI_##vendor)) #ifndef PCI_DOM_MASK # define PCI_DOM_MASK 0x0ffu @@ -228,11 +255,14 @@ # define ARCH_PCI_INIT linuxPciInit # define INCLUDE_XF86_MAP_PCI_MEM # define INCLUDE_XF86_NO_DOMAIN +# elif defined(FreeBSD) +# define ARCH_PCI_INIT freebsdPciInit +# define INCLUDE_XF86_MAP_PCI_MEM +# define INCLUDE_XF86_NO_DOMAIN # endif # define XF86SCANPCI_WRAPPER ia64ScanPCIWrapper #elif defined(__i386__) # define ARCH_PCI_INIT ix86PciInit -# define ARCH_PCI_HOST_BRIDGE ix86PciHostBridge # define INCLUDE_XF86_MAP_PCI_MEM # define INCLUDE_XF86_NO_DOMAIN # if defined(linux) @@ -289,14 +319,20 @@ # elif defined(sun) # define ARCH_PCI_INIT sparcPciInit # define INCLUDE_XF86_MAP_PCI_MEM -# elif defined(__OpenBSD__) && defined(__sparc64__) +# elif (defined(__OpenBSD__) || defined(__FreeBSD__)) && defined(__sparc64__) # define ARCH_PCI_INIT freebsdPciInit # define INCLUDE_XF86_MAP_PCI_MEM # define INCLUDE_XF86_NO_DOMAIN # endif -# define ARCH_PCI_PCI_BRIDGE sparcPciPciBridge -#elif defined(__x86_64__) -# define ARCH_PCI_INIT ix86PciInit +# if !defined(__FreeBSD__) +# define ARCH_PCI_PCI_BRIDGE sparcPciPciBridge +# endif +#elif defined(__AMD64__) +# if defined(__FreeBSD__) +# define ARCH_PCI_INIT freebsdPciInit +# else +# define ARCH_PCI_INIT ix86PciInit +# endif # define INCLUDE_XF86_MAP_PCI_MEM # define INCLUDE_XF86_NO_DOMAIN # if defined(linux) @@ -313,10 +349,6 @@ extern void ARCH_PCI_INIT(void); extern void ARCH_PCI_OS_INIT(void); #endif -#if defined(ARCH_PCI_HOST_BRIDGE) -extern void ARCH_PCI_HOST_BRIDGE(pciConfigPtr pPCI); -#endif - #if defined(ARCH_PCI_PCI_BRIDGE) extern void ARCH_PCI_PCI_BRIDGE(pciConfigPtr pPCI); #endif @@ -344,7 +376,7 @@ typedef struct pci_bus_funcs { * to be performed generically. */ CARD16 (*pciControlBridge)(int, CARD16, CARD16); - void (*pciGetBridgeBusses)(int, int *, int *, int *); + void (*pciGetBridgeBuses)(int, int *, int *, int *); /* Use pointer's to avoid #include recursion */ void (*pciGetBridgeResources)(int, pointer *, pointer *, pointer *); } pciBusFuncs_t, *pciBusFuncs_p; diff --git a/hw/xfree86/os-support/bus/Sbus.c b/hw/xfree86/os-support/bus/Sbus.c index c730c1559..57262efa2 100644 --- a/hw/xfree86/os-support/bus/Sbus.c +++ b/hw/xfree86/os-support/bus/Sbus.c @@ -20,7 +20,7 @@ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/Sbus.c,v 1.2 2001/10/28 03:34:01 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/Sbus.c,v 1.4 2003/10/02 13:30:06 eich Exp $ */ #include <fcntl.h> #include <stdio.h> @@ -170,6 +170,8 @@ promIsP1275(void) promP1275 = TRUE; else promP1275 = FALSE; +#elif defined(__FreeBSD__) + promP1275 = TRUE; #else #error Missing promIsP1275() function for this OS #endif @@ -554,6 +556,9 @@ pointer xf86MapSbusMem(sbusDevicePtr psdp, unsigned long offset, unsigned long size) { pointer ret; + unsigned long pagemask = xf86getpagesize() - 1; + unsigned long off = offset & ~pagemask; + unsigned long len = ((offset + size + pagemask) & ~pagemask) - off; if (psdp->fd == -1) { psdp->fd = open(psdp->device, O_RDWR); @@ -562,22 +567,26 @@ xf86MapSbusMem(sbusDevicePtr psdp, unsigned long offset, unsigned long size) } else if (psdp->fd < 0) return NULL; - ret = (pointer) mmap (NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE, - psdp->fd, offset); + ret = (pointer) mmap (NULL, len, PROT_READ | PROT_WRITE, MAP_PRIVATE, + psdp->fd, off); if (ret == (pointer) -1) { - ret = (pointer) mmap (NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, - psdp->fd, offset); + ret = (pointer) mmap (NULL, len, PROT_READ | PROT_WRITE, MAP_SHARED, + psdp->fd, off); } if (ret == (pointer) -1) return NULL; - return ret; + return (char *)ret + (offset - off); } void xf86UnmapSbusMem(sbusDevicePtr psdp, pointer addr, unsigned long size) { - munmap (addr, size); + unsigned long mask = xf86getpagesize() - 1; + unsigned long base = (unsigned long)addr & ~mask; + unsigned long len = (((unsigned long)addr + size + mask) & ~mask) - base; + + munmap ((pointer)base, len); } /* Tell OS that we are driving the HW cursor ourselves. */ diff --git a/hw/xfree86/os-support/bus/e8870PCI.c b/hw/xfree86/os-support/bus/e8870PCI.c index 829de03c0..adbd189f1 100644 --- a/hw/xfree86/os-support/bus/e8870PCI.c +++ b/hw/xfree86/os-support/bus/e8870PCI.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.c,v 1.1 2003/02/23 20:26:49 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/e8870PCI.c,v 1.2 2003/07/17 15:08:22 tsi Exp $ */ /* * Copyright (C) 2002-2003 The XFree86 Project, Inc. All Rights Reserved. * @@ -40,7 +40,7 @@ xf86PreScanE8870(void) /* Look for an E8870's Hub interface */ tag = PCI_MAKE_TAG(0, 0x1E, 0); - if (pciReadLong(tag, PCI_ID_REG) != DEVID(INTEL, 82801_P2P)) + if (pciReadLong(tag, PCI_ID_REG) != DEVID(VENDOR_INTEL, CHIP_82801_P2P)) return FALSE; /* XXX Fill me in... */ diff --git a/hw/xfree86/os-support/bus/freebsdPci.c b/hw/xfree86/os-support/bus/freebsdPci.c index c3e621daf..06baa69ea 100644 --- a/hw/xfree86/os-support/bus/freebsdPci.c +++ b/hw/xfree86/os-support/bus/freebsdPci.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/freebsdPci.c,v 1.5 2002/08/27 22:07:07 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/freebsdPci.c,v 1.6 2003/10/02 13:30:07 eich Exp $ */ /* * Copyright 1998 by Concurrent Computer Corporation * @@ -84,7 +84,7 @@ static pciBusInfo_t freebsdPci0 = { /* bridge */ NULL }; -#if !defined(__OpenBSD__) +#if !defined(__OpenBSD__) && !defined(__FreeBSD__) #if X_BYTE_ORDER == X_BIG_ENDIAN #ifdef __sparc__ #ifndef ASI_PL diff --git a/hw/xfree86/os-support/bus/ix86Pci.c b/hw/xfree86/os-support/bus/ix86Pci.c index e07f5497c..b135d0b73 100644 --- a/hw/xfree86/os-support/bus/ix86Pci.c +++ b/hw/xfree86/os-support/bus/ix86Pci.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/ix86Pci.c,v 1.18 2003/01/27 00:01:44 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/ix86Pci.c,v 1.25 2003/09/24 02:43:34 dawes Exp $ */ /* * ix86Pci.c - x86 PCI driver * @@ -109,6 +109,33 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* + * Copyright (c) 1999-2003 by The XFree86 Project, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of the copyright holder(s) + * and author(s) shall not be used in advertising or otherwise to promote + * the sale, use or other dealings in this Software without prior written + * authorization from the copyright holder(s) and author(s). + */ + #include <stdio.h> #include "compiler.h" #include "xf86.h" @@ -318,8 +345,9 @@ void ix86PciSelectCfgmech(void) xf86MsgVerb(X_INFO, 2, "PCI: Config type is 1\n"); xf86MsgVerb(X_INFO, 3, - "PCI: stages = 0x%02x, oldVal1 = 0x%08x, mode1Res1" - " = 0x%08x\n", stages, oldVal1, mode1Res1); + "PCI: stages = 0x%02x, oldVal1 = 0x%08lx, mode1Res1" + " = 0x%08lx\n", stages, (unsigned long)oldVal1, + (unsigned long)mode1Res1); return; } @@ -372,9 +400,10 @@ void ix86PciSelectCfgmech(void) xf86MsgVerb(X_INFO, 2, "PCI: Config type is 1\n"); xf86MsgVerb(X_INFO, 3, - "PCI: stages = 0x%02x, oldVal1 = 0x%08x,\n" - "\tmode1Res1 = 0x%08x, mode1Res2 = 0x%08x\n", - stages, oldVal1, mode1Res1, mode1Res2); + "PCI: stages = 0x%02x, oldVal1 = 0x%08lx,\n" + "\tmode1Res1 = 0x%08lx, mode1Res2 = 0x%08lx\n", + stages, (unsigned long)oldVal1, + (unsigned long)mode1Res1, (unsigned long)mode1Res2); return; } @@ -388,9 +417,10 @@ void ix86PciSelectCfgmech(void) } xf86MsgVerb(X_INFO, 3, "PCI: Standard check for type 1 failed.\n"); - xf86MsgVerb(X_INFO, 3, "PCI: stages = 0x%02x, oldVal1 = 0x%08x,\n" - "\tmode1Res1 = 0x%08x, mode1Res2 = 0x%08x\n", - stages, oldVal1, mode1Res1, mode1Res2); + xf86MsgVerb(X_INFO, 3, "PCI: stages = 0x%02x, oldVal1 = 0x%08lx,\n" + "\tmode1Res1 = 0x%08lx, mode1Res2 = 0x%08lx\n", + stages, (unsigned long)oldVal1, (unsigned long)mode1Res1, + (unsigned long)mode1Res2); /* Try config type 2 */ oldVal2 = inb(PCI_CFGMECH2_ENABLE_REG); @@ -656,35 +686,3 @@ ix86PciInit() pciBusInfo[0] = NULL; } } - -#ifdef ARCH_PCI_HOST_BRIDGE - -/* - * A small table of host bridges that limit the number of PCI buses to less - * than the maximum of 256. - */ -static struct { - CARD32 devid; - int maxpcibus; -} host_bridges[] = { - { DEVID(ALI_2, M1541), 128}, - { DEVID(VIA, APOLLOVP1), 64}, - { DEVID(VIA, APOLLOPRO133X), 64}, - { DEVID(INTEL, 430HX_BRIDGE), 16}, - { DEVID(INTEL, 440BX_BRIDGE), 32}, -}; -#define NUM_BRIDGES (sizeof(host_bridges) / sizeof(host_bridges[0])) - -void ARCH_PCI_HOST_BRIDGE(pciConfigPtr pPCI) -{ - int i; - - for (i = 0; i < NUM_BRIDGES; i++) { - if (pPCI->pci_device_vendor == host_bridges[i].devid) { - pciMaxBusNum = host_bridges[i].maxpcibus; - break; - } - } -} - -#endif /* ARCH_PCI_HOST_BRIDGE */ diff --git a/hw/xfree86/os-support/bus/netbsdPci.c b/hw/xfree86/os-support/bus/netbsdPci.c index 637bd7021..9c46ee3d3 100644 --- a/hw/xfree86/os-support/bus/netbsdPci.c +++ b/hw/xfree86/os-support/bus/netbsdPci.c @@ -1,5 +1,6 @@ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/netbsdPci.c,v 1.4 2003/08/24 17:37:04 dawes Exp $ */ /* - * Copyright (C) 1994-2002 The XFree86 Project, Inc. All Rights Reserved. + * Copyright (C) 1994-2003 The XFree86 Project, Inc. All Rights Reserved. * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation @@ -25,7 +26,6 @@ * use or other dealings in this Software without prior written * authorization from the XFree86 Project. */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/netbsdPci.c,v 1.2 2002/08/27 22:07:07 tsi Exp $ */ #include <sys/types.h> #include <sys/mman.h> @@ -60,10 +60,6 @@ static pciBusInfo_t netbsdPci0 = { /* numDevices */ 32, /* secondary */ FALSE, /* primary_bus */ 0, -#ifdef PowerMAX_OS -/* io_base */ 0, -/* io_size */ 0, -#endif /* funcs */ &netbsdFuncs0, /* pciBusPriv */ NULL, /* bridge */ NULL @@ -72,6 +68,7 @@ static pciBusInfo_t netbsdPci0 = { void netbsdPciInit() { + struct pciio_businfo pci_businfo; devpci = open("/dev/pci0", O_RDWR); if (devpci == -1) @@ -81,6 +78,10 @@ netbsdPciInit() pciBusInfo[0] = &netbsdPci0; pciFindFirstFP = pciGenFindFirst; pciFindNextFP = pciGenFindNext; + /* use businfo to get the number of devs */ + if (ioctl(devpci, PCI_IOC_BUSINFO, &pci_businfo) != 0) + FatalError("netbsdPciInit: not a PCI bus device"); + netbsdPci0.numDevices = pci_businfo.maxdevs; } static CARD32 diff --git a/hw/xfree86/os-support/bus/sparcPci.c b/hw/xfree86/os-support/bus/sparcPci.c index 24bbec44c..2ada6fd47 100644 --- a/hw/xfree86/os-support/bus/sparcPci.c +++ b/hw/xfree86/os-support/bus/sparcPci.c @@ -1,6 +1,6 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/sparcPci.c,v 1.12 2003/01/02 18:11:32 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/sparcPci.c,v 1.14 2003/08/24 17:37:04 dawes Exp $ */ /* - * Copyright (C) 2001 The XFree86 Project, Inc. All Rights Reserved. + * Copyright (C) 2001-2003 The XFree86 Project, Inc. All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to @@ -852,7 +852,7 @@ simbaVerifyBus(int bus) pciConfigPtr pPCI; if ((bus < 0) || (bus >= pciNumBuses) || !pciBusInfo[bus] || !(pPCI = pciBusInfo[bus]->bridge) || - (pPCI->pci_device_vendor != DEVID(SUN, SIMBA))) + (pPCI->pci_device_vendor != DEVID(VENDOR_SUN, CHIP_SIMBA))) return NULL; return pPCI; @@ -1012,7 +1012,7 @@ void ARCH_PCI_PCI_BRIDGE(pciConfigPtr pPCI) pciBusInfo_t *pBusInfo; CARD16 pcicommand; - if (pPCI->pci_device_vendor != DEVID(SUN, SIMBA)) + if (pPCI->pci_device_vendor != DEVID(VENDOR_SUN, CHIP_SIMBA)) return; pBusInfo = pPCI->businfo; diff --git a/hw/xfree86/os-support/bus/xf86Pci.h b/hw/xfree86/os-support/bus/xf86Pci.h index 3ffc7d544..f2b5c0727 100644 --- a/hw/xfree86/os-support/bus/xf86Pci.h +++ b/hw/xfree86/os-support/bus/xf86Pci.h @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/xf86Pci.h,v 1.36.2.1 2003/03/21 22:29:59 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/xf86Pci.h,v 1.39 2003/08/24 17:37:05 dawes Exp $ */ /* * Copyright 1998 by Concurrent Computer Corporation * @@ -69,6 +69,33 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * */ +/* + * Copyright (c) 1999-2003 by The XFree86 Project, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of the copyright holder(s) + * and author(s) shall not be used in advertising or otherwise to promote + * the sale, use or other dealings in this Software without prior written + * authorization from the copyright holder(s) and author(s). + */ + /* * This file contains just the public interface to the PCI code. @@ -638,12 +665,6 @@ typedef struct pci_device { } pciDevice, *pciConfigPtr; typedef enum { - WRITE, - READ, - SET_BITS -} pciFunc; - -typedef enum { PCI_MEM, PCI_MEM_SIZE, PCI_MEM_SPARSE_BASE, @@ -744,7 +765,6 @@ void pciWriteWord(PCITAG tag, int offset, CARD16 val); void pciWriteByte(PCITAG tag, int offset, CARD8 val); void pciSetBitsLong(PCITAG tag, int offset, CARD32 mask, CARD32 val); void pciSetBitsByte(PCITAG tag, int offset, CARD8 mask, CARD8 val); -pointer pciLongFunc(PCITAG tag, pciFunc func); ADDRESS pciBusAddrToHostAddr(PCITAG tag, PciAddrType type, ADDRESS addr); ADDRESS pciHostAddrToBusAddr(PCITAG tag, PciAddrType type, ADDRESS addr); PCITAG pciTag(int busnum, int devnum, int funcnum); diff --git a/hw/xfree86/os-support/bus/xf86Sbus.h b/hw/xfree86/os-support/bus/xf86Sbus.h index 5c8acfd4b..1f5f03bd2 100644 --- a/hw/xfree86/os-support/bus/xf86Sbus.h +++ b/hw/xfree86/os-support/bus/xf86Sbus.h @@ -20,7 +20,7 @@ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/xf86Sbus.h,v 1.5 2002/05/22 21:38:30 herrb Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/xf86Sbus.h,v 1.6 2003/10/02 13:30:07 eich Exp $ */ #ifndef _XF86_SBUS_H #define _XF86_SBUS_H @@ -35,7 +35,13 @@ #elif defined(__OpenBSD__) && defined(__sparc64__) /* XXX */ #elif defined(CSRG_BASED) +#if defined(__FreeBSD__) +#include <sys/types.h> +#include <sys/fbio.h> +#include <dev/ofw/openpromio.h> +#else #include <machine/fbio.h> +#endif #else #include <sun/fbio.h> #endif diff --git a/hw/xfree86/os-support/bus/zx1PCI.c b/hw/xfree86/os-support/bus/zx1PCI.c index dc4d062f3..b5a483560 100644 --- a/hw/xfree86/os-support/bus/zx1PCI.c +++ b/hw/xfree86/os-support/bus/zx1PCI.c @@ -1,4 +1,4 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.c,v 1.1 2003/02/23 20:26:49 tsi Exp $ */ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/bus/zx1PCI.c,v 1.5 2003/11/06 18:38:14 tsi Exp $ */ /* * Copyright (C) 2002-2003 The XFree86 Project, Inc. All Rights Reserved. * @@ -97,6 +97,8 @@ #define LBA_PORT5_CNTRL 0x1228U #define LBA_PORT6_CNTRL 0x1230U #define LBA_PORT7_CNTRL 0x1238U +#define LBA_ROPE_RESET 0x01UL +#define LBA_CLEAR_ERROR 0x10UL #define LBA_HARD_FAIL 0x40UL #define ROPE_PAGE_CONTROL 0x1418U @@ -326,7 +328,8 @@ ControlZX1Bridge(int bus, CARD16 mask, CARD16 value) } /* Move on to master abort failure enablement */ - tmp1 = MIO_QUAD((ropenum << 3) + LBA_PORT0_CNTRL); + tmp1 = MIO_QUAD((ropenum << 3) + LBA_PORT0_CNTRL) & + ~(LBA_ROPE_RESET | LBA_CLEAR_ERROR); if ((tmp1 & LBA_HARD_FAIL) || (tmp2 & IOA_HARD_FAIL)) { current |= PCI_PCI_BRIDGE_MASTER_ABORT_EN; if ((mask & PCI_PCI_BRIDGE_MASTER_ABORT_EN) && @@ -388,14 +391,15 @@ GetZX1BridgeResources(int bus, static CARD32 zx1FakeReadLong(PCITAG tag, int offset) { - FatalError("zx1FakeReadLong(0x%X, 0x%X) called\n", tag, offset); + FatalError("zx1FakeReadLong(0x%lX, 0x%X) called\n", + (unsigned long)tag, offset); } static void zx1FakeWriteLong(PCITAG tag, int offset, CARD32 val) { - FatalError("zx1FakeWriteLong(0x%X, 0x%X, 0x%08X) called\n", - tag, offset, val); + FatalError("zx1FakeWriteLong(0x%lX, 0x%X, 0x%08X) called\n", + (unsigned long)tag, offset, val); } static void @@ -458,8 +462,10 @@ xf86PreScanZX1(void) return FALSE; /* Look for ZX1's SBA and IOC */ - if ((MIO_LONG(MIO_FUNCTION0 + PCI_ID_REG) != DEVID(HP, ZX1_SBA)) || - (MIO_LONG(MIO_FUNCTION1 + PCI_ID_REG) != DEVID(HP, ZX1_IOC))) { + if ((MIO_LONG(MIO_FUNCTION0 + PCI_ID_REG) != + DEVID(VENDOR_HP, CHIP_ZX1_SBA)) || + (MIO_LONG(MIO_FUNCTION1 + PCI_ID_REG) != + DEVID(VENDOR_HP, CHIP_ZX1_IOC))) { xf86UnMapVidMem(-1, pZX1mio, mapSize); pZX1mio = NULL; return FALSE; @@ -513,7 +519,8 @@ xf86PreScanZX1(void) if (zx1_ropemap[i] == i) { /* Prevent hard-fails */ - zx1_lbacntl[i] = MIO_QUAD((i << 3) + LBA_PORT0_CNTRL); + zx1_lbacntl[i] = MIO_QUAD((i << 3) + LBA_PORT0_CNTRL) & + ~(LBA_ROPE_RESET | LBA_CLEAR_ERROR); if (zx1_lbacntl[i] & LBA_HARD_FAIL) MIO_QUAD((i << 3) + LBA_PORT0_CNTRL) = zx1_lbacntl[i] & ~LBA_HARD_FAIL; @@ -521,8 +528,10 @@ xf86PreScanZX1(void) /* Poke for an ioa */ tmp = IOA_LONG(i, PCI_ID_REG); switch ((CARD32)tmp) { - case DEVID(HP, ELROY): /* Expected vendor/device id's */ - case DEVID(HP, ZX1_LBA): + case DEVID(VENDOR_HP, CHIP_ELROY): + case DEVID(VENDOR_HP, CHIP_ZX1_LBA): /* Mercury */ + case DEVID(VENDOR_HP, CHIP_ZX1_AGP8): /* QuickSilver */ + /* Expected vendor/device IDs */ zx1_busno[i] = (unsigned int)IOA_BYTE(i, IOA_SECONDARY_BUS); zx1_subno[i] = @@ -900,9 +909,9 @@ xf86PostScanZX1(void) ppPCI = ppPCI2 = xf86scanpci(0); /* Recursion is only apparent */ while ((pPCI = *ppPCI2++)) { switch (pPCI->pci_device_vendor) { - case DEVID(HP, ZX1_SBA): - case DEVID(HP, ZX1_IOC): - case DEVID(HP, ZX1_LBA): + case DEVID(VENDOR_HP, CHIP_ZX1_SBA): + case DEVID(VENDOR_HP, CHIP_ZX1_IOC): + case DEVID(VENDOR_HP, CHIP_ZX1_LBA): xfree(pPCI); /* Remove it */ continue; @@ -975,7 +984,7 @@ xf86PostScanZX1(void) pPCI->tag = PCI_MAKE_TAG(zx1_fakebus, 0, 0); pPCI->busnum = zx1_fakebus; /* pPCI->devnum = pPCI->funcnum = 0; */ - pPCI->pci_device_vendor = DEVID(HP, ZX1_SBA); + pPCI->pci_device_vendor = DEVID(VENDOR_HP, CHIP_ZX1_SBA); pPCI->pci_base_class = PCI_CLASS_BRIDGE; /* pPCI->pci_sub_class = PCI_SUBCLASS_BRIDGE_HOST; */ pPCI->fakeDevice = TRUE; @@ -1009,7 +1018,7 @@ xf86PostScanZX1(void) pPCI->devnum = i | 0x10; /* pPCI->funcnum = 0; */ pPCI->tag = PCI_MAKE_TAG(zx1_fakebus, pPCI->devnum, 0); - pPCI->pci_device_vendor = DEVID(HP, ZX1_LBA); + pPCI->pci_device_vendor = DEVID(VENDOR_HP, CHIP_ZX1_LBA); pPCI->pci_base_class = PCI_CLASS_BRIDGE; pPCI->pci_sub_class = PCI_SUBCLASS_BRIDGE_PCI; pPCI->pci_header_type = 1; |