Lines Matching refs:PCI
2 How To Write Linux PCI Drivers
8 The world of PCI is vast and full of (mostly unpleasant) surprises.
9 Since each CPU architecture implements different chip-sets and PCI devices
10 have different requirements (erm, "features"), the result is the PCI support
13 PCI device drivers.
24 Please send questions/comments/patches about Linux PCI API to the
25 "Linux PCI" <linux-pci@atrey.karlin.mff.cuni.cz> mailing list.
29 0. Structure of PCI drivers
31 PCI drivers "discover" PCI devices in a system via pci_register_driver().
32 Actually, it's the other way around. When the PCI generic code discovers
37 the PCI layer and supports online insertion/removal of devices [thus
38 supporting hot-pluggable PCI, CardBus, and Express-Card in a single driver].
42 Once the driver knows about a PCI device and takes ownership, the
51 Initialize non-PCI (i.e. LAN/SCSI/etc parts of the chip)
67 If the PCI subsystem is not configured (CONFIG_PCI is not set), most of
68 the PCI functions described below are defined as inline functions either
77 PCI device drivers call pci_register_driver() during their
90 all PCI devices which match the ID table and are not
114 of PCI Power Management and the related functions.)
122 err_handler See Documentation/PCI/pci-error-recovery.txt
137 See Appendix D of the PCI Local Bus Spec or
155 New PCI IDs may be added to a device driver pci_ids table at runtime
173 PCI devices listed in its (newly updated) pci_ids list.
175 When the driver exits, it just calls pci_unregister_driver() and the PCI layer
200 2. How to find PCI devices manually
203 PCI drivers should have a really good reason for not using the
204 pci_register_driver() interface to search for PCI devices.
205 The main reason PCI devices are controlled by multiple drivers
206 is because one PCI device implements several different HW services.
238 As noted in the introduction, most PCI drivers need the following steps
247 Initialize non-PCI (i.e. LAN/SCSI/etc parts of the chip)
250 The driver can access PCI config space registers at any time.
252 that will just result in a PCI Bus Master Abort and config reads
256 3.1 Enable the PCI device
259 the PCI device by calling pci_enable_device(). This will:
282 If the PCI device can use the PCI Memory-Write-Invalidate transaction,
295 from the PCI device config space. Use the values in the pci_dev structure
296 as the PCI "bus address" might have been remapped to a "host physical"
314 Use these for address resources that are not described by "normal" PCI
328 (e.g. 32 or 64 bit) of the PCI bus master, devices with more than
334 Drivers for all PCI-X and PCIe compliant devices must call
340 Again, this includes drivers for all PCI-X and PCIe compliant devices.
341 Many 64-bit "PCI" devices (before PCI-X) and some PCI-X devices are
368 and use the devid to map IRQs to devices (remember that all PCI IRQ lines
373 IRQ lines which run from the PCI device to the Interrupt controller.
380 MSI and MSI-X are PCI capabilities. Both are "Message Signaled Interrupts"
388 the PCI support to program CPU vector data into the PCI device
391 If your PCI device supports both, try to enable MSI-X first.
415 4. PCI device shutdown
418 When a PCI device driver is being unloaded, most of the following
484 Most low level PCI device drivers support some other subsystem
505 5. How to access PCI config space
511 string by pcibios_strerror. Most drivers expect that accesses to valid PCI
521 If you need to access Extended PCI Capability registers, just call
533 pci_set_power_state() Set PCI Power Management state (0=D0 ... 3=D3)
536 pci_resource_start() Returns bus start address for a given PCI region
537 pci_resource_end() Returns bus end address for a given PCI region
538 pci_resource_len() Returns the byte length of a PCI region
549 When displaying PCI device names to the user (for example when a driver wants
552 Always refer to the PCI devices by a pointer to the pci_dev structure.
553 All PCI layer functions use this identification and it's the only
582 port an old driver to the new PCI interface. They are no longer present
583 in the kernel as they aren't compatible with hotplug or PCI domains or
592 The alternative is the traditional PCI device driver that walks PCI
603 already do this. I/O Port space guarantees write transactions reach the PCI
605 to continue before the transaction reaches the PCI device. HW weenies
629 Another case to watch out for is when resetting a PCI device. Use PCI
631 handle the PCI master abort on all platforms if the PCI device is