0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 #ifndef LINUX_PCI_H
0024 #define LINUX_PCI_H
0025
0026
0027 #include <linux/mod_devicetable.h>
0028
0029 #include <linux/types.h>
0030 #include <linux/init.h>
0031 #include <linux/ioport.h>
0032 #include <linux/list.h>
0033 #include <linux/compiler.h>
0034 #include <linux/errno.h>
0035 #include <linux/kobject.h>
0036 #include <linux/atomic.h>
0037 #include <linux/device.h>
0038 #include <linux/interrupt.h>
0039 #include <linux/io.h>
0040 #include <linux/resource_ext.h>
0041 #include <uapi/linux/pci.h>
0042
0043 #include <linux/pci_ids.h>
0044
0045 #define PCI_STATUS_ERROR_BITS (PCI_STATUS_DETECTED_PARITY | \
0046 PCI_STATUS_SIG_SYSTEM_ERROR | \
0047 PCI_STATUS_REC_MASTER_ABORT | \
0048 PCI_STATUS_REC_TARGET_ABORT | \
0049 PCI_STATUS_SIG_TARGET_ABORT | \
0050 PCI_STATUS_PARITY)
0051
0052
0053 #define PCI_NUM_RESET_METHODS 7
0054
0055 #define PCI_RESET_PROBE true
0056 #define PCI_RESET_DO_RESET false
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070 #define PCI_DEVID(bus, devfn) ((((u16)(bus)) << 8) | (devfn))
0071
0072 #define PCI_BUS_NUM(x) (((x) >> 8) & 0xff)
0073
0074
0075 struct pci_slot {
0076 struct pci_bus *bus;
0077 struct list_head list;
0078 struct hotplug_slot *hotplug;
0079 unsigned char number;
0080 struct kobject kobj;
0081 };
0082
0083 static inline const char *pci_slot_name(const struct pci_slot *slot)
0084 {
0085 return kobject_name(&slot->kobj);
0086 }
0087
0088
0089 enum pci_mmap_state {
0090 pci_mmap_io,
0091 pci_mmap_mem
0092 };
0093
0094
0095 enum {
0096
0097 PCI_STD_RESOURCES,
0098 PCI_STD_RESOURCE_END = PCI_STD_RESOURCES + PCI_STD_NUM_BARS - 1,
0099
0100
0101 PCI_ROM_RESOURCE,
0102
0103
0104 #ifdef CONFIG_PCI_IOV
0105 PCI_IOV_RESOURCES,
0106 PCI_IOV_RESOURCE_END = PCI_IOV_RESOURCES + PCI_SRIOV_NUM_BARS - 1,
0107 #endif
0108
0109
0110 #define PCI_BRIDGE_IO_WINDOW (PCI_BRIDGE_RESOURCES + 0)
0111 #define PCI_BRIDGE_MEM_WINDOW (PCI_BRIDGE_RESOURCES + 1)
0112 #define PCI_BRIDGE_PREF_MEM_WINDOW (PCI_BRIDGE_RESOURCES + 2)
0113
0114
0115 #define PCI_CB_BRIDGE_IO_0_WINDOW (PCI_BRIDGE_RESOURCES + 0)
0116 #define PCI_CB_BRIDGE_IO_1_WINDOW (PCI_BRIDGE_RESOURCES + 1)
0117 #define PCI_CB_BRIDGE_MEM_0_WINDOW (PCI_BRIDGE_RESOURCES + 2)
0118 #define PCI_CB_BRIDGE_MEM_1_WINDOW (PCI_BRIDGE_RESOURCES + 3)
0119
0120
0121 #define PCI_BRIDGE_RESOURCE_NUM 4
0122
0123
0124 PCI_BRIDGE_RESOURCES,
0125 PCI_BRIDGE_RESOURCE_END = PCI_BRIDGE_RESOURCES +
0126 PCI_BRIDGE_RESOURCE_NUM - 1,
0127
0128
0129 PCI_NUM_RESOURCES,
0130
0131
0132 DEVICE_COUNT_RESOURCE = PCI_NUM_RESOURCES,
0133 };
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146 enum pci_interrupt_pin {
0147 PCI_INTERRUPT_UNKNOWN,
0148 PCI_INTERRUPT_INTA,
0149 PCI_INTERRUPT_INTB,
0150 PCI_INTERRUPT_INTC,
0151 PCI_INTERRUPT_INTD,
0152 };
0153
0154
0155 #define PCI_NUM_INTX 4
0156
0157
0158
0159
0160
0161
0162 #define PCI_ERROR_RESPONSE (~0ULL)
0163 #define PCI_SET_ERROR_RESPONSE(val) (*(val) = ((typeof(*(val))) PCI_ERROR_RESPONSE))
0164 #define PCI_POSSIBLE_ERROR(val) ((val) == ((typeof(val)) PCI_ERROR_RESPONSE))
0165
0166
0167
0168
0169
0170 typedef int __bitwise pci_power_t;
0171
0172 #define PCI_D0 ((pci_power_t __force) 0)
0173 #define PCI_D1 ((pci_power_t __force) 1)
0174 #define PCI_D2 ((pci_power_t __force) 2)
0175 #define PCI_D3hot ((pci_power_t __force) 3)
0176 #define PCI_D3cold ((pci_power_t __force) 4)
0177 #define PCI_UNKNOWN ((pci_power_t __force) 5)
0178 #define PCI_POWER_ERROR ((pci_power_t __force) -1)
0179
0180
0181 extern const char *pci_power_names[];
0182
0183 static inline const char *pci_power_name(pci_power_t state)
0184 {
0185 return pci_power_names[1 + (__force int) state];
0186 }
0187
0188
0189
0190
0191
0192
0193
0194
0195 typedef unsigned int __bitwise pci_channel_state_t;
0196
0197 enum {
0198
0199 pci_channel_io_normal = (__force pci_channel_state_t) 1,
0200
0201
0202 pci_channel_io_frozen = (__force pci_channel_state_t) 2,
0203
0204
0205 pci_channel_io_perm_failure = (__force pci_channel_state_t) 3,
0206 };
0207
0208 typedef unsigned int __bitwise pcie_reset_state_t;
0209
0210 enum pcie_reset_state {
0211
0212 pcie_deassert_reset = (__force pcie_reset_state_t) 1,
0213
0214
0215 pcie_warm_reset = (__force pcie_reset_state_t) 2,
0216
0217
0218 pcie_hot_reset = (__force pcie_reset_state_t) 3
0219 };
0220
0221 typedef unsigned short __bitwise pci_dev_flags_t;
0222 enum pci_dev_flags {
0223
0224 PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG = (__force pci_dev_flags_t) (1 << 0),
0225
0226 PCI_DEV_FLAGS_NO_D3 = (__force pci_dev_flags_t) (1 << 1),
0227
0228 PCI_DEV_FLAGS_ASSIGNED = (__force pci_dev_flags_t) (1 << 2),
0229
0230 PCI_DEV_FLAGS_ACS_ENABLED_QUIRK = (__force pci_dev_flags_t) (1 << 3),
0231
0232 PCI_DEV_FLAG_PCIE_BRIDGE_ALIAS = (__force pci_dev_flags_t) (1 << 5),
0233
0234 PCI_DEV_FLAGS_NO_BUS_RESET = (__force pci_dev_flags_t) (1 << 6),
0235
0236 PCI_DEV_FLAGS_NO_PM_RESET = (__force pci_dev_flags_t) (1 << 7),
0237
0238 PCI_DEV_FLAGS_VPD_REF_F0 = (__force pci_dev_flags_t) (1 << 8),
0239
0240 PCI_DEV_FLAGS_BRIDGE_XLATE_ROOT = (__force pci_dev_flags_t) (1 << 9),
0241
0242 PCI_DEV_FLAGS_NO_FLR_RESET = (__force pci_dev_flags_t) (1 << 10),
0243
0244 PCI_DEV_FLAGS_NO_RELAXED_ORDERING = (__force pci_dev_flags_t) (1 << 11),
0245
0246 PCI_DEV_FLAGS_HAS_MSI_MASKING = (__force pci_dev_flags_t) (1 << 12),
0247 };
0248
0249 enum pci_irq_reroute_variant {
0250 INTEL_IRQ_REROUTE_VARIANT = 1,
0251 MAX_IRQ_REROUTE_VARIANTS = 3
0252 };
0253
0254 typedef unsigned short __bitwise pci_bus_flags_t;
0255 enum pci_bus_flags {
0256 PCI_BUS_FLAGS_NO_MSI = (__force pci_bus_flags_t) 1,
0257 PCI_BUS_FLAGS_NO_MMRBC = (__force pci_bus_flags_t) 2,
0258 PCI_BUS_FLAGS_NO_AERSID = (__force pci_bus_flags_t) 4,
0259 PCI_BUS_FLAGS_NO_EXTCFG = (__force pci_bus_flags_t) 8,
0260 };
0261
0262
0263 enum pcie_link_width {
0264 PCIE_LNK_WIDTH_RESRV = 0x00,
0265 PCIE_LNK_X1 = 0x01,
0266 PCIE_LNK_X2 = 0x02,
0267 PCIE_LNK_X4 = 0x04,
0268 PCIE_LNK_X8 = 0x08,
0269 PCIE_LNK_X12 = 0x0c,
0270 PCIE_LNK_X16 = 0x10,
0271 PCIE_LNK_X32 = 0x20,
0272 PCIE_LNK_WIDTH_UNKNOWN = 0xff,
0273 };
0274
0275
0276 enum pci_bus_speed {
0277 PCI_SPEED_33MHz = 0x00,
0278 PCI_SPEED_66MHz = 0x01,
0279 PCI_SPEED_66MHz_PCIX = 0x02,
0280 PCI_SPEED_100MHz_PCIX = 0x03,
0281 PCI_SPEED_133MHz_PCIX = 0x04,
0282 PCI_SPEED_66MHz_PCIX_ECC = 0x05,
0283 PCI_SPEED_100MHz_PCIX_ECC = 0x06,
0284 PCI_SPEED_133MHz_PCIX_ECC = 0x07,
0285 PCI_SPEED_66MHz_PCIX_266 = 0x09,
0286 PCI_SPEED_100MHz_PCIX_266 = 0x0a,
0287 PCI_SPEED_133MHz_PCIX_266 = 0x0b,
0288 AGP_UNKNOWN = 0x0c,
0289 AGP_1X = 0x0d,
0290 AGP_2X = 0x0e,
0291 AGP_4X = 0x0f,
0292 AGP_8X = 0x10,
0293 PCI_SPEED_66MHz_PCIX_533 = 0x11,
0294 PCI_SPEED_100MHz_PCIX_533 = 0x12,
0295 PCI_SPEED_133MHz_PCIX_533 = 0x13,
0296 PCIE_SPEED_2_5GT = 0x14,
0297 PCIE_SPEED_5_0GT = 0x15,
0298 PCIE_SPEED_8_0GT = 0x16,
0299 PCIE_SPEED_16_0GT = 0x17,
0300 PCIE_SPEED_32_0GT = 0x18,
0301 PCIE_SPEED_64_0GT = 0x19,
0302 PCI_SPEED_UNKNOWN = 0xff,
0303 };
0304
0305 enum pci_bus_speed pcie_get_speed_cap(struct pci_dev *dev);
0306 enum pcie_link_width pcie_get_width_cap(struct pci_dev *dev);
0307
0308 struct pci_vpd {
0309 struct mutex lock;
0310 unsigned int len;
0311 u8 cap;
0312 };
0313
0314 struct irq_affinity;
0315 struct pcie_link_state;
0316 struct pci_sriov;
0317 struct pci_p2pdma;
0318 struct rcec_ea;
0319
0320
0321 struct pci_dev {
0322 struct list_head bus_list;
0323 struct pci_bus *bus;
0324 struct pci_bus *subordinate;
0325
0326 void *sysdata;
0327 struct proc_dir_entry *procent;
0328 struct pci_slot *slot;
0329
0330 unsigned int devfn;
0331 unsigned short vendor;
0332 unsigned short device;
0333 unsigned short subsystem_vendor;
0334 unsigned short subsystem_device;
0335 unsigned int class;
0336 u8 revision;
0337 u8 hdr_type;
0338 #ifdef CONFIG_PCIEAER
0339 u16 aer_cap;
0340 struct aer_stats *aer_stats;
0341 #endif
0342 #ifdef CONFIG_PCIEPORTBUS
0343 struct rcec_ea *rcec_ea;
0344 struct pci_dev *rcec;
0345 #endif
0346 u32 devcap;
0347 u8 pcie_cap;
0348 u8 msi_cap;
0349 u8 msix_cap;
0350 u8 pcie_mpss:3;
0351 u8 rom_base_reg;
0352 u8 pin;
0353 u16 pcie_flags_reg;
0354 unsigned long *dma_alias_mask;
0355
0356 struct pci_driver *driver;
0357 u64 dma_mask;
0358
0359
0360
0361
0362
0363 struct device_dma_parameters dma_parms;
0364
0365 pci_power_t current_state;
0366
0367
0368 unsigned int imm_ready:1;
0369 u8 pm_cap;
0370 unsigned int pme_support:5;
0371
0372 unsigned int pme_poll:1;
0373 unsigned int d1_support:1;
0374 unsigned int d2_support:1;
0375 unsigned int no_d1d2:1;
0376 unsigned int no_d3cold:1;
0377 unsigned int bridge_d3:1;
0378 unsigned int d3cold_allowed:1;
0379 unsigned int mmio_always_on:1;
0380
0381 unsigned int wakeup_prepared:1;
0382 unsigned int skip_bus_pm:1;
0383 unsigned int ignore_hotplug:1;
0384 unsigned int hotplug_user_indicators:1;
0385
0386
0387 unsigned int clear_retrain_link:1;
0388
0389 unsigned int d3hot_delay;
0390 unsigned int d3cold_delay;
0391
0392 #ifdef CONFIG_PCIEASPM
0393 struct pcie_link_state *link_state;
0394 unsigned int ltr_path:1;
0395
0396 u16 l1ss;
0397 #endif
0398 unsigned int pasid_no_tlp:1;
0399 unsigned int eetlp_prefix_path:1;
0400
0401 pci_channel_state_t error_state;
0402 struct device dev;
0403
0404 int cfg_size;
0405
0406
0407
0408
0409
0410 unsigned int irq;
0411 struct resource resource[DEVICE_COUNT_RESOURCE];
0412
0413 bool match_driver;
0414
0415 unsigned int transparent:1;
0416 unsigned int io_window:1;
0417 unsigned int pref_window:1;
0418 unsigned int pref_64_window:1;
0419 unsigned int multifunction:1;
0420
0421 unsigned int is_busmaster:1;
0422 unsigned int no_msi:1;
0423 unsigned int no_64bit_msi:1;
0424 unsigned int block_cfg_access:1;
0425 unsigned int broken_parity_status:1;
0426 unsigned int irq_reroute_variant:2;
0427 unsigned int msi_enabled:1;
0428 unsigned int msix_enabled:1;
0429 unsigned int ari_enabled:1;
0430 unsigned int ats_enabled:1;
0431 unsigned int pasid_enabled:1;
0432 unsigned int pri_enabled:1;
0433 unsigned int is_managed:1;
0434 unsigned int is_msi_managed:1;
0435 unsigned int needs_freset:1;
0436 unsigned int state_saved:1;
0437 unsigned int is_physfn:1;
0438 unsigned int is_virtfn:1;
0439 unsigned int is_hotplug_bridge:1;
0440 unsigned int shpc_managed:1;
0441 unsigned int is_thunderbolt:1;
0442
0443
0444
0445
0446
0447
0448
0449 unsigned int untrusted:1;
0450
0451
0452
0453
0454
0455 unsigned int external_facing:1;
0456 unsigned int broken_intx_masking:1;
0457 unsigned int io_window_1k:1;
0458 unsigned int irq_managed:1;
0459 unsigned int non_compliant_bars:1;
0460 unsigned int is_probed:1;
0461 unsigned int link_active_reporting:1;
0462 unsigned int no_vf_scan:1;
0463 unsigned int no_command_memory:1;
0464 unsigned int rom_bar_overlap:1;
0465 pci_dev_flags_t dev_flags;
0466 atomic_t enable_cnt;
0467
0468 u32 saved_config_space[16];
0469 struct hlist_head saved_cap_space;
0470 int rom_attr_enabled;
0471 struct bin_attribute *res_attr[DEVICE_COUNT_RESOURCE];
0472 struct bin_attribute *res_attr_wc[DEVICE_COUNT_RESOURCE];
0473
0474 #ifdef CONFIG_HOTPLUG_PCI_PCIE
0475 unsigned int broken_cmd_compl:1;
0476 #endif
0477 #ifdef CONFIG_PCIE_PTM
0478 unsigned int ptm_root:1;
0479 unsigned int ptm_enabled:1;
0480 u8 ptm_granularity;
0481 #endif
0482 #ifdef CONFIG_PCI_MSI
0483 void __iomem *msix_base;
0484 raw_spinlock_t msi_lock;
0485 #endif
0486 struct pci_vpd vpd;
0487 #ifdef CONFIG_PCIE_DPC
0488 u16 dpc_cap;
0489 unsigned int dpc_rp_extensions:1;
0490 u8 dpc_rp_log_size;
0491 #endif
0492 #ifdef CONFIG_PCI_ATS
0493 union {
0494 struct pci_sriov *sriov;
0495 struct pci_dev *physfn;
0496 };
0497 u16 ats_cap;
0498 u8 ats_stu;
0499 #endif
0500 #ifdef CONFIG_PCI_PRI
0501 u16 pri_cap;
0502 u32 pri_reqs_alloc;
0503 unsigned int pasid_required:1;
0504 #endif
0505 #ifdef CONFIG_PCI_PASID
0506 u16 pasid_cap;
0507 u16 pasid_features;
0508 #endif
0509 #ifdef CONFIG_PCI_P2PDMA
0510 struct pci_p2pdma __rcu *p2pdma;
0511 #endif
0512 u16 acs_cap;
0513 phys_addr_t rom;
0514 size_t romlen;
0515
0516
0517
0518
0519 const char *driver_override;
0520
0521 unsigned long priv_flags;
0522
0523
0524 u8 reset_methods[PCI_NUM_RESET_METHODS];
0525 };
0526
0527 static inline struct pci_dev *pci_physfn(struct pci_dev *dev)
0528 {
0529 #ifdef CONFIG_PCI_IOV
0530 if (dev->is_virtfn)
0531 dev = dev->physfn;
0532 #endif
0533 return dev;
0534 }
0535
0536 struct pci_dev *pci_alloc_dev(struct pci_bus *bus);
0537
0538 #define to_pci_dev(n) container_of(n, struct pci_dev, dev)
0539 #define for_each_pci_dev(d) while ((d = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, d)) != NULL)
0540
0541 static inline int pci_channel_offline(struct pci_dev *pdev)
0542 {
0543 return (pdev->error_state != pci_channel_io_normal);
0544 }
0545
0546
0547
0548
0549
0550
0551
0552
0553
0554 #define PCI_DOMAIN_NR_NOT_SET (-1)
0555
0556 struct pci_host_bridge {
0557 struct device dev;
0558 struct pci_bus *bus;
0559 struct pci_ops *ops;
0560 struct pci_ops *child_ops;
0561 void *sysdata;
0562 int busnr;
0563 int domain_nr;
0564 struct list_head windows;
0565 struct list_head dma_ranges;
0566 u8 (*swizzle_irq)(struct pci_dev *, u8 *);
0567 int (*map_irq)(const struct pci_dev *, u8, u8);
0568 void (*release_fn)(struct pci_host_bridge *);
0569 void *release_data;
0570 unsigned int ignore_reset_delay:1;
0571 unsigned int no_ext_tags:1;
0572 unsigned int native_aer:1;
0573 unsigned int native_pcie_hotplug:1;
0574 unsigned int native_shpc_hotplug:1;
0575 unsigned int native_pme:1;
0576 unsigned int native_ltr:1;
0577 unsigned int native_dpc:1;
0578 unsigned int preserve_config:1;
0579 unsigned int size_windows:1;
0580 unsigned int msi_domain:1;
0581
0582
0583 resource_size_t (*align_resource)(struct pci_dev *dev,
0584 const struct resource *res,
0585 resource_size_t start,
0586 resource_size_t size,
0587 resource_size_t align);
0588 unsigned long private[] ____cacheline_aligned;
0589 };
0590
0591 #define to_pci_host_bridge(n) container_of(n, struct pci_host_bridge, dev)
0592
0593 static inline void *pci_host_bridge_priv(struct pci_host_bridge *bridge)
0594 {
0595 return (void *)bridge->private;
0596 }
0597
0598 static inline struct pci_host_bridge *pci_host_bridge_from_priv(void *priv)
0599 {
0600 return container_of(priv, struct pci_host_bridge, private);
0601 }
0602
0603 struct pci_host_bridge *pci_alloc_host_bridge(size_t priv);
0604 struct pci_host_bridge *devm_pci_alloc_host_bridge(struct device *dev,
0605 size_t priv);
0606 void pci_free_host_bridge(struct pci_host_bridge *bridge);
0607 struct pci_host_bridge *pci_find_host_bridge(struct pci_bus *bus);
0608
0609 void pci_set_host_bridge_release(struct pci_host_bridge *bridge,
0610 void (*release_fn)(struct pci_host_bridge *),
0611 void *release_data);
0612
0613 int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge);
0614
0615
0616
0617
0618
0619
0620
0621
0622
0623
0624
0625
0626
0627
0628 #define PCI_SUBTRACTIVE_DECODE 0x1
0629
0630 struct pci_bus_resource {
0631 struct list_head list;
0632 struct resource *res;
0633 unsigned int flags;
0634 };
0635
0636 #define PCI_REGION_FLAG_MASK 0x0fU
0637
0638 struct pci_bus {
0639 struct list_head node;
0640 struct pci_bus *parent;
0641 struct list_head children;
0642 struct list_head devices;
0643 struct pci_dev *self;
0644 struct list_head slots;
0645
0646 struct resource *resource[PCI_BRIDGE_RESOURCE_NUM];
0647 struct list_head resources;
0648 struct resource busn_res;
0649
0650 struct pci_ops *ops;
0651 void *sysdata;
0652 struct proc_dir_entry *procdir;
0653
0654 unsigned char number;
0655 unsigned char primary;
0656 unsigned char max_bus_speed;
0657 unsigned char cur_bus_speed;
0658 #ifdef CONFIG_PCI_DOMAINS_GENERIC
0659 int domain_nr;
0660 #endif
0661
0662 char name[48];
0663
0664 unsigned short bridge_ctl;
0665 pci_bus_flags_t bus_flags;
0666 struct device *bridge;
0667 struct device dev;
0668 struct bin_attribute *legacy_io;
0669 struct bin_attribute *legacy_mem;
0670 unsigned int is_added:1;
0671 unsigned int unsafe_warn:1;
0672 };
0673
0674 #define to_pci_bus(n) container_of(n, struct pci_bus, dev)
0675
0676 static inline u16 pci_dev_id(struct pci_dev *dev)
0677 {
0678 return PCI_DEVID(dev->bus->number, dev->devfn);
0679 }
0680
0681
0682
0683
0684
0685
0686
0687
0688
0689 static inline bool pci_is_root_bus(struct pci_bus *pbus)
0690 {
0691 return !(pbus->parent);
0692 }
0693
0694
0695
0696
0697
0698
0699
0700
0701 static inline bool pci_is_bridge(struct pci_dev *dev)
0702 {
0703 return dev->hdr_type == PCI_HEADER_TYPE_BRIDGE ||
0704 dev->hdr_type == PCI_HEADER_TYPE_CARDBUS;
0705 }
0706
0707 #define for_each_pci_bridge(dev, bus) \
0708 list_for_each_entry(dev, &bus->devices, bus_list) \
0709 if (!pci_is_bridge(dev)) {} else
0710
0711 static inline struct pci_dev *pci_upstream_bridge(struct pci_dev *dev)
0712 {
0713 dev = pci_physfn(dev);
0714 if (pci_is_root_bus(dev->bus))
0715 return NULL;
0716
0717 return dev->bus->self;
0718 }
0719
0720 #ifdef CONFIG_PCI_MSI
0721 static inline bool pci_dev_msi_enabled(struct pci_dev *pci_dev)
0722 {
0723 return pci_dev->msi_enabled || pci_dev->msix_enabled;
0724 }
0725 #else
0726 static inline bool pci_dev_msi_enabled(struct pci_dev *pci_dev) { return false; }
0727 #endif
0728
0729
0730 #define PCIBIOS_SUCCESSFUL 0x00
0731 #define PCIBIOS_FUNC_NOT_SUPPORTED 0x81
0732 #define PCIBIOS_BAD_VENDOR_ID 0x83
0733 #define PCIBIOS_DEVICE_NOT_FOUND 0x86
0734 #define PCIBIOS_BAD_REGISTER_NUMBER 0x87
0735 #define PCIBIOS_SET_FAILED 0x88
0736 #define PCIBIOS_BUFFER_TOO_SMALL 0x89
0737
0738
0739 static inline int pcibios_err_to_errno(int err)
0740 {
0741 if (err <= PCIBIOS_SUCCESSFUL)
0742 return err;
0743
0744 switch (err) {
0745 case PCIBIOS_FUNC_NOT_SUPPORTED:
0746 return -ENOENT;
0747 case PCIBIOS_BAD_VENDOR_ID:
0748 return -ENOTTY;
0749 case PCIBIOS_DEVICE_NOT_FOUND:
0750 return -ENODEV;
0751 case PCIBIOS_BAD_REGISTER_NUMBER:
0752 return -EFAULT;
0753 case PCIBIOS_SET_FAILED:
0754 return -EIO;
0755 case PCIBIOS_BUFFER_TOO_SMALL:
0756 return -ENOSPC;
0757 }
0758
0759 return -ERANGE;
0760 }
0761
0762
0763
0764 struct pci_ops {
0765 int (*add_bus)(struct pci_bus *bus);
0766 void (*remove_bus)(struct pci_bus *bus);
0767 void __iomem *(*map_bus)(struct pci_bus *bus, unsigned int devfn, int where);
0768 int (*read)(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 *val);
0769 int (*write)(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val);
0770 };
0771
0772
0773
0774
0775
0776 int raw_pci_read(unsigned int domain, unsigned int bus, unsigned int devfn,
0777 int reg, int len, u32 *val);
0778 int raw_pci_write(unsigned int domain, unsigned int bus, unsigned int devfn,
0779 int reg, int len, u32 val);
0780
0781 #ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
0782 typedef u64 pci_bus_addr_t;
0783 #else
0784 typedef u32 pci_bus_addr_t;
0785 #endif
0786
0787 struct pci_bus_region {
0788 pci_bus_addr_t start;
0789 pci_bus_addr_t end;
0790 };
0791
0792 struct pci_dynids {
0793 spinlock_t lock;
0794 struct list_head list;
0795 };
0796
0797
0798
0799
0800
0801
0802
0803
0804
0805 typedef unsigned int __bitwise pci_ers_result_t;
0806
0807 enum pci_ers_result {
0808
0809 PCI_ERS_RESULT_NONE = (__force pci_ers_result_t) 1,
0810
0811
0812 PCI_ERS_RESULT_CAN_RECOVER = (__force pci_ers_result_t) 2,
0813
0814
0815 PCI_ERS_RESULT_NEED_RESET = (__force pci_ers_result_t) 3,
0816
0817
0818 PCI_ERS_RESULT_DISCONNECT = (__force pci_ers_result_t) 4,
0819
0820
0821 PCI_ERS_RESULT_RECOVERED = (__force pci_ers_result_t) 5,
0822
0823
0824 PCI_ERS_RESULT_NO_AER_DRIVER = (__force pci_ers_result_t) 6,
0825 };
0826
0827
0828 struct pci_error_handlers {
0829
0830 pci_ers_result_t (*error_detected)(struct pci_dev *dev,
0831 pci_channel_state_t error);
0832
0833
0834 pci_ers_result_t (*mmio_enabled)(struct pci_dev *dev);
0835
0836
0837 pci_ers_result_t (*slot_reset)(struct pci_dev *dev);
0838
0839
0840 void (*reset_prepare)(struct pci_dev *dev);
0841 void (*reset_done)(struct pci_dev *dev);
0842
0843
0844 void (*resume)(struct pci_dev *dev);
0845 };
0846
0847
0848 struct module;
0849
0850
0851
0852
0853
0854
0855
0856
0857
0858
0859
0860
0861
0862
0863
0864
0865
0866
0867
0868
0869
0870
0871
0872
0873
0874
0875
0876
0877
0878
0879
0880
0881
0882
0883
0884
0885
0886
0887
0888
0889
0890
0891
0892
0893
0894
0895
0896
0897
0898
0899
0900
0901
0902
0903
0904
0905
0906 struct pci_driver {
0907 struct list_head node;
0908 const char *name;
0909 const struct pci_device_id *id_table;
0910 int (*probe)(struct pci_dev *dev, const struct pci_device_id *id);
0911 void (*remove)(struct pci_dev *dev);
0912 int (*suspend)(struct pci_dev *dev, pm_message_t state);
0913 int (*resume)(struct pci_dev *dev);
0914 void (*shutdown)(struct pci_dev *dev);
0915 int (*sriov_configure)(struct pci_dev *dev, int num_vfs);
0916 int (*sriov_set_msix_vec_count)(struct pci_dev *vf, int msix_vec_count);
0917 u32 (*sriov_get_vf_total_msix)(struct pci_dev *pf);
0918 const struct pci_error_handlers *err_handler;
0919 const struct attribute_group **groups;
0920 const struct attribute_group **dev_groups;
0921 struct device_driver driver;
0922 struct pci_dynids dynids;
0923 bool driver_managed_dma;
0924 };
0925
0926 static inline struct pci_driver *to_pci_driver(struct device_driver *drv)
0927 {
0928 return drv ? container_of(drv, struct pci_driver, driver) : NULL;
0929 }
0930
0931
0932
0933
0934
0935
0936
0937
0938
0939
0940 #define PCI_DEVICE(vend,dev) \
0941 .vendor = (vend), .device = (dev), \
0942 .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID
0943
0944
0945
0946
0947
0948
0949
0950
0951
0952
0953
0954
0955 #define PCI_DEVICE_DRIVER_OVERRIDE(vend, dev, driver_override) \
0956 .vendor = (vend), .device = (dev), .subvendor = PCI_ANY_ID, \
0957 .subdevice = PCI_ANY_ID, .override_only = (driver_override)
0958
0959
0960
0961
0962
0963
0964
0965
0966
0967
0968
0969
0970 #define PCI_DRIVER_OVERRIDE_DEVICE_VFIO(vend, dev) \
0971 PCI_DEVICE_DRIVER_OVERRIDE(vend, dev, PCI_ID_F_VFIO_DRIVER_OVERRIDE)
0972
0973
0974
0975
0976
0977
0978
0979
0980
0981
0982
0983 #define PCI_DEVICE_SUB(vend, dev, subvend, subdev) \
0984 .vendor = (vend), .device = (dev), \
0985 .subvendor = (subvend), .subdevice = (subdev)
0986
0987
0988
0989
0990
0991
0992
0993
0994
0995
0996 #define PCI_DEVICE_CLASS(dev_class,dev_class_mask) \
0997 .class = (dev_class), .class_mask = (dev_class_mask), \
0998 .vendor = PCI_ANY_ID, .device = PCI_ANY_ID, \
0999 .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011 #define PCI_VDEVICE(vend, dev) \
1012 .vendor = PCI_VENDOR_ID_##vend, .device = (dev), \
1013 .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, 0, 0
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025 #define PCI_DEVICE_DATA(vend, dev, data) \
1026 .vendor = PCI_VENDOR_ID_##vend, .device = PCI_DEVICE_ID_##vend##_##dev, \
1027 .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, 0, 0, \
1028 .driver_data = (kernel_ulong_t)(data)
1029
1030 enum {
1031 PCI_REASSIGN_ALL_RSRC = 0x00000001,
1032 PCI_REASSIGN_ALL_BUS = 0x00000002,
1033 PCI_PROBE_ONLY = 0x00000004,
1034 PCI_CAN_SKIP_ISA_ALIGN = 0x00000008,
1035 PCI_ENABLE_PROC_DOMAINS = 0x00000010,
1036 PCI_COMPAT_DOMAIN_0 = 0x00000020,
1037 PCI_SCAN_ALL_PCIE_DEVS = 0x00000040,
1038 };
1039
1040 #define PCI_IRQ_LEGACY (1 << 0)
1041 #define PCI_IRQ_MSI (1 << 1)
1042 #define PCI_IRQ_MSIX (1 << 2)
1043 #define PCI_IRQ_AFFINITY (1 << 3)
1044
1045
1046 #ifdef CONFIG_PCI
1047
1048 extern unsigned int pci_flags;
1049
1050 static inline void pci_set_flags(int flags) { pci_flags = flags; }
1051 static inline void pci_add_flags(int flags) { pci_flags |= flags; }
1052 static inline void pci_clear_flags(int flags) { pci_flags &= ~flags; }
1053 static inline int pci_has_flag(int flag) { return pci_flags & flag; }
1054
1055 void pcie_bus_configure_settings(struct pci_bus *bus);
1056
1057 enum pcie_bus_config_types {
1058 PCIE_BUS_TUNE_OFF,
1059 PCIE_BUS_DEFAULT,
1060 PCIE_BUS_SAFE,
1061 PCIE_BUS_PERFORMANCE,
1062 PCIE_BUS_PEER2PEER,
1063 };
1064
1065 extern enum pcie_bus_config_types pcie_bus_config;
1066
1067 extern struct bus_type pci_bus_type;
1068
1069
1070
1071 extern struct list_head pci_root_buses;
1072
1073 int no_pci_devices(void);
1074
1075 void pcibios_resource_survey_bus(struct pci_bus *bus);
1076 void pcibios_bus_add_device(struct pci_dev *pdev);
1077 void pcibios_add_bus(struct pci_bus *bus);
1078 void pcibios_remove_bus(struct pci_bus *bus);
1079 void pcibios_fixup_bus(struct pci_bus *);
1080 int __must_check pcibios_enable_device(struct pci_dev *, int mask);
1081
1082 char *pcibios_setup(char *str);
1083
1084
1085 resource_size_t pcibios_align_resource(void *, const struct resource *,
1086 resource_size_t,
1087 resource_size_t);
1088
1089
1090 void pci_fixup_cardbus(struct pci_bus *);
1091
1092
1093
1094 void pcibios_resource_to_bus(struct pci_bus *bus, struct pci_bus_region *region,
1095 struct resource *res);
1096 void pcibios_bus_to_resource(struct pci_bus *bus, struct resource *res,
1097 struct pci_bus_region *region);
1098 void pcibios_scan_specific_bus(int busn);
1099 struct pci_bus *pci_find_bus(int domain, int busnr);
1100 void pci_bus_add_devices(const struct pci_bus *bus);
1101 struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops, void *sysdata);
1102 struct pci_bus *pci_create_root_bus(struct device *parent, int bus,
1103 struct pci_ops *ops, void *sysdata,
1104 struct list_head *resources);
1105 int pci_host_probe(struct pci_host_bridge *bridge);
1106 int pci_bus_insert_busn_res(struct pci_bus *b, int bus, int busmax);
1107 int pci_bus_update_busn_res_end(struct pci_bus *b, int busmax);
1108 void pci_bus_release_busn_res(struct pci_bus *b);
1109 struct pci_bus *pci_scan_root_bus(struct device *parent, int bus,
1110 struct pci_ops *ops, void *sysdata,
1111 struct list_head *resources);
1112 int pci_scan_root_bus_bridge(struct pci_host_bridge *bridge);
1113 struct pci_bus *pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev,
1114 int busnr);
1115 struct pci_slot *pci_create_slot(struct pci_bus *parent, int slot_nr,
1116 const char *name,
1117 struct hotplug_slot *hotplug);
1118 void pci_destroy_slot(struct pci_slot *slot);
1119 #ifdef CONFIG_SYSFS
1120 void pci_dev_assign_slot(struct pci_dev *dev);
1121 #else
1122 static inline void pci_dev_assign_slot(struct pci_dev *dev) { }
1123 #endif
1124 int pci_scan_slot(struct pci_bus *bus, int devfn);
1125 struct pci_dev *pci_scan_single_device(struct pci_bus *bus, int devfn);
1126 void pci_device_add(struct pci_dev *dev, struct pci_bus *bus);
1127 unsigned int pci_scan_child_bus(struct pci_bus *bus);
1128 void pci_bus_add_device(struct pci_dev *dev);
1129 void pci_read_bridge_bases(struct pci_bus *child);
1130 struct resource *pci_find_parent_resource(const struct pci_dev *dev,
1131 struct resource *res);
1132 u8 pci_swizzle_interrupt_pin(const struct pci_dev *dev, u8 pin);
1133 int pci_get_interrupt_pin(struct pci_dev *dev, struct pci_dev **bridge);
1134 u8 pci_common_swizzle(struct pci_dev *dev, u8 *pinp);
1135 struct pci_dev *pci_dev_get(struct pci_dev *dev);
1136 void pci_dev_put(struct pci_dev *dev);
1137 void pci_remove_bus(struct pci_bus *b);
1138 void pci_stop_and_remove_bus_device(struct pci_dev *dev);
1139 void pci_stop_and_remove_bus_device_locked(struct pci_dev *dev);
1140 void pci_stop_root_bus(struct pci_bus *bus);
1141 void pci_remove_root_bus(struct pci_bus *bus);
1142 void pci_setup_cardbus(struct pci_bus *bus);
1143 void pcibios_setup_bridge(struct pci_bus *bus, unsigned long type);
1144 void pci_sort_breadthfirst(void);
1145 #define dev_is_pci(d) ((d)->bus == &pci_bus_type)
1146 #define dev_is_pf(d) ((dev_is_pci(d) ? to_pci_dev(d)->is_physfn : false))
1147
1148
1149
1150 u8 pci_bus_find_capability(struct pci_bus *bus, unsigned int devfn, int cap);
1151 u8 pci_find_capability(struct pci_dev *dev, int cap);
1152 u8 pci_find_next_capability(struct pci_dev *dev, u8 pos, int cap);
1153 u8 pci_find_ht_capability(struct pci_dev *dev, int ht_cap);
1154 u8 pci_find_next_ht_capability(struct pci_dev *dev, u8 pos, int ht_cap);
1155 u16 pci_find_ext_capability(struct pci_dev *dev, int cap);
1156 u16 pci_find_next_ext_capability(struct pci_dev *dev, u16 pos, int cap);
1157 struct pci_bus *pci_find_next_bus(const struct pci_bus *from);
1158 u16 pci_find_vsec_capability(struct pci_dev *dev, u16 vendor, int cap);
1159 u16 pci_find_dvsec_capability(struct pci_dev *dev, u16 vendor, u16 dvsec);
1160
1161 u64 pci_get_dsn(struct pci_dev *dev);
1162
1163 struct pci_dev *pci_get_device(unsigned int vendor, unsigned int device,
1164 struct pci_dev *from);
1165 struct pci_dev *pci_get_subsys(unsigned int vendor, unsigned int device,
1166 unsigned int ss_vendor, unsigned int ss_device,
1167 struct pci_dev *from);
1168 struct pci_dev *pci_get_slot(struct pci_bus *bus, unsigned int devfn);
1169 struct pci_dev *pci_get_domain_bus_and_slot(int domain, unsigned int bus,
1170 unsigned int devfn);
1171 struct pci_dev *pci_get_class(unsigned int class, struct pci_dev *from);
1172 int pci_dev_present(const struct pci_device_id *ids);
1173
1174 int pci_bus_read_config_byte(struct pci_bus *bus, unsigned int devfn,
1175 int where, u8 *val);
1176 int pci_bus_read_config_word(struct pci_bus *bus, unsigned int devfn,
1177 int where, u16 *val);
1178 int pci_bus_read_config_dword(struct pci_bus *bus, unsigned int devfn,
1179 int where, u32 *val);
1180 int pci_bus_write_config_byte(struct pci_bus *bus, unsigned int devfn,
1181 int where, u8 val);
1182 int pci_bus_write_config_word(struct pci_bus *bus, unsigned int devfn,
1183 int where, u16 val);
1184 int pci_bus_write_config_dword(struct pci_bus *bus, unsigned int devfn,
1185 int where, u32 val);
1186
1187 int pci_generic_config_read(struct pci_bus *bus, unsigned int devfn,
1188 int where, int size, u32 *val);
1189 int pci_generic_config_write(struct pci_bus *bus, unsigned int devfn,
1190 int where, int size, u32 val);
1191 int pci_generic_config_read32(struct pci_bus *bus, unsigned int devfn,
1192 int where, int size, u32 *val);
1193 int pci_generic_config_write32(struct pci_bus *bus, unsigned int devfn,
1194 int where, int size, u32 val);
1195
1196 struct pci_ops *pci_bus_set_ops(struct pci_bus *bus, struct pci_ops *ops);
1197
1198 int pci_read_config_byte(const struct pci_dev *dev, int where, u8 *val);
1199 int pci_read_config_word(const struct pci_dev *dev, int where, u16 *val);
1200 int pci_read_config_dword(const struct pci_dev *dev, int where, u32 *val);
1201 int pci_write_config_byte(const struct pci_dev *dev, int where, u8 val);
1202 int pci_write_config_word(const struct pci_dev *dev, int where, u16 val);
1203 int pci_write_config_dword(const struct pci_dev *dev, int where, u32 val);
1204
1205 int pcie_capability_read_word(struct pci_dev *dev, int pos, u16 *val);
1206 int pcie_capability_read_dword(struct pci_dev *dev, int pos, u32 *val);
1207 int pcie_capability_write_word(struct pci_dev *dev, int pos, u16 val);
1208 int pcie_capability_write_dword(struct pci_dev *dev, int pos, u32 val);
1209 int pcie_capability_clear_and_set_word(struct pci_dev *dev, int pos,
1210 u16 clear, u16 set);
1211 int pcie_capability_clear_and_set_dword(struct pci_dev *dev, int pos,
1212 u32 clear, u32 set);
1213
1214 static inline int pcie_capability_set_word(struct pci_dev *dev, int pos,
1215 u16 set)
1216 {
1217 return pcie_capability_clear_and_set_word(dev, pos, 0, set);
1218 }
1219
1220 static inline int pcie_capability_set_dword(struct pci_dev *dev, int pos,
1221 u32 set)
1222 {
1223 return pcie_capability_clear_and_set_dword(dev, pos, 0, set);
1224 }
1225
1226 static inline int pcie_capability_clear_word(struct pci_dev *dev, int pos,
1227 u16 clear)
1228 {
1229 return pcie_capability_clear_and_set_word(dev, pos, clear, 0);
1230 }
1231
1232 static inline int pcie_capability_clear_dword(struct pci_dev *dev, int pos,
1233 u32 clear)
1234 {
1235 return pcie_capability_clear_and_set_dword(dev, pos, clear, 0);
1236 }
1237
1238
1239 int pci_user_read_config_byte(struct pci_dev *dev, int where, u8 *val);
1240 int pci_user_read_config_word(struct pci_dev *dev, int where, u16 *val);
1241 int pci_user_read_config_dword(struct pci_dev *dev, int where, u32 *val);
1242 int pci_user_write_config_byte(struct pci_dev *dev, int where, u8 val);
1243 int pci_user_write_config_word(struct pci_dev *dev, int where, u16 val);
1244 int pci_user_write_config_dword(struct pci_dev *dev, int where, u32 val);
1245
1246 int __must_check pci_enable_device(struct pci_dev *dev);
1247 int __must_check pci_enable_device_io(struct pci_dev *dev);
1248 int __must_check pci_enable_device_mem(struct pci_dev *dev);
1249 int __must_check pci_reenable_device(struct pci_dev *);
1250 int __must_check pcim_enable_device(struct pci_dev *pdev);
1251 void pcim_pin_device(struct pci_dev *pdev);
1252
1253 static inline bool pci_intx_mask_supported(struct pci_dev *pdev)
1254 {
1255
1256
1257
1258
1259 return !pdev->broken_intx_masking;
1260 }
1261
1262 static inline int pci_is_enabled(struct pci_dev *pdev)
1263 {
1264 return (atomic_read(&pdev->enable_cnt) > 0);
1265 }
1266
1267 static inline int pci_is_managed(struct pci_dev *pdev)
1268 {
1269 return pdev->is_managed;
1270 }
1271
1272 void pci_disable_device(struct pci_dev *dev);
1273
1274 extern unsigned int pcibios_max_latency;
1275 void pci_set_master(struct pci_dev *dev);
1276 void pci_clear_master(struct pci_dev *dev);
1277
1278 int pci_set_pcie_reset_state(struct pci_dev *dev, enum pcie_reset_state state);
1279 int pci_set_cacheline_size(struct pci_dev *dev);
1280 int __must_check pci_set_mwi(struct pci_dev *dev);
1281 int __must_check pcim_set_mwi(struct pci_dev *dev);
1282 int pci_try_set_mwi(struct pci_dev *dev);
1283 void pci_clear_mwi(struct pci_dev *dev);
1284 void pci_disable_parity(struct pci_dev *dev);
1285 void pci_intx(struct pci_dev *dev, int enable);
1286 bool pci_check_and_mask_intx(struct pci_dev *dev);
1287 bool pci_check_and_unmask_intx(struct pci_dev *dev);
1288 int pci_wait_for_pending(struct pci_dev *dev, int pos, u16 mask);
1289 int pci_wait_for_pending_transaction(struct pci_dev *dev);
1290 int pcix_get_max_mmrbc(struct pci_dev *dev);
1291 int pcix_get_mmrbc(struct pci_dev *dev);
1292 int pcix_set_mmrbc(struct pci_dev *dev, int mmrbc);
1293 int pcie_get_readrq(struct pci_dev *dev);
1294 int pcie_set_readrq(struct pci_dev *dev, int rq);
1295 int pcie_get_mps(struct pci_dev *dev);
1296 int pcie_set_mps(struct pci_dev *dev, int mps);
1297 u32 pcie_bandwidth_available(struct pci_dev *dev, struct pci_dev **limiting_dev,
1298 enum pci_bus_speed *speed,
1299 enum pcie_link_width *width);
1300 void pcie_print_link_status(struct pci_dev *dev);
1301 int pcie_reset_flr(struct pci_dev *dev, bool probe);
1302 int pcie_flr(struct pci_dev *dev);
1303 int __pci_reset_function_locked(struct pci_dev *dev);
1304 int pci_reset_function(struct pci_dev *dev);
1305 int pci_reset_function_locked(struct pci_dev *dev);
1306 int pci_try_reset_function(struct pci_dev *dev);
1307 int pci_probe_reset_slot(struct pci_slot *slot);
1308 int pci_probe_reset_bus(struct pci_bus *bus);
1309 int pci_reset_bus(struct pci_dev *dev);
1310 void pci_reset_secondary_bus(struct pci_dev *dev);
1311 void pcibios_reset_secondary_bus(struct pci_dev *dev);
1312 void pci_update_resource(struct pci_dev *dev, int resno);
1313 int __must_check pci_assign_resource(struct pci_dev *dev, int i);
1314 int __must_check pci_reassign_resource(struct pci_dev *dev, int i, resource_size_t add_size, resource_size_t align);
1315 void pci_release_resource(struct pci_dev *dev, int resno);
1316 static inline int pci_rebar_bytes_to_size(u64 bytes)
1317 {
1318 bytes = roundup_pow_of_two(bytes);
1319
1320
1321 return max(ilog2(bytes), 20) - 20;
1322 }
1323
1324 u32 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar);
1325 int __must_check pci_resize_resource(struct pci_dev *dev, int i, int size);
1326 int pci_select_bars(struct pci_dev *dev, unsigned long flags);
1327 bool pci_device_is_present(struct pci_dev *pdev);
1328 void pci_ignore_hotplug(struct pci_dev *dev);
1329 struct pci_dev *pci_real_dma_dev(struct pci_dev *dev);
1330 int pci_status_get_and_clear_errors(struct pci_dev *pdev);
1331
1332 int __printf(6, 7) pci_request_irq(struct pci_dev *dev, unsigned int nr,
1333 irq_handler_t handler, irq_handler_t thread_fn, void *dev_id,
1334 const char *fmt, ...);
1335 void pci_free_irq(struct pci_dev *dev, unsigned int nr, void *dev_id);
1336
1337
1338 int pci_enable_rom(struct pci_dev *pdev);
1339 void pci_disable_rom(struct pci_dev *pdev);
1340 void __iomem __must_check *pci_map_rom(struct pci_dev *pdev, size_t *size);
1341 void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom);
1342
1343
1344 int pci_save_state(struct pci_dev *dev);
1345 void pci_restore_state(struct pci_dev *dev);
1346 struct pci_saved_state *pci_store_saved_state(struct pci_dev *dev);
1347 int pci_load_saved_state(struct pci_dev *dev,
1348 struct pci_saved_state *state);
1349 int pci_load_and_free_saved_state(struct pci_dev *dev,
1350 struct pci_saved_state **state);
1351 int pci_platform_power_transition(struct pci_dev *dev, pci_power_t state);
1352 int pci_set_power_state(struct pci_dev *dev, pci_power_t state);
1353 pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state);
1354 bool pci_pme_capable(struct pci_dev *dev, pci_power_t state);
1355 void pci_pme_active(struct pci_dev *dev, bool enable);
1356 int pci_enable_wake(struct pci_dev *dev, pci_power_t state, bool enable);
1357 int pci_wake_from_d3(struct pci_dev *dev, bool enable);
1358 int pci_prepare_to_sleep(struct pci_dev *dev);
1359 int pci_back_from_sleep(struct pci_dev *dev);
1360 bool pci_dev_run_wake(struct pci_dev *dev);
1361 void pci_d3cold_enable(struct pci_dev *dev);
1362 void pci_d3cold_disable(struct pci_dev *dev);
1363 bool pcie_relaxed_ordering_enabled(struct pci_dev *dev);
1364 void pci_resume_bus(struct pci_bus *bus);
1365 void pci_bus_set_current_state(struct pci_bus *bus, pci_power_t state);
1366
1367
1368 void set_pcie_port_type(struct pci_dev *pdev);
1369 void set_pcie_hotplug_bridge(struct pci_dev *pdev);
1370
1371
1372 unsigned int pci_rescan_bus_bridge_resize(struct pci_dev *bridge);
1373 unsigned int pci_rescan_bus(struct pci_bus *bus);
1374 void pci_lock_rescan_remove(void);
1375 void pci_unlock_rescan_remove(void);
1376
1377
1378 ssize_t pci_read_vpd(struct pci_dev *dev, loff_t pos, size_t count, void *buf);
1379 ssize_t pci_write_vpd(struct pci_dev *dev, loff_t pos, size_t count, const void *buf);
1380 ssize_t pci_read_vpd_any(struct pci_dev *dev, loff_t pos, size_t count, void *buf);
1381 ssize_t pci_write_vpd_any(struct pci_dev *dev, loff_t pos, size_t count, const void *buf);
1382
1383
1384 resource_size_t pcibios_retrieve_fw_addr(struct pci_dev *dev, int idx);
1385 void pci_bus_assign_resources(const struct pci_bus *bus);
1386 void pci_bus_claim_resources(struct pci_bus *bus);
1387 void pci_bus_size_bridges(struct pci_bus *bus);
1388 int pci_claim_resource(struct pci_dev *, int);
1389 int pci_claim_bridge_resource(struct pci_dev *bridge, int i);
1390 void pci_assign_unassigned_resources(void);
1391 void pci_assign_unassigned_bridge_resources(struct pci_dev *bridge);
1392 void pci_assign_unassigned_bus_resources(struct pci_bus *bus);
1393 void pci_assign_unassigned_root_bus_resources(struct pci_bus *bus);
1394 int pci_reassign_bridge_resources(struct pci_dev *bridge, unsigned long type);
1395 void pdev_enable_device(struct pci_dev *);
1396 int pci_enable_resources(struct pci_dev *, int mask);
1397 void pci_assign_irq(struct pci_dev *dev);
1398 struct resource *pci_find_resource(struct pci_dev *dev, struct resource *res);
1399 #define HAVE_PCI_REQ_REGIONS 2
1400 int __must_check pci_request_regions(struct pci_dev *, const char *);
1401 int __must_check pci_request_regions_exclusive(struct pci_dev *, const char *);
1402 void pci_release_regions(struct pci_dev *);
1403 int __must_check pci_request_region(struct pci_dev *, int, const char *);
1404 void pci_release_region(struct pci_dev *, int);
1405 int pci_request_selected_regions(struct pci_dev *, int, const char *);
1406 int pci_request_selected_regions_exclusive(struct pci_dev *, int, const char *);
1407 void pci_release_selected_regions(struct pci_dev *, int);
1408
1409
1410 void pci_add_resource(struct list_head *resources, struct resource *res);
1411 void pci_add_resource_offset(struct list_head *resources, struct resource *res,
1412 resource_size_t offset);
1413 void pci_free_resource_list(struct list_head *resources);
1414 void pci_bus_add_resource(struct pci_bus *bus, struct resource *res,
1415 unsigned int flags);
1416 struct resource *pci_bus_resource_n(const struct pci_bus *bus, int n);
1417 void pci_bus_remove_resources(struct pci_bus *bus);
1418 int devm_request_pci_bus_resources(struct device *dev,
1419 struct list_head *resources);
1420
1421
1422 int pci_bridge_secondary_bus_reset(struct pci_dev *dev);
1423
1424 #define pci_bus_for_each_resource(bus, res, i) \
1425 for (i = 0; \
1426 (res = pci_bus_resource_n(bus, i)) || i < PCI_BRIDGE_RESOURCE_NUM; \
1427 i++)
1428
1429 int __must_check pci_bus_alloc_resource(struct pci_bus *bus,
1430 struct resource *res, resource_size_t size,
1431 resource_size_t align, resource_size_t min,
1432 unsigned long type_mask,
1433 resource_size_t (*alignf)(void *,
1434 const struct resource *,
1435 resource_size_t,
1436 resource_size_t),
1437 void *alignf_data);
1438
1439
1440 int pci_register_io_range(struct fwnode_handle *fwnode, phys_addr_t addr,
1441 resource_size_t size);
1442 unsigned long pci_address_to_pio(phys_addr_t addr);
1443 phys_addr_t pci_pio_to_address(unsigned long pio);
1444 int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr);
1445 int devm_pci_remap_iospace(struct device *dev, const struct resource *res,
1446 phys_addr_t phys_addr);
1447 void pci_unmap_iospace(struct resource *res);
1448 void __iomem *devm_pci_remap_cfgspace(struct device *dev,
1449 resource_size_t offset,
1450 resource_size_t size);
1451 void __iomem *devm_pci_remap_cfg_resource(struct device *dev,
1452 struct resource *res);
1453
1454 static inline pci_bus_addr_t pci_bus_address(struct pci_dev *pdev, int bar)
1455 {
1456 struct pci_bus_region region;
1457
1458 pcibios_resource_to_bus(pdev->bus, ®ion, &pdev->resource[bar]);
1459 return region.start;
1460 }
1461
1462
1463 int __must_check __pci_register_driver(struct pci_driver *, struct module *,
1464 const char *mod_name);
1465
1466
1467 #define pci_register_driver(driver) \
1468 __pci_register_driver(driver, THIS_MODULE, KBUILD_MODNAME)
1469
1470 void pci_unregister_driver(struct pci_driver *dev);
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480 #define module_pci_driver(__pci_driver) \
1481 module_driver(__pci_driver, pci_register_driver, pci_unregister_driver)
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491 #define builtin_pci_driver(__pci_driver) \
1492 builtin_driver(__pci_driver, pci_register_driver)
1493
1494 struct pci_driver *pci_dev_driver(const struct pci_dev *dev);
1495 int pci_add_dynid(struct pci_driver *drv,
1496 unsigned int vendor, unsigned int device,
1497 unsigned int subvendor, unsigned int subdevice,
1498 unsigned int class, unsigned int class_mask,
1499 unsigned long driver_data);
1500 const struct pci_device_id *pci_match_id(const struct pci_device_id *ids,
1501 struct pci_dev *dev);
1502 int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max,
1503 int pass);
1504
1505 void pci_walk_bus(struct pci_bus *top, int (*cb)(struct pci_dev *, void *),
1506 void *userdata);
1507 int pci_cfg_space_size(struct pci_dev *dev);
1508 unsigned char pci_bus_max_busnr(struct pci_bus *bus);
1509 void pci_setup_bridge(struct pci_bus *bus);
1510 resource_size_t pcibios_window_alignment(struct pci_bus *bus,
1511 unsigned long type);
1512
1513 #define PCI_VGA_STATE_CHANGE_BRIDGE (1 << 0)
1514 #define PCI_VGA_STATE_CHANGE_DECODES (1 << 1)
1515
1516 int pci_set_vga_state(struct pci_dev *pdev, bool decode,
1517 unsigned int command_bits, u32 flags);
1518
1519
1520
1521
1522
1523
1524
1525 #define PCI_IRQ_VIRTUAL (1 << 4)
1526
1527 #define PCI_IRQ_ALL_TYPES \
1528 (PCI_IRQ_LEGACY | PCI_IRQ_MSI | PCI_IRQ_MSIX)
1529
1530 #include <linux/dmapool.h>
1531
1532 struct msix_entry {
1533 u32 vector;
1534 u16 entry;
1535 };
1536
1537 #ifdef CONFIG_PCI_MSI
1538 int pci_msi_vec_count(struct pci_dev *dev);
1539 void pci_disable_msi(struct pci_dev *dev);
1540 int pci_msix_vec_count(struct pci_dev *dev);
1541 void pci_disable_msix(struct pci_dev *dev);
1542 void pci_restore_msi_state(struct pci_dev *dev);
1543 int pci_msi_enabled(void);
1544 int pci_enable_msi(struct pci_dev *dev);
1545 int pci_enable_msix_range(struct pci_dev *dev, struct msix_entry *entries,
1546 int minvec, int maxvec);
1547 static inline int pci_enable_msix_exact(struct pci_dev *dev,
1548 struct msix_entry *entries, int nvec)
1549 {
1550 int rc = pci_enable_msix_range(dev, entries, nvec, nvec);
1551 if (rc < 0)
1552 return rc;
1553 return 0;
1554 }
1555 int pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs,
1556 unsigned int max_vecs, unsigned int flags,
1557 struct irq_affinity *affd);
1558
1559 void pci_free_irq_vectors(struct pci_dev *dev);
1560 int pci_irq_vector(struct pci_dev *dev, unsigned int nr);
1561 const struct cpumask *pci_irq_get_affinity(struct pci_dev *pdev, int vec);
1562
1563 #else
1564 static inline int pci_msi_vec_count(struct pci_dev *dev) { return -ENOSYS; }
1565 static inline void pci_disable_msi(struct pci_dev *dev) { }
1566 static inline int pci_msix_vec_count(struct pci_dev *dev) { return -ENOSYS; }
1567 static inline void pci_disable_msix(struct pci_dev *dev) { }
1568 static inline void pci_restore_msi_state(struct pci_dev *dev) { }
1569 static inline int pci_msi_enabled(void) { return 0; }
1570 static inline int pci_enable_msi(struct pci_dev *dev)
1571 { return -ENOSYS; }
1572 static inline int pci_enable_msix_range(struct pci_dev *dev,
1573 struct msix_entry *entries, int minvec, int maxvec)
1574 { return -ENOSYS; }
1575 static inline int pci_enable_msix_exact(struct pci_dev *dev,
1576 struct msix_entry *entries, int nvec)
1577 { return -ENOSYS; }
1578
1579 static inline int
1580 pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs,
1581 unsigned int max_vecs, unsigned int flags,
1582 struct irq_affinity *aff_desc)
1583 {
1584 if ((flags & PCI_IRQ_LEGACY) && min_vecs == 1 && dev->irq)
1585 return 1;
1586 return -ENOSPC;
1587 }
1588
1589 static inline void pci_free_irq_vectors(struct pci_dev *dev)
1590 {
1591 }
1592
1593 static inline int pci_irq_vector(struct pci_dev *dev, unsigned int nr)
1594 {
1595 if (WARN_ON_ONCE(nr > 0))
1596 return -EINVAL;
1597 return dev->irq;
1598 }
1599 static inline const struct cpumask *pci_irq_get_affinity(struct pci_dev *pdev,
1600 int vec)
1601 {
1602 return cpu_possible_mask;
1603 }
1604 #endif
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622 static inline int pci_irqd_intx_xlate(struct irq_domain *d,
1623 struct device_node *node,
1624 const u32 *intspec,
1625 unsigned int intsize,
1626 unsigned long *out_hwirq,
1627 unsigned int *out_type)
1628 {
1629 const u32 intx = intspec[0];
1630
1631 if (intx < PCI_INTERRUPT_INTA || intx > PCI_INTERRUPT_INTD)
1632 return -EINVAL;
1633
1634 *out_hwirq = intx - PCI_INTERRUPT_INTA;
1635 return 0;
1636 }
1637
1638 #ifdef CONFIG_PCIEPORTBUS
1639 extern bool pcie_ports_disabled;
1640 extern bool pcie_ports_native;
1641 #else
1642 #define pcie_ports_disabled true
1643 #define pcie_ports_native false
1644 #endif
1645
1646 #define PCIE_LINK_STATE_L0S BIT(0)
1647 #define PCIE_LINK_STATE_L1 BIT(1)
1648 #define PCIE_LINK_STATE_CLKPM BIT(2)
1649 #define PCIE_LINK_STATE_L1_1 BIT(3)
1650 #define PCIE_LINK_STATE_L1_2 BIT(4)
1651 #define PCIE_LINK_STATE_L1_1_PCIPM BIT(5)
1652 #define PCIE_LINK_STATE_L1_2_PCIPM BIT(6)
1653
1654 #ifdef CONFIG_PCIEASPM
1655 int pci_disable_link_state(struct pci_dev *pdev, int state);
1656 int pci_disable_link_state_locked(struct pci_dev *pdev, int state);
1657 void pcie_no_aspm(void);
1658 bool pcie_aspm_support_enabled(void);
1659 bool pcie_aspm_enabled(struct pci_dev *pdev);
1660 #else
1661 static inline int pci_disable_link_state(struct pci_dev *pdev, int state)
1662 { return 0; }
1663 static inline int pci_disable_link_state_locked(struct pci_dev *pdev, int state)
1664 { return 0; }
1665 static inline void pcie_no_aspm(void) { }
1666 static inline bool pcie_aspm_support_enabled(void) { return false; }
1667 static inline bool pcie_aspm_enabled(struct pci_dev *pdev) { return false; }
1668 #endif
1669
1670 #ifdef CONFIG_PCIEAER
1671 bool pci_aer_available(void);
1672 #else
1673 static inline bool pci_aer_available(void) { return false; }
1674 #endif
1675
1676 bool pci_ats_disabled(void);
1677
1678 #ifdef CONFIG_PCIE_PTM
1679 int pci_enable_ptm(struct pci_dev *dev, u8 *granularity);
1680 bool pcie_ptm_enabled(struct pci_dev *dev);
1681 #else
1682 static inline int pci_enable_ptm(struct pci_dev *dev, u8 *granularity)
1683 { return -EINVAL; }
1684 static inline bool pcie_ptm_enabled(struct pci_dev *dev)
1685 { return false; }
1686 #endif
1687
1688 void pci_cfg_access_lock(struct pci_dev *dev);
1689 bool pci_cfg_access_trylock(struct pci_dev *dev);
1690 void pci_cfg_access_unlock(struct pci_dev *dev);
1691
1692 void pci_dev_lock(struct pci_dev *dev);
1693 int pci_dev_trylock(struct pci_dev *dev);
1694 void pci_dev_unlock(struct pci_dev *dev);
1695
1696
1697
1698
1699
1700
1701 #ifdef CONFIG_PCI_DOMAINS
1702 extern int pci_domains_supported;
1703 #else
1704 enum { pci_domains_supported = 0 };
1705 static inline int pci_domain_nr(struct pci_bus *bus) { return 0; }
1706 static inline int pci_proc_domain(struct pci_bus *bus) { return 0; }
1707 #endif
1708
1709
1710
1711
1712
1713
1714 #ifdef CONFIG_PCI_DOMAINS_GENERIC
1715 static inline int pci_domain_nr(struct pci_bus *bus)
1716 {
1717 return bus->domain_nr;
1718 }
1719 #ifdef CONFIG_ACPI
1720 int acpi_pci_bus_find_domain_nr(struct pci_bus *bus);
1721 #else
1722 static inline int acpi_pci_bus_find_domain_nr(struct pci_bus *bus)
1723 { return 0; }
1724 #endif
1725 int pci_bus_find_domain_nr(struct pci_bus *bus, struct device *parent);
1726 #endif
1727
1728
1729 typedef int (*arch_set_vga_state_t)(struct pci_dev *pdev, bool decode,
1730 unsigned int command_bits, u32 flags);
1731 void pci_register_set_vga_state(arch_set_vga_state_t func);
1732
1733 static inline int
1734 pci_request_io_regions(struct pci_dev *pdev, const char *name)
1735 {
1736 return pci_request_selected_regions(pdev,
1737 pci_select_bars(pdev, IORESOURCE_IO), name);
1738 }
1739
1740 static inline void
1741 pci_release_io_regions(struct pci_dev *pdev)
1742 {
1743 return pci_release_selected_regions(pdev,
1744 pci_select_bars(pdev, IORESOURCE_IO));
1745 }
1746
1747 static inline int
1748 pci_request_mem_regions(struct pci_dev *pdev, const char *name)
1749 {
1750 return pci_request_selected_regions(pdev,
1751 pci_select_bars(pdev, IORESOURCE_MEM), name);
1752 }
1753
1754 static inline void
1755 pci_release_mem_regions(struct pci_dev *pdev)
1756 {
1757 return pci_release_selected_regions(pdev,
1758 pci_select_bars(pdev, IORESOURCE_MEM));
1759 }
1760
1761 #else
1762
1763 static inline void pci_set_flags(int flags) { }
1764 static inline void pci_add_flags(int flags) { }
1765 static inline void pci_clear_flags(int flags) { }
1766 static inline int pci_has_flag(int flag) { return 0; }
1767
1768
1769
1770
1771
1772 #define _PCI_NOP(o, s, t) \
1773 static inline int pci_##o##_config_##s(struct pci_dev *dev, \
1774 int where, t val) \
1775 { return PCIBIOS_FUNC_NOT_SUPPORTED; }
1776
1777 #define _PCI_NOP_ALL(o, x) _PCI_NOP(o, byte, u8 x) \
1778 _PCI_NOP(o, word, u16 x) \
1779 _PCI_NOP(o, dword, u32 x)
1780 _PCI_NOP_ALL(read, *)
1781 _PCI_NOP_ALL(write,)
1782
1783 static inline struct pci_dev *pci_get_device(unsigned int vendor,
1784 unsigned int device,
1785 struct pci_dev *from)
1786 { return NULL; }
1787
1788 static inline struct pci_dev *pci_get_subsys(unsigned int vendor,
1789 unsigned int device,
1790 unsigned int ss_vendor,
1791 unsigned int ss_device,
1792 struct pci_dev *from)
1793 { return NULL; }
1794
1795 static inline struct pci_dev *pci_get_class(unsigned int class,
1796 struct pci_dev *from)
1797 { return NULL; }
1798
1799
1800 static inline int pci_dev_present(const struct pci_device_id *ids)
1801 { return 0; }
1802
1803 #define no_pci_devices() (1)
1804 #define pci_dev_put(dev) do { } while (0)
1805
1806 static inline void pci_set_master(struct pci_dev *dev) { }
1807 static inline int pci_enable_device(struct pci_dev *dev) { return -EIO; }
1808 static inline void pci_disable_device(struct pci_dev *dev) { }
1809 static inline int pcim_enable_device(struct pci_dev *pdev) { return -EIO; }
1810 static inline int pci_assign_resource(struct pci_dev *dev, int i)
1811 { return -EBUSY; }
1812 static inline int __must_check __pci_register_driver(struct pci_driver *drv,
1813 struct module *owner,
1814 const char *mod_name)
1815 { return 0; }
1816 static inline int pci_register_driver(struct pci_driver *drv)
1817 { return 0; }
1818 static inline void pci_unregister_driver(struct pci_driver *drv) { }
1819 static inline u8 pci_find_capability(struct pci_dev *dev, int cap)
1820 { return 0; }
1821 static inline int pci_find_next_capability(struct pci_dev *dev, u8 post,
1822 int cap)
1823 { return 0; }
1824 static inline int pci_find_ext_capability(struct pci_dev *dev, int cap)
1825 { return 0; }
1826
1827 static inline u64 pci_get_dsn(struct pci_dev *dev)
1828 { return 0; }
1829
1830
1831 static inline int pci_save_state(struct pci_dev *dev) { return 0; }
1832 static inline void pci_restore_state(struct pci_dev *dev) { }
1833 static inline int pci_set_power_state(struct pci_dev *dev, pci_power_t state)
1834 { return 0; }
1835 static inline int pci_wake_from_d3(struct pci_dev *dev, bool enable)
1836 { return 0; }
1837 static inline pci_power_t pci_choose_state(struct pci_dev *dev,
1838 pm_message_t state)
1839 { return PCI_D0; }
1840 static inline int pci_enable_wake(struct pci_dev *dev, pci_power_t state,
1841 int enable)
1842 { return 0; }
1843
1844 static inline struct resource *pci_find_resource(struct pci_dev *dev,
1845 struct resource *res)
1846 { return NULL; }
1847 static inline int pci_request_regions(struct pci_dev *dev, const char *res_name)
1848 { return -EIO; }
1849 static inline void pci_release_regions(struct pci_dev *dev) { }
1850
1851 static inline int pci_register_io_range(struct fwnode_handle *fwnode,
1852 phys_addr_t addr, resource_size_t size)
1853 { return -EINVAL; }
1854
1855 static inline unsigned long pci_address_to_pio(phys_addr_t addr) { return -1; }
1856
1857 static inline struct pci_bus *pci_find_next_bus(const struct pci_bus *from)
1858 { return NULL; }
1859 static inline struct pci_dev *pci_get_slot(struct pci_bus *bus,
1860 unsigned int devfn)
1861 { return NULL; }
1862 static inline struct pci_dev *pci_get_domain_bus_and_slot(int domain,
1863 unsigned int bus, unsigned int devfn)
1864 { return NULL; }
1865
1866 static inline int pci_domain_nr(struct pci_bus *bus) { return 0; }
1867 static inline struct pci_dev *pci_dev_get(struct pci_dev *dev) { return NULL; }
1868
1869 #define dev_is_pci(d) (false)
1870 #define dev_is_pf(d) (false)
1871 static inline bool pci_acs_enabled(struct pci_dev *pdev, u16 acs_flags)
1872 { return false; }
1873 static inline int pci_irqd_intx_xlate(struct irq_domain *d,
1874 struct device_node *node,
1875 const u32 *intspec,
1876 unsigned int intsize,
1877 unsigned long *out_hwirq,
1878 unsigned int *out_type)
1879 { return -EINVAL; }
1880
1881 static inline const struct pci_device_id *pci_match_id(const struct pci_device_id *ids,
1882 struct pci_dev *dev)
1883 { return NULL; }
1884 static inline bool pci_ats_disabled(void) { return true; }
1885
1886 static inline int pci_irq_vector(struct pci_dev *dev, unsigned int nr)
1887 {
1888 return -EINVAL;
1889 }
1890
1891 static inline int
1892 pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs,
1893 unsigned int max_vecs, unsigned int flags,
1894 struct irq_affinity *aff_desc)
1895 {
1896 return -ENOSPC;
1897 }
1898 #endif
1899
1900 static inline int
1901 pci_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs,
1902 unsigned int max_vecs, unsigned int flags)
1903 {
1904 return pci_alloc_irq_vectors_affinity(dev, min_vecs, max_vecs, flags,
1905 NULL);
1906 }
1907
1908
1909
1910 #include <asm/pci.h>
1911
1912
1913
1914
1915
1916
1917 int pci_mmap_resource_range(struct pci_dev *dev, int bar,
1918 struct vm_area_struct *vma,
1919 enum pci_mmap_state mmap_state, int write_combine);
1920
1921 #ifndef arch_can_pci_mmap_wc
1922 #define arch_can_pci_mmap_wc() 0
1923 #endif
1924
1925 #ifndef arch_can_pci_mmap_io
1926 #define arch_can_pci_mmap_io() 0
1927 #define pci_iobar_pfn(pdev, bar, vma) (-EINVAL)
1928 #else
1929 int pci_iobar_pfn(struct pci_dev *pdev, int bar, struct vm_area_struct *vma);
1930 #endif
1931
1932 #ifndef pci_root_bus_fwnode
1933 #define pci_root_bus_fwnode(bus) NULL
1934 #endif
1935
1936
1937
1938
1939
1940 #define pci_resource_start(dev, bar) ((dev)->resource[(bar)].start)
1941 #define pci_resource_end(dev, bar) ((dev)->resource[(bar)].end)
1942 #define pci_resource_flags(dev, bar) ((dev)->resource[(bar)].flags)
1943 #define pci_resource_len(dev,bar) \
1944 ((pci_resource_end((dev), (bar)) == 0) ? 0 : \
1945 \
1946 (pci_resource_end((dev), (bar)) - \
1947 pci_resource_start((dev), (bar)) + 1))
1948
1949
1950
1951
1952
1953
1954 static inline void *pci_get_drvdata(struct pci_dev *pdev)
1955 {
1956 return dev_get_drvdata(&pdev->dev);
1957 }
1958
1959 static inline void pci_set_drvdata(struct pci_dev *pdev, void *data)
1960 {
1961 dev_set_drvdata(&pdev->dev, data);
1962 }
1963
1964 static inline const char *pci_name(const struct pci_dev *pdev)
1965 {
1966 return dev_name(&pdev->dev);
1967 }
1968
1969 void pci_resource_to_user(const struct pci_dev *dev, int bar,
1970 const struct resource *rsrc,
1971 resource_size_t *start, resource_size_t *end);
1972
1973
1974
1975
1976
1977
1978
1979
1980 struct pci_fixup {
1981 u16 vendor;
1982 u16 device;
1983 u32 class;
1984 unsigned int class_shift;
1985 #ifdef CONFIG_HAVE_ARCH_PREL32_RELOCATIONS
1986 int hook_offset;
1987 #else
1988 void (*hook)(struct pci_dev *dev);
1989 #endif
1990 };
1991
1992 enum pci_fixup_pass {
1993 pci_fixup_early,
1994 pci_fixup_header,
1995 pci_fixup_final,
1996 pci_fixup_enable,
1997 pci_fixup_resume,
1998 pci_fixup_suspend,
1999 pci_fixup_resume_early,
2000 pci_fixup_suspend_late,
2001 };
2002
2003 #ifdef CONFIG_HAVE_ARCH_PREL32_RELOCATIONS
2004 #define ___DECLARE_PCI_FIXUP_SECTION(sec, name, vendor, device, class, \
2005 class_shift, hook) \
2006 __ADDRESSABLE(hook) \
2007 asm(".section " #sec ", \"a\" \n" \
2008 ".balign 16 \n" \
2009 ".short " #vendor ", " #device " \n" \
2010 ".long " #class ", " #class_shift " \n" \
2011 ".long " #hook " - . \n" \
2012 ".previous \n");
2013
2014
2015
2016
2017
2018
2019 #ifdef CONFIG_LTO_CLANG
2020 #define __DECLARE_PCI_FIXUP_SECTION(sec, name, vendor, device, class, \
2021 class_shift, hook, stub) \
2022 void __cficanonical stub(struct pci_dev *dev); \
2023 void __cficanonical stub(struct pci_dev *dev) \
2024 { \
2025 hook(dev); \
2026 } \
2027 ___DECLARE_PCI_FIXUP_SECTION(sec, name, vendor, device, class, \
2028 class_shift, stub)
2029 #else
2030 #define __DECLARE_PCI_FIXUP_SECTION(sec, name, vendor, device, class, \
2031 class_shift, hook, stub) \
2032 ___DECLARE_PCI_FIXUP_SECTION(sec, name, vendor, device, class, \
2033 class_shift, hook)
2034 #endif
2035
2036 #define DECLARE_PCI_FIXUP_SECTION(sec, name, vendor, device, class, \
2037 class_shift, hook) \
2038 __DECLARE_PCI_FIXUP_SECTION(sec, name, vendor, device, class, \
2039 class_shift, hook, __UNIQUE_ID(hook))
2040 #else
2041
2042 #define DECLARE_PCI_FIXUP_SECTION(section, name, vendor, device, class, \
2043 class_shift, hook) \
2044 static const struct pci_fixup __PASTE(__pci_fixup_##name,__LINE__) __used \
2045 __attribute__((__section__(#section), aligned((sizeof(void *))))) \
2046 = { vendor, device, class, class_shift, hook };
2047 #endif
2048
2049 #define DECLARE_PCI_FIXUP_CLASS_EARLY(vendor, device, class, \
2050 class_shift, hook) \
2051 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_early, \
2052 hook, vendor, device, class, class_shift, hook)
2053 #define DECLARE_PCI_FIXUP_CLASS_HEADER(vendor, device, class, \
2054 class_shift, hook) \
2055 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_header, \
2056 hook, vendor, device, class, class_shift, hook)
2057 #define DECLARE_PCI_FIXUP_CLASS_FINAL(vendor, device, class, \
2058 class_shift, hook) \
2059 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_final, \
2060 hook, vendor, device, class, class_shift, hook)
2061 #define DECLARE_PCI_FIXUP_CLASS_ENABLE(vendor, device, class, \
2062 class_shift, hook) \
2063 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_enable, \
2064 hook, vendor, device, class, class_shift, hook)
2065 #define DECLARE_PCI_FIXUP_CLASS_RESUME(vendor, device, class, \
2066 class_shift, hook) \
2067 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_resume, \
2068 resume##hook, vendor, device, class, class_shift, hook)
2069 #define DECLARE_PCI_FIXUP_CLASS_RESUME_EARLY(vendor, device, class, \
2070 class_shift, hook) \
2071 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_resume_early, \
2072 resume_early##hook, vendor, device, class, class_shift, hook)
2073 #define DECLARE_PCI_FIXUP_CLASS_SUSPEND(vendor, device, class, \
2074 class_shift, hook) \
2075 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_suspend, \
2076 suspend##hook, vendor, device, class, class_shift, hook)
2077 #define DECLARE_PCI_FIXUP_CLASS_SUSPEND_LATE(vendor, device, class, \
2078 class_shift, hook) \
2079 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_suspend_late, \
2080 suspend_late##hook, vendor, device, class, class_shift, hook)
2081
2082 #define DECLARE_PCI_FIXUP_EARLY(vendor, device, hook) \
2083 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_early, \
2084 hook, vendor, device, PCI_ANY_ID, 0, hook)
2085 #define DECLARE_PCI_FIXUP_HEADER(vendor, device, hook) \
2086 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_header, \
2087 hook, vendor, device, PCI_ANY_ID, 0, hook)
2088 #define DECLARE_PCI_FIXUP_FINAL(vendor, device, hook) \
2089 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_final, \
2090 hook, vendor, device, PCI_ANY_ID, 0, hook)
2091 #define DECLARE_PCI_FIXUP_ENABLE(vendor, device, hook) \
2092 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_enable, \
2093 hook, vendor, device, PCI_ANY_ID, 0, hook)
2094 #define DECLARE_PCI_FIXUP_RESUME(vendor, device, hook) \
2095 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_resume, \
2096 resume##hook, vendor, device, PCI_ANY_ID, 0, hook)
2097 #define DECLARE_PCI_FIXUP_RESUME_EARLY(vendor, device, hook) \
2098 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_resume_early, \
2099 resume_early##hook, vendor, device, PCI_ANY_ID, 0, hook)
2100 #define DECLARE_PCI_FIXUP_SUSPEND(vendor, device, hook) \
2101 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_suspend, \
2102 suspend##hook, vendor, device, PCI_ANY_ID, 0, hook)
2103 #define DECLARE_PCI_FIXUP_SUSPEND_LATE(vendor, device, hook) \
2104 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_suspend_late, \
2105 suspend_late##hook, vendor, device, PCI_ANY_ID, 0, hook)
2106
2107 #ifdef CONFIG_PCI_QUIRKS
2108 void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev);
2109 #else
2110 static inline void pci_fixup_device(enum pci_fixup_pass pass,
2111 struct pci_dev *dev) { }
2112 #endif
2113
2114 void __iomem *pcim_iomap(struct pci_dev *pdev, int bar, unsigned long maxlen);
2115 void pcim_iounmap(struct pci_dev *pdev, void __iomem *addr);
2116 void __iomem * const *pcim_iomap_table(struct pci_dev *pdev);
2117 int pcim_iomap_regions(struct pci_dev *pdev, int mask, const char *name);
2118 int pcim_iomap_regions_request_all(struct pci_dev *pdev, int mask,
2119 const char *name);
2120 void pcim_iounmap_regions(struct pci_dev *pdev, int mask);
2121
2122 extern int pci_pci_problems;
2123 #define PCIPCI_FAIL 1
2124 #define PCIPCI_TRITON 2
2125 #define PCIPCI_NATOMA 4
2126 #define PCIPCI_VIAETBF 8
2127 #define PCIPCI_VSFX 16
2128 #define PCIPCI_ALIMAGIK 32
2129 #define PCIAGP_FAIL 64
2130
2131 extern unsigned long pci_cardbus_io_size;
2132 extern unsigned long pci_cardbus_mem_size;
2133 extern u8 pci_dfl_cache_line_size;
2134 extern u8 pci_cache_line_size;
2135
2136
2137 void pcibios_disable_device(struct pci_dev *dev);
2138 void pcibios_set_master(struct pci_dev *dev);
2139 int pcibios_set_pcie_reset_state(struct pci_dev *dev,
2140 enum pcie_reset_state state);
2141 int pcibios_device_add(struct pci_dev *dev);
2142 void pcibios_release_device(struct pci_dev *dev);
2143 #ifdef CONFIG_PCI
2144 void pcibios_penalize_isa_irq(int irq, int active);
2145 #else
2146 static inline void pcibios_penalize_isa_irq(int irq, int active) {}
2147 #endif
2148 int pcibios_alloc_irq(struct pci_dev *dev);
2149 void pcibios_free_irq(struct pci_dev *dev);
2150 resource_size_t pcibios_default_alignment(void);
2151
2152 #if defined(CONFIG_PCI_MMCONFIG) || defined(CONFIG_ACPI_MCFG)
2153 void __init pci_mmcfg_early_init(void);
2154 void __init pci_mmcfg_late_init(void);
2155 #else
2156 static inline void pci_mmcfg_early_init(void) { }
2157 static inline void pci_mmcfg_late_init(void) { }
2158 #endif
2159
2160 int pci_ext_cfg_avail(void);
2161
2162 void __iomem *pci_ioremap_bar(struct pci_dev *pdev, int bar);
2163 void __iomem *pci_ioremap_wc_bar(struct pci_dev *pdev, int bar);
2164
2165 #ifdef CONFIG_PCI_IOV
2166 int pci_iov_virtfn_bus(struct pci_dev *dev, int id);
2167 int pci_iov_virtfn_devfn(struct pci_dev *dev, int id);
2168 int pci_iov_vf_id(struct pci_dev *dev);
2169 void *pci_iov_get_pf_drvdata(struct pci_dev *dev, struct pci_driver *pf_driver);
2170 int pci_enable_sriov(struct pci_dev *dev, int nr_virtfn);
2171 void pci_disable_sriov(struct pci_dev *dev);
2172
2173 int pci_iov_sysfs_link(struct pci_dev *dev, struct pci_dev *virtfn, int id);
2174 int pci_iov_add_virtfn(struct pci_dev *dev, int id);
2175 void pci_iov_remove_virtfn(struct pci_dev *dev, int id);
2176 int pci_num_vf(struct pci_dev *dev);
2177 int pci_vfs_assigned(struct pci_dev *dev);
2178 int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs);
2179 int pci_sriov_get_totalvfs(struct pci_dev *dev);
2180 int pci_sriov_configure_simple(struct pci_dev *dev, int nr_virtfn);
2181 resource_size_t pci_iov_resource_size(struct pci_dev *dev, int resno);
2182 void pci_vf_drivers_autoprobe(struct pci_dev *dev, bool probe);
2183
2184
2185 int pcibios_sriov_enable(struct pci_dev *pdev, u16 num_vfs);
2186 int pcibios_sriov_disable(struct pci_dev *pdev);
2187 resource_size_t pcibios_iov_resource_alignment(struct pci_dev *dev, int resno);
2188 #else
2189 static inline int pci_iov_virtfn_bus(struct pci_dev *dev, int id)
2190 {
2191 return -ENOSYS;
2192 }
2193 static inline int pci_iov_virtfn_devfn(struct pci_dev *dev, int id)
2194 {
2195 return -ENOSYS;
2196 }
2197
2198 static inline int pci_iov_vf_id(struct pci_dev *dev)
2199 {
2200 return -ENOSYS;
2201 }
2202
2203 static inline void *pci_iov_get_pf_drvdata(struct pci_dev *dev,
2204 struct pci_driver *pf_driver)
2205 {
2206 return ERR_PTR(-EINVAL);
2207 }
2208
2209 static inline int pci_enable_sriov(struct pci_dev *dev, int nr_virtfn)
2210 { return -ENODEV; }
2211
2212 static inline int pci_iov_sysfs_link(struct pci_dev *dev,
2213 struct pci_dev *virtfn, int id)
2214 {
2215 return -ENODEV;
2216 }
2217 static inline int pci_iov_add_virtfn(struct pci_dev *dev, int id)
2218 {
2219 return -ENOSYS;
2220 }
2221 static inline void pci_iov_remove_virtfn(struct pci_dev *dev,
2222 int id) { }
2223 static inline void pci_disable_sriov(struct pci_dev *dev) { }
2224 static inline int pci_num_vf(struct pci_dev *dev) { return 0; }
2225 static inline int pci_vfs_assigned(struct pci_dev *dev)
2226 { return 0; }
2227 static inline int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs)
2228 { return 0; }
2229 static inline int pci_sriov_get_totalvfs(struct pci_dev *dev)
2230 { return 0; }
2231 #define pci_sriov_configure_simple NULL
2232 static inline resource_size_t pci_iov_resource_size(struct pci_dev *dev, int resno)
2233 { return 0; }
2234 static inline void pci_vf_drivers_autoprobe(struct pci_dev *dev, bool probe) { }
2235 #endif
2236
2237 #if defined(CONFIG_HOTPLUG_PCI) || defined(CONFIG_HOTPLUG_PCI_MODULE)
2238 void pci_hp_create_module_link(struct pci_slot *pci_slot);
2239 void pci_hp_remove_module_link(struct pci_slot *pci_slot);
2240 #endif
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253 static inline int pci_pcie_cap(struct pci_dev *dev)
2254 {
2255 return dev->pcie_cap;
2256 }
2257
2258
2259
2260
2261
2262
2263
2264 static inline bool pci_is_pcie(struct pci_dev *dev)
2265 {
2266 return pci_pcie_cap(dev);
2267 }
2268
2269
2270
2271
2272
2273 static inline u16 pcie_caps_reg(const struct pci_dev *dev)
2274 {
2275 return dev->pcie_flags_reg;
2276 }
2277
2278
2279
2280
2281
2282 static inline int pci_pcie_type(const struct pci_dev *dev)
2283 {
2284 return (pcie_caps_reg(dev) & PCI_EXP_FLAGS_TYPE) >> 4;
2285 }
2286
2287
2288
2289
2290
2291
2292
2293
2294 static inline struct pci_dev *pcie_find_root_port(struct pci_dev *dev)
2295 {
2296 while (dev) {
2297 if (pci_is_pcie(dev) &&
2298 pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT)
2299 return dev;
2300 dev = pci_upstream_bridge(dev);
2301 }
2302
2303 return NULL;
2304 }
2305
2306 void pci_request_acs(void);
2307 bool pci_acs_enabled(struct pci_dev *pdev, u16 acs_flags);
2308 bool pci_acs_path_enabled(struct pci_dev *start,
2309 struct pci_dev *end, u16 acs_flags);
2310 int pci_enable_atomic_ops_to_root(struct pci_dev *dev, u32 cap_mask);
2311
2312 #define PCI_VPD_LRDT 0x80
2313 #define PCI_VPD_LRDT_ID(x) ((x) | PCI_VPD_LRDT)
2314
2315
2316 #define PCI_VPD_LTIN_ID_STRING 0x02
2317 #define PCI_VPD_LTIN_RO_DATA 0x10
2318 #define PCI_VPD_LTIN_RW_DATA 0x11
2319
2320 #define PCI_VPD_LRDT_ID_STRING PCI_VPD_LRDT_ID(PCI_VPD_LTIN_ID_STRING)
2321 #define PCI_VPD_LRDT_RO_DATA PCI_VPD_LRDT_ID(PCI_VPD_LTIN_RO_DATA)
2322 #define PCI_VPD_LRDT_RW_DATA PCI_VPD_LRDT_ID(PCI_VPD_LTIN_RW_DATA)
2323
2324 #define PCI_VPD_RO_KEYWORD_PARTNO "PN"
2325 #define PCI_VPD_RO_KEYWORD_SERIALNO "SN"
2326 #define PCI_VPD_RO_KEYWORD_MFR_ID "MN"
2327 #define PCI_VPD_RO_KEYWORD_VENDOR0 "V0"
2328 #define PCI_VPD_RO_KEYWORD_CHKSUM "RV"
2329
2330
2331
2332
2333
2334
2335
2336
2337 void *pci_vpd_alloc(struct pci_dev *dev, unsigned int *size);
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347 int pci_vpd_find_id_string(const u8 *buf, unsigned int len, unsigned int *size);
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359 int pci_vpd_find_ro_info_keyword(const void *buf, unsigned int len,
2360 const char *kw, unsigned int *size);
2361
2362
2363
2364
2365
2366
2367
2368
2369 int pci_vpd_check_csum(const void *buf, unsigned int len);
2370
2371
2372 #ifdef CONFIG_OF
2373 struct device_node;
2374 struct irq_domain;
2375 struct irq_domain *pci_host_bridge_of_msi_domain(struct pci_bus *bus);
2376 bool pci_host_of_has_msi_map(struct device *dev);
2377
2378
2379 struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus);
2380
2381 #else
2382 static inline struct irq_domain *
2383 pci_host_bridge_of_msi_domain(struct pci_bus *bus) { return NULL; }
2384 static inline bool pci_host_of_has_msi_map(struct device *dev) { return false; }
2385 #endif
2386
2387 static inline struct device_node *
2388 pci_device_to_OF_node(const struct pci_dev *pdev)
2389 {
2390 return pdev ? pdev->dev.of_node : NULL;
2391 }
2392
2393 static inline struct device_node *pci_bus_to_OF_node(struct pci_bus *bus)
2394 {
2395 return bus ? bus->dev.of_node : NULL;
2396 }
2397
2398 #ifdef CONFIG_ACPI
2399 struct irq_domain *pci_host_bridge_acpi_msi_domain(struct pci_bus *bus);
2400
2401 void
2402 pci_msi_register_fwnode_provider(struct fwnode_handle *(*fn)(struct device *));
2403 bool pci_pr3_present(struct pci_dev *pdev);
2404 #else
2405 static inline struct irq_domain *
2406 pci_host_bridge_acpi_msi_domain(struct pci_bus *bus) { return NULL; }
2407 static inline bool pci_pr3_present(struct pci_dev *pdev) { return false; }
2408 #endif
2409
2410 #ifdef CONFIG_EEH
2411 static inline struct eeh_dev *pci_dev_to_eeh_dev(struct pci_dev *pdev)
2412 {
2413 return pdev->dev.archdata.edev;
2414 }
2415 #endif
2416
2417 void pci_add_dma_alias(struct pci_dev *dev, u8 devfn_from, unsigned nr_devfns);
2418 bool pci_devs_are_dma_aliases(struct pci_dev *dev1, struct pci_dev *dev2);
2419 int pci_for_each_dma_alias(struct pci_dev *pdev,
2420 int (*fn)(struct pci_dev *pdev,
2421 u16 alias, void *data), void *data);
2422
2423
2424 static inline void pci_set_dev_assigned(struct pci_dev *pdev)
2425 {
2426 pdev->dev_flags |= PCI_DEV_FLAGS_ASSIGNED;
2427 }
2428 static inline void pci_clear_dev_assigned(struct pci_dev *pdev)
2429 {
2430 pdev->dev_flags &= ~PCI_DEV_FLAGS_ASSIGNED;
2431 }
2432 static inline bool pci_is_dev_assigned(struct pci_dev *pdev)
2433 {
2434 return (pdev->dev_flags & PCI_DEV_FLAGS_ASSIGNED) == PCI_DEV_FLAGS_ASSIGNED;
2435 }
2436
2437
2438
2439
2440
2441
2442
2443 static inline bool pci_ari_enabled(struct pci_bus *bus)
2444 {
2445 return bus->self && bus->self->ari_enabled;
2446 }
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456 static inline bool pci_is_thunderbolt_attached(struct pci_dev *pdev)
2457 {
2458 struct pci_dev *parent = pdev;
2459
2460 if (pdev->is_thunderbolt)
2461 return true;
2462
2463 while ((parent = pci_upstream_bridge(parent)))
2464 if (parent->is_thunderbolt)
2465 return true;
2466
2467 return false;
2468 }
2469
2470 #if defined(CONFIG_PCIEPORTBUS) || defined(CONFIG_EEH)
2471 void pci_uevent_ers(struct pci_dev *pdev, enum pci_ers_result err_type);
2472 #endif
2473
2474 #include <linux/dma-mapping.h>
2475
2476 #define pci_printk(level, pdev, fmt, arg...) \
2477 dev_printk(level, &(pdev)->dev, fmt, ##arg)
2478
2479 #define pci_emerg(pdev, fmt, arg...) dev_emerg(&(pdev)->dev, fmt, ##arg)
2480 #define pci_alert(pdev, fmt, arg...) dev_alert(&(pdev)->dev, fmt, ##arg)
2481 #define pci_crit(pdev, fmt, arg...) dev_crit(&(pdev)->dev, fmt, ##arg)
2482 #define pci_err(pdev, fmt, arg...) dev_err(&(pdev)->dev, fmt, ##arg)
2483 #define pci_warn(pdev, fmt, arg...) dev_warn(&(pdev)->dev, fmt, ##arg)
2484 #define pci_notice(pdev, fmt, arg...) dev_notice(&(pdev)->dev, fmt, ##arg)
2485 #define pci_info(pdev, fmt, arg...) dev_info(&(pdev)->dev, fmt, ##arg)
2486 #define pci_dbg(pdev, fmt, arg...) dev_dbg(&(pdev)->dev, fmt, ##arg)
2487
2488 #define pci_notice_ratelimited(pdev, fmt, arg...) \
2489 dev_notice_ratelimited(&(pdev)->dev, fmt, ##arg)
2490
2491 #define pci_info_ratelimited(pdev, fmt, arg...) \
2492 dev_info_ratelimited(&(pdev)->dev, fmt, ##arg)
2493
2494 #define pci_WARN(pdev, condition, fmt, arg...) \
2495 WARN(condition, "%s %s: " fmt, \
2496 dev_driver_string(&(pdev)->dev), pci_name(pdev), ##arg)
2497
2498 #define pci_WARN_ONCE(pdev, condition, fmt, arg...) \
2499 WARN_ONCE(condition, "%s %s: " fmt, \
2500 dev_driver_string(&(pdev)->dev), pci_name(pdev), ##arg)
2501
2502 #endif