summaryrefslogtreecommitdiffstats
path: root/sys/i386/isa/pcibus.c
Commit message (Collapse)AuthorAgeFilesLines
* Add text for the AMD-751 host-to-PCI and PCI-to-PCI (AGP) bridges.alc1999-10-251-0/+5
|
* $Id$ -> $FreeBSD$peter1999-08-281-1/+1
|
* Make the identify routine add itself with priority 100 to make sure itpeter1999-08-221-2/+6
| | | | | goes after the npx/apm devices and any other motherboard devices that may get added down the track.
* Hopefully fix the previous commit, it caused *all* bridges to be detectedpeter1999-08-101-6/+7
| | | | | | | | | | | | | | as PCI->HOST bridges on my (440BX) box. My change is to remove the test at the beginning entirely, letting the switch on the device ID happen first. If the device ID is unknown, then (in the default case) check for the generic PCIS_BRIDGE_HOST tag. This should allow wierd cases (eg: wpaul's IMS VL bridge) to work by using the id override. This strategy is more in line with the other PCI match methods we use elsewhere, I only have a limited testbed, but having my USB etc devices detected as PCI->HOST bridges doesn't look good.
* Fix nexus_pcib_is_host_bridge() so that it detects my 486's PCI buswpaul1999-08-091-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | correctly. It has the following code: if (class != PCIC_BRIDGE || subclass != PCIS_BRIDGE_HOST) return NULL; My 486 has an Integrated Micro Solutions PCI bridge which identifies itself as subclass PCIS_BRIDGE_OTHER, not PCIS_BRIDGE_HOST. Consequently, it gets ignored. In my opinion, the correct test should be: if ((class != PCIC_BRIDGE) && (subclass != PCIS_BRIDGE_HOST)) return NULL; That way the test still succeeds because the chip's class is PCIC_BRIDGE. Clearly it's not reasonable to expect all host to PCI bridges to always have a subclass of PCIS_BRIDGE_HOST since I've got one that doesn't. This way the sanity test should remain relatively sane while still allowing some oddball yet correct hardware to work. If somebody has a better way to do it, go ahead and tweak the test, but be aware that class == PCIC_BRIDGE and subclass == PCIS_BRIDGE_OTHER is a valid case. While I was here, I also added an explicit ID string for the IMS chipset. I also dealt with a minor style nit: it's bad karma not to have a default case for your switch statements, but the one in this routine doesn't have one. The default string of "Host to PCI bridge" is now assigned in a default case of the switch statement instead of initializing "s" with the string before the switch and then not having any default case.
* Don't probe if pci_cfgopen() fails to find pci hardware, like we used topeter1999-08-041-5/+4
| | | | | to. This might have caused interesting things on non-PCI hardware if PCI was compiled in.
* Add support for multiple PCI busses directly connected to the nexus.msmith1999-07-161-4/+180
| | | | | | | This is only partially complete, but allows 450NX-based systems with more than one PCI bus to be used again. Submitted by: dfr
* Move pcibus (host -> pci bus) probe/attach routines from nexuspeter1999-05-181-3/+47
| | | | | to pcibus.c. pci_cfgopen() becomes static and there are no more bus #ifdef's in nexus.c.
* Make the class code checks in function pci_cfgcheck less strict.se1997-12-201-2/+2
| | | | | | | | | It failed to recognize the PCI bus in a system that had only an old chip-set (class code 000000) and a Cyclom multiport serial card on PCI bus 0, but no VGA card or disk or network controller. PR: i386/5300 Submitted by: Nickolay N. Dudorov <nnd@itfs.nsk.su>
* Removed unused #includes.bde1997-07-201-2/+1
|
* Yet another fix for configuration mechanism 1 register accesses:se1997-05-261-4/+5
| | | | | | Adjust the data port address by adding the two low order bits of the register number. The address port takes only a word address (i.e. ignores the two low order bits written to it).
* Fix previous fix: The enable bit is bit 31 (0x8000000) and not bit 15.se1997-05-261-2/+2
|
* Set enable bit when writing the configuration address in configurationse1997-05-261-2/+2
| | | | | | | mode 1. Omission of this bit makes all config register accesses fail in on recent chip sets ... (The problem was reported and debug output provided by: Steve Passe)
* Completely replace the PCI bus driver code to make it better reflectse1997-05-261-463/+190
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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).
* Mask out revision register in consistency test of class register.se1997-04-091-2/+2
|
* Fix spelling of align and interrupt in comments.se1997-04-091-6/+6
|
* Fix consistency test to not fail on pre PCI 2.0 motherboardsse1997-04-091-2/+2
|
* improve pcibus_check: Only assume PCI if at least one PCI to anything bridgese1997-03-051-6/+19
| | | | | on bus 0. This fixes problems with EISA-only systems mistakenly being assumed to support PCI.
* Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are notpeter1997-02-221-1/+1
| | | | ready for it yet.
* Sync with <pci/pcibus.h>. pcibus.c unfortunately still compiled (withbde1997-01-251-1/+0
| | | | only 3 or 4 warnings) when pb_maxirq went away.
* Make the long-awaited change from $Id$ to $FreeBSD$jkh1997-01-141-1/+1
| | | | | | | | 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.
* Make the code more consistant by using the INTR*MASK macros througout thenate1997-01-081-2/+2
| | | | | | | | | | | code. Reviewed by: bde [ Bruce suggest removing the macros completely, but I'm not up to that task quite yet. ]
* More merge and update.asami1996-10-301-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | (1) deleted #if 0 pc98/pc98/mse.c (2) hold per-unit I/O ports in ed_softc pc98/pc98/if_ed.c pc98/pc98/if_ed98.h (3) merge more files by segregating changes into headers. new file (moved from pc98/pc98): i386/isa/aic_98.h deleted: well, it's already in the commit message so I won't repeat the long list here ;) Submitted by: The FreeBSD(98) Development Team
* Removed unused #includes of <i386/isa/icu.h> and <i386/isa/icu.h>. icu.hbde1996-06-181-2/+1
| | | | | | | is only used by the icu support modules and by a few drivers that know too much about the icu (most only use it to convert `n' to `IRQn'). isa.h is only used by ioconf.c and by a few drivers that know too much about isa addresses (a few have to, because config is deficient).
* Change CONF1_ENABLE_MSK to 0x7ff00000 in another attempt to decidese1996-06-131-2/+2
| | | | | whether a system could possibly support PCI configuration mechanism 1 (or whether it rather is an EISA only system ...).
* Make pcibus_check() ignore Device/Vendor IDs of all 0.se1996-04-301-2/+2
|
* Removed now-unused #includes of <machine/cpu.h>. They were for bootverbosebde1996-04-071-3/+1
| | | | being declared in the wrong place.
* Count PCI irqs in up to 4 ISAish counters named `pci irqnn' instead ofbde1996-03-291-3/+30
| | | | | | in the clk0 counter. Reviewed by: s
* Completed function declarations and/or added prototypes and/or addedbde1995-12-161-7/+7
| | | | | | | | #includes to get prototypes. pci now uses a different interrupt handler type for interrupts that it dispatches and the isa interrupt handler type for the interrupts that it handles.
* Staticize and cleanup.phk1995-12-101-2/+2
|
* Make CONF1_ENABLE_MSK1 even less restriktive: Ignore slot ID ...se1995-10-171-2/+2
|
* At least the ASUS Triton motherboards don't disable the PCI bus configurationse1995-10-171-4/+5
| | | | | | | | | accesses after the BIOS bus scan. The previous revision made the assumption, that every PCI motherboard did ... Change the test on the initial value of the CONF1_ADDR_PORT register in a way that makes the probe succeed on triton based motherboards, without breaking the EISA motherboard that has some non-PCI register at the same address.
* Go back to separate tests for configuration mechanism 1 and mechanism 2.se1995-10-151-54/+57
| | | | | | | | | | Require the state of the configuration enable bits to be OFF assuming that the BIOS left them that way, as it should anyway to avoid bad things to happen. The tests themselves are copied from the previous release, with the exception of CONF1_ENABLE_MSK1 having the LSB set. This bit should be read back as '0', since only DWORD addresses are legal.
* Fix bad typo: CONF1_ENABLE_RES1 was written CONF1_ENABLE_CHK1 ...se1995-10-091-6/+14
|
* New approach to the PCI bus configuration mechanism probe problem:se1995-09-221-50/+63
| | | | | - try to make sure there is any kind of PCI device - if there is anything at port 0x0cf8, then check for mech. 1 or 2
* Revert most changes of previous commit.se1995-09-181-18/+52
| | | | | | | Changes relative to 1.12: - Put extra instruction between outl()/inl() sequence to prevent the old value being read back because of the bus capacitance. - Additional check for existence of register at CONF2_ENABLE_PORT.
* Another try to determine the PCI bus configuration mode (and whetherse1995-09-151-59/+40
| | | | | | | | | there is a PCI bus at all) ... - Do not expect the chip sets to follow even very clearly expressed requirements of the PCI 2.0 spec. - Do not read back the value just written to an I/O port without making sure that some other data have crossed the bus in between ...
* Improved verification of configuration space accesses working:se1995-09-141-4/+19
| | | | | Scan for devices instead of assuming that device 0 is present on bus 0 of every PCI motherboard.
* Make the PCI host bridge probe code more robust when dealing with chip setsse1995-09-131-6/+35
| | | | | that use configuration mode 1, but still violate the PCI 2.0 specs ... (Required for the Compaq Proliant, for example.)
* The PCI config mechanism 1 test failed for the Intel Aries.se1995-06-301-2/+2
| | | | | | Make it less strict ... Submitted by: NIIMI Satoshi <sa2c@and.or.jp>
* PCI configuration mechanism now determined by a method, that doesn'tse1995-06-281-15/+17
| | | | | | fail on new hardware (Compaq Prolinea and Compaq Prosignea), and that doesn't erroneously identify old mech. 2 chip sets as using mech. 1. (See section 3.6.4.1.1 of the PCI bus specs rev. 2.0)
* Correct pcibus_setup() to return as soon as one test succeeds.se1995-03-221-1/+3
|
* Delete PCI PCI bridge simulator code ...se1995-03-221-90/+1
| | | | Submitted by: Wolfgang Stanglmeier <wolf@kintaro.cologne.de>
* Remove spurious declaration of printf().se1995-03-221-3/+1
| | | | Submitted by: Michael Reifenberger <root@rz-wb.fh-sw.de>
* New ISA specific PCI code.se1995-03-211-147/+209
| | | | | | Supports shared PCI interrupts. Submitted by: Wolfgang Stanglmeier <wolf@kintaro.cologne.de>
* Replace all remaining instances of `i386/include' by `machine' and fixbde1995-02-261-11/+6
| | | | nearby #include inconsistencies.
* Keep PCI_CONF_MODE in a safe place for later reference, if #defined.se1995-02-251-1/+2
| | | | | Reviewed by: se Submitted by: seb@erix.ericsson.se (Sebastian Strollo)
* Initialisation of interrupt masks changed.se1995-02-091-4/+5
| | | | | Reviewed by: se Submitted by: wolf (Wolfgang Stanglmeier)
* Reviewed by: sese1995-02-011-0/+442
Submitted by: wolf (Wolfgang Stanglmeier) New ISA dependend file for PCI bus support. Replaces sys/i386/pci/pcibios.c.
OpenPOWER on IntegriCloud