Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
Conflicts: drivers/firmware/iscsi_ibft.c
This commit is contained in:
@ -187,6 +187,33 @@ enum pci_bus_flags {
|
||||
PCI_BUS_FLAGS_NO_MMRBC = (__force pci_bus_flags_t) 2,
|
||||
};
|
||||
|
||||
/* Based on the PCI Hotplug Spec, but some values are made up by us */
|
||||
enum pci_bus_speed {
|
||||
PCI_SPEED_33MHz = 0x00,
|
||||
PCI_SPEED_66MHz = 0x01,
|
||||
PCI_SPEED_66MHz_PCIX = 0x02,
|
||||
PCI_SPEED_100MHz_PCIX = 0x03,
|
||||
PCI_SPEED_133MHz_PCIX = 0x04,
|
||||
PCI_SPEED_66MHz_PCIX_ECC = 0x05,
|
||||
PCI_SPEED_100MHz_PCIX_ECC = 0x06,
|
||||
PCI_SPEED_133MHz_PCIX_ECC = 0x07,
|
||||
PCI_SPEED_66MHz_PCIX_266 = 0x09,
|
||||
PCI_SPEED_100MHz_PCIX_266 = 0x0a,
|
||||
PCI_SPEED_133MHz_PCIX_266 = 0x0b,
|
||||
AGP_UNKNOWN = 0x0c,
|
||||
AGP_1X = 0x0d,
|
||||
AGP_2X = 0x0e,
|
||||
AGP_4X = 0x0f,
|
||||
AGP_8X = 0x10,
|
||||
PCI_SPEED_66MHz_PCIX_533 = 0x11,
|
||||
PCI_SPEED_100MHz_PCIX_533 = 0x12,
|
||||
PCI_SPEED_133MHz_PCIX_533 = 0x13,
|
||||
PCIE_SPEED_2_5GT = 0x14,
|
||||
PCIE_SPEED_5_0GT = 0x15,
|
||||
PCIE_SPEED_8_0GT = 0x16,
|
||||
PCI_SPEED_UNKNOWN = 0xff,
|
||||
};
|
||||
|
||||
struct pci_cap_saved_state {
|
||||
struct hlist_node next;
|
||||
char cap_nr;
|
||||
@ -239,6 +266,7 @@ struct pci_dev {
|
||||
configuration space */
|
||||
unsigned int pme_support:5; /* Bitmask of states from which PME#
|
||||
can be generated */
|
||||
unsigned int pme_interrupt:1;
|
||||
unsigned int d1_support:1; /* Low power state D1 is supported */
|
||||
unsigned int d2_support:1; /* Low power state D2 is supported */
|
||||
unsigned int no_d1d2:1; /* Only allow D0 and D3 */
|
||||
@ -275,7 +303,8 @@ struct pci_dev {
|
||||
unsigned int msix_enabled:1;
|
||||
unsigned int ari_enabled:1; /* ARI forwarding */
|
||||
unsigned int is_managed:1;
|
||||
unsigned int is_pcie:1;
|
||||
unsigned int is_pcie:1; /* Obsolete. Will be removed.
|
||||
Use pci_is_pcie() instead */
|
||||
unsigned int needs_freset:1; /* Dev requires fundamental reset */
|
||||
unsigned int state_saved:1;
|
||||
unsigned int is_physfn:1;
|
||||
@ -335,9 +364,26 @@ static inline void pci_add_saved_cap(struct pci_dev *pci_dev,
|
||||
hlist_add_head(&new_cap->next, &pci_dev->saved_cap_space);
|
||||
}
|
||||
|
||||
#ifndef PCI_BUS_NUM_RESOURCES
|
||||
#define PCI_BUS_NUM_RESOURCES 16
|
||||
#endif
|
||||
/*
|
||||
* The first PCI_BRIDGE_RESOURCE_NUM PCI bus resources (those that correspond
|
||||
* to P2P or CardBus bridge windows) go in a table. Additional ones (for
|
||||
* buses below host bridges or subtractive decode bridges) go in the list.
|
||||
* Use pci_bus_for_each_resource() to iterate through all the resources.
|
||||
*/
|
||||
|
||||
/*
|
||||
* PCI_SUBTRACTIVE_DECODE means the bridge forwards the window implicitly
|
||||
* and there's no way to program the bridge with the details of the window.
|
||||
* This does not apply to ACPI _CRS windows, even with the _DEC subtractive-
|
||||
* decode bit set, because they are explicit and can be programmed with _SRS.
|
||||
*/
|
||||
#define PCI_SUBTRACTIVE_DECODE 0x1
|
||||
|
||||
struct pci_bus_resource {
|
||||
struct list_head list;
|
||||
struct resource *res;
|
||||
unsigned int flags;
|
||||
};
|
||||
|
||||
#define PCI_REGION_FLAG_MASK 0x0fU /* These bits of resource flags tell us the PCI region flags */
|
||||
|
||||
@ -348,8 +394,8 @@ struct pci_bus {
|
||||
struct list_head devices; /* list of devices on this bus */
|
||||
struct pci_dev *self; /* bridge device as seen by parent */
|
||||
struct list_head slots; /* list of slots on this bus */
|
||||
struct resource *resource[PCI_BUS_NUM_RESOURCES];
|
||||
/* address space routed to this bus */
|
||||
struct resource *resource[PCI_BRIDGE_RESOURCE_NUM];
|
||||
struct list_head resources; /* address space routed to this bus */
|
||||
|
||||
struct pci_ops *ops; /* configuration access functions */
|
||||
void *sysdata; /* hook for sys-specific extension */
|
||||
@ -359,6 +405,8 @@ struct pci_bus {
|
||||
unsigned char primary; /* number of primary bridge */
|
||||
unsigned char secondary; /* number of secondary bridge */
|
||||
unsigned char subordinate; /* max number of subordinate buses */
|
||||
unsigned char max_bus_speed; /* enum pci_bus_speed */
|
||||
unsigned char cur_bus_speed; /* enum pci_bus_speed */
|
||||
|
||||
char name[48];
|
||||
|
||||
@ -563,7 +611,8 @@ int __must_check pcibios_enable_device(struct pci_dev *, int mask);
|
||||
char *pcibios_setup(char *str);
|
||||
|
||||
/* Used only when drivers/pci/setup.c is used */
|
||||
void pcibios_align_resource(void *, struct resource *, resource_size_t,
|
||||
resource_size_t pcibios_align_resource(void *, const struct resource *,
|
||||
resource_size_t,
|
||||
resource_size_t);
|
||||
void pcibios_update_irq(struct pci_dev *, int irq);
|
||||
|
||||
@ -589,6 +638,7 @@ struct pci_bus *pci_create_bus(struct device *parent, int bus,
|
||||
struct pci_ops *ops, void *sysdata);
|
||||
struct pci_bus *pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev,
|
||||
int busnr);
|
||||
void pcie_update_link_speed(struct pci_bus *bus, u16 link_status);
|
||||
struct pci_slot *pci_create_slot(struct pci_bus *parent, int slot_nr,
|
||||
const char *name,
|
||||
struct hotplug_slot *hotplug);
|
||||
@ -618,12 +668,6 @@ extern void pci_sort_breadthfirst(void);
|
||||
|
||||
/* Generic PCI functions exported to card drivers */
|
||||
|
||||
#ifdef CONFIG_PCI_LEGACY
|
||||
struct pci_dev __deprecated *pci_find_device(unsigned int vendor,
|
||||
unsigned int device,
|
||||
struct pci_dev *from);
|
||||
#endif /* CONFIG_PCI_LEGACY */
|
||||
|
||||
enum pci_lost_interrupt_reason {
|
||||
PCI_LOST_IRQ_NO_INFORMATION = 0,
|
||||
PCI_LOST_IRQ_DISABLE_MSI,
|
||||
@ -753,11 +797,19 @@ int pci_set_power_state(struct pci_dev *dev, pci_power_t state);
|
||||
pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state);
|
||||
bool pci_pme_capable(struct pci_dev *dev, pci_power_t state);
|
||||
void pci_pme_active(struct pci_dev *dev, bool enable);
|
||||
int pci_enable_wake(struct pci_dev *dev, pci_power_t state, bool enable);
|
||||
int __pci_enable_wake(struct pci_dev *dev, pci_power_t state,
|
||||
bool runtime, bool enable);
|
||||
int pci_wake_from_d3(struct pci_dev *dev, bool enable);
|
||||
pci_power_t pci_target_state(struct pci_dev *dev);
|
||||
int pci_prepare_to_sleep(struct pci_dev *dev);
|
||||
int pci_back_from_sleep(struct pci_dev *dev);
|
||||
bool pci_dev_run_wake(struct pci_dev *dev);
|
||||
|
||||
static inline int pci_enable_wake(struct pci_dev *dev, pci_power_t state,
|
||||
bool enable)
|
||||
{
|
||||
return __pci_enable_wake(dev, state, false, enable);
|
||||
}
|
||||
|
||||
/* For use by arch with custom probe code */
|
||||
void set_pcie_port_type(struct pci_dev *pdev);
|
||||
@ -779,6 +831,7 @@ void pci_bus_assign_resources(const struct pci_bus *bus);
|
||||
void pci_bus_size_bridges(struct pci_bus *bus);
|
||||
int pci_claim_resource(struct pci_dev *, int);
|
||||
void pci_assign_unassigned_resources(void);
|
||||
void pci_assign_unassigned_bridge_resources(struct pci_dev *bridge);
|
||||
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);
|
||||
@ -796,12 +849,23 @@ int pci_request_selected_regions_exclusive(struct pci_dev *, int, const char *);
|
||||
void pci_release_selected_regions(struct pci_dev *, int);
|
||||
|
||||
/* drivers/pci/bus.c */
|
||||
void pci_bus_add_resource(struct pci_bus *bus, struct resource *res, unsigned int flags);
|
||||
struct resource *pci_bus_resource_n(const struct pci_bus *bus, int n);
|
||||
void pci_bus_remove_resources(struct pci_bus *bus);
|
||||
|
||||
#define pci_bus_for_each_resource(bus, res, i) \
|
||||
for (i = 0; \
|
||||
(res = pci_bus_resource_n(bus, i)) || i < PCI_BRIDGE_RESOURCE_NUM; \
|
||||
i++)
|
||||
|
||||
int __must_check pci_bus_alloc_resource(struct pci_bus *bus,
|
||||
struct resource *res, resource_size_t size,
|
||||
resource_size_t align, resource_size_t min,
|
||||
unsigned int type_mask,
|
||||
void (*alignf)(void *, struct resource *,
|
||||
resource_size_t, resource_size_t),
|
||||
resource_size_t (*alignf)(void *,
|
||||
const struct resource *,
|
||||
resource_size_t,
|
||||
resource_size_t),
|
||||
void *alignf_data);
|
||||
void pci_enable_bridges(struct pci_bus *bus);
|
||||
|
||||
@ -962,6 +1026,11 @@ static inline int pci_proc_domain(struct pci_bus *bus)
|
||||
}
|
||||
#endif /* CONFIG_PCI_DOMAINS */
|
||||
|
||||
/* some architectures require additional setup to direct VGA traffic */
|
||||
typedef int (*arch_set_vga_state_t)(struct pci_dev *pdev, bool decode,
|
||||
unsigned int command_bits, bool change_bridge);
|
||||
extern void pci_register_set_vga_state(arch_set_vga_state_t func);
|
||||
|
||||
#else /* CONFIG_PCI is not enabled */
|
||||
|
||||
/*
|
||||
@ -980,13 +1049,6 @@ static inline int pci_proc_domain(struct pci_bus *bus)
|
||||
_PCI_NOP_ALL(read, *)
|
||||
_PCI_NOP_ALL(write,)
|
||||
|
||||
static inline struct pci_dev *pci_find_device(unsigned int vendor,
|
||||
unsigned int device,
|
||||
struct pci_dev *from)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline struct pci_dev *pci_get_device(unsigned int vendor,
|
||||
unsigned int device,
|
||||
struct pci_dev *from)
|
||||
@ -1247,8 +1309,12 @@ enum pci_fixup_pass {
|
||||
DECLARE_PCI_FIXUP_SECTION(.pci_fixup_suspend, \
|
||||
suspend##vendor##device##hook, vendor, device, hook)
|
||||
|
||||
|
||||
#ifdef CONFIG_PCI_QUIRKS
|
||||
void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev);
|
||||
#else
|
||||
static inline void pci_fixup_device(enum pci_fixup_pass pass,
|
||||
struct pci_dev *dev) {}
|
||||
#endif
|
||||
|
||||
void __iomem *pcim_iomap(struct pci_dev *pdev, int bar, unsigned long maxlen);
|
||||
void pcim_iounmap(struct pci_dev *pdev, void __iomem *addr);
|
||||
|
Reference in New Issue
Block a user