22106368c9
The PCI Express port driver uses 'struct pcie_port_service_id' for matching port service devices and drivers, but this structure contains fields that duplicate information from the port device itself (vendor, device, subvendor, subdevice) and fields that are not used by any existing port service driver (class, class_mask, drvier_data). Also, both existing port service drivers (AER and PCIe HP) don't even use the vendor and device fields for device matching. Therefore 'struct pcie_port_service_id' can be removed altogether and the only useful members of it (port_type, service) can be introduced directly into the port service device and port service driver structures. That simplifies the code quite a bit and reduces its size. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
42 lines
1.1 KiB
C
42 lines
1.1 KiB
C
/*
|
|
* File: portdrv.h
|
|
* Purpose: PCI Express Port Bus Driver's Internal Data Structures
|
|
*
|
|
* Copyright (C) 2004 Intel
|
|
* Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com)
|
|
*/
|
|
|
|
#ifndef _PORTDRV_H_
|
|
#define _PORTDRV_H_
|
|
|
|
#include <linux/compiler.h>
|
|
|
|
#if !defined(PCI_CAP_ID_PME)
|
|
#define PCI_CAP_ID_PME 1
|
|
#endif
|
|
|
|
#if !defined(PCI_CAP_ID_EXP)
|
|
#define PCI_CAP_ID_EXP 0x10
|
|
#endif
|
|
|
|
#define PORT_TYPE_MASK 0xf
|
|
#define PORT_TO_SLOT_MASK 0x100
|
|
#define SLOT_HP_CAPABLE_MASK 0x40
|
|
#define PCIE_CAPABILITIES_REG 0x2
|
|
#define PCIE_SLOT_CAPABILITIES_REG 0x14
|
|
#define PCIE_PORT_DEVICE_MAXSERVICES 4
|
|
|
|
#define get_descriptor_id(type, service) (((type - 4) << 4) | service)
|
|
|
|
extern struct bus_type pcie_port_bus_type;
|
|
extern int pcie_port_device_probe(struct pci_dev *dev);
|
|
extern int pcie_port_device_register(struct pci_dev *dev);
|
|
#ifdef CONFIG_PM
|
|
extern int pcie_port_device_suspend(struct pci_dev *dev, pm_message_t state);
|
|
extern int pcie_port_device_resume(struct pci_dev *dev);
|
|
#endif
|
|
extern void pcie_port_device_remove(struct pci_dev *dev);
|
|
extern int __must_check pcie_port_bus_register(void);
|
|
extern void pcie_port_bus_unregister(void);
|
|
|
|
#endif /* _PORTDRV_H_ */
|