Home | History | Annotate | only in /src/sys/arch/sgimips/gio
History log of /src/sys/arch/sgimips/gio
RevisionDateAuthorComments
 1.6 10-Jan-2014  christos include bsd.own.mk
 1.5 19-Oct-2008  apb branches: 1.5.28; 1.5.38; 1.5.44;
Use ${TOOL_AWK} instead of ${AWK} or plain "awk" in make commands.
Pass AWK=${TOOL_AWK:Q} to shell scripts that use awk.
 1.4 11-Dec-2005  christos branches: 1.4.74; 1.4.78; 1.4.84;
merge ktrace-lwp.
 1.3 11-Jan-2004  sekiya Reinstate symbolic device names -- I completely forgot about their use.
Reminder courtesy soren@
 1.2 10-Jan-2004  sekiya Add framework for gio card identification based on product ID. devlist2h.awk
was borrowed from sys/dev/pcmcia.
 1.1 14-Jun-2000  soren branches: 1.1.4; 1.1.6; 1.1.30;
Simple GIO glue.
 1.1.30.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.30.2 18-Sep-2004  skrll Sync with HEAD.
 1.1.30.1 03-Aug-2004  skrll Sync with HEAD
 1.1.6.2 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.1.6.1 14-Jun-2000  bouyer file Makefile.giodevs was added on branch thorpej_scsipi on 2000-11-20 20:23:42 +0000
 1.1.4.2 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.1.4.1 14-Jun-2000  minoura file Makefile.giodevs was added on branch minoura-xpg4dl on 2000-06-22 17:03:06 +0000
 1.4.84.1 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.4.78.1 04-May-2009  yamt sync with head.
 1.4.74.1 17-Jan-2009  mjf Sync with HEAD.
 1.5.44.1 18-May-2014  rmind sync with head
 1.5.38.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5.28.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.6 03-Jun-2017  christos remove my copyright
 1.5 02-May-2008  martin branches: 1.5.44; 1.5.64;
Move TNF licenses to 2 clause form
 1.4 11-Dec-2005  christos branches: 1.4.74; 1.4.76; 1.4.78;
merge ktrace-lwp.
 1.3 03-Jun-2005  martin Make the output proper constified.
 1.2 11-Jan-2004  sekiya branches: 1.2.4;
Reinstate symbolic device names -- I completely forgot about their use.
Reminder courtesy soren@
 1.1 10-Jan-2004  sekiya Add framework for gio card identification based on product ID. devlist2h.awk
was borrowed from sys/dev/pcmcia.
 1.2.4.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.2.4.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.2.4.3 18-Sep-2004  skrll Sync with HEAD.
 1.2.4.2 03-Aug-2004  skrll Sync with HEAD
 1.2.4.1 11-Jan-2004  skrll file devlist2h.awk was added on branch ktrace-lwp on 2004-08-03 10:40:05 +0000
 1.4.78.1 16-May-2008  yamt sync with head.
 1.4.76.1 18-May-2008  yamt sync with head.
 1.4.74.1 02-Jun-2008  mjf Sync with HEAD.
 1.5.64.1 28-Aug-2017  skrll Sync with HEAD
 1.5.44.1 03-Dec-2017  jdolecek update from HEAD
 1.11 12-Feb-2009  rumble Enable Personal IRIS 4D/20 and 4D/25 support:
- Adapt int(4) to handle the INT1 chip
- Move generic rtc clocks out of hpc/ and into dev/
- Handle the very strangely wired eeprom and other bits in arcemu
- Sprinkle MACH_SGI_IP6 as necessary
- Enable IP6/IP10 devices in GENERIC32_IP12. Yes, the naming is poor but
there's no winning with kernel/hw compatibility on sgimips...

Tested on my 4D/25. Doesn't (appear to) break macallan@'s IP22.
 1.10 12-Feb-2009  macallan Become a good vcons citizen.
Also, don't use the cursor sprite as text cursor - it's not worth the pain and
the sprite doesn't have an invert-background plane either so the cursor wasn't
transparent.
Instead blit the cursor using the appropriate ROPs. This way we get rid of the
cursor misplacement problem as well.
While there also use device_t.
TODO: arbitrary font sizes, cleanup, support for mapping all blitter registers
so we can use them from X.
 1.9 29-Dec-2006  rumble branches: 1.9.48; 1.9.56; 1.9.58; 1.9.62; 1.9.66;
Enable light(4).
 1.8 30-Aug-2006  rumble branches: 1.8.2;
Provide a pseudo-pci bus for the following PCI ethernet boards, which live
behind custom PCI<->GIO bridges:
- Set Engineering GIO Fast Ethernet (TI ThunderLAN)
- Phobos G100 (DEC 21140?)
- Phobos G130 (DEC 21143)
- Phobos G160 (DEC 21143)

All boards present the chipsets' pci configuration registers at some
defined offset in their slots' address space as well as device registers.
We simply allow the MI pci subsystem to attach the devices.

This has been tested with a G130 board (DEC 21143) and works well on IP20
and IP24. The Set Engineering board attaches, works fine when receiving and
lightly transmitting, but chokes for unknown reasons on heavy transmits.
The tl(4) driver may need some fixing.
 1.7 11-Dec-2005  christos branches: 1.7.4; 1.7.8; 1.7.18;
merge ktrace-lwp.
 1.6 06-Jul-2004  sekiya branches: 1.6.12;
Many fixes to the grtwo wscons driver:

* 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.
 1.5 18-Mar-2004  sekiya Add GR2.
 1.4 15-Dec-2003  lonewolf Support for SGI NG1 ("newport") graphics controller.
 1.3 13-Mar-2002  simonb branches: 1.3.12;
Replace lots of 8x<space> with <tabs> and other miscellaneous indentation
fixes.
Wrap a couple of long lines.
Use <return-type>\n<function name> as per KNF in a few places.
 1.2 11-May-2001  thorpej branches: 1.2.2; 1.2.8;
Autoconfiguration glue changes for Indigo2/Indy support.
 1.1 14-Jun-2000  soren branches: 1.1.4; 1.1.6; 1.1.8;
