| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
to create.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
code into cardbus and s/pci/cardbus. This exposes a few pci_*
functions that are now static.
This work is similar to work Justin posted to the mobile list about a
year or two ago, which I have neglected since then.
This is a subset of his current work with the multiple inheritance
newbus architecutre. When completed, that will eliminate the need for
pci/pci_private.h.
Similar work is needed for the cardbus_cis and pccard_cis code as well.
|
|
|
|
|
| |
pci_find_bsf() - Find a device_t by bus/slot/function.
pci_find_device() - Find a device_t by vendor/device ID.
|
|
|
|
|
| |
contents, and the new __BUS_ACCESSOR macro to construct the accessor
functions.
|
|
|
|
|
| |
PR: kern/33032
MFC after: 1 month
|
|
|
|
| |
'pci_devq' provides useful information now.
|
|
|
|
| |
Submitted by: Andrew R. Reiter arr@watson.org
|
|
|
|
|
| |
numbers (the BIOS leaves legacy PIC interrupt numbers in the intline
registers).
|
| |
|
|
|
|
|
| |
If the intline is 0 or 255, then it needs an interrupt routed. Some
Sony laptops improperly flag devices that need an interrupt with 0 :-(.
|
|
|
|
|
|
|
| |
all alphas with devices behind ppb's. I'm working on a better solution now.
Note that all alphas that use per-platform interrupt mapping are broken
again (as they have been for several months)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
breakage:
- call PCIB_ROUTE_INTERRUPT() regardless of how valid the intline looks.
Some alphas leave garbage in the intline and leave the intr mapping
to OS platform support routines that map slots/buses to intlines
- Down in the alpha pci code, first try platform.pci_intr_route() and
if it doesn't exist or returns garbage, just read the intline out of
config space.
tested on AS500 (garbage in intline) and UP1000 (PC-like, intline is valid)
Note that a nice little hack like the APIC_IO section of pci_cfgregread()
is not workable. This is because the calling interface for
alpha_pci_route_interrupt() requires us to figure out the bus/slot/etc
from a device_t. At pci_read_device() time, we don't have a device_t
for the bus/slot/func in question.
|
|
|
|
| |
offset 0x90 for the SMBus device as the PIIX4.
|
|
|
|
|
| |
that drivers are not reaching into the internals of the pci bus. There
are no driver changes, the public interface is the same.
|
|
|
|
| |
There is no such thing as wierd in the english language.
|
|
|
|
|
|
| |
(but not impossible) to get stuck in an infinite loop.
Obtained from: msmith@freebsd.org
|
| |
|
|
|
|
| |
me in the previous round of patches. Oops.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
- Improve the formatting for devices identified by the database.
- Fix the pcib_route_interrupt method definition, as an old version
snuck in here somehow 8(
- Remove a couple of the vendor/device IDs for PCI:ISA bridges which
correctly identify themselves.
Submitted by: peter
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Move PCI core code to dev/pci.
- Split bridge code out into separate modules.
- Remove the descriptive strings from the bridge drivers. If you
want to know what a device is, use pciconf. Add support for
broadly identifying devices based on class/subclass, and for
parsing a preloaded device identification database so that if
you want to waste the memory, you can identify *anything* we know
about.
- Remove machine-dependant code from the core PCI code. APIC interrupt
mapping is performed by shadowing the intline register in machine-
dependant code.
- Bring interrupt routing support to the Alpha
(although many platforms don't yet support routing or mapping
interrupts entirely correctly). This resulted in spamming
<sys/bus.h> into more places than it really should have gone.
- Put sys/dev on the kernel/modules include path. This avoids
having to change *all* the pci*.h includes.
|
|
|
|
|
|
|
|
| |
generic resource_list management functions.
I'll deal with the EISA bits later.
Not objected to by: new-bus
|
| |
|
| |
|
|
|
|
|
|
|
| |
command register is too aggressive. Revert to the previous behaviour, but
leave the new behaviour available as an undocumented option. It's not
clear what the Right, Right Thing is to do here, but the more conservative
approach is safer.
|
| |
|
| |
|
|
|
|
|
|
| |
#ifdef away the offending code until somebody with more newbus fu than
me can figure out where to put a default function that returns 255
without touching each alpha chipset driver..
|
|
|
|
|
|
|
| |
the intline of 255) go ahead and route the interrupt when we allocate
an interrupt.
Submitted by: msmith
|
|
|
|
| |
guarantee that everything attached to *it* is a PCI bus.
|
|
|
|
|
|
| |
bus/slot/function numbers. The old PCI code used other markers or
something, but without it here under the new pci code it is very hard to
tell which device is which (this only affects bootverbose mode).
|
|
|
|
|
|
|
| |
enable bit hasn't been set in the command register, set the bit and
honour the register. It seems that quite a few lazy BIOS writers
aren't bothering to do this, which upsets the existing code and causes
us to miss out on properly-configured devices.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
the drivers.
* Remove legacy inx/outx support from chipset and replace with macros
which call busspace.
* Rework pci config accesses to route through the pcib device instead of
calling a MD function directly.
With these changes it is possible to cleanly support machines which have
more than one independantly numbered PCI busses. As a bonus, the new
busspace implementation should be measurably faster than the old one.
|
|
|
|
| |
a functional driver for the device.
|
|
|
|
|
|
| |
"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.
|
|
|
|
|
|
| |
It was not discussed and should probably not happen.
Requested by: msmith and others
|
|
|
|
|
|
|
|
| |
the type argument to *_HEAD and *_ENTRY is a struct.
Suggested by: phk
Reviewed by: phk
Approved by: mdodd
|
|
|
|
|
| |
PR: kern/18662
Submitted by: tamaru@ap.t.u-tokyo.ac.jp
|
|
|
|
|
| |
We have *got* to fix this bogosity of trying to steal part of the PCI
address space for this stuff.
|
|
|
|
|
|
|
| |
not u_long. On i386's with 64-bit longs, returning u_longs indirectly
in (more than) the space reserved for uintptr_t's tended to corrupt the
previous frame pointer in the stack frame, so it was not easy to debug.
The type mismatches are hidden by the bogus cast in DEVMETHOD().
|
|
|
|
|
| |
Due to some interesting cpp tricks in lockmgr, the LINT kernel shrinks
by 924 bytes.
|
|
|
|
|
|
|
|
|
|
| |
non-device code.
* Re-implement the method dispatch to improve efficiency. The new system
takes about 40ns for a method dispatch on a 300Mhz PII which is only
10ns slower than a direct function call on the same hardware.
This changes the new-bus ABI slightly so make sure you re-compile any
driver modules which you use.
|
|
|
|
|
|
|
|
| |
it's options COMPAT_OLDISA and COMPAT_OLDPCI. This is meant to be a
fairly strong incentive to update the older drivers to newbus, but doesn't
(quite) leave anybody hanging with no hardware support. I was talking with
a few folks and I was encouraged to simply break or disable the shims but
that was a bit too drastic for my liking.
|
|
|
|
| |
when the BIOS is forgetful about initialising the USB controllers.
|
|
|
|
|
|
|
| |
platform we're running on so we know how many bits to reserve at the top
end for the 'hose' value. It turns out that there's *just* enough room
to support all possible hoses on TurboLaser.
Reviewed by: gallatin@freebsd.org, dfr@free3bsd.org
|
|
|
|
|
|
|
| |
o ``<device name>'' versus ``device name'' for things that fall under nomatch.
Reviewed by: dfr (in principle)
Approved by: Baron von Hubbard
|
|
|
|
|
|
|
|
| |
from useful drivers such as the 3D DRI drivers I will be porting for
hardware accelerated OpenGL. The hardware will still be reported during
boot using the nomatch system.
Approved by: jkh
|
|
|
|
| |
Approved by: jkh (who must be very sick of requests now :-)
|