Home | History | Annotate | Download | only in nubus
History log of /src/sys/arch/mac68k/nubus/nubus.c
RevisionDateAuthorComments
 1.68  07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.67  24-Apr-2021  thorpej branches: 1.67.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.66  08-Jan-2019  jdolecek branches: 1.66.14;
no need to include <machine/param.h> if <sys/param.h> already included
 1.65  18-Oct-2014  snj branches: 1.65.18; 1.65.20;
src is too big these days to tolerate superfluous apostrophes. It's
"its", people!
 1.64  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.63  17-Dec-2008  cegger branches: 1.63.14; 1.63.24;
kill MALLOC and FREE macros.
 1.62  07-Mar-2007  tsutsui branches: 1.62.40; 1.62.44; 1.62.52;
Change variables which are used to read byte stream data
from (void *) to (char *).
 1.61  04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.60  11-Dec-2005  christos branches: 1.60.26;
merge ktrace-lwp.
 1.59  03-Jun-2005  rjs branches: 1.59.2;
Add const.
 1.58  15-Jan-2005  chs de-__P, remove register, ansify, b* -> mem*.
 1.57  15-Jul-2003  lukem __KERNEL_RCSID()
 1.56  01-Jan-2003  thorpej branches: 1.56.2;
Use aprint_normal() for cfprint routines.
 1.55  02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.54  27-Sep-2002  thorpej Declare all cfattach structures const.
 1.53  13-Apr-2002  briggs Fixes and changes from Hauke Fath <hauke@Espresso.Rhein-Neckar.DE>.
* Clean up after briggs@ changes to support bus_dma.
* Add support for reading sMemory resources from nubus cards.
* Add support for old cards with only the board rsrc (NatSemi NB-GPIB, e.g.)
* Add a few more card identifiers.
 1.52  10-Apr-2002  briggs Use m68k/m68k/cacheops.[ch]
Use m68k/m68k/bus_dma.c
- Add mainbus_attach_args with bus_space_tag_t and bus_dma_tag_t.
- Use passed-in tags for nubus scan.
 1.51  20-Aug-2001  wiz branches: 1.51.6;
"wierd" is weird.
 1.50  31-Jul-2000  briggs branches: 1.50.4;
Fix code to read a string from the nubus board--it was not terminating
the string properly when the string on the board is longer than the
pre-allocated space.
 1.49  29-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.48  26-Jun-2000  mrg remove/move more mach vm header files:

<vm/pglist.h> -> <uvm/uvm_pglist.h>
<vm/vm_inherit.h> -> <uvm/uvm_inherit.h>
<vm/vm_kern.h> -> into <uvm/uvm_extern.h>
<vm/vm_object.h> -> nothing
<vm/vm_pager.h> -> into <uvm/uvm_pager.h>

also includes a bunch of <vm/vm_page.h> include removals (due to redudancy
with <vm/vm.h>), and a scattering of other similar headers.
 1.47  23-Aug-1999  thorpej branches: 1.47.2;
Garbage-collect reference to <sys/dmap.h>.
 1.46  01-Jun-1999  briggs Add debug routine as an aid for working out new nubus cards.
 1.45  02-Jun-1998  scottr branches: 1.45.8; 1.45.12;
An inability to map a slot's address space may be a normal condition --
for instance, on-board video may live here. Make the complaint about
this a DEBUG rather than a DIAGNOSTIC message.
 1.44  02-May-1998  scottr Move on-board I/O and NuBus drivers to their own directories
via repository copy, and make the necessary adjustments to reflect
the moved files.
 1.43  13-Jan-1998  scottr Update for bus.h changes.
 1.42  12-Jan-1998  thorpej Update for changes to config.
 1.41  11-Aug-1997  scottr Make #include directives consistent. All MD headers are of the form:

#include <mac68k/{dev,mac68k}/foo.h>
 1.40  15-Jul-1997  scottr branches: 1.40.2;
