#
358361 |
|
27-Feb-2020 |
kib |
MFC r358174: Add more values for PCI capabilities, PCIe extended capabilities, and subclasses.
|
#
358139 |
|
20-Feb-2020 |
kib |
MFC r358021: Fix typo.
|
#
339021 |
|
30-Sep-2018 |
slavash |
MFC r338942: Add PCIV_INVALID definition
From PCI Spec rev 2.2, 6.2.1. Device Identification: Vendor ID This field identifies the manufacturer of the device. Valid vendor identifiers are allocated by the PCI SIG to ensure uniqueness. 0FFFFh is an invalid value for Vendor ID.
Approved by: kib (mentor) Sponsored by: Mellanox Technologies
|
#
331722 |
|
29-Mar-2018 |
eadler |
Revert r330897:
This was intended to be a non-functional change. It wasn't. The commit message was thus wrong. In addition it broke arm, and merged crypto related code.
Revert with prejudice.
This revert skips files touched in r316370 since that commit was since MFCed. This revert also skips files that require $FreeBSD$ property changes.
Thank you to those who helped me get out of this mess including but not limited to gonzo, kevans, rgrimes.
Requested by: gjb (re)
|
#
331149 |
|
18-Mar-2018 |
eadler |
MFC r315190:
Add constants and descriptions for some new PCI class definitions
|
#
330897 |
|
14-Mar-2018 |
eadler |
Partial merge of the SPDX changes
These changes are incomplete but are making it difficult to determine what other changes can/should be merged.
No objections from: pfg
|
#
306520 |
|
30-Sep-2016 |
jhb |
MFC 305502: Reset PCI pass through devices via PCI-e FLR during VM start/end.
Add routines to trigger a function level reset (FLR) of a PCI-express device via the PCI-express device control register. This also includes support routines to wait for pending transactions to complete as well as calculating the maximum completion timeout permitted by a device.
Change the ppt(4) driver to reset pass through devices before attaching to a VM during startup and before detaching from a VM during shutdown.
Sponsored by: Chelsio Communications
|
#
302408 |
|
07-Jul-2016 |
gjb |
Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle. Prune svn:mergeinfo from the new branch, as nothing has been merged here.
Additional commits post-branch will follow.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
299142 |
|
05-May-2016 |
jhb |
Native PCI-express HotPlug support.
PCI-express HotPlug support is implemented via bits in the slot registers of the PCI-express capability of the downstream port along with an interrupt that triggers when bits in the slot status register change.
This is implemented for FreeBSD by adding HotPlug support to the PCI-PCI bridge driver which attaches to the virtual PCI-PCI bridges representing downstream ports on HotPlug slots. The PCI-PCI bridge driver registers an interrupt handler to receive HotPlug events. It also uses the slot registers to determine the current HotPlug state and drive an internal HotPlug state machine. For simplicty of implementation, the PCI-PCI bridge device detaches and deletes the child PCI device when a card is removed from a slot and creates and attaches a PCI child device when a card is inserted into the slot.
The PCI-PCI bridge driver provides a bus_child_present which claims that child devices are present on HotPlug-capable slots only when a card is inserted. Rather than requiring a timeout in the RC for config accesses to not-present children, the pcib_read/write_config methods fail all requests when a card is not present (or not yet ready).
These changes include support for various optional HotPlug capabilities such as a power controller, mechanical latch, electro-mechanical interlock, indicators, and an attention button. It also includes support for devices which require waiting for command completion events before initiating a subsequent HotPlug command. However, it has only been tested on ExpressCard systems which support surprise removal and have none of these optional capabilities.
PCI-express HotPlug support is conditional on the PCI_HP option which is enabled by default on arm64, x86, and powerpc.
Reviewed by: adrian, imp, vangyzen (older versions) Relnotes: yes Differential Revision: https://reviews.freebsd.org/D6136
|
#
296081 |
|
26-Feb-2016 |
wma |
Add support for Enhanced Allocation in pciconf
* Modified pciconf to print EA capability structure * Added register description to pcireg.h
Obtained from: Semihalf Sponsored by: Cavium Approved by: cognet (mentor) Reviewed by: jhb Differential revision: https://reviews.freebsd.org/D5440
|
#
294430 |
|
20-Jan-2016 |
zbb |
Fix invalid root link detection in mv_pci driver
mv_pci driver omitted slot 0, which can be valid device on Armada38x. New mechanism detects if device is root link, basing on vendor's and device's IDs. It is restricted to Armada38x; on other machines, behaviour remains the same.
Reviewed by: andrew Obtained from: Semihalf Sponsored by: Stormshield Submitted by: Bartosz Szczepanek <bsz@semihalf.com> Differential revision: https://reviews.freebsd.org/D4377
|
#
291225 |
|
23-Nov-2015 |
jhb |
Add a new -B flag for use with list mode (-l) that lists details about bridges. Currently this includes information about what resources a bridge decodes on the upstream side for use by downstream devices including bus numbers, I/O port resources, and memory resources. Windows and bus ranges are enumerated for both PCI-PCI bridges and PCI-CardBus bridges.
To simplify the implementation, all enumeration is done by reading the appropriate config space registers directly rather than querying the bridge driver in the kernel via new ioctls. This does result in a few limitations.
First, an unimplemented window in a PCI-PCI bridge cannot be accurately detected as accurate detection requires writing to the window base register. That is not safe for pciconf(8). Instead, this assumes that any window where both the base and limit read as all zeroes is unimplemented.
Second, the PCI-PCI bridge driver in a tree has a few quirks for PCI-PCI bridges that use subtractive decoding but do not indicate that via the progif config register. The list of quirks is duplicated in pciconf's source.
Reviewed by: imp MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D4171
|
#
285752 |
|
21-Jul-2015 |
zbb |
Add support for vendor specific function for PCI devid acquisition in ITS
It is possible that some HW will use different PCI devids, hence allow to replace the default domain:bus:slot:func schema by implementing and registering custom function.
Obtained from: Semihalf Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D3118
|
#
279447 |
|
28-Feb-2015 |
rstone |
Implement interface to create SR-IOV Virtual Functions
Implement the interace to create SR-IOV Virtual Functions (VFs). When a driver registers that they support SR-IOV by calling pci_setup_iov(), the SR-IOV code creates a new node in /dev/iov for that device. An ioctl can be invoked on that device to create VFs and have the driver initialize them.
At this point, allocating memory I/O windows (BARs) is not supported.
Differential Revision: https://reviews.freebsd.org/D76 Reviewed by: jhb MFC after: 1 month Sponsored by: Sandvine Inc.
|
#
279443 |
|
28-Feb-2015 |
rstone |
Add some pcib methods to get ARI-related information
Differential Revision: https://reviews.freebsd.org/D72 Reviewed by: jhb MFC after: 1 month Sponsored by: Sandvine Inc.
|
#
266468 |
|
20-May-2014 |
mav |
Add IOMMU PCI subclass, found on Tyan S8236 motherboard.
Submitted by: Dmitry Luhtionov <dmitryluhtionov@gmail.com> MFC after: 2 weeks
|
#
264011 |
|
01-Apr-2014 |
rstone |
Add support for PCIe ARI
PCIe Alternate RID Interpretation (ARI) is an optional feature that allows devices to have up to 256 different functions. It is implemented by always setting the PCI slot number to 0 and re-purposing the 5 bits used to encode the slot number to instead contain the function number. Combined with the original 3 bits allocated for the function number, this allows for 256 functions.
This is enabled by default, but it's expected to be a no-op on currently supported hardware. It's a prerequisite for supporting PCI SR-IOV, and I want the ARI support to go in early to help shake out any bugs in it. ARI can be disabled by setting the tunable hw.pci.enable_ari=0.
Reviewed by: kib MFC after: 2 months Sponsored by: Sandvine Inc.
|
#
264007 |
|
01-Apr-2014 |
rstone |
Add a method to get the PCI RID for a device.
Reviewed by: kib MFC after: 2 months Sponsored by: Sandvine Inc.
|
#
264006 |
|
01-Apr-2014 |
rstone |
Revert PCI RID changes.
My PCI RID changes somehow got intermixed with my PCI ARI patch when I committed it. I may have accidentally applied a patch to a non-clean working tree. Revert everything while I figure out what went wrong.
Pointy hat to: rstone
|
#
264001 |
|
01-Apr-2014 |
rstone |
Add a method to get the PCI Routing ID for a device
Reviewed by: kib Sponsored by: Sandvine, Inc
|
#
257071 |
|
24-Oct-2013 |
kib |
Add some definitions for the bits in root control and status PCIe cap registers.
Reviewed by: jhb Sponsored by: The FreeBSD Foundation MFC after: 1 week
|
#
250740 |
|
17-May-2013 |
kib |
Add new capability types encodings from HyperTransport I/O Link Specification revisions 3.00 and 3.10.
Submitted by: Dmitry Luhtionov <dmitryluhtionov@gmail.com> MFC after: 1 week
|
#
241758 |
|
19-Oct-2012 |
imp |
Add missing Extended Capability ID Numbers from PCIe 3.0.
|
#
240695 |
|
19-Sep-2012 |
jimharris |
Add constants for programming interfaces for NVM/solid state storage controller sub-class code.
Reference: PCI Code and ID Assignment Specification Rev 1.2
Sponsored by: Intel Inspired by: gavin MFC after: 1 week X-MFC-With: r240694
|
#
240694 |
|
19-Sep-2012 |
gavin |
Add PCI subclass for NVM Express devices.
Reference: http://www.nvmexpress.org/index.php/download_file/view/42/1/NVM_Express_1_0b.pdf section 2.1.5.
MFC after: 1 week
|
#
240680 |
|
18-Sep-2012 |
gavin |
Align the PCI Express #defines with the style used for the PCI-X #defines. This also has the advantage that it makes the names more compact, iand also allows us to correct the non-uniform naming of the PCIM_LINK_* defines, making them all consistent amongst themselves.
This is a mostly mechanical rename: s/PCIR_EXPRESS_/PCIER_/g s/PCIM_EXP_/PCIEM_/g s/PCIM_LINK_/PCIEM_LINK_/g
When this is MFC'd, #defines will be added for the old names to assist out-of-tree drivers.
Discussed with: jhb MFC after: 1 week
|
#
240602 |
|
17-Sep-2012 |
gavin |
- Add #defines for the bits within the iPCI Express PCIR_EXPRESS_LINK_CTL register - Add missing register PCIR_EXPRESS_ROOT_CAP - Correct a spelling mistake (SLAT -> SLOT) [1]
Reviewed by: jhb [1]
|
#
240473 |
|
13-Sep-2012 |
jhb |
- Add some registers defined in PCI 3.0 including new AER bits. - Add constants for the rest of the fields in the PCI-express device capability and control registers. - Tweak some of the recently added PCI-e capability constants (always use hex for offsets in config space, and include a shortened version of the relevant register in the name of field constants).
MFC after: 1 week
|
#
240150 |
|
05-Sep-2012 |
gavin |
Add #defines for the bits in the PCI Express SLOT registers. Names have been chosen based on the bit names in the PCI Express Base Specification 3.0, and to match the predominant style of the existing bit definitions.
MFC after: 1 week
|
#
232704 |
|
08-Mar-2012 |
kan |
Save more of config space for PCI Express and PCI-X devices.
Expand pci_save_state and pci_restore_state to save more of the config state for PCI Express and PCI-X devices. Various writable control registers are present in PCI Express that can potentially be lost over suspend/resume cycle.
This change is modeled after similar functionality in Linux.
Reviewed by: wlosh,jhb MFC after: 1 month
|
#
230822 |
|
31-Jan-2012 |
jhb |
Fix a spelling mistake in the surprise link down error constant.
Submitted by: glebius
|
#
230774 |
|
30-Jan-2012 |
jhb |
Add a constant for the PCI-e surprise link down uncorrectable error.
|
#
228161 |
|
30-Nov-2011 |
jhb |
Add a constant for the Advisory Non-Fatal Error bit in AER corrected error status and mask.
|
#
222018 |
|
17-May-2011 |
ru |
Renamed PCI_INTERFACE_XHCI to PCIP_SERIALBUS_USB_XHCI and moved it to <dev/pci/pcireg.h>.
Reviewed by: hselasky MFC after: 3 days
|
#
220195 |
|
31-Mar-2011 |
jhb |
Explicitly track the state of all known BARs for each PCI device. The PCI bus driver will now remember the size of a BAR obtained during the initial bus scan and use that size when doing lazy resource allocation rather than resizing the BAR. The bus driver will now also report unallocated BARs to userland for display by 'pciconf -lb'. Psuedo-resources that are not BARs (such as the implicit I/O port resources for master/slave ATA controllers) will no longer be listed as BARs in 'pciconf -lb'. During resume, BARs are restored from their new saved state instead of having the raw registers saved and restored across resume. This also fixes restoring BARs at unusual loactions if said BAR has been allocated by a driver.
Add a constant for the offset of the ROM BIOS BAR in PCI-PCI bridges and properly handle ROM BIOS BARs in PCI-PCI bridges. The PCI bus now also properly handles the lack of a ROM BIOS BAR in a PCI-Cardbus bridge.
Tested by: jkim
|
#
214122 |
|
20-Oct-2010 |
jkim |
Update PCI power management registers per PCI Bus Power Management Interface Specification Rev. 1.2. Rename pp_pcmcsr field of PM capabilities to pp_bse to avoid further confusions and adjust some comments accordingly. The real PMCSR (Power Management Control/Status Register) is PCIR_POWER_STATUS and it is actually BSE (PCI-to-PCI Bridge Support Extensions) register.
|
#
212368 |
|
09-Sep-2010 |
jhb |
- Rename the constant for the Master Data Parity Error flag in the PCI status register to map its current name. - Use PCIM_* rather than PCIR_* for constants for fields in various AER registers. I got about half of them right in the previous commit.
MFC after: 1 week
|
#
212326 |
|
08-Sep-2010 |
jhb |
- Add register definitions related to extended capability IDs in PCI-express. I used PCIZ_* for ID constants (plain capability IDs use PCIY_*). - Add register definitions for the Advanced Error Reporting, Virtual Channels, and Device Serial Number extended capabilities. - Teach pciconf -c to list extended as well as plain capabilities. Adds more detailed parsing for AER, VC, and device serial numbers.
MFC after: 2 weeks
|
#
209907 |
|
11-Jul-2010 |
raj |
Provide more defines for PCI-Express device ctrl.
|
#
203355 |
|
01-Feb-2010 |
yongari |
Add more bit definitions to PCI express device control and device status register.
Reviewed by: jhb
|
#
197450 |
|
24-Sep-2009 |
avg |
number of cleanups in i386 and amd64 pci md code
o introduce PCIE_REGMAX and use it instead of ad-hoc constant o where 'reg' parameter/variable is not already unsigned, cast it to unsigned before comparison with maximum value to cut off negative values o use PCI_SLOTMAX in several places where 31 or 32 were explicitly used o drop redundant check of 'bytes' in i386 pciereg_cfgread() - valid values are already checked in the subsequent switch
Reviewed by: jhb MFC after: 1 week
|
#
197077 |
|
10-Sep-2009 |
avg |
pci: remove definitions of duplicate constants
Suggested by: jhb Reviewed by: jhb MFC after: 1 week
|
#
191222 |
|
17-Apr-2009 |
jhb |
- Add a few more register defintions for the PCI express capability registers. - Cleanup PCI-X capability printf to not leave a dangling "supports" for some PCI-X bridges. - Display additional PCI express details including the negotiated and max link width and the actual and maximum supported max payload.
MFC after: 1 month
|
#
189401 |
|
05-Mar-2009 |
jhb |
Always read/write the full 64-bit value of 64-bit BARs. Specifically, when determining the size of a BAR by writing all 1's to the BAR and reading back the result, always operate on the full 64-bit size.
Reviewed by: imp MFC after: 1 month
|
#
189285 |
|
02-Mar-2009 |
rnoland |
Disable INTx when enabling MSI/MSIX
This addresses interrupt storms that were noticed after enabling MSI in drm. I think this is due to a loose interpretation of the PCI 2.3 spec, which states that a function using MSI is prohibitted from using INTx. It appears that some vendors interpretted that to mean that they should handle it in hardware, while others felt it was the drivers responsibility.
This fix will also likely resolve interrupt storm related issues with devices other than drm.
Reviewed by: jhb@ MFC after: 3 days
|
#
188639 |
|
15-Feb-2009 |
mav |
Add SATA and PCI Advanced Features capabilities constants.
|
#
188018 |
|
02-Feb-2009 |
jhb |
- Add a new ioctl to /dev/pci to fetch details on an individual BAR of a device. The details include the current value of the BAR (including all the flag bits and the current base address), its length, and whether or not it is enabled. Since this operation is not invasive, non-root users are allowed to use it (unlike manual config register access which requires root). The intention is that userland apps (such as Xorg) will use this interface rather than dangerously frobbing the BARs from userland to obtain this information. - Add a new sub-mode to the 'list' mode of pciconf. The -b flag when used with -l will now list all the active BARs for each device.
MFC after: 1 month
|
#
184594 |
|
03-Nov-2008 |
imp |
Nit: Add a few leading zeros to make this match other mask constants in this file. Also to make sure that I got other ASI constants right.
|
#
184141 |
|
21-Oct-2008 |
mav |
Add HDA multimedia subclass.
|
#
181934 |
|
20-Aug-2008 |
jhb |
The config space registers holding the upper 32-bits of the prefetchable memory area's base and limit are optional. The low 4-bits of the "low" prefetchable registers indicates whether or not a 32-bit or 64-bit region is supported. The PCI-PCI driver had been assuming that all bridges supported a 64-bit region (and thus the two upper 32-bit registers). Fix the driver to only use those registers if the low 4-bits of the "low" registers indicate that a 64-bit region is supported. The PCI-PCI bridge in the XBox happens to be a bridge that only supports a 32-bit region.
Reported by: rink MFC after: 1 week
|
#
172242 |
|
19-Sep-2007 |
sepotvin |
- Fix a small bit slip in PCIM_PCAP_D[0-2]PME defines. - Add the definitions for D3PME_COLD and D3PME_HOT capabilities.
Reviewed by: njl (mentor), imp Approved by: re (kensmith) MFC after: 1 week
|
#
169616 |
|
16-May-2007 |
imp |
Change PCIM_CIS_ASI_TUPLE to _CONFIG. Add PCI_MAX_BAR_0 minor style nit. Add PCIM_CIS_CONFIG_MASK
|
#
169037 |
|
25-Apr-2007 |
jhb |
- HT 2.00b added a new flag to the MSI mapping HT capability to indicate that the MSI mapping window is fixed at 0xfee00000 and the capability does not include two more dwords used to program the address. Supporting this mostly results in quieting spurious warnings during boot about non-default MSI mapping windows. - HT 2.00b also added a new HT capability type, so support that in pciconf.
MFC after: 3 days Tested by: jmg
|
#
168162 |
|
31-Mar-2007 |
jhb |
Add constants for the fields in a BAR. Also, add two new macros PCI_BAR_(IO|MEM)() that return true if the passed in value from a BAR is for an IO or memory BAR, respectively.
Reviewed by: imp
|
#
168157 |
|
31-Mar-2007 |
jhb |
- Add missing constants for subclasses. - Add a few progif constants as well.
|
#
167238 |
|
05-Mar-2007 |
jhb |
- Flesh out list of UART simple comms programming interfaces. - Add list of PIC base peripheral programming interfaces. - Add VPD capability register offsets.
MFC after: 3 days
|
#
166434 |
|
02-Feb-2007 |
jhb |
Add constants for the PCIY_VENDOR (vendor-specific), PCIY_DEBUG (EHCI debug port), and PCIY_EXPRESS (PCI-express) capabilities.
|
#
166109 |
|
19-Jan-2007 |
jhb |
- Change the PCI-X registers constants to be relative to the PCI-X PCI capability rather than hardcoded offsets for a particular card. While I'm here, expand the constants some. - Change the ahd(4) driver to use pci_find_extcap() to locate the PCI-X capability to keep up with the first change.
Reviewed by: scottl, gibbs (earlier version)
|
#
166048 |
|
16-Jan-2007 |
jhb |
Fix the subvendor ID for PCI-PCI bridges. - Retire the PCI_SUB*_1 constants and don't try to read a subvendor ID out of them. There isn't a standard subvendor ID field for PCI-PCI bridges. Instead, the dword at offset 0x34 is actually mostly reserved except for the LSB which is the capabilities pointer. - Add support for the PCI-PCI bridge subvendor ID capability (13) and use it to set the subvendor ID for PCI-PCI bridges.
MFC after: 1 month
|
#
165217 |
|
14-Dec-2006 |
jhb |
Replace #define<space> with #define<tab> so the code is consistent with style(9) and avoids mixing the two formats.
|
#
165131 |
|
12-Dec-2006 |
jhb |
- Add constants for HT PCI capability registers including the various subtypes of HT capabilities. - Add constants for the MSI mapping window HT PCI capability. - On i386 and amd64, enable the MSI mapping window on any HT bridges we encounter and report any non-standard mapping window addresses.
|
#
164264 |
|
13-Nov-2006 |
jhb |
First cut at MI support for PCI Message Signalled Interrupts (MSI): - Add 3 new functions to the pci_if interface along with suitable wrappers to provide the device driver visible API: - pci_alloc_msi(dev, int *count) backed by PCI_ALLOC_MSI(). '*count' here is an in and out parameter. The driver stores the desired number of messages in '*count' before calling the function. On success, '*count' holds the number of messages allocated to the device. Also on success, the driver can access the messages as SYS_RES_IRQ resources starting at rid 1. Note that the legacy INTx interrupt resource will not be available when using MSI. Note that this function will allocate either MSI or MSI-X messages depending on the devices capabilities and the 'hw.pci.enable_msix' and 'hw.pci.enable_msi' tunables. Also note that the driver should activate the memory resource that holds the MSI-X table and pending bit array (PBA) before calling this function if the device supports MSI-X. - pci_release_msi(dev) backed by PCI_RELEASE_MSI(). This function releases the messages allocated for this device. All of the SYS_RES_IRQ resources need to be released for this function to succeed. - pci_msi_count(dev) backed by PCI_MSI_COUNT(). This function returns the maximum number of MSI or MSI-X messages supported by this device. MSI-X is preferred if present, but this function will honor the 'hw.pci.enable_msix' and 'hw.pci.enable_msi' tunables. This function should return the largest value that pci_alloc_msi() can return (assuming the MD code is able to allocate sufficient backing resources for all of the messages). - Add default implementations for these 3 methods to the pci_driver generic PCI bus driver. (The various other PCI bus drivers such as for ACPI and OFW will inherit these default implementations.) This default implementation depends on 4 new pcib_if methods that bubble up through the PCI bridges to the MD code to allocate IRQ values and perform any needed MD setup code needed: - PCIB_ALLOC_MSI() attempts to allocate a group of MSI messages. - PCIB_RELEASE_MSI() releases a group of MSI messages. - PCIB_ALLOC_MSIX() attempts to allocate a single MSI-X message. - PCIB_RELEASE_MSIX() releases a single MSI-X message. - Add default implementations for these 4 methods that just pass the request up to the parent bus's parent bridge driver and use the default implementation in the various MI PCI bridge drivers. - Add MI functions for use by MD code when managing MSI and MSI-X interrupts: - pci_enable_msi(dev, address, data) programs the MSI capability address and data registers for a group of MSI messages - pci_enable_msix(dev, index, address, data) initializes a single MSI-X message in the MSI-X table - pci_mask_msix(dev, index) masks a single MSI-X message - pci_unmask_msix(dev, index) unmasks a single MSI-X message - pci_pending_msix(dev, index) returns true if the specified MSI-X message is currently pending - Save the MSI capability address and data registers in the pci_cfgreg block in a PCI devices ivars and restore the values when a device is resumed. Note that the MSI-X table is not currently restored during resume. - Add constants for MSI-X register offsets and fields. - Record interesting data about any MSI-X capability blocks we come across in the pci_cfgreg block in the ivars for PCI devices.
Tested on: em (i386, MSI), bce (amd64/i386, MSI), mpt (amd64, MSI-X) Reviewed by: scottl, grehan, jfv MFC after: 2 months
|
#
159085 |
|
30-May-2006 |
imp |
Add a define for the Standard SD Host Controller Base Peripheral.
|
#
153906 |
|
30-Dec-2005 |
imp |
Make RID2BAR actually return a number that can be plugged into PCIR_BAR() rather than a bitmask.
Submitted by: ru@
|
#
153861 |
|
29-Dec-2005 |
imp |
Add a macro to map from BAR to rid # (inverse of PCIR_BARS).
|
#
153560 |
|
20-Dec-2005 |
jhb |
Add a new method PCI_FIND_EXTCAP() to the pci bus interface that is used to search for a specific extended capability. If the specified capability is found for the given device, then the function returns success and optionally returns the offset of that capability. If the capability is not found, the function returns an error.
|
#
151846 |
|
29-Oct-2005 |
imp |
Use symbolic name rather thanhard coding the cap pointer offset for type two devices.
|
#
151788 |
|
28-Oct-2005 |
imp |
Add PCIM_BIOS_ADDR_MASK too
|
#
151787 |
|
28-Oct-2005 |
imp |
Some cardbus CIS definitions moved here since they are PCI registers.
|
#
147033 |
|
05-Jun-2005 |
imp |
As threatened by BURN_BRIDGES, restire PCIR_MAPS and PCIR_HEADERTYPE
|
#
145650 |
|
28-Apr-2005 |
marcel |
Add defines for the Bridge Control Register bits.
Obtained from: jhb@
|
#
144511 |
|
01-Apr-2005 |
jmg |
fix misspelling of 0x30...
Spotted by: reviewing MFC commit
|
#
144162 |
|
26-Mar-2005 |
jmg |
fix a copy/paste typo for scanner/gameport...
Spotted by: Michal Mertl <mime@traveller.cz>
|
#
144156 |
|
26-Mar-2005 |
jmg |
add some additional pci classes and sub-classes..
Reviewed by: imp (almost 6 months ago)
|
#
139749 |
|
05-Jan-2005 |
imp |
Start each of the license/copyright comments with /*-, minor shuffle of lines
|
#
120063 |
|
14-Sep-2003 |
scottl |
Teach the PCI code to parse MSI extended capabilities. Re-arrange the pcicfg struct a bit to hold extcap structures instead of structure members.
|
#
120055 |
|
14-Sep-2003 |
scottl |
Expand the extended capabilities list and add definitions for MSI.
|
#
119722 |
|
03-Sep-2003 |
jhb |
Bring back PCIR_HEADERTYPE as an alias for PCIR_HDRTYPE under BURN_BRIDGES for backwards compat. The old name will be gone in 6.0, but will be around in 5.x. This will help unbreak 3rd party code, e.g. the nvidia DRM module.
|
#
119689 |
|
02-Sep-2003 |
jhb |
- Deprecate PCIR_MAPS under BURN_BRIDGES (meaning it will be gone in 6.0) and replace it with the more intuitive name PCIR_BARS. - Add a PCIR_BAR(x) macro that returns the config space register offset of the 32-bit BAR x.
MFC after: 3 days
|
#
119539 |
|
28-Aug-2003 |
jhb |
- Rename PCIx_HEADERTYPE* to PCIx_HDRTYPE* so the constants aren't so long. - Add a new PCIM_HDRTYPE constant for the field in PCIR_HDRTYPE that holds the header type. - Replace several magic numbers with appropriate constants for the header type register and a couple of PCI_FUNCMAX. - Merge to amd64 the fix to the i386 bridge code to skip devices with unknown header types.
Requested by: imp (1, 2)
|
#
119538 |
|
28-Aug-2003 |
jhb |
Add constants for capability IDs and header types.
Submitted by: Samy Al Bahra <samy@kerneled.com>
|
#
118327 |
|
01-Aug-2003 |
imp |
Define PCI_MAXHDRTYPE to be 2. We know about header types 0, 1 and 2. Update the MI device scanning code to use PCI_MAXHDRTYPE rather than the hard coded 2.
|
#
113906 |
|
23-Apr-2003 |
des |
Add constants for USB programming interfaces. These are already defined (with other names) in the USB driver sources, but I felt that pcireg.h should have a complete list - at least of classes and interfaces that we know about and use.
|
#
97892 |
|
05-Jun-2002 |
gibbs |
Add some PCI-X register definitions.
PCIM_CMD_SERREN -> PCIM_CMD_SERRESPEN to be consistent with the PERR definition.
|
#
70230 |
|
20-Dec-2000 |
gibbs |
Add PCIR_CAP_PTR as a define for the location of the capability pointer of type 0 devices. This is required by my last aic7xxx change.
|
#
69953 |
|
12-Dec-2000 |
msmith |
Next round of PCI subsystem updates:
- Break out the /dev/pci driver into a separate file. - Kill the COMPAT_OLDPCI support. - Make the EISA bridge attach a bit more like the old code; explicitly check for the existence of eisa0/isa0 and only attach if they don't already exist. Only make one bus_generic_attach() pass over the bridge, once both busses are attached. Note that the stupid Intel bridge's class is entirely unpredictable. - Add prototypes and re-layout the core PCI modules in line with current coding standards (not a major whitespace change, just moving the module data to the top of the file). - Remove redundant type-2 bridge support from the core PCI code; the PCI-CardBus code does this itself internally. Remove the now entirely redundant header-class-specific support, as well as the secondary and subordinate bus number fields. These are bridge attributes now. - Add support for PCI Extended Capabilities. - Add support for PCI Power Management. The interface currently allows a driver to query and set the power state of a device. - Add helper functions to allow drivers to enable/disable busmastering and the decoding of I/O and memory ranges. - Use PCI_SLOTMAX and PCI_FUNCMAX rather than magic numbers in some places. - Make the PCI-PCI bridge code a little more paranoid about valid I/O and memory decodes. - Add some more PCI register definitions for the command and status registers. Correct another bogus definition for type-1 bridges.
|
#
69908 |
|
12-Dec-2000 |
msmith |
- We have access to our own device_t here, so use pci_read_config rather than finding our parent pcib and using its PCI_READ_CONFIG method.
- Fix the defines for the 32-bit I/O decode registers, and properly process the 16-bit versions. Now we will correctly check that I/O resources behind the bridge are going to be decoded.
- Bring the quirk for the Orion PCI:PCI bridge in here (since it seems to want to set the secondary/supplementary bus numbers).
- Use PCI_SLOTMAX rather than a magic number.
|
#
66515 |
|
01-Oct-2000 |
archie |
Add definition for PCIS_SERIALBUS_SMBUS PCI device subclass. Remove cut & paste leftovers.
|
#
65944 |
|
16-Sep-2000 |
gibbs |
Add PCIM_CMD_MWRICEN, the bit in the command register in PCI space that enables memory write and invalidate cycles on a bus master.
|
#
61047 |
|
28-May-2000 |
peter |
Encapsulate the old PCI compatability support and APIs completely under "options COMPAT_OLDPCI". This option already existed, but now also tidies up the declarations in #include <pci/pci*.h>. It is amazing how much stuff was using the old pre-FreeBSD 3.x names and going silently undetected.
|
#
55770 |
|
10-Jan-2000 |
yokota |
Added PCIR_BIOS (0x30).
|
#
52063 |
|
09-Oct-1999 |
peter |
Add the 16550 programming interface code for PCIS_SIMPLECOMM_UART.
|
#
50477 |
|
27-Aug-1999 |
peter |
$Id$ -> $FreeBSD$
|
#
45720 |
|
16-Apr-1999 |
peter |
Bring the 'new-bus' to the i386. This extensively changes the way the i386 platform boots, it is no longer ISA-centric, and is fully dynamic. Most old drivers compile and run without modification via 'compatability shims' to enable a smoother transition. eisa, isapnp and pccard* are not yet using the new resource manager. Once fully converted, all drivers will be loadable, including PCI and ISA.
(Some other changes appear to have snuck in, including a port of Soren's ATA driver to the Alpha. Soren, back this out if you need to.)
This is a checkpoint of work-in-progress, but is quite functional.
The bulk of the work was done over the last few years by Doug Rabson and Garrett Wollman.
Approved by: core
|
#
40030 |
|
07-Oct-1998 |
gibbs |
ahc_pci.c: Disable DPARCKEN in the DSCOMMAND0 register on the aic7890/91/96/97. Parity checking is broken for some chip/MB combinations and this is the work around recommended by Adaptec.
dpt_pci.c: Remove a superflous '{' that prevented DPT_ALLOW_MEMIO from working.
pcireg.h: Add a definition for Parity Error Reponse bit in the PCI Space command register.
|
#
29636 |
|
20-Sep-1997 |
dyson |
Addition of support of the slightly rogue Promise IDE interface(Dyson), support of multiple PCI IDE controllers(Dyson), and some updates and cleanups from John Hood, who originally made our IDE DMA stuff work :-).
I have run tests with 7 IDE drives connected to my system, all in DMA mode, with no errors. Modulo any bugs, this stuff makes IDE look really good (within it's limitations.)
Submitted by: John Hood <cgull@smoke.marlboro.vt.us>
|
#
26347 |
|
01-Jun-1997 |
peter |
PCI_CLASS_MASS_STORAGE (under PCI_COMPAT) was used in a driver in LINT still (stallion.c).
|
#
26253 |
|
28-May-1997 |
se |
Add one more compatibility define to make the Adaptec driver compile with option AHC_ALLOW_MEMIO again ....
|
#
26232 |
|
28-May-1997 |
se |
Define command register enable bits, which are required for a consitency test added to pci_compat.c
|
#
26159 |
|
26-May-1997 |
se |
Completely replace the PCI bus driver code to make it better reflect reality. There will be a new call interface, but for now the file pci_compat.c (which is to be deleted, after all drivers are converted) provides an emulation of the old PCI bus driver functions. The only change that might be visible to drivers is, that the type pcici_t (which had been meant to be just a handle, whose exact definition should not be relied on), has been converted into a pcicfgregs* .
The Tekram AMD SCSI driver bogusly relied on the definition of pcici_t and has been converted to just call the PCI drivers functions to access configuration space register, instead of inventing its own ...
This code is by no means complete, but assumed to be fully operational, and brings the official code base more in line with my development code.
A new generic device descriptor data type has to be agreed on. The PCI code will then use that data type to provide new functionality:
1) userconfig support 2) "wired" PCI devices 3) conflicts checking against ISA/EISA 4) maps will depend on the command register enable bits 5) PCI to Anything bridges can be defined as devices, and are probed like any "standard" PCI device.
The following features are currently missing, but will be added back, soon:
1) unknown device probe message 2) suppression of "mirrored" devices caused by ancient, broken chip-sets
This code relies on generic shared interrupt support just commited to kern_intr.c (plus the modifications of isa.c and isa_device.h).
|
#
25121 |
|
24-Apr-1997 |
se |
Add definition of PCI_SUBID_REG2, the subvendor/device ID for a header type 2 device.
|
#
25039 |
|
20-Apr-1997 |
phk |
The bit of the cardbus bridge support code se and I have been able to agree on so far... :-) Reviewed by: se
|
#
22975 |
|
22-Feb-1997 |
peter |
Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not ready for it yet.
|
#
21673 |
|
14-Jan-1997 |
jkh |
Make the long-awaited change from $Id$ to $FreeBSD$
This will make a number of things easier in the future, as well as (finally!) avoiding the Id-smashing problem which has plagued developers for so long.
Boy, I'm glad we're not using sup anymore. This update would have been insane otherwise.
|
#
19696 |
|
12-Nov-1996 |
se |
Add support for header type == 1 devices (PCI 2.1 compatible PCI to PCI bridges with support for 64 bit memory addresses and 32 bit I/O addresses).
The code is not complete. It ignores the upper half of the long addresses. This is not a problem on PC compatible systems, but has to be fixed for real computers.
|
#
19695 |
|
12-Nov-1996 |
se |
Fix PCI to PCI bridge register bit field masks.
Thanks to "Mike Durian" <durian@plutotech.com> for the very good problem report and his support as a beta tester of this patch.
|
#
19101 |
|
22-Oct-1996 |
se |
Add support for ioctl() accesses to PCI config space registers. Garrett Wollman sent me this code a few weeks ago for review, and I made some significant changes, which he in turn accepted ...
In order to make use of these changes, a device entry has to added to /dev.
Submitted by: wollman
|
#
13633 |
|
25-Jan-1996 |
se |
Add support for multi-function devices.
|
#
13497 |
|
19-Jan-1996 |
se |
Fix bad typo: > was used instead of >> ...
Submitted by: Matt Thomas <matt@lkg.dec.com>
|
#
7233 |
|
21-Mar-1995 |
se |
Completely new PCI code:
1) Supports PCI to PCI bridge devices (and tries to initialise them, even if the BIOS is brain dead). 2) Supports shared PCI interrupts. Interrupt handlers now MUST return '0' if they found nothing to do, '1' otherwise.
New features tested with i486 systems based on the Intel Saturn and a DEC 4channel Ethernet card only, but expected to work on most systems.
The option PCI_REMAP has been removed !
Submitted by: Wolfgang Stanglmeier <wolf@kintaro.cologne.de>
|
#
6140 |
|
02-Feb-1995 |
se |
Removed misleading copyright note. This file contains just definitions taken from the PCI specs. Part of them were typed in by Wolfgang Stanglmeier, the (at that time unneeded) rest by Charles Hannum (thanks !).
|
#
6132 |
|
02-Feb-1995 |
dg |
Reapplied all of Stefan's changes. What a mess - the files were modified and moved at the same time. This made it *very* difficult to fix the revision log lossage that happend when the files were moved. SIGH.
|
#
4100 |
|
02-Nov-1994 |
se |
Submitted by: Added hooks for "lsdev" ... PCI devices should need no individual code for lsdev.
|
#
3531 |
|
12-Oct-1994 |
se |
Submitted by: Wolfgang Stanglmeier <wolf@dentaro.GUN.de> Files merged and name change: pci_device.h + pcibios.h -> pcireg.h
|