|
|
|
|
@@ -224,7 +224,8 @@ enum pci_bus_speed {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct pci_cap_saved_data {
|
|
|
|
|
char cap_nr;
|
|
|
|
|
u16 cap_nr;
|
|
|
|
|
bool cap_extended;
|
|
|
|
|
unsigned int size;
|
|
|
|
|
u32 data[0];
|
|
|
|
|
};
|
|
|
|
|
@@ -351,7 +352,7 @@ struct pci_dev {
|
|
|
|
|
struct bin_attribute *res_attr_wc[DEVICE_COUNT_RESOURCE]; /* sysfs file for WC mapping of resources */
|
|
|
|
|
#ifdef CONFIG_PCI_MSI
|
|
|
|
|
struct list_head msi_list;
|
|
|
|
|
struct kset *msi_kset;
|
|
|
|
|
const struct attribute_group **msi_irq_groups;
|
|
|
|
|
#endif
|
|
|
|
|
struct pci_vpd *vpd;
|
|
|
|
|
#ifdef CONFIG_PCI_ATS
|
|
|
|
|
@@ -375,7 +376,6 @@ static inline struct pci_dev *pci_physfn(struct pci_dev *dev)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct pci_dev *pci_alloc_dev(struct pci_bus *bus);
|
|
|
|
|
struct pci_dev * __deprecated alloc_pci_dev(void);
|
|
|
|
|
|
|
|
|
|
#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)
|
|
|
|
|
@@ -385,8 +385,6 @@ static inline int pci_channel_offline(struct pci_dev *pdev)
|
|
|
|
|
return (pdev->error_state != pci_channel_io_normal);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern struct resource busn_resource;
|
|
|
|
|
|
|
|
|
|
struct pci_host_bridge_window {
|
|
|
|
|
struct list_head list;
|
|
|
|
|
struct resource *res; /* host bridge aperture (CPU address) */
|
|
|
|
|
@@ -551,8 +549,8 @@ int raw_pci_write(unsigned int domain, unsigned int bus, unsigned int devfn,
|
|
|
|
|
int reg, int len, u32 val);
|
|
|
|
|
|
|
|
|
|
struct pci_bus_region {
|
|
|
|
|
resource_size_t start;
|
|
|
|
|
resource_size_t end;
|
|
|
|
|
dma_addr_t start;
|
|
|
|
|
dma_addr_t end;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct pci_dynids {
|
|
|
|
|
@@ -634,8 +632,7 @@ struct pci_driver {
|
|
|
|
|
* DEFINE_PCI_DEVICE_TABLE - macro used to describe a pci device table
|
|
|
|
|
* @_table: device table name
|
|
|
|
|
*
|
|
|
|
|
* This macro is used to create a struct pci_device_id array (a device table)
|
|
|
|
|
* in a generic manner.
|
|
|
|
|
* This macro is deprecated and should not be used in new code.
|
|
|
|
|
*/
|
|
|
|
|
#define DEFINE_PCI_DEVICE_TABLE(_table) \
|
|
|
|
|
const struct pci_device_id _table[]
|
|
|
|
|
@@ -737,9 +734,9 @@ void pci_fixup_cardbus(struct pci_bus *);
|
|
|
|
|
|
|
|
|
|
/* Generic PCI functions used internally */
|
|
|
|
|
|
|
|
|
|
void pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
|
|
|
|
|
void pcibios_resource_to_bus(struct pci_bus *bus, struct pci_bus_region *region,
|
|
|
|
|
struct resource *res);
|
|
|
|
|
void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
|
|
|
|
|
void pcibios_bus_to_resource(struct pci_bus *bus, struct resource *res,
|
|
|
|
|
struct pci_bus_region *region);
|
|
|
|
|
void pcibios_scan_specific_bus(int busn);
|
|
|
|
|
struct pci_bus *pci_find_bus(int domain, int busnr);
|
|
|
|
|
@@ -763,7 +760,6 @@ struct pci_slot *pci_create_slot(struct pci_bus *parent, int slot_nr,
|
|
|
|
|
const char *name,
|
|
|
|
|
struct hotplug_slot *hotplug);
|
|
|
|
|
void pci_destroy_slot(struct pci_slot *slot);
|
|
|
|
|
void pci_renumber_slot(struct pci_slot *slot, int slot_nr);
|
|
|
|
|
int pci_scan_slot(struct pci_bus *bus, int devfn);
|
|
|
|
|
struct pci_dev *pci_scan_single_device(struct pci_bus *bus, int devfn);
|
|
|
|
|
void pci_device_add(struct pci_dev *dev, struct pci_bus *bus);
|
|
|
|
|
@@ -779,6 +775,7 @@ struct pci_dev *pci_dev_get(struct pci_dev *dev);
|
|
|
|
|
void pci_dev_put(struct pci_dev *dev);
|
|
|
|
|
void pci_remove_bus(struct pci_bus *b);
|
|
|
|
|
void pci_stop_and_remove_bus_device(struct pci_dev *dev);
|
|
|
|
|
void pci_stop_and_remove_bus_device_locked(struct pci_dev *dev);
|
|
|
|
|
void pci_stop_root_bus(struct pci_bus *bus);
|
|
|
|
|
void pci_remove_root_bus(struct pci_bus *bus);
|
|
|
|
|
void pci_setup_cardbus(struct pci_bus *bus);
|
|
|
|
|
@@ -938,6 +935,7 @@ bool pci_check_and_unmask_intx(struct pci_dev *dev);
|
|
|
|
|
void pci_msi_off(struct pci_dev *dev);
|
|
|
|
|
int pci_set_dma_max_seg_size(struct pci_dev *dev, unsigned int size);
|
|
|
|
|
int pci_set_dma_seg_boundary(struct pci_dev *dev, unsigned long mask);
|
|
|
|
|
int pci_wait_for_pending(struct pci_dev *dev, int pos, u16 mask);
|
|
|
|
|
int pci_wait_for_pending_transaction(struct pci_dev *dev);
|
|
|
|
|
int pcix_get_max_mmrbc(struct pci_dev *dev);
|
|
|
|
|
int pcix_get_mmrbc(struct pci_dev *dev);
|
|
|
|
|
@@ -951,10 +949,13 @@ int pcie_get_minimum_link(struct pci_dev *dev, enum pci_bus_speed *speed,
|
|
|
|
|
int __pci_reset_function(struct pci_dev *dev);
|
|
|
|
|
int __pci_reset_function_locked(struct pci_dev *dev);
|
|
|
|
|
int pci_reset_function(struct pci_dev *dev);
|
|
|
|
|
int pci_try_reset_function(struct pci_dev *dev);
|
|
|
|
|
int pci_probe_reset_slot(struct pci_slot *slot);
|
|
|
|
|
int pci_reset_slot(struct pci_slot *slot);
|
|
|
|
|
int pci_try_reset_slot(struct pci_slot *slot);
|
|
|
|
|
int pci_probe_reset_bus(struct pci_bus *bus);
|
|
|
|
|
int pci_reset_bus(struct pci_bus *bus);
|
|
|
|
|
int pci_try_reset_bus(struct pci_bus *bus);
|
|
|
|
|
void pci_reset_bridge_secondary_bus(struct pci_dev *dev);
|
|
|
|
|
void pci_update_resource(struct pci_dev *dev, int resno);
|
|
|
|
|
int __must_check pci_assign_resource(struct pci_dev *dev, int i);
|
|
|
|
|
@@ -974,9 +975,14 @@ void __iomem __must_check *pci_platform_rom(struct pci_dev *pdev, size_t *size);
|
|
|
|
|
int pci_save_state(struct pci_dev *dev);
|
|
|
|
|
void pci_restore_state(struct pci_dev *dev);
|
|
|
|
|
struct pci_saved_state *pci_store_saved_state(struct pci_dev *dev);
|
|
|
|
|
int pci_load_saved_state(struct pci_dev *dev, struct pci_saved_state *state);
|
|
|
|
|
int pci_load_and_free_saved_state(struct pci_dev *dev,
|
|
|
|
|
struct pci_saved_state **state);
|
|
|
|
|
struct pci_cap_saved_state *pci_find_saved_cap(struct pci_dev *dev, char cap);
|
|
|
|
|
struct pci_cap_saved_state *pci_find_saved_ext_cap(struct pci_dev *dev,
|
|
|
|
|
u16 cap);
|
|
|
|
|
int pci_add_cap_save_buffer(struct pci_dev *dev, char cap, unsigned int size);
|
|
|
|
|
int pci_add_ext_cap_save_buffer(struct pci_dev *dev,
|
|
|
|
|
u16 cap, unsigned int size);
|
|
|
|
|
int __pci_complete_power_transition(struct pci_dev *dev, pci_power_t state);
|
|
|
|
|
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);
|
|
|
|
|
@@ -985,7 +991,6 @@ void pci_pme_active(struct pci_dev *dev, 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);
|
|
|
|
|
@@ -998,21 +1003,10 @@ static inline int pci_enable_wake(struct pci_dev *dev, pci_power_t state,
|
|
|
|
|
return __pci_enable_wake(dev, state, false, enable);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#define PCI_EXP_IDO_REQUEST (1<<0)
|
|
|
|
|
#define PCI_EXP_IDO_COMPLETION (1<<1)
|
|
|
|
|
void pci_enable_ido(struct pci_dev *dev, unsigned long type);
|
|
|
|
|
void pci_disable_ido(struct pci_dev *dev, unsigned long type);
|
|
|
|
|
|
|
|
|
|
enum pci_obff_signal_type {
|
|
|
|
|
PCI_EXP_OBFF_SIGNAL_L0 = 0,
|
|
|
|
|
PCI_EXP_OBFF_SIGNAL_ALWAYS = 1,
|
|
|
|
|
};
|
|
|
|
|
int pci_enable_obff(struct pci_dev *dev, enum pci_obff_signal_type);
|
|
|
|
|
void pci_disable_obff(struct pci_dev *dev);
|
|
|
|
|
|
|
|
|
|
int pci_enable_ltr(struct pci_dev *dev);
|
|
|
|
|
void pci_disable_ltr(struct pci_dev *dev);
|
|
|
|
|
int pci_set_ltr(struct pci_dev *dev, int snoop_lat_ns, int nosnoop_lat_ns);
|
|
|
|
|
/* PCI Virtual Channel */
|
|
|
|
|
int pci_save_vc_state(struct pci_dev *dev);
|
|
|
|
|
void pci_restore_vc_state(struct pci_dev *dev);
|
|
|
|
|
void pci_allocate_vc_save_buffers(struct pci_dev *dev);
|
|
|
|
|
|
|
|
|
|
/* For use by arch with custom probe code */
|
|
|
|
|
void set_pcie_port_type(struct pci_dev *pdev);
|
|
|
|
|
@@ -1022,11 +1016,12 @@ void set_pcie_hotplug_bridge(struct pci_dev *pdev);
|
|
|
|
|
int pci_bus_find_capability(struct pci_bus *bus, unsigned int devfn, int cap);
|
|
|
|
|
unsigned int pci_rescan_bus_bridge_resize(struct pci_dev *bridge);
|
|
|
|
|
unsigned int pci_rescan_bus(struct pci_bus *bus);
|
|
|
|
|
void pci_lock_rescan_remove(void);
|
|
|
|
|
void pci_unlock_rescan_remove(void);
|
|
|
|
|
|
|
|
|
|
/* Vital product data routines */
|
|
|
|
|
ssize_t pci_read_vpd(struct pci_dev *dev, loff_t pos, size_t count, void *buf);
|
|
|
|
|
ssize_t pci_write_vpd(struct pci_dev *dev, loff_t pos, size_t count, const void *buf);
|
|
|
|
|
int pci_vpd_truncate(struct pci_dev *dev, size_t size);
|
|
|
|
|
|
|
|
|
|
/* Helper functions for low-level code (drivers/pci/setup-[bus,res].c) */
|
|
|
|
|
resource_size_t pcibios_retrieve_fw_addr(struct pci_dev *dev, int idx);
|
|
|
|
|
@@ -1078,6 +1073,14 @@ int __must_check pci_bus_alloc_resource(struct pci_bus *bus,
|
|
|
|
|
resource_size_t),
|
|
|
|
|
void *alignf_data);
|
|
|
|
|
|
|
|
|
|
static inline dma_addr_t pci_bus_address(struct pci_dev *pdev, int bar)
|
|
|
|
|
{
|
|
|
|
|
struct pci_bus_region region;
|
|
|
|
|
|
|
|
|
|
pcibios_resource_to_bus(pdev->bus, ®ion, &pdev->resource[bar]);
|
|
|
|
|
return region.start;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Proper probing supporting hot-pluggable devices */
|
|
|
|
|
int __must_check __pci_register_driver(struct pci_driver *, struct module *,
|
|
|
|
|
const char *mod_name);
|
|
|
|
|
@@ -1115,7 +1118,6 @@ int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max,
|
|
|
|
|
|
|
|
|
|
void pci_walk_bus(struct pci_bus *top, int (*cb)(struct pci_dev *, void *),
|
|
|
|
|
void *userdata);
|
|
|
|
|
int pci_cfg_space_size_ext(struct pci_dev *dev);
|
|
|
|
|
int pci_cfg_space_size(struct pci_dev *dev);
|
|
|
|
|
unsigned char pci_bus_max_busnr(struct pci_bus *bus);
|
|
|
|
|
void pci_setup_bridge(struct pci_bus *bus);
|
|
|
|
|
@@ -1154,59 +1156,42 @@ struct msix_entry {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef CONFIG_PCI_MSI
|
|
|
|
|
static inline int pci_enable_msi_block(struct pci_dev *dev, unsigned int nvec)
|
|
|
|
|
{
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static inline int
|
|
|
|
|
pci_enable_msi_block_auto(struct pci_dev *dev, unsigned int *maxvec)
|
|
|
|
|
{
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static inline void pci_msi_shutdown(struct pci_dev *dev)
|
|
|
|
|
{ }
|
|
|
|
|
static inline void pci_disable_msi(struct pci_dev *dev)
|
|
|
|
|
{ }
|
|
|
|
|
|
|
|
|
|
static inline int pci_msix_table_size(struct pci_dev *dev)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
static inline int pci_enable_msix(struct pci_dev *dev,
|
|
|
|
|
struct msix_entry *entries, int nvec)
|
|
|
|
|
{
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static inline void pci_msix_shutdown(struct pci_dev *dev)
|
|
|
|
|
{ }
|
|
|
|
|
static inline void pci_disable_msix(struct pci_dev *dev)
|
|
|
|
|
{ }
|
|
|
|
|
|
|
|
|
|
static inline void msi_remove_pci_irq_vectors(struct pci_dev *dev)
|
|
|
|
|
{ }
|
|
|
|
|
|
|
|
|
|
static inline void pci_restore_msi_state(struct pci_dev *dev)
|
|
|
|
|
{ }
|
|
|
|
|
static inline int pci_msi_enabled(void)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
#else
|
|
|
|
|
int pci_enable_msi_block(struct pci_dev *dev, unsigned int nvec);
|
|
|
|
|
int pci_enable_msi_block_auto(struct pci_dev *dev, unsigned int *maxvec);
|
|
|
|
|
#ifdef CONFIG_PCI_MSI
|
|
|
|
|
int pci_msi_vec_count(struct pci_dev *dev);
|
|
|
|
|
int pci_enable_msi_block(struct pci_dev *dev, int nvec);
|
|
|
|
|
void pci_msi_shutdown(struct pci_dev *dev);
|
|
|
|
|
void pci_disable_msi(struct pci_dev *dev);
|
|
|
|
|
int pci_msix_table_size(struct pci_dev *dev);
|
|
|
|
|
int pci_msix_vec_count(struct pci_dev *dev);
|
|
|
|
|
int pci_enable_msix(struct pci_dev *dev, struct msix_entry *entries, int nvec);
|
|
|
|
|
void pci_msix_shutdown(struct pci_dev *dev);
|
|
|
|
|
void pci_disable_msix(struct pci_dev *dev);
|
|
|
|
|
void msi_remove_pci_irq_vectors(struct pci_dev *dev);
|
|
|
|
|
void pci_restore_msi_state(struct pci_dev *dev);
|
|
|
|
|
int pci_msi_enabled(void);
|
|
|
|
|
int pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec);
|
|
|
|
|
int pci_enable_msix_range(struct pci_dev *dev, struct msix_entry *entries,
|
|
|
|
|
int minvec, int maxvec);
|
|
|
|
|
#else
|
|
|
|
|
static inline int pci_msi_vec_count(struct pci_dev *dev) { return -ENOSYS; }
|
|
|
|
|
static inline int pci_enable_msi_block(struct pci_dev *dev, int nvec)
|
|
|
|
|
{ return -ENOSYS; }
|
|
|
|
|
static inline void pci_msi_shutdown(struct pci_dev *dev) { }
|
|
|
|
|
static inline void pci_disable_msi(struct pci_dev *dev) { }
|
|
|
|
|
static inline int pci_msix_vec_count(struct pci_dev *dev) { return -ENOSYS; }
|
|
|
|
|
static inline int pci_enable_msix(struct pci_dev *dev,
|
|
|
|
|
struct msix_entry *entries, int nvec)
|
|
|
|
|
{ return -ENOSYS; }
|
|
|
|
|
static inline void pci_msix_shutdown(struct pci_dev *dev) { }
|
|
|
|
|
static inline void pci_disable_msix(struct pci_dev *dev) { }
|
|
|
|
|
static inline void msi_remove_pci_irq_vectors(struct pci_dev *dev) { }
|
|
|
|
|
static inline void pci_restore_msi_state(struct pci_dev *dev) { }
|
|
|
|
|
static inline int pci_msi_enabled(void) { return 0; }
|
|
|
|
|
static inline int pci_enable_msi_range(struct pci_dev *dev, int minvec,
|
|
|
|
|
int maxvec)
|
|
|
|
|
{ return -ENOSYS; }
|
|
|
|
|
static inline int pci_enable_msix_range(struct pci_dev *dev,
|
|
|
|
|
struct msix_entry *entries, int minvec, int maxvec)
|
|
|
|
|
{ return -ENOSYS; }
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_PCIEPORTBUS
|
|
|
|
|
@@ -1217,12 +1202,10 @@ extern bool pcie_ports_auto;
|
|
|
|
|
#define pcie_ports_auto false
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifndef CONFIG_PCIEASPM
|
|
|
|
|
static inline int pcie_aspm_enabled(void) { return 0; }
|
|
|
|
|
static inline bool pcie_aspm_support_enabled(void) { return false; }
|
|
|
|
|
#else
|
|
|
|
|
int pcie_aspm_enabled(void);
|
|
|
|
|
#ifdef CONFIG_PCIEASPM
|
|
|
|
|
bool pcie_aspm_support_enabled(void);
|
|
|
|
|
#else
|
|
|
|
|
static inline bool pcie_aspm_support_enabled(void) { return false; }
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_PCIEAER
|
|
|
|
|
@@ -1233,15 +1216,12 @@ static inline void pci_no_aer(void) { }
|
|
|
|
|
static inline bool pci_aer_available(void) { return false; }
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifndef CONFIG_PCIE_ECRC
|
|
|
|
|
static inline void pcie_set_ecrc_checking(struct pci_dev *dev)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
static inline void pcie_ecrc_get_policy(char *str) {};
|
|
|
|
|
#else
|
|
|
|
|
#ifdef CONFIG_PCIE_ECRC
|
|
|
|
|
void pcie_set_ecrc_checking(struct pci_dev *dev);
|
|
|
|
|
void pcie_ecrc_get_policy(char *str);
|
|
|
|
|
#else
|
|
|
|
|
static inline void pcie_set_ecrc_checking(struct pci_dev *dev) { }
|
|
|
|
|
static inline void pcie_ecrc_get_policy(char *str) { }
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#define pci_enable_msi(pdev) pci_enable_msi_block(pdev, 1)
|
|
|
|
|
@@ -1265,15 +1245,8 @@ void pci_cfg_access_unlock(struct pci_dev *dev);
|
|
|
|
|
extern int pci_domains_supported;
|
|
|
|
|
#else
|
|
|
|
|
enum { pci_domains_supported = 0 };
|
|
|
|
|
static inline int pci_domain_nr(struct pci_bus *bus)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static inline int pci_proc_domain(struct pci_bus *bus)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
static inline int pci_domain_nr(struct pci_bus *bus) { return 0; }
|
|
|
|
|
static inline int pci_proc_domain(struct pci_bus *bus) { return 0; }
|
|
|
|
|
#endif /* CONFIG_PCI_DOMAINS */
|
|
|
|
|
|
|
|
|
|
/* some architectures require additional setup to direct VGA traffic */
|
|
|
|
|
@@ -1302,180 +1275,88 @@ _PCI_NOP_ALL(write,)
|
|
|
|
|
static inline struct pci_dev *pci_get_device(unsigned int vendor,
|
|
|
|
|
unsigned int device,
|
|
|
|
|
struct pci_dev *from)
|
|
|
|
|
{
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
{ 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)
|
|
|
|
|
{
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
{ return NULL; }
|
|
|
|
|
|
|
|
|
|
static inline struct pci_dev *pci_get_class(unsigned int class,
|
|
|
|
|
struct pci_dev *from)
|
|
|
|
|
{
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
{ return NULL; }
|
|
|
|
|
|
|
|
|
|
#define pci_dev_present(ids) (0)
|
|
|
|
|
#define no_pci_devices() (1)
|
|
|
|
|
#define pci_dev_put(dev) do { } while (0)
|
|
|
|
|
|
|
|
|
|
static inline void pci_set_master(struct pci_dev *dev)
|
|
|
|
|
{ }
|
|
|
|
|
|
|
|
|
|
static inline int pci_enable_device(struct pci_dev *dev)
|
|
|
|
|
{
|
|
|
|
|
return -EIO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static inline void pci_disable_device(struct pci_dev *dev)
|
|
|
|
|
{ }
|
|
|
|
|
|
|
|
|
|
static inline void pci_set_master(struct pci_dev *dev) { }
|
|
|
|
|
static inline int pci_enable_device(struct pci_dev *dev) { return -EIO; }
|
|
|
|
|
static inline void pci_disable_device(struct pci_dev *dev) { }
|
|
|
|
|
static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask)
|
|
|
|
|
{
|
|
|
|
|
return -EIO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
{ return -EIO; }
|
|
|
|
|
static inline int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask)
|
|
|
|
|
{
|
|
|
|
|
return -EIO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
{ return -EIO; }
|
|
|
|
|
static inline int pci_set_dma_max_seg_size(struct pci_dev *dev,
|
|
|
|
|
unsigned int size)
|
|
|
|
|
{
|
|
|
|
|
return -EIO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
{ return -EIO; }
|
|
|
|
|
static inline int pci_set_dma_seg_boundary(struct pci_dev *dev,
|
|
|
|
|
unsigned long mask)
|
|
|
|
|
{
|
|
|
|
|
return -EIO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
{ return -EIO; }
|
|
|
|
|
static inline int pci_assign_resource(struct pci_dev *dev, int i)
|
|
|
|
|
{
|
|
|
|
|
return -EBUSY;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
{ return -EBUSY; }
|
|
|
|
|
static inline int __pci_register_driver(struct pci_driver *drv,
|
|
|
|
|
struct module *owner)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
{ return 0; }
|
|
|
|
|
static inline int pci_register_driver(struct pci_driver *drv)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static inline void pci_unregister_driver(struct pci_driver *drv)
|
|
|
|
|
{ }
|
|
|
|
|
|
|
|
|
|
{ return 0; }
|
|
|
|
|
static inline void pci_unregister_driver(struct pci_driver *drv) { }
|
|
|
|
|
static inline int pci_find_capability(struct pci_dev *dev, int cap)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
{ return 0; }
|
|
|
|
|
static inline int pci_find_next_capability(struct pci_dev *dev, u8 post,
|
|
|
|
|
int cap)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
{ return 0; }
|
|
|
|
|
static inline int pci_find_ext_capability(struct pci_dev *dev, int cap)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
{ return 0; }
|
|
|
|
|
|
|
|
|
|
/* Power management related routines */
|
|
|
|
|
static inline int pci_save_state(struct pci_dev *dev)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static inline void pci_restore_state(struct pci_dev *dev)
|
|
|
|
|
{ }
|
|
|
|
|
|
|
|
|
|
static inline int pci_save_state(struct pci_dev *dev) { return 0; }
|
|
|
|
|
static inline void pci_restore_state(struct pci_dev *dev) { }
|
|
|
|
|
static inline int pci_set_power_state(struct pci_dev *dev, pci_power_t state)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
{ return 0; }
|
|
|
|
|
static inline int pci_wake_from_d3(struct pci_dev *dev, bool enable)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
{ return 0; }
|
|
|
|
|
static inline pci_power_t pci_choose_state(struct pci_dev *dev,
|
|
|
|
|
pm_message_t state)
|
|
|
|
|
{
|
|
|
|
|
return PCI_D0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
{ return PCI_D0; }
|
|
|
|
|
static inline int pci_enable_wake(struct pci_dev *dev, pci_power_t state,
|
|
|
|
|
int enable)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static inline void pci_enable_ido(struct pci_dev *dev, unsigned long type)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static inline void pci_disable_ido(struct pci_dev *dev, unsigned long type)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static inline int pci_enable_obff(struct pci_dev *dev, unsigned long type)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static inline void pci_disable_obff(struct pci_dev *dev)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
{ return 0; }
|
|
|
|
|
|
|
|
|
|
static inline int pci_request_regions(struct pci_dev *dev, const char *res_name)
|
|
|
|
|
{
|
|
|
|
|
return -EIO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static inline void pci_release_regions(struct pci_dev *dev)
|
|
|
|
|
{ }
|
|
|
|
|
{ return -EIO; }
|
|
|
|
|
static inline void pci_release_regions(struct pci_dev *dev) { }
|
|
|
|
|
|
|
|
|
|
#define pci_dma_burst_advice(pdev, strat, strategy_parameter) do { } while (0)
|
|
|
|
|
|
|
|
|
|
static inline void pci_block_cfg_access(struct pci_dev *dev)
|
|
|
|
|
{ }
|
|
|
|
|
|
|
|
|
|
static inline void pci_block_cfg_access(struct pci_dev *dev) { }
|
|
|
|
|
static inline int pci_block_cfg_access_in_atomic(struct pci_dev *dev)
|
|
|
|
|
{ return 0; }
|
|
|
|
|
|
|
|
|
|
static inline void pci_unblock_cfg_access(struct pci_dev *dev)
|
|
|
|
|
{ }
|
|
|
|
|
static inline void pci_unblock_cfg_access(struct pci_dev *dev) { }
|
|
|
|
|
|
|
|
|
|
static inline struct pci_bus *pci_find_next_bus(const struct pci_bus *from)
|
|
|
|
|
{ return NULL; }
|
|
|
|
|
|
|
|
|
|
static inline struct pci_dev *pci_get_slot(struct pci_bus *bus,
|
|
|
|
|
unsigned int devfn)
|
|
|
|
|
{ return NULL; }
|
|
|
|
|
|
|
|
|
|
static inline struct pci_dev *pci_get_bus_and_slot(unsigned int bus,
|
|
|
|
|
unsigned int devfn)
|
|
|
|
|
{ return NULL; }
|
|
|
|
|
|
|
|
|
|
static inline int pci_domain_nr(struct pci_bus *bus)
|
|
|
|
|
{ return 0; }
|
|
|
|
|
|
|
|
|
|
static inline struct pci_dev *pci_dev_get(struct pci_dev *dev)
|
|
|
|
|
{ return NULL; }
|
|
|
|
|
static inline int pci_domain_nr(struct pci_bus *bus) { return 0; }
|
|
|
|
|
static inline struct pci_dev *pci_dev_get(struct pci_dev *dev) { return NULL; }
|
|
|
|
|
|
|
|
|
|
#define dev_is_pci(d) (false)
|
|
|
|
|
#define dev_is_pf(d) (false)
|
|
|
|
|
@@ -1486,10 +1367,6 @@ static inline struct pci_dev *pci_dev_get(struct pci_dev *dev)
|
|
|
|
|
|
|
|
|
|
#include <asm/pci.h>
|
|
|
|
|
|
|
|
|
|
#ifndef PCIBIOS_MAX_MEM_32
|
|
|
|
|
#define PCIBIOS_MAX_MEM_32 (-1)
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/* these helpers provide future and backwards compatibility
|
|
|
|
|
* for accessing popular PCI BAR info */
|
|
|
|
|
#define pci_resource_start(dev, bar) ((dev)->resource[(bar)].start)
|
|
|
|
|
@@ -1635,7 +1512,7 @@ struct pci_dev *pci_get_dma_source(struct pci_dev *dev);
|
|
|
|
|
int pci_dev_specific_acs_enabled(struct pci_dev *dev, u16 acs_flags);
|
|
|
|
|
#else
|
|
|
|
|
static inline void pci_fixup_device(enum pci_fixup_pass pass,
|
|
|
|
|
struct pci_dev *dev) {}
|
|
|
|
|
struct pci_dev *dev) { }
|
|
|
|
|
static inline struct pci_dev *pci_get_dma_source(struct pci_dev *dev)
|
|
|
|
|
{
|
|
|
|
|
return pci_dev_get(dev);
|
|
|
|
|
@@ -1707,32 +1584,17 @@ int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs);
|
|
|
|
|
int pci_sriov_get_totalvfs(struct pci_dev *dev);
|
|
|
|
|
#else
|
|
|
|
|
static inline int pci_enable_sriov(struct pci_dev *dev, int nr_virtfn)
|
|
|
|
|
{
|
|
|
|
|
return -ENODEV;
|
|
|
|
|
}
|
|
|
|
|
static inline void pci_disable_sriov(struct pci_dev *dev)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
{ return -ENODEV; }
|
|
|
|
|
static inline void pci_disable_sriov(struct pci_dev *dev) { }
|
|
|
|
|
static inline irqreturn_t pci_sriov_migration(struct pci_dev *dev)
|
|
|
|
|
{
|
|
|
|
|
return IRQ_NONE;
|
|
|
|
|
}
|
|
|
|
|
static inline int pci_num_vf(struct pci_dev *dev)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
{ return IRQ_NONE; }
|
|
|
|
|
static inline int pci_num_vf(struct pci_dev *dev) { return 0; }
|
|
|
|
|
static inline int pci_vfs_assigned(struct pci_dev *dev)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
{ return 0; }
|
|
|
|
|
static inline int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
{ return 0; }
|
|
|
|
|
static inline int pci_sriov_get_totalvfs(struct pci_dev *dev)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
{ return 0; }
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if defined(CONFIG_HOTPLUG_PCI) || defined(CONFIG_HOTPLUG_PCI_MODULE)
|
|
|
|
|
|