In nubus_print(), always print the NuBus slot number. Also, refine it so
that when no driver matches, our output is a little more consistent with
existing practice.
 1.39  14-Jul-1997  scottr Clean up some DIAGNOSTIC messages: use %x to display the slot number.
 1.38  13-May-1997  scottr Update a recently-added comment re: bytelanes values.
 1.37  11-May-1997  scottr Implement new NuBus slot space mapping/probing code, utilizing bus.h (and
our MD bus_space_probe() extension). This has several side effects:

- NuBus drivers must map and unmap slot space, rather than relying
on this happening before they are attached.
- Functions exported to NuBus drivers from nubus.c now need to be
supplied with a bus space tag/handle pair.
- Old bus map/peek functions can be garbage collected, as can pmap
support for the same.

Because of some current limitations of the bus space specification, we
are violating the abstraction in grf_mv (NuBus grf driver). All such
violations are clearly marked /* XXX */, and must be addressed when
the specification is updated.
 1.36  23-Apr-1997  briggs On video devices, if we're loading non-default resource values, save the
resource ID. Thanks to Paul Goyette <paul@pgoyette.bdt.com> for spotting
this one.
 1.35  22-Apr-1997  scottr #ifdef DIAGNOSTIC, print the NuBus type fields for unrecognized boards.
 1.34  10-Apr-1997  briggs Some patches from Bob Nestor <rnestor@metronet.com> and myself to edge
toward support for an Apple SONIC-based ethernet card. Some cards, like
his, were being missed and/or probed like video cards!
 1.33  15-Mar-1997  scottr Defer enabling NuBus slot interrupts until all slots have been probed
and drivers attached. This removes the need for the MAC68K_BROKEN_VIDEO
option. From Allen Briggs.
 1.32  28-Feb-1997  scottr Remove duplicate <machine/bus.h> include that crept in.
 1.31  24-Feb-1997  scottr NUBUS_SLOT_TO_PADDR -> NUBUS_SLOT2PA
 1.30  22-Feb-1997  scottr Make this compile again; missed this file when fixing nubus.h errors.
 1.29  17-Dec-1996  scottr branches: 1.29.6;
