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.
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.)
pmax driver, to be diffable with the NetBSD Alpha driver. Specifically,
the pmax driver now uses register names dev/ic/z8530.h. The driver now
uses new-style config and dynamically-allocated softc structures. The
driver no longer resets the "other" channel on an SCC when changing tty
parameters. The #ifdef'ing away of processing of the output clist for
non-console lines is no longer done. (Non-console serial ttys might even
work now.) Other discrepancies between the pmax and alpha drivers, which I
don't understand yet, are marked by XXXes.
The 4.4bsd pmax console redirection code is still present, protected
by #ifdef TK_NOTYET. Diffs from the Alpha scc driver are now minimal.
Verified to boot on a Decstation 5k/240.
Concomitant changes to code that prints driver/unit name: use dv_xname
and dv_unit, instead of doing pointer arithmetic on elements of the static
softc array.
Remove support for old config. The old-config "driver" structure
is still present, because the pmax non-MI SCSI driver needs it.
Merge some off Per Fogelstrom's changes for the Pica driver,
which uses the machine-independent SCSI code. This is #ifdef'ed
out until the DMA is fixed to work on Decstations, too.
redirection of console serial input (keyboard, mouse). Fixes non-redirection of
keyboard to X server on a 5k/240. The Mfb and sfb drivers are similarly broken.
to have the same interface as native readdisklabel(), call it cleanly
from caller of readdisklabel(), and fix bug that left d_npartitions at 1
for ultrix-compat labels. Ultrix labels now actually work.
pmax conf.c references them. A cut-and-paste job from the pmax
rzwrite() and rzread(). tzwrite() and tzread() are utterly untested.
tzwrite() should also check for write-protect, or handle writes to a
write-protected tape gracefully.
interrupts before it calls configure(). On 3100s, this can result in
the ethernet interface interrupting before leprobe() is ever called.
Be a bit more defensive in leintr(), where it was dereferencing a null
pointer. This reputedly fixes the oft-reported problems of 3100s not
ooting unless they're on an idle net or had a hard reset done before boot.
(Reworking the config code completely would be nice too.)
state of the world as expected by the networking headers/mi code.
i changed one or two things in his patch slightly (do the lestart()
proto the right way, actually delete the if_output assignment line).