Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6: (42 commits) PCI: Change PCI subsystem MAINTAINER PCI: pci-iommu-iotlb-flushing-speedup PCI: pci_setup_bridge() mustn't be __devinit PCI: pci_bus_size_cardbus() mustn't be __devinit PCI: pci_scan_device() mustn't be __devinit PCI: pci_alloc_child_bus() mustn't be __devinit PCI: replace remaining __FUNCTION__ occurrences PCI: Hotplug: fakephp: Return success, not ENODEV, when bus rescan is triggered PCI: Hotplug: Fix leaks in IBM Hot Plug Controller Driver - ibmphp_init_devno() PCI: clean up resource alignment management PCI: aerdrv_acpi.c: remove unneeded NULL check PCI: Update VIA CX700 quirk PCI: Expose PCI VPD through sysfs PCI: iommu: iotlb flushing PCI: simplify quirk debug output PCI: iova RB tree setup tweak PCI: parisc: use generic pci_enable_resources() PCI: ppc: use generic pci_enable_resources() PCI: powerpc: use generic pci_enable_resources() PCI: ia64: use generic pci_enable_resources() ...
This commit is contained in:
@@ -13,7 +13,6 @@ extern int pci_enable_pcie_error_reporting(struct pci_dev *dev);
|
||||
extern int pci_find_aer_capability(struct pci_dev *dev);
|
||||
extern int pci_disable_pcie_error_reporting(struct pci_dev *dev);
|
||||
extern int pci_cleanup_aer_uncorrect_error_status(struct pci_dev *dev);
|
||||
extern int pci_cleanup_aer_correct_error_status(struct pci_dev *dev);
|
||||
#else
|
||||
static inline int pci_enable_pcie_error_reporting(struct pci_dev *dev)
|
||||
{
|
||||
@@ -31,10 +30,6 @@ static inline int pci_cleanup_aer_uncorrect_error_status(struct pci_dev *dev)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
static inline int pci_cleanup_aer_correct_error_status(struct pci_dev *dev)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif //_AER_H_
|
||||
|
||||
@@ -44,7 +44,9 @@ struct resource_list {
|
||||
#define IORESOURCE_CACHEABLE 0x00004000
|
||||
#define IORESOURCE_RANGELENGTH 0x00008000
|
||||
#define IORESOURCE_SHADOWABLE 0x00010000
|
||||
#define IORESOURCE_BUS_HAS_VGA 0x00080000
|
||||
|
||||
#define IORESOURCE_SIZEALIGN 0x00020000 /* size indicates alignment */
|
||||
#define IORESOURCE_STARTALIGN 0x00040000 /* start field is alignment */
|
||||
|
||||
#define IORESOURCE_DISABLED 0x10000000
|
||||
#define IORESOURCE_UNSET 0x20000000
|
||||
@@ -110,6 +112,7 @@ extern int allocate_resource(struct resource *root, struct resource *new,
|
||||
void *alignf_data);
|
||||
int adjust_resource(struct resource *res, resource_size_t start,
|
||||
resource_size_t size);
|
||||
resource_size_t resource_alignment(struct resource *res);
|
||||
|
||||
/* Convenience shorthand with allocation */
|
||||
#define request_region(start,n,name) __request_region(&ioport_resource, (start), (n), (name))
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* aspm.h
|
||||
*
|
||||
* PCI Express ASPM defines and function prototypes
|
||||
*
|
||||
* Copyright (C) 2007 Intel Corp.
|
||||
* Zhang Yanmin (yanmin.zhang@intel.com)
|
||||
* Shaohua Li (shaohua.li@intel.com)
|
||||
*
|
||||
* For more information, please consult the following manuals (look at
|
||||
* http://www.pcisig.com/ for how to get them):
|
||||
*
|
||||
* PCI Express Specification
|
||||
*/
|
||||
|
||||
#ifndef LINUX_ASPM_H
|
||||
#define LINUX_ASPM_H
|
||||
|
||||
#include <linux/pci.h>
|
||||
|
||||
#define PCIE_LINK_STATE_L0S 1
|
||||
#define PCIE_LINK_STATE_L1 2
|
||||
#define PCIE_LINK_STATE_CLKPM 4
|
||||
|
||||
#ifdef CONFIG_PCIEASPM
|
||||
extern void pcie_aspm_init_link_state(struct pci_dev *pdev);
|
||||
extern void pcie_aspm_exit_link_state(struct pci_dev *pdev);
|
||||
extern void pcie_aspm_pm_state_change(struct pci_dev *pdev);
|
||||
extern void pci_disable_link_state(struct pci_dev *pdev, int state);
|
||||
#else
|
||||
static inline void pcie_aspm_init_link_state(struct pci_dev *pdev)
|
||||
{
|
||||
}
|
||||
static inline void pcie_aspm_exit_link_state(struct pci_dev *pdev)
|
||||
{
|
||||
}
|
||||
static inline void pcie_aspm_pm_state_change(struct pci_dev *pdev)
|
||||
{
|
||||
}
|
||||
static inline void pci_disable_link_state(struct pci_dev *pdev, int state)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PCIEASPM_DEBUG /* this depends on CONFIG_PCIEASPM */
|
||||
extern void pcie_aspm_create_sysfs_dev_files(struct pci_dev *pdev);
|
||||
extern void pcie_aspm_remove_sysfs_dev_files(struct pci_dev *pdev);
|
||||
#else
|
||||
static inline void pcie_aspm_create_sysfs_dev_files(struct pci_dev *pdev)
|
||||
{
|
||||
}
|
||||
static inline void pcie_aspm_remove_sysfs_dev_files(struct pci_dev *pdev)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
#endif /* LINUX_ASPM_H */
|
||||
+12
-18
@@ -20,6 +20,8 @@
|
||||
/* Include the pci register defines */
|
||||
#include <linux/pci_regs.h>
|
||||
|
||||
struct pci_vpd;
|
||||
|
||||
/*
|
||||
* The PCI interface treats multi-function devices as independent
|
||||
* devices. The slot/function address of each device is encoded
|
||||
@@ -128,11 +130,11 @@ struct pci_cap_saved_state {
|
||||
u32 data[0];
|
||||
};
|
||||
|
||||
struct pcie_link_state;
|
||||
/*
|
||||
* The pci_dev structure is used to describe PCI devices.
|
||||
*/
|
||||
struct pci_dev {
|
||||
struct list_head global_list; /* node in list of all PCI devices */
|
||||
struct list_head bus_list; /* node in per-bus list */
|
||||
struct pci_bus *bus; /* bus this device is on */
|
||||
struct pci_bus *subordinate; /* bus this device bridges to */
|
||||
@@ -165,6 +167,10 @@ struct pci_dev {
|
||||
this is D0-D3, D0 being fully functional,
|
||||
and D3 being off. */
|
||||
|
||||
#ifdef CONFIG_PCIEASPM
|
||||
struct pcie_link_state *link_state; /* ASPM link state. */
|
||||
#endif
|
||||
|
||||
pci_channel_state_t error_state; /* current connectivity state */
|
||||
struct device dev; /* Generic device interface */
|
||||
|
||||
@@ -181,6 +187,7 @@ struct pci_dev {
|
||||
unsigned int transparent:1; /* Transparent PCI bridge */
|
||||
unsigned int multifunction:1;/* Part of multi-function device */
|
||||
/* keep track of device state */
|
||||
unsigned int is_added:1;
|
||||
unsigned int is_busmaster:1; /* device is busmaster */
|
||||
unsigned int no_msi:1; /* device may not use msi */
|
||||
unsigned int no_d1d2:1; /* only allow d0 or d3 */
|
||||
@@ -201,11 +208,11 @@ struct pci_dev {
|
||||
#ifdef CONFIG_PCI_MSI
|
||||
struct list_head msi_list;
|
||||
#endif
|
||||
struct pci_vpd *vpd;
|
||||
};
|
||||
|
||||
extern struct pci_dev *alloc_pci_dev(void);
|
||||
|
||||
#define pci_dev_g(n) list_entry(n, struct pci_dev, global_list)
|
||||
#define pci_dev_b(n) list_entry(n, struct pci_dev, bus_list)
|
||||
#define to_pci_dev(n) container_of(n, struct pci_dev, dev)
|
||||
#define for_each_pci_dev(d) while ((d = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, d)) != NULL)
|
||||
@@ -449,7 +456,6 @@ extern struct bus_type pci_bus_type;
|
||||
/* Do NOT directly access these two variables, unless you are arch specific pci
|
||||
* code, or pci core code. */
|
||||
extern struct list_head pci_root_buses; /* list of all known PCI buses */
|
||||
extern struct list_head pci_devices; /* list of all devices */
|
||||
/* Some device drivers need know if pci is initiated */
|
||||
extern int no_pci_devices(void);
|
||||
|
||||
@@ -517,17 +523,13 @@ struct pci_bus *pci_find_next_bus(const struct pci_bus *from);
|
||||
|
||||
struct pci_dev *pci_get_device(unsigned int vendor, unsigned int device,
|
||||
struct pci_dev *from);
|
||||
struct pci_dev *pci_get_device_reverse(unsigned int vendor, unsigned int device,
|
||||
struct pci_dev *from);
|
||||
|
||||
struct pci_dev *pci_get_subsys(unsigned int vendor, unsigned int device,
|
||||
unsigned int ss_vendor, unsigned int ss_device,
|
||||
struct pci_dev *from);
|
||||
const struct pci_dev *from);
|
||||
struct pci_dev *pci_get_slot(struct pci_bus *bus, unsigned int devfn);
|
||||
struct pci_dev *pci_get_bus_and_slot(unsigned int bus, unsigned int devfn);
|
||||
struct pci_dev *pci_get_class(unsigned int class, struct pci_dev *from);
|
||||
int pci_dev_present(const struct pci_device_id *ids);
|
||||
const struct pci_device_id *pci_find_present(const struct pci_device_id *ids);
|
||||
|
||||
int pci_bus_read_config_byte(struct pci_bus *bus, unsigned int devfn,
|
||||
int where, u8 *val);
|
||||
@@ -601,7 +603,6 @@ int pcie_get_readrq(struct pci_dev *dev);
|
||||
int pcie_set_readrq(struct pci_dev *dev, int rq);
|
||||
void pci_update_resource(struct pci_dev *dev, struct resource *res, int resno);
|
||||
int __must_check pci_assign_resource(struct pci_dev *dev, int i);
|
||||
int __must_check pci_assign_resource_fixed(struct pci_dev *dev, int i);
|
||||
int pci_select_bars(struct pci_dev *dev, unsigned long flags);
|
||||
|
||||
/* ROM control related routines */
|
||||
@@ -626,6 +627,7 @@ int pci_claim_resource(struct pci_dev *, int);
|
||||
void pci_assign_unassigned_resources(void);
|
||||
void pdev_enable_device(struct pci_dev *);
|
||||
void pdev_sort_resources(struct pci_dev *, struct resource_list *);
|
||||
int pci_enable_resources(struct pci_dev *, int mask);
|
||||
void pci_fixup_irqs(u8 (*)(struct pci_dev *, u8 *),
|
||||
int (*)(struct pci_dev *, u8, u8));
|
||||
#define HAVE_PCI_REQ_REGIONS 2
|
||||
@@ -793,18 +795,11 @@ static inline struct pci_dev *pci_get_device(unsigned int vendor,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline struct pci_dev *pci_get_device_reverse(unsigned int vendor,
|
||||
unsigned int device,
|
||||
struct pci_dev *from)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline struct pci_dev *pci_get_subsys(unsigned int vendor,
|
||||
unsigned int device,
|
||||
unsigned int ss_vendor,
|
||||
unsigned int ss_device,
|
||||
struct pci_dev *from)
|
||||
const struct pci_dev *from)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
@@ -817,7 +812,6 @@ static inline struct pci_dev *pci_get_class(unsigned int class,
|
||||
|
||||
#define pci_dev_present(ids) (0)
|
||||
#define no_pci_devices() (1)
|
||||
#define pci_find_present(ids) (NULL)
|
||||
#define pci_dev_put(dev) do { } while (0)
|
||||
|
||||
static inline void pci_set_master(struct pci_dev *dev)
|
||||
|
||||
@@ -395,9 +395,17 @@
|
||||
#define PCI_EXP_DEVSTA_AUXPD 0x10 /* AUX Power Detected */
|
||||
#define PCI_EXP_DEVSTA_TRPND 0x20 /* Transactions Pending */
|
||||
#define PCI_EXP_LNKCAP 12 /* Link Capabilities */
|
||||
#define PCI_EXP_LNKCAP_ASPMS 0xc00 /* ASPM Support */
|
||||
#define PCI_EXP_LNKCAP_L0SEL 0x7000 /* L0s Exit Latency */
|
||||
#define PCI_EXP_LNKCAP_L1EL 0x38000 /* L1 Exit Latency */
|
||||
#define PCI_EXP_LNKCAP_CLKPM 0x40000 /* L1 Clock Power Management */
|
||||
#define PCI_EXP_LNKCTL 16 /* Link Control */
|
||||
#define PCI_EXP_LNKCTL_RL 0x20 /* Retrain Link */
|
||||
#define PCI_EXP_LNKCTL_CCC 0x40 /* Common Clock COnfiguration */
|
||||
#define PCI_EXP_LNKCTL_CLKREQ_EN 0x100 /* Enable clkreq */
|
||||
#define PCI_EXP_LNKSTA 18 /* Link Status */
|
||||
#define PCI_EXP_LNKSTA_LT 0x800 /* Link Training */
|
||||
#define PCI_EXP_LNKSTA_SLC 0x1000 /* Slot Clock Configuration */
|
||||
#define PCI_EXP_SLTCAP 20 /* Slot Capabilities */
|
||||
#define PCI_EXP_SLTCTL 24 /* Slot Control */
|
||||
#define PCI_EXP_SLTSTA 26 /* Slot Status */
|
||||
|
||||
Reference in New Issue
Block a user