1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16#ifndef LINUX_PCI_H
17#define LINUX_PCI_H
18
19
20#include <linux/mod_devicetable.h>
21
22#include <linux/types.h>
23#include <linux/init.h>
24#include <linux/ioport.h>
25#include <linux/list.h>
26#include <linux/compiler.h>
27#include <linux/errno.h>
28#include <linux/kobject.h>
29#include <linux/atomic.h>
30#include <linux/device.h>
31#include <linux/io.h>
32#include <linux/resource_ext.h>
33#include <uapi/linux/pci.h>
34
35#include <linux/pci_ids.h>
36
37
38
39
40
41
42
43
44
45
46
47
48
49#define PCI_DEVID(bus, devfn) ((((u16)(bus)) << 8) | (devfn))
50
51#define PCI_BUS_NUM(x) (((x) >> 8) & 0xff)
52
53
54struct pci_slot {
55 struct pci_bus *bus;
56 struct list_head list;
57 struct hotplug_slot *hotplug;
58 unsigned char number;
59 struct kobject kobj;
60};
61
62static inline const char *pci_slot_name(const struct pci_slot *slot)
63{
64 return kobject_name(&slot->kobj);
65}
66
67
68enum pci_mmap_state {
69 pci_mmap_io,
70 pci_mmap_mem
71};
72
73
74#define PCI_DMA_BIDIRECTIONAL 0
75#define PCI_DMA_TODEVICE 1
76#define PCI_DMA_FROMDEVICE 2
77#define PCI_DMA_NONE 3
78
79
80
81
82enum {
83
84 PCI_STD_RESOURCES,
85 PCI_STD_RESOURCE_END = 5,
86
87
88 PCI_ROM_RESOURCE,
89
90
91#ifdef CONFIG_PCI_IOV
92 PCI_IOV_RESOURCES,
93 PCI_IOV_RESOURCE_END = PCI_IOV_RESOURCES + PCI_SRIOV_NUM_BARS - 1,
94#endif
95
96
97#define PCI_BRIDGE_RESOURCE_NUM 4
98
99 PCI_BRIDGE_RESOURCES,
100 PCI_BRIDGE_RESOURCE_END = PCI_BRIDGE_RESOURCES +
101 PCI_BRIDGE_RESOURCE_NUM - 1,
102
103
104 PCI_NUM_RESOURCES,
105
106
107 DEVICE_COUNT_RESOURCE = PCI_NUM_RESOURCES,
108};
109
110typedef int __bitwise pci_power_t;
111
112#define PCI_D0 ((pci_power_t __force) 0)
113#define PCI_D1 ((pci_power_t __force) 1)
114#define PCI_D2 ((pci_power_t __force) 2)
115#define PCI_D3hot ((pci_power_t __force) 3)
116#define PCI_D3cold ((pci_power_t __force) 4)
117#define PCI_UNKNOWN ((pci_power_t __force) 5)
118#define PCI_POWER_ERROR ((pci_power_t __force) -1)
119
120
121extern const char *pci_power_names[];
122
123static inline const char *pci_power_name(pci_power_t state)
124{
125 return pci_power_names[1 + (int) state];
126}
127
128#define PCI_PM_D2_DELAY 200
129#define PCI_PM_D3_WAIT 10
130#define PCI_PM_D3COLD_WAIT 100
131#define PCI_PM_BUS_WAIT 50
132
133
134
135
136
137typedef unsigned int __bitwise pci_channel_state_t;
138
139enum pci_channel_state {
140
141 pci_channel_io_normal = (__force pci_channel_state_t) 1,
142
143
144 pci_channel_io_frozen = (__force pci_channel_state_t) 2,
145
146
147 pci_channel_io_perm_failure = (__force pci_channel_state_t) 3,
148};
149
150typedef unsigned int __bitwise pcie_reset_state_t;
151
152enum pcie_reset_state {
153
154 pcie_deassert_reset = (__force pcie_reset_state_t) 1,
155
156
157 pcie_warm_reset = (__force pcie_reset_state_t) 2,
158
159
160 pcie_hot_reset = (__force pcie_reset_state_t) 3
161};
162
163typedef unsigned short __bitwise pci_dev_flags_t;
164enum pci_dev_flags {
165
166
167
168 PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG = (__force pci_dev_flags_t) (1 << 0),
169
170 PCI_DEV_FLAGS_NO_D3 = (__force pci_dev_flags_t) (1 << 1),
171
172 PCI_DEV_FLAGS_ASSIGNED = (__force pci_dev_flags_t) (1 << 2),
173
174 PCI_DEV_FLAGS_ACS_ENABLED_QUIRK = (__force pci_dev_flags_t) (1 << 3),
175
176 PCI_DEV_FLAGS_DMA_ALIAS_DEVFN = (__force pci_dev_flags_t) (1 << 4),
177
178 PCI_DEV_FLAG_PCIE_BRIDGE_ALIAS = (__force pci_dev_flags_t) (1 << 5),
179
180 PCI_DEV_FLAGS_NO_BUS_RESET = (__force pci_dev_flags_t) (1 << 6),
181
182 PCI_DEV_FLAGS_NO_PM_RESET = (__force pci_dev_flags_t) (1 << 7),
183
184 PCI_DEV_FLAGS_VPD_REF_F0 = (__force pci_dev_flags_t) (1 << 8),
185};
186
187enum pci_irq_reroute_variant {
188 INTEL_IRQ_REROUTE_VARIANT = 1,
189 MAX_IRQ_REROUTE_VARIANTS = 3
190};
191
192typedef unsigned short __bitwise pci_bus_flags_t;
193enum pci_bus_flags {
194 PCI_BUS_FLAGS_NO_MSI = (__force pci_bus_flags_t) 1,
195 PCI_BUS_FLAGS_NO_MMRBC = (__force pci_bus_flags_t) 2,
196};
197
198
199enum pcie_link_width {
200 PCIE_LNK_WIDTH_RESRV = 0x00,
201 PCIE_LNK_X1 = 0x01,
202 PCIE_LNK_X2 = 0x02,
203 PCIE_LNK_X4 = 0x04,
204 PCIE_LNK_X8 = 0x08,
205 PCIE_LNK_X12 = 0x0C,
206 PCIE_LNK_X16 = 0x10,
207 PCIE_LNK_X32 = 0x20,
208 PCIE_LNK_WIDTH_UNKNOWN = 0xFF,
209};
210
211
212enum pci_bus_speed {
213 PCI_SPEED_33MHz = 0x00,
214 PCI_SPEED_66MHz = 0x01,
215 PCI_SPEED_66MHz_PCIX = 0x02,
216 PCI_SPEED_100MHz_PCIX = 0x03,
217 PCI_SPEED_133MHz_PCIX = 0x04,
218 PCI_SPEED_66MHz_PCIX_ECC = 0x05,
219 PCI_SPEED_100MHz_PCIX_ECC = 0x06,
220 PCI_SPEED_133MHz_PCIX_ECC = 0x07,
221 PCI_SPEED_66MHz_PCIX_266 = 0x09,
222 PCI_SPEED_100MHz_PCIX_266 = 0x0a,
223 PCI_SPEED_133MHz_PCIX_266 = 0x0b,
224 AGP_UNKNOWN = 0x0c,
225 AGP_1X = 0x0d,
226 AGP_2X = 0x0e,
227 AGP_4X = 0x0f,
228 AGP_8X = 0x10,
229 PCI_SPEED_66MHz_PCIX_533 = 0x11,
230 PCI_SPEED_100MHz_PCIX_533 = 0x12,
231 PCI_SPEED_133MHz_PCIX_533 = 0x13,
232 PCIE_SPEED_2_5GT = 0x14,
233 PCIE_SPEED_5_0GT = 0x15,
234 PCIE_SPEED_8_0GT = 0x16,
235 PCI_SPEED_UNKNOWN = 0xff,
236};
237
238struct pci_cap_saved_data {
239 u16 cap_nr;
240 bool cap_extended;
241 unsigned int size;
242 u32 data[0];
243};
244
245struct pci_cap_saved_state {
246 struct hlist_node next;
247 struct pci_cap_saved_data cap;
248};
249
250struct pcie_link_state;
251struct pci_vpd;
252struct pci_sriov;
253struct pci_ats;
254
255
256
257
258struct pci_dev {
259 struct list_head bus_list;
260 struct pci_bus *bus;
261 struct pci_bus *subordinate;
262
263 void *sysdata;
264 struct proc_dir_entry *procent;
265 struct pci_slot *slot;
266
267 unsigned int devfn;
268 unsigned short vendor;
269 unsigned short device;
270 unsigned short subsystem_vendor;
271 unsigned short subsystem_device;
272 unsigned int class;
273 u8 revision;
274 u8 hdr_type;
275 u8 pcie_cap;
276 u8 msi_cap;
277 u8 msix_cap;
278 u8 pcie_mpss:3;
279 u8 rom_base_reg;
280 u8 pin;
281 u16 pcie_flags_reg;
282 u8 dma_alias_devfn;
283
284 struct pci_driver *driver;
285 u64 dma_mask;
286
287
288
289
290
291 struct device_dma_parameters dma_parms;
292
293 pci_power_t current_state;
294
295
296 u8 pm_cap;
297 unsigned int pme_support:5;
298
299 unsigned int pme_interrupt:1;
300 unsigned int pme_poll:1;
301 unsigned int d1_support:1;
302 unsigned int d2_support:1;
303 unsigned int no_d1d2:1;
304 unsigned int no_d3cold:1;
305 unsigned int d3cold_allowed:1;
306 unsigned int mmio_always_on:1;
307
308 unsigned int wakeup_prepared:1;
309 unsigned int runtime_d3cold:1;
310
311
312
313 unsigned int ignore_hotplug:1;
314 unsigned int d3_delay;
315 unsigned int d3cold_delay;
316
317#ifdef CONFIG_PCIEASPM
318 struct pcie_link_state *link_state;
319#endif
320
321 pci_channel_state_t error_state;
322 struct device dev;
323
324 int cfg_size;
325
326
327
328
329
330 unsigned int irq;
331 struct resource resource[DEVICE_COUNT_RESOURCE];
332
333 bool match_driver;
334
335 unsigned int transparent:1;
336 unsigned int multifunction:1;
337
338 unsigned int is_added:1;
339 unsigned int is_busmaster:1;
340 unsigned int no_msi:1;
341 unsigned int no_64bit_msi:1;
342 unsigned int block_cfg_access:1;
343 unsigned int broken_parity_status:1;
344 unsigned int irq_reroute_variant:2;
345 unsigned int msi_enabled:1;
346 unsigned int msix_enabled:1;
347 unsigned int ari_enabled:1;
348 unsigned int ats_enabled:1;
349 unsigned int is_managed:1;
350 unsigned int needs_freset:1;
351 unsigned int state_saved:1;
352 unsigned int is_physfn:1;
353 unsigned int is_virtfn:1;
354 unsigned int reset_fn:1;
355 unsigned int is_hotplug_bridge:1;
356 unsigned int __aer_firmware_first_valid:1;
357 unsigned int __aer_firmware_first:1;
358 unsigned int broken_intx_masking:1;
359 unsigned int io_window_1k:1;
360 unsigned int irq_managed:1;
361 unsigned int has_secondary_link:1;
362 pci_dev_flags_t dev_flags;
363 atomic_t enable_cnt;
364
365 u32 saved_config_space[16];
366 struct hlist_head saved_cap_space;
367 struct bin_attribute *rom_attr;
368 int rom_attr_enabled;
369 struct bin_attribute *res_attr[DEVICE_COUNT_RESOURCE];
370 struct bin_attribute *res_attr_wc[DEVICE_COUNT_RESOURCE];
371#ifdef CONFIG_PCI_MSI
372 const struct attribute_group **msi_irq_groups;
373#endif
374 struct pci_vpd *vpd;
375#ifdef CONFIG_PCI_ATS
376 union {
377 struct pci_sriov *sriov;
378 struct pci_dev *physfn;
379 };
380 u16 ats_cap;
381 u8 ats_stu;
382 atomic_t ats_ref_cnt;
383#endif
384 phys_addr_t rom;
385 size_t romlen;
386 char *driver_override;
387};
388
389static inline struct pci_dev *pci_physfn(struct pci_dev *dev)
390{
391#ifdef CONFIG_PCI_IOV
392 if (dev->is_virtfn)
393 dev = dev->physfn;
394#endif
395 return dev;
396}
397
398struct pci_dev *pci_alloc_dev(struct pci_bus *bus);
399
400#define to_pci_dev(n) container_of(n, struct pci_dev, dev)
401#define for_each_pci_dev(d) while ((d = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, d)) != NULL)
402
403static inline int pci_channel_offline(struct pci_dev *pdev)
404{
405 return (pdev->error_state != pci_channel_io_normal);
406}
407
408struct pci_host_bridge {
409 struct device dev;
410 struct pci_bus *bus;
411 struct list_head windows;
412 void (*release_fn)(struct pci_host_bridge *);
413 void *release_data;
414 unsigned int ignore_reset_delay:1;
415
416 resource_size_t (*align_resource)(struct pci_dev *dev,
417 const struct resource *res,
418 resource_size_t start,
419 resource_size_t size,
420 resource_size_t align);
421};
422
423#define to_pci_host_bridge(n) container_of(n, struct pci_host_bridge, dev)
424
425struct pci_host_bridge *pci_find_host_bridge(struct pci_bus *bus);
426
427void pci_set_host_bridge_release(struct pci_host_bridge *bridge,
428 void (*release_fn)(struct pci_host_bridge *),
429 void *release_data);
430
431int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge);
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446#define PCI_SUBTRACTIVE_DECODE 0x1
447
448struct pci_bus_resource {
449 struct list_head list;
450 struct resource *res;
451 unsigned int flags;
452};
453
454#define PCI_REGION_FLAG_MASK 0x0fU
455
456struct pci_bus {
457 struct list_head node;
458 struct pci_bus *parent;
459 struct list_head children;
460 struct list_head devices;
461 struct pci_dev *self;
462 struct list_head slots;
463
464 struct resource *resource[PCI_BRIDGE_RESOURCE_NUM];
465 struct list_head resources;
466 struct resource busn_res;
467
468 struct pci_ops *ops;
469 struct msi_controller *msi;
470 void *sysdata;
471 struct proc_dir_entry *procdir;
472
473 unsigned char number;
474 unsigned char primary;
475 unsigned char max_bus_speed;
476 unsigned char cur_bus_speed;
477#ifdef CONFIG_PCI_DOMAINS_GENERIC
478 int domain_nr;
479#endif
480
481 char name[48];
482
483 unsigned short bridge_ctl;
484 pci_bus_flags_t bus_flags;
485 struct device *bridge;
486 struct device dev;
487 struct bin_attribute *legacy_io;
488 struct bin_attribute *legacy_mem;
489 unsigned int is_added:1;
490};
491
492#define to_pci_bus(n) container_of(n, struct pci_bus, dev)
493
494
495
496
497
498
499
500
501
502static inline bool pci_is_root_bus(struct pci_bus *pbus)
503{
504 return !(pbus->parent);
505}
506
507
508
509
510
511
512
513
514static inline bool pci_is_bridge(struct pci_dev *dev)
515{
516 return dev->hdr_type == PCI_HEADER_TYPE_BRIDGE ||
517 dev->hdr_type == PCI_HEADER_TYPE_CARDBUS;
518}
519
520static inline struct pci_dev *pci_upstream_bridge(struct pci_dev *dev)
521{
522 dev = pci_physfn(dev);
523 if (pci_is_root_bus(dev->bus))
524 return NULL;
525
526 return dev->bus->self;
527}
528
529struct device *pci_get_host_bridge_device(struct pci_dev *dev);
530void pci_put_host_bridge_device(struct device *dev);
531
532#ifdef CONFIG_PCI_MSI
533static inline bool pci_dev_msi_enabled(struct pci_dev *pci_dev)
534{
535 return pci_dev->msi_enabled || pci_dev->msix_enabled;
536}
537#else
538static inline bool pci_dev_msi_enabled(struct pci_dev *pci_dev) { return false; }
539#endif
540
541
542
543
544#define PCIBIOS_SUCCESSFUL 0x00
545#define PCIBIOS_FUNC_NOT_SUPPORTED 0x81
546#define PCIBIOS_BAD_VENDOR_ID 0x83
547#define PCIBIOS_DEVICE_NOT_FOUND 0x86
548#define PCIBIOS_BAD_REGISTER_NUMBER 0x87
549#define PCIBIOS_SET_FAILED 0x88
550#define PCIBIOS_BUFFER_TOO_SMALL 0x89
551
552
553
554
555static inline int pcibios_err_to_errno(int err)
556{
557 if (err <= PCIBIOS_SUCCESSFUL)
558 return err;
559
560 switch (err) {
561 case PCIBIOS_FUNC_NOT_SUPPORTED:
562 return -ENOENT;
563 case PCIBIOS_BAD_VENDOR_ID:
564 return -ENOTTY;
565 case PCIBIOS_DEVICE_NOT_FOUND:
566 return -ENODEV;
567 case PCIBIOS_BAD_REGISTER_NUMBER:
568 return -EFAULT;
569 case PCIBIOS_SET_FAILED:
570 return -EIO;
571 case PCIBIOS_BUFFER_TOO_SMALL:
572 return -ENOSPC;
573 }
574
575 return -ERANGE;
576}
577
578
579
580struct pci_ops {
581 void __iomem *(*map_bus)(struct pci_bus *bus, unsigned int devfn, int where);
582 int (*read)(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 *val);
583 int (*write)(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val);
584};
585
586
587
588
589
590int raw_pci_read(unsigned int domain, unsigned int bus, unsigned int devfn,
591 int reg, int len, u32 *val);
592int raw_pci_write(unsigned int domain, unsigned int bus, unsigned int devfn,
593 int reg, int len, u32 val);
594
595#ifdef CONFIG_PCI_BUS_ADDR_T_64BIT
596typedef u64 pci_bus_addr_t;
597#else
598typedef u32 pci_bus_addr_t;
599#endif
600
601struct pci_bus_region {
602 pci_bus_addr_t start;
603 pci_bus_addr_t end;
604};
605
606struct pci_dynids {
607 spinlock_t lock;
608 struct list_head list;
609};
610
611
612
613
614
615
616
617
618
619typedef unsigned int __bitwise pci_ers_result_t;
620
621enum pci_ers_result {
622
623 PCI_ERS_RESULT_NONE = (__force pci_ers_result_t) 1,
624
625
626 PCI_ERS_RESULT_CAN_RECOVER = (__force pci_ers_result_t) 2,
627
628
629 PCI_ERS_RESULT_NEED_RESET = (__force pci_ers_result_t) 3,
630
631
632 PCI_ERS_RESULT_DISCONNECT = (__force pci_ers_result_t) 4,
633
634
635 PCI_ERS_RESULT_RECOVERED = (__force pci_ers_result_t) 5,
636
637
638 PCI_ERS_RESULT_NO_AER_DRIVER = (__force pci_ers_result_t) 6,
639};
640
641
642struct pci_error_handlers {
643
644 pci_ers_result_t (*error_detected)(struct pci_dev *dev,
645 enum pci_channel_state error);
646
647
648 pci_ers_result_t (*mmio_enabled)(struct pci_dev *dev);
649
650
651 pci_ers_result_t (*link_reset)(struct pci_dev *dev);
652
653
654 pci_ers_result_t (*slot_reset)(struct pci_dev *dev);
655
656
657 void (*reset_notify)(struct pci_dev *dev, bool prepare);
658
659
660 void (*resume)(struct pci_dev *dev);
661};
662
663
664struct module;
665struct pci_driver {
666 struct list_head node;
667 const char *name;
668 const struct pci_device_id *id_table;
669 int (*probe) (struct pci_dev *dev, const struct pci_device_id *id);
670 void (*remove) (struct pci_dev *dev);
671 int (*suspend) (struct pci_dev *dev, pm_message_t state);
672 int (*suspend_late) (struct pci_dev *dev, pm_message_t state);
673 int (*resume_early) (struct pci_dev *dev);
674 int (*resume) (struct pci_dev *dev);
675 void (*shutdown) (struct pci_dev *dev);
676 int (*sriov_configure) (struct pci_dev *dev, int num_vfs);
677 const struct pci_error_handlers *err_handler;
678 struct device_driver driver;
679 struct pci_dynids dynids;
680};
681
682#define to_pci_driver(drv) container_of(drv, struct pci_driver, driver)
683
684
685
686
687
688
689
690#define DEFINE_PCI_DEVICE_TABLE(_table) \
691 const struct pci_device_id _table[]
692
693
694
695
696
697
698
699
700
701
702#define PCI_DEVICE(vend,dev) \
703 .vendor = (vend), .device = (dev), \
704 .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID
705
706
707
708
709
710
711
712
713
714
715
716#define PCI_DEVICE_SUB(vend, dev, subvend, subdev) \
717 .vendor = (vend), .device = (dev), \
718 .subvendor = (subvend), .subdevice = (subdev)
719
720
721
722
723
724
725
726
727
728
729#define PCI_DEVICE_CLASS(dev_class,dev_class_mask) \
730 .class = (dev_class), .class_mask = (dev_class_mask), \
731 .vendor = PCI_ANY_ID, .device = PCI_ANY_ID, \
732 .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID
733
734
735
736
737
738
739
740
741
742
743
744
745#define PCI_VDEVICE(vend, dev) \
746 .vendor = PCI_VENDOR_ID_##vend, .device = (dev), \
747 .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, 0, 0
748
749
750#ifdef CONFIG_PCI
751
752void pcie_bus_configure_settings(struct pci_bus *bus);
753
754enum pcie_bus_config_types {
755 PCIE_BUS_TUNE_OFF,
756 PCIE_BUS_DEFAULT,
757 PCIE_BUS_SAFE,
758 PCIE_BUS_PERFORMANCE,
759 PCIE_BUS_PEER2PEER,
760};
761
762extern enum pcie_bus_config_types pcie_bus_config;
763
764extern struct bus_type pci_bus_type;
765
766
767
768extern struct list_head pci_root_buses;
769
770int no_pci_devices(void);
771
772void pcibios_resource_survey_bus(struct pci_bus *bus);
773void pcibios_add_bus(struct pci_bus *bus);
774void pcibios_remove_bus(struct pci_bus *bus);
775void pcibios_fixup_bus(struct pci_bus *);
776int __must_check pcibios_enable_device(struct pci_dev *, int mask);
777
778char *pcibios_setup(char *str);
779
780
781resource_size_t pcibios_align_resource(void *, const struct resource *,
782 resource_size_t,
783 resource_size_t);
784void pcibios_update_irq(struct pci_dev *, int irq);
785
786
787void pci_fixup_cardbus(struct pci_bus *);
788
789
790
791void pcibios_resource_to_bus(struct pci_bus *bus, struct pci_bus_region *region,
792 struct resource *res);
793void pcibios_bus_to_resource(struct pci_bus *bus, struct resource *res,
794 struct pci_bus_region *region);
795void pcibios_scan_specific_bus(int busn);
796struct pci_bus *pci_find_bus(int domain, int busnr);
797void pci_bus_add_devices(const struct pci_bus *bus);
798struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops, void *sysdata);
799struct pci_bus *pci_create_root_bus(struct device *parent, int bus,
800 struct pci_ops *ops, void *sysdata,
801 struct list_head *resources);
802int pci_bus_insert_busn_res(struct pci_bus *b, int bus, int busmax);
803int pci_bus_update_busn_res_end(struct pci_bus *b, int busmax);
804void pci_bus_release_busn_res(struct pci_bus *b);
805struct pci_bus *pci_scan_root_bus_msi(struct device *parent, int bus,
806 struct pci_ops *ops, void *sysdata,
807 struct list_head *resources,
808 struct msi_controller *msi);
809struct pci_bus *pci_scan_root_bus(struct device *parent, int bus,
810 struct pci_ops *ops, void *sysdata,
811 struct list_head *resources);
812struct pci_bus *pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev,
813 int busnr);
814void pcie_update_link_speed(struct pci_bus *bus, u16 link_status);
815struct pci_slot *pci_create_slot(struct pci_bus *parent, int slot_nr,
816 const char *name,
817 struct hotplug_slot *hotplug);
818void pci_destroy_slot(struct pci_slot *slot);
819#ifdef CONFIG_SYSFS
820void pci_dev_assign_slot(struct pci_dev *dev);
821#else
822static inline void pci_dev_assign_slot(struct pci_dev *dev) { }
823#endif
824int pci_scan_slot(struct pci_bus *bus, int devfn);
825struct pci_dev *pci_scan_single_device(struct pci_bus *bus, int devfn);
826void pci_device_add(struct pci_dev *dev, struct pci_bus *bus);
827unsigned int pci_scan_child_bus(struct pci_bus *bus);
828void pci_bus_add_device(struct pci_dev *dev);
829void pci_read_bridge_bases(struct pci_bus *child);
830struct resource *pci_find_parent_resource(const struct pci_dev *dev,
831 struct resource *res);
832struct pci_dev *pci_find_pcie_root_port(struct pci_dev *dev);
833u8 pci_swizzle_interrupt_pin(const struct pci_dev *dev, u8 pin);
834int pci_get_interrupt_pin(struct pci_dev *dev, struct pci_dev **bridge);
835u8 pci_common_swizzle(struct pci_dev *dev, u8 *pinp);
836struct pci_dev *pci_dev_get(struct pci_dev *dev);
837void pci_dev_put(struct pci_dev *dev);
838void pci_remove_bus(struct pci_bus *b);
839void pci_stop_and_remove_bus_device(struct pci_dev *dev);
840void pci_stop_and_remove_bus_device_locked(struct pci_dev *dev);
841void pci_stop_root_bus(struct pci_bus *bus);
842void pci_remove_root_bus(struct pci_bus *bus);
843void pci_setup_cardbus(struct pci_bus *bus);
844void pci_sort_breadthfirst(void);
845#define dev_is_pci(d) ((d)->bus == &pci_bus_type)
846#define dev_is_pf(d) ((dev_is_pci(d) ? to_pci_dev(d)->is_physfn : false))
847#define dev_num_vf(d) ((dev_is_pci(d) ? pci_num_vf(to_pci_dev(d)) : 0))
848
849
850
851enum pci_lost_interrupt_reason {
852 PCI_LOST_IRQ_NO_INFORMATION = 0,
853 PCI_LOST_IRQ_DISABLE_MSI,
854 PCI_LOST_IRQ_DISABLE_MSIX,
855 PCI_LOST_IRQ_DISABLE_ACPI,
856};
857enum pci_lost_interrupt_reason pci_lost_interrupt(struct pci_dev *dev);
858int pci_find_capability(struct pci_dev *dev, int cap);
859int pci_find_next_capability(struct pci_dev *dev, u8 pos, int cap);
860int pci_find_ext_capability(struct pci_dev *dev, int cap);
861int pci_find_next_ext_capability(struct pci_dev *dev, int pos, int cap);
862int pci_find_ht_capability(struct pci_dev *dev, int ht_cap);
863int pci_find_next_ht_capability(struct pci_dev *dev, int pos, int ht_cap);
864struct pci_bus *pci_find_next_bus(const struct pci_bus *from);
865
866struct pci_dev *pci_get_device(unsigned int vendor, unsigned int device,
867 struct pci_dev *from);
868struct pci_dev *pci_get_subsys(unsigned int vendor, unsigned int device,
869 unsigned int ss_vendor, unsigned int ss_device,
870 struct pci_dev *from);
871struct pci_dev *pci_get_slot(struct pci_bus *bus, unsigned int devfn);
872struct pci_dev *pci_get_domain_bus_and_slot(int domain, unsigned int bus,
873 unsigned int devfn);
874static inline struct pci_dev *pci_get_bus_and_slot(unsigned int bus,
875 unsigned int devfn)
876{
877 return pci_get_domain_bus_and_slot(0, bus, devfn);
878}
879struct pci_dev *pci_get_class(unsigned int class, struct pci_dev *from);
880int pci_dev_present(const struct pci_device_id *ids);
881
882int pci_bus_read_config_byte(struct pci_bus *bus, unsigned int devfn,
883 int where, u8 *val);
884int pci_bus_read_config_word(struct pci_bus *bus, unsigned int devfn,
885 int where, u16 *val);
886int pci_bus_read_config_dword(struct pci_bus *bus, unsigned int devfn,
887 int where, u32 *val);
888int pci_bus_write_config_byte(struct pci_bus *bus, unsigned int devfn,
889 int where, u8 val);
890int pci_bus_write_config_word(struct pci_bus *bus, unsigned int devfn,
891 int where, u16 val);
892int pci_bus_write_config_dword(struct pci_bus *bus, unsigned int devfn,
893 int where, u32 val);
894
895int pci_generic_config_read(struct pci_bus *bus, unsigned int devfn,
896 int where, int size, u32 *val);
897int pci_generic_config_write(struct pci_bus *bus, unsigned int devfn,
898 int where, int size, u32 val);
899int pci_generic_config_read32(struct pci_bus *bus, unsigned int devfn,
900 int where, int size, u32 *val);
901int pci_generic_config_write32(struct pci_bus *bus, unsigned int devfn,
902 int where, int size, u32 val);
903
904struct pci_ops *pci_bus_set_ops(struct pci_bus *bus, struct pci_ops *ops);
905
906static inline int pci_read_config_byte(const struct pci_dev *dev, int where, u8 *val)
907{
908 return pci_bus_read_config_byte(dev->bus, dev->devfn, where, val);
909}
910static inline int pci_read_config_word(const struct pci_dev *dev, int where, u16 *val)
911{
912 return pci_bus_read_config_word(dev->bus, dev->devfn, where, val);
913}
914static inline int pci_read_config_dword(const struct pci_dev *dev, int where,
915 u32 *val)
916{
917 return pci_bus_read_config_dword(dev->bus, dev->devfn, where, val);
918}
919static inline int pci_write_config_byte(const struct pci_dev *dev, int where, u8 val)
920{
921 return pci_bus_write_config_byte(dev->bus, dev->devfn, where, val);
922}
923static inline int pci_write_config_word(const struct pci_dev *dev, int where, u16 val)
924{
925 return pci_bus_write_config_word(dev->bus, dev->devfn, where, val);
926}
927static inline int pci_write_config_dword(const struct pci_dev *dev, int where,
928 u32 val)
929{
930 return pci_bus_write_config_dword(dev->bus, dev->devfn, where, val);
931}
932
933int pcie_capability_read_word(struct pci_dev *dev, int pos, u16 *val);
934int pcie_capability_read_dword(struct pci_dev *dev, int pos, u32 *val);
935int pcie_capability_write_word(struct pci_dev *dev, int pos, u16 val);
936int pcie_capability_write_dword(struct pci_dev *dev, int pos, u32 val);
937int pcie_capability_clear_and_set_word(struct pci_dev *dev, int pos,
938 u16 clear, u16 set);
939int pcie_capability_clear_and_set_dword(struct pci_dev *dev, int pos,
940 u32 clear, u32 set);
941
942static inline int pcie_capability_set_word(struct pci_dev *dev, int pos,
943 u16 set)
944{
945 return pcie_capability_clear_and_set_word(dev, pos, 0, set);
946}
947
948static inline int pcie_capability_set_dword(struct pci_dev *dev, int pos,
949 u32 set)
950{
951 return pcie_capability_clear_and_set_dword(dev, pos, 0, set);
952}
953
954static inline int pcie_capability_clear_word(struct pci_dev *dev, int pos,
955 u16 clear)
956{
957 return pcie_capability_clear_and_set_word(dev, pos, clear, 0);
958}
959
960static inline int pcie_capability_clear_dword(struct pci_dev *dev, int pos,
961 u32 clear)
962{
963 return pcie_capability_clear_and_set_dword(dev, pos, clear, 0);
964}
965
966
967int pci_user_read_config_byte(struct pci_dev *dev, int where, u8 *val);
968int pci_user_read_config_word(struct pci_dev *dev, int where, u16 *val);
969int pci_user_read_config_dword(struct pci_dev *dev, int where, u32 *val);
970int pci_user_write_config_byte(struct pci_dev *dev, int where, u8 val);
971int pci_user_write_config_word(struct pci_dev *dev, int where, u16 val);
972int pci_user_write_config_dword(struct pci_dev *dev, int where, u32 val);
973
974int __must_check pci_enable_device(struct pci_dev *dev);
975int __must_check pci_enable_device_io(struct pci_dev *dev);
976int __must_check pci_enable_device_mem(struct pci_dev *dev);
977int __must_check pci_reenable_device(struct pci_dev *);
978int __must_check pcim_enable_device(struct pci_dev *pdev);
979void pcim_pin_device(struct pci_dev *pdev);
980
981static inline int pci_is_enabled(struct pci_dev *pdev)
982{
983 return (atomic_read(&pdev->enable_cnt) > 0);
984}
985
986static inline int pci_is_managed(struct pci_dev *pdev)
987{
988 return pdev->is_managed;
989}
990
991void pci_disable_device(struct pci_dev *dev);
992
993extern unsigned int pcibios_max_latency;
994void pci_set_master(struct pci_dev *dev);
995void pci_clear_master(struct pci_dev *dev);
996
997int pci_set_pcie_reset_state(struct pci_dev *dev, enum pcie_reset_state state);
998int pci_set_cacheline_size(struct pci_dev *dev);
999#define HAVE_PCI_SET_MWI
1000int __must_check pci_set_mwi(struct pci_dev *dev);
1001int pci_try_set_mwi(struct pci_dev *dev);
1002void pci_clear_mwi(struct pci_dev *dev);
1003void pci_intx(struct pci_dev *dev, int enable);
1004bool pci_intx_mask_supported(struct pci_dev *dev);
1005bool pci_check_and_mask_intx(struct pci_dev *dev);
1006bool pci_check_and_unmask_intx(struct pci_dev *dev);
1007int pci_set_dma_max_seg_size(struct pci_dev *dev, unsigned int size);
1008int pci_set_dma_seg_boundary(struct pci_dev *dev, unsigned long mask);
1009int pci_wait_for_pending(struct pci_dev *dev, int pos, u16 mask);
1010int pci_wait_for_pending_transaction(struct pci_dev *dev);
1011int pcix_get_max_mmrbc(struct pci_dev *dev);
1012int pcix_get_mmrbc(struct pci_dev *dev);
1013int pcix_set_mmrbc(struct pci_dev *dev, int mmrbc);
1014int pcie_get_readrq(struct pci_dev *dev);
1015int pcie_set_readrq(struct pci_dev *dev, int rq);
1016int pcie_get_mps(struct pci_dev *dev);
1017int pcie_set_mps(struct pci_dev *dev, int mps);
1018int pcie_get_minimum_link(struct pci_dev *dev, enum pci_bus_speed *speed,
1019 enum pcie_link_width *width);
1020int __pci_reset_function(struct pci_dev *dev);
1021int __pci_reset_function_locked(struct pci_dev *dev);
1022int pci_reset_function(struct pci_dev *dev);
1023int pci_try_reset_function(struct pci_dev *dev);
1024int pci_probe_reset_slot(struct pci_slot *slot);
1025int pci_reset_slot(struct pci_slot *slot);
1026int pci_try_reset_slot(struct pci_slot *slot);
1027int pci_probe_reset_bus(struct pci_bus *bus);
1028int pci_reset_bus(struct pci_bus *bus);
1029int pci_try_reset_bus(struct pci_bus *bus);
1030void pci_reset_secondary_bus(struct pci_dev *dev);
1031void pcibios_reset_secondary_bus(struct pci_dev *dev);
1032void pci_reset_bridge_secondary_bus(struct pci_dev *dev);
1033void pci_update_resource(struct pci_dev *dev, int resno);
1034int __must_check pci_assign_resource(struct pci_dev *dev, int i);
1035int __must_check pci_reassign_resource(struct pci_dev *dev, int i, resource_size_t add_size, resource_size_t align);
1036int pci_select_bars(struct pci_dev *dev, unsigned long flags);
1037bool pci_device_is_present(struct pci_dev *pdev);
1038void pci_ignore_hotplug(struct pci_dev *dev);
1039
1040
1041int pci_enable_rom(struct pci_dev *pdev);
1042void pci_disable_rom(struct pci_dev *pdev);
1043void __iomem __must_check *pci_map_rom(struct pci_dev *pdev, size_t *size);
1044void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom);
1045size_t pci_get_rom_size(struct pci_dev *pdev, void __iomem *rom, size_t size);
1046void __iomem __must_check *pci_platform_rom(struct pci_dev *pdev, size_t *size);
1047
1048
1049int pci_save_state(struct pci_dev *dev);
1050void pci_restore_state(struct pci_dev *dev);
1051struct pci_saved_state *pci_store_saved_state(struct pci_dev *dev);
1052int pci_load_saved_state(struct pci_dev *dev,
1053 struct pci_saved_state *state);
1054int pci_load_and_free_saved_state(struct pci_dev *dev,
1055 struct pci_saved_state **state);
1056struct pci_cap_saved_state *pci_find_saved_cap(struct pci_dev *dev, char cap);
1057struct pci_cap_saved_state *pci_find_saved_ext_cap(struct pci_dev *dev,
1058 u16 cap);
1059int pci_add_cap_save_buffer(struct pci_dev *dev, char cap, unsigned int size);
1060int pci_add_ext_cap_save_buffer(struct pci_dev *dev,
1061 u16 cap, unsigned int size);
1062int __pci_complete_power_transition(struct pci_dev *dev, pci_power_t state);
1063int pci_set_power_state(struct pci_dev *dev, pci_power_t state);
1064pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state);
1065bool pci_pme_capable(struct pci_dev *dev, pci_power_t state);
1066void pci_pme_active(struct pci_dev *dev, bool enable);
1067int __pci_enable_wake(struct pci_dev *dev, pci_power_t state,
1068 bool runtime, bool enable);
1069int pci_wake_from_d3(struct pci_dev *dev, bool enable);
1070int pci_prepare_to_sleep(struct pci_dev *dev);
1071int pci_back_from_sleep(struct pci_dev *dev);
1072bool pci_dev_run_wake(struct pci_dev *dev);
1073bool pci_check_pme_status(struct pci_dev *dev);
1074void pci_pme_wakeup_bus(struct pci_bus *bus);
1075
1076static inline int pci_enable_wake(struct pci_dev *dev, pci_power_t state,
1077 bool enable)
1078{
1079 return __pci_enable_wake(dev, state, false, enable);
1080}
1081
1082
1083int pci_save_vc_state(struct pci_dev *dev);
1084void pci_restore_vc_state(struct pci_dev *dev);
1085void pci_allocate_vc_save_buffers(struct pci_dev *dev);
1086
1087
1088void set_pcie_port_type(struct pci_dev *pdev);
1089void set_pcie_hotplug_bridge(struct pci_dev *pdev);
1090
1091
1092int pci_bus_find_capability(struct pci_bus *bus, unsigned int devfn, int cap);
1093unsigned int pci_rescan_bus_bridge_resize(struct pci_dev *bridge);
1094unsigned int pci_rescan_bus(struct pci_bus *bus);
1095void pci_lock_rescan_remove(void);
1096void pci_unlock_rescan_remove(void);
1097
1098
1099ssize_t pci_read_vpd(struct pci_dev *dev, loff_t pos, size_t count, void *buf);
1100ssize_t pci_write_vpd(struct pci_dev *dev, loff_t pos, size_t count, const void *buf);
1101
1102
1103resource_size_t pcibios_retrieve_fw_addr(struct pci_dev *dev, int idx);
1104void pci_bus_assign_resources(const struct pci_bus *bus);
1105void pci_bus_size_bridges(struct pci_bus *bus);
1106int pci_claim_resource(struct pci_dev *, int);
1107int pci_claim_bridge_resource(struct pci_dev *bridge, int i);
1108void pci_assign_unassigned_resources(void);
1109void pci_assign_unassigned_bridge_resources(struct pci_dev *bridge);
1110void pci_assign_unassigned_bus_resources(struct pci_bus *bus);
1111void pci_assign_unassigned_root_bus_resources(struct pci_bus *bus);
1112void pdev_enable_device(struct pci_dev *);
1113int pci_enable_resources(struct pci_dev *, int mask);
1114void pci_fixup_irqs(u8 (*)(struct pci_dev *, u8 *),
1115 int (*)(const struct pci_dev *, u8, u8));
1116#define HAVE_PCI_REQ_REGIONS 2
1117int __must_check pci_request_regions(struct pci_dev *, const char *);
1118int __must_check pci_request_regions_exclusive(struct pci_dev *, const char *);
1119void pci_release_regions(struct pci_dev *);
1120int __must_check pci_request_region(struct pci_dev *, int, const char *);
1121int __must_check pci_request_region_exclusive(struct pci_dev *, int, const char *);
1122void pci_release_region(struct pci_dev *, int);
1123int pci_request_selected_regions(struct pci_dev *, int, const char *);
1124int pci_request_selected_regions_exclusive(struct pci_dev *, int, const char *);
1125void pci_release_selected_regions(struct pci_dev *, int);
1126
1127
1128struct pci_bus *pci_bus_get(struct pci_bus *bus);
1129void pci_bus_put(struct pci_bus *bus);
1130void pci_add_resource(struct list_head *resources, struct resource *res);
1131void pci_add_resource_offset(struct list_head *resources, struct resource *res,
1132 resource_size_t offset);
1133void pci_free_resource_list(struct list_head *resources);
1134void pci_bus_add_resource(struct pci_bus *bus, struct resource *res, unsigned int flags);
1135struct resource *pci_bus_resource_n(const struct pci_bus *bus, int n);
1136void pci_bus_remove_resources(struct pci_bus *bus);
1137
1138#define pci_bus_for_each_resource(bus, res, i) \
1139 for (i = 0; \
1140 (res = pci_bus_resource_n(bus, i)) || i < PCI_BRIDGE_RESOURCE_NUM; \
1141 i++)
1142
1143int __must_check pci_bus_alloc_resource(struct pci_bus *bus,
1144 struct resource *res, resource_size_t size,
1145 resource_size_t align, resource_size_t min,
1146 unsigned long type_mask,
1147 resource_size_t (*alignf)(void *,
1148 const struct resource *,
1149 resource_size_t,
1150 resource_size_t),
1151 void *alignf_data);
1152
1153
1154int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr);
1155
1156static inline pci_bus_addr_t pci_bus_address(struct pci_dev *pdev, int bar)
1157{
1158 struct pci_bus_region region;
1159
1160 pcibios_resource_to_bus(pdev->bus, ®ion, &pdev->resource[bar]);
1161 return region.start;
1162}
1163
1164
1165int __must_check __pci_register_driver(struct pci_driver *, struct module *,
1166 const char *mod_name);
1167
1168
1169
1170
1171#define pci_register_driver(driver) \
1172 __pci_register_driver(driver, THIS_MODULE, KBUILD_MODNAME)
1173
1174void pci_unregister_driver(struct pci_driver *dev);
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184#define module_pci_driver(__pci_driver) \
1185 module_driver(__pci_driver, pci_register_driver, \
1186 pci_unregister_driver)
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196#define builtin_pci_driver(__pci_driver) \
1197 builtin_driver(__pci_driver, pci_register_driver)
1198
1199struct pci_driver *pci_dev_driver(const struct pci_dev *dev);
1200int pci_add_dynid(struct pci_driver *drv,
1201 unsigned int vendor, unsigned int device,
1202 unsigned int subvendor, unsigned int subdevice,
1203 unsigned int class, unsigned int class_mask,
1204 unsigned long driver_data);
1205const struct pci_device_id *pci_match_id(const struct pci_device_id *ids,
1206 struct pci_dev *dev);
1207int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max,
1208 int pass);
1209
1210void pci_walk_bus(struct pci_bus *top, int (*cb)(struct pci_dev *, void *),
1211 void *userdata);
1212int pci_cfg_space_size(struct pci_dev *dev);
1213unsigned char pci_bus_max_busnr(struct pci_bus *bus);
1214void pci_setup_bridge(struct pci_bus *bus);
1215resource_size_t pcibios_window_alignment(struct pci_bus *bus,
1216 unsigned long type);
1217resource_size_t pcibios_iov_resource_alignment(struct pci_dev *dev, int resno);
1218
1219#define PCI_VGA_STATE_CHANGE_BRIDGE (1 << 0)
1220#define PCI_VGA_STATE_CHANGE_DECODES (1 << 1)
1221
1222int pci_set_vga_state(struct pci_dev *pdev, bool decode,
1223 unsigned int command_bits, u32 flags);
1224
1225
1226#include <linux/pci-dma.h>
1227#include <linux/dmapool.h>
1228
1229#define pci_pool dma_pool
1230#define pci_pool_create(name, pdev, size, align, allocation) \
1231 dma_pool_create(name, &pdev->dev, size, align, allocation)
1232#define pci_pool_destroy(pool) dma_pool_destroy(pool)
1233#define pci_pool_alloc(pool, flags, handle) dma_pool_alloc(pool, flags, handle)
1234#define pci_pool_zalloc(pool, flags, handle) \
1235 dma_pool_zalloc(pool, flags, handle)
1236#define pci_pool_free(pool, vaddr, addr) dma_pool_free(pool, vaddr, addr)
1237
1238struct msix_entry {
1239 u32 vector;
1240 u16 entry;
1241};
1242
1243#ifdef CONFIG_PCI_MSI
1244int pci_msi_vec_count(struct pci_dev *dev);
1245void pci_msi_shutdown(struct pci_dev *dev);
1246void pci_disable_msi(struct pci_dev *dev);
1247int pci_msix_vec_count(struct pci_dev *dev);
1248int pci_enable_msix(struct pci_dev *dev, struct msix_entry *entries, int nvec);
1249void pci_msix_shutdown(struct pci_dev *dev);
1250void pci_disable_msix(struct pci_dev *dev);
1251void pci_restore_msi_state(struct pci_dev *dev);
1252int pci_msi_enabled(void);
1253int pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec);
1254static inline int pci_enable_msi_exact(struct pci_dev *dev, int nvec)
1255{
1256 int rc = pci_enable_msi_range(dev, nvec, nvec);
1257 if (rc < 0)
1258 return rc;
1259 return 0;
1260}
1261int pci_enable_msix_range(struct pci_dev *dev, struct msix_entry *entries,
1262 int minvec, int maxvec);
1263static inline int pci_enable_msix_exact(struct pci_dev *dev,
1264 struct msix_entry *entries, int nvec)
1265{
1266 int rc = pci_enable_msix_range(dev, entries, nvec, nvec);
1267 if (rc < 0)
1268 return rc;
1269 return 0;
1270}
1271#else
1272static inline int pci_msi_vec_count(struct pci_dev *dev) { return -ENOSYS; }
1273static inline void pci_msi_shutdown(struct pci_dev *dev) { }
1274static inline void pci_disable_msi(struct pci_dev *dev) { }
1275static inline int pci_msix_vec_count(struct pci_dev *dev) { return -ENOSYS; }
1276static inline int pci_enable_msix(struct pci_dev *dev,
1277 struct msix_entry *entries, int nvec)
1278{ return -ENOSYS; }
1279static inline void pci_msix_shutdown(struct pci_dev *dev) { }
1280static inline void pci_disable_msix(struct pci_dev *dev) { }
1281static inline void pci_restore_msi_state(struct pci_dev *dev) { }
1282static inline int pci_msi_enabled(void) { return 0; }
1283static inline int pci_enable_msi_range(struct pci_dev *dev, int minvec,
1284 int maxvec)
1285{ return -ENOSYS; }
1286static inline int pci_enable_msi_exact(struct pci_dev *dev, int nvec)
1287{ return -ENOSYS; }
1288static inline int pci_enable_msix_range(struct pci_dev *dev,
1289 struct msix_entry *entries, int minvec, int maxvec)
1290{ return -ENOSYS; }
1291static inline int pci_enable_msix_exact(struct pci_dev *dev,
1292 struct msix_entry *entries, int nvec)
1293{ return -ENOSYS; }
1294#endif
1295
1296#ifdef CONFIG_PCIEPORTBUS
1297extern bool pcie_ports_disabled;
1298extern bool pcie_ports_auto;
1299#else
1300#define pcie_ports_disabled true
1301#define pcie_ports_auto false
1302#endif
1303
1304#ifdef CONFIG_PCIEASPM
1305bool pcie_aspm_support_enabled(void);
1306#else
1307static inline bool pcie_aspm_support_enabled(void) { return false; }
1308#endif
1309
1310#ifdef CONFIG_PCIEAER
1311void pci_no_aer(void);
1312bool pci_aer_available(void);
1313#else
1314static inline void pci_no_aer(void) { }
1315static inline bool pci_aer_available(void) { return false; }
1316#endif
1317
1318#ifdef CONFIG_PCIE_ECRC
1319void pcie_set_ecrc_checking(struct pci_dev *dev);
1320void pcie_ecrc_get_policy(char *str);
1321#else
1322static inline void pcie_set_ecrc_checking(struct pci_dev *dev) { }
1323static inline void pcie_ecrc_get_policy(char *str) { }
1324#endif
1325
1326#define pci_enable_msi(pdev) pci_enable_msi_exact(pdev, 1)
1327
1328#ifdef CONFIG_HT_IRQ
1329
1330int ht_create_irq(struct pci_dev *dev, int idx);
1331void ht_destroy_irq(unsigned int irq);
1332#endif
1333
1334#ifdef CONFIG_PCI_ATS
1335
1336void pci_ats_init(struct pci_dev *dev);
1337int pci_enable_ats(struct pci_dev *dev, int ps);
1338void pci_disable_ats(struct pci_dev *dev);
1339int pci_ats_queue_depth(struct pci_dev *dev);
1340#else
1341static inline void pci_ats_init(struct pci_dev *d) { }
1342static inline int pci_enable_ats(struct pci_dev *d, int ps) { return -ENODEV; }
1343static inline void pci_disable_ats(struct pci_dev *d) { }
1344static inline int pci_ats_queue_depth(struct pci_dev *d) { return -ENODEV; }
1345#endif
1346
1347void pci_cfg_access_lock(struct pci_dev *dev);
1348bool pci_cfg_access_trylock(struct pci_dev *dev);
1349void pci_cfg_access_unlock(struct pci_dev *dev);
1350
1351
1352
1353
1354
1355
1356#ifdef CONFIG_PCI_DOMAINS
1357extern int pci_domains_supported;
1358int pci_get_new_domain_nr(void);
1359#else
1360enum { pci_domains_supported = 0 };
1361static inline int pci_domain_nr(struct pci_bus *bus) { return 0; }
1362static inline int pci_proc_domain(struct pci_bus *bus) { return 0; }
1363static inline int pci_get_new_domain_nr(void) { return -ENOSYS; }
1364#endif
1365
1366
1367
1368
1369
1370
1371#ifdef CONFIG_PCI_DOMAINS_GENERIC
1372static inline int pci_domain_nr(struct pci_bus *bus)
1373{
1374 return bus->domain_nr;
1375}
1376void pci_bus_assign_domain_nr(struct pci_bus *bus, struct device *parent);
1377#else
1378static inline void pci_bus_assign_domain_nr(struct pci_bus *bus,
1379 struct device *parent)
1380{
1381}
1382#endif
1383
1384
1385typedef int (*arch_set_vga_state_t)(struct pci_dev *pdev, bool decode,
1386 unsigned int command_bits, u32 flags);
1387void pci_register_set_vga_state(arch_set_vga_state_t func);
1388
1389#else
1390
1391
1392
1393
1394
1395
1396#define _PCI_NOP(o, s, t) \
1397 static inline int pci_##o##_config_##s(struct pci_dev *dev, \
1398 int where, t val) \
1399 { return PCIBIOS_FUNC_NOT_SUPPORTED; }
1400
1401#define _PCI_NOP_ALL(o, x) _PCI_NOP(o, byte, u8 x) \
1402 _PCI_NOP(o, word, u16 x) \
1403 _PCI_NOP(o, dword, u32 x)
1404_PCI_NOP_ALL(read, *)
1405_PCI_NOP_ALL(write,)
1406
1407static inline struct pci_dev *pci_get_device(unsigned int vendor,
1408 unsigned int device,
1409 struct pci_dev *from)
1410{ return NULL; }
1411
1412static inline struct pci_dev *pci_get_subsys(unsigned int vendor,
1413 unsigned int device,
1414 unsigned int ss_vendor,
1415 unsigned int ss_device,
1416 struct pci_dev *from)
1417{ return NULL; }
1418
1419static inline struct pci_dev *pci_get_class(unsigned int class,
1420 struct pci_dev *from)
1421{ return NULL; }
1422
1423#define pci_dev_present(ids) (0)
1424#define no_pci_devices() (1)
1425#define pci_dev_put(dev) do { } while (0)
1426
1427static inline void pci_set_master(struct pci_dev *dev) { }
1428static inline int pci_enable_device(struct pci_dev *dev) { return -EIO; }
1429static inline void pci_disable_device(struct pci_dev *dev) { }
1430static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask)
1431{ return -EIO; }
1432static inline int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask)
1433{ return -EIO; }
1434static inline int pci_set_dma_max_seg_size(struct pci_dev *dev,
1435 unsigned int size)
1436{ return -EIO; }
1437static inline int pci_set_dma_seg_boundary(struct pci_dev *dev,
1438 unsigned long mask)
1439{ return -EIO; }
1440static inline int pci_assign_resource(struct pci_dev *dev, int i)
1441{ return -EBUSY; }
1442static inline int __pci_register_driver(struct pci_driver *drv,
1443 struct module *owner)
1444{ return 0; }
1445static inline int pci_register_driver(struct pci_driver *drv)
1446{ return 0; }
1447static inline void pci_unregister_driver(struct pci_driver *drv) { }
1448static inline int pci_find_capability(struct pci_dev *dev, int cap)
1449{ return 0; }
1450static inline int pci_find_next_capability(struct pci_dev *dev, u8 post,
1451 int cap)
1452{ return 0; }
1453static inline int pci_find_ext_capability(struct pci_dev *dev, int cap)
1454{ return 0; }
1455
1456
1457static inline int pci_save_state(struct pci_dev *dev) { return 0; }
1458static inline void pci_restore_state(struct pci_dev *dev) { }
1459static inline int pci_set_power_state(struct pci_dev *dev, pci_power_t state)
1460{ return 0; }
1461static inline int pci_wake_from_d3(struct pci_dev *dev, bool enable)
1462{ return 0; }
1463static inline pci_power_t pci_choose_state(struct pci_dev *dev,
1464 pm_message_t state)
1465{ return PCI_D0; }
1466static inline int pci_enable_wake(struct pci_dev *dev, pci_power_t state,
1467 int enable)
1468{ return 0; }
1469
1470static inline int pci_request_regions(struct pci_dev *dev, const char *res_name)
1471{ return -EIO; }
1472static inline void pci_release_regions(struct pci_dev *dev) { }
1473
1474static inline void pci_block_cfg_access(struct pci_dev *dev) { }
1475static inline int pci_block_cfg_access_in_atomic(struct pci_dev *dev)
1476{ return 0; }
1477static inline void pci_unblock_cfg_access(struct pci_dev *dev) { }
1478
1479static inline struct pci_bus *pci_find_next_bus(const struct pci_bus *from)
1480{ return NULL; }
1481static inline struct pci_dev *pci_get_slot(struct pci_bus *bus,
1482 unsigned int devfn)
1483{ return NULL; }
1484static inline struct pci_dev *pci_get_bus_and_slot(unsigned int bus,
1485 unsigned int devfn)
1486{ return NULL; }
1487
1488static inline int pci_domain_nr(struct pci_bus *bus) { return 0; }
1489static inline struct pci_dev *pci_dev_get(struct pci_dev *dev) { return NULL; }
1490static inline int pci_get_new_domain_nr(void) { return -ENOSYS; }
1491
1492#define dev_is_pci(d) (false)
1493#define dev_is_pf(d) (false)
1494#define dev_num_vf(d) (0)
1495#endif
1496
1497
1498
1499#include <asm/pci.h>
1500
1501
1502
1503#define pci_resource_start(dev, bar) ((dev)->resource[(bar)].start)
1504#define pci_resource_end(dev, bar) ((dev)->resource[(bar)].end)
1505#define pci_resource_flags(dev, bar) ((dev)->resource[(bar)].flags)
1506#define pci_resource_len(dev,bar) \
1507 ((pci_resource_start((dev), (bar)) == 0 && \
1508 pci_resource_end((dev), (bar)) == \
1509 pci_resource_start((dev), (bar))) ? 0 : \
1510 \
1511 (pci_resource_end((dev), (bar)) - \
1512 pci_resource_start((dev), (bar)) + 1))
1513
1514
1515
1516
1517
1518static inline void *pci_get_drvdata(struct pci_dev *pdev)
1519{
1520 return dev_get_drvdata(&pdev->dev);
1521}
1522
1523static inline void pci_set_drvdata(struct pci_dev *pdev, void *data)
1524{
1525 dev_set_drvdata(&pdev->dev, data);
1526}
1527
1528
1529
1530
1531static inline const char *pci_name(const struct pci_dev *pdev)
1532{
1533 return dev_name(&pdev->dev);
1534}
1535
1536
1537
1538
1539
1540#ifndef HAVE_ARCH_PCI_RESOURCE_TO_USER
1541static inline void pci_resource_to_user(const struct pci_dev *dev, int bar,
1542 const struct resource *rsrc, resource_size_t *start,
1543 resource_size_t *end)
1544{
1545 *start = rsrc->start;
1546 *end = rsrc->end;
1547}
1548#endif
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558struct pci_fixup {
1559 u16 vendor;
1560 u16 device;
1561 u32 class;
1562 unsigned int class_shift;
1563 void (*hook)(struct pci_dev *dev);
1564};
1565
1566enum pci_fixup_pass {
1567 pci_fixup_early,
1568 pci_fixup_header,
1569 pci_fixup_final,
1570 pci_fixup_enable,
1571 pci_fixup_resume,
1572 pci_fixup_suspend,
1573 pci_fixup_resume_early,
1574 pci_fixup_suspend_late,
1575};
1576
1577
1578#define DECLARE_PCI_FIXUP_SECTION(section, name, vendor, device, class, \
1579 class_shift, hook) \
1580 static const struct pci_fixup __PASTE(__pci_fixup_##name,__LINE__) __used \
1581 __attribute__((__section__(#section), aligned((sizeof(void *))))) \
1582 = { vendor, device, class, class_shift, hook };
1583
1584#define DECLARE_PCI_FIXUP_CLASS_EARLY(vendor, device, class, \
1585 class_shift, hook) \
1586 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_early, \
1587 hook, vendor, device, class, class_shift, hook)
1588#define DECLARE_PCI_FIXUP_CLASS_HEADER(vendor, device, class, \
1589 class_shift, hook) \
1590 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_header, \
1591 hook, vendor, device, class, class_shift, hook)
1592#define DECLARE_PCI_FIXUP_CLASS_FINAL(vendor, device, class, \
1593 class_shift, hook) \
1594 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_final, \
1595 hook, vendor, device, class, class_shift, hook)
1596#define DECLARE_PCI_FIXUP_CLASS_ENABLE(vendor, device, class, \
1597 class_shift, hook) \
1598 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_enable, \
1599 hook, vendor, device, class, class_shift, hook)
1600#define DECLARE_PCI_FIXUP_CLASS_RESUME(vendor, device, class, \
1601 class_shift, hook) \
1602 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_resume, \
1603 resume##hook, vendor, device, class, \
1604 class_shift, hook)
1605#define DECLARE_PCI_FIXUP_CLASS_RESUME_EARLY(vendor, device, class, \
1606 class_shift, hook) \
1607 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_resume_early, \
1608 resume_early##hook, vendor, device, \
1609 class, class_shift, hook)
1610#define DECLARE_PCI_FIXUP_CLASS_SUSPEND(vendor, device, class, \
1611 class_shift, hook) \
1612 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_suspend, \
1613 suspend##hook, vendor, device, class, \
1614 class_shift, hook)
1615#define DECLARE_PCI_FIXUP_CLASS_SUSPEND_LATE(vendor, device, class, \
1616 class_shift, hook) \
1617 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_suspend_late, \
1618 suspend_late##hook, vendor, device, \
1619 class, class_shift, hook)
1620
1621#define DECLARE_PCI_FIXUP_EARLY(vendor, device, hook) \
1622 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_early, \
1623 hook, vendor, device, PCI_ANY_ID, 0, hook)
1624#define DECLARE_PCI_FIXUP_HEADER(vendor, device, hook) \
1625 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_header, \
1626 hook, vendor, device, PCI_ANY_ID, 0, hook)
1627#define DECLARE_PCI_FIXUP_FINAL(vendor, device, hook) \
1628 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_final, \
1629 hook, vendor, device, PCI_ANY_ID, 0, hook)
1630#define DECLARE_PCI_FIXUP_ENABLE(vendor, device, hook) \
1631 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_enable, \
1632 hook, vendor, device, PCI_ANY_ID, 0, hook)
1633#define DECLARE_PCI_FIXUP_RESUME(vendor, device, hook) \
1634 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_resume, \
1635 resume##hook, vendor, device, \
1636 PCI_ANY_ID, 0, hook)
1637#define DECLARE_PCI_FIXUP_RESUME_EARLY(vendor, device, hook) \
1638 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_resume_early, \
1639 resume_early##hook, vendor, device, \
1640 PCI_ANY_ID, 0, hook)
1641#define DECLARE_PCI_FIXUP_SUSPEND(vendor, device, hook) \
1642 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_suspend, \
1643 suspend##hook, vendor, device, \
1644 PCI_ANY_ID, 0, hook)
1645#define DECLARE_PCI_FIXUP_SUSPEND_LATE(vendor, device, hook) \
1646 DECLARE_PCI_FIXUP_SECTION(.pci_fixup_suspend_late, \
1647 suspend_late##hook, vendor, device, \
1648 PCI_ANY_ID, 0, hook)
1649
1650#ifdef CONFIG_PCI_QUIRKS
1651void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev);
1652int pci_dev_specific_acs_enabled(struct pci_dev *dev, u16 acs_flags);
1653void pci_dev_specific_enable_acs(struct pci_dev *dev);
1654#else
1655static inline void pci_fixup_device(enum pci_fixup_pass pass,
1656 struct pci_dev *dev) { }
1657static inline int pci_dev_specific_acs_enabled(struct pci_dev *dev,
1658 u16 acs_flags)
1659{
1660 return -ENOTTY;
1661}
1662static inline void pci_dev_specific_enable_acs(struct pci_dev *dev) { }
1663#endif
1664
1665void __iomem *pcim_iomap(struct pci_dev *pdev, int bar, unsigned long maxlen);
1666void pcim_iounmap(struct pci_dev *pdev, void __iomem *addr);
1667void __iomem * const *pcim_iomap_table(struct pci_dev *pdev);
1668int pcim_iomap_regions(struct pci_dev *pdev, int mask, const char *name);
1669int pcim_iomap_regions_request_all(struct pci_dev *pdev, int mask,
1670 const char *name);
1671void pcim_iounmap_regions(struct pci_dev *pdev, int mask);
1672
1673extern int pci_pci_problems;
1674#define PCIPCI_FAIL 1
1675#define PCIPCI_TRITON 2
1676#define PCIPCI_NATOMA 4
1677#define PCIPCI_VIAETBF 8
1678#define PCIPCI_VSFX 16
1679#define PCIPCI_ALIMAGIK 32
1680#define PCIAGP_FAIL 64
1681
1682extern unsigned long pci_cardbus_io_size;
1683extern unsigned long pci_cardbus_mem_size;
1684extern u8 pci_dfl_cache_line_size;
1685extern u8 pci_cache_line_size;
1686
1687extern unsigned long pci_hotplug_io_size;
1688extern unsigned long pci_hotplug_mem_size;
1689
1690
1691void pcibios_disable_device(struct pci_dev *dev);
1692void pcibios_set_master(struct pci_dev *dev);
1693int pcibios_set_pcie_reset_state(struct pci_dev *dev,
1694 enum pcie_reset_state state);
1695int pcibios_add_device(struct pci_dev *dev);
1696void pcibios_release_device(struct pci_dev *dev);
1697void pcibios_penalize_isa_irq(int irq, int active);
1698int pcibios_alloc_irq(struct pci_dev *dev);
1699void pcibios_free_irq(struct pci_dev *dev);
1700
1701#ifdef CONFIG_HIBERNATE_CALLBACKS
1702extern struct dev_pm_ops pcibios_pm_ops;
1703#endif
1704
1705#ifdef CONFIG_PCI_MMCONFIG
1706void __init pci_mmcfg_early_init(void);
1707void __init pci_mmcfg_late_init(void);
1708#else
1709static inline void pci_mmcfg_early_init(void) { }
1710static inline void pci_mmcfg_late_init(void) { }
1711#endif
1712
1713int pci_ext_cfg_avail(void);
1714
1715void __iomem *pci_ioremap_bar(struct pci_dev *pdev, int bar);
1716void __iomem *pci_ioremap_wc_bar(struct pci_dev *pdev, int bar);
1717
1718#ifdef CONFIG_PCI_IOV
1719int pci_iov_virtfn_bus(struct pci_dev *dev, int id);
1720int pci_iov_virtfn_devfn(struct pci_dev *dev, int id);
1721
1722int pci_enable_sriov(struct pci_dev *dev, int nr_virtfn);
1723void pci_disable_sriov(struct pci_dev *dev);
1724int pci_num_vf(struct pci_dev *dev);
1725int pci_vfs_assigned(struct pci_dev *dev);
1726int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs);
1727int pci_sriov_get_totalvfs(struct pci_dev *dev);
1728resource_size_t pci_iov_resource_size(struct pci_dev *dev, int resno);
1729#else
1730static inline int pci_iov_virtfn_bus(struct pci_dev *dev, int id)
1731{
1732 return -ENOSYS;
1733}
1734static inline int pci_iov_virtfn_devfn(struct pci_dev *dev, int id)
1735{
1736 return -ENOSYS;
1737}
1738static inline int pci_enable_sriov(struct pci_dev *dev, int nr_virtfn)
1739{ return -ENODEV; }
1740static inline void pci_disable_sriov(struct pci_dev *dev) { }
1741static inline int pci_num_vf(struct pci_dev *dev) { return 0; }
1742static inline int pci_vfs_assigned(struct pci_dev *dev)
1743{ return 0; }
1744static inline int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs)
1745{ return 0; }
1746static inline int pci_sriov_get_totalvfs(struct pci_dev *dev)
1747{ return 0; }
1748static inline resource_size_t pci_iov_resource_size(struct pci_dev *dev, int resno)
1749{ return 0; }
1750#endif
1751
1752#if defined(CONFIG_HOTPLUG_PCI) || defined(CONFIG_HOTPLUG_PCI_MODULE)
1753void pci_hp_create_module_link(struct pci_slot *pci_slot);
1754void pci_hp_remove_module_link(struct pci_slot *pci_slot);
1755#endif
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768static inline int pci_pcie_cap(struct pci_dev *dev)
1769{
1770 return dev->pcie_cap;
1771}
1772
1773
1774
1775
1776
1777
1778
1779static inline bool pci_is_pcie(struct pci_dev *dev)
1780{
1781 return pci_pcie_cap(dev);
1782}
1783
1784
1785
1786
1787
1788static inline u16 pcie_caps_reg(const struct pci_dev *dev)
1789{
1790 return dev->pcie_flags_reg;
1791}
1792
1793
1794
1795
1796
1797static inline int pci_pcie_type(const struct pci_dev *dev)
1798{
1799 return (pcie_caps_reg(dev) & PCI_EXP_FLAGS_TYPE) >> 4;
1800}
1801
1802void pci_request_acs(void);
1803bool pci_acs_enabled(struct pci_dev *pdev, u16 acs_flags);
1804bool pci_acs_path_enabled(struct pci_dev *start,
1805 struct pci_dev *end, u16 acs_flags);
1806
1807#define PCI_VPD_LRDT 0x80
1808#define PCI_VPD_LRDT_ID(x) ((x) | PCI_VPD_LRDT)
1809
1810
1811#define PCI_VPD_LTIN_ID_STRING 0x02
1812#define PCI_VPD_LTIN_RO_DATA 0x10
1813#define PCI_VPD_LTIN_RW_DATA 0x11
1814
1815#define PCI_VPD_LRDT_ID_STRING PCI_VPD_LRDT_ID(PCI_VPD_LTIN_ID_STRING)
1816#define PCI_VPD_LRDT_RO_DATA PCI_VPD_LRDT_ID(PCI_VPD_LTIN_RO_DATA)
1817#define PCI_VPD_LRDT_RW_DATA PCI_VPD_LRDT_ID(PCI_VPD_LTIN_RW_DATA)
1818
1819
1820#define PCI_VPD_STIN_END 0x78
1821
1822#define PCI_VPD_SRDT_END PCI_VPD_STIN_END
1823
1824#define PCI_VPD_SRDT_TIN_MASK 0x78
1825#define PCI_VPD_SRDT_LEN_MASK 0x07
1826
1827#define PCI_VPD_LRDT_TAG_SIZE 3
1828#define PCI_VPD_SRDT_TAG_SIZE 1
1829
1830#define PCI_VPD_INFO_FLD_HDR_SIZE 3
1831
1832#define PCI_VPD_RO_KEYWORD_PARTNO "PN"
1833#define PCI_VPD_RO_KEYWORD_MFR_ID "MN"
1834#define PCI_VPD_RO_KEYWORD_VENDOR0 "V0"
1835#define PCI_VPD_RO_KEYWORD_CHKSUM "RV"
1836
1837
1838
1839
1840
1841
1842
1843static inline u16 pci_vpd_lrdt_size(const u8 *lrdt)
1844{
1845 return (u16)lrdt[1] + ((u16)lrdt[2] << 8);
1846}
1847
1848
1849
1850
1851
1852
1853
1854static inline u8 pci_vpd_srdt_size(const u8 *srdt)
1855{
1856 return (*srdt) & PCI_VPD_SRDT_LEN_MASK;
1857}
1858
1859
1860
1861
1862
1863
1864
1865static inline u8 pci_vpd_info_field_size(const u8 *info_field)
1866{
1867 return info_field[2];
1868}
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880int pci_vpd_find_tag(const u8 *buf, unsigned int off, unsigned int len, u8 rdt);
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892int pci_vpd_find_info_keyword(const u8 *buf, unsigned int off,
1893 unsigned int len, const char *kw);
1894
1895
1896#ifdef CONFIG_OF
1897struct device_node;
1898struct irq_domain;
1899void pci_set_of_node(struct pci_dev *dev);
1900void pci_release_of_node(struct pci_dev *dev);
1901void pci_set_bus_of_node(struct pci_bus *bus);
1902void pci_release_bus_of_node(struct pci_bus *bus);
1903struct irq_domain *pci_host_bridge_of_msi_domain(struct pci_bus *bus);
1904
1905
1906struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus);
1907
1908static inline struct device_node *
1909pci_device_to_OF_node(const struct pci_dev *pdev)
1910{
1911 return pdev ? pdev->dev.of_node : NULL;
1912}
1913
1914static inline struct device_node *pci_bus_to_OF_node(struct pci_bus *bus)
1915{
1916 return bus ? bus->dev.of_node : NULL;
1917}
1918
1919#else
1920static inline void pci_set_of_node(struct pci_dev *dev) { }
1921static inline void pci_release_of_node(struct pci_dev *dev) { }
1922static inline void pci_set_bus_of_node(struct pci_bus *bus) { }
1923static inline void pci_release_bus_of_node(struct pci_bus *bus) { }
1924static inline struct device_node *
1925pci_device_to_OF_node(const struct pci_dev *pdev) { return NULL; }
1926static inline struct irq_domain *
1927pci_host_bridge_of_msi_domain(struct pci_bus *bus) { return NULL; }
1928#endif
1929
1930#ifdef CONFIG_ACPI
1931struct irq_domain *pci_host_bridge_acpi_msi_domain(struct pci_bus *bus);
1932
1933void
1934pci_msi_register_fwnode_provider(struct fwnode_handle *(*fn)(struct device *));
1935#else
1936static inline struct irq_domain *
1937pci_host_bridge_acpi_msi_domain(struct pci_bus *bus) { return NULL; }
1938#endif
1939
1940#ifdef CONFIG_EEH
1941static inline struct eeh_dev *pci_dev_to_eeh_dev(struct pci_dev *pdev)
1942{
1943 return pdev->dev.archdata.edev;
1944}
1945#endif
1946
1947int pci_for_each_dma_alias(struct pci_dev *pdev,
1948 int (*fn)(struct pci_dev *pdev,
1949 u16 alias, void *data), void *data);
1950
1951
1952static inline void pci_set_dev_assigned(struct pci_dev *pdev)
1953{
1954 pdev->dev_flags |= PCI_DEV_FLAGS_ASSIGNED;
1955}
1956static inline void pci_clear_dev_assigned(struct pci_dev *pdev)
1957{
1958 pdev->dev_flags &= ~PCI_DEV_FLAGS_ASSIGNED;
1959}
1960static inline bool pci_is_dev_assigned(struct pci_dev *pdev)
1961{
1962 return (pdev->dev_flags & PCI_DEV_FLAGS_ASSIGNED) == PCI_DEV_FLAGS_ASSIGNED;
1963}
1964
1965
1966
1967
1968
1969
1970
1971static inline bool pci_ari_enabled(struct pci_bus *bus)
1972{
1973 return bus->self && bus->self->ari_enabled;
1974}
1975#endif
1976