2005-04-16 15:20:36 -07:00
/*
* 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_
2006-09-25 16:52:20 -07:00
# include <linux/compiler.h>
2005-04-16 15:20:36 -07:00
# 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
2009-01-24 00:23:22 +01:00
# define PCIE_PORT_MSI_VECTOR_MASK 0x1f
/*
* According to the PCI Express Base Specification 2.0 , the indices of the MSI - X
* table entires used by port services must not exceed 31
*/
# define PCIE_PORT_MAX_MSIX_ENTRIES 32
2005-04-16 15:20:36 -07:00
# 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
2009-02-15 22:32:48 +01:00
extern int pcie_port_device_suspend ( struct device * dev ) ;
extern int pcie_port_device_resume ( struct device * dev ) ;
2005-04-16 15:20:36 -07:00
# endif
extern void pcie_port_device_remove ( struct pci_dev * dev ) ;
2006-09-25 16:52:20 -07:00
extern int __must_check pcie_port_bus_register ( void ) ;
2005-04-16 15:20:36 -07:00
extern void pcie_port_bus_unregister ( void ) ;
# endif /* _PORTDRV_H_ */