1 #ifndef __NV_PCICOMPAT_H__
2 #define __NV_PCICOMPAT_H__
4 #ifdef XSERVER_LIBPCIACCESS
8 #ifdef XSERVER_LIBPCIACCESS
10 #define PCI_DEV_VENDOR_ID(_device) ((_device)->vendor_id)
11 #define PCI_DEV_DEVICE_ID(_device) ((_device)->device_id)
12 #define PCI_DEV_REVISION(_device) ((_device)->revision)
13 #define PCI_DEV_SUBVENDOR_ID(_device) ((_device)->subvendor_id)
14 #define PCI_DEV_SUBDEVICE_ID(_device) ((_device)->subdevice_id)
16 #define PCI_DEV_FUNC(_device) ((_device)->func)
17 #define PCI_DEV_BUS(_device) ((_device)->bus)
18 #define PCI_DEV_DEV(_device) ((_device)->dev)
20 #define PCI_DEV_TAG(_device) (*(_device))
22 #define PCI_DEV_MEM_BASE(_device, _area) ((_device)->regions[(_area)].base_addr)
23 #define PCI_DEV_IO_BASE(_device, _area) (PCI_DEV_MEM_BASE(_device, _area))
25 #define PCI_DEV_READ_LONG(_device, _offset, _dest_ptr) (pci_device_cfg_read_u32(_device, _dest_ptr, _offset))
26 #define PCI_DEV_WRITE_LONG(_device, _offset, _src) (pci_device_cfg_write_u32(_device, _src, _offset))
28 #define PCI_SLOT_READ_LONG(_slot, _offset) __extension__ ({ uint32_t _pci_slot_read_ret; pci_device_cfg_read_u32(pci_device_find_by_slot(0, 0, 0, _slot), &_pci_slot_read_ret, _offset); _pci_slot_read_ret; })
30 #else /* PRE_PCIACCESS */
32 #define PCI_DEV_VENDOR_ID(_device) ((_device)->vendor)
33 #define PCI_DEV_DEVICE_ID(_device) ((_device)->chipType)
34 #define PCI_DEV_REVISION(_device) ((_device)->chipRev)
35 #define PCI_DEV_SUBVENDOR_ID(_device) ((_device)->subsysVendor)
36 #define PCI_DEV_SUBDEVICE_ID(_device) ((_device)->subsysCard)
38 #define PCI_DEV_FUNC(_device) ((_device)->func)
39 #define PCI_DEV_BUS(_device) ((_device)->bus)
40 #define PCI_DEV_DEV(_device) ((_device)->device)
42 #define PCI_DEV_TAG(_device) (pciTag(PCI_DEV_BUS(_device), PCI_DEV_DEV(_device), PCI_DEV_FUNC(_device)))
44 #define PCI_DEV_MEM_BASE(_device, _area) ((_device)->memBase[(_area)])
45 #define PCI_DEV_IO_BASE(_device, _area) ((_device)->IOBase[(_area)])
47 #define PCI_DEV_READ_LONG(_device, _offset, _dest_ptr) (*(_dest_ptr) = pciReadLong(PCI_DEV_TAG(_device), _offset))
48 #define PCI_DEV_WRITE_LONG(_device, _offset, _src) (pciWriteLong(PCI_DEV_TAG(_device), _offset, _src))
50 #define PCI_SLOT_READ_LONG(_slot, _offset) (pciReadLong(pciTag(0, 0, _slot), _offset))
52 #endif /* XSERVER_LIBPCIACCESS */
54 #define PCI_DEV_PCI_ID(_device) ((PCI_DEV_VENDOR_ID(_device) << 16) | PCI_DEV_DEVICE_ID(_device))
56 #endif /* __NV_PCICOMPAT_H__ */