Update TURBOChannel and ioasic interrupt-establish routines to pass on their
device argument as a "void *", since that's how all the pmax interrupt handlers
are declared.
counter on 5k/240s to interpolate to microsecond-resolution clock
in microtime(). Only the "rev B" ASIC in 5k/240s is known to have
this counter; other models may or may not. This gives microsecond
resolution at user-level, and up to 40ns resolution (modulo the
nominal 5(?) 40MHz cpu cycles for reads to complete) in the kernel.
Change the IOASIC reset function to set up the DMA mapping for the
53c94. Allocate 16 Kbytes of DMA buffer for 53c94 ASCs under an IOASIC,
as the 3MAX baseboard and TC options have 128 Kbytes of static
bounce buffer, and the drivers really _should_ support 16Kbyte
I/O requests. (They don't always.)
Give the LANCE a hard reset on 5k/240s, just to be on the safe side.
(the 5k/240 I use sometimes reported errors at boot time.)
"struct pmax_fbtty". Remove most of its fields, since the fields
in the struct fbinfo render most of them unecessary, and the pmax
now uses rcons anyway. Moe the lk-201 keycode definitions to lk201.h,
so rcons can use them too.
to "kn01_<func>", to avoid confounding a model name (PMAX) with the name of the
entire port (pmax).
Change the signature of interrupt-handlers to take a void *
(a pointer to the softc) and return an int (indicating spurious
interrupts or other conditions.)
Pass softc pointers to the scsi and ethernet kn01 (DS_PMAX) drivers,
rather than having unit numbers wired into the base-level interrupt
handler.
to "kn01_<func>", to avoid confounding a model name (PMAX) with the name of the
entire port (pmax).
Change the signature of interrupt-handlers to take a void *
(a pointer to the softc) and return an int (indicating spurious
interrupts or other conditions.)
Move consinit() from here to cpu_cons.c.
Eliminate the old old pmax-specific console driver, whcih didn't
know about vnodes. Use sys/dev/cons.c instead.
Delete the old 4.4BSD/pmax TURBOChannel probe routines and ROM-to-driver
name-mapping functions.
"struct pmax_device" to avoid conflict with <sys/device.h>.
Move the glue routines for config.old pmax SCSI device probing from
autoconf.c to conf-glue.c.
old-style pmax polled input for cn_getc(). Needed because the
input side of rcons is not initialized in time for GENERIC kernels
to use it to read a root/swap devicename from /dev/console.
Fix an argument glitch between consinit() and pminit().
Change consinit() to use PROM output for remote consoles, because
the serial drivers aren't yet initializable when consinit() is called.
old-style pmax polled input for cn_getc(). Needed because the
input side of rcons is not initialized in time for GENERIC kernels
to use it to read a root/swap devicename from /dev/console.
"struct pmax_device" to avoid conflict with <sys/device.h>.
Change the signature of interrupt-handlers to take a void *
(a pointer to the softc) and return an int (indicating spurious
interrupts or other conditions.)
NetBSD/sparc rcons glass-tty console pseudo-device driver, via
the "fb" generic-framebuffer pseudo-device driver.
Individual framebuffer device drivers are now autoconfig glue,
and initialization code for a set of vdac/ramdac-level methods,
called "fbdriver", that's used by all the pmax device drivers.
All the handlers for user-level requests (open/ioctl/read/write/close)
are moved into the fb pseudo-device driver, which uses the
the "fbdriver" methods to work on any given pmax hardware driver.
Framebuffers supported are: sfb cfb mfb xcfb pm.
Move the qvss (pm) -style mmap()ed device interface, kernel tracking
of mouse button/movement events, and placing mouse/keyboard
events in an mmap()ed ring buffer, out of the framebuffer device
drivers and into separate source files. The fb pseudo-device driver
uses the qvss-compatible interface, since that's what the (R5) X
server uses.
the pmax lance driver that uses the machine-independent am7990.c driver
needs some definitions for it. This is a partial re-merge of NetBSD/alpha's
tc/asic.h back to the pmax, with the addition of symbolic #define's
for registers and bits in registers that are pmax model-specific.
drivers have been fixed to not require "needs-count".
Add back the lines for the "rcons" console driver, even though it's
not merged into the pmax port yet, as conf.h was patched to include
"rcons.h". Adding the device here, but not configuring it (e.g., in
GENERIC) keeps conf.c happy until rcons code is merged.
TURBOChannel cfb has a vertical-retrace interupt that cannot be disabled
in software. 4.4BSD and NetBSD don't supply an interrupt hander and
simply neverenable interrupts from slots with a cfb. This has never
ever worked with a cfb in a 3MIN (Decstation 5000/1xx), where a TURBOChannel
card in slot 0 (or 1 or 2) interrupts at the same IPL as spl0() (or spl1
or spl2), and there's also never been support for selectively enabling or
disabling those interrupts on a 3MIN, in either NetBSD or 4.4BSD.
This revision add an interrupt handler for the cfb, used only on 3MINs,
so that a 3MIN can boot with a cfb as console, and enable/disable of TC
slot interrupts can be debugged. (Serial consoles via ioasic SCCs still
don't quite work, and simply clearing the relevant bits in the R3000 cause
register is apparently over-ridden by a subsequent spl0() somewhere else.)