|
@@ -355,6 +355,7 @@ struct pci_dev {
|
|
unsigned int broken_intx_masking:1;
|
|
unsigned int broken_intx_masking:1;
|
|
unsigned int io_window_1k:1; /* Intel P2P bridge 1K I/O windows */
|
|
unsigned int io_window_1k:1; /* Intel P2P bridge 1K I/O windows */
|
|
unsigned int irq_managed:1;
|
|
unsigned int irq_managed:1;
|
|
|
|
+ unsigned int has_secondary_link:1;
|
|
pci_dev_flags_t dev_flags;
|
|
pci_dev_flags_t dev_flags;
|
|
atomic_t enable_cnt; /* pci_enable_device has been called */
|
|
atomic_t enable_cnt; /* pci_enable_device has been called */
|
|
|
|
|
|
@@ -577,9 +578,15 @@ int raw_pci_read(unsigned int domain, unsigned int bus, unsigned int devfn,
|
|
int raw_pci_write(unsigned int domain, unsigned int bus, unsigned int devfn,
|
|
int raw_pci_write(unsigned int domain, unsigned int bus, unsigned int devfn,
|
|
int reg, int len, u32 val);
|
|
int reg, int len, u32 val);
|
|
|
|
|
|
|
|
+#ifdef CONFIG_PCI_BUS_ADDR_T_64BIT
|
|
|
|
+typedef u64 pci_bus_addr_t;
|
|
|
|
+#else
|
|
|
|
+typedef u32 pci_bus_addr_t;
|
|
|
|
+#endif
|
|
|
|
+
|
|
struct pci_bus_region {
|
|
struct pci_bus_region {
|
|
- dma_addr_t start;
|
|
|
|
- dma_addr_t end;
|
|
|
|
|
|
+ pci_bus_addr_t start;
|
|
|
|
+ pci_bus_addr_t end;
|
|
};
|
|
};
|
|
|
|
|
|
struct pci_dynids {
|
|
struct pci_dynids {
|
|
@@ -773,8 +780,6 @@ void pcibios_bus_to_resource(struct pci_bus *bus, struct resource *res,
|
|
void pcibios_scan_specific_bus(int busn);
|
|
void pcibios_scan_specific_bus(int busn);
|
|
struct pci_bus *pci_find_bus(int domain, int busnr);
|
|
struct pci_bus *pci_find_bus(int domain, int busnr);
|
|
void pci_bus_add_devices(const struct pci_bus *bus);
|
|
void pci_bus_add_devices(const struct pci_bus *bus);
|
|
-struct pci_bus *pci_scan_bus_parented(struct device *parent, int bus,
|
|
|
|
- struct pci_ops *ops, void *sysdata);
|
|
|
|
struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops, void *sysdata);
|
|
struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops, void *sysdata);
|
|
struct pci_bus *pci_create_root_bus(struct device *parent, int bus,
|
|
struct pci_bus *pci_create_root_bus(struct device *parent, int bus,
|
|
struct pci_ops *ops, void *sysdata,
|
|
struct pci_ops *ops, void *sysdata,
|
|
@@ -974,7 +979,6 @@ void pci_intx(struct pci_dev *dev, int enable);
|
|
bool pci_intx_mask_supported(struct pci_dev *dev);
|
|
bool pci_intx_mask_supported(struct pci_dev *dev);
|
|
bool pci_check_and_mask_intx(struct pci_dev *dev);
|
|
bool pci_check_and_mask_intx(struct pci_dev *dev);
|
|
bool pci_check_and_unmask_intx(struct pci_dev *dev);
|
|
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_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_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(struct pci_dev *dev, int pos, u16 mask);
|
|
@@ -1006,6 +1010,7 @@ int __must_check pci_assign_resource(struct pci_dev *dev, int i);
|
|
int __must_check pci_reassign_resource(struct pci_dev *dev, int i, resource_size_t add_size, resource_size_t align);
|
|
int __must_check pci_reassign_resource(struct pci_dev *dev, int i, resource_size_t add_size, resource_size_t align);
|
|
int pci_select_bars(struct pci_dev *dev, unsigned long flags);
|
|
int pci_select_bars(struct pci_dev *dev, unsigned long flags);
|
|
bool pci_device_is_present(struct pci_dev *pdev);
|
|
bool pci_device_is_present(struct pci_dev *pdev);
|
|
|
|
+void pci_ignore_hotplug(struct pci_dev *dev);
|
|
|
|
|
|
/* ROM control related routines */
|
|
/* ROM control related routines */
|
|
int pci_enable_rom(struct pci_dev *pdev);
|
|
int pci_enable_rom(struct pci_dev *pdev);
|
|
@@ -1043,11 +1048,6 @@ bool pci_dev_run_wake(struct pci_dev *dev);
|
|
bool pci_check_pme_status(struct pci_dev *dev);
|
|
bool pci_check_pme_status(struct pci_dev *dev);
|
|
void pci_pme_wakeup_bus(struct pci_bus *bus);
|
|
void pci_pme_wakeup_bus(struct pci_bus *bus);
|
|
|
|
|
|
-static inline void pci_ignore_hotplug(struct pci_dev *dev)
|
|
|
|
-{
|
|
|
|
- dev->ignore_hotplug = 1;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static inline int pci_enable_wake(struct pci_dev *dev, pci_power_t state,
|
|
static inline int pci_enable_wake(struct pci_dev *dev, pci_power_t state,
|
|
bool enable)
|
|
bool enable)
|
|
{
|
|
{
|
|
@@ -1128,7 +1128,7 @@ int __must_check pci_bus_alloc_resource(struct pci_bus *bus,
|
|
|
|
|
|
int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr);
|
|
int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr);
|
|
|
|
|
|
-static inline dma_addr_t pci_bus_address(struct pci_dev *pdev, int bar)
|
|
|
|
|
|
+static inline pci_bus_addr_t pci_bus_address(struct pci_dev *pdev, int bar)
|
|
{
|
|
{
|
|
struct pci_bus_region region;
|
|
struct pci_bus_region region;
|
|
|
|
|
|
@@ -1197,15 +1197,6 @@ int pci_set_vga_state(struct pci_dev *pdev, bool decode,
|
|
#define pci_pool_alloc(pool, flags, handle) dma_pool_alloc(pool, flags, handle)
|
|
#define pci_pool_alloc(pool, flags, handle) dma_pool_alloc(pool, flags, handle)
|
|
#define pci_pool_free(pool, vaddr, addr) dma_pool_free(pool, vaddr, addr)
|
|
#define pci_pool_free(pool, vaddr, addr) dma_pool_free(pool, vaddr, addr)
|
|
|
|
|
|
-enum pci_dma_burst_strategy {
|
|
|
|
- PCI_DMA_BURST_INFINITY, /* make bursts as large as possible,
|
|
|
|
- strategy_parameter is N/A */
|
|
|
|
- PCI_DMA_BURST_BOUNDARY, /* disconnect at every strategy_parameter
|
|
|
|
- byte boundaries */
|
|
|
|
- PCI_DMA_BURST_MULTIPLE, /* disconnect at some multiple of
|
|
|
|
- strategy_parameter byte boundaries */
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
struct msix_entry {
|
|
struct msix_entry {
|
|
u32 vector; /* kernel uses to write allocated vector */
|
|
u32 vector; /* kernel uses to write allocated vector */
|
|
u16 entry; /* driver uses to specify entry, OS writes */
|
|
u16 entry; /* driver uses to specify entry, OS writes */
|
|
@@ -1430,8 +1421,6 @@ static inline int pci_request_regions(struct pci_dev *dev, const char *res_name)
|
|
{ return -EIO; }
|
|
{ return -EIO; }
|
|
static inline void pci_release_regions(struct pci_dev *dev) { }
|
|
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)
|
|
static inline int pci_block_cfg_access_in_atomic(struct pci_dev *dev)
|
|
{ return 0; }
|
|
{ return 0; }
|
|
@@ -1905,4 +1894,15 @@ static inline bool pci_is_dev_assigned(struct pci_dev *pdev)
|
|
{
|
|
{
|
|
return (pdev->dev_flags & PCI_DEV_FLAGS_ASSIGNED) == PCI_DEV_FLAGS_ASSIGNED;
|
|
return (pdev->dev_flags & PCI_DEV_FLAGS_ASSIGNED) == PCI_DEV_FLAGS_ASSIGNED;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * pci_ari_enabled - query ARI forwarding status
|
|
|
|
+ * @bus: the PCI bus
|
|
|
|
+ *
|
|
|
|
+ * Returns true if ARI forwarding is enabled.
|
|
|
|
+ */
|
|
|
|
+static inline bool pci_ari_enabled(struct pci_bus *bus)
|
|
|
|
+{
|
|
|
|
+ return bus->self && bus->self->ari_enabled;
|
|
|
|
+}
|
|
#endif /* LINUX_PCI_H */
|
|
#endif /* LINUX_PCI_H */
|