]> bbs.cooldavid.org Git - net-next-2.6.git/blame - drivers/pci/pcie/portdrv.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6
[net-next-2.6.git] / drivers / pci / pcie / portdrv.h
CommitLineData
1da177e4
LT
1/*
2 * File: portdrv.h
3 * Purpose: PCI Express Port Bus Driver's Internal Data Structures
4 *
5 * Copyright (C) 2004 Intel
6 * Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com)
7 */
8
9#ifndef _PORTDRV_H_
10#define _PORTDRV_H_
11
3ec6a8d0
AM
12#include <linux/compiler.h>
13
f9f45604 14#define PCIE_PORT_DEVICE_MAXSERVICES 4
b43d4513 15/*
f9f45604
KK
16 * According to the PCI Express Base Specification 2.0, the indices of
17 * the MSI-X table entires used by port services must not exceed 31
b43d4513
RW
18 */
19#define PCIE_PORT_MAX_MSIX_ENTRIES 32
1da177e4
LT
20
21#define get_descriptor_id(type, service) (((type - 4) << 4) | service)
22
79dd9182 23extern bool pcie_ports_disabled;
28eb5f27 24extern bool pcie_ports_auto;
79dd9182 25
1da177e4 26extern struct bus_type pcie_port_bus_type;
1da177e4
LT
27extern int pcie_port_device_register(struct pci_dev *dev);
28#ifdef CONFIG_PM
3a3c244c
RW
29extern int pcie_port_device_suspend(struct device *dev);
30extern int pcie_port_device_resume(struct device *dev);
1da177e4
LT
31#endif
32extern void pcie_port_device_remove(struct pci_dev *dev);
3ec6a8d0 33extern int __must_check pcie_port_bus_register(void);
1da177e4
LT
34extern void pcie_port_bus_unregister(void);
35
28eb5f27
RW
36struct pci_dev;
37
c39fae14
RW
38#ifdef CONFIG_PCIE_PME
39extern bool pcie_pme_msi_disabled;
40
41static inline void pcie_pme_disable_msi(void)
42{
43 pcie_pme_msi_disabled = true;
44}
45
46static inline bool pcie_pme_no_msi(void)
47{
48 return pcie_pme_msi_disabled;
49}
28eb5f27
RW
50
51extern void pcie_pme_interrupt_enable(struct pci_dev *dev, bool enable);
c39fae14
RW
52#else /* !CONFIG_PCIE_PME */
53static inline void pcie_pme_disable_msi(void) {}
54static inline bool pcie_pme_no_msi(void) { return false; }
28eb5f27 55static inline void pcie_pme_interrupt_enable(struct pci_dev *dev, bool en) {}
c39fae14
RW
56#endif /* !CONFIG_PCIE_PME */
57
28eb5f27
RW
58#ifdef CONFIG_ACPI
59extern int pcie_port_acpi_setup(struct pci_dev *port, int *mask);
60
61static inline int pcie_port_platform_notify(struct pci_dev *port, int *mask)
62{
63 return pcie_port_acpi_setup(port, mask);
64}
65#else /* !CONFIG_ACPI */
66static inline int pcie_port_platform_notify(struct pci_dev *port, int *mask)
67{
68 return 0;
69}
70#endif /* !CONFIG_ACPI */
71
1da177e4 72#endif /* _PORTDRV_H_ */