Lines Matching full:pci
4 How To Write Linux PCI Drivers
10 The world of PCI is vast and full of (mostly unpleasant) surprises.
11 Since each CPU architecture implements different chip-sets and PCI devices
12 have different requirements (erm, "features"), the result is the PCI support
15 PCI device drivers.
25 Please send questions/comments/patches about Linux PCI API to the
26 "Linux PCI" <linux-pci@atrey.karlin.mff.cuni.cz> mailing list.
29 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)
66 For the rest look at LDD3 or <linux/pci.h> .
68 If the PCI subsystem is not configured (CONFIG_PCI is not set), most of
69 the PCI functions described below are defined as inline functions either
77 PCI device drivers call ``pci_register_driver()`` during their
81 .. kernel-doc:: include/linux/pci.h
93 New PCI IDs may be added to a device driver pci_ids table at runtime
97 /sys/bus/pci/drivers/{driver}/new_id
112 PCI devices listed in its (newly updated) pci_ids list.
114 When the driver exits, it just calls pci_unregister_driver() and the PCI layer
141 How to find PCI devices manually
144 PCI drivers should have a really good reason for not using the
145 pci_register_driver() interface to search for PCI devices.
146 The main reason PCI devices are controlled by multiple drivers
147 is because one PCI device implements several different HW services.
178 As noted in the introduction, most PCI drivers need the following steps
187 - Initialize non-PCI (i.e. LAN/SCSI/etc parts of the chip)
190 The driver can access PCI config space registers at any time.
192 that will just result in a PCI Bus Master Abort and config reads
196 Enable the PCI device
199 the PCI device by calling pci_enable_device(). This will:
225 If the PCI device can use the PCI Memory-Write-Invalidate transaction,
238 from the PCI device config space. Use the values in the pci_dev structure
239 as the PCI "bus address" might have been remapped to a "host physical"
258 Use these for address resources that are not described by "normal" PCI
273 (e.g. 32 or 64 bit) of the PCI bus master, devices with more than
279 Drivers for all PCI-X and PCIe compliant devices must call
285 Again, this includes drivers for all PCI-X and PCIe compliant devices.
286 Many 64-bit "PCI" devices (before PCI-X) and some PCI-X devices are
313 and use the devid to map IRQs to devices (remember that all PCI IRQ lines
318 IRQ lines which run from the PCI device to the Interrupt controller.
325 MSI and MSI-X are PCI capabilities. Both are "Message Signaled Interrupts"
333 causes the PCI support to program CPU vector data into the PCI device
360 PCI device shutdown
363 When a PCI device driver is being unloaded, most of the following
429 Most low level PCI device drivers support some other subsystem
449 How to access PCI config space
455 text string by pcibios_strerror. Most drivers expect that accesses to valid PCI
463 use symbolic names of locations and bits declared in <linux/pci.h>.
465 If you need to access Extended PCI Capability registers, just call
477 pci_set_power_state() Set PCI Power Management state (0=D0 ... 3=D3)
480 pci_resource_start() Returns bus start address for a given PCI region
481 pci_resource_end() Returns bus end address for a given PCI region
482 pci_resource_len() Returns the byte length of a PCI region
493 When displaying PCI device names to the user (for example when a driver wants
496 Always refer to the PCI devices by a pointer to the pci_dev structure.
497 All PCI layer functions use this identification and it's the only
517 Please DO submit new vendor/device IDs to https://pci-ids.ucw.cz/.
518 There's a mirror of the pci.ids file at https://github.com/pciutils/pciids.
525 port an old driver to the new PCI interface. They are no longer present
526 in the kernel as they aren't compatible with hotplug or PCI domains or
536 The alternative is the traditional PCI device driver that walks PCI
546 already do this. I/O Port space guarantees write transactions reach the PCI
548 to continue before the transaction reaches the PCI device. HW weenies
572 Another case to watch out for is when resetting a PCI device. Use PCI
574 handle the PCI master abort on all platforms if the PCI device is