1/*
2 * Copyright 2009, Colin G��nther, coling@gmx.de.
3 * Copyright 2007, Hugo Santos. All Rights Reserved.
4 * Distributed under the terms of the MIT License.
5 */
6#ifndef _FBSD_COMPAT_DEV_PCI_PCIVAR_H_
7#define _FBSD_COMPAT_DEV_PCI_PCIVAR_H_
8
9
10#include <sys/bus.h>
11
12
13#define	PCI_RF_DENSE	0x10000
14	// ignored on x86
15
16#define	PCI_POWERSTATE_D0	0
17#define	PCI_POWERSTATE_D1	1
18#define	PCI_POWERSTATE_D2	2
19#define	PCI_POWERSTATE_D3	3
20#define	PCI_POWERSTATE_UNKNOWN	-1
21
22
23int pci_enable_busmaster(device_t dev);
24int pci_enable_io(device_t dev, int reg);
25
26uint32_t pci_get_devid(device_t dev);
27void pci_set_intpin(device_t dev, uint8_t pin);
28uint8_t pci_get_intpin(device_t dev);
29
30uint16_t pci_get_vendor(device_t dev);
31uint16_t pci_get_device(device_t dev);
32uint16_t pci_get_subvendor(device_t dev);
33uint16_t pci_get_subdevice(device_t dev);
34uint8_t pci_get_revid(device_t dev);
35uint8_t pci_get_cachelnsz(device_t dev);
36uint8_t *pci_get_ether(device_t dev);
37
38uint32_t pci_read_config(device_t dev, int reg, int width);
39void pci_write_config(device_t dev, int reg, uint32_t val, int width);
40
41uint32_t pci_get_domain(device_t dev);
42uint8_t pci_get_bus(device_t dev);
43uint8_t pci_get_slot(device_t dev);
44uint8_t pci_get_function(device_t dev);
45device_t pci_find_dbsf(uint32_t domain, uint8_t bus, uint8_t slot,
46	uint8_t func);
47
48int pci_find_cap(device_t dev, int capability, int *capreg);
49int pci_find_extcap(device_t dev, int capability, int *capreg);
50
51int pci_msi_count(device_t dev);
52int pci_alloc_msi(device_t dev, int *count);
53int pci_release_msi(device_t dev);
54
55int pci_msix_table_bar(device_t dev);
56int pci_msix_count(device_t dev);
57int pci_alloc_msix(device_t dev, int *count);
58
59int pci_get_max_read_req(device_t dev);
60int pci_set_max_read_req(device_t dev, int size);
61
62int pci_get_powerstate(device_t dev);
63int pci_set_powerstate(device_t dev, int newPowerState);
64
65static inline int
66pci_get_vpd_ident(device_t dev, const char **identptr)
67{
68	return -1;
69}
70
71#endif	/* _FBSD_COMPAT_DEV_PCI_PCIVAR_H_ */
72