Simple GIO glue.
 1.1.8.1 21-Jun-2001  nathanw Catch up to -current.
 1.1.6.2 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.1.6.1 14-Jun-2000  bouyer file files.gio was added on branch thorpej_scsipi on 2000-11-20 20:23:42 +0000
 1.1.4.2 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.1.4.1 14-Jun-2000  minoura file files.gio was added on branch minoura-xpg4dl on 2000-06-22 17:03:06 +0000
 1.2.8.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.2.8.1 11-May-2001  nathanw file files.gio was added on branch nathanw_sa on 2002-04-01 07:42:21 +0000
 1.2.2.1 16-Mar-2002  jdolecek Catch up with -current.
 1.3.12.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.3.12.2 18-Sep-2004  skrll Sync with HEAD.
 1.3.12.1 03-Aug-2004  skrll Sync with HEAD
 1.6.12.1 30-Dec-2006  yamt sync with head.
 1.7.18.1 10-Sep-2006  tron Pull up following revision(s) (requested by rumble in ticket #137):
sys/arch/sgimips/gio/pci_gio.c: revision 1.1
sys/arch/sgimips/gio/files.gio: revision 1.8
Provide a pseudo-pci bus for the following PCI ethernet boards, which live
behind custom PCI<->GIO bridges:
- Set Engineering GIO Fast Ethernet (TI ThunderLAN)
- Phobos G100 (DEC 21140?)
- Phobos G130 (DEC 21143)
- Phobos G160 (DEC 21143)
All boards present the chipsets' pci configuration registers at some
defined offset in their slots' address space as well as device registers.
We simply allow the MI pci subsystem to attach the devices.
This has been tested with a G130 board (DEC 21143) and works well on IP20
and IP24. The Set Engineering board attaches, works fine when receiving and
lightly transmitting, but chokes for unknown reasons on heavy transmits.
The tl(4) driver may need some fixing.
 1.7.8.1 03-Sep-2006  yamt sync with head.
 1.7.4.1 09-Sep-2006  rpaulo sync with head
 1.8.2.1 12-Jan-2007  ad Sync with head.
 1.9.66.1 29-Dec-2010  matt Merge changes from netbsd-5.
 1.9.62.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.9.58.1 26-Sep-2009  snj Pull up following revision(s) (requested by macallan in ticket #981):
sys/arch/sgimips/gio/files.gio: revision 1.10
sys/arch/sgimips/gio/newport.c: revision 1.12
Become a good vcons citizen.
Also, don't use the cursor sprite as text cursor - it's not worth the
pain and the sprite doesn't have an invert-background plane either so
the cursor wasn't transparent.
Instead blit the cursor using the appropriate ROPs. This way we get
rid of the cursor misplacement problem as well.
While there also use device_t.
TODO: arbitrary font sizes, cleanup, support for mapping all blitter
registers so we can use them from X.
 1.9.56.1 03-Mar-2009  skrll Sync with HEAD.
 1.9.48.1 04-May-2009  yamt sync with head.
 1.38 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.37 24-Apr-2021  thorpej branches: 1.37.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.36 21-Nov-2019  macallan branches: 1.36.10;
ga_iot = 0 -> normal_memt
now a Challenge S should work again
from George Harvey
 1.35 20-Jul-2016  macallan branches: 1.35.16;
use bus_space_map() instead of fudging our own bus_space_handle_t
 1.34 18-Feb-2015  macallan branches: 1.34.2;
switch sgimips to common bus_dma and bus_space in arch/mips/
Tested on O2 and Indy.
Things that are compile-tested only for lack of hardware:
- GIO ethernet cards with PCI bridges
- IP2x hardware not found on Indy
- IP1x
 1.33 27-Oct-2012  chs branches: 1.33.14;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.32 01-Jul-2011  dyoung branches: 1.32.2; 1.32.12;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.31 18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.30 10-Feb-2009  rumble Be selective on match, since it makes sense to combine an IP12 and IP6
kernel and IP6 has no GIO bus.
 1.29 22-Feb-2007  thorpej branches: 1.29.46; 1.29.54; 1.29.60;
TRUE -> true, FALSE -> false
 1.28 21-Feb-2007  thorpej Replace the Mach-derived boolean_t type with the C99 bool type. A
future commit will replace use of TRUE and FALSE with true and false.
 1.27 19-Feb-2007  rumble Support the sq(4) interface on the Challenge S's IOPLUS mezzanine. This
requires us to configure the IOPLUS to use the appropriate DMA channel,
depending on what other expansion cards may be installed. Further, we need
to do a bit more configuration of the sq(4) DMA engine, which apparently
was formerly being configured properly by the PROM. Use the same values,
which appear to work fine.

Also, extend the gio_arb_config interface as needed.

NB: We're currently setting the IOPLUS board to long burst, but it may be
better to use realtime. This will require some experimentation.
 1.26 29-Dec-2006  rumble branches: 1.26.2;
IP12 (and perhaps other systems) appear to be buggy and incapable of
reliably supporting badaddr(). False negatives appear to occur
approximately 1.8 percent of the time, although neither false positives
nor consecutive false negatives occur. We take advantage of the latter
property and always use a wrapper that makes multiple checks.

My IP12 no longer sees occasional ghost devices and related panics during
boot.
 1.25 29-Dec-2006  rumble Enable light(4).
 1.24 29-Dec-2006  rumble Rework GIO probing a bit.

Devices present on the GIO bus needn't always provide a Product
Indentification Word, even if their address space is the same as the
address space of a slot. Separate the handling of probing for slot-based
devices and graphics devices, matching the latter first, and precluding
addresses probed for the former when a graphics device is known to exist
in a slot's space.
 1.23 22-Dec-2006  rumble Indigo and Indigo2 machines have only one shared interrupt for the two
GIO slots. This differs from Indy, which has an interrupt per slot, neither
of which is the same as on the other two machines.

This lets my Phobos G160 run in both slots in my Indigo2 and my E++ adapter
works in both slots in my Indigo.
 1.22 30-Aug-2006  rumble branches: 1.22.2;
Implement the gio_arb_config() interface for changing the machine-specific
gio bus arbiter parameters via imc(4) or pic(4).

Slots are identified by name: GIO_SLOT_GFX, GIO_SLOT_EXP1, GIO_SLOT_EXP2.

Provide some helper functions for establishing interrupts associated with
each slot and obtaining product descriptions.
 1.21 11-Dec-2005  christos branches: 1.21.4; 1.21.8; 1.21.18;
merge ktrace-lwp.
 1.20 26-Aug-2005  drochner s/locdesc_t/int/g
 1.19 30-Jun-2005  drochner branches: 1.19.2;
adaptions to config_search() change, and minor autoconf fixes, mostly from Havard Eidnes
 1.18 28-Jun-2005  drochner convert remaining autoconf bus "submatch" functions to use the new
signature (passing locators), and remove some which obviously don't
serve any purpose
(untested, sorry)
 1.17 29-Sep-2004  sekiya Use ANSI function declarations.
 1.16 06-Jul-2004  sekiya Many fixes to the grtwo wscons driver:

* 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.
 1.15 18-Mar-2004  sekiya Add console attach glue for GR2.
 1.14 11-Jan-2004  sekiya Reinstate symbolic device names -- I completely forgot about their use.
Reminder courtesy soren@
 1.13 10-Jan-2004  sekiya Add framework for gio card identification based on product ID. devlist2h.awk
was borrowed from sys/dev/pcmcia.
 1.12 15-Dec-2003  lonewolf Implement direct configuration for GIO devices.

XXX Still needs a way to handle Indigo2 spurious "productid 0x04 revision 0x00"
XXX phantom devices.
 1.11 17-Nov-2003  keihan www.netbsd.org -> www.NetBSD.org
 1.10 15-Jul-2003  lukem __KERNEL_RCSID()
 1.9 01-Jan-2003  thorpej branches: 1.9.2;
Use aprint_normal() for cfprint routines.
 1.8 09-Nov-2002  thorpej Fix signed/unsigned comparison warnings.
 1.7 02-Oct-2002  thorpej Add trailing ; to CFATTACH_DECL.
 1.6 01-Oct-2002  thorpej Use CFATTACH_DECL().
 1.5 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.4 27-Sep-2002  thorpej Introduce a new routine, config_match(), which invokes the
cfattach->ca_match function in behalf of the caller. Use it
rather than invoking cfattach->ca_match directly.
 1.3 27-Sep-2002  thorpej Rather than referencing the cfdriver directly in the cfdata entries,
instead use a string naming the driver. The cfdriver is then looked
up in a list which is built at run-time.
 1.2 13-Mar-2002  simonb Replace lots of 8x<space> with <tabs> and other miscellaneous indentation
fixes.
Wrap a couple of long lines.
Use <return-type>\n<function name> as per KNF in a few places.
 1.1 14-Jun-2000  soren branches: 1.1.4; 1.1.6; 1.1.10; 1.1.14;
Simple GIO glue.
 1.1.14.4 03-Jan-2003  thorpej Sync with HEAD.
 1.1.14.3 11-Nov-2002  nathanw Catch up to -current
 1.1.14.2 18-Oct-2002  nathanw Catch up to -current.
 1.1.14.1 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.1.10.2 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.1.10.1 16-Mar-2002  jdolecek Catch up with -current.
 1.1.6.2 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.1.6.1 14-Jun-2000  bouyer file gio.c was added on branch thorpej_scsipi on 2000-11-20 20:23:42 +0000
 1.1.4.2 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.1.4.1 14-Jun-2000  minoura file gio.c was added on branch minoura-xpg4dl on 2000-06-22 17:03:06 +0000
 1.9.2.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.9.2.4 19-Oct-2004  skrll Sync with HEAD
 1.9.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.9.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.9.2.1 03-Aug-2004  skrll Sync with HEAD
 1.19.2.3 26-Feb-2007  yamt sync with head.
 1.19.2.2 30-Dec-2006  yamt sync with head.
 1.19.2.1 21-Jun-2006  yamt sync with head.
 1.21.18.1 10-Sep-2006  tron Pull up following revision(s) (requested by rumble in ticket #137):
sys/arch/sgimips/gio/gio.c: revision 1.22
sys/arch/sgimips/gio/giovar.h: revision 1.7
Implement the gio_arb_config() interface for changing the machine-specific
gio bus arbiter parameters via imc(4) or pic(4).
Slots are identified by name: GIO_SLOT_GFX, GIO_SLOT_EXP1, GIO_SLOT_EXP2.
Provide some helper functions for establishing interrupts associated with
each slot and obtaining product descriptions.
 1.21.8.1 03-Sep-2006  yamt sync with head.
 1.21.4.1 09-Sep-2006  rpaulo sync with head
 1.22.2.1 12-Jan-2007  ad Sync with head.
 1.26.2.1 27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.29.60.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.29.54.2 28-Apr-2009  skrll Sync with HEAD.
 1.29.54.1 03-Mar-2009  skrll Sync with HEAD.
 1.29.46.1 04-May-2009  yamt sync with head.
 1.32.12.2 03-Dec-2017  jdolecek update from HEAD
 1.32.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.32.2.1 30-Oct-2012  yamt sync with head
 1.33.14.2 05-Oct-2016  skrll Sync with HEAD
 1.33.14.1 06-Apr-2015  skrll Sync with HEAD
 1.34.2.1 26-Jul-2016  pgoyette Sync with HEAD
 1.35.16.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.36.10.8 05-Apr-2021  thorpej Treat config_probe() as if it were a boolean function; don't compare
return value > 0... except for the odd balls, which are now really easy
to spot.
 1.36.10.7 05-Apr-2021  thorpej config_match() -> config_probe() for the straight-forward indirect config
cases. There are still a few odd balls using config_match() which should
be sorted out later.
 1.36.10.6 04-Apr-2021  thorpej CFARG_SUBMATCH -> CFARG_SEARCH for the indirect configuration uses.
 1.36.10.5 03-Apr-2021  thorpej Give config_attach() the tagged variadic argument treatment and
mechanically convert all call sites.
 1.36.10.4 22-Mar-2021  thorpej Audit CFARG_IATTR in config_found() calls, and remove it in situations
where the interface attribute is not ambiguous.
 1.36.10.3 22-Mar-2021  thorpej Mechanical conversion of config_found_sm_loc() -> config_found().
CFARG_IATTR usage needs to be audited.
 1.36.10.2 21-Mar-2021  thorpej CFARG_IATTR usage audit:

If a device carries only one interface attribute, there is no need
to specify it when calling config_search(); that specification is
meant only to disambiguate which interface attribute (which is a
proxy for "what kind of attach args are being used") is having
children attached. cfparent_match() will take care of ensuring that
any potential children can attach to one of the parent's iterface
attributes, and if the parent only carries one, no disambiguation is
necessary.
 1.36.10.1 20-Mar-2021  thorpej The proliferation if config_search_*() and config_found_*() combinations
is a little absurd, so begin to tidy this up:

- Introduce a new cfarg_t enumerated type, that defines the types of
tag-value variadic arguments that can be passed to the various
config_*() functions (CFARG_SUBMATCH, CFARG_IATTR, and CFARG_LOCATORS,
for now, plus a CFARG_EOL sentinel).
- Collapse config_search_*() into config_search() that takes these
variadic arguments.
- Convert all call sites of config_search_*() to the new signature.
Noticed several incorrect usages along the way, which will be
audited in a future commit.
 1.37.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.8 19-Feb-2007  rumble PHOBOS_G100 is 100Mbit only - don't lie. Also, make it clear that
SETENG_GFE is 10/100.
 1.7 20-Jul-2006  rumble branches: 1.7.10;
Beautify.
 1.6 20-Jul-2006  rumble Add entries for the Phobos G100, G130 and Set Engineering GIO Fast Ethernet
cards.
 1.5 11-Dec-2005  christos branches: 1.5.4; 1.5.8;
merge ktrace-lwp.
 1.4 17-Apr-2005  rumble branches: 1.4.2;
Add the $NetBSD$ tag and some whitespace. When we previously
started the device list on the first line the awk script would
skip the first entry.
 1.3 11-Jan-2004  sekiya branches: 1.3.8;
Reinstate symbolic device names -- I completely forgot about their use.
Reminder courtesy soren@
 1.2 10-Jan-2004  sekiya Add framework for gio card identification based on product ID. devlist2h.awk
was borrowed from sys/dev/pcmcia.
 1.1 14-Jun-2000  soren branches: 1.1.4; 1.1.6; 1.1.30;
Simple GIO glue.
 1.1.30.2 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.1.30.1 03-Aug-2004  skrll Sync with HEAD
 1.1.6.2 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.1.6.1 14-Jun-2000  bouyer file giodevs was added on branch thorpej_scsipi on 2000-11-20 20:23:42 +0000
 1.1.4.2 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.1.4.1 14-Jun-2000  minoura file giodevs was added on branch minoura-xpg4dl on 2000-06-22 17:03:07 +0000
 1.3.8.1 29-Apr-2005  kent sync with -current
 1.4.2.2 26-Feb-2007  yamt sync with head.
 1.4.2.1 30-Dec-2006  yamt sync with head.
 1.5.8.1 11-Aug-2006  yamt sync with head
 1.5.4.1 09-Sep-2006  rpaulo sync with head
 1.7.10.1 27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.7 19-Feb-2007  rumble regen.
 1.6 20-Jul-2006  rumble branches: 1.6.10;
Regen.
 1.5 11-Dec-2005  christos branches: 1.5.4; 1.5.8;
merge ktrace-lwp.
 1.4 03-Jun-2005  martin branches: 1.4.2;
Regen (with proper consts)
 1.3 17-Apr-2005  rumble regen
 1.2 11-Jan-2004  sekiya branches: 1.2.4; 1.2.10;
Reinstate symbolic device names -- I completely forgot about their use.
Reminder courtesy soren@
 1.1 10-Jan-2004  sekiya Add framework for gio card identification based on product ID. devlist2h.awk
was borrowed from sys/dev/pcmcia.
 1.2.10.1 29-Apr-2005  kent sync with -current
 1.2.4.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.2.4.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.2.4.3 18-Sep-2004  skrll Sync with HEAD.
 1.2.4.2 03-Aug-2004  skrll Sync with HEAD
 1.2.4.1 11-Jan-2004  skrll file giodevs.h was added on branch ktrace-lwp on 2004-08-03 10:40:05 +0000
 1.4.2.2 26-Feb-2007  yamt sync with head.
 1.4.2.1 30-Dec-2006  yamt sync with head.
 1.5.8.1 11-Aug-2006  yamt sync with head
 1.5.4.1 09-Sep-2006  rpaulo sync with head
 1.6.10.1 27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.6 19-Feb-2007  rumble regen.
 1.5 20-Jul-2006  rumble branches: 1.5.10;
Regen.
 1.4 11-Dec-2005  christos branches: 1.4.4; 1.4.8;
merge ktrace-lwp.
 1.3 03-Jun-2005  martin branches: 1.3.2;
Regen (with proper consts)
 1.2 17-Apr-2005  rumble regen
 1.1 11-Jan-2004  sekiya branches: 1.1.4; 1.1.10;
Reinstate symbolic device names -- I completely forgot about their use.
Reminder courtesy soren@
 1.1.10.1 29-Apr-2005  kent sync with -current
 1.1.4.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.1.4.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.4.3 18-Sep-2004  skrll Sync with HEAD.
 1.1.4.2 03-Aug-2004  skrll Sync with HEAD
 1.1.4.1 11-Jan-2004  skrll file giodevs_data.h was added on branch ktrace-lwp on 2004-08-03 10:40:05 +0000
 1.3.2.2 26-Feb-2007  yamt sync with head.
 1.3.2.1 30-Dec-2006  yamt sync with head.
 1.4.8.1 11-Aug-2006  yamt sync with head
 1.4.4.1 09-Sep-2006  rpaulo sync with head
 1.5.10.1 27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.4 31-Aug-2006  rumble Describe the GIO Product Identification Word and add a few macros to
extract other fields.
 1.3 11-Dec-2005  christos branches: 1.3.4; 1.3.8;
merge ktrace-lwp.
 1.2 15-Dec-2003  lonewolf branches: 1.2.16;
Implement direct configuration for GIO devices.

XXX Still needs a way to handle Indigo2 spurious "productid 0x04 revision 0x00"
XXX phantom devices.
 1.1 14-Jun-2000  soren branches: 1.1.4; 1.1.6; 1.1.30;
Simple GIO glue.
 1.1.30.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.30.2 18-Sep-2004  skrll Sync with HEAD.
 1.1.30.1 03-Aug-2004  skrll Sync with HEAD
 1.1.6.2 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.1.6.1 14-Jun-2000  bouyer file gioreg.h was added on branch thorpej_scsipi on 2000-11-20 20:23:43 +0000
 1.1.4.2 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.1.4.1 14-Jun-2000  minoura file gioreg.h was added on branch minoura-xpg4dl on 2000-06-22 17:03:08 +0000
 1.2.16.1 30-Dec-2006  yamt sync with head.
 1.3.8.1 03-Sep-2006  yamt sync with head.
 1.3.4.1 09-Sep-2006  rpaulo sync with head
 1.10 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.9 19-Feb-2007  rumble Support the sq(4) interface on the Challenge S's IOPLUS mezzanine. This
requires us to configure the IOPLUS to use the appropriate DMA channel,
depending on what other expansion cards may be installed. Further, we need
to do a bit more configuration of the sq(4) DMA engine, which apparently
was formerly being configured properly by the PROM. Use the same values,
which appear to work fine.

Also, extend the gio_arb_config interface as needed.

NB: We're currently setting the IOPLUS board to long burst, but it may be
better to use realtime. This will require some experimentation.
 1.8 29-Dec-2006  rumble branches: 1.8.2;
Rework GIO probing a bit.

Devices present on the GIO bus needn't always provide a Product
Indentification Word, even if their address space is the same as the
address space of a slot. Separate the handling of probing for slot-based
devices and graphics devices, matching the latter first, and precluding
addresses probed for the former when a graphics device is known to exist
in a slot's space.
 1.7 30-Aug-2006  rumble branches: 1.7.2;
Implement the gio_arb_config() interface for changing the machine-specific
gio bus arbiter parameters via imc(4) or pic(4).

Slots are identified by name: GIO_SLOT_GFX, GIO_SLOT_EXP1, GIO_SLOT_EXP2.

Provide some helper functions for establishing interrupts associated with
each slot and obtaining product descriptions.
 1.6 11-Dec-2005  christos branches: 1.6.4; 1.6.8; 1.6.18;
merge ktrace-lwp.
 1.5 29-Sep-2004  sekiya branches: 1.5.12;
Use ANSI function declarations.
 1.4 15-Dec-2003  lonewolf Implement direct configuration for GIO devices.

XXX Still needs a way to handle Indigo2 spurious "productid 0x04 revision 0x00"
XXX phantom devices.
 1.3 17-Nov-2003  keihan www.netbsd.org -> www.NetBSD.org
 1.2 13-Mar-2002  simonb branches: 1.2.12;
Replace lots of 8x<space> with <tabs> and other miscellaneous indentation
fixes.
Wrap a couple of long lines.
Use <return-type>\n<function name> as per KNF in a few places.
 1.1 14-Jun-2000  soren branches: 1.1.4; 1.1.6; 1.1.10; 1.1.14;
Simple GIO glue.
 1.1.14.1 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.1.10.1 16-Mar-2002  jdolecek Catch up with -current.
 1.1.6.2 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.1.6.1 14-Jun-2000  bouyer file giovar.h was added on branch thorpej_scsipi on 2000-11-20 20:23:43 +0000
 1.1.4.2 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.1.4.1 14-Jun-2000  minoura file giovar.h was added on branch minoura-xpg4dl on 2000-06-22 17:03:08 +0000
 1.2.12.4 19-Oct-2004  skrll Sync with HEAD
 1.2.12.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.2.12.2 18-Sep-2004  skrll Sync with HEAD.
 1.2.12.1 03-Aug-2004  skrll Sync with HEAD
 1.5.12.2 26-Feb-2007  yamt sync with head.
 1.5.12.1 30-Dec-2006  yamt sync with head.
 1.6.18.1 10-Sep-2006  tron Pull up following revision(s) (requested by rumble in ticket #137):
sys/arch/sgimips/gio/gio.c: revision 1.22
sys/arch/sgimips/gio/giovar.h: revision 1.7
Implement the gio_arb_config() interface for changing the machine-specific
gio bus arbiter parameters via imc(4) or pic(4).
Slots are identified by name: GIO_SLOT_GFX, GIO_SLOT_EXP1, GIO_SLOT_EXP2.
Provide some helper functions for establishing interrupts associated with
each slot and obtaining product descriptions.
 1.6.8.1 03-Sep-2006  yamt sync with head.
 1.6.4.1 09-Sep-2006  rpaulo sync with head
 1.7.2.1 12-Jan-2007  ad Sync with head.
 1.8.2.1 27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.19 13-Dec-2023  andvar Add (intptr_t) casts to fix "cast to pointer from integer of different size",
mainly for GENERIC64_32_* configs.
Also change segp->ds_len format specifier to %lld, which fixes DMA_DEBUG build.
 1.18 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.17 24-Apr-2021  thorpej branches: 1.17.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.16 21-Nov-2020  thorpej branches: 1.16.2;
malloc(9) -> kmem(9)
 1.15 03-Sep-2018  riastradh branches: 1.15.12;
Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.14 04-Mar-2018  mrg branches: 1.14.2; 1.14.4;
#if 0 grtwo_cursor_data[] to match the #if 0'd code that uses it.
 1.13 27-Oct-2012  chs split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.12 11-Jan-2012  macallan branches: 1.12.6;
adjust for wsfont_find() change
 1.11 22-Nov-2009  mbalmer branches: 1.11.12; 1.11.16;
more s/the the/the/
 1.10 04-Mar-2007  christos branches: 1.10.44;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.9 29-Dec-2006  rumble branches: 1.9.2;
IP12 (and perhaps other systems) appear to be buggy and incapable of
reliably supporting badaddr(). False negatives appear to occur
approximately 1.8 percent of the time, although neither false positives
nor consecutive false negatives occur. We take advantage of the latter
property and always use a wrapper that makes multiple checks.

My IP12 no longer sees occasional ghost devices and related panics during
boot.
 1.8 28-Dec-2006  rumble Only probe on known supported base addresses.
 1.7 12-Apr-2006  jmmv branches: 1.7.8;
Add an extra cookie to the ioctl and mmap wsdisplay accessops that points
to the screen on which they are being called. The driver cannot guess
this by itself but it is needed to implement, at least, the getwschar and
putwschar functions in the correct place. There are no functional changes
yet.

Tested on i386 (vga, vga_raster, machfb, vesafb), macppc and sparc64.
Suggested and reviewed by macallan@.
 1.6 11-Dec-2005  christos branches: 1.6.4; 1.6.6; 1.6.8; 1.6.10; 1.6.12;
merge ktrace-lwp.
 1.5 29-Sep-2004  sekiya branches: 1.5.12;
Abbreviate identification message to fit in 80 columns.
 1.4 08-Jul-2004  sekiya branches: 1.4.2;
Remove unnecessary variables from grtwo_cnattach().
 1.3 07-Jul-2004  sekiya Oops. Remove reference to phantom variable.
 1.2 06-Jul-2004  sekiya Many fixes to the grtwo wscons driver:

* 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.
 1.1 18-Mar-2004  sekiya Checkpoint the GR2 wscons driver. Heavily derived from lonewolf@'s newport
driver. Still some issues:

* framebuffer setup seems incomplete. Some drawing primitives work 100%
of the time, while others fail one in ten tries. Perhaps my board is
slightly broken, as the exact model as probed by ARCS seems to shift
between Elan and XS24 from time to time.
* characters are drawn bottom-up rather than top-down (as the wsfont
definitions expect).
 1.4.2.6 13-Jan-2005  skrll Adapt to branch
 1.4.2.5 19-Oct-2004  skrll Sync with HEAD
 1.4.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.4.2.2 03-Aug-2004  skrll Sync with HEAD
 1.4.2.1 08-Jul-2004  skrll file grtwo.c was added on branch ktrace-lwp on 2004-08-03 10:40:06 +0000
 1.5.12.3 03-Sep-2007  yamt sync with head.
 1.5.12.2 30-Dec-2006  yamt sync with head.
 1.5.12.1 21-Jun-2006  yamt sync with head.
 1.6.12.1 24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.6.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.6.8.1 24-May-2006  yamt sync with head.
 1.6.6.1 22-Apr-2006  simonb Sync with head.
 1.6.4.1 09-Sep-2006  rpaulo sync with head
 1.7.8.1 12-Jan-2007  ad Sync with head.
 1.9.2.1 12-Mar-2007  rmind Sync with HEAD.
 1.10.44.1 11-Mar-2010  yamt sync with head
 1.11.16.1 18-Feb-2012  mrg merge to -current.
 1.11.12.2 30-Oct-2012  yamt sync with head
 1.11.12.1 17-Apr-2012  yamt sync with head
 1.12.6.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.14.4.1 10-Jun-2019  christos Sync with HEAD
 1.14.2.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.15.12.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.16.2.1 21-Mar-2021  thorpej Give config_found() the same variadic arguments treatment as
config_search(). This commit only adds the CFARG_EOL sentinel
to the existing config_found() calls. Conversion of config_found_sm_loc()
and config_found_ia() call sites will be in subsequent commits.
 1.17.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.2 11-Dec-2005  christos merge ktrace-lwp.
 1.1 18-Mar-2004  sekiya branches: 1.1.4;
Add register definitions and console prototype header for the SGI GR2 family
of framebuffers.
 1.1.4.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.4.3 18-Sep-2004  skrll Sync with HEAD.
 1.1.4.2 03-Aug-2004  skrll Sync with HEAD
 1.1.4.1 18-Mar-2004  skrll file grtworeg.h was added on branch ktrace-lwp on 2004-08-03 10:40:06 +0000
 1.3 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.2 11-Dec-2005  christos merge ktrace-lwp.
 1.1 18-Mar-2004  sekiya branches: 1.1.4;
Add register definitions and console prototype header for the SGI GR2 family
of framebuffers.
 1.1.4.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.4.3 18-Sep-2004  skrll Sync with HEAD.
 1.1.4.2 03-Aug-2004  skrll Sync with HEAD
 1.1.4.1 18-Mar-2004  skrll file grtwovar.h was added on branch ktrace-lwp on 2004-08-03 10:40:06 +0000
 1.8 10-Dec-2003  lonewolf Garbage collect unused file.
 1.7 17-Nov-2003  keihan www.netbsd.org -> www.NetBSD.org
 1.6 15-Jul-2003  lukem __KERNEL_RCSID()
 1.5 02-Oct-2002  thorpej branches: 1.5.6;
Add trailing ; to CFATTACH_DECL.
 1.4 01-Oct-2002  thorpej Use CFATTACH_DECL().
 1.3 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.2 13-Mar-2002  simonb Replace lots of 8x<space> with <tabs> and other miscellaneous indentation
fixes.
Wrap a couple of long lines.
Use <return-type>\n<function name> as per KNF in a few places.
 1.1 14-Jun-2000  soren branches: 1.1.4; 1.1.6; 1.1.10; 1.1.14;
Simple GIO glue.
 1.1.14.2 18-Oct-2002  nathanw Catch up to -current.
 1.1.14.1 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.1.10.2 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.1.10.1 16-Mar-2002  jdolecek Catch up with -current.
 1.1.6.2 20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.1.6.1 14-Jun-2000  bouyer file hpc.c was added on branch thorpej_scsipi on 2000-11-20 20:23:43 +0000
 1.1.4.2 22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.1.4.1 14-Jun-2000  minoura file hpc.c was added on branch minoura-xpg4dl on 2000-06-22 17:03:09 +0000
 1.5.6.1 03-Aug-2004  skrll Sync with HEAD
 1.11 13-Dec-2023  andvar Add (intptr_t) casts to fix "cast to pointer from integer of different size",
mainly for GENERIC64_32_* configs.
Also change segp->ds_len format specifier to %lld, which fixes DMA_DEBUG build.
 1.10 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.9 24-Apr-2021  thorpej branches: 1.9.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.8 21-Nov-2020  thorpej branches: 1.8.2;
malloc(9) -> kmem(9)
 1.7 27-Oct-2012  chs branches: 1.7.50;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.6 11-Jan-2012  macallan branches: 1.6.6;
adjust for wsfont_find() change
 1.5 04-Mar-2007  christos branches: 1.5.78; 1.5.82;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.4 29-Dec-2006  rumble branches: 1.4.2; 1.4.4; 1.4.6;
IP12 (and perhaps other systems) appear to be buggy and incapable of
reliably supporting badaddr(). False negatives appear to occur
approximately 1.8 percent of the time, although neither false positives
nor consecutive false negatives occur. We take advantage of the latter
property and always use a wrapper that makes multiple checks.

My IP12 no longer sees occasional ghost devices and related panics during
boot.
 1.3 29-Dec-2006  rumble Actually probe for the device when matching.
 1.2 28-Dec-2006  rumble Permit mmap, improve register definitions, disable the hardware cursor, and
other minor nits.
 1.1 26-Dec-2006  rumble Bring in support for the SGI Light/Entry/Starter LG1/LG2 framebuffers
found in Indigo systems.
 1.4.6.1 12-Mar-2007  rmind Sync with HEAD.
 1.4.4.2 12-Jan-2007  ad Sync with head.
 1.4.4.1 29-Dec-2006  ad file light.c was added on branch newlock2 on 2007-01-12 01:00:57 +0000
 1.4.2.3 03-Sep-2007  yamt sync with head.
 1.4.2.2 30-Dec-2006  yamt sync with head.
 1.4.2.1 29-Dec-2006  yamt file light.c was added on branch yamt-lazymbuf on 2006-12-30 20:46:53 +0000
 1.5.82.1 18-Feb-2012  mrg merge to -current.
 1.5.78.2 30-Oct-2012  yamt sync with head
 1.5.78.1 17-Apr-2012  yamt sync with head
 1.6.6.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.7.50.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.8.2.1 21-Mar-2021  thorpej Give config_found() the same variadic arguments treatment as
config_search(). This commit only adds the CFARG_EOL sentinel
to the existing config_found() calls. Conversion of config_found_sm_loc()
and config_found_ia() call sites will be in subsequent commits.
 1.9.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.3 29-Dec-2006  rumble branches: 1.3.2; 1.3.4;
Actually probe for the device when matching.
 1.2 28-Dec-2006  rumble Permit mmap, improve register definitions, disable the hardware cursor, and
other minor nits.
 1.1 26-Dec-2006  rumble Bring in support for the SGI Light/Entry/Starter LG1/LG2 framebuffers
found in Indigo systems.
 1.3.4.2 12-Jan-2007  ad Sync with head.
 1.3.4.1 29-Dec-2006  ad file lightreg.h was added on branch newlock2 on 2007-01-12 01:00:57 +0000
 1.3.2.2 30-Dec-2006  yamt sync with head.
 1.3.2.1 29-Dec-2006  yamt file lightreg.h was added on branch yamt-lazymbuf on 2006-12-30 20:46:53 +0000
 1.2 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.1 26-Dec-2006  rumble branches: 1.1.2; 1.1.4;
Bring in support for the SGI Light/Entry/Starter LG1/LG2 framebuffers
found in Indigo systems.
 1.1.4.2 12-Jan-2007  ad Sync with head.
 1.1.4.1 26-Dec-2006  ad file lightvar.h was added on branch newlock2 on 2007-01-12 01:00:57 +0000
 1.1.2.2 30-Dec-2006  yamt sync with head.
 1.1.2.1 26-Dec-2006  yamt file lightvar.h was added on branch yamt-lazymbuf on 2006-12-30 20:46:53 +0000
 1.23 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.22 24-Apr-2021  thorpej branches: 1.22.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.21 21-Nov-2020  thorpej branches: 1.21.2;
malloc(9) -> kmem(9)
 1.20 10-May-2019  macallan branches: 1.20.10;
general overhaul, in no particular order:
- use MIPS_PHYS_TO_KSEG1()
- get rid of duplicated rasops_allocattr() and _mapchar() methods
- use rasops_init()
- support fonts that aren't 8x16
- use fastclear mode for rectangle fills
- don't mess with XMAP9's config register
- initialize all 32 XMAP9 mode registers, just in case
- make newport_fill_rectangle() use x, y, wi, he like everyone else
- use R3G3B2 palette in preparation for alpha font support
 1.19 25-Aug-2015  macallan branches: 1.19.18;
- pass the right address to bus_space_mmap() so this works on N32 kernels
- don't mess with XMAP9 when switching to graphics mode
 1.18 02-Jun-2014  macallan branches: 1.18.4;
more __unused()
 1.17 11-Jan-2012  macallan branches: 1.17.6; 1.17.20;
adjust for wsfont_find() change
 1.16 11-Jan-2012  macallan use rasops_init(0,0)
 1.15 12-May-2009  macallan branches: 1.15.12; 1.15.16;
remove leftover debug code
 1.14 04-Mar-2009  macallan No need to have two pre-defined screen types - just adapt to whatever video
mode we find. Also, redraw screen when X exits.
TODO: find out why characters are drawn upside down, for some bizarre reason
this happens right after exiting X but the last line is normal.
 1.13 13-Feb-2009  macallan Don't bother drawing a cursor until wsdisplay attaches. This works around
the deadlock I've seen with the previous version.
While there do some KNF policing.
 1.12 12-Feb-2009  macallan Become a good vcons citizen.
Also, don't use the cursor sprite as text cursor - it's not worth the pain and
the sprite doesn't have an invert-background plane either so the cursor wasn't
transparent.
Instead blit the cursor using the appropriate ROPs. This way we get rid of the
cursor misplacement problem as well.
While there also use device_t.
TODO: arbitrary font sizes, cleanup, support for mapping all blitter registers
so we can use them from X.
 1.11 10-Feb-2009  macallan A bunch of bugfixes:
- set blitter direction appropriately so scrolling downwards works now
- remove a bunch of false +1 so we only copy/erase what we really need to
- slightly change the logic for the cursor sprite offset so it works on this
Indy ( I think what matters is VC2 revision 0 )
TODO: virtual consoles, fonts wider than 8 pixels
 1.10 04-Mar-2007  christos branches: 1.10.44; 1.10.52; 1.10.54; 1.10.58; 1.10.62;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.9 29-Dec-2006  rumble branches: 1.9.2;
IP12 (and perhaps other systems) appear to be buggy and incapable of
reliably supporting badaddr(). False negatives appear to occur
approximately 1.8 percent of the time, although neither false positives
nor consecutive false negatives occur. We take advantage of the latter
property and always use a wrapper that makes multiple checks.

My IP12 no longer sees occasional ghost devices and related panics during
boot.
 1.8 28-Dec-2006  rumble Do not rely on the Product ID Word to be 0x04 since there is no such
thing for graphics options. Since we're removing this, ensure that we can
read the probe registers before proceeding.
 1.7 12-Apr-2006  jmmv branches: 1.7.8;
Add an extra cookie to the ioctl and mmap wsdisplay accessops that points
to the screen on which they are being called. The driver cannot guess
this by itself but it is needed to implement, at least, the getwschar and
putwschar functions in the correct place. There are no functional changes
yet.

Tested on i386 (vga, vga_raster, machfb, vesafb), macppc and sparc64.
Suggested and reviewed by macallan@.
 1.6 11-Dec-2005  christos branches: 1.6.4; 1.6.6; 1.6.8; 1.6.10; 1.6.12;
merge ktrace-lwp.
 1.5 07-Feb-2004  sekiya branches: 1.5.4; 1.5.18;
More newport driver tweaks:

* detect and store vc2 revision. This is (likely) the important factor in
determining the proper cursor offset, so add a bit of logic that does the
right thing on my revision 0 vc2. This will have to be determined
empirically, revision by revision.
* take a stab at detecting framebuffer depth. SGI does it quite differently,
but their algorithm doesn't work, so we'll do it along the same lines as
linux.
* implement newport_mmap() for use by X. The necessary xsrc commits have been
made (with the notable exception of the config/cf changes, which probably
shouldn't go in until 4.4.0 has been imported).
 1.4 26-Jan-2004  lonewolf Remove unused dc_screens from the softc, the driver does not support multiple
screens.
 1.3 26-Jan-2004  sekiya Slight modifications to newport driver:

* Add resolution and depth variables to softc (for use in X driver, although
depth detection is currently problematic),
* Store more information about various chip revisions,
* Implement ioctls to help the X driver detect device presence and geometry.
 1.2 22-Jan-2004  lonewolf Correctly read the board revision.
 1.1 15-Dec-2003  lonewolf Support for SGI NG1 ("newport") graphics controller.
 1.5.18.3 03-Sep-2007  yamt sync with head.
 1.5.18.2 30-Dec-2006  yamt sync with head.
 1.5.18.1 21-Jun-2006  yamt sync with head.
 1.5.4.5 13-Jan-2005  skrll Adapt to branch
 1.5.4.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.5.4.3 18-Sep-2004  skrll Sync with HEAD.
 1.5.4.2 03-Aug-2004  skrll Sync with HEAD
 1.5.4.1 07-Feb-2004  skrll file newport.c was added on branch ktrace-lwp on 2004-08-03 10:40:06 +0000
 1.6.12.1 24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.6.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.6.8.1 24-May-2006  yamt sync with head.
 1.6.6.1 22-Apr-2006  simonb Sync with head.
 1.6.4.1 09-Sep-2006  rpaulo sync with head
 1.7.8.1 12-Jan-2007  ad Sync with head.
 1.9.2.1 12-Mar-2007  rmind Sync with HEAD.
 1.10.62.1 29-Dec-2010  matt Merge changes from netbsd-5.
 1.10.58.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.10.54.5 26-Sep-2009  snj Pull up following revision(s) (requested by macallan in ticket #977):
sys/arch/sgimips/gio/newport.c: revision 1.15
remove leftover debug code
 1.10.54.4 26-Sep-2009  snj Pull up following revision(s) (requested by macallan in ticket #1009):
sys/arch/sgimips/gio/newport.c: revision 1.14
No need to have two pre-defined screen types - just adapt to whatever
video mode we find. Also, redraw screen when X exits.
TODO: find out why characters are drawn upside down, for some bizarre
reason this happens right after exiting X but the last line is normal.
 1.10.54.3 26-Sep-2009  snj Pull up following revision(s) (requested by macallan in ticket #974):
sys/arch/sgimips/gio/newport.c: revision 1.13
Don't bother drawing a cursor until wsdisplay attaches. This works
around the deadlock I've seen with the previous version.
While there do some KNF policing.
 1.10.54.2 26-Sep-2009  snj Pull up following revision(s) (requested by macallan in ticket #981):
sys/arch/sgimips/gio/files.gio: revision 1.10
sys/arch/sgimips/gio/newport.c: revision 1.12
Become a good vcons citizen.
Also, don't use the cursor sprite as text cursor - it's not worth the
pain and the sprite doesn't have an invert-background plane either so
the cursor wasn't transparent.
Instead blit the cursor using the appropriate ROPs. This way we get
rid of the cursor misplacement problem as well.
While there also use device_t.
TODO: arbitrary font sizes, cleanup, support for mapping all blitter
registers so we can use them from X.
 1.10.54.1 26-Sep-2009  snj Pull up following revision(s) (requested by macallan in ticket #963):
sys/arch/sgimips/gio/newport.c: revision 1.11
A bunch of bugfixes:
- set blitter direction appropriately so scrolling downwards works now
- remove a bunch of false +1 so we only copy/erase what we really need
to
- slightly change the logic for the cursor sprite offset so it works
on this Indy ( I think what matters is VC2 revision 0 )
TODO: virtual consoles, fonts wider than 8 pixels
 1.10.52.2 28-Apr-2009  skrll Sync with HEAD.
 1.10.52.1 03-Mar-2009  skrll Sync with HEAD.
 1.10.44.2 16-May-2009  yamt sync with head
 1.10.44.1 04-May-2009  yamt sync with head.
 1.15.16.1 18-Feb-2012  mrg merge to -current.
 1.15.12.1 17-Apr-2012  yamt sync with head
 1.17.20.1 10-Aug-2014  tls Rebase.
 1.17.6.2 03-Dec-2017  jdolecek update from HEAD
 1.17.6.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.18.4.1 22-Sep-2015  skrll Sync with HEAD
 1.19.18.1 10-Jun-2019  christos Sync with HEAD
 1.20.10.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.21.2.1 21-Mar-2021  thorpej Give config_found() the same variadic arguments treatment as
config_search(). This commit only adds the CFARG_EOL sentinel
to the existing config_found() calls. Conversion of config_found_sm_loc()
and config_found_ia() call sites will be in subsequent commits.
 1.22.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.9 16-May-2019  macallan Even more registers!
 1.8 10-May-2019  macallan move the CIDMATCH bits where they belong, now FASTCLEAR mode can actually work
 1.7 04-May-2019  macallan moar registers
to the right branch this time (hopefully)
 1.6 11-Jan-2012  macallan branches: 1.6.48; 1.6.50;
add some register definitions
 1.5 20-Feb-2011  matt branches: 1.5.4; 1.5.8;
Merge forward matt-nb5-mips64
Adapt to new interrupt/spl framework
Deal with arcbios calls being O32 and kernels being N32/N64.
Need to save/restore T8 across arcbios calls.
 1.4 10-Feb-2009  macallan branches: 1.4.4; 1.4.6; 1.4.8;
add a few more register definitions
 1.3 11-Dec-2005  christos branches: 1.3.78; 1.3.86; 1.3.88; 1.3.92; 1.3.96;
merge ktrace-lwp.
 1.2 07-Feb-2004  sekiya branches: 1.2.4;
More newport driver tweaks:

* detect and store vc2 revision. This is (likely) the important factor in
determining the proper cursor offset, so add a bit of logic that does the
right thing on my revision 0 vc2. This will have to be determined
empirically, revision by revision.
* take a stab at detecting framebuffer depth. SGI does it quite differently,
but their algorithm doesn't work, so we'll do it along the same lines as
linux.
* implement newport_mmap() for use by X. The necessary xsrc commits have been
made (with the notable exception of the config/cf changes, which probably
shouldn't go in until 4.4.0 has been imported).
 1.1 15-Dec-2003  lonewolf Support for SGI NG1 ("newport") graphics controller.
 1.2.4.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.2.4.3 18-Sep-2004  skrll Sync with HEAD.
 1.2.4.2 03-Aug-2004  skrll Sync with HEAD
 1.2.4.1 07-Feb-2004  skrll file newportreg.h was added on branch ktrace-lwp on 2004-08-03 10:40:06 +0000
 1.3.96.1 29-Dec-2010  matt Merge changes from netbsd-5.
 1.3.92.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.3.88.1 26-Sep-2009  snj Pull up following revision(s) (requested by macallan in ticket #982):
sys/arch/sgimips/gio/newportreg.h: revision 1.4
add a few more register definitions
 1.3.86.1 03-Mar-2009  skrll Sync with HEAD.
 1.3.78.1 04-May-2009  yamt sync with head.
 1.4.8.1 05-Mar-2011  bouyer Sync with HEAD
 1.4.6.1 06-Jun-2011  jruoho Sync with HEAD.
 1.4.4.1 05-Mar-2011  rmind sync with head
 1.5.8.1 18-Feb-2012  mrg merge to -current.
 1.5.4.1 17-Apr-2012  yamt sync with head
 1.6.50.1 04-May-2019  macallan moar registers
( so I don't forget to commit this along with the actual newport changes... )
 1.6.48.1 10-Jun-2019  christos Sync with HEAD
 1.3 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.2 11-Dec-2005  christos merge ktrace-lwp.
 1.1 15-Dec-2003  lonewolf branches: 1.1.4;
Support for SGI NG1 ("newport") graphics controller.
 1.1.4.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.4.3 18-Sep-2004  skrll Sync with HEAD.
 1.1.4.2 03-Aug-2004  skrll Sync with HEAD
 1.1.4.1 15-Dec-2003  skrll file newportvar.h was added on branch ktrace-lwp on 2004-08-03 10:40:06 +0000
 1.20 20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h>.
 1.19 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.18 24-Apr-2021  thorpej branches: 1.18.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.17 07-Jul-2020  thorpej branches: 1.17.4;
Overhaul the interface to pci_configure_bus():
- Don't expose how PCI bus configuration resource management is implemented.
Provide a new resource provider API:

==> pciconf_resource_init() -- Initialize a PCI configuration resources
container.
==> pciconf_resource_add() -- Add a PCI configuration resource to the
container (I/O, MEM, or prefetchable MEM). Multiple resources of
each type may be added.
==> pciconf_resource_fini() -- Tear down the PCI configurtation resources
container once the bus has been configured.

This is much easier to use than the previous method of providing an
extent map for each kind of resource, and works better for e.g. ACPI
platforms that provide potentially multiple PCI resources in tables
provided by firmware.

- Re-implement PCI configuration resource management using vmem arenas,
rather than extent maps.
 1.16 14-Jun-2020  chs replace EX_NOWAIT with EX_WAITOK in device attach methods.
remove checks for failures that can no longer occur.
 1.15 02-Oct-2015  msaitoh PCI Extended Configuration stuff written by nonaka@:
- Add PCI Extended Configuration Space support into x86.
- Check register offset of pci_conf_read() in MD part. It returns (pcireg_t)-1
if it isn't accessible.
- Decode Extended Capability in PCI Extended Configuration Space.
Currently the following extended capabilities are decoded:
- Advanced Error Reporting
- Virtual Channel
- Device Serial Number
- Power Budgeting
- Root Complex Link Declaration
- Root Complex Event Collector Association
- Access Control Services
- Alternative Routing-ID Interpretation
- Address Translation Services
- Single Root IO Virtualization
- Page Request
- TPH Requester
- Latency Tolerance Reporting
- Secondary PCI Express
- Process Address Space ID
- LN Requester
- L1 PM Substates
The following extended capabilities are not decoded yet:
- Root Complex Internal Link Control
- Multi-Function Virtual Channel
- RCRB Header
- Vendor Unique
- Configuration Access Correction
- Multiple Root IO Virtualization
- Multicast
- Resizable BAR
- Dynamic Power Allocation
- Protocol Multiplexing
- Downstream Port Containment
- Precision Time Management
- M-PCIe
- Function Reading Status Queueing
- Readiness Time Reporting
- Designated Vendor-Specific
 1.14 18-Feb-2015  macallan switch sgimips to common bus_dma and bus_space in arch/mips/
Tested on O2 and Indy.
Things that are compile-tested only for lack of hardware:
- GIO ethernet cards with PCI bridges
- IP2x hardware not found on Indy
- IP1x
 1.13 02-Apr-2014  ozaki-r branches: 1.13.6;
Get rid of a wrong comma
 1.12 29-Mar-2014  christos make pci_intr_string and eisa_intr_string take a buffer and a length
instead of relying in local static storage.
 1.11 27-Oct-2012  chs branches: 1.11.2;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.10 27-Jan-2012  para branches: 1.10.6;
converting extent(9) from malloc(9) to kmem(9)
preceding kmem-vmem-pool-uvm patch

releng@ acknowledged
 1.9 01-Jul-2011  dyoung branches: 1.9.2; 1.9.6;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.8 17-May-2011  dyoung PCI_FLAGS_IO_ENABLED and PCI_FLAGS_MEM_ENABLED changed their functional
role in NetBSD (drivers are no longer supposed to write these to
pa_flags) without changing name. Correct that.

Rename PCI_FLAGS_IO_ENABLED to PCI_FLAGS_IO_OKAY and
PCI_FLAGS_MEM_ENABLED to PCI_FLAGS_MEM_OKAY, thus making their names
consistent with the other PCI flags and poisoning 3rd-party driver
sources that use the flags in the old bad way.

This patch produces no binary changes in this set of PCI kernels when
they are compiled w/o 'options DIAGNOSTIC' and w/ -V MKREPRO=yes:

algor P4032 P5064 P6032
alpha GENERIC
amd64 GENERIC XEN3_DOM0
arc GENERIC
atari HADES MILAN-PCIIDE
bebox GENERIC
cats GENERIC
cobalt GENERIC
evbarm-el ADI_BRH ARMADILLO9 CP3100 GEMINI GEMINI_MASTER GEMINI_SLAVE
evbarm-el GUMSTIX HDL_G IMX31LITE INTEGRATOR IQ31244 IQ80310 IQ80321
evbarm-el IXDP425 IXM1200 KUROBOX_PRO
evbarm-el LUBBOCK MARVELL_NAS NAPPI NSLU2 SHEEVAPLUG SMDK2800 TEAMASA_NPWR
evbarm-el TEAMASA_NPWR_FC TS7200 TWINTAIL ZAO425
evbmips-el AP30 DBAU1500 DBAU1550 MALTA MERAKI MTX-1 OMSAL400 RB153 WGT624V3
evbmips64-el XLSATX
evbppc EV64260 MPC8536DS MPC8548CDS OPENBLOCKS200 OPENBLOCKS266
evbppc OPENBLOCKS266_OPT P2020RDB PMPPC RB800 WALNUT
hp700 GENERIC
i386 ALL XEN3_DOM0 XEN3_DOMU
ibmnws GENERIC
iyonix GENERIC
landisk GENERIC
macppc GENERIC
mvmeppc GENERIC
netwinder GENERIC
ofppc GENERIC
prep GENERIC
sandpoint GENERIC
sbmips-el GENERIC
sgimips GENERIC32_IP2x GENERIC32_IP3x
sparc GENERIC_SUN4U KRUPS
sparc64 GENERIC
 1.7 11-May-2011  dyoung Now that GENERIC32_IPX3x builds again, fix some pci_attach_args
constification that I'd missed.
 1.6 20-Feb-2011  matt Merge forward matt-nb5-mips64
Adapt to new interrupt/spl framework
Deal with arcbios calls being O32 and kernels being N32/N64.
Need to save/restore T8 across arcbios calls.
 1.5 19-Feb-2007  rumble branches: 1.5.64; 1.5.68; 1.5.74; 1.5.76;
Update a comment: G100 has now been tested.
 1.4 29-Dec-2006  rumble branches: 1.4.2; 1.4.4;
Update a comment and note the SetEng workaround.
 1.3 22-Dec-2006  rumble s/Challenge-S/Challenge S/ and fix an incorrect comment.
 1.2 07-Sep-2006  rumble branches: 1.2.2; 1.2.4;
Do not permit accesses to unmapped pci registers.
 1.1 30-Aug-2006  rumble branches: 1.1.2; 1.1.4;
Provide a pseudo-pci bus for the following PCI ethernet boards, which live
behind custom PCI<->GIO bridges:
- Set Engineering GIO Fast Ethernet (TI ThunderLAN)
- Phobos G100 (DEC 21140?)
- Phobos G130 (DEC 21143)
- Phobos G160 (DEC 21143)

All boards present the chipsets' pci configuration registers at some
defined offset in their slots' address space as well as device registers.
We simply allow the MI pci subsystem to attach the devices.

This has been tested with a G130 board (DEC 21143) and works well on IP20
and IP24. The Set Engineering board attaches, works fine when receiving and
lightly transmitting, but chokes for unknown reasons on heavy transmits.
The tl(4) driver may need some fixing.
 1.1.4.2 12-Jan-2007  ad Sync with head.
 1.1.4.1 18-Nov-2006  ad Sync with head.
 1.1.2.3 14-Sep-2006  yamt sync with head.
 1.1.2.2 03-Sep-2006  yamt sync with head.
 1.1.2.1 30-Aug-2006  yamt file pci_gio.c was added on branch yamt-pdpolicy on 2006-09-03 15:23:31 +0000
 1.2.4.2 10-Sep-2006  tron Pull up following revision(s) (requested by rumble in ticket #137):
sys/arch/sgimips/gio/pci_gio.c: revision 1.2
Do not permit accesses to unmapped pci registers.
 1.2.4.1 10-Sep-2006  tron Pull up following revision(s) (requested by rumble in ticket #137):
sys/arch/sgimips/gio/pci_gio.c: revision 1.1
sys/arch/sgimips/gio/files.gio: revision 1.8
Provide a pseudo-pci bus for the following PCI ethernet boards, which live
behind custom PCI<->GIO bridges:
- Set Engineering GIO Fast Ethernet (TI ThunderLAN)
- Phobos G100 (DEC 21140?)
- Phobos G130 (DEC 21143)
- Phobos G160 (DEC 21143)
All boards present the chipsets' pci configuration registers at some
defined offset in their slots' address space as well as device registers.
We simply allow the MI pci subsystem to attach the devices.
This has been tested with a G130 board (DEC 21143) and works well on IP20
and IP24. The Set Engineering board attaches, works fine when receiving and
lightly transmitting, but chokes for unknown reasons on heavy transmits.
The tl(4) driver may need some fixing.
 1.2.2.2 09-Sep-2006  rpaulo sync with head
 1.2.2.1 07-Sep-2006  rpaulo file pci_gio.c was added on branch rpaulo-netinet-merge-pcb on 2006-09-09 02:42:52 +0000
 1.4.4.1 27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.4.2.3 26-Feb-2007  yamt sync with head.
 1.4.2.2 30-Dec-2006  yamt sync with head.
 1.4.2.1 29-Dec-2006  yamt file pci_gio.c was added on branch yamt-lazymbuf on 2006-12-30 20:46:53 +0000
 1.5.76.1 05-Mar-2011  bouyer Sync with HEAD
 1.5.74.1 06-Jun-2011  jruoho Sync with HEAD.
 1.5.68.2 31-May-2011  rmind sync with head
 1.5.68.1 05-Mar-2011  rmind sync with head
 1.5.64.1 20-Jan-2010  matt Adjust things to the new world order.
 1.9.6.1 18-Feb-2012  mrg merge to -current.
 1.9.2.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.9.2.2 30-Oct-2012  yamt sync with head
 1.9.2.1 17-Apr-2012  yamt sync with head
 1.10.6.3 03-Dec-2017  jdolecek update from HEAD
 1.10.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.10.6.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.11.2.1 18-May-2014  rmind sync with head
 1.13.6.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.13.6.1 06-Apr-2015  skrll Sync with HEAD
 1.17.4.1 23-Mar-2021  thorpej Convert config_found_ia() call sites where the device only carries
a single interface attribute to bare config_found() calls.
 1.18.8.1 04-Aug-2021  thorpej Adapt to CFARGS().

RSS XML Feed