diff options
| author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-01-17 00:51:28 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-01-17 00:51:28 -0800 |
| commit | 11ab9af34d3856de95f8a640db018296d6e821e5 (patch) | |
| tree | eb414d34a76824642360de551da4bd69768eb8d1 /include/linux | |
| parent | ecba72d9ca702b5958dbe2368d070ff019ac6bd2 (diff) | |
| parent | 8c5d5989d2e2fa30971ab4079c8223cea90880fe (diff) | |
Merge bk://kernel.bkbits.net/gregkh/linux/pci-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/pci_ids.h | 2 | ||||
| -rw-r--r-- | include/linux/pcieport_if.h | 74 |
2 files changed, 75 insertions, 1 deletions
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 9f6d4812646a..710135a0567a 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h @@ -2246,7 +2246,7 @@ #define PCI_DEVICE_ID_INTEL_ICH6_17 0x266d #define PCI_DEVICE_ID_INTEL_ICH6_18 0x266e #define PCI_DEVICE_ID_INTEL_ICH6_19 0x266f -#define PCI_DEVICE_ID_INTEL_ICH7_0 0x27b0 +#define PCI_DEVICE_ID_INTEL_ICH7_0 0x27b8 #define PCI_DEVICE_ID_INTEL_ICH7_1 0x27b1 #define PCI_DEVICE_ID_INTEL_ICH7_2 0x27c0 #define PCI_DEVICE_ID_INTEL_ICH7_3 0x27c1 diff --git a/include/linux/pcieport_if.h b/include/linux/pcieport_if.h new file mode 100644 index 000000000000..cd3eafc2c233 --- /dev/null +++ b/include/linux/pcieport_if.h @@ -0,0 +1,74 @@ +/* + * File: pcieport_if.h + * Purpose: PCI Express Port Bus Driver's IF Data Structure + * + * Copyright (C) 2004 Intel + * Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com) + */ + +#ifndef _PCIEPORT_IF_H_ +#define _PCIEPORT_IF_H_ + +/* Port Type */ +#define PCIE_RC_PORT 4 /* Root port of RC */ +#define PCIE_SW_UPSTREAM_PORT 5 /* Upstream port of Switch */ +#define PCIE_SW_DOWNSTREAM_PORT 6 /* Downstream port of Switch */ +#define PCIE_ANY_PORT 7 + +/* Service Type */ +#define PCIE_PORT_SERVICE_PME 1 /* Power Management Event */ +#define PCIE_PORT_SERVICE_AER 2 /* Advanced Error Reporting */ +#define PCIE_PORT_SERVICE_HP 4 /* Native Hotplug */ +#define PCIE_PORT_SERVICE_VC 8 /* Virtual Channel */ + +/* Root/Upstream/Downstream Port's Interrupt Mode */ +#define PCIE_PORT_INTx_MODE 0 +#define PCIE_PORT_MSI_MODE 1 +#define PCIE_PORT_MSIX_MODE 2 + +struct pcie_port_service_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 */ + __u32 port_type, service_type; /* Port Entity */ + kernel_ulong_t driver_data; +}; + +struct pcie_device { + int irq; /* Service IRQ/MSI/MSI-X Vector */ + int interrupt_mode; /* [0:INTx | 1:MSI | 2:MSI-X] */ + struct pcie_port_service_id id; /* Service ID */ + struct pci_dev *port; /* Root/Upstream/Downstream Port */ + void *priv_data; /* Service Private Data */ + struct device device; /* Generic Device Interface */ +}; +#define to_pcie_device(d) container_of(d, struct pcie_device, device) + +static inline void set_service_data(struct pcie_device *dev, void *data) +{ + dev->priv_data = data; +} + +static inline void* get_service_data(struct pcie_device *dev) +{ + return dev->priv_data; +} + +struct pcie_port_service_driver { + const char *name; + int (*probe) (struct pcie_device *dev, + const struct pcie_port_service_id *id); + void (*remove) (struct pcie_device *dev); + int (*suspend) (struct pcie_device *dev, u32 state); + int (*resume) (struct pcie_device *dev); + + const struct pcie_port_service_id *id_table; + struct device_driver driver; +}; +#define to_service_driver(d) \ + container_of(d, struct pcie_port_service_driver, driver) + +extern int pcie_port_service_register(struct pcie_port_service_driver *new); +extern void pcie_port_service_unregister(struct pcie_port_service_driver *new); + +#endif /* _PCIEPORT_IF_H_ */ |
