diff options
author | gibbs <gibbs@FreeBSD.org> | 1998-09-15 08:21:13 +0000 |
---|---|---|
committer | gibbs <gibbs@FreeBSD.org> | 1998-09-15 08:21:13 +0000 |
commit | 9ed6892f4808d56de443849229e151f8f7ad43b0 (patch) | |
tree | 89826b5df23f21ac18045990671bb1f5e2dd537c /sys/sys/pciio.h | |
parent | b954e9c2642216af00a08bacef1878dbfff8107d (diff) | |
download | FreeBSD-src-9ed6892f4808d56de443849229e151f8f7ad43b0.zip FreeBSD-src-9ed6892f4808d56de443849229e151f8f7ad43b0.tar.gz |
Revive PCIConf.
Submitted by: "Kenneth D. Merry" <ken@plutotech.com>
Diffstat (limited to 'sys/sys/pciio.h')
-rw-r--r-- | sys/sys/pciio.h | 110 |
1 files changed, 99 insertions, 11 deletions
diff --git a/sys/sys/pciio.h b/sys/sys/pciio.h index 1820c08..d460846 100644 --- a/sys/sys/pciio.h +++ b/sys/sys/pciio.h @@ -3,25 +3,113 @@ #include <sys/ioccom.h> + +#define PCI_MAXNAMELEN 16 /* max no. of characters in a device name */ + +typedef enum { + PCI_GETCONF_LAST_DEVICE, + PCI_GETCONF_LIST_CHANGED, + PCI_GETCONF_MORE_DEVS, + PCI_GETCONF_ERROR +} pci_getconf_status; + +typedef enum { + PCI_GETCONF_NO_MATCH = 0x00, + PCI_GETCONF_MATCH_BUS = 0x01, + PCI_GETCONF_MATCH_DEV = 0x02, + PCI_GETCONF_MATCH_FUNC = 0x04, + PCI_GETCONF_MATCH_NAME = 0x08, + PCI_GETCONF_MATCH_UNIT = 0x10, + PCI_GETCONF_MATCH_VENDOR = 0x20, + PCI_GETCONF_MATCH_DEVICE = 0x40, + PCI_GETCONF_MATCH_CLASS = 0x80 +} pci_getconf_flags; + struct pcisel { - u_char pc_bus; /* bus number */ - u_char pc_dev; /* device on this bus */ - u_char pc_func; /* function on this device */ + u_int8_t pc_bus; /* bus number */ + u_int8_t pc_dev; /* device on this bus */ + u_int8_t pc_func; /* function on this device */ }; struct pci_conf { struct pcisel pc_sel; /* bus+slot+function */ - u_char pc_hdr; /* PCI header type */ - pcidi_t pc_devid; /* device ID */ - pcidi_t pc_subid; /* subvendor ID */ - u_int32_t pc_class; /* device class */ - struct pci_device *pc_dvp; /* device driver pointer or NULL */ - struct pcicb *pc_cb; /* pointer to bus parameters */ + u_int8_t pc_hdr; /* PCI header type */ + u_int16_t pc_subvendor; /* card vendor ID */ + u_int16_t pc_subdevice; /* card device ID, assigned by + card vendor */ + u_int16_t pc_vendor; /* chip vendor ID */ + u_int16_t pc_device; /* chip device ID, assigned by + chip vendor */ + u_int8_t pc_class; /* chip PCI class */ + u_int8_t pc_subclass; /* chip PCI subclass */ + u_int8_t pc_progif; /* chip PCI programming interface */ + u_int8_t pc_revid; /* chip revision ID */ + char pd_name[PCI_MAXNAMELEN + 1]; /* Name of peripheral + device */ + u_long pd_unit; /* Unit number */ +}; + +struct pci_match_conf { + struct pcisel pc_sel; /* bus+slot+function */ + char pd_name[PCI_MAXNAMELEN + 1]; /* Name of peripheral + device */ + u_long pd_unit; /* Unit number */ + u_int16_t pc_vendor; /* PCI Vendor ID */ + u_int16_t pc_device; /* PCI Device ID */ + u_int8_t pc_class; /* PCI class */ + pci_getconf_flags flags; /* Matching expression */ }; struct pci_conf_io { - size_t pci_len; /* length of buffer */ - struct pci_conf *pci_buf; /* buffer */ + u_int32_t pat_buf_len; /* + * Length of buffer passed in from + * user space. + */ + u_int32_t num_patterns; /* + * Number of pci_match_conf structures + * passed in by the user. + */ + struct pci_match_conf *patterns; /* + * Patterns passed in by the user. + */ + u_int32_t match_buf_len;/* + * Length of match buffer passed + * in by the user. + */ + u_int32_t num_matches; /* + * Number of matches returned by + * the kernel. + */ + struct pci_conf *matches; /* + * PCI device matches returned by + * the kernel. + */ + u_int32_t offset; /* + * Passed in by the user code to + * indicate where the kernel should + * start traversing the device list. + * The value passed out by the kernel + * points to the record immediately + * after the last one returned. + * i.e. this value may be passed back + * unchanged by the user for a + * subsequent call. + */ + u_int32_t generation; /* + * PCI configuration generation. + * This only needs to be set if the + * offset is set. The kernel will + * compare its current generation + * number to the generation passed + * in by the user to determine + * whether the PCI device list has + * changed since the user last + * called the GETCONF ioctl. + */ + pci_getconf_status status; /* + * Status passed back from the + * kernel. + */ }; struct pci_io { |