which bustype should be attached with a specific call to config_found()
(from a "mainbus" or a bus bridge).
Do it for isa/eisa/mca and pci/agp for now. These buses all attach to
an mi interface attribute "isabus", "eisabus" etc., and the autoconf
framework now allows to specify an interface attribute on config_found()
and config_search(), which limits the search of matching config data
to these which attach to that specific attribute.
So we basically have to call config_found_ia(..., "foobus", ...) where
such a bus is attached.
As a consequence, where a "mainbus" or alike also attaches other
devices (eg CPUs) which do not attach to a specific attribute yet,
we need at least pass an attribute name (different from "foobus") so
that the foo bus is not found at these places. This made some minor
changes necessary which are not obviously related to the mentioned buses.
(E++):
o The static configuration table now identifies by HPC offset.
o Added sq(4) entries for IP12, IP20, and IP24.
o Accomodated HPC revision forcing based on kernel config flags.
adapter) to work on IP24:
o Force HPC and GIO slot endianness.
o Allow slots one and two to be masters and configure for
realtime mode.
Also, while we're here move IP22 invariants into the IP22 case.
I suspect that IP20 will work as well since it exhibited the same
broken DMA that IP24 did before I flipped the master bit.
Note:
- I don't have any hardware docments for this device, so this driver might
have some odd descriptions guessed by results of try-and-errors.
(the only info I have is the Linux driver, but I think it doesn't describe
the hardware specifications very well anyway)
- All RX packets and most TX packets are copied from/to buffers in the driver
due to hardware restriction, so performance is not so good for now.
Maybe RX packets can be directly DMA'ed to mbufs by the same method used
of fxp(4), but the hardware seems to require 4kbyte aligned RX buffers.
- Multicast filter setup function is not tested yet (no info).
- Currently only tested on R5000 O2 with disabled L2 cache, so needs
more tests on other CPU (i.e. RM5200/R10000/R12000) models.
- Currently BUS_DMA_COHERENT is not used for the device control data DMA
to avoid performance issue on memcpy() against RX buffers, but it might be
problematic when L2 cache is enabled or on R10000 models.
* if the driver hasn't been properly initialized, spin for a bit in wait_fifo()
rather than try to access the local0 status register.
* allow interrupt sharing (from Steve Rumble; necessary for IP20 glass TTY
support).
* fills seem to be broken. Avoid filling large vertical regions; instead,
attempt to break it up into managable chunks. This doesn't work perfectly
either, so clear the screen row-by-row (which does work).
* Characters are now right-side-up
* the driver now uses screen coordinates properly.
With the exception of column erases (which fall prey to the fill issue), the
driver is now usable.
to all GENERIC-like kernel config files where SYSV* options were already
present (commented out if the SYSV* options are commented out).
Fix lib/25897 and lib/25898.