Revamp mainbus and obio autoconfiguration, with some direction (and the
indirect bus code framework) from Jason Thorpe. This allows us to dump
bus_scan() and bus_print(), and move bus_peek() and bus_mapin() to the
NuBus code (since they'll eventually go away, anyway).
 1.28  16-Dec-1996  scottr Convert all foo_match() functions to use a `struct cfdata *' for their
second argument. The NuBus autoconfig code had to be reorganized as a
result of this, and looks much more like a directly-attached bus now.
These changes eliminate __BROKEN_INDIRECT_CONFIG.
 1.27  21-Oct-1996  scottr Fix a raft of printf format strings and some declaration problems for
the case where we define DEBUG. From Erik Bertelsen, closes PR 2871.
 1.26  13-Oct-1996  christos backout previous kprintf change
 1.25  11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.24  27-Aug-1996  cgd change cfprint_t type definition to take a const char *, rather than
a char *, because that's what was really intended, and because
if the print function modifies the string, various things could become
unhappy (so the string should _not_ be modified).
 1.23  08-May-1996  scottr Make this compile if DEBUG is defined.
 1.22  07-May-1996  briggs Clean up an error printf() and use proper macro.
 1.21  06-May-1996  briggs Ooops. Remove debugging printf().
 1.20  06-May-1996  briggs Do not depend on the nubus being mapped in one huge segment.
 1.19  05-May-1996  briggs Prototype for -Wall -Wstrict-prototypes -Wmissing-prototypes -Wno-uninitialized
Also change the device probing scheme to use something a bit more rational.
A current side-effect is that nubus cards are double-mapped. I expect
to fix that shortly.
Also change splclock() to block everything but serial hardware interrupts.
 1.18  04-Apr-1996  scottr Make this compile again; will need to deal with matchbyname() later, though.
 1.17  01-Apr-1996  briggs Clean up for higher warning level.
 1.16  17-Mar-1996  thorpej New device attachment scheme:

- split softc size and match/attach out from cfdriver into
a new struct cfattach.

- new "attach" directive for files.*. May specify the name of
the cfattach structure, so that devices may be easily attached
to parents with different autoconfiguration semantics.
 1.15  12-Jan-1996  briggs Fixes from PR #1931 w/ minor mod in vm_machdep.c
 1.14  04-Aug-1995  briggs Nuke int_video_start in favor of consistent use of mac68k_vidlog.
Don't find the internal video more than once.
Probe for internal video before nubus instead of after.
 1.13  30-Jul-1995  briggs Fix the internal video probe again.
 1.12  21-Jun-1995  briggs Add some debugging (conditional on DEBUG). Add a more correct probe for
internal video. Clean up nubusprint() a bit.
 1.11  29-Apr-1995  briggs Add new nubus handling that's much more robust.
Update via, if_ae, and grf accordingly.
Revamp grf.
 1.10  21-Apr-1995  briggs First pass of KNFication. Needs more.
 1.9  12-Apr-1995  briggs Make nubus indirect. Duh.
 1.8  26-Oct-1994  cgd new RCS ID format.
 1.7  26-Jun-1994  briggs Don't assume NuBus is at NBBASE. We might remap it.
 1.6  23-Feb-1994  briggs Do a cleaner probe. This still needs lots of work, but will work on
reasonable cards...
 1.5  22-Feb-1994  briggs Minor tweaks to prevent hangs and other bad behavior... Needs much more
work now that we have more info (Designing Cards and Drivers for the
Macintosh Family Hardware.
 1.4  30-Jan-1994  briggs Just playing include-cop.
 1.3  21-Dec-1993  briggs Update ethernet driver to use config.new. At least, it's a first stab
working from mycroft's magnum changes to if_ed.c.
 1.2  29-Nov-1993  briggs Update to current work in progress. This includes an update to
use config.new.
Numerous updates to console so it works better on the SE/30 screen.
Some nice changes from Brad Parker for handling NuBUS and an ethernet
driver that I haven't worked on, yet.
 1.1  29-Sep-1993  briggs branches: 1.1.1;
Initial revision
 1.1.1.1  29-Sep-1993  briggs The current MacBSD architecture sub-directory for NetBSD-0.9--more or
less. It needs some help to get to be -current. Support for minimal
hardware on the SE/30, II, IIx, and IIcx exists.
 1.29.6.1  12-Mar-1997  is Merge in changes from The Trunk, partially just reimplementing newarp.
 1.40.2.1  23-Aug-1997  thorpej Update marc-pcmcia branch from trunk.
 1.45.12.1  21-Jun-1999  thorpej Sync w/ -current.
 1.45.8.2  01-Nov-1999  scottr Repair merge-related damage
 1.45.8.1  01-Nov-1999  scottr Sync with main branch.
 1.47.2.1  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.50.4.3  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.50.4.2  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.50.4.1  25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.51.6.4  03-Jan-2003  thorpej Sync with HEAD.
 1.51.6.3  18-Oct-2002  nathanw Catch up to -current.
 1.51.6.2  17-Apr-2002  nathanw Catch up to -current.
 1.51.6.1  20-Aug-2001  nathanw file nubus.c was added on branch nathanw_sa on 2002-04-17 00:03:39 +0000
 1.56.2.5  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.56.2.4  17-Jan-2005  skrll Sync with HEAD.
 1.56.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.56.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.56.2.1  03-Aug-2004  skrll Sync with HEAD
 1.59.2.1  03-Sep-2007  yamt sync with head.
 1.60.26.1  12-Mar-2007  rmind Sync with HEAD.
 1.62.52.1  19-Jan-2009  skrll Sync with HEAD.
 1.62.44.1  04-May-2009  yamt sync with head.
 1.62.40.1  17-Jan-2009  mjf Sync with HEAD.
 1.63.24.2  03-Dec-2017  jdolecek update from HEAD
 1.63.24.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.63.14.1  30-Oct-2012  yamt sync with head
 1.65.20.1  10-Jun-2019  christos Sync with HEAD
 1.65.18.1  18-Jan-2019  pgoyette Synch with HEAD
 1.66.14.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.67.8.1  04-Aug-2021  thorpej Adapt to CFARGS().

RSS XML Feed