55 lines
1.7 KiB
C
55 lines
1.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef LINUX_DEVICE_ID_PCI_H
|
|
#define LINUX_DEVICE_ID_PCI_H
|
|
|
|
#ifdef __KERNEL__
|
|
#include <linux/types.h>
|
|
typedef unsigned long kernel_ulong_t;
|
|
#endif
|
|
|
|
#define PCI_ANY_ID (~0)
|
|
|
|
enum {
|
|
PCI_ID_F_VFIO_DRIVER_OVERRIDE = 1,
|
|
};
|
|
|
|
/**
|
|
* struct pci_device_id - PCI device ID structure
|
|
* @vendor: Vendor ID to match (or PCI_ANY_ID)
|
|
* @device: Device ID to match (or PCI_ANY_ID)
|
|
* @subvendor: Subsystem vendor ID to match (or PCI_ANY_ID)
|
|
* @subdevice: Subsystem device ID to match (or PCI_ANY_ID)
|
|
* @class: Device class, subclass, and "interface" to match.
|
|
* See Appendix D of the PCI Local Bus Spec or
|
|
* include/linux/pci_ids.h for a full list of classes.
|
|
* Most drivers do not need to specify class/class_mask
|
|
* as vendor/device is normally sufficient.
|
|
* @class_mask: Limit which sub-fields of the class field are compared.
|
|
* See drivers/scsi/sym53c8xx_2/ for example of usage.
|
|
* @driver_data: Data private to the driver.
|
|
* Most drivers don't need to use driver_data field.
|
|
* Best practice is to use driver_data as an index
|
|
* into a static list of equivalent device types,
|
|
* instead of using it as a pointer.
|
|
* @override_only: Match only when dev->driver_override is this driver.
|
|
*/
|
|
struct pci_device_id {
|
|
__u32 vendor, device; /* Vendor and device ID or PCI_ANY_ID*/
|
|
__u32 subvendor, subdevice; /* Subsystem ID's or PCI_ANY_ID */
|
|
__u32 class, class_mask; /* (class,subclass,prog-if) triplet */
|
|
kernel_ulong_t driver_data; /* Data private to the driver */
|
|
__u32 override_only;
|
|
};
|
|
|
|
/* pci_epf */
|
|
|
|
#define PCI_EPF_NAME_SIZE 20
|
|
#define PCI_EPF_MODULE_PREFIX "pci_epf:"
|
|
|
|
struct pci_epf_device_id {
|
|
char name[PCI_EPF_NAME_SIZE];
|
|
kernel_ulong_t driver_data;
|
|
};
|
|
|
|
#endif /* ifndef LINUX_DEVICE_ID_PCI_H */
|