Home | History | Annotate | only in /src/sys/arch/hp300/dev
History log of /src/sys/arch/hp300/dev
RevisionDateAuthorComments
 1.5 10-Jan-2014  christos don't include bsd.sys.mk
 1.4 28-Dec-2010  tsutsui branches: 1.4.8; 1.4.18; 1.4.22;
Include <bsd.own.mk> to pull ${TOOL_AWK}.
 1.3 19-Oct-2008  apb branches: 1.3.16;
Use ${TOOL_AWK} instead of ${AWK} or plain "awk" in make commands.
Pass AWK=${TOOL_AWK:Q} to shell scripts that use awk.
 1.2 30-Jan-1997  thorpej branches: 1.2.162; 1.2.166; 1.2.172;
Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.1 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.2.172.1 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.2.166.1 04-May-2009  yamt sync with head.
 1.2.162.1 17-Jan-2009  mjf Sync with HEAD.
 1.3.16.1 05-Mar-2011  rmind sync with head
 1.4.22.1 18-May-2014  rmind sync with head
 1.4.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.8.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.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.2 23-May-1994  mycroft Clean up deleted files.
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.21 01-Aug-2003  tsutsui Switch hp300 to MI SCSI with MI mb89352 SPC SCSI driver (at last),
and remove old hp300 MD oscsi support derived from 4.4BSD-Lite2.
 1.20 29-Jun-2003  fvdl branches: 1.20.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.19 29-Jun-2003  thorpej Adapt to ktrace/lwp changes.
 1.18 23-Oct-2002  jdolecek merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.17 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.16 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.15 06-Sep-2002  gehenna Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.14 15-Mar-2002  gmcgarry branches: 1.14.4;
malloc cleanups:
- malloc+memset -> malloc with M_ZERO
- malloc -> MALLOC for fixed-sized structures
Add RCSIDs while here
 1.13 08-Dec-2001  gmcgarry bcopy -> memcpy
bzero -> memset
bcmp -> memcmp
 1.12 19-May-2000  thorpej branches: 1.12.6; 1.12.8; 1.12.12;
A foolish consistency; most parts of the kernel use bp->b_data, so
change these from bp->b_un.b_addr to bp->b_data, as well. This also
allows us more flexibility to experiment with other data buffer types
hung off of struct buf.
 1.11 12-Jan-1998  thorpej branches: 1.11.14;
Update for changes to config.
 1.10 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.9 02-Apr-1997  scottr branches: 1.9.4;
Fix printf() and other warnings when compiled with DEBUG defined.
 1.8 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.7 30-Jan-1997  thorpej Convert to new-style autoconfiguration; old-style config is no longer
supported.
 1.6 13-Oct-1996  christos backout previous kprintf changes
 1.5 11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.4 14-Feb-1996  thorpej All interrupt routines (except the HIL; don't ask) now take a pointer
to a softc, rather than a unit number. Add a "dq_softc" member
to struct devqueue; this is a temporary measure until the
dma/controller/device callback spaghetti is untangled.

YAY! No more need for dcafastservice!

HIL: squish instances of "(void) splhil()" and "(void) spl0();".
 1.3 02-Dec-1995  thorpej Use a "match/attach" rather than "init" scheme for probing devices.
This is a step towards getting the drivers ready for new config.
 1.2 26-Oct-1994  cgd new RCS ID format.
 1.1 23-May-1994  mycroft Merge with 4.4-Lite.
 1.9.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.11.14.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.12.12.5 11-Nov-2002  nathanw Catch up to -current
 1.12.12.4 18-Oct-2002  nathanw Catch up to -current.
 1.12.12.3 17-Sep-2002  nathanw Catch up to -current.
 1.12.12.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.12.12.1 08-Jan-2002  nathanw Catch up to -current.
 1.12.8.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.12.8.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.12.8.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.12.6.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.14.4.1 17-May-2002  gehenna Add device switch.
 1.20.2.1 03-Aug-2004  skrll Sync with HEAD
 1.3 01-Aug-2003  tsutsui Switch hp300 to MI SCSI with MI mb89352 SPC SCSI driver (at last),
and remove old hp300 MD oscsi support derived from 4.4BSD-Lite2.
 1.2 26-Oct-1994  cgd branches: 1.2.66;
new RCS ID format.
 1.1 23-May-1994  mycroft Merge with 4.4-Lite.
 1.2.66.1 03-Aug-2004  skrll Sync with HEAD
 1.5 01-Aug-2003  tsutsui Switch hp300 to MI SCSI with MI mb89352 SPC SCSI driver (at last),
and remove old hp300 MD oscsi support derived from 4.4BSD-Lite2.
 1.4 31-Mar-1997  scottr branches: 1.4.34; 1.4.56;
Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.3 30-Jan-1997  thorpej Convert to new-style autoconfiguration; old-style config is no longer
supported.
 1.2 26-Oct-1994  cgd new RCS ID format.
 1.1 23-May-1994  mycroft Merge with 4.4-Lite.
 1.4.56.1 03-Aug-2004  skrll Sync with HEAD
 1.4.34.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.26 08-Nov-2003  tsutsui Remove obsolete files by MI com(4) driver support.
 1.25 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.24 29-Jun-2003  fvdl branches: 1.24.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.23 29-Jun-2003  thorpej Adapt to ktrace/lwp changes.
 1.22 06-Mar-2003  thorpej Update for consdev changes.
 1.21 23-Oct-2002  jdolecek merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.20 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.19 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.18 06-Sep-2002  gehenna Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.17 17-Apr-2002  gmcgarry branches: 1.17.2;
Don't frob MCR_IEN bit if on a 425e. Problem initially reported
by Christoph Badura:

It looks to me like the 425e uses reverse polarity of the MCR_IEN bit with
respect to the other 4xx models. That could be because it doesn't have
an inverter wired behind the IEN(OUT2) output of the UART.

Fix is inspired by change in OpenBSD. Serial console input is
confirmed working on 425e by Thilo Manske.
 1.16 17-Apr-2002  gmcgarry Attach apci console as an intio device, not a dio device.
Fixes console attach on 425e noted by Thilo Manske.
 1.15 17-Mar-2002  atatat Convert ioctl code to use EPASSTHROUGH instead of -1 or ENOTTY for
indicating an unhandled "command". ERESTART is -1, which can lead to
confusion. ERESTART has been moved to -3 and EPASSTHROUGH has been
placed at -4. No ioctl code should now return -1 anywhere. The
ioctl() system call is now properly restartable.
 1.14 15-Mar-2002  gmcgarry Add RCSIDs.
 1.13 14-Dec-2001  gmcgarry Update hardware drivers with console attachments to the new console
attachment interface.
 1.12 12-Jun-2001  wiz branches: 1.12.2; 1.12.4; 1.12.8;
receive, not recieve
 1.11 02-May-2001  scw Add `l_poll' to `struct linesw' and provide an xxxpoll() entry point
in each tty driver to indirect through it.

This allows tty line-disciplines to handle poll(2) system calls.
 1.10 27-Nov-2000  jdolecek branches: 1.10.2;
Replace the (no longer working) check for tp->t_line == 0 with
tp->t_linesw == linesw[0]. Hopefully this is correct.
 1.9 02-Nov-2000  eeh Adapt to the new line discipline scheme.
 1.8 23-Mar-2000  thorpej New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.7 10-Sep-1999  bad branches: 1.7.2;
In apciparam() in the ospeed == 0 case, actually set the cfcr to the new
value.
 1.6 01-Aug-1999  thorpej Fix APCI console initialization; we were forgetting to update cn_tab.

From Christoph Badura.
 1.5 31-Jul-1999  thorpej Nuke apcicheckdca(). Since "serial 1" only exists as an APCI serial
port on the 425e, key off that instead.
 1.4 28-Mar-1998  thorpej branches: 1.4.10;
Adjust for recent ttyopen() and dialout device changes.
 1.3 12-Jan-1998  thorpej Update for changes to config.
 1.2 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.1 12-May-1997  thorpej branches: 1.1.4;
Add a kernel driver for the APCI 8250-like UARTs that live in the
Frodo ASIC, originally contributed by Mike Smith
<mike@pressed.spam.frisbee.net.au>, but reworked by me to:
- Essentially duplicate the dca driver, modifiying where necessary
to work with the APCI.
- Deal with the different Frodo autoconfiguration model.
- Don't attach a tty to the 0th UART - it's not really useful for much
more than the Domain keyboard.
- Added a routine to check for the existence of a DCA at select code 9.
On most models, the 1'th UART is mapped to select code 9 by the PROM,
and on these models, we do _NOT_ want to attach the device as an APCI.
However, on the 425e, this mapping does not take place, so we attach
as an APCI. The 2'th and 3'th UARTs always get tty instances.
- Add console support which will only be invoked on the 425e (i.e. check
for DCA at 9, and defer console to it if it exists).
 1.1.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.4.10.1 02-Aug-1999  thorpej Update from trunk.
 1.7.2.3 08-Dec-2000  bouyer Sync with HEAD.
 1.7.2.2 22-Nov-2000  bouyer Sync with HEAD.
 1.7.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.10.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.12.8.7 11-Nov-2002  nathanw Catch up to -current
 1.12.8.6 18-Oct-2002  nathanw Catch up to -current.
 1.12.8.5 17-Sep-2002  nathanw Catch up to -current.
 1.12.8.4 20-Jun-2002  nathanw Catch up to -current.
 1.12.8.3 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.12.8.2 08-Jan-2002  nathanw Catch up to -current.
 1.12.8.1 12-Jun-2001  nathanw file apci.c was added on branch nathanw_sa on 2002-01-08 00:24:31 +0000
 1.12.4.2 13-Oct-2001  fvdl Revert the t_dev -> t_devvp change in struct tty. The way that tty
structs are currently used (especially by console ttys) aren't
ready for it, and this will require quite a few changes.
 1.12.4.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.12.2.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.12.2.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.12.2.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.17.2.1 19-May-2002  gehenna Add device switch.
Replace the access to devsw table and the hard-coded majors with devsw API.
 1.24.2.1 03-Aug-2004  skrll Sync with HEAD
 1.3 08-Nov-2003  tsutsui Move apcireg.h and dcareg.h to stand/common since they are no longer used
by kernel.
 1.2 12-May-1997  thorpej branches: 1.2.56;
Garbage-collect an unneeded definition.
 1.1 14-Apr-1997  thorpej Regsiter description for APCI UART found on HP 9000/400-series
systems with a Frodo Utility Chip. This is essientially an 8250 with
3 bytes of padding between each register. From mike smith
<miff@spam.frisbee.net.au>.
 1.2.56.1 03-Aug-2004  skrll Sync with HEAD
 1.3 16-Jan-2024  thorpej Several years ago, the interrupt priority levels for devices were "flattened"
such that IPL_BIO, IPL_NET, and IPL_TTY (logical interrupt priority levels)
became aliases of IPL_VM (the logical interrupt priority level above which
memory allocation is not allowed). Unfortuantely, this meant that any
use of these logical interrupt priority levels to differentiate between
different interrupt service routines at the same auto-vectored interrupt
level was pointless... "when everyone is special, no one is".

Before this flattening happened, these distinct logical interrupt priority
levels levels were dynamically mapped to physical auto-vectored interrupt
levels based on which types of devices registered themselves at which auto-
vectored level. Now, splbio(), splnet(), etc. are all equivalent to splvm(),
which effectively blocks all device interrupts.

Switch to using the ISRPRI_* values provided by the common m68k interrupt
dispatch code, which allows interrupt handlers for devices that are more
latency-sensitive to be sorted earlier in the list of handlers at a given
auto-vectored interrupt level, as was originally intended.
 1.2 08-May-2019  isaki Merge isaki-audio2 branch, the overhaul of audio subsystem.
- Interrupt-oriented system rather than thread-oriented.
- Improve stability, quality and performance.
- Split playback and record cleanly. Improve halfduplex support.
- Many bugs are fixed including deadlocks, resource leaks, abuses, etc.
- Simplify audio filter mechanism. The encoding/channels/frequency
conversions are completely handled in the upper layer. So the hard-
ware driver only converts its hardware encoding (if necessary).
- audio_hw_if changes:
- Obsoletes query_encoding and add query_format instead.
- Obsoletes set_params and add set_format instead.
- Remove drain, setfd, mappage.
- The call sequences are changed.
- ioctl AUDIO_GETFD/SETFD, AUDIO_GETCHAN/SETCHAN are obsoleted.
- ioctl AUDIO_{QUERY,GET,SET}FORMAT are introduced.
- cleanup config attributes: au*conv and mulaw.
- All hardware drivers should follow it (I've done as much as possible).

Some file paths are changed:
- dev/audio.c -> dev/audio/audio.c (rewritten)
- dev/audiovar.h -> dev/audio/audiovar.h
- dev/audio_dai.h -> dev/audio/audio_dai.h
- dev/audio_if.h -> dev/audio/audio_if.h
- dev/audiobell.c -> dev/audio/audiobell.c
- dev/audiobellvar.h -> dev/audio/audiobellvar.h
- dev/mulaw.[ch] -> dev/audio/mulaw.[ch] + dev/audio/alaw.c
 1.1 24-Aug-2014  tsutsui branches: 1.1.2; 1.1.20; 1.1.24; 1.1.26;
Add new arcofi(4) audio driver for NetBSD/hp300, ported from OpenBSD.

The arcofi(4) is a driver for the HP "Audio1" device
(Siemens PSB 2160 "ARCOFI" phone quality audio chip)
found on the HP9000/425e and HP9000/{705,710,745,747} models
(but only hp300 attachment is ported for now).
The chip supports 8-bit mono 8kHz U-law, A-law and
16-bit mono slinear_be formats.

The old HP9000/425e playing tunes with this new arcofi(4) audio driver
was also demonstrated at Open Source Conference 2014 Shimane.
 1.1.26.2 04-May-2019  isaki Move dev/audio_if.h -> dev/audio/audio_if.h
 1.1.26.1 21-Apr-2019  isaki Adapt to audio2.
- Use mulaw as default format. HW supports slinear_be:16 actually
but it's hard to use due to several hardware restrictions.
- Improve data transfer and interrupt.
Tested by tsutsui@ (a few months ago). Thank you.
 1.1.24.1 10-Jun-2019  christos Sync with HEAD
 1.1.20.2 03-Dec-2017  jdolecek update from HEAD
 1.1.20.1 24-Aug-2014  jdolecek file arcofi_dio.c was added on branch tls-maxphys on 2017-12-03 11:36:13 +0000
 1.1.2.2 29-Aug-2014  martin Pull up following revision(s) (requested by tsutsui in ticket #62):
sys/arch/hp300/conf/files.hp300: revision 1.89
share/man/man4/arcofi.4: revision 1.1
share/man/man4/arcofi.4: revision 1.2
share/man/man4/Makefile: revision 1.617
sys/arch/hp300/hp300/intr.c: revision 1.41
sys/conf/files: revision 1.1100
sys/arch/hp300/hp300/locore.s: revision 1.171
distrib/sets/lists/man/mi: revision 1.1486
sys/dev/ic/arcofivar.h: revision 1.1
sys/arch/hp300/conf/majors.hp300: revision 1.26
sys/arch/hp300/dev/arcofi_dio.c: revision 1.1
sys/arch/hp300/conf/GENERIC: revision 1.188
sys/dev/ic/arcofi.c: revision 1.1
Add new arcofi(4) audio driver for NetBSD/hp300, ported from OpenBSD.
The arcofi(4) is a driver for the HP "Audio1" device
(Siemens PSB 2160 "ARCOFI" phone quality audio chip)
found on the HP9000/425e and HP9000/{705,710,745,747} models
(but only hp300 attachment is ported for now).
The chip supports 8-bit mono 8kHz U-law, A-law and
16-bit mono slinear_be formats.
The old HP9000/425e playing tunes with this new arcofi(4) audio driver
was also demonstrated at Open Source Conference 2014 Shimane.
Add a man page for arcofi(4) driver. From OpenBSD.
Fix date.
 1.1.2.1 24-Aug-2014  martin file arcofi_dio.c was added on branch netbsd-7 on 2014-08-29 11:42:15 +0000
 1.6 06-Jun-1994  mycroft Clean up deleted files.
 1.5 11-May-1994  mycroft Get rid of private *read() and *write() functions.
 1.4 10-Feb-1994  mycroft Add arg to ioctl functions. Clean up #includes.
 1.3 11-Jan-1994  mycroft *strategy functions return void.
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.3 24-Jun-1994  mycroft Clean up deleted files.
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.10 16-Jan-2024  thorpej Several years ago, the interrupt priority levels for devices were "flattened"
such that IPL_BIO, IPL_NET, and IPL_TTY (logical interrupt priority levels)
became aliases of IPL_VM (the logical interrupt priority level above which
memory allocation is not allowed). Unfortuantely, this meant that any
use of these logical interrupt priority levels to differentiate between
different interrupt service routines at the same auto-vectored interrupt
level was pointless... "when everyone is special, no one is".

Before this flattening happened, these distinct logical interrupt priority
levels levels were dynamically mapped to physical auto-vectored interrupt
levels based on which types of devices registered themselves at which auto-
vectored level. Now, splbio(), splnet(), etc. are all equivalent to splvm(),
which effectively blocks all device interrupts.

Switch to using the ISRPRI_* values provided by the common m68k interrupt
dispatch code, which allows interrupt handlers for devices that are more
latency-sensitive to be sorted earlier in the list of handlers at a given
auto-vectored interrupt level, as was originally intended.
 1.9 08-Dec-2018  thorpej Clean up initialization of com_regs structure, in preparation for
some additional changers.
 1.8 28-Apr-2008  martin branches: 1.8.86; 1.8.88;
Remove clause 3 and 4 from TNF licenses
 1.7 14-Mar-2008  cube branches: 1.7.2; 1.7.4;
Split device_t and softc for all com(4) devices (well, everything that
uses a com_softc backend). Use proper types and ansify where appropriate.
 1.6 03-Dec-2007  ad branches: 1.6.10; 1.6.14;
Interrupt handling changes, in discussion since February:

- Reduce available SPL levels for hardware devices to none, vm, sched, high.
- Acquire kernel_lock only for interrupts at IPL_VM.
- Implement threaded soft interrupts.
 1.5 13-Jul-2006  gdamore branches: 1.5.14; 1.5.32; 1.5.34; 1.5.40;
Add an option COM_REGMAP to allow com(4) to use an array of register indices.
This allows us to convert aucom to just another com attachment, and cleanup
some code in the com_arbus.c.

Additionally, we use a common com_cleanup routine rather than having a
zillion copies of it in the attachment points.

This has been tested on a number architectures, and it has been shown to get
close to comparable performance when COM_REGMAP is defined, and comparable
when it is not defined.

Approved by core@. Fixes PR port-evbmips/32362.
 1.4 11-Dec-2005  christos branches: 1.4.4; 1.4.8; 1.4.16;
merge ktrace-lwp.
 1.3 02-Jan-2005  tsutsui branches: 1.3.10;
u_intNN_t -> uintNN_t
 1.2 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.1 08-Nov-2003  tsutsui branches: 1.1.4;
Switch DCA and APCI serial devices to use MI com(4) driver.

DCA is tested on HP362 and HP382 with serial console,
but APCI on HP4xx is not tested yet.
 1.1.4.6 17-Jan-2005  skrll Sync with HEAD.
 1.1.4.5 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.4.4 18-Sep-2004  skrll Sync with HEAD.
 1.1.4.3 03-Sep-2004  skrll Sync with HEAD
 1.1.4.2 03-Aug-2004  skrll Sync with HEAD
 1.1.4.1 08-Nov-2003  skrll file com_dio.c was added on branch ktrace-lwp on 2004-08-03 10:34:22 +0000
 1.3.10.3 17-Mar-2008  yamt sync with head.
 1.3.10.2 07-Dec-2007  yamt sync with head
 1.3.10.1 30-Dec-2006  yamt sync with head.
 1.4.16.1 18-Jun-2006  gdamore COM_INIT_REGS-ify these. Compiles okay, but no real hardware test. :-)
 1.4.8.1 11-Aug-2006  yamt sync with head
 1.4.4.1 09-Sep-2006  rpaulo sync with head
 1.5.40.1 08-Dec-2007  mjf Sync with HEAD.
 1.5.34.2 23-Mar-2008  matt sync with HEAD
 1.5.34.1 09-Jan-2008  matt sync with HEAD
 1.5.32.1 09-Dec-2007  jmcneill Sync with HEAD.
 1.5.14.1 03-Dec-2007  ad Sync with HEAD.
 1.6.14.2 02-Jun-2008  mjf Sync with HEAD.
 1.6.14.1 03-Apr-2008  mjf Sync with HEAD.
 1.6.10.1 24-Mar-2008  keiichi sync with head.
 1.7.4.1 16-May-2008  yamt sync with head.
 1.7.2.1 18-May-2008  yamt sync with head.
 1.8.88.1 10-Jun-2019  christos Sync with HEAD
 1.8.86.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.3 11-Dec-2005  christos merge ktrace-lwp.
 1.2 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.1 08-Nov-2003  tsutsui branches: 1.1.4;
Switch DCA and APCI serial devices to use MI com(4) driver.

DCA is tested on HP362 and HP382 with serial console,
but APCI on HP4xx is not tested yet.
 1.1.4.5 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.4.4 18-Sep-2004  skrll Sync with HEAD.
 1.1.4.3 03-Sep-2004  skrll Sync with HEAD
 1.1.4.2 03-Aug-2004  skrll Sync with HEAD
 1.1.4.1 08-Nov-2003  skrll file com_dioreg.h was added on branch ktrace-lwp on 2004-08-03 10:34:22 +0000
 1.4 14-May-2008  tsutsui Normalize my licenses.
 1.3 11-Dec-2005  christos branches: 1.3.74; 1.3.76; 1.3.78; 1.3.80;
merge ktrace-lwp.
 1.2 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.1 08-Nov-2003  tsutsui branches: 1.1.4;
Switch DCA and APCI serial devices to use MI com(4) driver.

DCA is tested on HP362 and HP382 with serial console,
but APCI on HP4xx is not tested yet.
 1.1.4.5 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.4.4 18-Sep-2004  skrll Sync with HEAD.
 1.1.4.3 03-Sep-2004  skrll Sync with HEAD
 1.1.4.2 03-Aug-2004  skrll Sync with HEAD
 1.1.4.1 08-Nov-2003  skrll file com_diovar.h was added on branch ktrace-lwp on 2004-08-03 10:34:22 +0000
 1.3.80.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.3.78.1 16-May-2008  yamt sync with head.
 1.3.76.1 18-May-2008  yamt sync with head.
 1.3.74.1 02-Jun-2008  mjf Sync with HEAD.
 1.11 16-Jan-2024  thorpej Several years ago, the interrupt priority levels for devices were "flattened"
such that IPL_BIO, IPL_NET, and IPL_TTY (logical interrupt priority levels)
became aliases of IPL_VM (the logical interrupt priority level above which
memory allocation is not allowed). Unfortuantely, this meant that any
use of these logical interrupt priority levels to differentiate between
different interrupt service routines at the same auto-vectored interrupt
level was pointless... "when everyone is special, no one is".

Before this flattening happened, these distinct logical interrupt priority
levels levels were dynamically mapped to physical auto-vectored interrupt
levels based on which types of devices registered themselves at which auto-
vectored level. Now, splbio(), splnet(), etc. are all equivalent to splvm(),
which effectively blocks all device interrupts.

Switch to using the ISRPRI_* values provided by the common m68k interrupt
dispatch code, which allows interrupt handlers for devices that are more
latency-sensitive to be sorted earlier in the list of handlers at a given
auto-vectored interrupt level, as was originally intended.
 1.10 08-Dec-2018  thorpej Clean up initialization of com_regs structure, in preparation for
some additional changers.
 1.9 20-Apr-2014  tsutsui branches: 1.9.26; 1.9.28;
Add proper consinit(9) support for sti(4) at sgc framebuffer on hp300.

The cnattach functions for sti(4) and service switch check method
for 425e in com_frodo.c are taken from OpenBSD.
The strategy how to choose the console device in hp300_cninit() is
quite diverged from 4.4BSD and OpenBSD so it's tweaked by me.

Also put several changes in sti_sgc.c to reduce diffs from OpenBSD/hp300.

Tested on 425e and 362 (which still uses gendiofb(4), not sti(4)).

XXX: sti(4) requires uvm_km_alloc(9) and uvm_map_protect(9)
to copy and call ROM functions on the executable memory region, so
it can be called before UVM and related initializations are complete.
Probably it's time to consider about MI "deferred consinit()" API
in init_main.c (or elsewhere) for modern complicated VM system...
 1.8 28-Apr-2008  martin branches: 1.8.34; 1.8.40; 1.8.44; 1.8.50; 1.8.60;
Remove clause 3 and 4 from TNF licenses
 1.7 14-Mar-2008  cube branches: 1.7.2; 1.7.4;
Split device_t and softc for all com(4) devices (well, everything that
uses a com_softc backend). Use proper types and ansify where appropriate.
 1.6 03-Dec-2007  ad branches: 1.6.10; 1.6.14;
Interrupt handling changes, in discussion since February:

- Reduce available SPL levels for hardware devices to none, vm, sched, high.
- Acquire kernel_lock only for interrupts at IPL_VM.
- Implement threaded soft interrupts.
 1.5 13-Jul-2006  gdamore branches: 1.5.14; 1.5.32; 1.5.34; 1.5.40;
Add an option COM_REGMAP to allow com(4) to use an array of register indices.
This allows us to convert aucom to just another com attachment, and cleanup
some code in the com_arbus.c.

Additionally, we use a common com_cleanup routine rather than having a
zillion copies of it in the attachment points.

This has been tested on a number architectures, and it has been shown to get
close to comparable performance when COM_REGMAP is defined, and comparable
when it is not defined.

Approved by core@. Fixes PR port-evbmips/32362.
 1.4 11-Dec-2005  christos branches: 1.4.4; 1.4.8; 1.4.16;
merge ktrace-lwp.
 1.3 28-Aug-2004  thorpej branches: 1.3.12;
Use ANSI function decls, static, and const.
 1.2 10-Apr-2004  tsutsui branches: 1.2.2;
It turns out that not only HP425e but other HP4xx models also require
COM_HW_NOIEN for APCI com(4) ports.

Now I can login HP425t via both com[12] at frodo0.
 1.1 08-Nov-2003  tsutsui branches: 1.1.2;
Switch DCA and APCI serial devices to use MI com(4) driver.

DCA is tested on HP362 and HP382 with serial console,
but APCI on HP4xx is not tested yet.
 1.1.2.1 11-Apr-2004  jmc Pullup rev 1.2 (requested by tsutsui in ticket #116)

Adjust fd_name in struct frodo_device frodo_subdevs[]
since MD apci(4) has been switched to MI com(4).
Adjust FRODO_BASE macro since com_frodo uses bus_space_map(9)
which takes offset from intiobase instead of KVA.
It turns out that not only HP425e but other HP4xx models also require
COM_HW_NOIEN for APCI com(4) ports.
 1.2.2.5 21-Sep-2004  skrll Fix the sync with head I botched.
 1.2.2.4 18-Sep-2004  skrll Sync with HEAD.
 1.2.2.3 03-Sep-2004  skrll Sync with HEAD
 1.2.2.2 03-Aug-2004  skrll Sync with HEAD
 1.2.2.1 10-Apr-2004  skrll file com_frodo.c was added on branch ktrace-lwp on 2004-08-03 10:34:22 +0000
 1.3.12.3 17-Mar-2008  yamt sync with head.
 1.3.12.2 07-Dec-2007  yamt sync with head
 1.3.12.1 30-Dec-2006  yamt sync with head.
 1.4.16.1 18-Jun-2006  gdamore COM_INIT_REGS-ify these. Compiles okay, but no real hardware test. :-)
 1.4.8.1 11-Aug-2006  yamt sync with head
 1.4.4.1 09-Sep-2006  rpaulo sync with head
 1.5.40.1 08-Dec-2007  mjf Sync with HEAD.
 1.5.34.2 23-Mar-2008  matt sync with HEAD
 1.5.34.1 09-Jan-2008  matt sync with HEAD
 1.5.32.1 09-Dec-2007  jmcneill Sync with HEAD.
 1.5.14.1 03-Dec-2007  ad Sync with HEAD.
 1.6.14.2 02-Jun-2008  mjf Sync with HEAD.
 1.6.14.1 03-Apr-2008  mjf Sync with HEAD.
 1.6.10.1 24-Mar-2008  keiichi sync with head.
 1.7.4.1 16-May-2008  yamt sync with head.
 1.7.2.1 18-May-2008  yamt sync with head.
 1.8.60.1 10-Aug-2014  tls Rebase.
 1.8.50.1 18-May-2014  rmind sync with head
 1.8.44.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.8.40.1 21-May-2014  bouyer Pull up following revision(s) (requested by tsutsui in ticket #1058):
sys/arch/hp300/conf/files.hp300: revision 1.88
sys/arch/hp300/include/autoconf.h: revision 1.13
sys/dev/ic/sti.c: revision 1.17
sys/arch/hp300/dev/frodo.c: revision 1.31
sys/arch/hp300/conf/GENERIC: revision 1.173
sys/arch/hp300/hp300/machdep.c: revision 1.229
sys/arch/hp300/dev/frodo.c: revision 1.32
sys/arch/hp300/hp300/autoconf.c: revision 1.102
sys/arch/hp300/dev/frodoreg.h: revision 1.5
sys/arch/hp300/stand/common/ite_sti.c: revision 1.1
sys/arch/hp300/stand/common/itevar.h: revision 1.16
sys/arch/hp300/hp300/autoconf.c: revision 1.105
sys/arch/hp300/dev/sti_sgcvar.h: revision 1.1
sys/arch/hp300/stand/common/apci.c: revision 1.12
sys/arch/hp300/stand/common/apci.c: revision 1.13
sys/arch/hp300/dev/dnkbd.c: revision 1.6
sys/arch/hp300/dev/dnkbd.c: revision 1.7
sys/arch/hp300/stand/inst/version: revision 1.12
sys/arch/hp300/dev/com_frodo.c: revision 1.9
sys/arch/hp300/stand/common/ite.c: revision 1.17
sys/arch/hp300/conf/GENERIC: revision 1.181
sys/arch/hp300/dev/sti_sgc.c: revision 1.1
sys/arch/hp300/stand/common/dnkbd.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.2
sys/dev/ic/stivar.h: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.21
sys/arch/hp300/conf/INSTALL: revision 1.56
sys/arch/hp300/conf/INSTALL: revision 1.58
sys/arch/hp300/stand/uboot/version: revision 1.19
sys/arch/hp300/stand/common/samachdep.h: revision 1.17
sys/arch/hp300/stand/common/clock.c: revision 1.12
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.1
sys/arch/hp300/stand/Makefile.buildboot: revision 1.34
sys/arch/hp300/conf/files.hp300: revision 1.87
Add sti at sgc framebuffer.
Ported from OpenBSD by kiyohara@.
Fix a botch on switching from apci (and dca) to MI com(4) 10 years ago.
I.e. fix apci device address per FRODO_BASE macro change
in frodoreg.h rev 1.2. Now bootloader works with serial console
on HP425e (which has only com at frodo).
Thanks to miod@openbsd for providing his 425e.
Add sti(4) at sgc screen console support. From (the late) OpenBSD/hp300.
Tested on HP9000/425e, which was sent from Miod Vallat and
demonstrated at Open Source unConference 2014 Kagawa.
Check the service switch on 425e to select apci serial console.
Taken from OpenBSD/hp300. See the following comment for details:
> * Check the service switch. On the 425e, this is a physical
> * switch, unlike other frodo-based machines, so we can use it
> * as a serial vs internal video selector, since the PROM can not
> * be configured for serial console.
Add proper RealTime Clock support for HP9000/425e.
As the OpenBSD/hp300 page says 425e doesn't have the traditional
RTC at intio (as it also lacks DCA 16550 serial at intio?),
but after a few hour investigation it turns out that
425e uses mc146818 compatible calendar clock in
the Apollo "frodo" utility chip and the frodo chip on
425e actually has the 32kHz OSC and is actually backed up
by the onboard lithium battery.
Tested on HP425e (with mcclock) and HP362 (with old rtc).
Add RTC support for HP9000/425e to bootloader too.
Also put several cleanup:
- make local functions and variables static
- use proper variable types
- some KNF
Note it turns out that extreme slowness of netboot on hp300 is
caused by the too slow access of the traditional RTC chip at intio
(i.e. netboot on 425e is so much faster than others). Oh well.
Add proper consinit(9) support for sti(4) at sgc framebuffer on hp300.
The cnattach functions for sti(4) and service switch check method
for 425e in com_frodo.c are taken from OpenBSD.
The strategy how to choose the console device in hp300_cninit() is
quite diverged from 4.4BSD and OpenBSD so it's tweaked by me.
Also put several changes in sti_sgc.c to reduce diffs from OpenBSD/hp300.
Tested on 425e and 362 (which still uses gendiofb(4), not sti(4)).
XXX: sti(4) requires uvm_km_alloc(9) and uvm_map_protect(9)
to copy and call ROM functions on the executable memory region, so
it can be called before UVM and related initializations are complete.
Probably it's time to consider about MI "deferred consinit()" API
in init_main.c (or elsewhere) for modern complicated VM system...
Also fix the apci device address in dnkbd.c as apci.c rev 1.12:
http://mail-index.netbsd.org/source-changes/2014/04/10/msg053940.html
Finally dnkbd(4) is confirmed working at least on bootloader.
Thanks again to Miod Vallat.
Make the Apollo Domain keyboard actually work.
Tested on HP9000/425e and the keyboard model A1630-82001 R2 (RX-60857-HW)
provided by Miod Vallat. Mouse support needs more work.
Pull random notes on the Apollo Domain keyboard from ancient PR/3528.
Bump versions to denote recent 425e related changes.
Probe mcclock only on 425e to avoid an extra "not configured" message.
Add and enable sti(4) at sgc in install kernels for 425e.
Tested on both serial console and framebuffer console.
(switched by the service switch on the back panel)
 1.8.34.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.9.28.1 10-Jun-2019  christos Sync with HEAD
 1.9.26.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.4 14-May-2008  tsutsui Normalize my licenses.
 1.3 11-Dec-2005  christos branches: 1.3.74; 1.3.76; 1.3.78; 1.3.80;
merge ktrace-lwp.
 1.2 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.1 08-Nov-2003  tsutsui branches: 1.1.4;
Switch DCA and APCI serial devices to use MI com(4) driver.

DCA is tested on HP362 and HP382 with serial console,
but APCI on HP4xx is not tested yet.
 1.1.4.5 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.4.4 18-Sep-2004  skrll Sync with HEAD.
 1.1.4.3 03-Sep-2004  skrll Sync with HEAD
 1.1.4.2 03-Aug-2004  skrll Sync with HEAD
 1.1.4.1 08-Nov-2003  skrll file com_frodovar.h was added on branch ktrace-lwp on 2004-08-03 10:34:22 +0000
 1.3.80.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.3.78.1 16-May-2008  yamt sync with head.
 1.3.76.1 18-May-2008  yamt sync with head.
 1.3.74.1 02-Jun-2008  mjf Sync with HEAD.
 1.64 21-Apr-2023  tsutsui Remove ancient /* ARGSUSED */ lint comments.
 1.63 05-Jul-2021  tsutsui Cleanup duplicated CS/80 indentify structures. From OpenBSD.

https://marc.info/?l=openbsd-cvs&m=113227249626888&w=2
> Define the CS/80 identify structure only once and correctly, instead of
> duplicating it in every CS/80 driver and using an hardcoded number for
> its size.
> No functional change.

https://marc.info/?l=openbsd-cvs&m=113273001020159&w=2
> Pick HP-IB describe structures changes from main kernel code here as well.
 1.62 05-Jul-2021  tsutsui Pull HP-IB probe fixes from OpenBSD/hp300.

https://marc.info/?l=openbsd-cvs&m=113217630426615&w=2
> Overhaul the way HP-IB devices are probed. We will now do an exhaustive
> probe of the (slave, punit) tuple space, since this is the only way we
> can get a dual disk or dual tape enclosure to attach two devices of the
> same kind.

This allows using multiple rd(4) disk images on the same slave emulated
by HPDisk (and probably the real 9122D with dual floppy disk drives).

Thanks to Miod Vallat for suggesting this fix.
 1.61 25-Jul-2014  dholland branches: 1.61.32; 1.61.44;
Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.
 1.60 25-Jul-2014  dholland Add d_discard to all struct bdevsw instances I could find.

I've set them all to nodiscard. Some of them (wd, dk, vnd, ld,
raidframe, maybe cgd) should be implemented for real.
 1.59 24-Mar-2014  christos branches: 1.59.2;
- remove unused
- use cpu_{g,s}etmodel
 1.58 16-Mar-2014  dholland Change (mostly mechanically) every cdevsw/bdevsw I can find to use
designated initializers.

I have not built every extant kernel so I have probably broken at
least one build; however I've also found and fixed some wrong
cdevsw/bdevsw entries so even if so I think we come out ahead.
 1.57 13-Jan-2009  yamt branches: 1.57.14; 1.57.24; 1.57.28;
g/c BUFQ_FOO() macros and use bufq_foo() directly.
 1.56 17-Jun-2008  he branches: 1.56.4;
Add a missing parenthesis so that this builds again.
 1.55 13-Jun-2008  cegger use device_lookup_private to get softc
 1.54 28-Apr-2008  martin branches: 1.54.2; 1.54.4;
Remove clause 3 and 4 from TNF licenses
 1.53 29-Mar-2008  tsutsui branches: 1.53.2; 1.53.4;
Split device_t/softc, and misc cosmetic changes.
 1.52 02-Jan-2008  ad branches: 1.52.6;
Merge vmlocking2 to head.
 1.51 17-Oct-2007  garbled branches: 1.51.2; 1.51.4; 1.51.8;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.50 08-Oct-2007  ad Merge brelse() changes from the vmlocking branch.
 1.49 29-Jul-2007  ad branches: 1.49.4; 1.49.6; 1.49.8;
It's not a good idea for device drivers to modify b_flags, as they don't
need to understand the locking around that field. Instead of setting
B_ERROR, set b_error instead. b_error is 'owned' by whoever completes
the I/O request.
 1.48 04-Mar-2007  christos branches: 1.48.2; 1.48.10; 1.48.12; 1.48.14;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.47 21-Jul-2006  tsutsui branches: 1.47.10;
Some KNF.
 1.46 28-Mar-2006  thorpej Use device_unit().
 1.45 23-Feb-2006  thorpej branches: 1.45.2; 1.45.4; 1.45.6;
Use device_parent().
 1.44 11-Dec-2005  christos branches: 1.44.2; 1.44.4; 1.44.6;
merge ktrace-lwp.
 1.43 15-Oct-2005  yamt - change the way to specify a bufq strategy. (by string rather than by number)
- rather than embedding bufq_state in driver softc,
have a pointer to the former.
- move bufq related functions from kern/subr_disk.c to kern/subr_bufq.c.
- rename method to strategy for consistency.
- move some definitions which don't need to be exposed to the rest of kernel
from sys/bufq.h to sys/bufq_impl.h.
(is it better to move it to kern/ or somewhere?)
- fix some obvious breakage in dev/qbus/ts.c. (not tested)
 1.42 02-Jun-2005  tsutsui branches: 1.42.2;
Add const.
 1.41 14-Mar-2005  tsutsui Include "ioconf.h" for struct cfdriver *_cd decls.
 1.40 05-Feb-2005  chs make this compile with DEBUG.
 1.39 28-Oct-2004  yamt branches: 1.39.4; 1.39.6;
move buffer queue related stuffs from buf.h to their own header, bufq.h.
 1.38 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.37 17-Nov-2003  tsutsui TAB/space cleanup.
 1.36 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.35 29-Jun-2003  fvdl branches: 1.35.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.34 29-Jun-2003  thorpej Adapt to ktrace/lwp changes.
 1.33 23-Oct-2002  jdolecek merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.32 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.31 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.30 06-Sep-2002  gehenna Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.29 26-Jul-2002  hannken Convert to new device buffer queue interface.

Approved by: Jason R. Thorpe <thorpej@netbsd.org>
 1.28 15-Mar-2002  gmcgarry branches: 1.28.4;
Add RCSIDs.
 1.27 08-Dec-2001  gmcgarry bcopy -> memcpy
bzero -> memset
bcmp -> memcmp
 1.26 27-May-2001  kleink branches: 1.26.2; 1.26.4; 1.26.8;
Add 35401A drive (not picker) support; from Jarkko Teppo in PR
port-hp300/11183.
 1.25 19-May-2000  thorpej branches: 1.25.6;
A foolish consistency; most parts of the kernel use bp->b_data, so
change these from bp->b_un.b_addr to bp->b_data, as well. This also
allows us more flexibility to experiment with other data buffer types
hung off of struct buf.
 1.24 21-Jan-2000  thorpej Update for sys/buf.h/disksort_*() changes.
 1.23 12-Jan-1998  thorpej branches: 1.23.14; 1.23.20;
Update for changes to config.
 1.22 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.21 02-Apr-1997  scottr branches: 1.21.4;
Fix printf() and other warnings when compiled with DEBUG defined.
 1.20 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.19 30-Jan-1997  thorpej Convert to new-style autoconfiguration; old-style config is no longer
supported.
 1.18 14-Oct-1996  thorpej Set the device class on non-dull devices. This is a transitional thing.
 1.17 13-Oct-1996  christos backout previous kprintf changes
 1.16 11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.15 14-Feb-1996  thorpej All interrupt routines (except the HIL; don't ask) now take a pointer
to a softc, rather than a unit number. Add a "dq_softc" member
to struct devqueue; this is a temporary measure until the
dma/controller/device callback spaghetti is untangled.

YAY! No more need for dcafastservice!

HIL: squish instances of "(void) splhil()" and "(void) spl0();".
 1.14 23-Jan-1996  scottr Eliminate unnecessary goto and labels, and other minor cleanup.
 1.13 02-Dec-1995  thorpej Use a "match/attach" rather than "init" scheme for probing devices.
This is a step towards getting the drivers ready for new config.
 1.12 09-Oct-1995  thorpej Pass correct number of arguments to hpibgo().
 1.11 04-Aug-1995  thorpej Update for conf.h changes.
 1.10 23-Feb-1995  mycroft Move common code for finishing a buffer into a separate function.
 1.9 26-Oct-1994  cgd new RCS ID format.
 1.8 23-May-1994  mycroft Merge with 4.4-Lite.
 1.7 11-May-1994  mycroft Get rid of private *read() and *write() functions.
 1.6 10-Feb-1994  mycroft Add arg to ioctl functions. Clean up #includes.
 1.5 06-Feb-1994  mycroft Use b_actb, not b_actl.
 1.4 06-Feb-1994  mycroft Add a prototype, to eliminate silly warnings.
 1.3 11-Jan-1994  mycroft *strategy functions return void.
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.21.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.23.20.1 21-Dec-1999  wrstuden Initial commit of recent changes to make DEV_BSIZE go away.

Runs on i386, needs work on other arch's. Main kernel routines should be
fine, but a number of the stand programs need help.

cd, fd, ccd, wd, and sd have been updated. sd has been tested with non-512
byte block devices. vnd, raidframe, and lfs need work.

Non 2**n block support is automatic for LKM's and conditional for kernels
on "options NON_PO2_BLOCKS".
 1.23.14.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.25.6.1 21-Jun-2001  nathanw Catch up to -current.
 1.26.8.7 11-Nov-2002  nathanw Catch up to -current
 1.26.8.6 18-Oct-2002  nathanw Catch up to -current.
 1.26.8.5 17-Sep-2002  nathanw Catch up to -current.
 1.26.8.4 01-Aug-2002  nathanw Catch up to -current.
 1.26.8.3 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.26.8.2 08-Jan-2002  nathanw Catch up to -current.
 1.26.8.1 27-May-2001  nathanw file ct.c was added on branch nathanw_sa on 2002-01-08 00:24:31 +0000
 1.26.4.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.26.2.4 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.26.2.3 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.26.2.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.26.2.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.28.4.2 30-Aug-2002  gehenna catch up with -current.
 1.28.4.1 17-May-2002  gehenna Add device switch.
 1.35.2.9 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.35.2.8 01-Apr-2005  skrll Sync with HEAD.
 1.35.2.7 06-Feb-2005  skrll Sync with HEAD.
 1.35.2.6 24-Jan-2005  skrll Adapt to branch.
 1.35.2.5 02-Nov-2004  skrll Sync with HEAD.
 1.35.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.35.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.35.2.2 03-Sep-2004  skrll Sync with HEAD
 1.35.2.1 03-Aug-2004  skrll Sync with HEAD
 1.39.6.2 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.39.6.1 12-Feb-2005  yamt sync with head.
 1.39.4.1 29-Apr-2005  kent sync with -current
 1.42.2.5 21-Jan-2008  yamt sync with head
 1.42.2.4 27-Oct-2007  yamt sync with head.
 1.42.2.3 03-Sep-2007  yamt sync with head.
 1.42.2.2 30-Dec-2006  yamt sync with head.
 1.42.2.1 21-Jun-2006  yamt sync with head.
 1.44.6.1 22-Apr-2006  simonb Sync with head.
 1.44.4.1 09-Sep-2006  rpaulo sync with head
 1.44.2.1 01-Mar-2006  yamt sync with head.
 1.45.6.1 31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.45.4.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.45.2.2 11-Aug-2006  yamt sync with head
 1.45.2.1 01-Apr-2006  yamt sync with head.
 1.47.10.1 12-Mar-2007  rmind Sync with HEAD.
 1.48.14.1 15-Aug-2007  skrll Sync with HEAD.
 1.48.12.1 07-Aug-2007  matt Sync with HEAD.
 1.48.10.2 16-Oct-2007  garbled Sync with HEAD
 1.48.10.1 03-Oct-2007  garbled Sync with HEAD
 1.48.2.2 09-Oct-2007  ad Sync with head.
 1.48.2.1 19-Aug-2007  ad - Back out the biodone() changes.
- Eliminate B_ERROR (from HEAD).
 1.49.8.1 14-Oct-2007  yamt sync with head.
 1.49.6.2 09-Jan-2008  matt sync with HEAD
 1.49.6.1 06-Nov-2007  matt sync with HEAD
 1.49.4.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.51.8.1 02-Jan-2008  bouyer Sync with HEAD
 1.51.4.1 31-Dec-2007  ad Make compile with new buffer cache locking scheme.

XXX This should be largely MI, please do not make another clone of disksubr.c.
 1.51.2.1 18-Feb-2008  mjf Sync with HEAD.
 1.52.6.4 17-Jan-2009  mjf Sync with HEAD.
 1.52.6.3 29-Jun-2008  mjf Sync with HEAD.
 1.52.6.2 02-Jun-2008  mjf Sync with HEAD.
 1.52.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.53.4.2 04-May-2009  yamt sync with head.
 1.53.4.1 16-May-2008  yamt sync with head.
 1.53.2.2 17-Jun-2008  yamt sync with head.
 1.53.2.1 18-May-2008  yamt sync with head.
 1.54.4.1 18-Jun-2008  simonb Sync with head.
 1.54.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.56.4.1 19-Jan-2009  skrll Sync with HEAD.
 1.57.28.1 18-May-2014  rmind sync with head
 1.57.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.57.14.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.59.2.1 10-Aug-2014  tls Rebase.
 1.61.44.1 01-Aug-2021  thorpej Sync with HEAD.
 1.61.32.1 14-Jul-2021  martin Pull up following revision(s) (requested by tsutsui in ticket #1323):

sys/arch/hp300/dev/rd.c: revision 1.109
sys/arch/hp300/stand/Makefile.buildboot: revision 1.37
sys/arch/hp300/stand/common/ct.c: revision 1.8
sys/arch/hp300/dev/hpibvar.h: revision 1.22
sys/arch/hp300/dev/ct.c: revision 1.62
sys/arch/hp300/dev/hpibvar.h: revision 1.23
sys/arch/hp300/dev/ct.c: revision 1.63
sys/arch/hp300/dev/hpibvar.h: revision 1.24
sys/arch/hp300/dev/mt.c: revision 1.55
sys/arch/hp300/dev/rdreg.h: revision 1.14
sys/arch/hp300/dev/hpib.c: revision 1.43 (via patch)
sys/arch/hp300/dev/rdreg.h: revision 1.15
sys/arch/hp300/dev/rdreg.h: revision 1.16
sys/arch/hp300/dev/rdreg.h: revision 1.17
etc/etc.hp300/MAKEDEV.conf: revision 1.15
sys/arch/hp300/stand/common/hpibvar.h: revision 1.6
sys/arch/hp300/stand/common/rd.c: revision 1.11
sys/arch/hp300/dev/ctreg.h: revision 1.11
sys/arch/hp300/dev/rdvar.h: revision 1.24
sys/arch/hp300/dev/rdvar.h: revision 1.25
sys/arch/hp300/dev/rdvar.h: revision 1.26
sys/arch/hp300/dev/rd.c: revision 1.103
sys/arch/hp300/dev/rd.c: revision 1.104
sys/arch/hp300/dev/rd.c: revision 1.105
sys/arch/hp300/dev/rd.c: revision 1.106
sys/arch/hp300/dev/rd.c: revision 1.107
sys/arch/hp300/dev/rd.c: revision 1.108

Consistently use #define<tab> here.

Consistently use #define<tab> as rdreg.h.

No need to bother to use aprint_debug(9) inside #ifdef DEBUG block.

Pull HP-IB probe fixes from OpenBSD/hp300.
https://marc.info/?l=openbsd-cvs&m=113217630426615&w=2

Overhaul the way HP-IB devices are probed. We will now do an exhaustive
probe of the (slave, punit) tuple space, since this is the only way we
can get a dual disk or dual tape enclosure to attach two devices of the
same kind.

This allows using multiple rd(4) disk images on the same slave emulated
by HPDisk (and probably the real 9122D with dual floppy disk drives).

Thanks to Miod Vallat for suggesting this fix.

Move attach messages from common rdident() to explicit rdattach().

Cleanup duplicated CS/80 indentify structures. From OpenBSD.
https://marc.info/?l=openbsd-cvs&m=113227249626888&w=2

Define the CS/80 identify structure only once and correctly, instead of
duplicating it in every CS/80 driver and using an hardcoded number for
its size.
No functional change.
https://marc.info/?l=openbsd-cvs&m=113273001020159&w=2

Pick HP-IB describe structures changes from main kernel code here as well.

Add support of multiple rd(4) disks on all punits for HPDisk.

Special thanks to Anders Gustafsson, the author of "HPDisk"
(GPIB disk emulator) http://www.dalton.ax/hpdisk/
for providing bare boards and improving firmwares for NetBSD/hp300.

Specify -fno-unwind-tables to shrink binaries.

Before:
text data bss dec hex filename
77902 4328 137120 219350 358d6 uboot

After:
text data bss dec hex filename
64186 4328 137120 205634 32342 uboot

Create rd3 device nodes, for HPDisk.

Add Device and drive info of 2202A, 7908A, 7911A, and 7941A.

Geometries and description info are taken from hpdrive.ini.sample
in HPDrive. Briefly tested on HPDisk.

Print rd(4) capacity and geometry info as sd(4) and wd(4) do.

Before:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 698 cylinders, 13 heads, 1116102 blocks, 512 bytes/block

After:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 544 MB, 698 cyl, 13 head, 123 sec, 512 bytes/block x 1116102 blocks
 1.11 05-Jul-2021  tsutsui Cleanup duplicated CS/80 indentify structures. From OpenBSD.

https://marc.info/?l=openbsd-cvs&m=113227249626888&w=2
> Define the CS/80 identify structure only once and correctly, instead of
> duplicating it in every CS/80 driver and using an hardcoded number for
> its size.
> No functional change.

https://marc.info/?l=openbsd-cvs&m=113273001020159&w=2
> Pick HP-IB describe structures changes from main kernel code here as well.
 1.10 11-Dec-2005  christos branches: 1.10.170; 1.10.182;
merge ktrace-lwp.
 1.9 19-Apr-2004  wiz Spell removable with only two es. Inspired by jmc@openbsd.
 1.8 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.7 27-May-2001  kleink branches: 1.7.8; 1.7.24;
Add 35401A drive (not picker) support; from Jarkko Teppo in PR
port-hp300/11183.
 1.6 09-Feb-1996  scottr branches: 1.6.42;
Info from Mike Hibler <mike@cs.utah.edu> indicates that the probable
intent for the value of the C_REL constant was 0xc0. Testing has turned
up no adverse effect on tape or disk devices, and in fact this change
apparently makes my 9145 tape work as expected. (!) Closes PRs 1874 and
1971.
 1.5 31-Dec-1995  thorpej XXX TEMPORARY STOP-GAP MEASURE! A 12-bit command modifier was being
squished into an 8-bit position in a command stream! Which one is wrong?
Changed the constant from 0x140 to 0x40, which is what ended up happening
anyhow. This exists in the old Utah sources, too! How long has this
bug existed?!
 1.4 26-Oct-1994  cgd branches: 1.4.2;
new RCS ID format.
 1.3 23-May-1994  mycroft Merge with 4.4-Lite.
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.4.2.1 12-Feb-1996  thorpej Bring in C_REL fix from main branch; reported to make 9145 tapes work
properly, and even seems to make HP-IB disks a bit faster.
 1.6.42.1 21-Jun-2001  nathanw Catch up to -current.
 1.7.24.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.7.24.2 18-Sep-2004  skrll Sync with HEAD.
 1.7.24.1 03-Aug-2004  skrll Sync with HEAD
 1.7.8.2 27-May-2001  kleink Add 35401A drive (not picker) support; from Jarkko Teppo in PR
port-hp300/11183.
 1.7.8.1 27-May-2001  kleink file ctreg.h was added on branch nathanw_sa on 2001-05-27 09:09:06 +0000
 1.10.182.1 01-Aug-2021  thorpej Sync with HEAD.
 1.10.170.1 14-Jul-2021  martin Pull up following revision(s) (requested by tsutsui in ticket #1323):

sys/arch/hp300/dev/rd.c: revision 1.109
sys/arch/hp300/stand/Makefile.buildboot: revision 1.37
sys/arch/hp300/stand/common/ct.c: revision 1.8
sys/arch/hp300/dev/hpibvar.h: revision 1.22
sys/arch/hp300/dev/ct.c: revision 1.62
sys/arch/hp300/dev/hpibvar.h: revision 1.23
sys/arch/hp300/dev/ct.c: revision 1.63
sys/arch/hp300/dev/hpibvar.h: revision 1.24
sys/arch/hp300/dev/mt.c: revision 1.55
sys/arch/hp300/dev/rdreg.h: revision 1.14
sys/arch/hp300/dev/hpib.c: revision 1.43 (via patch)
sys/arch/hp300/dev/rdreg.h: revision 1.15
sys/arch/hp300/dev/rdreg.h: revision 1.16
sys/arch/hp300/dev/rdreg.h: revision 1.17
etc/etc.hp300/MAKEDEV.conf: revision 1.15
sys/arch/hp300/stand/common/hpibvar.h: revision 1.6
sys/arch/hp300/stand/common/rd.c: revision 1.11
sys/arch/hp300/dev/ctreg.h: revision 1.11
sys/arch/hp300/dev/rdvar.h: revision 1.24
sys/arch/hp300/dev/rdvar.h: revision 1.25
sys/arch/hp300/dev/rdvar.h: revision 1.26
sys/arch/hp300/dev/rd.c: revision 1.103
sys/arch/hp300/dev/rd.c: revision 1.104
sys/arch/hp300/dev/rd.c: revision 1.105
sys/arch/hp300/dev/rd.c: revision 1.106
sys/arch/hp300/dev/rd.c: revision 1.107
sys/arch/hp300/dev/rd.c: revision 1.108

Consistently use #define<tab> here.

Consistently use #define<tab> as rdreg.h.

No need to bother to use aprint_debug(9) inside #ifdef DEBUG block.

Pull HP-IB probe fixes from OpenBSD/hp300.
https://marc.info/?l=openbsd-cvs&m=113217630426615&w=2

Overhaul the way HP-IB devices are probed. We will now do an exhaustive
probe of the (slave, punit) tuple space, since this is the only way we
can get a dual disk or dual tape enclosure to attach two devices of the
same kind.

This allows using multiple rd(4) disk images on the same slave emulated
by HPDisk (and probably the real 9122D with dual floppy disk drives).

Thanks to Miod Vallat for suggesting this fix.

Move attach messages from common rdident() to explicit rdattach().

Cleanup duplicated CS/80 indentify structures. From OpenBSD.
https://marc.info/?l=openbsd-cvs&m=113227249626888&w=2

Define the CS/80 identify structure only once and correctly, instead of
duplicating it in every CS/80 driver and using an hardcoded number for
its size.
No functional change.
https://marc.info/?l=openbsd-cvs&m=113273001020159&w=2

Pick HP-IB describe structures changes from main kernel code here as well.

Add support of multiple rd(4) disks on all punits for HPDisk.

Special thanks to Anders Gustafsson, the author of "HPDisk"
(GPIB disk emulator) http://www.dalton.ax/hpdisk/
for providing bare boards and improving firmwares for NetBSD/hp300.

Specify -fno-unwind-tables to shrink binaries.

Before:
text data bss dec hex filename
77902 4328 137120 219350 358d6 uboot

After:
text data bss dec hex filename
64186 4328 137120 205634 32342 uboot

Create rd3 device nodes, for HPDisk.

Add Device and drive info of 2202A, 7908A, 7911A, and 7941A.

Geometries and description info are taken from hpdrive.ini.sample
in HPDrive. Briefly tested on HPDisk.

Print rd(4) capacity and geometry info as sd(4) and wd(4) do.

Before:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 698 cylinders, 13 heads, 1116102 blocks, 512 bytes/block

After:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 544 MB, 698 cyl, 13 head, 123 sec, 512 bytes/block x 1116102 blocks
 1.59 08-Nov-2003  tsutsui Remove obsolete files by MI com(4) driver support.
 1.58 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.57 29-Jun-2003  fvdl branches: 1.57.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.56 29-Jun-2003  thorpej Adapt to ktrace/lwp changes.
 1.55 24-May-2003  gmcgarry Clean-up the DIO bus. Includes two main changes:

1) Pass address and ipl locators at attachment;
2) Remove hack which made the internal HP-IB controller
look like a DIO device.

The hack to allow the nhpib driver to support internal and DIO
controllers appears to be a leftover from 4.3BD where it was not
possible to have a driver attach to different busses. NetBSD has
supported bus-dependent attachments for a long time.
 1.54 06-Mar-2003  thorpej Update for consdev changes.
 1.53 23-Oct-2002  jdolecek merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.52 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.51 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.50 06-Sep-2002  gehenna Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.49 17-Mar-2002  atatat branches: 1.49.4;
Convert ioctl code to use EPASSTHROUGH instead of -1 or ENOTTY for
indicating an unhandled "command". ERESTART is -1, which can lead to
confusion. ERESTART has been moved to -3 and EPASSTHROUGH has been
placed at -4. No ioctl code should now return -1 anywhere. The
ioctl() system call is now properly restartable.
 1.48 15-Mar-2002  gmcgarry Increase the delay when resetting the port so that the output doesn't
get scrambled when we're the console. Add RCSID while here.
 1.47 23-Feb-2002  gmcgarry Unnecessary to cast splx() to void.
 1.46 08-Feb-2002  gmcgarry Enter DDB on break if console.
 1.45 14-Dec-2001  gmcgarry Update hardware drivers with console attachments to the new console
attachment interface.
 1.44 12-Jun-2001  wiz branches: 1.44.2; 1.44.4; 1.44.8;
receive, not recieve
 1.43 30-May-2001  lukem add missing #include "opt_kgdb.h"
 1.42 02-May-2001  scw Add `l_poll' to `struct linesw' and provide an xxxpoll() entry point
in each tty driver to indirect through it.

This allows tty line-disciplines to handle poll(2) system calls.
 1.41 27-Nov-2000  tsutsui branches: 1.41.2;
More fixes for linesw changes.
 1.40 02-Nov-2000  eeh Adapt to the new line discipline scheme.
 1.39 20-Jul-1998  thorpej branches: 1.39.14;
Don't deref a NULL tty pointer in the interrupt routine. This can happen
if we're the serial console, we have not yet been open'd, and we get an
interrupt for one reason or another.
 1.38 28-Mar-1998  thorpej Adjust for recent ttyopen() and dialout device changes.
 1.37 12-Jan-1998  thorpej Update for changes to config.
 1.36 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.35 05-May-1997  thorpej branches: 1.35.4;
Use dio_intr_establish().
 1.34 14-Apr-1997  thorpej Update for interrupt function and header name changes.
 1.33 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.32 30-Jan-1997  thorpej Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.31 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.30 09-Dec-1996  thorpej isrlink() now returns a cookie. We're not interested in the cookie, so
cast to (void).
 1.29 14-Oct-1996  thorpej Set the device class on non-dull devices. This is a transitional thing.
 1.28 13-Oct-1996  christos backout previous kprintf changes
 1.27 11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.26 06-Oct-1996  mycroft Serial console changes:
* Enable FIFO with trigger level 1.
* Set DTR and RTS so terminals are happy.
* Do not set IEN.
 1.25 02-Sep-1996  mycroft tty stop functions really should return void, not int, and certainly not both.
 1.24 06-Jun-1996  thorpej Add calls to tty_attach() and tty_detach() where appropriate.
 1.23 03-Mar-1996  thorpej branches: 1.23.4;
Fix logic errors in new console probe code that caused framebuffers
outside of "internal i/o" space to not even have a chance at console-hood.
Fix tested by Thorsten Frueauf <frueauf@ira.uka.de>, and offered with
my sincerest apologies that the bug ever existed in the first place.
 1.22 26-Feb-1996  thorpej Avoid accidentally lowering a devices console priority.
 1.21 24-Feb-1996  thorpej Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.20 14-Feb-1996  thorpej All interrupt routines (except the HIL; don't ask) now take a pointer
to a softc, rather than a unit number. Add a "dq_softc" member
to struct devqueue; this is a temporary measure until the
dma/controller/device callback spaghetti is untangled.

YAY! No more need for dcafastservice!

HIL: squish instances of "(void) splhil()" and "(void) spl0();".
 1.19 31-Dec-1995  thorpej Re-work the serial console support a bit; it doesn't depend on statically
allocated softc's now.
 1.18 02-Dec-1995  thorpej Use a "match/attach" rather than "init" scheme for probing devices.
This is a step towards getting the drivers ready for new config.

Clean up namespace, remove several instances of global arrays. Instead,
use a softc to carry state around. Where possible, pass a pointer to the
softc rather than a unit number.
 1.17 04-Oct-1995  thorpej Several changes:
* Reset the card on "fresh open" as a sanity measure.
* Use the "secret bit" to enable interrupts.
* Make some parts look/behave like their cousins in dev/isa/com.c
* Set the FIFO threshold based on line speed.
* Be a little more informative when port is attached.
* Implement TIOC{G,S}FLAGS; ttyflags now works.
First two items prevent deadlock on some systems (notably the 380,
425, and 433) which some people have been reporting. Use of the
"secret bit" seems to be safe on systems which don't need it. Changes
tested on a 319, 340, 345, and 380.
 1.16 19-Apr-1995  mycroft Kluge the *tty() routines until this port is converted to config.new.
 1.15 10-Apr-1995  mycroft Most of the console functions return void.
 1.14 26-Oct-1994  cgd new RCS ID format.
 1.13 23-May-1994  mycroft Merge with 4.4-Lite.
 1.12 10-Feb-1994  mycroft Add arg to ioctl functions. Clean up #includes.
 1.11 06-Feb-1994  mycroft Remove outdated console handling code.
 1.10 06-Feb-1994  mycroft Use common version of cons.c.
 1.9 29-Aug-1993  deraadt tty XXstart() routines return void
 1.8 12-Jul-1993  mycroft Change tty code to use clist interface, but with ring buffer implementation.
Also, fix a couple of bugs in tty.c and pccons.c, and some gross kluginess
in the hp300 stuff.
 1.7 07-Jul-1993  deraadt the "struct tty *cn_tty" field in cons.c wasn't being used by anything
 1.6 06-Jun-1993  cgd make getc() and ungetc() be rb{un,}getc(), so getc() and ungetc()
don't conflict w/ansi prototypes...
 1.5 29-May-1993  cgd fix for t_raw, rather than t_rawq for the tsleeps...
 1.4 27-May-1993  deraadt Changes to hp300 code to support two things:
1. dynamic tty allocation
2. use ring buffers instead of clists
Of course, I can't test it :-)
 1.3 22-May-1993  cgd add include of select.h if necessary for protos, or delete if extraneous
 1.2 18-May-1993  cgd make kernel select interface be one-stop shopping & clean it all up.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.23.4.2 10-Dec-1996  mycroft From trunk:
Set serial port parameters sanely for a serial console.
 1.23.4.1 06-Jun-1996  thorpej Update from trunk:

Add calls to tty_attach() and tty_detach() where appropriate.
 1.35.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.39.14.2 08-Dec-2000  bouyer Sync with HEAD.
 1.39.14.1 22-Nov-2000  bouyer Sync with HEAD.
 1.41.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.44.8.7 11-Nov-2002  nathanw Catch up to -current
 1.44.8.6 18-Oct-2002  nathanw Catch up to -current.
 1.44.8.5 17-Sep-2002  nathanw Catch up to -current.
 1.44.8.4 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.44.8.3 28-Feb-2002  nathanw Catch up to -current.
 1.44.8.2 08-Jan-2002  nathanw Catch up to -current.
 1.44.8.1 12-Jun-2001  nathanw file dca.c was added on branch nathanw_sa on 2002-01-08 00:24:32 +0000
 1.44.4.2 13-Oct-2001  fvdl Revert the t_dev -> t_devvp change in struct tty. The way that tty
structs are currently used (especially by console ttys) aren't
ready for it, and this will require quite a few changes.
 1.44.4.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.44.2.4 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.44.2.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.44.2.2 16-Mar-2002  jdolecek Catch up with -current.
 1.44.2.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.49.4.1 19-May-2002  gehenna Add device switch.
Replace the access to devsw table and the hard-coded majors with devsw API.
 1.57.2.1 03-Aug-2004  skrll Sync with HEAD
 1.8 08-Nov-2003  tsutsui Move apcireg.h and dcareg.h to stand/common since they are no longer used
by kernel.
 1.7 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.6 24-Feb-1996  thorpej branches: 1.6.64;
Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.5 31-Dec-1995  thorpej Re-work the serial console support a bit; it doesn't depend on statically
allocated softc's now.
 1.4 26-Oct-1994  cgd new RCS ID format.
 1.3 23-May-1994  mycroft Merge with 4.4-Lite.
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.6.64.1 03-Aug-2004  skrll Sync with HEAD
 1.94 16-Jan-2024  thorpej Several years ago, the interrupt priority levels for devices were "flattened"
such that IPL_BIO, IPL_NET, and IPL_TTY (logical interrupt priority levels)
became aliases of IPL_VM (the logical interrupt priority level above which
memory allocation is not allowed). Unfortuantely, this meant that any
use of these logical interrupt priority levels to differentiate between
different interrupt service routines at the same auto-vectored interrupt
level was pointless... "when everyone is special, no one is".

Before this flattening happened, these distinct logical interrupt priority
levels levels were dynamically mapped to physical auto-vectored interrupt
levels based on which types of devices registered themselves at which auto-
vectored level. Now, splbio(), splnet(), etc. are all equivalent to splvm(),
which effectively blocks all device interrupts.

Switch to using the ISRPRI_* values provided by the common m68k interrupt
dispatch code, which allows interrupt handlers for devices that are more
latency-sensitive to be sorted earlier in the list of handlers at a given
auto-vectored interrupt level, as was originally intended.
 1.93 08-Sep-2023  andvar hp300/dcm(4): set dsp value after sc is initialized.
fixes DCMSTATS enabled build for hp300.
 1.92 21-Apr-2023  tsutsui Remove ancient /* ARGSUSED */ lint comments.
 1.91 15-Jan-2023  tsutsui TAB/space cleanup.
 1.90 10-Apr-2022  andvar branches: 1.90.4;
fix various typos in comments and output/log messages.
 1.89 29-Dec-2020  tsutsui Use C99 designated initializers for struct consdev.
 1.88 15-Nov-2014  christos branches: 1.88.4; 1.88.10; 1.88.32;
centralize the call unit / dialout macros
 1.87 25-Jul-2014  dholland Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.
 1.86 22-May-2014  dholland Use accessor functions for the tty's table of control characters.
(at least from outside the core tty sources)

Move some xon/xoff code from net/ppp_tty.c to kern/tty.c.
 1.85 24-Mar-2014  christos branches: 1.85.2;
- remove unused
- use cpu_{g,s}etmodel
 1.84 16-Mar-2014  dholland Change (mostly mechanically) every cdevsw/bdevsw I can find to use
designated initializers.

I have not built every extant kernel so I have probably broken at
least one build; however I've also found and fixed some wrong
cdevsw/bdevsw entries so even if so I think we come out ahead.
 1.83 24-Apr-2011  rmind branches: 1.83.4; 1.83.14; 1.83.18;
Rename ttymalloc() to tty_alloc(), and ttyfree() to tty_free() for
consistency. Remove some unnecessary malloc.h inclusions as well.
 1.82 08-Feb-2011  rmind Remove clause 3 (UCB advertising clause) from the University of Utah
copyright. Confirmed by Mike Hibler, mike at cs.utah.edu - thanks!
Also, merge UCB and Utah copyright texts back into one, as they
originally were.

Extra verification by snj@.
 1.81 13-Jun-2008  cegger branches: 1.81.18; 1.81.24; 1.81.26;
use device_lookup_private to get softc
 1.80 28-Apr-2008  martin branches: 1.80.2; 1.80.4;
Remove clause 3 and 4 from TNF licenses
 1.79 29-Mar-2008  tsutsui branches: 1.79.2; 1.79.4;
Split device_t/softc, and misc cosmetic changes.
 1.78 19-Nov-2007  ad branches: 1.78.14;
- Factor out too many copies of the same bit of tty code.
- Fix another tty signalling/wakeup problem.
 1.77 04-Mar-2007  christos branches: 1.77.2; 1.77.18; 1.77.20; 1.77.24; 1.77.26;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.76 01-Oct-2006  elad branches: 1.76.4;
Fix typos (tty -> tp), pointed out by Matt Fleming, thanks!
 1.75 30-Sep-2006  elad Implement the "device" scope.

It uses an authorization wrapper per device class on the system to
ensure type-safety.

For now, it supports only terminal (TTY) devices, and has two actions
for them: "open terminal" and "privileged set". Sample usage has been
added to i386 and hp300 code for reference.

Update documentation.
 1.74 09-Sep-2006  tsutsui branches: 1.74.2;
time.tv_sec -> time_second
 1.73 23-Jul-2006  ad branches: 1.73.4;
Use the LWP cached credentials where sane.
 1.72 21-Jul-2006  tsutsui Some KNF.
 1.71 14-May-2006  elad integrate kauth.
 1.70 29-Mar-2006  thorpej Use device_cfdata().
 1.69 28-Mar-2006  thorpej Use device_unit().
 1.68 11-Dec-2005  christos branches: 1.68.4; 1.68.6; 1.68.8; 1.68.10; 1.68.12;
merge ktrace-lwp.
 1.67 06-Sep-2005  kleink Change the driver open function's conditional for overriding exclusive tty
use from checking the proc's uid to suser(9), and account for the use of
privileges. Noted by David Holland in PR kern/31126.
 1.66 14-Mar-2005  tsutsui branches: 1.66.4;
Include "ioconf.h" for struct cfdriver *_cd decls.
 1.65 28-Aug-2004  thorpej branches: 1.65.4; 1.65.6;
Use ANSI function decls, static, and const.
 1.64 25-Apr-2004  matt Constify the speedtab arrays
 1.63 17-Nov-2003  tsutsui TAB/space cleanup.
 1.62 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.61 29-Jun-2003  fvdl branches: 1.61.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.60 29-Jun-2003  thorpej Adapt to ktrace/lwp changes.
 1.59 24-May-2003  gmcgarry Clean-up the DIO bus. Includes two main changes:

1) Pass address and ipl locators at attachment;
2) Remove hack which made the internal HP-IB controller
look like a DIO device.

The hack to allow the nhpib driver to support internal and DIO
controllers appears to be a leftover from 4.3BD where it was not
possible to have a driver attach to different busses. NetBSD has
supported bus-dependent attachments for a long time.
 1.58 04-May-2003  gmcgarry Fix from Steve Peurifoy in PR#18849:

"Occasionally a blocking open of dcm port 0 will hang in ttyopen()
waiting for carrier detect to be asserted when it's already
present.

The problem is that dcmmint() will return before updating the
value of sc->sc_mcndlast if the device is not open. If carrier
detect drops after the device is closed, sc->sc_mcndlast will
no longer correctly represent the "previous" state of the
signals when the next transition of carrier detect occurs.
A subsequent blocking open will wait forever for an event
which has in fact taken place."
 1.57 06-Mar-2003  thorpej Update for consdev changes.
 1.56 23-Oct-2002  jdolecek merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.55 20-Oct-2002  gmcgarry Fix flow control in dcmmint() by checking termios control flags for
CCTS_OFLOW rather than tty t_flags. From Steve Peurifoy in PR-18735.
 1.54 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.53 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.52 06-Sep-2002  gehenna Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.51 17-Mar-2002  atatat branches: 1.51.4;
Convert ioctl code to use EPASSTHROUGH instead of -1 or ENOTTY for
indicating an unhandled "command". ERESTART is -1, which can lead to
confusion. ERESTART has been moved to -3 and EPASSTHROUGH has been
placed at -4. No ioctl code should now return -1 anywhere. The
ioctl() system call is now properly restartable.
 1.50 15-Mar-2002  gmcgarry Add RCSIDs.
 1.49 23-Feb-2002  gmcgarry Unnecessary to cast splx() to void.
 1.48 14-Dec-2001  gmcgarry Update hardware drivers with console attachments to the new console
attachment interface.
 1.47 30-May-2001  lukem branches: 1.47.2; 1.47.4; 1.47.8;
add missing #include "opt_kgdb.h"
 1.46 02-May-2001  scw Add `l_poll' to `struct linesw' and provide an xxxpoll() entry point
in each tty driver to indirect through it.

This allows tty line-disciplines to handle poll(2) system calls.
 1.45 02-Nov-2000  eeh branches: 1.45.2;
Adapt to the new line discipline scheme.
 1.44 28-Mar-1998  thorpej branches: 1.44.14;
Adjust for recent ttyopen() and dialout device changes.
 1.43 12-Jan-1998  thorpej Update for changes to config.
 1.42 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.41 05-May-1997  thorpej branches: 1.41.4;
Use dio_intr_establish().
 1.40 15-Apr-1997  scottr dcmreadbuf() should not return immediately if the tty hasn't been opened;
this fixes a kgdb goof. Found by inspection.
 1.39 14-Apr-1997  thorpej Update for interrupt function and header name changes.
 1.38 04-Apr-1997  scottr Changes to make a dcm-based console work properly:

- While servicing an rx, tx, or modem status interrupt: if we have a
NULL struct tty * or if the tty isn't open, just return.
- Skip the self test if we are the console; it manages to do funny
things to autoconfig messages. (XXX - this should be fixed)
 1.37 02-Apr-1997  scottr Fix printf() and other warnings when compiled with DEBUG defined.
 1.36 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.

Also, handle sc_flags better so that we don't lose track of the
DCM_ISCONSOLE bit.
 1.35 30-Jan-1997  thorpej - Garbage-collect the old-style configuration glue.
- Make sure we don't get interrupts in dcmselftest().
 1.34 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.33 09-Dec-1996  thorpej isrlink() now returns a cookie. We're not interested in the cookie, so
cast to (void).
 1.32 14-Oct-1996  thorpej Set the device class on non-dull devices. This is a transitional thing.
 1.31 13-Oct-1996  christos backout previous kprintf changes
 1.30 11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.29 02-Sep-1996  mycroft tty stop functions really should return void, not int, and certainly not both.
 1.28 06-Jun-1996  thorpej Add calls to tty_attach() and tty_detach() where appropriate.
 1.27 17-May-1996  thorpej branches: 1.27.4;
Add 2 missing ";"s ... they weren't noticed before because of the
old implementation of DELAY().
 1.26 03-Mar-1996  thorpej Fix logic errors in new console probe code that caused framebuffers
outside of "internal i/o" space to not even have a chance at console-hood.
Fix tested by Thorsten Frueauf <frueauf@ira.uka.de>, and offered with
my sincerest apologies that the bug ever existed in the first place.
 1.25 26-Feb-1996  thorpej Avoid accidentally lowering a devices console priority.
 1.24 24-Feb-1996  thorpej Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.23 14-Feb-1996  thorpej All interrupt routines (except the HIL; don't ask) now take a pointer
to a softc, rather than a unit number. Add a "dq_softc" member
to struct devqueue; this is a temporary measure until the
dma/controller/device callback spaghetti is untangled.

YAY! No more need for dcafastservice!

HIL: squish instances of "(void) splhil()" and "(void) spl0();".
 1.22 31-Dec-1995  thorpej Re-work the serial console support a bit; it doesn't depend on statically
allocated softc's now.
 1.21 29-Dec-1995  thorpej Correct some comments about 8-port DCM boards. (Thanks, Mike, for
pointing out the True Nature of The Force...)
 1.20 02-Dec-1995  thorpej Use a "match/attach" rather than "init" scheme for probing devices.
This is a step towards getting the drivers ready for new config.

Clean up namespace, remove several instances of global arrays. Instead,
use a softc to carry state around. Where possible, pass a pointer to
the softc rather than a unit number.

Pointers to hardware and software constructs are now stored per port
in each instance of the softc (one softc per board) rather than indexed
by minor number.
 1.19 04-Oct-1995  thorpej Say what I really meant in a printf()...
 1.18 04-Oct-1995  thorpej Couple of changes:
* Implement TIOC{G,S}FLAGS; ttyflags works now.
* Reset the card on a "fresh open" as a sanity measure.
* Make dcmopen() and dcmclose() a little more like the
corresponding routines in the new dca.c
 1.17 19-Apr-1995  mycroft Kluge the *tty() routines until this port is converted to config.new.
 1.16 10-Apr-1995  mycroft Most of the console functions return void.
 1.15 26-Oct-1994  cgd new RCS ID format.
 1.14 23-May-1994  mycroft Merge with 4.4-Lite.
 1.13 10-Feb-1994  mycroft Add arg to ioctl functions. Clean up #includes.
 1.12 06-Feb-1994  mycroft Remove outdated console handling code.
 1.11 06-Feb-1994  mycroft Use common version of cons.c.
 1.10 30-Jan-1994  mycroft Remove bogus declaration.
 1.9 29-Aug-1993  deraadt tty XXstart() routines return void
 1.8 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.7 12-Jul-1993  mycroft Change tty code to use clist interface, but with ring buffer implementation.
Also, fix a couple of bugs in tty.c and pccons.c, and some gross kluginess
in the hp300 stuff.
 1.6 07-Jul-1993  deraadt the "struct tty *cn_tty" field in cons.c wasn't being used by anything
 1.5 29-May-1993  cgd fix for t_raw, rather than t_rawq for the tsleeps...
 1.4 27-May-1993  deraadt Changes to hp300 code to support two things:
1. dynamic tty allocation
2. use ring buffers instead of clists
Of course, I can't test it :-)
 1.3 22-May-1993  cgd add include of select.h if necessary for protos, or delete if extraneous
 1.2 18-May-1993  cgd make kernel select interface be one-stop shopping & clean it all up.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.27.4.1 06-Jun-1996  thorpej Update from trunk:

Add calls to tty_attach() and tty_detach() where appropriate.
 1.41.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.44.14.1 22-Nov-2000  bouyer Sync with HEAD.
 1.45.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.47.8.7 11-Nov-2002  nathanw Catch up to -current
 1.47.8.6 18-Oct-2002  nathanw Catch up to -current.
 1.47.8.5 17-Sep-2002  nathanw Catch up to -current.
 1.47.8.4 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.47.8.3 28-Feb-2002  nathanw Catch up to -current.
 1.47.8.2 08-Jan-2002  nathanw Catch up to -current.
 1.47.8.1 30-May-2001  nathanw file dcm.c was added on branch nathanw_sa on 2002-01-08 00:24:32 +0000
 1.47.4.2 13-Oct-2001  fvdl Revert the t_dev -> t_devvp change in struct tty. The way that tty
structs are currently used (especially by console ttys) aren't
ready for it, and this will require quite a few changes.
 1.47.4.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.47.2.4 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.47.2.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.47.2.2 16-Mar-2002  jdolecek Catch up with -current.
 1.47.2.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.51.4.1 19-May-2002  gehenna Add device switch.
Replace the access to devsw table and the hard-coded majors with devsw API.
 1.61.2.7 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.61.2.6 01-Apr-2005  skrll Sync with HEAD.
 1.61.2.5 24-Jan-2005  skrll Adapt to branch.
 1.61.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.61.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.61.2.2 03-Sep-2004  skrll Sync with HEAD
 1.61.2.1 03-Aug-2004  skrll Sync with HEAD
 1.65.6.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.65.4.1 29-Apr-2005  kent sync with -current
 1.66.4.4 07-Dec-2007  yamt sync with head
 1.66.4.3 03-Sep-2007  yamt sync with head.
 1.66.4.2 30-Dec-2006  yamt sync with head.
 1.66.4.1 21-Jun-2006  yamt sync with head.
 1.68.12.2 24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.68.12.1 31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.68.10.4 13-May-2006  elad sprinkle some #include <sys/kauth.h> in files that use kauth kpi but
don't include it yet. hopefully this will prevent some fallout.
 1.68.10.3 19-Apr-2006  elad sync with head - hopefully this will work
 1.68.10.2 10-Mar-2006  elad generic_authorize() -> kauth_authorize_generic().
 1.68.10.1 08-Mar-2006  elad Adapt to kernel authorization KPI.

I expect *some* lossage here...
 1.68.8.4 14-Sep-2006  yamt sync with head.
 1.68.8.3 11-Aug-2006  yamt sync with head
 1.68.8.2 24-May-2006  yamt sync with head.
 1.68.8.1 01-Apr-2006  yamt sync with head.
 1.68.6.2 01-Jun-2006  kardel Sync with head.
 1.68.6.1 22-Apr-2006  simonb Sync with head.
 1.68.4.1 09-Sep-2006  rpaulo sync with head
 1.73.4.1 18-Nov-2006  ad Sync with head.
 1.74.2.1 22-Oct-2006  yamt sync with head
 1.76.4.1 12-Mar-2007  rmind Sync with HEAD.
 1.77.26.1 08-Dec-2007  mjf Sync with HEAD.
 1.77.24.1 21-Nov-2007  bouyer Sync with HEAD
 1.77.20.1 09-Jan-2008  matt sync with HEAD
 1.77.18.1 21-Nov-2007  joerg Sync with HEAD.
 1.77.2.1 03-Dec-2007  ad Sync with HEAD.
 1.78.14.3 29-Jun-2008  mjf Sync with HEAD.
 1.78.14.2 02-Jun-2008  mjf Sync with HEAD.
 1.78.14.1 03-Apr-2008  mjf Sync with HEAD.
 1.79.4.2 04-May-2009  yamt sync with head.
 1.79.4.1 16-May-2008  yamt sync with head.
 1.79.2.2 17-Jun-2008  yamt sync with head.
 1.79.2.1 18-May-2008  yamt sync with head.
 1.80.4.1 18-Jun-2008  simonb Sync with head.
 1.80.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.81.26.1 17-Feb-2011  bouyer Sync with HEAD
 1.81.24.1 06-Jun-2011  jruoho Sync with HEAD.
 1.81.18.2 31-May-2011  rmind sync with head
 1.81.18.1 05-Mar-2011  rmind sync with head
 1.83.18.1 18-May-2014  rmind sync with head
 1.83.14.2 03-Dec-2017  jdolecek update from HEAD
 1.83.14.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.83.4.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.85.2.1 10-Aug-2014  tls Rebase.
 1.88.32.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.88.10.1 27-Apr-2017  pgoyette Restore all work from the former pgoyette-localcount branch (which is
now abandoned doe to cvs merge botch).

The branch now builds, and installs via anita. There are still some
problems (cgd is non-functional and all atf tests time-out) but they
will get resolved soon.
 1.88.4.1 20-Jul-2016  pgoyette Adapt the machine/arch dependent code to the new {b,c}devsw reference
counting.

XXX Most of these will require testing by someone other than myself, as
I have a limited selection of hardware!
 1.90.4.1 22-Jun-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #722):

sys/fs/cd9660/cd9660_util.c: revision 1.16
sys/arch/hp300/stand/common/clock.c: revision 1.14
sys/arch/hp300/stand/common/scsireg.h: revision 1.5
sys/arch/hp300/stand/common/scsireg.h: revision 1.6
sys/arch/hp300/stand/Makefile.buildboot: revision 1.38
sys/arch/hp300/include/bus.h: revision 1.23
sys/arch/hp300/stand/Makefile.buildboot: revision 1.39
sys/arch/hp300/stand/common/sd.c: revision 1.12
sys/arch/hp300/stand/common/prf.c: revision 1.6
sys/arch/hp300/stand/common/sd.c: revision 1.13
usr.sbin/installboot/installboot.8: revision 1.106
usr.sbin/installboot/Makefile: revision 1.59
sys/arch/hp300/stand/common/devopen.c: revision 1.14
usr.sbin/installboot/installboot.8: revision 1.107
sys/arch/hp300/stand/common/ite_dumb.c: revision 1.2
sys/arch/hp300/stand/common/devopen.c: revision 1.15
usr.sbin/installboot/installboot.8: revision 1.108
sys/fs/cd9660/cd9660_extern.h: revision 1.29
usr.sbin/installboot/installboot.8: revision 1.109
tools/Makefile.nbincludes: revision 1.11 (patch)
sys/arch/hp300/dev/rboxreg.h: revision 1.3
sys/arch/hp300/stand/common/scsivar.h: revision 1.5
sys/arch/hp300/dev/dnkbd.c: revision 1.14
sys/arch/hp300/hp300/trap.c: revision 1.156
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.12
sys/arch/hp300/dev/frodoreg.h: revision 1.6
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.13
sys/arch/hp300/stand/common/ite_sti.c: revision 1.2
sys/arch/hp300/stand/common/hil.c: revision 1.15
usr.sbin/installboot/arch/hp300.c: revision 1.18
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.14
sys/arch/hp300/dev/rbox.c: revision 1.4
usr.sbin/installboot/arch/hp300.c: revision 1.19
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.15
sys/sys/bootblock.h: revision 1.59
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.16
usr.sbin/installboot/installboot.h: revision 1.44
sys/arch/hp300/stand/mkboot/volhdr.h: file removal
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.17
sys/arch/hp300/dev/hpib.c: revision 1.45
usr.sbin/installboot/installboot.h: revision 1.45
usr.sbin/installboot/cd9660.c: revision 1.1
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.18
sys/arch/hp300/dev/topcatreg.h: revision 1.3
usr.sbin/installboot/cd9660.c: revision 1.2
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.19
sys/arch/hp300/stand/inst/inst.c: revision 1.25
sys/arch/hp300/stand/uboot/Makefile: revision 1.12
sys/arch/hp300/dev/dvbox.c: revision 1.4
sys/arch/hp300/dev/dma.c: revision 1.45
sys/arch/hp300/stand/uboot/Makefile: revision 1.13
sys/arch/hp300/stand/common/rd.c: revision 1.16
sys/arch/hp300/stand/inst/Makefile: revision 1.12
distrib/hp300/cdroms/installcd/Makefile: revision 1.4
sys/arch/hp300/stand/mkboot/volhdr.h: revision 1.6
sys/arch/hp300/stand/common/machdep.c: revision 1.16
usr.sbin/installboot/fstypes.c: revision 1.14
sys/arch/hp300/hp300/machdep.c: revision 1.238
sys/arch/hp300/include/cpu.h: revision 1.73
sys/arch/hp300/dev/diofbreg.h: revision 1.4
sys/arch/hp300/stand/common/scsi.c: revision 1.12
sys/arch/hp300/stand/common/netio.c: revision 1.19
sys/arch/hp300/stand/common/scsi.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.22
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.20
sys/arch/hp300/stand/common/conf.h: revision 1.4
sys/arch/hp300/hp300/autoconf.c: revision 1.111
sys/arch/hp300/stand/common/conf.c: revision 1.15
sys/arch/hp300/stand/mkboot/Makefile: revision 1.12
sys/arch/hp300/stand/mkboot/Makefile: revision 1.13
sys/arch/hp300/hp300/autoconf.c: revision 1.114
sys/arch/hp300/dev/dcmreg.h: revision 1.11
sys/arch/hp300/dev/diofbvar.h: revision 1.4
sys/arch/hp300/dev/dcm.c: revision 1.91
sys/fs/cd9660/cd9660_util.c: revision 1.15
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.2

TAB/space cleanup.

installboot(8): formatting improvements

Use Ar foo instead of <foo>; this is mdoc.

Other formatting tweaks.
installboot(8): fix up markup

Don't overuse .Sy - when everything is highlighted, nothing is. Use
.Ic for options &c to get correct PostScript output (both are bold in
plain text).

Use Aq Ar inside .Pa, as both Pa and Ar are rendered as underscored
text in plain text output, and the distinction is lost.

Don't set examples in bold, but give them .Pp space around - they are
much easier to read this way.

Use consistent -width in FILES.
document how to use installboot on netbsd/vax.

PR/57909: Jan-Benedict Glaw: Don't include (build) timestamp when doing a
reproducible build
fix usage string, improve error handling.
add missing chunk for repro-build. fix gcc warnings.
avoid stringop truncation, fix copyright string to prevent assembler warnings.

Fix build as a tool (Jan-Benedict Glaw)

Fix integer overflow of strtol(3) for "loadpoint" address on ILP32 hosts.

This strtol(3) was introduced in rev 1.12 for PR/57909 after netbsd-10,
but it returns LONG_MAX (0x7FFFFFFF) for 0xFFF00000 on ILP32 hosts and
the wrong loadpoint causes "NOT ENOUGH MEMORY" error by the BOOTROMs
on loading uboot.lif on (at least) my 9000/360 and 9000/425t.

Misc cosmetic changes for mostly readability.
- KNF and add some newlines per blocks
- define and use proper bintobcd() macro
- make local functions and variables static

The same uboot.lif binaries are generated.

Rename ${PROGAOUT} -> ${PROGELF} to reflect reality.
Use proper signedness for the LIF file system data structures.

Ancient 4.3BSD used short and int for location, file size, file type,
and addresses etc. but all of them should be unsigned.

Also rename several variables and add comments for readability.
The LIF file system info can be found in "The HPDir Project" page:
https://www.hp9845.net/9845/projects/hpdir/
The same uboot.lif binaries are generated.

Add a preliminary CD boot support to uboot for preparation of PR/54455.
Briefly tested on mame, but not enalbed yet.

Recognize SCSI CD-ROM devices as a booted device properly.

Necessary for PR port-hp300/54455, to boot an md root root RAMDISK

kernel from CD-ROM without "WARNING: can't find match for bootdev:"
prompt.

Sync with src/sys/arch/hp300/stand/mkboot/volhdr.h rev 1.6.
https://mail-index.netbsd.org/source-changes/2024/05/07/msg151195.html

Use proper signedness for the LIF file system data structures.
mkboot should use this MI <sys/bootblock.h> and volhdr.h should
be removed soon.

Use MI <sys/bootblock.h> to refer LIF filesystem structures.
This should have been done when LIF definitions were initially added
to <sys/bootblock.h> for MI installboot(8).

Enable SUPPORT_CD on uboot.

Make cd9660_util.c usable in userland tools like installboot(8).

This was partially done for src/distrib/cdrom/macppc_installboot,
but more strict prototypes are necessary for native binary builds.

Install cd9660 related system headers for tools installboot(8) builds.

Reorder function prototypes per source files.

Add cd9660 support to search a bootloader file in the target file system.

Also add CD boot support for hp300, using a bootloader file in cd9660 fs.
This is a tool's part to close PR/54455.

HP 9000/300 machines read LIF directory entry allocated after
the LIF volume header at the top of the boot disk during bootstrap,
and a bootstrap file must be contiguously allocated on the disk
due to limitation of the LIF specification.

Current NetBSD/hp300's bootloader is larger than ~80KB so we have
to prepare a special 'boot' partition for FFS (that has only 8KB (ffsv1)
or 32KB (ffsv2) spaces) disks to put such a large bootloader.

On the other hand, on ISO9660 fs all files are allocated contiguously
so we can specify a bootloader file in the target ISO9660 directly
in the LIF directory entry.

Note we can simply use the existing "append" option to create bootable
CD ISO for hp300, but it looks some emulators (at leaset MAME) reject
such non-standard ISO files, i.e. with an appended bootloader file at
the end of the image.

Put a RAMDISK kernel and SYS_UBOOT into hp300 installcd to make it bootable.

This should finally close PR/54455.

Fix tools build errors on Cygwin.

Appease warnings on building tools/installboot on Cygwin.
 1.11 15-Jan-2023  tsutsui TAB/space cleanup.
 1.10 22-May-2014  dholland branches: 1.10.58;
Use uintptr_t so this file can be compile-tested on foreign arches.
 1.9 08-Feb-2011  rmind branches: 1.9.14; 1.9.28;
Remove clause 3 (UCB advertising clause) from the University of Utah
copyright. Confirmed by Mike Hibler, mike at cs.utah.edu - thanks!
Also, merge UCB and Utah copyright texts back into one, as they
originally were.

Extra verification by snj@.
 1.8 11-Dec-2005  christos branches: 1.8.100; 1.8.106; 1.8.108;
merge ktrace-lwp.
 1.7 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.6 06-Jan-2003  wiz branches: 1.6.2;
interrupt with two rs.
 1.5 24-Feb-1996  thorpej branches: 1.5.48;
Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.4 26-Oct-1994  cgd new RCS ID format.
 1.3 23-May-1994  mycroft Merge with 4.4-Lite.
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.5.48.1 07-Jan-2003  thorpej Sync with HEAD.
 1.6.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.6.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.6.2.1 03-Aug-2004  skrll Sync with HEAD
 1.8.108.1 17-Feb-2011  bouyer Sync with HEAD
 1.8.106.1 06-Jun-2011  jruoho Sync with HEAD.
 1.8.100.1 05-Mar-2011  rmind sync with head
 1.9.28.1 10-Aug-2014  tls Rebase.
 1.9.14.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.10.58.1 22-Jun-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #722):

sys/fs/cd9660/cd9660_util.c: revision 1.16
sys/arch/hp300/stand/common/clock.c: revision 1.14
sys/arch/hp300/stand/common/scsireg.h: revision 1.5
sys/arch/hp300/stand/common/scsireg.h: revision 1.6
sys/arch/hp300/stand/Makefile.buildboot: revision 1.38
sys/arch/hp300/include/bus.h: revision 1.23
sys/arch/hp300/stand/Makefile.buildboot: revision 1.39
sys/arch/hp300/stand/common/sd.c: revision 1.12
sys/arch/hp300/stand/common/prf.c: revision 1.6
sys/arch/hp300/stand/common/sd.c: revision 1.13
usr.sbin/installboot/installboot.8: revision 1.106
usr.sbin/installboot/Makefile: revision 1.59
sys/arch/hp300/stand/common/devopen.c: revision 1.14
usr.sbin/installboot/installboot.8: revision 1.107
sys/arch/hp300/stand/common/ite_dumb.c: revision 1.2
sys/arch/hp300/stand/common/devopen.c: revision 1.15
usr.sbin/installboot/installboot.8: revision 1.108
sys/fs/cd9660/cd9660_extern.h: revision 1.29
usr.sbin/installboot/installboot.8: revision 1.109
tools/Makefile.nbincludes: revision 1.11 (patch)
sys/arch/hp300/dev/rboxreg.h: revision 1.3
sys/arch/hp300/stand/common/scsivar.h: revision 1.5
sys/arch/hp300/dev/dnkbd.c: revision 1.14
sys/arch/hp300/hp300/trap.c: revision 1.156
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.12
sys/arch/hp300/dev/frodoreg.h: revision 1.6
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.13
sys/arch/hp300/stand/common/ite_sti.c: revision 1.2
sys/arch/hp300/stand/common/hil.c: revision 1.15
usr.sbin/installboot/arch/hp300.c: revision 1.18
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.14
sys/arch/hp300/dev/rbox.c: revision 1.4
usr.sbin/installboot/arch/hp300.c: revision 1.19
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.15
sys/sys/bootblock.h: revision 1.59
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.16
usr.sbin/installboot/installboot.h: revision 1.44
sys/arch/hp300/stand/mkboot/volhdr.h: file removal
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.17
sys/arch/hp300/dev/hpib.c: revision 1.45
usr.sbin/installboot/installboot.h: revision 1.45
usr.sbin/installboot/cd9660.c: revision 1.1
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.18
sys/arch/hp300/dev/topcatreg.h: revision 1.3
usr.sbin/installboot/cd9660.c: revision 1.2
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.19
sys/arch/hp300/stand/inst/inst.c: revision 1.25
sys/arch/hp300/stand/uboot/Makefile: revision 1.12
sys/arch/hp300/dev/dvbox.c: revision 1.4
sys/arch/hp300/dev/dma.c: revision 1.45
sys/arch/hp300/stand/uboot/Makefile: revision 1.13
sys/arch/hp300/stand/common/rd.c: revision 1.16
sys/arch/hp300/stand/inst/Makefile: revision 1.12
distrib/hp300/cdroms/installcd/Makefile: revision 1.4
sys/arch/hp300/stand/mkboot/volhdr.h: revision 1.6
sys/arch/hp300/stand/common/machdep.c: revision 1.16
usr.sbin/installboot/fstypes.c: revision 1.14
sys/arch/hp300/hp300/machdep.c: revision 1.238
sys/arch/hp300/include/cpu.h: revision 1.73
sys/arch/hp300/dev/diofbreg.h: revision 1.4
sys/arch/hp300/stand/common/scsi.c: revision 1.12
sys/arch/hp300/stand/common/netio.c: revision 1.19
sys/arch/hp300/stand/common/scsi.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.22
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.20
sys/arch/hp300/stand/common/conf.h: revision 1.4
sys/arch/hp300/hp300/autoconf.c: revision 1.111
sys/arch/hp300/stand/common/conf.c: revision 1.15
sys/arch/hp300/stand/mkboot/Makefile: revision 1.12
sys/arch/hp300/stand/mkboot/Makefile: revision 1.13
sys/arch/hp300/hp300/autoconf.c: revision 1.114
sys/arch/hp300/dev/dcmreg.h: revision 1.11
sys/arch/hp300/dev/diofbvar.h: revision 1.4
sys/arch/hp300/dev/dcm.c: revision 1.91
sys/fs/cd9660/cd9660_util.c: revision 1.15
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.2

TAB/space cleanup.

installboot(8): formatting improvements

Use Ar foo instead of <foo>; this is mdoc.

Other formatting tweaks.
installboot(8): fix up markup

Don't overuse .Sy - when everything is highlighted, nothing is. Use
.Ic for options &c to get correct PostScript output (both are bold in
plain text).

Use Aq Ar inside .Pa, as both Pa and Ar are rendered as underscored
text in plain text output, and the distinction is lost.

Don't set examples in bold, but give them .Pp space around - they are
much easier to read this way.

Use consistent -width in FILES.
document how to use installboot on netbsd/vax.

PR/57909: Jan-Benedict Glaw: Don't include (build) timestamp when doing a
reproducible build
fix usage string, improve error handling.
add missing chunk for repro-build. fix gcc warnings.
avoid stringop truncation, fix copyright string to prevent assembler warnings.

Fix build as a tool (Jan-Benedict Glaw)

Fix integer overflow of strtol(3) for "loadpoint" address on ILP32 hosts.

This strtol(3) was introduced in rev 1.12 for PR/57909 after netbsd-10,
but it returns LONG_MAX (0x7FFFFFFF) for 0xFFF00000 on ILP32 hosts and
the wrong loadpoint causes "NOT ENOUGH MEMORY" error by the BOOTROMs
on loading uboot.lif on (at least) my 9000/360 and 9000/425t.

Misc cosmetic changes for mostly readability.
- KNF and add some newlines per blocks
- define and use proper bintobcd() macro
- make local functions and variables static

The same uboot.lif binaries are generated.

Rename ${PROGAOUT} -> ${PROGELF} to reflect reality.
Use proper signedness for the LIF file system data structures.

Ancient 4.3BSD used short and int for location, file size, file type,
and addresses etc. but all of them should be unsigned.

Also rename several variables and add comments for readability.
The LIF file system info can be found in "The HPDir Project" page:
https://www.hp9845.net/9845/projects/hpdir/
The same uboot.lif binaries are generated.

Add a preliminary CD boot support to uboot for preparation of PR/54455.
Briefly tested on mame, but not enalbed yet.

Recognize SCSI CD-ROM devices as a booted device properly.

Necessary for PR port-hp300/54455, to boot an md root root RAMDISK

kernel from CD-ROM without "WARNING: can't find match for bootdev:"
prompt.

Sync with src/sys/arch/hp300/stand/mkboot/volhdr.h rev 1.6.
https://mail-index.netbsd.org/source-changes/2024/05/07/msg151195.html

Use proper signedness for the LIF file system data structures.
mkboot should use this MI <sys/bootblock.h> and volhdr.h should
be removed soon.

Use MI <sys/bootblock.h> to refer LIF filesystem structures.
This should have been done when LIF definitions were initially added
to <sys/bootblock.h> for MI installboot(8).

Enable SUPPORT_CD on uboot.

Make cd9660_util.c usable in userland tools like installboot(8).

This was partially done for src/distrib/cdrom/macppc_installboot,
but more strict prototypes are necessary for native binary builds.

Install cd9660 related system headers for tools installboot(8) builds.

Reorder function prototypes per source files.

Add cd9660 support to search a bootloader file in the target file system.

Also add CD boot support for hp300, using a bootloader file in cd9660 fs.
This is a tool's part to close PR/54455.

HP 9000/300 machines read LIF directory entry allocated after
the LIF volume header at the top of the boot disk during bootstrap,
and a bootstrap file must be contiguously allocated on the disk
due to limitation of the LIF specification.

Current NetBSD/hp300's bootloader is larger than ~80KB so we have
to prepare a special 'boot' partition for FFS (that has only 8KB (ffsv1)
or 32KB (ffsv2) spaces) disks to put such a large bootloader.

On the other hand, on ISO9660 fs all files are allocated contiguously
so we can specify a bootloader file in the target ISO9660 directly
in the LIF directory entry.

Note we can simply use the existing "append" option to create bootable
CD ISO for hp300, but it looks some emulators (at leaset MAME) reject
such non-standard ISO files, i.e. with an appended bootloader file at
the end of the image.

Put a RAMDISK kernel and SYS_UBOOT into hp300 installcd to make it bootable.

This should finally close PR/54455.

Fix tools build errors on Cygwin.

Appease warnings on building tools/installboot on Cygwin.
 1.10 30-Jan-1997  thorpej Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.9 20-Oct-1996  thorpej Remove declaration for now-gone function.
 1.8 14-Oct-1996  thorpej Add some new config glue to the legacy hp300 device structures. This is
a transitional thing.
 1.7 14-Feb-1996  thorpej All interrupt routines (except the HIL; don't ask) now take a pointer
to a softc, rather than a unit number. Add a "dq_softc" member
to struct devqueue; this is a temporary measure until the
dma/controller/device callback spaghetti is untangled.

YAY! No more need for dcafastservice!

HIL: squish instances of "(void) splhil()" and "(void) spl0();".
 1.6 02-Dec-1995  thorpej Use a "match/attach" rather than "init" scheme for probing devices.
This is a step towards getting the drivers ready for new config.
 1.5 28-Mar-1995  jtc KERNEL -> _KERNEL
 1.4 26-Oct-1994  cgd new RCS ID format.
 1.3 25-May-1994  mycroft Merge with 4.4-Lite.
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.7 11-Dec-2005  christos merge ktrace-lwp.
 1.6 15-Dec-2003  jmc Fixes from PR#23177. Various lint/logic fixes:
Fix some non-initialized variables
close the output files when done
Redo the printing for RCS strings so they don't expand in the awk script too
Do proper tests for variables existance before accessing

Verified output from all scripts is identical to original versions
 1.5 09-Jan-1998  thorpej branches: 1.5.48;
Put RCS IDs into generated files, in the correct place.
 1.4 08-Jan-1998  thorpej Back out RCS ID related changes.
 1.3 05-Jan-1998  perry make script insert RCS ids into generated files
 1.2 30-Jan-1997  thorpej Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.1 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.5.48.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.5.48.2 18-Sep-2004  skrll Sync with HEAD.
 1.5.48.1 03-Aug-2004  skrll Sync with HEAD
 1.43 16-Jan-2024  thorpej Fix computation of the appropriate auto-vector interrupt level to use
for the DMA controller by tracking all of the DIO devices that have
"ISRPRI_BIO" interrupt handlers, and finding the highest auto-vector
level among them and informing the DMA controller.

Previously, in a post-flattening world, the DMA controller was always
told to interrupt at lev5, which is fine I guess although definitely not
ideal, but would not work on aaaancient HP320 Rev A DMA boards. To that
effect, print a warning if a Rev B DMA board ends up at ipl != 3 (we can't
differentiate between a Rev A and a Rev B board).
 1.42 16-Jan-2024  thorpej Switch hp300 over to the common interrupt dispatch code.

XXX There are still some things to fix up here, but it's no worse
than it was before (the problems date back to when we flattened
the device interrupt levels into IPL_VM).
 1.41 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.40 24-Apr-2021  thorpej branches: 1.40.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.39 26-Mar-2014  christos branches: 1.39.44;
kill sprintf
 1.38 06-Mar-2011  tsutsui branches: 1.38.4; 1.38.14; 1.38.18;
Remove trailing spaces.
 1.37 28-Apr-2008  martin branches: 1.37.22; 1.37.28;
Remove clause 3 and 4 from TNF licenses
 1.36 29-Mar-2008  tsutsui branches: 1.36.2; 1.36.4;
Split device_t/softc, and misc cosmetic changes.
 1.35 04-Mar-2007  christos branches: 1.35.40;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.34 21-Jul-2006  tsutsui branches: 1.34.10;
Use bus_space_map(9) and bus_space_vaddr(9) rather than iomap().
 1.33 21-Jul-2006  tsutsui Some KNF.
 1.32 24-Dec-2005  perry branches: 1.32.4; 1.32.8;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.31 11-Dec-2005  christos merge ktrace-lwp.
 1.30 26-Aug-2005  drochner s/locdesc_t/int/g
 1.29 28-Jun-2005  drochner branches: 1.29.2;
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.28 02-Jan-2005  tsutsui u_intNN_t -> uintNN_t
 1.27 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.26 17-Nov-2003  tsutsui TAB/space cleanup.
 1.25 01-Aug-2003  tsutsui Add "oddbyte" bus_space(9) access ops for DIO devices which have
odd byte address space.
 1.24 01-Aug-2003  tsutsui Modify hp300 bus_space(9) structures/functions to add hooks to override
access functions. This is required by some DIO devices to use MI drivers.
 1.23 24-May-2003  gmcgarry branches: 1.23.2;
Clean-up the DIO bus. Includes two main changes:

1) Pass address and ipl locators at attachment;
2) Remove hack which made the internal HP-IB controller
look like a DIO device.

The hack to allow the nhpib driver to support internal and DIO
controllers appears to be a leftover from 4.3BD where it was not
possible to have a driver attach to different busses. NetBSD has
supported bus-dependent attachments for a long time.
 1.22 01-Apr-2003  thorpej Use PAGE_SIZE rather than NBPG.
 1.21 01-Jan-2003  thorpej Use aprint_normal() for cfprint routines.
 1.20 22-Dec-2002  gmcgarry Make the DMA controller a separate device attached to intio. Intio
devices can use the DMA controller too.
 1.19 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.18 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.17 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.16 15-Mar-2002  gmcgarry Add RCSIDs.
 1.15 14-Dec-2001  gmcgarry Update hardware drivers with console attachments to the new console
attachment interface.
 1.14 08-Dec-2001  gmcgarry bcopy -> memcpy
bzero -> memset
bcmp -> memcmp
 1.13 01-Jul-1998  thorpej branches: 1.13.28; 1.13.32;
If sysflags tells us we have an internal HP-IB interface, don't bother
reading the DIO device ID at select code 7, but rather hard-wire the ID
to the IHPIB ID. This prevents us reading what might look like a valid
ID to another device when IHPIB is present. (IHPIB doesn't always return
a correct device ID, grumble.)
 1.12 12-Jan-1998  thorpej Update for changes to config.
 1.11 11-Jan-1998  thorpej Pass down bus space tags to children, and use types appropriate for
bus.h.
 1.10 09-Oct-1997  jtc Fix tipo inherited from old version of TNF copyright template.
 1.9 01-Oct-1997  kleink Remove duplicate inclusion of <sys/device.h>.
 1.8 18-Jul-1997  jtk branches: 1.8.2;
remove old *_UNK style default defines, use standard names from locators.h
 1.7 05-May-1997  thorpej - Initialize the DMA controller in dioattach().
- Implement dio_intr_establish() and dio_intr_disestablish().
 1.6 27-Apr-1997  thorpej These files depend on things in <machine/hp300spu.h>
 1.5 04-Apr-1997  thorpej #ifdef DIOVERBOSE a variable needed only in such code.
 1.4 31-Mar-1997  scottr Add missing argument to diagnostic printf()
 1.3 30-Jan-1997  thorpej Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.2 12-Jan-1997  thorpej Fix botch in PA calculation for DIO-II devices. Bug noticed and fix
provided by Klaus Klein <kleink@layla.inka.de>, PR #3097.
 1.1 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.8.2.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.13.32.5 03-Jan-2003  thorpej Sync with HEAD.
 1.13.32.4 29-Dec-2002  thorpej Sync with HEAD.
 1.13.32.3 18-Oct-2002  nathanw Catch up to -current.
 1.13.32.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.13.32.1 08-Jan-2002  nathanw Catch up to -current.
 1.13.28.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.13.28.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.13.28.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.23.2.6 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.23.2.5 17-Jan-2005  skrll Sync with HEAD.
 1.23.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.23.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.23.2.2 03-Sep-2004  skrll Sync with HEAD
 1.23.2.1 03-Aug-2004  skrll Sync with HEAD
 1.29.2.3 03-Sep-2007  yamt sync with head.
 1.29.2.2 30-Dec-2006  yamt sync with head.
 1.29.2.1 21-Jun-2006  yamt sync with head.
 1.32.8.1 11-Aug-2006  yamt sync with head
 1.32.4.1 09-Sep-2006  rpaulo sync with head
 1.34.10.1 12-Mar-2007  rmind Sync with HEAD.
 1.35.40.2 02-Jun-2008  mjf Sync with HEAD.
 1.35.40.1 03-Apr-2008  mjf Sync with HEAD.
 1.36.4.1 16-May-2008  yamt sync with head.
 1.36.2.1 18-May-2008  yamt sync with head.
 1.37.28.1 06-Jun-2011  jruoho Sync with HEAD.
 1.37.22.1 21-Apr-2011  rmind sync with head
 1.38.18.1 18-May-2014  rmind sync with head
 1.38.14.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.38.4.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.39.44.2 22-Mar-2021  thorpej Audit CFARG_IATTR in config_found() calls, and remove it in situations
where the interface attribute is not ambiguous.
 1.39.44.1 22-Mar-2021  thorpej Mechanical conversion of config_found_sm_loc() -> config_found().
CFARG_IATTR usage needs to be audited.
 1.40.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.14 19-Feb-2011  tsutsui Move recently supported framebuffers out of the "unsupported" list.
 1.13 06-Feb-2011  tsutsui Pull description about TurboVRX ("tigershark") display from OpenBSD.
 1.12 06-Feb-2011  tsutsui RENASSIANCE -> RENAISSANCE
 1.11 31-Dec-2010  tsutsui branches: 1.11.2; 1.11.4;
Use more specific info and names for 362/382 internal framebuffers.

Taken from various WWW pages (and my 362/382):
http://www.hpmuseum.net/collection_document.php
http://www.ambry.com/page/model.asp?model_nu=A1473A
http://mail-index.NetBSD.org/port-hp300/2003/11/03/0005.html
http://www.ambry.com/page/model.asp?model_nu=A1474A
http://mail-index.NetBSD.org/port-hp300/1999/07/16/0000.html
http://mail-index.NetBSD.org/port-hp300/1999/07/16/0001.html
http://mail-index.NetBSD.org/port-hp300/2009/04/30/msg000018.html
 1.10 28-Dec-2010  tsutsui Add IDs for 362/382 internal displays. From OpenBSD.
 1.9 28-Apr-2008  martin branches: 1.9.22;
Remove clause 3 and 4 from TNF licenses
 1.8 11-Dec-2005  christos branches: 1.8.74; 1.8.76; 1.8.78;
merge ktrace-lwp.
 1.7 23-Nov-2003  tsutsui Change device ID for 98624A HP-IB from 0x80 to 0x01.
nhpib.c in Lite2 used 0x01 and my 98624 also has an ID 0x01.
 1.6 25-May-2003  tsutsui branches: 1.6.2;
Fix part number of DIO SCSI interfaces.
It should be 98265A, and 98625A is fast HP-IB interface.
 1.5 17-Apr-2002  gmcgarry typo in previous
 1.4 17-Apr-2002  gmcgarry device id 0x13 is "digital audio" as reported by Thilo Manske.
 1.3 09-Oct-1997  jtc branches: 1.3.30; 1.3.34;
Fix tipo inherited from old version of TNF copyright template.
 1.2 30-Jan-1997  thorpej branches: 1.2.8;
Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.1 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.2.8.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.3.34.1 20-Jun-2002  nathanw Catch up to -current.
 1.3.30.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.6.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.6.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.6.2.1 03-Aug-2004  skrll Sync with HEAD
 1.8.78.1 16-May-2008  yamt sync with head.
 1.8.76.1 18-May-2008  yamt sync with head.
 1.8.74.1 02-Jun-2008  mjf Sync with HEAD.
 1.9.22.1 05-Mar-2011  rmind sync with head
 1.11.4.2 05-Mar-2011  bouyer Sync with HEAD
 1.11.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.11.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.17 19-Feb-2011  tsutsui Regen from diodevs rev 1.14:
> Move recently supported framebuffers out of the "unsupported" list.
 1.16 06-Feb-2011  tsutsui Regen from diodevs rev 1.13:
> Pull description about TurboVRX ("tigershark") display from OpenBSD.
 1.15 06-Feb-2011  tsutsui Regen from diodevs rev 1.12:
> RENASSIANCE -> RENAISSANCE
 1.14 31-Dec-2010  tsutsui branches: 1.14.2; 1.14.4;
Regen from diodevs rev 1.11:
> Use more specific info and names for 362/382 internal framebuffers.
 1.13 28-Dec-2010  tsutsui Regen from diodevs rev 1.10:
> Add IDs for 362/382 internal displays. From OpenBSD.
 1.12 28-Apr-2008  martin branches: 1.12.22;
Remove clause 3 and 4 from TNF licenses
 1.11 11-Dec-2005  christos branches: 1.11.74; 1.11.76; 1.11.78;
merge ktrace-lwp.
 1.10 23-Nov-2003  tsutsui Regen from diodevs rev 1.7:
> Change device ID for 98624A HP-IB from 0x80 to 0x01.
> nhpib.c in Lite2 used 0x01 and my 98624 also has an ID 0x01.
 1.9 25-May-2003  tsutsui branches: 1.9.2;
Regen from diodevs rev 1.6:
> Fix part number of DIO SCSI interfaces.
> It should be 98265A, and 98625A is fast HP-IB interface.
 1.8 17-Apr-2002  gmcgarry Regen: "digital audio"
 1.7 09-Jan-1998  thorpej branches: 1.7.28; 1.7.32;
Regen.
 1.6 08-Jan-1998  thorpej Regen: Back out RCS ID related changes.
 1.5 05-Jan-1998  perry RCSID Police.
 1.4 09-Oct-1997  jtc Fix tipo inherited from old version of TNF copyright template.
 1.3 30-Jan-1997  thorpej branches: 1.3.8;
Regen to clear up RCS id snafu.
 1.2 30-Jan-1997  thorpej Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.1 17-Dec-1996  thorpej Generate initial copies of these files.
 1.3.8.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.7.32.1 20-Jun-2002  nathanw Catch up to -current.
 1.7.28.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 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.11.78.1 16-May-2008  yamt sync with head.
 1.11.76.1 18-May-2008  yamt sync with head.
 1.11.74.1 02-Jun-2008  mjf Sync with HEAD.
 1.12.22.1 05-Mar-2011  rmind sync with head
 1.14.4.2 05-Mar-2011  bouyer Sync with HEAD
 1.14.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.14.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.17 19-Feb-2011  tsutsui Regen from diodevs rev 1.14:
> Move recently supported framebuffers out of the "unsupported" list.
 1.16 06-Feb-2011  tsutsui Regen from diodevs rev 1.13:
> Pull description about TurboVRX ("tigershark") display from OpenBSD.
 1.15 06-Feb-2011  tsutsui Regen from diodevs rev 1.12:
> RENASSIANCE -> RENAISSANCE
 1.14 31-Dec-2010  tsutsui branches: 1.14.2; 1.14.4;
Regen from diodevs rev 1.11:
> Use more specific info and names for 362/382 internal framebuffers.
 1.13 28-Dec-2010  tsutsui Regen from diodevs rev 1.10:
> Add IDs for 362/382 internal displays. From OpenBSD.
 1.12 28-Apr-2008  martin branches: 1.12.22;
Remove clause 3 and 4 from TNF licenses
 1.11 11-Dec-2005  christos branches: 1.11.74; 1.11.76; 1.11.78;
merge ktrace-lwp.
 1.10 23-Nov-2003  tsutsui Regen from diodevs rev 1.7:
> Change device ID for 98624A HP-IB from 0x80 to 0x01.
> nhpib.c in Lite2 used 0x01 and my 98624 also has an ID 0x01.
 1.9 25-May-2003  tsutsui branches: 1.9.2;
Regen from diodevs rev 1.6:
> Fix part number of DIO SCSI interfaces.
> It should be 98265A, and 98625A is fast HP-IB interface.
 1.8 17-Apr-2002  gmcgarry Regen: "digital audio"
 1.7 09-Jan-1998  thorpej branches: 1.7.28; 1.7.32;
Regen.
 1.6 08-Jan-1998  thorpej Regen: Back out RCS ID related changes.
 1.5 05-Jan-1998  perry RCSID Police.
 1.4 09-Oct-1997  jtc Fix tipo inherited from old version of TNF copyright template.
 1.3 30-Jan-1997  thorpej branches: 1.3.8;
Regen to clear up RCS id snafu.
 1.2 30-Jan-1997  thorpej Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.1 17-Dec-1996  thorpej Generate initial copies of these files.
 1.3.8.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.7.32.1 20-Jun-2002  nathanw Catch up to -current.
 1.7.28.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 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.11.78.1 16-May-2008  yamt sync with head.
 1.11.76.1 18-May-2008  yamt sync with head.
 1.11.74.1 02-Jun-2008  mjf Sync with HEAD.
 1.12.22.1 05-Mar-2011  rmind sync with head
 1.14.4.2 05-Mar-2011  bouyer Sync with HEAD
 1.14.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.14.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.10 01-May-2024  tsutsui Fix topcat(4) problems on some models that cause garbages on screen.

- Make sure that windowmove (hardware BITBLT) ops complete by checking
tc_busywait() before calling putchar functions by MI rasops(9).
It looks CPU accesses against VRAM during windowmove (copy, erase,
and cursor) ops causes unexpected garbages at least on 98543 on HP360,
98547 on HP370, and also on 98543 on 040 HP380 (but not on 98549).

- Handle 'sparse VRAM' on 98543 (and probably 98542) properly:
- Prepare and use own topcat_putchar1_4() function for sparse VRAM.
- Pass proper 'VRAM width' rather than actuall font width to all
windowmove (copycols, erasecols, copyrows, eraserows, and do_cursor)
operation functions.

Now all topcat(4) consoles on 98543 on HP360/HP380 and 98547 on HP370
work fine, and no visible regression on 98549 on HP380 and 98544 on HP360.

Worth to pullup netbsd-10.
 1.9 29-Apr-2024  tsutsui Fix MD allocattr to return proper attributes what MI rasops(9) expects.
 1.8 29-Apr-2024  tsutsui Move a check of topcat(4) specific fb width quirks to topcat.c.

We need to check fb->planes but it's propbed in topcat.c after
common diofb_fbinquire() is called.

Also add a comment that it looks these 1 bpp and 4 bpp boards have
VRAM with sparse address layout and we have to handle
512 pixels per line with 1024 bytes per line.
 1.7 07-Aug-2021  thorpej branches: 1.7.6;
Merge thorpej-cfargs2.
 1.6 24-Apr-2021  thorpej branches: 1.6.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.5 15-Apr-2021  tsutsui Fix two problems on old topcat(4) framebuffers found on HP332/340.

- Fix panic on monochrome framebuffers. They don't have palette registers.
The problem was reported from Anders Gustafsson and also Andrew Gillham
back in 2013:
https://mail-index.netbsd.org/port-hp300/2013/09/27/msg000086.html
https://mail-index.netbsd.org/port-hp300/2013/09/28/msg000087.html
- Fix incorrect framebuffer width of 98542/98544 framebuffers on HP332.
Reported from Andrew Gillham (98542) as above and Chris Hanson (98543):
https://mail-index.netbsd.org/port-hp300/2013/09/27/msg000083.html
https://mail-index.netbsd.org/port-hp300/2020/05/01/msg000164.html

Worth to pullup to netbsd-9.
 1.4 24-Mar-2014  christos branches: 1.4.34; 1.4.44;
- remove unused
- use cpu_{g,s}etmodel
 1.3 18-Feb-2011  tsutsui branches: 1.3.2; 1.3.6; 1.3.8; 1.3.18; 1.3.22;
Use aprint_normal(9) and variants.
 1.2 12-Feb-2011  tsutsui - make local functions static
- some KNF
 1.1 06-Feb-2011  tsutsui branches: 1.1.2;
Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.1.2.4 05-Mar-2011  bouyer Sync with HEAD
 1.1.2.3 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.2 08-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 06-Feb-2011  bouyer file diofb.c was added on branch bouyer-quota2 on 2011-02-08 16:19:20 +0000
 1.3.22.1 18-May-2014  rmind sync with head
 1.3.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.8.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.3.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.3.6.1 18-Feb-2011  jruoho file diofb.c was added on branch jruoho-x86intr on 2011-06-06 09:05:35 +0000
 1.3.2.2 05-Mar-2011  rmind sync with head
 1.3.2.1 18-Feb-2011  rmind file diofb.c was added on branch rmind-uvmplock on 2011-03-05 20:50:20 +0000
 1.4.44.2 17-Apr-2021  thorpej Sync with HEAD.
 1.4.44.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.4.34.1 21-Apr-2021  martin Pull up following revision(s) (requested by tsutsui in ticket #1248):

sys/arch/hp300/dev/topcat.c: revision 1.5
sys/arch/hp300/dev/diofb.c: revision 1.5

Fix two problems on old topcat(4) framebuffers found on HP332/340.

- Fix panic on monochrome framebuffers. They don't have palette registers.
The problem was reported from Anders Gustafsson and also Andrew Gillham
back in 2013:
https://mail-index.netbsd.org/port-hp300/2013/09/27/msg000086.html
https://mail-index.netbsd.org/port-hp300/2013/09/28/msg000087.html

- Fix incorrect framebuffer width of 98542/98544 framebuffers on HP332.
Reported from Andrew Gillham (98542) as above and Chris Hanson (98543):
https://mail-index.netbsd.org/port-hp300/2013/09/27/msg000083.html
https://mail-index.netbsd.org/port-hp300/2020/05/01/msg000164.html

Worth to pullup to netbsd-9.
 1.6.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.7.6.1 16-May-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #690):

sys/arch/hp300/dev/topcat.c: revision 1.7
sys/arch/hp300/dev/topcat.c: revision 1.8
sys/arch/hp300/dev/topcat.c: revision 1.9
sys/arch/hp300/dev/diofb.c: revision 1.8
sys/arch/hp300/dev/diofb.c: revision 1.9
sys/arch/hp300/dev/diofb.c: revision 1.10
sys/arch/hp300/dev/topcat.c: revision 1.10
sys/arch/hp300/dev/topcat.c: revision 1.11
sys/arch/hp300/dev/topcat.c: revision 1.12
sys/arch/hp300/dev/topcatreg.h: revision 1.5
distrib/notes/hp300/hardware: revision 1.28
sys/arch/hp300/dev/diofbvar.h: revision 1.5
share/man/man4/man4.hp300/topcat.4: revision 1.8

Increase DELAY() for waitbusy macroes as pre-wscons and 4.4BSD did.

It looks necessary for sane palette ops at least on HP98543 topcat
on 68030 HP 9000/360.

Move a check of topcat(4) specific fb width quirks to topcat.c.

We need to check fb->planes but it's propbed in topcat.c after
common diofb_fbinquire() is called.

Also add a comment that it looks these 1 bpp and 4 bpp boards have
VRAM with sparse address layout and we have to handle
512 pixels per line with 1024 bytes per line.

Fix MD allocattr to return proper attributes what MI rasops(9) expects.
Use proper planemask per a vaild number of planes.

Check tc_waitbusy() before writing palette registers in topcat_setcolor().
This seems to make palette operations more stable on my HP360 with HP98543.

Add DELAY(9) to make palette register settings stable on 98543 in HP360.
Note 98547 (6 bpp variant) on HP370 (68030 33MHz) doesn't need these
DELAYs so maybe only some old variants (98543 and 98545?) on 020/030
have such restriction (actually only one nop seems enough.)

Fix topcat(4) problems on some models that cause garbages on screen.
- Make sure that windowmove (hardware BITBLT) ops complete by checking
tc_busywait() before calling putchar functions by MI rasops(9).
It looks CPU accesses against VRAM during windowmove (copy, erase,
and cursor) ops causes unexpected garbages at least on 98543 on HP360,
98547 on HP370, and also on 98543 on 040 HP380 (but not on 98549).
- Handle 'sparse VRAM' on 98543 (and probably 98542) properly:
- Prepare and use own topcat_putchar1_4() function for sparse VRAM.
- Pass proper 'VRAM width' rather than actuall font width to all
windowmove (copycols, erasecols, copyrows, eraserows, and do_cursor)
operation functions.
Now all topcat(4) consoles on 98543 on HP360/HP380 and 98547 on HP370
work fine, and no visible regression on 98549 on HP380 and 98544 on HP360.

Note that 98542 and 98543 variants are also supported by topcat(4).

Add 98542 and 98543 framebuffers to supported "Graphics Devices" section.
I hope someone will sync a list of supported devices in port wiki pages
with one in this installation notes.

Add comments about quirks of 98542/98543 framebuffers with 1024x400 pixels.
 1.3 31-May-2025  tsutsui Use C99 exact width integer types, and misc KNF. (sync with stand/common)
 1.2 12-Feb-2011  tsutsui branches: 1.2.2; 1.2.6; 1.2.96;
- make local functions static
- some KNF
 1.1 06-Feb-2011  tsutsui branches: 1.1.2;
Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.1.2.3 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.2 08-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 06-Feb-2011  bouyer file diofb_mono.c was added on branch bouyer-quota2 on 2011-02-08 16:19:21 +0000
 1.2.96.1 02-Aug-2025  perseant Sync with HEAD
 1.2.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.1 12-Feb-2011  jruoho file diofb_mono.c was added on branch jruoho-x86intr on 2011-06-06 09:05:35 +0000
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 12-Feb-2011  rmind file diofb_mono.c was added on branch rmind-uvmplock on 2011-03-05 20:50:20 +0000
 1.4 15-Jan-2023  tsutsui TAB/space cleanup.
 1.3 12-Feb-2011  tsutsui branches: 1.3.2; 1.3.6; 1.3.90;
- make local functions static
- some KNF
 1.2 12-Feb-2011  tsutsui Add dumb framebuffer (no acceleration, no colormap) support
for HP362 and HP382.

Tested on A1473-69510 (HP362 VGA-res) and A1474-69511 (HP382 mid-res).
 1.1 06-Feb-2011  tsutsui branches: 1.1.2;
Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.1.2.3 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.2 08-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 06-Feb-2011  bouyer file diofbreg.h was added on branch bouyer-quota2 on 2011-02-08 16:19:21 +0000
 1.3.90.1 22-Jun-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #722):

sys/fs/cd9660/cd9660_util.c: revision 1.16
sys/arch/hp300/stand/common/clock.c: revision 1.14
sys/arch/hp300/stand/common/scsireg.h: revision 1.5
sys/arch/hp300/stand/common/scsireg.h: revision 1.6
sys/arch/hp300/stand/Makefile.buildboot: revision 1.38
sys/arch/hp300/include/bus.h: revision 1.23
sys/arch/hp300/stand/Makefile.buildboot: revision 1.39
sys/arch/hp300/stand/common/sd.c: revision 1.12
sys/arch/hp300/stand/common/prf.c: revision 1.6
sys/arch/hp300/stand/common/sd.c: revision 1.13
usr.sbin/installboot/installboot.8: revision 1.106
usr.sbin/installboot/Makefile: revision 1.59
sys/arch/hp300/stand/common/devopen.c: revision 1.14
usr.sbin/installboot/installboot.8: revision 1.107
sys/arch/hp300/stand/common/ite_dumb.c: revision 1.2
sys/arch/hp300/stand/common/devopen.c: revision 1.15
usr.sbin/installboot/installboot.8: revision 1.108
sys/fs/cd9660/cd9660_extern.h: revision 1.29
usr.sbin/installboot/installboot.8: revision 1.109
tools/Makefile.nbincludes: revision 1.11 (patch)
sys/arch/hp300/dev/rboxreg.h: revision 1.3
sys/arch/hp300/stand/common/scsivar.h: revision 1.5
sys/arch/hp300/dev/dnkbd.c: revision 1.14
sys/arch/hp300/hp300/trap.c: revision 1.156
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.12
sys/arch/hp300/dev/frodoreg.h: revision 1.6
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.13
sys/arch/hp300/stand/common/ite_sti.c: revision 1.2
sys/arch/hp300/stand/common/hil.c: revision 1.15
usr.sbin/installboot/arch/hp300.c: revision 1.18
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.14
sys/arch/hp300/dev/rbox.c: revision 1.4
usr.sbin/installboot/arch/hp300.c: revision 1.19
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.15
sys/sys/bootblock.h: revision 1.59
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.16
usr.sbin/installboot/installboot.h: revision 1.44
sys/arch/hp300/stand/mkboot/volhdr.h: file removal
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.17
sys/arch/hp300/dev/hpib.c: revision 1.45
usr.sbin/installboot/installboot.h: revision 1.45
usr.sbin/installboot/cd9660.c: revision 1.1
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.18
sys/arch/hp300/dev/topcatreg.h: revision 1.3
usr.sbin/installboot/cd9660.c: revision 1.2
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.19
sys/arch/hp300/stand/inst/inst.c: revision 1.25
sys/arch/hp300/stand/uboot/Makefile: revision 1.12
sys/arch/hp300/dev/dvbox.c: revision 1.4
sys/arch/hp300/dev/dma.c: revision 1.45
sys/arch/hp300/stand/uboot/Makefile: revision 1.13
sys/arch/hp300/stand/common/rd.c: revision 1.16
sys/arch/hp300/stand/inst/Makefile: revision 1.12
distrib/hp300/cdroms/installcd/Makefile: revision 1.4
sys/arch/hp300/stand/mkboot/volhdr.h: revision 1.6
sys/arch/hp300/stand/common/machdep.c: revision 1.16
usr.sbin/installboot/fstypes.c: revision 1.14
sys/arch/hp300/hp300/machdep.c: revision 1.238
sys/arch/hp300/include/cpu.h: revision 1.73
sys/arch/hp300/dev/diofbreg.h: revision 1.4
sys/arch/hp300/stand/common/scsi.c: revision 1.12
sys/arch/hp300/stand/common/netio.c: revision 1.19
sys/arch/hp300/stand/common/scsi.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.22
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.20
sys/arch/hp300/stand/common/conf.h: revision 1.4
sys/arch/hp300/hp300/autoconf.c: revision 1.111
sys/arch/hp300/stand/common/conf.c: revision 1.15
sys/arch/hp300/stand/mkboot/Makefile: revision 1.12
sys/arch/hp300/stand/mkboot/Makefile: revision 1.13
sys/arch/hp300/hp300/autoconf.c: revision 1.114
sys/arch/hp300/dev/dcmreg.h: revision 1.11
sys/arch/hp300/dev/diofbvar.h: revision 1.4
sys/arch/hp300/dev/dcm.c: revision 1.91
sys/fs/cd9660/cd9660_util.c: revision 1.15
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.2

TAB/space cleanup.

installboot(8): formatting improvements

Use Ar foo instead of <foo>; this is mdoc.

Other formatting tweaks.
installboot(8): fix up markup

Don't overuse .Sy - when everything is highlighted, nothing is. Use
.Ic for options &c to get correct PostScript output (both are bold in
plain text).

Use Aq Ar inside .Pa, as both Pa and Ar are rendered as underscored
text in plain text output, and the distinction is lost.

Don't set examples in bold, but give them .Pp space around - they are
much easier to read this way.

Use consistent -width in FILES.
document how to use installboot on netbsd/vax.

PR/57909: Jan-Benedict Glaw: Don't include (build) timestamp when doing a
reproducible build
fix usage string, improve error handling.
add missing chunk for repro-build. fix gcc warnings.
avoid stringop truncation, fix copyright string to prevent assembler warnings.

Fix build as a tool (Jan-Benedict Glaw)

Fix integer overflow of strtol(3) for "loadpoint" address on ILP32 hosts.

This strtol(3) was introduced in rev 1.12 for PR/57909 after netbsd-10,
but it returns LONG_MAX (0x7FFFFFFF) for 0xFFF00000 on ILP32 hosts and
the wrong loadpoint causes "NOT ENOUGH MEMORY" error by the BOOTROMs
on loading uboot.lif on (at least) my 9000/360 and 9000/425t.

Misc cosmetic changes for mostly readability.
- KNF and add some newlines per blocks
- define and use proper bintobcd() macro
- make local functions and variables static

The same uboot.lif binaries are generated.

Rename ${PROGAOUT} -> ${PROGELF} to reflect reality.
Use proper signedness for the LIF file system data structures.

Ancient 4.3BSD used short and int for location, file size, file type,
and addresses etc. but all of them should be unsigned.

Also rename several variables and add comments for readability.
The LIF file system info can be found in "The HPDir Project" page:
https://www.hp9845.net/9845/projects/hpdir/
The same uboot.lif binaries are generated.

Add a preliminary CD boot support to uboot for preparation of PR/54455.
Briefly tested on mame, but not enalbed yet.

Recognize SCSI CD-ROM devices as a booted device properly.

Necessary for PR port-hp300/54455, to boot an md root root RAMDISK

kernel from CD-ROM without "WARNING: can't find match for bootdev:"
prompt.

Sync with src/sys/arch/hp300/stand/mkboot/volhdr.h rev 1.6.
https://mail-index.netbsd.org/source-changes/2024/05/07/msg151195.html

Use proper signedness for the LIF file system data structures.
mkboot should use this MI <sys/bootblock.h> and volhdr.h should
be removed soon.

Use MI <sys/bootblock.h> to refer LIF filesystem structures.
This should have been done when LIF definitions were initially added
to <sys/bootblock.h> for MI installboot(8).

Enable SUPPORT_CD on uboot.

Make cd9660_util.c usable in userland tools like installboot(8).

This was partially done for src/distrib/cdrom/macppc_installboot,
but more strict prototypes are necessary for native binary builds.

Install cd9660 related system headers for tools installboot(8) builds.

Reorder function prototypes per source files.

Add cd9660 support to search a bootloader file in the target file system.

Also add CD boot support for hp300, using a bootloader file in cd9660 fs.
This is a tool's part to close PR/54455.

HP 9000/300 machines read LIF directory entry allocated after
the LIF volume header at the top of the boot disk during bootstrap,
and a bootstrap file must be contiguously allocated on the disk
due to limitation of the LIF specification.

Current NetBSD/hp300's bootloader is larger than ~80KB so we have
to prepare a special 'boot' partition for FFS (that has only 8KB (ffsv1)
or 32KB (ffsv2) spaces) disks to put such a large bootloader.

On the other hand, on ISO9660 fs all files are allocated contiguously
so we can specify a bootloader file in the target ISO9660 directly
in the LIF directory entry.

Note we can simply use the existing "append" option to create bootable
CD ISO for hp300, but it looks some emulators (at leaset MAME) reject
such non-standard ISO files, i.e. with an appended bootloader file at
the end of the image.

Put a RAMDISK kernel and SYS_UBOOT into hp300 installcd to make it bootable.

This should finally close PR/54455.

Fix tools build errors on Cygwin.

Appease warnings on building tools/installboot on Cygwin.
 1.3.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.3.6.1 12-Feb-2011  jruoho file diofbreg.h was added on branch jruoho-x86intr on 2011-06-06 09:05:35 +0000
 1.3.2.2 05-Mar-2011  rmind sync with head
 1.3.2.1 12-Feb-2011  rmind file diofbreg.h was added on branch rmind-uvmplock on 2011-03-05 20:50:20 +0000
 1.5 01-May-2024  tsutsui Fix topcat(4) problems on some models that cause garbages on screen.

- Make sure that windowmove (hardware BITBLT) ops complete by checking
tc_busywait() before calling putchar functions by MI rasops(9).
It looks CPU accesses against VRAM during windowmove (copy, erase,
and cursor) ops causes unexpected garbages at least on 98543 on HP360,
98547 on HP370, and also on 98543 on 040 HP380 (but not on 98549).

- Handle 'sparse VRAM' on 98543 (and probably 98542) properly:
- Prepare and use own topcat_putchar1_4() function for sparse VRAM.
- Pass proper 'VRAM width' rather than actuall font width to all
windowmove (copycols, erasecols, copyrows, eraserows, and do_cursor)
operation functions.

Now all topcat(4) consoles on 98543 on HP360/HP380 and 98547 on HP370
work fine, and no visible regression on 98549 on HP380 and 98544 on HP360.

Worth to pullup netbsd-10.
 1.4 15-Jan-2023  tsutsui TAB/space cleanup.
 1.3 12-Feb-2011  tsutsui branches: 1.3.2; 1.3.6; 1.3.90;
- make local functions static
- some KNF
 1.2 12-Feb-2011  tsutsui Add dumb framebuffer (no acceleration, no colormap) support
for HP362 and HP382.

Tested on A1473-69510 (HP362 VGA-res) and A1474-69511 (HP382 mid-res).
 1.1 06-Feb-2011  tsutsui branches: 1.1.2;
Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.1.2.3 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.2 08-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 06-Feb-2011  bouyer file diofbvar.h was added on branch bouyer-quota2 on 2011-02-08 16:19:21 +0000
 1.3.90.2 22-Jun-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #722):

sys/fs/cd9660/cd9660_util.c: revision 1.16
sys/arch/hp300/stand/common/clock.c: revision 1.14
sys/arch/hp300/stand/common/scsireg.h: revision 1.5
sys/arch/hp300/stand/common/scsireg.h: revision 1.6
sys/arch/hp300/stand/Makefile.buildboot: revision 1.38
sys/arch/hp300/include/bus.h: revision 1.23
sys/arch/hp300/stand/Makefile.buildboot: revision 1.39
sys/arch/hp300/stand/common/sd.c: revision 1.12
sys/arch/hp300/stand/common/prf.c: revision 1.6
sys/arch/hp300/stand/common/sd.c: revision 1.13
usr.sbin/installboot/installboot.8: revision 1.106
usr.sbin/installboot/Makefile: revision 1.59
sys/arch/hp300/stand/common/devopen.c: revision 1.14
usr.sbin/installboot/installboot.8: revision 1.107
sys/arch/hp300/stand/common/ite_dumb.c: revision 1.2
sys/arch/hp300/stand/common/devopen.c: revision 1.15
usr.sbin/installboot/installboot.8: revision 1.108
sys/fs/cd9660/cd9660_extern.h: revision 1.29
usr.sbin/installboot/installboot.8: revision 1.109
tools/Makefile.nbincludes: revision 1.11 (patch)
sys/arch/hp300/dev/rboxreg.h: revision 1.3
sys/arch/hp300/stand/common/scsivar.h: revision 1.5
sys/arch/hp300/dev/dnkbd.c: revision 1.14
sys/arch/hp300/hp300/trap.c: revision 1.156
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.12
sys/arch/hp300/dev/frodoreg.h: revision 1.6
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.13
sys/arch/hp300/stand/common/ite_sti.c: revision 1.2
sys/arch/hp300/stand/common/hil.c: revision 1.15
usr.sbin/installboot/arch/hp300.c: revision 1.18
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.14
sys/arch/hp300/dev/rbox.c: revision 1.4
usr.sbin/installboot/arch/hp300.c: revision 1.19
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.15
sys/sys/bootblock.h: revision 1.59
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.16
usr.sbin/installboot/installboot.h: revision 1.44
sys/arch/hp300/stand/mkboot/volhdr.h: file removal
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.17
sys/arch/hp300/dev/hpib.c: revision 1.45
usr.sbin/installboot/installboot.h: revision 1.45
usr.sbin/installboot/cd9660.c: revision 1.1
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.18
sys/arch/hp300/dev/topcatreg.h: revision 1.3
usr.sbin/installboot/cd9660.c: revision 1.2
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.19
sys/arch/hp300/stand/inst/inst.c: revision 1.25
sys/arch/hp300/stand/uboot/Makefile: revision 1.12
sys/arch/hp300/dev/dvbox.c: revision 1.4
sys/arch/hp300/dev/dma.c: revision 1.45
sys/arch/hp300/stand/uboot/Makefile: revision 1.13
sys/arch/hp300/stand/common/rd.c: revision 1.16
sys/arch/hp300/stand/inst/Makefile: revision 1.12
distrib/hp300/cdroms/installcd/Makefile: revision 1.4
sys/arch/hp300/stand/mkboot/volhdr.h: revision 1.6
sys/arch/hp300/stand/common/machdep.c: revision 1.16
usr.sbin/installboot/fstypes.c: revision 1.14
sys/arch/hp300/hp300/machdep.c: revision 1.238
sys/arch/hp300/include/cpu.h: revision 1.73
sys/arch/hp300/dev/diofbreg.h: revision 1.4
sys/arch/hp300/stand/common/scsi.c: revision 1.12
sys/arch/hp300/stand/common/netio.c: revision 1.19
sys/arch/hp300/stand/common/scsi.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.22
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.20
sys/arch/hp300/stand/common/conf.h: revision 1.4
sys/arch/hp300/hp300/autoconf.c: revision 1.111
sys/arch/hp300/stand/common/conf.c: revision 1.15
sys/arch/hp300/stand/mkboot/Makefile: revision 1.12
sys/arch/hp300/stand/mkboot/Makefile: revision 1.13
sys/arch/hp300/hp300/autoconf.c: revision 1.114
sys/arch/hp300/dev/dcmreg.h: revision 1.11
sys/arch/hp300/dev/diofbvar.h: revision 1.4
sys/arch/hp300/dev/dcm.c: revision 1.91
sys/fs/cd9660/cd9660_util.c: revision 1.15
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.2

TAB/space cleanup.

installboot(8): formatting improvements

Use Ar foo instead of <foo>; this is mdoc.

Other formatting tweaks.
installboot(8): fix up markup

Don't overuse .Sy - when everything is highlighted, nothing is. Use
.Ic for options &c to get correct PostScript output (both are bold in
plain text).

Use Aq Ar inside .Pa, as both Pa and Ar are rendered as underscored
text in plain text output, and the distinction is lost.

Don't set examples in bold, but give them .Pp space around - they are
much easier to read this way.

Use consistent -width in FILES.
document how to use installboot on netbsd/vax.

PR/57909: Jan-Benedict Glaw: Don't include (build) timestamp when doing a
reproducible build
fix usage string, improve error handling.
add missing chunk for repro-build. fix gcc warnings.
avoid stringop truncation, fix copyright string to prevent assembler warnings.

Fix build as a tool (Jan-Benedict Glaw)

Fix integer overflow of strtol(3) for "loadpoint" address on ILP32 hosts.

This strtol(3) was introduced in rev 1.12 for PR/57909 after netbsd-10,
but it returns LONG_MAX (0x7FFFFFFF) for 0xFFF00000 on ILP32 hosts and
the wrong loadpoint causes "NOT ENOUGH MEMORY" error by the BOOTROMs
on loading uboot.lif on (at least) my 9000/360 and 9000/425t.

Misc cosmetic changes for mostly readability.
- KNF and add some newlines per blocks
- define and use proper bintobcd() macro
- make local functions and variables static

The same uboot.lif binaries are generated.

Rename ${PROGAOUT} -> ${PROGELF} to reflect reality.
Use proper signedness for the LIF file system data structures.

Ancient 4.3BSD used short and int for location, file size, file type,
and addresses etc. but all of them should be unsigned.

Also rename several variables and add comments for readability.
The LIF file system info can be found in "The HPDir Project" page:
https://www.hp9845.net/9845/projects/hpdir/
The same uboot.lif binaries are generated.

Add a preliminary CD boot support to uboot for preparation of PR/54455.
Briefly tested on mame, but not enalbed yet.

Recognize SCSI CD-ROM devices as a booted device properly.

Necessary for PR port-hp300/54455, to boot an md root root RAMDISK

kernel from CD-ROM without "WARNING: can't find match for bootdev:"
prompt.

Sync with src/sys/arch/hp300/stand/mkboot/volhdr.h rev 1.6.
https://mail-index.netbsd.org/source-changes/2024/05/07/msg151195.html

Use proper signedness for the LIF file system data structures.
mkboot should use this MI <sys/bootblock.h> and volhdr.h should
be removed soon.

Use MI <sys/bootblock.h> to refer LIF filesystem structures.
This should have been done when LIF definitions were initially added
to <sys/bootblock.h> for MI installboot(8).

Enable SUPPORT_CD on uboot.

Make cd9660_util.c usable in userland tools like installboot(8).

This was partially done for src/distrib/cdrom/macppc_installboot,
but more strict prototypes are necessary for native binary builds.

Install cd9660 related system headers for tools installboot(8) builds.

Reorder function prototypes per source files.

Add cd9660 support to search a bootloader file in the target file system.

Also add CD boot support for hp300, using a bootloader file in cd9660 fs.
This is a tool's part to close PR/54455.

HP 9000/300 machines read LIF directory entry allocated after
the LIF volume header at the top of the boot disk during bootstrap,
and a bootstrap file must be contiguously allocated on the disk
due to limitation of the LIF specification.

Current NetBSD/hp300's bootloader is larger than ~80KB so we have
to prepare a special 'boot' partition for FFS (that has only 8KB (ffsv1)
or 32KB (ffsv2) spaces) disks to put such a large bootloader.

On the other hand, on ISO9660 fs all files are allocated contiguously
so we can specify a bootloader file in the target ISO9660 directly
in the LIF directory entry.

Note we can simply use the existing "append" option to create bootable
CD ISO for hp300, but it looks some emulators (at leaset MAME) reject
such non-standard ISO files, i.e. with an appended bootloader file at
the end of the image.

Put a RAMDISK kernel and SYS_UBOOT into hp300 installcd to make it bootable.

This should finally close PR/54455.

Fix tools build errors on Cygwin.

Appease warnings on building tools/installboot on Cygwin.
 1.3.90.1 16-May-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #690):

sys/arch/hp300/dev/topcat.c: revision 1.7
sys/arch/hp300/dev/topcat.c: revision 1.8
sys/arch/hp300/dev/topcat.c: revision 1.9
sys/arch/hp300/dev/diofb.c: revision 1.8
sys/arch/hp300/dev/diofb.c: revision 1.9
sys/arch/hp300/dev/diofb.c: revision 1.10
sys/arch/hp300/dev/topcat.c: revision 1.10
sys/arch/hp300/dev/topcat.c: revision 1.11
sys/arch/hp300/dev/topcat.c: revision 1.12
sys/arch/hp300/dev/topcatreg.h: revision 1.5
distrib/notes/hp300/hardware: revision 1.28
sys/arch/hp300/dev/diofbvar.h: revision 1.5
share/man/man4/man4.hp300/topcat.4: revision 1.8

Increase DELAY() for waitbusy macroes as pre-wscons and 4.4BSD did.

It looks necessary for sane palette ops at least on HP98543 topcat
on 68030 HP 9000/360.

Move a check of topcat(4) specific fb width quirks to topcat.c.

We need to check fb->planes but it's propbed in topcat.c after
common diofb_fbinquire() is called.

Also add a comment that it looks these 1 bpp and 4 bpp boards have
VRAM with sparse address layout and we have to handle
512 pixels per line with 1024 bytes per line.

Fix MD allocattr to return proper attributes what MI rasops(9) expects.
Use proper planemask per a vaild number of planes.

Check tc_waitbusy() before writing palette registers in topcat_setcolor().
This seems to make palette operations more stable on my HP360 with HP98543.

Add DELAY(9) to make palette register settings stable on 98543 in HP360.
Note 98547 (6 bpp variant) on HP370 (68030 33MHz) doesn't need these
DELAYs so maybe only some old variants (98543 and 98545?) on 020/030
have such restriction (actually only one nop seems enough.)

Fix topcat(4) problems on some models that cause garbages on screen.
- Make sure that windowmove (hardware BITBLT) ops complete by checking
tc_busywait() before calling putchar functions by MI rasops(9).
It looks CPU accesses against VRAM during windowmove (copy, erase,
and cursor) ops causes unexpected garbages at least on 98543 on HP360,
98547 on HP370, and also on 98543 on 040 HP380 (but not on 98549).
- Handle 'sparse VRAM' on 98543 (and probably 98542) properly:
- Prepare and use own topcat_putchar1_4() function for sparse VRAM.
- Pass proper 'VRAM width' rather than actuall font width to all
windowmove (copycols, erasecols, copyrows, eraserows, and do_cursor)
operation functions.
Now all topcat(4) consoles on 98543 on HP360/HP380 and 98547 on HP370
work fine, and no visible regression on 98549 on HP380 and 98544 on HP360.

Note that 98542 and 98543 variants are also supported by topcat(4).

Add 98542 and 98543 framebuffers to supported "Graphics Devices" section.
I hope someone will sync a list of supported devices in port wiki pages
with one in this installation notes.

Add comments about quirks of 98542/98543 framebuffers with 1024x400 pixels.
 1.3.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.3.6.1 12-Feb-2011  jruoho file diofbvar.h was added on branch jruoho-x86intr on 2011-06-06 09:05:35 +0000
 1.3.2.2 05-Mar-2011  rmind sync with head
 1.3.2.1 12-Feb-2011  rmind file diofbvar.h was added on branch rmind-uvmplock on 2011-03-05 20:50:21 +0000
 1.8 06-Mar-2011  tsutsui Remove trailing spaces.
 1.7 28-Apr-2008  martin branches: 1.7.22; 1.7.28;
Remove clause 3 and 4 from TNF licenses
 1.6 11-Dec-2005  christos branches: 1.6.74; 1.6.76; 1.6.78;
merge ktrace-lwp.
 1.5 02-Jan-2005  tsutsui u_intNN_t -> uintNN_t
 1.4 09-Oct-1997  jtc branches: 1.4.50;
Fix tipo inherited from old version of TNF copyright template.
 1.3 30-Jan-1997  thorpej branches: 1.3.8;
Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.2 12-Jan-1997  thorpej Fix botch in PA calculation for DIO-II devices. Bug noticed and fix
provided by Klaus Klein <kleink@layla.inka.de>, PR #3097.
 1.1 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.3.8.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.4.50.1 17-Jan-2005  skrll Sync with HEAD.
 1.6.78.1 16-May-2008  yamt sync with head.
 1.6.76.1 18-May-2008  yamt sync with head.
 1.6.74.1 02-Jun-2008  mjf Sync with HEAD.
 1.7.28.1 06-Jun-2011  jruoho Sync with HEAD.
 1.7.22.1 21-Apr-2011  rmind sync with head
 1.13 28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.12 11-Dec-2005  christos branches: 1.12.74; 1.12.76; 1.12.78;
merge ktrace-lwp.
 1.11 02-Jan-2005  tsutsui u_intNN_t -> uintNN_t
 1.10 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.9 01-Aug-2003  tsutsui Add "oddbyte" bus_space(9) access ops for DIO devices which have
odd byte address space.
 1.8 24-May-2003  gmcgarry branches: 1.8.2;
Clean-up the DIO bus. Includes two main changes:

1) Pass address and ipl locators at attachment;
2) Remove hack which made the internal HP-IB controller
look like a DIO device.

The hack to allow the nhpib driver to support internal and DIO
controllers appears to be a leftover from 4.3BD where it was not
possible to have a driver attach to different busses. NetBSD has
supported bus-dependent attachments for a long time.
 1.7 11-Jan-1998  thorpej Pass down bus space tags to children, and use types appropriate for
bus.h.
 1.6 09-Oct-1997  jtc Fix tipo inherited from old version of TNF copyright template.
 1.5 18-Jul-1997  jtk branches: 1.5.2;
remove old *_UNK style default defines, use standard names from locators.h
 1.4 17-Jul-1997  jtk use locator defines in "locators.h" to index cf_loc[]

still to be done and/or decided not to be done: replace all *UNK uses in
hpib code with the native names from locators.h
 1.3 05-May-1997  thorpej Prototype dio_intr_establish() and dio_intr_disestablish().
 1.2 30-Jan-1997  thorpej Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.1 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.5.2.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.8.2.5 17-Jan-2005  skrll Sync with HEAD.
 1.8.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.8.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.8.2.2 03-Sep-2004  skrll Sync with HEAD
 1.8.2.1 03-Aug-2004  skrll Sync with HEAD
 1.12.78.1 16-May-2008  yamt sync with head.
 1.12.76.1 18-May-2008  yamt sync with head.
 1.12.74.1 02-Jun-2008  mjf Sync with HEAD.
 1.48 30-Apr-2024  tsutsui Fix another fatal typo that prevents dma(4) interrupts.
 1.47 16-Jan-2024  thorpej Fix computation of the appropriate auto-vector interrupt level to use
for the DMA controller by tracking all of the DIO devices that have
"ISRPRI_BIO" interrupt handlers, and finding the highest auto-vector
level among them and informing the DMA controller.

Previously, in a post-flattening world, the DMA controller was always
told to interrupt at lev5, which is fine I guess although definitely not
ideal, but would not work on aaaancient HP320 Rev A DMA boards. To that
effect, print a warning if a Rev B DMA board ends up at ipl != 3 (we can't
differentiate between a Rev A and a Rev B board).
 1.46 16-Jan-2024  thorpej Several years ago, the interrupt priority levels for devices were "flattened"
such that IPL_BIO, IPL_NET, and IPL_TTY (logical interrupt priority levels)
became aliases of IPL_VM (the logical interrupt priority level above which
memory allocation is not allowed). Unfortuantely, this meant that any
use of these logical interrupt priority levels to differentiate between
different interrupt service routines at the same auto-vectored interrupt
level was pointless... "when everyone is special, no one is".

Before this flattening happened, these distinct logical interrupt priority
levels levels were dynamically mapped to physical auto-vectored interrupt
levels based on which types of devices registered themselves at which auto-
vectored level. Now, splbio(), splnet(), etc. are all equivalent to splvm(),
which effectively blocks all device interrupts.

Switch to using the ISRPRI_* values provided by the common m68k interrupt
dispatch code, which allows interrupt handlers for devices that are more
latency-sensitive to be sorted earlier in the list of handlers at a given
auto-vectored interrupt level, as was originally intended.
 1.45 15-Jan-2023  tsutsui TAB/space cleanup.
 1.44 06-Sep-2021  andvar branches: 1.44.4;
fix typos in word "segment" and two additional typos in if_tl.c.
 1.43 06-Jun-2010  mrg fix PR 6724 - convert m68k options to defflag's. this means that
M680[12346] are now available from opt_m68k_arch.h. FPSP meantioned
in the PR has already been fixed, and i could not find any more.

i built these kernels to ensure i did not break their builds:

amiga: GENERIC DRACO
atari: HADES FALCON MILAN-PCIIDE
mac68k: GENERIC
sun2: GENERIC
sun3: GENERIC GENERIC3X
cesfic: attempted GENERIC, does not build due to lack of machine/bus.h
hp300: GENERIC
luna68k: GENERIC
mvme68k: GENERIC
news68k: GENERIC
next68k: GENERIC
x68k: GENERIC
 1.42 22-Jun-2008  tsutsui branches: 1.42.16; 1.42.18;
Don't recompute an ipl level for IPL_VM during or after cpu_configure(9)
and use a static and possible highest ipl value (ipl 5) for IPL_VM
so that we can put ipl2psl_table[] conversion into makeiplcookie(9),
which could be called before cpu_configure(9).

Fixes "panic: sbappendaddr" on NFS load.
 1.41 15-Jun-2008  tsutsui Unify splraiseipl(9) implementation among m68k ports as per
suggestion from isaki@ on port-m68k.

For hp300:
- use ipl2psl_table[] for makeiplcookie() conversion
- use uint16_t for ipl2psl_table[]
 1.40 28-Apr-2008  martin branches: 1.40.2; 1.40.4;
Remove clause 3 and 4 from TNF licenses
 1.39 29-Mar-2008  tsutsui branches: 1.39.2; 1.39.4;
Split device_t/softc, and misc cosmetic changes.
 1.38 05-Dec-2007  tsutsui branches: 1.38.12;
Use queue(3) macro.
 1.37 17-Oct-2007  garbled branches: 1.37.2; 1.37.4;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.36 12-Jul-2007  he branches: 1.36.8; 1.36.10;
Adapt to new signature for callout_init().
 1.35 21-Dec-2006  yamt branches: 1.35.6; 1.35.14;
merge yamt-splraiseipl branch.

- finish implementing splraiseipl (and makeiplcookie).
http://mail-index.NetBSD.org/tech-kern/2006/07/01/0000.html
- complete workqueue(9) and fix its ipl problem, which is reported
to cause audio skipping.
- fix netbt (at least compilation problems) for some ports.
- fix PR/33218.
 1.34 21-Jul-2006  tsutsui branches: 1.34.4; 1.34.6;
Some KNF.
 1.33 11-Dec-2005  christos branches: 1.33.4; 1.33.8;
merge ktrace-lwp.
 1.32 03-Jun-2005  tsutsui branches: 1.32.2;
Replace badbaddr() with hp300_bus_space_probe() to avoid -Wcast-qual warning.
 1.31 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.30 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.29 01-Apr-2003  thorpej branches: 1.29.2;
Use PAGE_SIZE rather than NBPG.
 1.28 22-Dec-2002  gmcgarry Make the DMA controller a separate device attached to intio. Intio
devices can use the DMA controller too.
 1.27 20-Oct-2002  chs merge the 12 copies of vm_machdep.c on the m68k platforms.
clean up some other stuff along the way, including:
- use m68k/cacheops.*, remove duplicates from cpu.h.
- centralize a few declarations in (all the copies of) cpu.h.
- define M68K_VAC on platforms which have a VAC.
- switch the sun platforms to the (now common) proc_trampoline().
- do the phys_map thang on the sun platforms too, no reason not to.
 1.26 15-Mar-2002  gmcgarry Add RCSIDs.
 1.25 23-Mar-2000  thorpej branches: 1.25.8; 1.25.12;
New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.24 01-Aug-1999  thorpej branches: 1.24.2;
Store computed PSL values in an array indexed by abstract interrupt
level, rather than individual shortwords.
 1.23 20-Aug-1998  kleink branches: 1.23.8;
vm_offset_t -> {paddr_t,vaddr_t}, vm_size_t -> vsize_t
 1.22 24-May-1998  is Back out the defopt for M680?0. As pointed out to me, this breaks ports which
dont use the M680?0 the way Amiga, Atari, Mac68k, and X68k do. I must have
missed this in the past discussion about this project.
 1.21 23-May-1998  is Move M680[2346]0 to opt_m68kcpu.h.
XXX Some explicit dependencies could be removed now from the individual
arch/$ARCH/conf/Makefile.$ARCH files, but this is still to be done.
 1.20 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.19 05-May-1997  thorpej branches: 1.19.4;
Do a bit of spring cleaning.
 1.18 27-Apr-1997  thorpej Use information provided by <machine/hp300spu.h> to determine if we
might have a physical address cache.
 1.17 14-Apr-1997  thorpej Update for interrupt function and header name changes.
 1.16 06-Apr-1997  mycroft Fix some #ifdef lossage if HP340, HP360, or HP375 is defined, but HP370 is not.
 1.15 02-Apr-1997  scottr Fix printf() and other warnings when compiled with DEBUG defined.
 1.14 01-Apr-1997  scottr Add prototypes, and make this compile with -Wall.
 1.13 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.12 31-Jan-1997  carrel Make "options HP340" actually work without having "option HP360".
 1.11 30-Jan-1997  thorpej - Use indicies, rather than pointer arithmetic, to track DMA chain
segments.
- Use a much more obvious DMA job queueing scheme.
- Fixup some debugging code.
 1.10 09-Dec-1996  thorpej Defer hooking up the DMA controller interrupt. Add a new funciton,
dmacomputeipl(), which is called by drivers which use DMA once they've
hooked up their interrupts. This new function computes the appropriate
ipl to use for the DMA controller and (re-)establishes it's interrupt.
 1.9 13-Oct-1996  christos backout previous kprintf changes
 1.8 11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.7 14-Feb-1996  thorpej All interrupt routines (except the HIL; don't ask) now take a pointer
to a softc, rather than a unit number. Add a "dq_softc" member
to struct devqueue; this is a temporary measure until the
dma/controller/device callback spaghetti is untangled.

YAY! No more need for dcafastservice!

HIL: squish instances of "(void) splhil()" and "(void) spl0();".
 1.6 02-Dec-1995  thorpej Make the DMA controller driver a little more new config-friendly. Still
more work to do, but this is a step in the right direction.
 1.5 26-Oct-1994  cgd new RCS ID format.
 1.4 23-May-1994  mycroft Merge with 4.4-Lite.
 1.3 05-May-1994  mycroft Most of the changes needed to make this continue to run.
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.19.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.23.8.1 02-Aug-1999  thorpej Update from trunk.
 1.24.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.25.12.3 29-Dec-2002  thorpej Sync with HEAD.
 1.25.12.2 11-Nov-2002  nathanw Catch up to -current
 1.25.12.1 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.25.8.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.29.2.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.29.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.29.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.29.2.2 03-Sep-2004  skrll Sync with HEAD
 1.29.2.1 03-Aug-2004  skrll Sync with HEAD
 1.32.2.3 07-Dec-2007  yamt sync with head
 1.32.2.2 03-Sep-2007  yamt sync with head.
 1.32.2.1 30-Dec-2006  yamt sync with head.
 1.33.8.1 11-Aug-2006  yamt sync with head
 1.33.4.1 09-Sep-2006  rpaulo sync with head
 1.34.6.1 06-Oct-2006  tsutsui Reorganize IPL macros for proper splraiseipl() implementation:
- merge HP300_IPL_* and IPL_* macros
- prepare independent _IPL_SOFT_* macro to determine softintr(9) handlers
- rename hp300_ipls[] array to hp300_ipl2psl[]
- then use these macro for makeiplcookie() and splraiseipl()
Tested on HP382.
 1.34.4.1 12-Jan-2007  ad Sync with head.
 1.35.14.1 03-Oct-2007  garbled Sync with HEAD
 1.35.6.1 15-Jul-2007  ad Sync with head.
 1.36.10.2 09-Jan-2008  matt sync with HEAD
 1.36.10.1 06-Nov-2007  matt sync with HEAD
 1.36.8.1 09-Dec-2007  jmcneill Sync with HEAD.
 1.37.4.1 08-Dec-2007  ad Sync with head.
 1.37.2.1 08-Dec-2007  mjf Sync with HEAD.
 1.38.12.3 29-Jun-2008  mjf Sync with HEAD.
 1.38.12.2 02-Jun-2008  mjf Sync with HEAD.
 1.38.12.1 03-Apr-2008  mjf Sync with HEAD.
 1.39.4.3 11-Aug-2010  yamt sync with head.
 1.39.4.2 04-May-2009  yamt sync with head.
 1.39.4.1 16-May-2008  yamt sync with head.
 1.39.2.2 17-Jun-2008  yamt sync with head.
 1.39.2.1 18-May-2008  yamt sync with head.
 1.40.4.2 27-Jun-2008  simonb Sync with head.
 1.40.4.1 18-Jun-2008  simonb Sync with head.
 1.40.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.42.18.1 03-Jul-2010  rmind sync with head
 1.42.16.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.44.4.1 22-Jun-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #722):

sys/fs/cd9660/cd9660_util.c: revision 1.16
sys/arch/hp300/stand/common/clock.c: revision 1.14
sys/arch/hp300/stand/common/scsireg.h: revision 1.5
sys/arch/hp300/stand/common/scsireg.h: revision 1.6
sys/arch/hp300/stand/Makefile.buildboot: revision 1.38
sys/arch/hp300/include/bus.h: revision 1.23
sys/arch/hp300/stand/Makefile.buildboot: revision 1.39
sys/arch/hp300/stand/common/sd.c: revision 1.12
sys/arch/hp300/stand/common/prf.c: revision 1.6
sys/arch/hp300/stand/common/sd.c: revision 1.13
usr.sbin/installboot/installboot.8: revision 1.106
usr.sbin/installboot/Makefile: revision 1.59
sys/arch/hp300/stand/common/devopen.c: revision 1.14
usr.sbin/installboot/installboot.8: revision 1.107
sys/arch/hp300/stand/common/ite_dumb.c: revision 1.2
sys/arch/hp300/stand/common/devopen.c: revision 1.15
usr.sbin/installboot/installboot.8: revision 1.108
sys/fs/cd9660/cd9660_extern.h: revision 1.29
usr.sbin/installboot/installboot.8: revision 1.109
tools/Makefile.nbincludes: revision 1.11 (patch)
sys/arch/hp300/dev/rboxreg.h: revision 1.3
sys/arch/hp300/stand/common/scsivar.h: revision 1.5
sys/arch/hp300/dev/dnkbd.c: revision 1.14
sys/arch/hp300/hp300/trap.c: revision 1.156
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.12
sys/arch/hp300/dev/frodoreg.h: revision 1.6
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.13
sys/arch/hp300/stand/common/ite_sti.c: revision 1.2
sys/arch/hp300/stand/common/hil.c: revision 1.15
usr.sbin/installboot/arch/hp300.c: revision 1.18
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.14
sys/arch/hp300/dev/rbox.c: revision 1.4
usr.sbin/installboot/arch/hp300.c: revision 1.19
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.15
sys/sys/bootblock.h: revision 1.59
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.16
usr.sbin/installboot/installboot.h: revision 1.44
sys/arch/hp300/stand/mkboot/volhdr.h: file removal
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.17
sys/arch/hp300/dev/hpib.c: revision 1.45
usr.sbin/installboot/installboot.h: revision 1.45
usr.sbin/installboot/cd9660.c: revision 1.1
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.18
sys/arch/hp300/dev/topcatreg.h: revision 1.3
usr.sbin/installboot/cd9660.c: revision 1.2
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.19
sys/arch/hp300/stand/inst/inst.c: revision 1.25
sys/arch/hp300/stand/uboot/Makefile: revision 1.12
sys/arch/hp300/dev/dvbox.c: revision 1.4
sys/arch/hp300/dev/dma.c: revision 1.45
sys/arch/hp300/stand/uboot/Makefile: revision 1.13
sys/arch/hp300/stand/common/rd.c: revision 1.16
sys/arch/hp300/stand/inst/Makefile: revision 1.12
distrib/hp300/cdroms/installcd/Makefile: revision 1.4
sys/arch/hp300/stand/mkboot/volhdr.h: revision 1.6
sys/arch/hp300/stand/common/machdep.c: revision 1.16
usr.sbin/installboot/fstypes.c: revision 1.14
sys/arch/hp300/hp300/machdep.c: revision 1.238
sys/arch/hp300/include/cpu.h: revision 1.73
sys/arch/hp300/dev/diofbreg.h: revision 1.4
sys/arch/hp300/stand/common/scsi.c: revision 1.12
sys/arch/hp300/stand/common/netio.c: revision 1.19
sys/arch/hp300/stand/common/scsi.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.22
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.20
sys/arch/hp300/stand/common/conf.h: revision 1.4
sys/arch/hp300/hp300/autoconf.c: revision 1.111
sys/arch/hp300/stand/common/conf.c: revision 1.15
sys/arch/hp300/stand/mkboot/Makefile: revision 1.12
sys/arch/hp300/stand/mkboot/Makefile: revision 1.13
sys/arch/hp300/hp300/autoconf.c: revision 1.114
sys/arch/hp300/dev/dcmreg.h: revision 1.11
sys/arch/hp300/dev/diofbvar.h: revision 1.4
sys/arch/hp300/dev/dcm.c: revision 1.91
sys/fs/cd9660/cd9660_util.c: revision 1.15
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.2

TAB/space cleanup.

installboot(8): formatting improvements

Use Ar foo instead of <foo>; this is mdoc.

Other formatting tweaks.
installboot(8): fix up markup

Don't overuse .Sy - when everything is highlighted, nothing is. Use
.Ic for options &c to get correct PostScript output (both are bold in
plain text).

Use Aq Ar inside .Pa, as both Pa and Ar are rendered as underscored
text in plain text output, and the distinction is lost.

Don't set examples in bold, but give them .Pp space around - they are
much easier to read this way.

Use consistent -width in FILES.
document how to use installboot on netbsd/vax.

PR/57909: Jan-Benedict Glaw: Don't include (build) timestamp when doing a
reproducible build
fix usage string, improve error handling.
add missing chunk for repro-build. fix gcc warnings.
avoid stringop truncation, fix copyright string to prevent assembler warnings.

Fix build as a tool (Jan-Benedict Glaw)

Fix integer overflow of strtol(3) for "loadpoint" address on ILP32 hosts.

This strtol(3) was introduced in rev 1.12 for PR/57909 after netbsd-10,
but it returns LONG_MAX (0x7FFFFFFF) for 0xFFF00000 on ILP32 hosts and
the wrong loadpoint causes "NOT ENOUGH MEMORY" error by the BOOTROMs
on loading uboot.lif on (at least) my 9000/360 and 9000/425t.

Misc cosmetic changes for mostly readability.
- KNF and add some newlines per blocks
- define and use proper bintobcd() macro
- make local functions and variables static

The same uboot.lif binaries are generated.

Rename ${PROGAOUT} -> ${PROGELF} to reflect reality.
Use proper signedness for the LIF file system data structures.

Ancient 4.3BSD used short and int for location, file size, file type,
and addresses etc. but all of them should be unsigned.

Also rename several variables and add comments for readability.
The LIF file system info can be found in "The HPDir Project" page:
https://www.hp9845.net/9845/projects/hpdir/
The same uboot.lif binaries are generated.

Add a preliminary CD boot support to uboot for preparation of PR/54455.
Briefly tested on mame, but not enalbed yet.

Recognize SCSI CD-ROM devices as a booted device properly.

Necessary for PR port-hp300/54455, to boot an md root root RAMDISK

kernel from CD-ROM without "WARNING: can't find match for bootdev:"
prompt.

Sync with src/sys/arch/hp300/stand/mkboot/volhdr.h rev 1.6.
https://mail-index.netbsd.org/source-changes/2024/05/07/msg151195.html

Use proper signedness for the LIF file system data structures.
mkboot should use this MI <sys/bootblock.h> and volhdr.h should
be removed soon.

Use MI <sys/bootblock.h> to refer LIF filesystem structures.
This should have been done when LIF definitions were initially added
to <sys/bootblock.h> for MI installboot(8).

Enable SUPPORT_CD on uboot.

Make cd9660_util.c usable in userland tools like installboot(8).

This was partially done for src/distrib/cdrom/macppc_installboot,
but more strict prototypes are necessary for native binary builds.

Install cd9660 related system headers for tools installboot(8) builds.

Reorder function prototypes per source files.

Add cd9660 support to search a bootloader file in the target file system.

Also add CD boot support for hp300, using a bootloader file in cd9660 fs.
This is a tool's part to close PR/54455.

HP 9000/300 machines read LIF directory entry allocated after
the LIF volume header at the top of the boot disk during bootstrap,
and a bootstrap file must be contiguously allocated on the disk
due to limitation of the LIF specification.

Current NetBSD/hp300's bootloader is larger than ~80KB so we have
to prepare a special 'boot' partition for FFS (that has only 8KB (ffsv1)
or 32KB (ffsv2) spaces) disks to put such a large bootloader.

On the other hand, on ISO9660 fs all files are allocated contiguously
so we can specify a bootloader file in the target ISO9660 directly
in the LIF directory entry.

Note we can simply use the existing "append" option to create bootable
CD ISO for hp300, but it looks some emulators (at leaset MAME) reject
such non-standard ISO files, i.e. with an appended bootloader file at
the end of the image.

Put a RAMDISK kernel and SYS_UBOOT into hp300 installcd to make it bootable.

This should finally close PR/54455.

Fix tools build errors on Cygwin.

Appease warnings on building tools/installboot on Cygwin.
 1.17 24-Mar-2014  christos - remove unused
- use cpu_{g,s}etmodel
 1.16 19-Jul-2006  tsutsui branches: 1.16.96; 1.16.106; 1.16.112;
Define base address offsets of intio devices in intioreg.h
and replace various magic numbers with the macro.
 1.15 11-Dec-2005  christos branches: 1.15.4; 1.15.8;
merge ktrace-lwp.
 1.14 03-Jun-2005  tsutsui branches: 1.14.2;
Replace badbaddr() with hp300_bus_space_probe() to avoid -Wcast-qual warning.
 1.13 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.12 05-May-1997  thorpej branches: 1.12.56;
Do a bit of spring cleaning.
 1.11 27-Apr-1997  thorpej These files depend on things in <machine/hp300spu.h>
 1.10 01-Apr-1997  scottr Add prototypes, and make this compile with -Wall.
 1.9 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.8 30-Jan-1997  thorpej - Use indicies, rather than pointer arithmetic, to track DMA chain
segments.
- Use a much more obvious DMA job queueing scheme.
- Fixup some debugging code.
 1.7 09-Dec-1996  thorpej Garbage-collect DMAINTLVL; it's not needed any more.
 1.6 02-Dec-1995  thorpej Make the DMA controller driver a little more new config-friendly. Still
more work to do, but this is a step in the right direction.
 1.5 28-Mar-1995  jtc KERNEL -> _KERNEL
 1.4 26-Oct-1994  cgd new RCS ID format.
 1.3 23-May-1994  mycroft Merge with 4.4-Lite.
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.12.56.4 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.12.56.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.12.56.2 18-Sep-2004  skrll Sync with HEAD.
 1.12.56.1 03-Aug-2004  skrll Sync with HEAD
 1.14.2.1 30-Dec-2006  yamt sync with head.
 1.15.8.1 11-Aug-2006  yamt sync with head
 1.15.4.1 09-Sep-2006  rpaulo sync with head
 1.16.112.1 18-May-2014  rmind sync with head
 1.16.106.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.16.96.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.15 16-Jan-2024  thorpej Fix computation of the appropriate auto-vector interrupt level to use
for the DMA controller by tracking all of the DIO devices that have
"ISRPRI_BIO" interrupt handlers, and finding the highest auto-vector
level among them and informing the DMA controller.

Previously, in a post-flattening world, the DMA controller was always
told to interrupt at lev5, which is fine I guess although definitely not
ideal, but would not work on aaaancient HP320 Rev A DMA boards. To that
effect, print a warning if a Rev B DMA board ends up at ipl != 3 (we can't
differentiate between a Rev A and a Rev B board).
 1.14 28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.13 11-Dec-2005  christos branches: 1.13.74; 1.13.76; 1.13.78;
merge ktrace-lwp.
 1.12 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.11 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.10 04-Oct-1997  thorpej branches: 1.10.50;
Copyright assigned to The NetBSD Foundation.
 1.9 01-Apr-1997  scottr branches: 1.9.4;
Add prototypes, and make this compile with -Wall.
 1.8 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.7 30-Jan-1997  thorpej - Use indicies, rather than pointer arithmetic, to track DMA chain
segments.
- Use a much more obvious DMA job queueing scheme.
- Fixup some debugging code.
 1.6 09-Dec-1996  thorpej Defer hooking up the DMA controller interrupt. Add a new funciton,
dmacomputeipl(), which is called by drivers which use DMA once they've
hooked up their interrupts. This new function computes the appropriate
ipl to use for the DMA controller and (re-)establishes it's interrupt.
 1.5 28-Mar-1995  jtc KERNEL -> _KERNEL
 1.4 26-Oct-1994  cgd new RCS ID format.
 1.3 23-May-1994  mycroft Merge with 4.4-Lite.
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.9.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.10.50.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.10.50.3 18-Sep-2004  skrll Sync with HEAD.
 1.10.50.2 03-Sep-2004  skrll Sync with HEAD
 1.10.50.1 03-Aug-2004  skrll Sync with HEAD
 1.13.78.1 16-May-2008  yamt sync with head.
 1.13.76.1 18-May-2008  yamt sync with head.
 1.13.74.1 02-Jun-2008  mjf Sync with HEAD.
 1.16 27-May-2025  tsutsui Use C99 designated initializers for wscons structures.
 1.15 16-Jan-2024  thorpej branches: 1.15.2;
Several years ago, the interrupt priority levels for devices were "flattened"
such that IPL_BIO, IPL_NET, and IPL_TTY (logical interrupt priority levels)
became aliases of IPL_VM (the logical interrupt priority level above which
memory allocation is not allowed). Unfortuantely, this meant that any
use of these logical interrupt priority levels to differentiate between
different interrupt service routines at the same auto-vectored interrupt
level was pointless... "when everyone is special, no one is".

Before this flattening happened, these distinct logical interrupt priority
levels levels were dynamically mapped to physical auto-vectored interrupt
levels based on which types of devices registered themselves at which auto-
vectored level. Now, splbio(), splnet(), etc. are all equivalent to splvm(),
which effectively blocks all device interrupts.

Switch to using the ISRPRI_* values provided by the common m68k interrupt
dispatch code, which allows interrupt handlers for devices that are more
latency-sensitive to be sorted earlier in the list of handlers at a given
auto-vectored interrupt level, as was originally intended.
 1.14 15-Jan-2023  tsutsui TAB/space cleanup.
 1.13 07-Aug-2021  thorpej branches: 1.13.6;
Merge thorpej-cfargs2.
 1.12 24-Apr-2021  thorpej branches: 1.12.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.11 26-Dec-2020  tsutsui branches: 1.11.2;
Fix a longstanding bug in hilkbd (and dnkbd) console attachment.

cn_tab->cn_dev is initialized in wsdisplay_emul_attach()
(but not in wsdiaplay_cnattach()) so it cannot be used
when hil(4) is attached before wsdisplay(4) is attached.
Instead, use exported wsdisplay_cnputc() that is actually
set in early wsdisplay_cnattach().

Now we can use ddb and RB_ASKNAME via HIL keyboard console.
Should be pulleld up to netbsd-8 and netbsd-9.
 1.10 08-Apr-2017  tsutsui branches: 1.10.6; 1.10.18; 1.10.26;
Remove auto-repeat key functions in WSKBD_RAW mode.

Pulled from OpenBSD:
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/arch/hp300/dev/Attic/dnkbd.c#rev1.18
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/dev/hil/hilkbd.c#rev1.15
> WSKBD_RAW mode used in X, but X independently implements auto-repeat keys.

Tested with Xorg server on HP425t with topcat.
 1.9 25-Mar-2017  tsutsui In RAWKBD mode, don't schedule autorepeat callout(9) after KEY_UP events.

Now Apollo Domain keyboard works propery on Xorg server on my 425t.
Changes are taken from sys/dev/hil/hilkbd.c.

Note as OpenBSD says in the following commit log:
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/arch/hp300/dev/Attic/dnkbd.c#rev1.18
>> Auto-repeat keys in WSKBD_RAW mode is not needed.
>> WSKBD_RAW mode used in X, but X independently implements auto-repeat keys.
these autorepeat code will be removed later, but I commit this fix first
for the record.
 1.8 25-Mar-2017  tsutsui Send break signal to reset keyboard state before keyboard probe.

Now Apollo Domain keyboard is probed properly even after
any keys are typed before boot (i.e. on bootloader prompt).

Tested on 425e and A1630-82001 keyboard
(that were contributed by Miod Vallat).
 1.7 24-Apr-2014  tsutsui branches: 1.7.4; 1.7.8; 1.7.12;
Pull random notes on the Apollo Domain keyboard from ancient PR/3528.
 1.6 24-Apr-2014  tsutsui Make the Apollo Domain keyboard actually work.

Tested on HP9000/425e and the keyboard model A1630-82001 R2 (RX-60857-HW)
provided by Miod Vallat. Mouse support needs more work.
 1.5 18-Feb-2011  tsutsui branches: 1.5.2; 1.5.6; 1.5.8; 1.5.14; 1.5.18; 1.5.22; 1.5.32;
Use aprint_normal(9) and variants.
 1.4 12-Feb-2011  tsutsui branches: 1.4.2;
- make local functions static
- some KNF
 1.3 12-Feb-2011  tsutsui Fix one more porting botch inside #ifdef WSDISPLAY_COMPAT_RAWKBD.
 1.2 12-Feb-2011  tsutsui Make this compile properly with options WSDISPLAY_COMPAT_RAWKBD.
 1.1 12-Feb-2011  tsutsui Pull Apollo Domain keyboard and mouse support from OpenBSD.
Untested (no hardware), but no bad sideeffect on 425t without Domain keyboard.

This is the last portion of "new hp300 kernel features" submitted in
PR port-hp300/3528 back in 1997, and I think finally we can close it.
 1.4.2.3 05-Mar-2011  bouyer Sync with HEAD
 1.4.2.2 17-Feb-2011  bouyer Sync with HEAD
 1.4.2.1 12-Feb-2011  bouyer file dnkbd.c was added on branch bouyer-quota2 on 2011-02-17 11:59:38 +0000
 1.5.32.1 10-Aug-2014  tls Rebase.
 1.5.22.1 18-May-2014  rmind sync with head
 1.5.18.2 03-Dec-2017  jdolecek update from HEAD
 1.5.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5.14.1 21-May-2014  bouyer Pull up following revision(s) (requested by tsutsui in ticket #1058):
sys/arch/hp300/conf/files.hp300: revision 1.88
sys/arch/hp300/include/autoconf.h: revision 1.13
sys/dev/ic/sti.c: revision 1.17
sys/arch/hp300/dev/frodo.c: revision 1.31
sys/arch/hp300/conf/GENERIC: revision 1.173
sys/arch/hp300/hp300/machdep.c: revision 1.229
sys/arch/hp300/dev/frodo.c: revision 1.32
sys/arch/hp300/hp300/autoconf.c: revision 1.102
sys/arch/hp300/dev/frodoreg.h: revision 1.5
sys/arch/hp300/stand/common/ite_sti.c: revision 1.1
sys/arch/hp300/stand/common/itevar.h: revision 1.16
sys/arch/hp300/hp300/autoconf.c: revision 1.105
sys/arch/hp300/dev/sti_sgcvar.h: revision 1.1
sys/arch/hp300/stand/common/apci.c: revision 1.12
sys/arch/hp300/stand/common/apci.c: revision 1.13
sys/arch/hp300/dev/dnkbd.c: revision 1.6
sys/arch/hp300/dev/dnkbd.c: revision 1.7
sys/arch/hp300/stand/inst/version: revision 1.12
sys/arch/hp300/dev/com_frodo.c: revision 1.9
sys/arch/hp300/stand/common/ite.c: revision 1.17
sys/arch/hp300/conf/GENERIC: revision 1.181
sys/arch/hp300/dev/sti_sgc.c: revision 1.1
sys/arch/hp300/stand/common/dnkbd.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.2
sys/dev/ic/stivar.h: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.21
sys/arch/hp300/conf/INSTALL: revision 1.56
sys/arch/hp300/conf/INSTALL: revision 1.58
sys/arch/hp300/stand/uboot/version: revision 1.19
sys/arch/hp300/stand/common/samachdep.h: revision 1.17
sys/arch/hp300/stand/common/clock.c: revision 1.12
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.1
sys/arch/hp300/stand/Makefile.buildboot: revision 1.34
sys/arch/hp300/conf/files.hp300: revision 1.87
Add sti at sgc framebuffer.
Ported from OpenBSD by kiyohara@.
Fix a botch on switching from apci (and dca) to MI com(4) 10 years ago.
I.e. fix apci device address per FRODO_BASE macro change
in frodoreg.h rev 1.2. Now bootloader works with serial console
on HP425e (which has only com at frodo).
Thanks to miod@openbsd for providing his 425e.
Add sti(4) at sgc screen console support. From (the late) OpenBSD/hp300.
Tested on HP9000/425e, which was sent from Miod Vallat and
demonstrated at Open Source unConference 2014 Kagawa.
Check the service switch on 425e to select apci serial console.
Taken from OpenBSD/hp300. See the following comment for details:
> * Check the service switch. On the 425e, this is a physical
> * switch, unlike other frodo-based machines, so we can use it
> * as a serial vs internal video selector, since the PROM can not
> * be configured for serial console.
Add proper RealTime Clock support for HP9000/425e.
As the OpenBSD/hp300 page says 425e doesn't have the traditional
RTC at intio (as it also lacks DCA 16550 serial at intio?),
but after a few hour investigation it turns out that
425e uses mc146818 compatible calendar clock in
the Apollo "frodo" utility chip and the frodo chip on
425e actually has the 32kHz OSC and is actually backed up
by the onboard lithium battery.
Tested on HP425e (with mcclock) and HP362 (with old rtc).
Add RTC support for HP9000/425e to bootloader too.
Also put several cleanup:
- make local functions and variables static
- use proper variable types
- some KNF
Note it turns out that extreme slowness of netboot on hp300 is
caused by the too slow access of the traditional RTC chip at intio
(i.e. netboot on 425e is so much faster than others). Oh well.
Add proper consinit(9) support for sti(4) at sgc framebuffer on hp300.
The cnattach functions for sti(4) and service switch check method
for 425e in com_frodo.c are taken from OpenBSD.
The strategy how to choose the console device in hp300_cninit() is
quite diverged from 4.4BSD and OpenBSD so it's tweaked by me.
Also put several changes in sti_sgc.c to reduce diffs from OpenBSD/hp300.
Tested on 425e and 362 (which still uses gendiofb(4), not sti(4)).
XXX: sti(4) requires uvm_km_alloc(9) and uvm_map_protect(9)
to copy and call ROM functions on the executable memory region, so
it can be called before UVM and related initializations are complete.
Probably it's time to consider about MI "deferred consinit()" API
in init_main.c (or elsewhere) for modern complicated VM system...
Also fix the apci device address in dnkbd.c as apci.c rev 1.12:
http://mail-index.netbsd.org/source-changes/2014/04/10/msg053940.html
Finally dnkbd(4) is confirmed working at least on bootloader.
Thanks again to Miod Vallat.
Make the Apollo Domain keyboard actually work.
Tested on HP9000/425e and the keyboard model A1630-82001 R2 (RX-60857-HW)
provided by Miod Vallat. Mouse support needs more work.
Pull random notes on the Apollo Domain keyboard from ancient PR/3528.
Bump versions to denote recent 425e related changes.
Probe mcclock only on 425e to avoid an extra "not configured" message.
Add and enable sti(4) at sgc in install kernels for 425e.
Tested on both serial console and framebuffer console.
(switched by the service switch on the back panel)
 1.5.8.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.5.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.5.6.1 18-Feb-2011  jruoho file dnkbd.c was added on branch jruoho-x86intr on 2011-06-06 09:05:35 +0000
 1.5.2.2 05-Mar-2011  rmind sync with head
 1.5.2.1 18-Feb-2011  rmind file dnkbd.c was added on branch rmind-uvmplock on 2011-03-05 20:50:21 +0000
 1.7.12.1 21-Apr-2017  bouyer Sync with HEAD
 1.7.8.1 26-Apr-2017  pgoyette Sync with HEAD
 1.7.4.1 28-Aug-2017  skrll Sync with HEAD
 1.10.26.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.10.18.1 28-Dec-2020  martin Pull up following revision(s) (requested by tsutsui in ticket #1161):

sys/arch/hp300/dev/dnkbd.c: revision 1.11
sys/arch/hp300/dev/hil_intio.c: revision 1.4

Fix a longstanding bug in hilkbd (and dnkbd) console attachment.
cn_tab->cn_dev is initialized in wsdisplay_emul_attach()
(but not in wsdiaplay_cnattach()) so it cannot be used
when hil(4) is attached before wsdisplay(4) is attached.

Instead, use exported wsdisplay_cnputc() that is actually
set in early wsdisplay_cnattach().

Now we can use ddb and RB_ASKNAME via HIL keyboard console.

Should be pulleld up to netbsd-8 and netbsd-9.
 1.10.6.1 28-Dec-2020  martin Pull up following revision(s) (requested by tsutsui in ticket #1642):

sys/arch/hp300/dev/dnkbd.c: revision 1.11
sys/arch/hp300/dev/hil_intio.c: revision 1.4

Fix a longstanding bug in hilkbd (and dnkbd) console attachment.
cn_tab->cn_dev is initialized in wsdisplay_emul_attach()
(but not in wsdiaplay_cnattach()) so it cannot be used
when hil(4) is attached before wsdisplay(4) is attached.

Instead, use exported wsdisplay_cnputc() that is actually
set in early wsdisplay_cnattach().

Now we can use ddb and RB_ASKNAME via HIL keyboard console.

Should be pulleld up to netbsd-8 and netbsd-9.
 1.11.2.1 02-Apr-2021  thorpej config_found_ia() -> config_found() w/ CFARG_IATTR.
 1.12.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.13.6.1 22-Jun-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #722):

sys/fs/cd9660/cd9660_util.c: revision 1.16
sys/arch/hp300/stand/common/clock.c: revision 1.14
sys/arch/hp300/stand/common/scsireg.h: revision 1.5
sys/arch/hp300/stand/common/scsireg.h: revision 1.6
sys/arch/hp300/stand/Makefile.buildboot: revision 1.38
sys/arch/hp300/include/bus.h: revision 1.23
sys/arch/hp300/stand/Makefile.buildboot: revision 1.39
sys/arch/hp300/stand/common/sd.c: revision 1.12
sys/arch/hp300/stand/common/prf.c: revision 1.6
sys/arch/hp300/stand/common/sd.c: revision 1.13
usr.sbin/installboot/installboot.8: revision 1.106
usr.sbin/installboot/Makefile: revision 1.59
sys/arch/hp300/stand/common/devopen.c: revision 1.14
usr.sbin/installboot/installboot.8: revision 1.107
sys/arch/hp300/stand/common/ite_dumb.c: revision 1.2
sys/arch/hp300/stand/common/devopen.c: revision 1.15
usr.sbin/installboot/installboot.8: revision 1.108
sys/fs/cd9660/cd9660_extern.h: revision 1.29
usr.sbin/installboot/installboot.8: revision 1.109
tools/Makefile.nbincludes: revision 1.11 (patch)
sys/arch/hp300/dev/rboxreg.h: revision 1.3
sys/arch/hp300/stand/common/scsivar.h: revision 1.5
sys/arch/hp300/dev/dnkbd.c: revision 1.14
sys/arch/hp300/hp300/trap.c: revision 1.156
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.12
sys/arch/hp300/dev/frodoreg.h: revision 1.6
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.13
sys/arch/hp300/stand/common/ite_sti.c: revision 1.2
sys/arch/hp300/stand/common/hil.c: revision 1.15
usr.sbin/installboot/arch/hp300.c: revision 1.18
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.14
sys/arch/hp300/dev/rbox.c: revision 1.4
usr.sbin/installboot/arch/hp300.c: revision 1.19
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.15
sys/sys/bootblock.h: revision 1.59
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.16
usr.sbin/installboot/installboot.h: revision 1.44
sys/arch/hp300/stand/mkboot/volhdr.h: file removal
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.17
sys/arch/hp300/dev/hpib.c: revision 1.45
usr.sbin/installboot/installboot.h: revision 1.45
usr.sbin/installboot/cd9660.c: revision 1.1
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.18
sys/arch/hp300/dev/topcatreg.h: revision 1.3
usr.sbin/installboot/cd9660.c: revision 1.2
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.19
sys/arch/hp300/stand/inst/inst.c: revision 1.25
sys/arch/hp300/stand/uboot/Makefile: revision 1.12
sys/arch/hp300/dev/dvbox.c: revision 1.4
sys/arch/hp300/dev/dma.c: revision 1.45
sys/arch/hp300/stand/uboot/Makefile: revision 1.13
sys/arch/hp300/stand/common/rd.c: revision 1.16
sys/arch/hp300/stand/inst/Makefile: revision 1.12
distrib/hp300/cdroms/installcd/Makefile: revision 1.4
sys/arch/hp300/stand/mkboot/volhdr.h: revision 1.6
sys/arch/hp300/stand/common/machdep.c: revision 1.16
usr.sbin/installboot/fstypes.c: revision 1.14
sys/arch/hp300/hp300/machdep.c: revision 1.238
sys/arch/hp300/include/cpu.h: revision 1.73
sys/arch/hp300/dev/diofbreg.h: revision 1.4
sys/arch/hp300/stand/common/scsi.c: revision 1.12
sys/arch/hp300/stand/common/netio.c: revision 1.19
sys/arch/hp300/stand/common/scsi.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.22
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.20
sys/arch/hp300/stand/common/conf.h: revision 1.4
sys/arch/hp300/hp300/autoconf.c: revision 1.111
sys/arch/hp300/stand/common/conf.c: revision 1.15
sys/arch/hp300/stand/mkboot/Makefile: revision 1.12
sys/arch/hp300/stand/mkboot/Makefile: revision 1.13
sys/arch/hp300/hp300/autoconf.c: revision 1.114
sys/arch/hp300/dev/dcmreg.h: revision 1.11
sys/arch/hp300/dev/diofbvar.h: revision 1.4
sys/arch/hp300/dev/dcm.c: revision 1.91
sys/fs/cd9660/cd9660_util.c: revision 1.15
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.2

TAB/space cleanup.

installboot(8): formatting improvements

Use Ar foo instead of <foo>; this is mdoc.

Other formatting tweaks.
installboot(8): fix up markup

Don't overuse .Sy - when everything is highlighted, nothing is. Use
.Ic for options &c to get correct PostScript output (both are bold in
plain text).

Use Aq Ar inside .Pa, as both Pa and Ar are rendered as underscored
text in plain text output, and the distinction is lost.

Don't set examples in bold, but give them .Pp space around - they are
much easier to read this way.

Use consistent -width in FILES.
document how to use installboot on netbsd/vax.

PR/57909: Jan-Benedict Glaw: Don't include (build) timestamp when doing a
reproducible build
fix usage string, improve error handling.
add missing chunk for repro-build. fix gcc warnings.
avoid stringop truncation, fix copyright string to prevent assembler warnings.

Fix build as a tool (Jan-Benedict Glaw)

Fix integer overflow of strtol(3) for "loadpoint" address on ILP32 hosts.

This strtol(3) was introduced in rev 1.12 for PR/57909 after netbsd-10,
but it returns LONG_MAX (0x7FFFFFFF) for 0xFFF00000 on ILP32 hosts and
the wrong loadpoint causes "NOT ENOUGH MEMORY" error by the BOOTROMs
on loading uboot.lif on (at least) my 9000/360 and 9000/425t.

Misc cosmetic changes for mostly readability.
- KNF and add some newlines per blocks
- define and use proper bintobcd() macro
- make local functions and variables static

The same uboot.lif binaries are generated.

Rename ${PROGAOUT} -> ${PROGELF} to reflect reality.
Use proper signedness for the LIF file system data structures.

Ancient 4.3BSD used short and int for location, file size, file type,
and addresses etc. but all of them should be unsigned.

Also rename several variables and add comments for readability.
The LIF file system info can be found in "The HPDir Project" page:
https://www.hp9845.net/9845/projects/hpdir/
The same uboot.lif binaries are generated.

Add a preliminary CD boot support to uboot for preparation of PR/54455.
Briefly tested on mame, but not enalbed yet.

Recognize SCSI CD-ROM devices as a booted device properly.

Necessary for PR port-hp300/54455, to boot an md root root RAMDISK

kernel from CD-ROM without "WARNING: can't find match for bootdev:"
prompt.

Sync with src/sys/arch/hp300/stand/mkboot/volhdr.h rev 1.6.
https://mail-index.netbsd.org/source-changes/2024/05/07/msg151195.html

Use proper signedness for the LIF file system data structures.
mkboot should use this MI <sys/bootblock.h> and volhdr.h should
be removed soon.

Use MI <sys/bootblock.h> to refer LIF filesystem structures.
This should have been done when LIF definitions were initially added
to <sys/bootblock.h> for MI installboot(8).

Enable SUPPORT_CD on uboot.

Make cd9660_util.c usable in userland tools like installboot(8).

This was partially done for src/distrib/cdrom/macppc_installboot,
but more strict prototypes are necessary for native binary builds.

Install cd9660 related system headers for tools installboot(8) builds.

Reorder function prototypes per source files.

Add cd9660 support to search a bootloader file in the target file system.

Also add CD boot support for hp300, using a bootloader file in cd9660 fs.
This is a tool's part to close PR/54455.

HP 9000/300 machines read LIF directory entry allocated after
the LIF volume header at the top of the boot disk during bootstrap,
and a bootstrap file must be contiguously allocated on the disk
due to limitation of the LIF specification.

Current NetBSD/hp300's bootloader is larger than ~80KB so we have
to prepare a special 'boot' partition for FFS (that has only 8KB (ffsv1)
or 32KB (ffsv2) spaces) disks to put such a large bootloader.

On the other hand, on ISO9660 fs all files are allocated contiguously
so we can specify a bootloader file in the target ISO9660 directly
in the LIF directory entry.

Note we can simply use the existing "append" option to create bootable
CD ISO for hp300, but it looks some emulators (at leaset MAME) reject
such non-standard ISO files, i.e. with an appended bootloader file at
the end of the image.

Put a RAMDISK kernel and SYS_UBOOT into hp300 installcd to make it bootable.

This should finally close PR/54455.

Fix tools build errors on Cygwin.

Appease warnings on building tools/installboot on Cygwin.
 1.15.2.1 02-Aug-2025  perseant Sync with HEAD
 1.3 19-Feb-2011  tsutsui branches: 1.3.2; 1.3.6;
u_int8_t -> uint8_t
 1.2 12-Feb-2011  tsutsui branches: 1.2.2;
Make sure to include "opt_wsdisplay_compat.h" for WSDISPLAY_COMPAT_RAWKBD.
 1.1 12-Feb-2011  tsutsui Pull Apollo Domain keyboard and mouse support from OpenBSD.
Untested (no hardware), but no bad sideeffect on 425t without Domain keyboard.

This is the last portion of "new hp300 kernel features" submitted in
PR port-hp300/3528 back in 1997, and I think finally we can close it.
 1.2.2.3 05-Mar-2011  bouyer Sync with HEAD
 1.2.2.2 17-Feb-2011  bouyer Sync with HEAD
 1.2.2.1 12-Feb-2011  bouyer file dnkbdmap.c was added on branch bouyer-quota2 on 2011-02-17 11:59:38 +0000
 1.3.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.3.6.1 19-Feb-2011  jruoho file dnkbdmap.c was added on branch jruoho-x86intr on 2011-06-06 09:05:35 +0000
 1.3.2.2 05-Mar-2011  rmind sync with head
 1.3.2.1 19-Feb-2011  rmind file dnkbdmap.c was added on branch rmind-uvmplock on 2011-03-05 20:50:21 +0000
 1.2 19-Feb-2011  tsutsui branches: 1.2.2; 1.2.6;
u_int8_t -> uint8_t
 1.1 12-Feb-2011  tsutsui branches: 1.1.2;
Pull Apollo Domain keyboard and mouse support from OpenBSD.
Untested (no hardware), but no bad sideeffect on 425t without Domain keyboard.

This is the last portion of "new hp300 kernel features" submitted in
PR port-hp300/3528 back in 1997, and I think finally we can close it.
 1.1.2.3 05-Mar-2011  bouyer Sync with HEAD
 1.1.2.2 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 12-Feb-2011  bouyer file dnkbdmap.h was added on branch bouyer-quota2 on 2011-02-17 11:59:38 +0000
 1.2.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.1 19-Feb-2011  jruoho file dnkbdmap.h was added on branch jruoho-x86intr on 2011-06-06 09:05:35 +0000
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 19-Feb-2011  rmind file dnkbdmap.h was added on branch rmind-uvmplock on 2011-03-05 20:50:21 +0000
 1.5 27-May-2025  tsutsui Use C99 designated initializers for wscons structures.
 1.4 15-Jan-2023  tsutsui branches: 1.4.6;
TAB/space cleanup.
 1.3 18-Feb-2011  tsutsui branches: 1.3.2; 1.3.6; 1.3.90;
Use aprint_normal(9) and variants.
 1.2 12-Feb-2011  tsutsui - make local functions static
- some KNF
 1.1 06-Feb-2011  tsutsui branches: 1.1.2;
Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.1.2.4 05-Mar-2011  bouyer Sync with HEAD
 1.1.2.3 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.2 08-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 06-Feb-2011  bouyer file dvbox.c was added on branch bouyer-quota2 on 2011-02-08 16:19:21 +0000
 1.3.90.1 22-Jun-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #722):

sys/fs/cd9660/cd9660_util.c: revision 1.16
sys/arch/hp300/stand/common/clock.c: revision 1.14
sys/arch/hp300/stand/common/scsireg.h: revision 1.5
sys/arch/hp300/stand/common/scsireg.h: revision 1.6
sys/arch/hp300/stand/Makefile.buildboot: revision 1.38
sys/arch/hp300/include/bus.h: revision 1.23
sys/arch/hp300/stand/Makefile.buildboot: revision 1.39
sys/arch/hp300/stand/common/sd.c: revision 1.12
sys/arch/hp300/stand/common/prf.c: revision 1.6
sys/arch/hp300/stand/common/sd.c: revision 1.13
usr.sbin/installboot/installboot.8: revision 1.106
usr.sbin/installboot/Makefile: revision 1.59
sys/arch/hp300/stand/common/devopen.c: revision 1.14
usr.sbin/installboot/installboot.8: revision 1.107
sys/arch/hp300/stand/common/ite_dumb.c: revision 1.2
sys/arch/hp300/stand/common/devopen.c: revision 1.15
usr.sbin/installboot/installboot.8: revision 1.108
sys/fs/cd9660/cd9660_extern.h: revision 1.29
usr.sbin/installboot/installboot.8: revision 1.109
tools/Makefile.nbincludes: revision 1.11 (patch)
sys/arch/hp300/dev/rboxreg.h: revision 1.3
sys/arch/hp300/stand/common/scsivar.h: revision 1.5
sys/arch/hp300/dev/dnkbd.c: revision 1.14
sys/arch/hp300/hp300/trap.c: revision 1.156
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.12
sys/arch/hp300/dev/frodoreg.h: revision 1.6
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.13
sys/arch/hp300/stand/common/ite_sti.c: revision 1.2
sys/arch/hp300/stand/common/hil.c: revision 1.15
usr.sbin/installboot/arch/hp300.c: revision 1.18
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.14
sys/arch/hp300/dev/rbox.c: revision 1.4
usr.sbin/installboot/arch/hp300.c: revision 1.19
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.15
sys/sys/bootblock.h: revision 1.59
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.16
usr.sbin/installboot/installboot.h: revision 1.44
sys/arch/hp300/stand/mkboot/volhdr.h: file removal
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.17
sys/arch/hp300/dev/hpib.c: revision 1.45
usr.sbin/installboot/installboot.h: revision 1.45
usr.sbin/installboot/cd9660.c: revision 1.1
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.18
sys/arch/hp300/dev/topcatreg.h: revision 1.3
usr.sbin/installboot/cd9660.c: revision 1.2
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.19
sys/arch/hp300/stand/inst/inst.c: revision 1.25
sys/arch/hp300/stand/uboot/Makefile: revision 1.12
sys/arch/hp300/dev/dvbox.c: revision 1.4
sys/arch/hp300/dev/dma.c: revision 1.45
sys/arch/hp300/stand/uboot/Makefile: revision 1.13
sys/arch/hp300/stand/common/rd.c: revision 1.16
sys/arch/hp300/stand/inst/Makefile: revision 1.12
distrib/hp300/cdroms/installcd/Makefile: revision 1.4
sys/arch/hp300/stand/mkboot/volhdr.h: revision 1.6
sys/arch/hp300/stand/common/machdep.c: revision 1.16
usr.sbin/installboot/fstypes.c: revision 1.14
sys/arch/hp300/hp300/machdep.c: revision 1.238
sys/arch/hp300/include/cpu.h: revision 1.73
sys/arch/hp300/dev/diofbreg.h: revision 1.4
sys/arch/hp300/stand/common/scsi.c: revision 1.12
sys/arch/hp300/stand/common/netio.c: revision 1.19
sys/arch/hp300/stand/common/scsi.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.22
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.20
sys/arch/hp300/stand/common/conf.h: revision 1.4
sys/arch/hp300/hp300/autoconf.c: revision 1.111
sys/arch/hp300/stand/common/conf.c: revision 1.15
sys/arch/hp300/stand/mkboot/Makefile: revision 1.12
sys/arch/hp300/stand/mkboot/Makefile: revision 1.13
sys/arch/hp300/hp300/autoconf.c: revision 1.114
sys/arch/hp300/dev/dcmreg.h: revision 1.11
sys/arch/hp300/dev/diofbvar.h: revision 1.4
sys/arch/hp300/dev/dcm.c: revision 1.91
sys/fs/cd9660/cd9660_util.c: revision 1.15
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.2

TAB/space cleanup.

installboot(8): formatting improvements

Use Ar foo instead of <foo>; this is mdoc.

Other formatting tweaks.
installboot(8): fix up markup

Don't overuse .Sy - when everything is highlighted, nothing is. Use
.Ic for options &c to get correct PostScript output (both are bold in
plain text).

Use Aq Ar inside .Pa, as both Pa and Ar are rendered as underscored
text in plain text output, and the distinction is lost.

Don't set examples in bold, but give them .Pp space around - they are
much easier to read this way.

Use consistent -width in FILES.
document how to use installboot on netbsd/vax.

PR/57909: Jan-Benedict Glaw: Don't include (build) timestamp when doing a
reproducible build
fix usage string, improve error handling.
add missing chunk for repro-build. fix gcc warnings.
avoid stringop truncation, fix copyright string to prevent assembler warnings.

Fix build as a tool (Jan-Benedict Glaw)

Fix integer overflow of strtol(3) for "loadpoint" address on ILP32 hosts.

This strtol(3) was introduced in rev 1.12 for PR/57909 after netbsd-10,
but it returns LONG_MAX (0x7FFFFFFF) for 0xFFF00000 on ILP32 hosts and
the wrong loadpoint causes "NOT ENOUGH MEMORY" error by the BOOTROMs
on loading uboot.lif on (at least) my 9000/360 and 9000/425t.

Misc cosmetic changes for mostly readability.
- KNF and add some newlines per blocks
- define and use proper bintobcd() macro
- make local functions and variables static

The same uboot.lif binaries are generated.

Rename ${PROGAOUT} -> ${PROGELF} to reflect reality.
Use proper signedness for the LIF file system data structures.

Ancient 4.3BSD used short and int for location, file size, file type,
and addresses etc. but all of them should be unsigned.

Also rename several variables and add comments for readability.
The LIF file system info can be found in "The HPDir Project" page:
https://www.hp9845.net/9845/projects/hpdir/
The same uboot.lif binaries are generated.

Add a preliminary CD boot support to uboot for preparation of PR/54455.
Briefly tested on mame, but not enalbed yet.

Recognize SCSI CD-ROM devices as a booted device properly.

Necessary for PR port-hp300/54455, to boot an md root root RAMDISK

kernel from CD-ROM without "WARNING: can't find match for bootdev:"
prompt.

Sync with src/sys/arch/hp300/stand/mkboot/volhdr.h rev 1.6.
https://mail-index.netbsd.org/source-changes/2024/05/07/msg151195.html

Use proper signedness for the LIF file system data structures.
mkboot should use this MI <sys/bootblock.h> and volhdr.h should
be removed soon.

Use MI <sys/bootblock.h> to refer LIF filesystem structures.
This should have been done when LIF definitions were initially added
to <sys/bootblock.h> for MI installboot(8).

Enable SUPPORT_CD on uboot.

Make cd9660_util.c usable in userland tools like installboot(8).

This was partially done for src/distrib/cdrom/macppc_installboot,
but more strict prototypes are necessary for native binary builds.

Install cd9660 related system headers for tools installboot(8) builds.

Reorder function prototypes per source files.

Add cd9660 support to search a bootloader file in the target file system.

Also add CD boot support for hp300, using a bootloader file in cd9660 fs.
This is a tool's part to close PR/54455.

HP 9000/300 machines read LIF directory entry allocated after
the LIF volume header at the top of the boot disk during bootstrap,
and a bootstrap file must be contiguously allocated on the disk
due to limitation of the LIF specification.

Current NetBSD/hp300's bootloader is larger than ~80KB so we have
to prepare a special 'boot' partition for FFS (that has only 8KB (ffsv1)
or 32KB (ffsv2) spaces) disks to put such a large bootloader.

On the other hand, on ISO9660 fs all files are allocated contiguously
so we can specify a bootloader file in the target ISO9660 directly
in the LIF directory entry.

Note we can simply use the existing "append" option to create bootable
CD ISO for hp300, but it looks some emulators (at leaset MAME) reject
such non-standard ISO files, i.e. with an appended bootloader file at
the end of the image.

Put a RAMDISK kernel and SYS_UBOOT into hp300 installcd to make it bootable.

This should finally close PR/54455.

Fix tools build errors on Cygwin.

Appease warnings on building tools/installboot on Cygwin.
 1.3.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.3.6.1 18-Feb-2011  jruoho file dvbox.c was added on branch jruoho-x86intr on 2011-06-06 09:05:35 +0000
 1.3.2.2 05-Mar-2011  rmind sync with head
 1.3.2.1 18-Feb-2011  rmind file dvbox.c was added on branch rmind-uvmplock on 2011-03-05 20:50:21 +0000
 1.4.6.1 02-Aug-2025  perseant Sync with HEAD
 1.2 12-Feb-2011  tsutsui branches: 1.2.2; 1.2.6;
- make local functions static
- some KNF
 1.1 06-Feb-2011  tsutsui branches: 1.1.2;
Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.1.2.3 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.2 08-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 06-Feb-2011  bouyer file dvboxreg.h was added on branch bouyer-quota2 on 2011-02-08 16:19:21 +0000
 1.2.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.1 12-Feb-2011  jruoho file dvboxreg.h was added on branch jruoho-x86intr on 2011-06-06 09:05:35 +0000
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 12-Feb-2011  rmind file dvboxreg.h was added on branch rmind-uvmplock on 2011-03-05 20:50:21 +0000
 1.44 16-Jan-2024  thorpej Several years ago, the interrupt priority levels for devices were "flattened"
such that IPL_BIO, IPL_NET, and IPL_TTY (logical interrupt priority levels)
became aliases of IPL_VM (the logical interrupt priority level above which
memory allocation is not allowed). Unfortuantely, this meant that any
use of these logical interrupt priority levels to differentiate between
different interrupt service routines at the same auto-vectored interrupt
level was pointless... "when everyone is special, no one is".

Before this flattening happened, these distinct logical interrupt priority
levels levels were dynamically mapped to physical auto-vectored interrupt
levels based on which types of devices registered themselves at which auto-
vectored level. Now, splbio(), splnet(), etc. are all equivalent to splvm(),
which effectively blocks all device interrupts.

Switch to using the ISRPRI_* values provided by the common m68k interrupt
dispatch code, which allows interrupt handlers for devices that are more
latency-sensitive to be sorted earlier in the list of handlers at a given
auto-vectored interrupt level, as was originally intended.
 1.43 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.42 24-Apr-2021  thorpej branches: 1.42.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.41 29-Sep-2020  msaitoh branches: 1.41.4;
s/occurence/occurrence/
 1.40 24-Mar-2014  christos - remove unused
- use cpu_{g,s}etmodel
 1.39 28-Apr-2008  martin branches: 1.39.34; 1.39.44; 1.39.50;
Remove clause 3 and 4 from TNF licenses
 1.38 29-Mar-2008  tsutsui branches: 1.38.2; 1.38.4;
Split device_t/softc, and misc cosmetic changes.
 1.37 05-Dec-2007  tsutsui branches: 1.37.12;
Use queue(3) macro.
 1.36 17-Oct-2007  garbled branches: 1.36.2; 1.36.4;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.35 12-Jul-2007  he branches: 1.35.8; 1.35.10;
Adapt to the new signature of callout_init().
 1.34 21-Jul-2006  tsutsui branches: 1.34.14; 1.34.22;
Use bus_space_map(9) and bus_space_vaddr(9) rather than iomap().
 1.33 21-Jul-2006  tsutsui Some KNF.
 1.32 28-Mar-2006  thorpej Use device_unit().
 1.31 23-Feb-2006  thorpej branches: 1.31.2; 1.31.4; 1.31.6;
Use device_parent().
 1.30 11-Dec-2005  christos branches: 1.30.2; 1.30.4; 1.30.6;
merge ktrace-lwp.
 1.29 28-Aug-2004  thorpej branches: 1.29.12;
Use ANSI function decls, static, and const.
 1.28 17-Nov-2003  tsutsui TAB/space cleanup.
 1.27 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.26 24-May-2003  gmcgarry branches: 1.26.2;
Clean-up the DIO bus. Includes two main changes:

1) Pass address and ipl locators at attachment;
2) Remove hack which made the internal HP-IB controller
look like a DIO device.

The hack to allow the nhpib driver to support internal and DIO
controllers appears to be a leftover from 4.3BD where it was not
possible to have a driver attach to different busses. NetBSD has
supported bus-dependent attachments for a long time.
 1.25 03-May-2003  wiz DMA, not dma nor Dma.
 1.24 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.23 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.22 15-Mar-2002  gmcgarry Add RCSIDs.
 1.21 23-Mar-2000  thorpej branches: 1.21.8; 1.21.12;
New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.20 12-Jan-1998  thorpej branches: 1.20.14;
Update for changes to config.
 1.19 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.18 05-May-1997  thorpej branches: 1.18.4;
Use dio_intr_establish().
 1.17 14-Apr-1997  thorpej Update for interrupt function and header name changes.
 1.16 02-Apr-1997  scottr Fix printf() and other warnings when compiled with DEBUG defined.
 1.15 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.14 30-Jan-1997  thorpej - Convert these drivers to new-style autoconfiguration. Old-style
configuration is no longer supported.
- Use a much more obvious HP-IB job queueing scheme.
 1.13 13-Oct-1996  christos backout previous kprintf changes
 1.12 11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.11 18-May-1996  thorpej Back most (not all) of the previous delay-related changes now that
delay is calibrated properly.
 1.10 17-May-1996  thorpej Change "DELAY(1)" to "DELAY(5)". This is basically equivalent to how
the old implementation of DELAY() behaved with small values.
 1.9 14-Feb-1996  thorpej All interrupt routines (except the HIL; don't ask) now take a pointer
to a softc, rather than a unit number. Add a "dq_softc" member
to struct devqueue; this is a temporary measure until the
dma/controller/device callback spaghetti is untangled.

YAY! No more need for dcafastservice!

HIL: squish instances of "(void) splhil()" and "(void) spl0();".
 1.8 02-Dec-1995  thorpej Use a "match/attach" rather than "init" scheme for probing devices.
This is a step towards getting the drivers ready for new config.
 1.7 19-Nov-1995  thorpej Do an indirect driver a little more like an indirect driver would like to
be done. Set up a structure filled with function pointers in the
controller-specific probe routines, and jump through them, instead of
if()'ing our way though each operation.

Be a little more discriptive; print out the controller type found
during the probe in a way that's somewhat meaningful.
 1.6 07-Jan-1995  mycroft Various diffs from Mike Hibler; necessary for mt driver.
 1.5 26-Oct-1994  cgd new RCS ID format.
 1.4 23-May-1994  mycroft Merge with 4.4-Lite.
 1.3 05-May-1994  mycroft Most of the changes needed to make this continue to run.
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.18.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.20.14.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.21.12.2 18-Oct-2002  nathanw Catch up to -current.
 1.21.12.1 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.21.8.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.21.8.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.26.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.26.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.26.2.2 03-Sep-2004  skrll Sync with HEAD
 1.26.2.1 03-Aug-2004  skrll Sync with HEAD
 1.29.12.4 07-Dec-2007  yamt sync with head
 1.29.12.3 03-Sep-2007  yamt sync with head.
 1.29.12.2 30-Dec-2006  yamt sync with head.
 1.29.12.1 21-Jun-2006  yamt sync with head.
 1.30.6.1 22-Apr-2006  simonb Sync with head.
 1.30.4.1 09-Sep-2006  rpaulo sync with head
 1.30.2.1 01-Mar-2006  yamt sync with head.
 1.31.6.1 31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.31.4.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.31.2.2 11-Aug-2006  yamt sync with head
 1.31.2.1 01-Apr-2006  yamt sync with head.
 1.34.22.1 03-Oct-2007  garbled Sync with HEAD
 1.34.14.1 15-Jul-2007  ad Sync with head.
 1.35.10.2 09-Jan-2008  matt sync with HEAD
 1.35.10.1 06-Nov-2007  matt sync with HEAD
 1.35.8.1 09-Dec-2007  jmcneill Sync with HEAD.
 1.36.4.1 08-Dec-2007  ad Sync with head.
 1.36.2.1 08-Dec-2007  mjf Sync with HEAD.
 1.37.12.2 02-Jun-2008  mjf Sync with HEAD.
 1.37.12.1 03-Apr-2008  mjf Sync with HEAD.
 1.38.4.1 16-May-2008  yamt sync with head.
 1.38.2.1 18-May-2008  yamt sync with head.
 1.39.50.1 18-May-2014  rmind sync with head
 1.39.44.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.39.34.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.41.4.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.42.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.6 11-Dec-2005  christos merge ktrace-lwp.
 1.5 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.4 26-Oct-1994  cgd branches: 1.4.66;
new RCS ID format.
 1.3 23-May-1994  mycroft Merge with 4.4-Lite.
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.4.66.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.66.2 18-Sep-2004  skrll Sync with HEAD.
 1.4.66.1 03-Aug-2004  skrll Sync with HEAD
 1.36 16-Jan-2024  thorpej Switch hp300 over to the common interrupt dispatch code.

XXX There are still some things to fix up here, but it's no worse
than it was before (the problems date back to when we flattened
the device interrupt levels into IPL_VM).
 1.35 25-Nov-2022  tsutsui Service mode switch should not be treated as an error.

Use aprint_normal(9) to avoid confusing dmesg.
 1.34 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.33 24-Apr-2021  thorpej branches: 1.33.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.32 30-Apr-2014  tsutsui branches: 1.32.42;
Probe mcclock only on 425e to avoid an extra "not configured" message.
 1.31 19-Apr-2014  tsutsui Add proper RealTime Clock support for HP9000/425e.

As the OpenBSD/hp300 page says 425e doesn't have the traditional
RTC at intio (as it also lacks DCA 16550 serial at intio?),
but after a few hour investigation it turns out that
425e uses mc146818 compatible calendar clock in
the Apollo "frodo" utility chip and the frodo chip on
425e actually has the 32kHz OSC and is actually backed up
by the onboard lithium battery.

Tested on HP425e (with mcclock) and HP362 (with old rtc).
 1.30 12-Feb-2011  tsutsui branches: 1.30.4; 1.30.10; 1.30.14; 1.30.18; 1.30.28;
Fix comment (362 doesn't have frodo).
 1.29 28-Apr-2008  martin branches: 1.29.22; 1.29.28; 1.29.30;
Remove clause 3 and 4 from TNF licenses
 1.28 29-Mar-2008  tsutsui branches: 1.28.2; 1.28.4;
Split device_t/softc, and misc cosmetic changes.
 1.27 04-Mar-2007  christos branches: 1.27.40;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.26 20-Jul-2006  tsutsui branches: 1.26.10;
Identify models HP362 and HP382. From OpenBSD, tested on my HP382.

Note now options HP362 and options HP382 are required for these models
in your kernel config file.
 1.25 19-Jul-2006  tsutsui some KNF
 1.24 19-Jul-2006  tsutsui Use iobase address passed from attach args.
 1.23 24-Dec-2005  perry branches: 1.23.4; 1.23.8;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.22 11-Dec-2005  christos merge ktrace-lwp.
 1.21 26-Aug-2005  drochner s/locdesc_t/int/g
 1.20 28-Jun-2005  drochner branches: 1.20.2;
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.19 02-Jan-2005  tsutsui u_intNN_t -> uintNN_t
 1.18 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.17 07-Apr-2004  tsutsui Adjust fd_name in struct frodo_device frodo_subdevs[]
since MD apci(4) has been switched to MI com(4).
 1.16 17-Nov-2003  tsutsui branches: 1.16.2;
TAB/space cleanup.
 1.15 08-Nov-2003  tsutsui Switch DCA and APCI serial devices to use MI com(4) driver.

DCA is tested on HP362 and HP382 with serial console,
but APCI on HP4xx is not tested yet.
 1.14 01-Jan-2003  thorpej branches: 1.14.2;
Use aprint_normal() for cfprint routines.
 1.13 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.12 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.11 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.10 17-Mar-2002  gmcgarry Don't match on trailing spaces in the module name.
 1.9 15-Mar-2002  gmcgarry Add RCSIDs.
 1.8 08-Dec-2001  gmcgarry Update for structural interrupt changes. No functional change.
 1.7 08-Dec-2001  gmcgarry bcopy -> memcpy
bzero -> memset
bcmp -> memcmp
 1.6 17-Nov-2001  gmcgarry Update for new intio parent interface.
 1.5 31-Jul-1999  thorpej branches: 1.5.16; 1.5.20;
Skip "serial 1" on non-425e models. It's mapped to DCA at 9 on every
other 4xx model, and the "not configured" could be pretty annoying.
 1.4 12-Jan-1998  thorpej branches: 1.4.10;
Update for changes to config.
 1.3 11-Jan-1998  thorpej ia->ia_addr is a physical address, not a kernel virtual address.
 1.2 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.1 12-May-1997  thorpej branches: 1.1.4;
Add a driver for the Apollo Utility Chip (a.k.a. "frodo"), contributed
by Mike Smith <mike@pressed.spam.frisbee.net.au>, with some changes to
the autoconfiguration model and slight changes to the interrupt glue
by me.
 1.1.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.4.10.1 02-Aug-1999  thorpej Update from trunk.
 1.5.20.4 03-Jan-2003  thorpej Sync with HEAD.
 1.5.20.3 18-Oct-2002  nathanw Catch up to -current.
 1.5.20.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.5.20.1 08-Jan-2002  nathanw Catch up to -current.
 1.5.16.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.5.16.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.5.16.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.14.2.6 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.14.2.5 17-Jan-2005  skrll Sync with HEAD.
 1.14.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.14.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.14.2.2 03-Sep-2004  skrll Sync with HEAD
 1.14.2.1 03-Aug-2004  skrll Sync with HEAD
 1.16.2.1 11-Apr-2004  jmc Pullup rev 1.17 (requested by tsutsui in ticket #116)

Adjust fd_name in struct frodo_device frodo_subdevs[]
since MD apci(4) has been switched to MI com(4).
Adjust FRODO_BASE macro since com_frodo uses bus_space_map(9)
which takes offset from intiobase instead of KVA.
It turns out that not only HP425e but other HP4xx models also require
COM_HW_NOIEN for APCI com(4) ports.
 1.20.2.3 03-Sep-2007  yamt sync with head.
 1.20.2.2 30-Dec-2006  yamt sync with head.
 1.20.2.1 21-Jun-2006  yamt sync with head.
 1.23.8.1 11-Aug-2006  yamt sync with head
 1.23.4.1 09-Sep-2006  rpaulo sync with head
 1.26.10.1 12-Mar-2007  rmind Sync with HEAD.
 1.27.40.2 02-Jun-2008  mjf Sync with HEAD.
 1.27.40.1 03-Apr-2008  mjf Sync with HEAD.
 1.28.4.1 16-May-2008  yamt sync with head.
 1.28.2.1 18-May-2008  yamt sync with head.
 1.29.30.1 17-Feb-2011  bouyer Sync with HEAD
 1.29.28.1 06-Jun-2011  jruoho Sync with HEAD.
 1.29.22.1 05-Mar-2011  rmind sync with head
 1.30.28.1 10-Aug-2014  tls Rebase.
 1.30.18.1 18-May-2014  rmind sync with head
 1.30.14.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.30.10.1 21-May-2014  bouyer Pull up following revision(s) (requested by tsutsui in ticket #1058):
sys/arch/hp300/conf/files.hp300: revision 1.88
sys/arch/hp300/include/autoconf.h: revision 1.13
sys/dev/ic/sti.c: revision 1.17
sys/arch/hp300/dev/frodo.c: revision 1.31
sys/arch/hp300/conf/GENERIC: revision 1.173
sys/arch/hp300/hp300/machdep.c: revision 1.229
sys/arch/hp300/dev/frodo.c: revision 1.32
sys/arch/hp300/hp300/autoconf.c: revision 1.102
sys/arch/hp300/dev/frodoreg.h: revision 1.5
sys/arch/hp300/stand/common/ite_sti.c: revision 1.1
sys/arch/hp300/stand/common/itevar.h: revision 1.16
sys/arch/hp300/hp300/autoconf.c: revision 1.105
sys/arch/hp300/dev/sti_sgcvar.h: revision 1.1
sys/arch/hp300/stand/common/apci.c: revision 1.12
sys/arch/hp300/stand/common/apci.c: revision 1.13
sys/arch/hp300/dev/dnkbd.c: revision 1.6
sys/arch/hp300/dev/dnkbd.c: revision 1.7
sys/arch/hp300/stand/inst/version: revision 1.12
sys/arch/hp300/dev/com_frodo.c: revision 1.9
sys/arch/hp300/stand/common/ite.c: revision 1.17
sys/arch/hp300/conf/GENERIC: revision 1.181
sys/arch/hp300/dev/sti_sgc.c: revision 1.1
sys/arch/hp300/stand/common/dnkbd.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.2
sys/dev/ic/stivar.h: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.21
sys/arch/hp300/conf/INSTALL: revision 1.56
sys/arch/hp300/conf/INSTALL: revision 1.58
sys/arch/hp300/stand/uboot/version: revision 1.19
sys/arch/hp300/stand/common/samachdep.h: revision 1.17
sys/arch/hp300/stand/common/clock.c: revision 1.12
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.1
sys/arch/hp300/stand/Makefile.buildboot: revision 1.34
sys/arch/hp300/conf/files.hp300: revision 1.87
Add sti at sgc framebuffer.
Ported from OpenBSD by kiyohara@.
Fix a botch on switching from apci (and dca) to MI com(4) 10 years ago.
I.e. fix apci device address per FRODO_BASE macro change
in frodoreg.h rev 1.2. Now bootloader works with serial console
on HP425e (which has only com at frodo).
Thanks to miod@openbsd for providing his 425e.
Add sti(4) at sgc screen console support. From (the late) OpenBSD/hp300.
Tested on HP9000/425e, which was sent from Miod Vallat and
demonstrated at Open Source unConference 2014 Kagawa.
Check the service switch on 425e to select apci serial console.
Taken from OpenBSD/hp300. See the following comment for details:
> * Check the service switch. On the 425e, this is a physical
> * switch, unlike other frodo-based machines, so we can use it
> * as a serial vs internal video selector, since the PROM can not
> * be configured for serial console.
Add proper RealTime Clock support for HP9000/425e.
As the OpenBSD/hp300 page says 425e doesn't have the traditional
RTC at intio (as it also lacks DCA 16550 serial at intio?),
but after a few hour investigation it turns out that
425e uses mc146818 compatible calendar clock in
the Apollo "frodo" utility chip and the frodo chip on
425e actually has the 32kHz OSC and is actually backed up
by the onboard lithium battery.
Tested on HP425e (with mcclock) and HP362 (with old rtc).
Add RTC support for HP9000/425e to bootloader too.
Also put several cleanup:
- make local functions and variables static
- use proper variable types
- some KNF
Note it turns out that extreme slowness of netboot on hp300 is
caused by the too slow access of the traditional RTC chip at intio
(i.e. netboot on 425e is so much faster than others). Oh well.
Add proper consinit(9) support for sti(4) at sgc framebuffer on hp300.
The cnattach functions for sti(4) and service switch check method
for 425e in com_frodo.c are taken from OpenBSD.
The strategy how to choose the console device in hp300_cninit() is
quite diverged from 4.4BSD and OpenBSD so it's tweaked by me.
Also put several changes in sti_sgc.c to reduce diffs from OpenBSD/hp300.
Tested on 425e and 362 (which still uses gendiofb(4), not sti(4)).
XXX: sti(4) requires uvm_km_alloc(9) and uvm_map_protect(9)
to copy and call ROM functions on the executable memory region, so
it can be called before UVM and related initializations are complete.
Probably it's time to consider about MI "deferred consinit()" API
in init_main.c (or elsewhere) for modern complicated VM system...
Also fix the apci device address in dnkbd.c as apci.c rev 1.12:
http://mail-index.netbsd.org/source-changes/2014/04/10/msg053940.html
Finally dnkbd(4) is confirmed working at least on bootloader.
Thanks again to Miod Vallat.
Make the Apollo Domain keyboard actually work.
Tested on HP9000/425e and the keyboard model A1630-82001 R2 (RX-60857-HW)
provided by Miod Vallat. Mouse support needs more work.
Pull random notes on the Apollo Domain keyboard from ancient PR/3528.
Bump versions to denote recent 425e related changes.
Probe mcclock only on 425e to avoid an extra "not configured" message.
Add and enable sti(4) at sgc in install kernels for 425e.
Tested on both serial console and framebuffer console.
(switched by the service switch on the back panel)
 1.30.4.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.32.42.2 22-Mar-2021  thorpej Audit CFARG_IATTR in config_found() calls, and remove it in situations
where the interface attribute is not ambiguous.
 1.32.42.1 22-Mar-2021  thorpej Mechanical conversion of config_found_sm_loc() -> config_found().
CFARG_IATTR usage needs to be audited.
 1.33.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.6 15-Jan-2023  tsutsui TAB/space cleanup.
 1.5 19-Apr-2014  tsutsui branches: 1.5.58;
Add proper RealTime Clock support for HP9000/425e.

As the OpenBSD/hp300 page says 425e doesn't have the traditional
RTC at intio (as it also lacks DCA 16550 serial at intio?),
but after a few hour investigation it turns out that
425e uses mc146818 compatible calendar clock in
the Apollo "frodo" utility chip and the frodo chip on
425e actually has the 32kHz OSC and is actually backed up
by the onboard lithium battery.

Tested on HP425e (with mcclock) and HP362 (with old rtc).
 1.4 19-Jul-2006  tsutsui branches: 1.4.96; 1.4.102; 1.4.106; 1.4.112; 1.4.122;
Define base address offsets of intio devices in intioreg.h
and replace various magic numbers with the macro.
 1.3 11-Dec-2005  christos branches: 1.3.4; 1.3.8;
merge ktrace-lwp.
 1.2 07-Apr-2004  tsutsui branches: 1.2.12;
Adjust FRODO_BASE macro since com_frodo uses bus_space_map(9)
which takes offset from intiobase instead of KVA.

Now com* at frodo? is probed properly.
(but not tested because I don't have a special cable for apci ports yet)
 1.1 12-May-1997  thorpej branches: 1.1.56; 1.1.58;
Add a driver for the Apollo Utility Chip (a.k.a. "frodo"), contributed
by Mike Smith <mike@pressed.spam.frisbee.net.au>, with some changes to
the autoconfiguration model and slight changes to the interrupt glue
by me.
 1.1.58.1 11-Apr-2004  jmc Pullup rev 1.2 (requested by tsutsui in ticket #116)

Adjust fd_name in struct frodo_device frodo_subdevs[]
since MD apci(4) has been switched to MI com(4).
Adjust FRODO_BASE macro since com_frodo uses bus_space_map(9)
which takes offset from intiobase instead of KVA.
It turns out that not only HP425e but other HP4xx models also require
COM_HW_NOIEN for APCI com(4) ports.
 1.1.56.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.56.2 18-Sep-2004  skrll Sync with HEAD.
 1.1.56.1 03-Aug-2004  skrll Sync with HEAD
 1.2.12.1 30-Dec-2006  yamt sync with head.
 1.3.8.1 11-Aug-2006  yamt sync with head
 1.3.4.1 09-Sep-2006  rpaulo sync with head
 1.4.122.1 10-Aug-2014  tls Rebase.
 1.4.112.1 18-May-2014  rmind sync with head
 1.4.106.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.102.1 21-May-2014  bouyer Pull up following revision(s) (requested by tsutsui in ticket #1058):
sys/arch/hp300/conf/files.hp300: revision 1.88
sys/arch/hp300/include/autoconf.h: revision 1.13
sys/dev/ic/sti.c: revision 1.17
sys/arch/hp300/dev/frodo.c: revision 1.31
sys/arch/hp300/conf/GENERIC: revision 1.173
sys/arch/hp300/hp300/machdep.c: revision 1.229
sys/arch/hp300/dev/frodo.c: revision 1.32
sys/arch/hp300/hp300/autoconf.c: revision 1.102
sys/arch/hp300/dev/frodoreg.h: revision 1.5
sys/arch/hp300/stand/common/ite_sti.c: revision 1.1
sys/arch/hp300/stand/common/itevar.h: revision 1.16
sys/arch/hp300/hp300/autoconf.c: revision 1.105
sys/arch/hp300/dev/sti_sgcvar.h: revision 1.1
sys/arch/hp300/stand/common/apci.c: revision 1.12
sys/arch/hp300/stand/common/apci.c: revision 1.13
sys/arch/hp300/dev/dnkbd.c: revision 1.6
sys/arch/hp300/dev/dnkbd.c: revision 1.7
sys/arch/hp300/stand/inst/version: revision 1.12
sys/arch/hp300/dev/com_frodo.c: revision 1.9
sys/arch/hp300/stand/common/ite.c: revision 1.17
sys/arch/hp300/conf/GENERIC: revision 1.181
sys/arch/hp300/dev/sti_sgc.c: revision 1.1
sys/arch/hp300/stand/common/dnkbd.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.2
sys/dev/ic/stivar.h: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.21
sys/arch/hp300/conf/INSTALL: revision 1.56
sys/arch/hp300/conf/INSTALL: revision 1.58
sys/arch/hp300/stand/uboot/version: revision 1.19
sys/arch/hp300/stand/common/samachdep.h: revision 1.17
sys/arch/hp300/stand/common/clock.c: revision 1.12
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.1
sys/arch/hp300/stand/Makefile.buildboot: revision 1.34
sys/arch/hp300/conf/files.hp300: revision 1.87
Add sti at sgc framebuffer.
Ported from OpenBSD by kiyohara@.
Fix a botch on switching from apci (and dca) to MI com(4) 10 years ago.
I.e. fix apci device address per FRODO_BASE macro change
in frodoreg.h rev 1.2. Now bootloader works with serial console
on HP425e (which has only com at frodo).
Thanks to miod@openbsd for providing his 425e.
Add sti(4) at sgc screen console support. From (the late) OpenBSD/hp300.
Tested on HP9000/425e, which was sent from Miod Vallat and
demonstrated at Open Source unConference 2014 Kagawa.
Check the service switch on 425e to select apci serial console.
Taken from OpenBSD/hp300. See the following comment for details:
> * Check the service switch. On the 425e, this is a physical
> * switch, unlike other frodo-based machines, so we can use it
> * as a serial vs internal video selector, since the PROM can not
> * be configured for serial console.
Add proper RealTime Clock support for HP9000/425e.
As the OpenBSD/hp300 page says 425e doesn't have the traditional
RTC at intio (as it also lacks DCA 16550 serial at intio?),
but after a few hour investigation it turns out that
425e uses mc146818 compatible calendar clock in
the Apollo "frodo" utility chip and the frodo chip on
425e actually has the 32kHz OSC and is actually backed up
by the onboard lithium battery.
Tested on HP425e (with mcclock) and HP362 (with old rtc).
Add RTC support for HP9000/425e to bootloader too.
Also put several cleanup:
- make local functions and variables static
- use proper variable types
- some KNF
Note it turns out that extreme slowness of netboot on hp300 is
caused by the too slow access of the traditional RTC chip at intio
(i.e. netboot on 425e is so much faster than others). Oh well.
Add proper consinit(9) support for sti(4) at sgc framebuffer on hp300.
The cnattach functions for sti(4) and service switch check method
for 425e in com_frodo.c are taken from OpenBSD.
The strategy how to choose the console device in hp300_cninit() is
quite diverged from 4.4BSD and OpenBSD so it's tweaked by me.
Also put several changes in sti_sgc.c to reduce diffs from OpenBSD/hp300.
Tested on 425e and 362 (which still uses gendiofb(4), not sti(4)).
XXX: sti(4) requires uvm_km_alloc(9) and uvm_map_protect(9)
to copy and call ROM functions on the executable memory region, so
it can be called before UVM and related initializations are complete.
Probably it's time to consider about MI "deferred consinit()" API
in init_main.c (or elsewhere) for modern complicated VM system...
Also fix the apci device address in dnkbd.c as apci.c rev 1.12:
http://mail-index.netbsd.org/source-changes/2014/04/10/msg053940.html
Finally dnkbd(4) is confirmed working at least on bootloader.
Thanks again to Miod Vallat.
Make the Apollo Domain keyboard actually work.
Tested on HP9000/425e and the keyboard model A1630-82001 R2 (RX-60857-HW)
provided by Miod Vallat. Mouse support needs more work.
Pull random notes on the Apollo Domain keyboard from ancient PR/3528.
Bump versions to denote recent 425e related changes.
Probe mcclock only on 425e to avoid an extra "not configured" message.
Add and enable sti(4) at sgc in install kernels for 425e.
Tested on both serial console and framebuffer console.
(switched by the service switch on the back panel)
 1.4.96.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.5.58.1 22-Jun-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #722):

sys/fs/cd9660/cd9660_util.c: revision 1.16
sys/arch/hp300/stand/common/clock.c: revision 1.14
sys/arch/hp300/stand/common/scsireg.h: revision 1.5
sys/arch/hp300/stand/common/scsireg.h: revision 1.6
sys/arch/hp300/stand/Makefile.buildboot: revision 1.38
sys/arch/hp300/include/bus.h: revision 1.23
sys/arch/hp300/stand/Makefile.buildboot: revision 1.39
sys/arch/hp300/stand/common/sd.c: revision 1.12
sys/arch/hp300/stand/common/prf.c: revision 1.6
sys/arch/hp300/stand/common/sd.c: revision 1.13
usr.sbin/installboot/installboot.8: revision 1.106
usr.sbin/installboot/Makefile: revision 1.59
sys/arch/hp300/stand/common/devopen.c: revision 1.14
usr.sbin/installboot/installboot.8: revision 1.107
sys/arch/hp300/stand/common/ite_dumb.c: revision 1.2
sys/arch/hp300/stand/common/devopen.c: revision 1.15
usr.sbin/installboot/installboot.8: revision 1.108
sys/fs/cd9660/cd9660_extern.h: revision 1.29
usr.sbin/installboot/installboot.8: revision 1.109
tools/Makefile.nbincludes: revision 1.11 (patch)
sys/arch/hp300/dev/rboxreg.h: revision 1.3
sys/arch/hp300/stand/common/scsivar.h: revision 1.5
sys/arch/hp300/dev/dnkbd.c: revision 1.14
sys/arch/hp300/hp300/trap.c: revision 1.156
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.12
sys/arch/hp300/dev/frodoreg.h: revision 1.6
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.13
sys/arch/hp300/stand/common/ite_sti.c: revision 1.2
sys/arch/hp300/stand/common/hil.c: revision 1.15
usr.sbin/installboot/arch/hp300.c: revision 1.18
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.14
sys/arch/hp300/dev/rbox.c: revision 1.4
usr.sbin/installboot/arch/hp300.c: revision 1.19
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.15
sys/sys/bootblock.h: revision 1.59
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.16
usr.sbin/installboot/installboot.h: revision 1.44
sys/arch/hp300/stand/mkboot/volhdr.h: file removal
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.17
sys/arch/hp300/dev/hpib.c: revision 1.45
usr.sbin/installboot/installboot.h: revision 1.45
usr.sbin/installboot/cd9660.c: revision 1.1
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.18
sys/arch/hp300/dev/topcatreg.h: revision 1.3
usr.sbin/installboot/cd9660.c: revision 1.2
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.19
sys/arch/hp300/stand/inst/inst.c: revision 1.25
sys/arch/hp300/stand/uboot/Makefile: revision 1.12
sys/arch/hp300/dev/dvbox.c: revision 1.4
sys/arch/hp300/dev/dma.c: revision 1.45
sys/arch/hp300/stand/uboot/Makefile: revision 1.13
sys/arch/hp300/stand/common/rd.c: revision 1.16
sys/arch/hp300/stand/inst/Makefile: revision 1.12
distrib/hp300/cdroms/installcd/Makefile: revision 1.4
sys/arch/hp300/stand/mkboot/volhdr.h: revision 1.6
sys/arch/hp300/stand/common/machdep.c: revision 1.16
usr.sbin/installboot/fstypes.c: revision 1.14
sys/arch/hp300/hp300/machdep.c: revision 1.238
sys/arch/hp300/include/cpu.h: revision 1.73
sys/arch/hp300/dev/diofbreg.h: revision 1.4
sys/arch/hp300/stand/common/scsi.c: revision 1.12
sys/arch/hp300/stand/common/netio.c: revision 1.19
sys/arch/hp300/stand/common/scsi.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.22
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.20
sys/arch/hp300/stand/common/conf.h: revision 1.4
sys/arch/hp300/hp300/autoconf.c: revision 1.111
sys/arch/hp300/stand/common/conf.c: revision 1.15
sys/arch/hp300/stand/mkboot/Makefile: revision 1.12
sys/arch/hp300/stand/mkboot/Makefile: revision 1.13
sys/arch/hp300/hp300/autoconf.c: revision 1.114
sys/arch/hp300/dev/dcmreg.h: revision 1.11
sys/arch/hp300/dev/diofbvar.h: revision 1.4
sys/arch/hp300/dev/dcm.c: revision 1.91
sys/fs/cd9660/cd9660_util.c: revision 1.15
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.2

TAB/space cleanup.

installboot(8): formatting improvements

Use Ar foo instead of <foo>; this is mdoc.

Other formatting tweaks.
installboot(8): fix up markup

Don't overuse .Sy - when everything is highlighted, nothing is. Use
.Ic for options &c to get correct PostScript output (both are bold in
plain text).

Use Aq Ar inside .Pa, as both Pa and Ar are rendered as underscored
text in plain text output, and the distinction is lost.

Don't set examples in bold, but give them .Pp space around - they are
much easier to read this way.

Use consistent -width in FILES.
document how to use installboot on netbsd/vax.

PR/57909: Jan-Benedict Glaw: Don't include (build) timestamp when doing a
reproducible build
fix usage string, improve error handling.
add missing chunk for repro-build. fix gcc warnings.
avoid stringop truncation, fix copyright string to prevent assembler warnings.

Fix build as a tool (Jan-Benedict Glaw)

Fix integer overflow of strtol(3) for "loadpoint" address on ILP32 hosts.

This strtol(3) was introduced in rev 1.12 for PR/57909 after netbsd-10,
but it returns LONG_MAX (0x7FFFFFFF) for 0xFFF00000 on ILP32 hosts and
the wrong loadpoint causes "NOT ENOUGH MEMORY" error by the BOOTROMs
on loading uboot.lif on (at least) my 9000/360 and 9000/425t.

Misc cosmetic changes for mostly readability.
- KNF and add some newlines per blocks
- define and use proper bintobcd() macro
- make local functions and variables static

The same uboot.lif binaries are generated.

Rename ${PROGAOUT} -> ${PROGELF} to reflect reality.
Use proper signedness for the LIF file system data structures.

Ancient 4.3BSD used short and int for location, file size, file type,
and addresses etc. but all of them should be unsigned.

Also rename several variables and add comments for readability.
The LIF file system info can be found in "The HPDir Project" page:
https://www.hp9845.net/9845/projects/hpdir/
The same uboot.lif binaries are generated.

Add a preliminary CD boot support to uboot for preparation of PR/54455.
Briefly tested on mame, but not enalbed yet.

Recognize SCSI CD-ROM devices as a booted device properly.

Necessary for PR port-hp300/54455, to boot an md root root RAMDISK

kernel from CD-ROM without "WARNING: can't find match for bootdev:"
prompt.

Sync with src/sys/arch/hp300/stand/mkboot/volhdr.h rev 1.6.
https://mail-index.netbsd.org/source-changes/2024/05/07/msg151195.html

Use proper signedness for the LIF file system data structures.
mkboot should use this MI <sys/bootblock.h> and volhdr.h should
be removed soon.

Use MI <sys/bootblock.h> to refer LIF filesystem structures.
This should have been done when LIF definitions were initially added
to <sys/bootblock.h> for MI installboot(8).

Enable SUPPORT_CD on uboot.

Make cd9660_util.c usable in userland tools like installboot(8).

This was partially done for src/distrib/cdrom/macppc_installboot,
but more strict prototypes are necessary for native binary builds.

Install cd9660 related system headers for tools installboot(8) builds.

Reorder function prototypes per source files.

Add cd9660 support to search a bootloader file in the target file system.

Also add CD boot support for hp300, using a bootloader file in cd9660 fs.
This is a tool's part to close PR/54455.

HP 9000/300 machines read LIF directory entry allocated after
the LIF volume header at the top of the boot disk during bootstrap,
and a bootstrap file must be contiguously allocated on the disk
due to limitation of the LIF specification.

Current NetBSD/hp300's bootloader is larger than ~80KB so we have
to prepare a special 'boot' partition for FFS (that has only 8KB (ffsv1)
or 32KB (ffsv2) spaces) disks to put such a large bootloader.

On the other hand, on ISO9660 fs all files are allocated contiguously
so we can specify a bootloader file in the target ISO9660 directly
in the LIF directory entry.

Note we can simply use the existing "append" option to create bootable
CD ISO for hp300, but it looks some emulators (at leaset MAME) reject
such non-standard ISO files, i.e. with an appended bootloader file at
the end of the image.

Put a RAMDISK kernel and SYS_UBOOT into hp300 installcd to make it bootable.

This should finally close PR/54455.

Fix tools build errors on Cygwin.

Appease warnings on building tools/installboot on Cygwin.
 1.9 28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.8 29-Mar-2008  tsutsui branches: 1.8.2; 1.8.4;
Split device_t/softc, and misc cosmetic changes.
 1.7 11-Dec-2005  christos branches: 1.7.74;
merge ktrace-lwp.
 1.6 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.5 08-Nov-2003  tsutsui Switch DCA and APCI serial devices to use MI com(4) driver.

DCA is tested on HP362 and HP382 with serial console,
but APCI on HP4xx is not tested yet.
 1.4 04-Oct-1997  thorpej branches: 1.4.50;
Copyright assigned to The NetBSD Foundation.
 1.3 19-Jul-1997  kleink branches: 1.3.2;
Add missing `#include "locators.h"' from last commit.
 1.2 17-Jul-1997  jtk use locator defines in "locators.h" to index cf_loc[]
 1.1 12-May-1997  thorpej Add a driver for the Apollo Utility Chip (a.k.a. "frodo"), contributed
by Mike Smith <mike@pressed.spam.frisbee.net.au>, with some changes to
the autoconfiguration model and slight changes to the interrupt glue
by me.
 1.3.2.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.4.50.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.50.3 18-Sep-2004  skrll Sync with HEAD.
 1.4.50.2 03-Sep-2004  skrll Sync with HEAD
 1.4.50.1 03-Aug-2004  skrll Sync with HEAD
 1.7.74.2 02-Jun-2008  mjf Sync with HEAD.
 1.7.74.1 03-Apr-2008  mjf Sync with HEAD.
 1.8.4.1 16-May-2008  yamt sync with head.
 1.8.2.1 18-May-2008  yamt sync with head.
 1.4 27-May-2025  tsutsui Use C99 designated initializers for wscons structures.
 1.3 18-Feb-2011  tsutsui branches: 1.3.2; 1.3.6; 1.3.96;
Use aprint_normal(9) and variants.
 1.2 12-Feb-2011  tsutsui - make local functions static
- some KNF
 1.1 06-Feb-2011  tsutsui branches: 1.1.2;
Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.1.2.4 05-Mar-2011  bouyer Sync with HEAD
 1.1.2.3 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.2 08-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 06-Feb-2011  bouyer file gbox.c was added on branch bouyer-quota2 on 2011-02-08 16:19:21 +0000
 1.3.96.1 02-Aug-2025  perseant Sync with HEAD
 1.3.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.3.6.1 18-Feb-2011  jruoho file gbox.c was added on branch jruoho-x86intr on 2011-06-06 09:05:35 +0000
 1.3.2.2 05-Mar-2011  rmind sync with head
 1.3.2.1 18-Feb-2011  rmind file gbox.c was added on branch rmind-uvmplock on 2011-03-05 20:50:21 +0000
 1.2 12-Feb-2011  tsutsui branches: 1.2.2; 1.2.6;
- make local functions static
- some KNF
 1.1 06-Feb-2011  tsutsui branches: 1.1.2;
Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.1.2.3 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.2 08-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 06-Feb-2011  bouyer file gboxreg.h was added on branch bouyer-quota2 on 2011-02-08 16:19:21 +0000
 1.2.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.1 12-Feb-2011  jruoho file gboxreg.h was added on branch jruoho-x86intr on 2011-06-06 09:05:35 +0000
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 12-Feb-2011  rmind file gboxreg.h was added on branch rmind-uvmplock on 2011-03-05 20:50:21 +0000
 1.2 27-May-2025  tsutsui Use C99 designated initializers for wscons structures.
 1.1 12-Feb-2011  tsutsui branches: 1.1.2; 1.1.4; 1.1.8; 1.1.98;
Add dumb framebuffer (no acceleration, no colormap) support
for HP362 and HP382.

Tested on A1473-69510 (HP362 VGA-res) and A1474-69511 (HP382 mid-res).
 1.1.98.1 02-Aug-2025  perseant Sync with HEAD
 1.1.8.2 06-Jun-2011  jruoho Sync with HEAD.
 1.1.8.1 12-Feb-2011  jruoho file gendiofb.c was added on branch jruoho-x86intr on 2011-06-06 09:05:35 +0000
 1.1.4.2 05-Mar-2011  rmind sync with head
 1.1.4.1 12-Feb-2011  rmind file gendiofb.c was added on branch rmind-uvmplock on 2011-03-05 20:50:21 +0000
 1.1.2.2 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 12-Feb-2011  bouyer file gendiofb.c was added on branch bouyer-quota2 on 2011-02-17 11:59:39 +0000
 1.67 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.66 17-Jun-2008  he branches: 1.66.18; 1.66.24; 1.66.26;
Remove now unused local "unit" variable, so this builds again.
 1.65 13-Jun-2008  cegger use device_lookup_private to get softc
 1.64 29-Mar-2008  tsutsui branches: 1.64.2; 1.64.4; 1.64.6; 1.64.8;
Split device_t/softc, and misc cosmetic changes.
 1.63 25-Jan-2008  oster branches: 1.63.6;
Fix fallout from v_specinfo removal. hp300 builds again.
 1.62 31-Dec-2007  ad Remove COMPAT_HPUX.
 1.61 04-Mar-2007  christos branches: 1.61.20; 1.61.26; 1.61.32;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.60 21-Jul-2006  tsutsui branches: 1.60.10;
Some KNF.
 1.59 19-Jul-2006  tsutsui Define base address offsets of intio devices in intioreg.h
and replace various magic numbers with the macro.
 1.58 11-Dec-2005  christos branches: 1.58.4; 1.58.8;
merge ktrace-lwp.
 1.57 19-Feb-2005  tsutsui branches: 1.57.6;
Include "ioconf.h" for struct cfdriver *_cd decls.
 1.56 28-Aug-2004  thorpej branches: 1.56.4; 1.56.6;
Use ANSI function decls, static, and const.
 1.55 17-Nov-2003  tsutsui TAB/space cleanup.
 1.54 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.53 29-Jun-2003  fvdl branches: 1.53.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.52 29-Jun-2003  thorpej Adapt to ktrace/lwp changes.
 1.51 23-Feb-2003  he Cast the result of VM_DEFAULT_ADDRESS to caddr_t, to make this compile again.
 1.50 20-Feb-2003  atatat Introduce "top down" memory management for mmap()ed allocations. This
means that the dynamic linker gets mapped in at the top of available
user virtual memory (typically just below the stack), shared libraries
get mapped downwards from that point, and calls to mmap() that don't
specify a preferred address will get mapped in below those.

This means that the heap and the mmap()ed allocations will grow
towards each other, allowing one or the other to grow larger than
before. Previously, the heap was limited to MAXDSIZ by the placement
of the dynamic linker (and the process's rlimits) and the space
available to mmap was hobbled by this reservation.

This is currently only enabled via an *option* for the i386 platform
(though other platforms are expected to follow). Add "options
USE_TOPDOWN_VM" to your kernel config file, rerun config, and rebuild
your kernel to take advantage of this.

Note that the pmap_prefer() interface has not yet been modified to
play nicely with this, so those platforms require a bit more work
(most notably the sparc) before they can use this new memory
arrangement.

This change also introduces a VM_DEFAULT_ADDRESS() macro that picks
the appropriate default address based on the size of the allocation or
the size of the process's text segment accordingly. Several drivers
and the SYSV SHM address assignment were changed to use this instead
of each one picking their own "default".
 1.49 01-Jan-2003  thorpej Use aprint_normal() for cfprint routines.
 1.48 23-Oct-2002  jdolecek merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.47 10-Oct-2002  jdolecek replace the somewhat strange poll routine with standard nopoll() (a.k.a
seltrue())
 1.46 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.45 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.44 06-Sep-2002  gehenna Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.43 15-Mar-2002  gmcgarry branches: 1.43.4;
malloc cleanups:
- malloc+memset -> malloc with M_ZERO
- malloc -> MALLOC for fixed-sized structures
Add RCSIDs while here
 1.42 26-Dec-2001  thorpej Remove (incorrect) extern decl of emul_hpux.
 1.41 08-Dec-2001  gmcgarry bcopy -> memcpy
bzero -> memset
bcmp -> memcmp
 1.40 17-Nov-2001  gmcgarry Don't try to mmap the framebuffer as executable. Fixes MMU faults
when executing the X server.
 1.39 04-Apr-2001  tsutsui branches: 1.39.2; 1.39.4; 1.39.8;
Remove an unused variable which was caused on KERN_* error code removal.
 1.38 15-Mar-2001  chs eliminate the KERN_* error codes in favor of the traditional E* codes.
the mapping is:

KERN_SUCCESS 0
KERN_INVALID_ADDRESS EFAULT
KERN_PROTECTION_FAILURE EACCES
KERN_NO_SPACE ENOMEM
KERN_INVALID_ARGUMENT EINVAL
KERN_FAILURE various, mostly turn into KASSERTs
KERN_RESOURCE_SHORTAGE ENOMEM
KERN_NOT_RECEIVER <unused>
KERN_NO_ACCESS <unused>
KERN_PAGES_LOCKED <unused>
 1.37 29-Jun-2000  mrg branches: 1.37.2;
remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.36 26-Jun-2000  simonb Change the kernel mmap interface so that the offset to map is an
"off_t" and the return value is a "paddr_t" to allow mappings
at offsets past 2^31 bytes. Somewhat inspired by FreeBSD, which
only changed the offset to a "vm_offset_t".

Includes updates for the i386, pc532 and sh3 mmmmap from Jason Thorpe.
 1.35 22-Jun-1999  oster branches: 1.35.2; 1.35.12;
Add a '#include <sys/resourcevar.h>' to each of these to allow them
to compile again.
 1.34 18-Jun-1999  thorpej Add the guts of mlockall(MCL_FUTURE). This requires that a process's
"memlock" resource limit to uvm_mmap(). Update all calls accordingly.
 1.33 10-Apr-1999  drochner remove unneeded old-vm includes
 1.32 24-Mar-1999  mrg branches: 1.32.2;
completely remove Mach VM support. all that is left is the all the
header files as UVM still uses (most of) these.
 1.31 11-Oct-1998  chuck remove unused share map code from UVM:
- update calls to uvm_unmap_remove/uvm_unmap (mainonly boolean arg
has been removed)
 1.30 20-Aug-1998  kleink vm_offset_t -> {paddr_t,vaddr_t}, vm_size_t -> vsize_t
 1.29 25-Jun-1998  thorpej defopt COMPAT_HPUX
 1.28 16-Feb-1998  thorpej Add support for UVM.
 1.27 12-Jan-1998  thorpej Update for changes to config.
 1.26 12-Oct-1997  thorpej Remove extern declaration of devioc[].
 1.25 02-Apr-1997  scottr branches: 1.25.4;
Fix printf() and other warnings when compiled with DEBUG defined.
 1.24 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.23 30-Jan-1997  thorpej Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.22 10-Jan-1997  scottr Normally, iteon() returns an int. If NITE == 0, define iteon() to be 0.
Closes PR 3091.
 1.21 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.20 13-Oct-1996  christos backout previous kprintf changes
 1.19 11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.18 12-Sep-1996  thorpej Update for poll(2) changes.
 1.17 24-Feb-1996  thorpej Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.16 28-Nov-1995  thorpej Update a #include for the "new" location of HP-UX emulation code.
 1.15 19-Nov-1995  thorpej Cosmetically change one #include directive.
 1.14 22-Apr-1995  christos - added sunos_machdep.c for sun3, atari, amiga and mac68k.
- changed machdep.c and trap.c to use struct emul.
- remove ep_setup references.
- added struct emul to all emulations.
 1.13 10-Apr-1995  mycroft Switch grfmap and grfmmap.
 1.12 26-Oct-1994  cgd new RCS ID format.
 1.11 25-May-1994  mycroft Merge with 4.4-Lite.
 1.10 17-May-1994  cgd pass pointer to vm_map, not vm_map
 1.9 04-May-1994  mycroft HPUXCOMPAT -> COMPAT_HPUX
 1.8 04-May-1994  mycroft Update to match proc.h.
 1.7 08-Apr-1994  hpeyerl Delete MAP_FILE here too.
 1.6 10-Feb-1994  mycroft Rearrange some #includes.
 1.5 10-Feb-1994  mycroft Add arg to ioctl functions. Clean up #includes.
 1.4 12-Nov-1993  cgd new specfs.h and fifo.h locations
 1.3 06-Sep-1993  mycroft Add missing arg to vm_mmap() call in grfmmap().
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.25.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.32.2.1 15-Apr-1999  kleink branches: 1.32.2.1.2;
Pull up rev. 1.33; approved by perry.
 1.32.2.1.2.2 01-Jul-1999  thorpej Sync w/ -current.
 1.32.2.1.2.1 21-Jun-1999  thorpej Sync w/ -current.
 1.35.12.1 30-Jun-2000  simonb Pull up mmap paddr_t/off_t changes from trunk.
 1.35.2.3 21-Apr-2001  bouyer Sync with HEAD
 1.35.2.2 27-Mar-2001  bouyer Sync with HEAD.
 1.35.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.37.2.1 09-Apr-2001  nathanw Catch up with -current.
 1.39.8.12 03-Jan-2003  thorpej Sync with HEAD.
 1.39.8.11 11-Nov-2002  nathanw Catch up to -current
 1.39.8.10 18-Oct-2002  nathanw Catch up to -current.
 1.39.8.9 17-Sep-2002  nathanw Catch up to -current.
 1.39.8.8 12-Jul-2002  nathanw No longer need to pull in lwp.h; proc.h pulls it in for us.
 1.39.8.7 24-Jun-2002  nathanw Curproc->curlwp renaming.

Change uses of "curproc->l_proc" back to "curproc", which is more like the
original use. Bare uses of "curproc" are now "curlwp".

"curproc" is now #defined in proc.h as ((curlwp) ? (curlwp)->l_proc) : NULL)
so that it is always safe to reference curproc (*de*referencing curproc
is another story, but that's always been true).
 1.39.8.6 21-Jun-2002  gmcgarry typo
 1.39.8.5 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.39.8.4 08-Jan-2002  nathanw Catch up to -current.
 1.39.8.3 15-Dec-2001  gmcgarry Pull up revision 1.40 from trunk:

Don't try to mmap the framebuffer as executable. Fixes MMU faults
when executing the X server.
 1.39.8.2 18-Nov-2001  scw MD Scheduler Activation bits for HP300.
Compile-tested only.
Note: COMPAT_HPUX is not yet fully lwp'ified.
 1.39.8.1 04-Apr-2001  scw file grf.c was added on branch nathanw_sa on 2001-11-18 18:09:32 +0000
 1.39.4.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.39.2.5 10-Oct-2002  jdolecek use nokqfilter (or seltrue_kqfilter()) for drivers which provide poll
routine very similar to seltrue(); the poll routines would be cleaned
up on trunk
 1.39.2.4 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.39.2.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.39.2.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.39.2.1 12-Sep-2001  thorpej Add noop kqueue entry points.
 1.43.4.1 17-May-2002  gehenna Add device switch.
 1.53.2.6 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.53.2.5 24-Jan-2005  skrll Adapt to branch.
 1.53.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.53.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.53.2.2 03-Sep-2004  skrll Sync with HEAD
 1.53.2.1 03-Aug-2004  skrll Sync with HEAD
 1.56.6.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.56.4.1 29-Apr-2005  kent sync with -current
 1.57.6.5 04-Feb-2008  yamt sync with head.
 1.57.6.4 21-Jan-2008  yamt sync with head
 1.57.6.3 03-Sep-2007  yamt sync with head.
 1.57.6.2 30-Dec-2006  yamt sync with head.
 1.57.6.1 21-Jun-2006  yamt sync with head.
 1.58.8.1 11-Aug-2006  yamt sync with head
 1.58.4.1 09-Sep-2006  rpaulo sync with head
 1.60.10.1 12-Mar-2007  rmind Sync with HEAD.
 1.61.32.1 02-Jan-2008  bouyer Sync with HEAD
 1.61.26.1 18-Feb-2008  mjf Sync with HEAD.
 1.61.20.2 23-Mar-2008  matt sync with HEAD
 1.61.20.1 09-Jan-2008  matt sync with HEAD
 1.63.6.2 29-Jun-2008  mjf Sync with HEAD.
 1.63.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.64.8.1 18-Jun-2008  simonb Sync with head.
 1.64.6.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.64.4.1 04-May-2009  yamt sync with head.
 1.64.2.1 17-Jun-2008  yamt sync with head.
 1.66.26.1 08-Feb-2011  bouyer Sync with HEAD
 1.66.24.1 06-Jun-2011  jruoho Sync with HEAD.
 1.66.18.1 05-Mar-2011  rmind sync with head
 1.5 30-Jan-1997  thorpej Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.4 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.3 24-Feb-1996  thorpej Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.2 26-Oct-1994  cgd new RCS ID format.
 1.1 25-May-1994  mycroft Merge with 4.4-Lite.
 1.41 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.40 28-Apr-2008  martin branches: 1.40.22; 1.40.28; 1.40.30;
Remove clause 3 and 4 from TNF licenses
 1.39 29-Mar-2008  tsutsui branches: 1.39.2; 1.39.4;
Split device_t/softc, and misc cosmetic changes.
 1.38 31-Dec-2007  ad branches: 1.38.6;
Remove COMPAT_HPUX.
 1.37 04-Mar-2007  tsutsui branches: 1.37.20; 1.37.26; 1.37.32;
- use (uint8_t *) for framebuffer address
- remove unneeded casts
- misc cosmetics
 1.36 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.35 21-Jul-2006  tsutsui branches: 1.35.10;
Use bus_space_map(9) and bus_space_vaddr(9).
 1.34 21-Jul-2006  tsutsui Use more proper macro.
 1.33 21-Jul-2006  tsutsui Some KNF.
 1.32 31-May-2006  tsutsui Use a proper macro to determine I/O size for DIO-II devices.
 1.31 31-May-2006  tsutsui Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.30 11-Dec-2005  christos branches: 1.30.4; 1.30.6; 1.30.8; 1.30.14;
merge ktrace-lwp.
 1.29 02-Jan-2005  tsutsui branches: 1.29.8; 1.29.10; 1.29.18;
u_intNN_t -> uintNN_t
 1.28 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.27 08-Apr-2004  tsutsui Check mapped device VA by badaddr() in cnattach functions for framebuffers.

Now consinit() no longer hangs at least on HP425t with Topcat console.
 1.26 17-Nov-2003  tsutsui branches: 1.26.2;
TAB/space cleanup.
 1.25 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.24 01-Apr-2003  thorpej branches: 1.24.2;
Use PAGE_SIZE rather than NBPG.
 1.23 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.22 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.21 17-Mar-2002  gmcgarry branches: 1.21.6;
Don't match on trailing spaces in the module name.
 1.20 15-Mar-2002  gmcgarry Add RCSIDs.
 1.19 14-Dec-2001  gmcgarry Update hardware drivers with console attachments to the new console
attachment interface.
 1.18 08-Dec-2001  gmcgarry bcopy -> memcpy
bzero -> memset
bcmp -> memcmp
 1.17 17-Nov-2001  gmcgarry Update for new intio parent interface.
 1.16 22-Jul-2001  wiz branches: 1.16.6;
seperate -> separate
 1.15 25-Jun-1998  thorpej branches: 1.15.28;
defopt COMPAT_HPUX
 1.14 12-Jan-1998  thorpej Update for changes to config.
 1.13 11-Jan-1998  thorpej ia->ia_addr is of type `bus_addr_t'.
 1.12 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.11 31-Mar-1997  scottr branches: 1.11.4;
Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.10 30-Jan-1997  thorpej Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.9 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.8 05-Oct-1996  thorpej If console is on an ite, make sure the HIL is initialized enough for
the keyboard to work. Fixes a bug where booting with `-d' worked
only on systems using a serial console.

While I'm here, eliminate some redundancy in the ite console intialization
code.
 1.7 03-Mar-1996  thorpej Fix logic errors in new console probe code that caused framebuffers
outside of "internal i/o" space to not even have a chance at console-hood.
Fix tested by Thorsten Frueauf <frueauf@ira.uka.de>, and offered with
my sincerest apologies that the bug ever existed in the first place.
 1.6 26-Feb-1996  thorpej Avoid accidentally lowering a devices console priority.
 1.5 24-Feb-1996  thorpej Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.4 26-Oct-1994  cgd new RCS ID format.
 1.3 25-May-1994  mycroft Merge with 4.4-Lite.
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.11.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.15.28.4 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.15.28.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.15.28.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.15.28.1 03-Aug-2001  lukem update to -current
 1.16.6.4 18-Oct-2002  nathanw Catch up to -current.
 1.16.6.3 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.16.6.2 08-Jan-2002  nathanw Catch up to -current.
 1.16.6.1 22-Jul-2001  nathanw file grf_dv.c was added on branch nathanw_sa on 2002-01-08 00:24:33 +0000
 1.21.6.1 12-Apr-2004  jmc Pullup patch (requested by tsutsui in ticket #1666)

Check mapped device VA by badaddr() in cnattach functions for framebuffers.
 1.24.2.5 17-Jan-2005  skrll Sync with HEAD.
 1.24.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.24.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.24.2.2 03-Sep-2004  skrll Sync with HEAD
 1.24.2.1 03-Aug-2004  skrll Sync with HEAD
 1.26.2.2 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #10634):
sys/arch/hp300/dev/grf_rb.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_tc.c: revision 1.33 via patch
sys/arch/hp300/dev/grf_hy.c: revision 1.28 via patch
sys/arch/hp300/dev/grf_dv.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_gb.c: revision 1.30 via patch
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.26.2.1 11-Apr-2004  jmc branches: 1.26.2.1.2; 1.26.2.1.4;
Pullup rev 1.27 (requested by tsutsui in ticket #117)

Check mapped device VA by badaddr() in cnattach functions for framebuffers.
 1.26.2.1.4.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #10634):
sys/arch/hp300/dev/grf_rb.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_tc.c: revision 1.33 via patch
sys/arch/hp300/dev/grf_hy.c: revision 1.28 via patch
sys/arch/hp300/dev/grf_dv.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_gb.c: revision 1.30 via patch
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.26.2.1.2.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #10634):
sys/arch/hp300/dev/grf_rb.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_tc.c: revision 1.33 via patch
sys/arch/hp300/dev/grf_hy.c: revision 1.28 via patch
sys/arch/hp300/dev/grf_dv.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_gb.c: revision 1.30 via patch
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.29.18.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #1348):
sys/arch/hp300/dev/grf_rb.c: revision 1.31
sys/arch/hp300/dev/grf_tc.c: revision 1.33
sys/arch/hp300/dev/grf_hy.c: revision 1.28
sys/arch/hp300/dev/grf_dv.c: revision 1.31
sys/arch/hp300/dev/grf_gb.c: revision 1.30
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.29.10.4 21-Jan-2008  yamt sync with head
 1.29.10.3 03-Sep-2007  yamt sync with head.
 1.29.10.2 30-Dec-2006  yamt sync with head.
 1.29.10.1 21-Jun-2006  yamt sync with head.
 1.29.8.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #1348):
sys/arch/hp300/dev/grf_rb.c: revision 1.31
sys/arch/hp300/dev/grf_tc.c: revision 1.33
sys/arch/hp300/dev/grf_hy.c: revision 1.28
sys/arch/hp300/dev/grf_dv.c: revision 1.31
sys/arch/hp300/dev/grf_gb.c: revision 1.30
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.30.14.1 19-Jun-2006  chap Sync with head.
 1.30.8.2 11-Aug-2006  yamt sync with head
 1.30.8.1 26-Jun-2006  yamt sync with head.
 1.30.6.1 01-Jun-2006  kardel Sync with head.
 1.30.4.1 09-Sep-2006  rpaulo sync with head
 1.35.10.1 12-Mar-2007  rmind Sync with HEAD.
 1.37.32.1 02-Jan-2008  bouyer Sync with HEAD
 1.37.26.1 18-Feb-2008  mjf Sync with HEAD.
 1.37.20.1 09-Jan-2008  matt sync with HEAD
 1.38.6.2 02-Jun-2008  mjf Sync with HEAD.
 1.38.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.39.4.1 16-May-2008  yamt sync with head.
 1.39.2.1 18-May-2008  yamt sync with head.
 1.40.30.1 08-Feb-2011  bouyer Sync with HEAD
 1.40.28.1 06-Jun-2011  jruoho Sync with HEAD.
 1.40.22.1 05-Mar-2011  rmind sync with head
 1.8 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.7 11-Dec-2005  christos branches: 1.7.100; 1.7.106; 1.7.108;
merge ktrace-lwp.
 1.6 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.5 26-Oct-1994  cgd branches: 1.5.66;
new RCS ID format.
 1.4 25-May-1994  mycroft Merge with 4.4-Lite.
 1.3 08-Aug-1993  mycroft Avoid `e-' in numeric constants.
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.5.66.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.5.66.2 18-Sep-2004  skrll Sync with HEAD.
 1.5.66.1 03-Aug-2004  skrll Sync with HEAD
 1.7.108.1 08-Feb-2011  bouyer Sync with HEAD
 1.7.106.1 06-Jun-2011  jruoho Sync with HEAD.
 1.7.100.1 05-Mar-2011  rmind sync with head
 1.40 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.39 28-Apr-2008  martin branches: 1.39.22; 1.39.28; 1.39.30;
Remove clause 3 and 4 from TNF licenses
 1.38 29-Mar-2008  tsutsui branches: 1.38.2; 1.38.4;
Split device_t/softc, and misc cosmetic changes.
 1.37 31-Dec-2007  ad branches: 1.37.6;
Remove COMPAT_HPUX.
 1.36 04-Mar-2007  tsutsui branches: 1.36.20; 1.36.26; 1.36.32;
- use (uint8_t *) for framebuffer address
- remove unneeded casts
- misc cosmetics
 1.35 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.34 21-Jul-2006  tsutsui branches: 1.34.10;
Use bus_space_map(9) and bus_space_vaddr(9).
 1.33 21-Jul-2006  tsutsui Use more proper macro.
 1.32 21-Jul-2006  tsutsui Some KNF.
 1.31 31-May-2006  tsutsui Use a proper macro to determine I/O size for DIO-II devices.
 1.30 31-May-2006  tsutsui Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.29 11-Dec-2005  christos branches: 1.29.4; 1.29.6; 1.29.8; 1.29.14;
merge ktrace-lwp.
 1.28 02-Jan-2005  tsutsui branches: 1.28.8; 1.28.10; 1.28.18;
u_intNN_t -> uintNN_t
 1.27 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.26 08-Apr-2004  tsutsui Check mapped device VA by badaddr() in cnattach functions for framebuffers.

Now consinit() no longer hangs at least on HP425t with Topcat console.
 1.25 17-Nov-2003  tsutsui branches: 1.25.2;
TAB/space cleanup.
 1.24 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.23 01-Apr-2003  thorpej branches: 1.23.2;
Use PAGE_SIZE rather than NBPG.
 1.22 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.21 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.20 17-Mar-2002  gmcgarry branches: 1.20.6;
Don't match on trailing spaces in the module name.
 1.19 15-Mar-2002  gmcgarry Add RCSIDs.
 1.18 14-Dec-2001  gmcgarry Update hardware drivers with console attachments to the new console
attachment interface.
 1.17 08-Dec-2001  gmcgarry bcopy -> memcpy
bzero -> memset
bcmp -> memcmp
 1.16 17-Nov-2001  gmcgarry Update for new intio parent interface.
 1.15 25-Jun-1998  thorpej branches: 1.15.28; 1.15.32;
defopt COMPAT_HPUX
 1.14 12-Jan-1998  thorpej Update for changes to config.
 1.13 11-Jan-1998  thorpej ia->ia_addr is of type `bus_addr_t'.
 1.12 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.11 31-Mar-1997  scottr branches: 1.11.4;
Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.10 30-Jan-1997  thorpej Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.9 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.8 05-Oct-1996  thorpej If console is on an ite, make sure the HIL is initialized enough for
the keyboard to work. Fixes a bug where booting with `-d' worked
only on systems using a serial console.

While I'm here, eliminate some redundancy in the ite console intialization
code.
 1.7 03-Mar-1996  thorpej Fix logic errors in new console probe code that caused framebuffers
outside of "internal i/o" space to not even have a chance at console-hood.
Fix tested by Thorsten Frueauf <frueauf@ira.uka.de>, and offered with
my sincerest apologies that the bug ever existed in the first place.
 1.6 26-Feb-1996  thorpej Avoid accidentally lowering a devices console priority.
 1.5 24-Feb-1996  thorpej Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.4 26-Oct-1994  cgd new RCS ID format.
 1.3 25-May-1994  mycroft Merge with 4.4-Lite.
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.11.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.15.32.3 18-Oct-2002  nathanw Catch up to -current.
 1.15.32.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.15.32.1 08-Jan-2002  nathanw Catch up to -current.
 1.15.28.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.15.28.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.15.28.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.20.6.1 12-Apr-2004  jmc Pullup patch (requested by tsutsui in ticket #1666)

Check mapped device VA by badaddr() in cnattach functions for framebuffers.
 1.23.2.5 17-Jan-2005  skrll Sync with HEAD.
 1.23.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.23.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.23.2.2 03-Sep-2004  skrll Sync with HEAD
 1.23.2.1 03-Aug-2004  skrll Sync with HEAD
 1.25.2.2 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #10634):
sys/arch/hp300/dev/grf_rb.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_tc.c: revision 1.33 via patch
sys/arch/hp300/dev/grf_hy.c: revision 1.28 via patch
sys/arch/hp300/dev/grf_dv.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_gb.c: revision 1.30 via patch
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.25.2.1 11-Apr-2004  jmc branches: 1.25.2.1.2; 1.25.2.1.4;
Pullup rev 1.26 (requested by tsutsui in ticket #117)

Check mapped device VA by badaddr() in cnattach functions for framebuffers.
 1.25.2.1.4.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #10634):
sys/arch/hp300/dev/grf_rb.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_tc.c: revision 1.33 via patch
sys/arch/hp300/dev/grf_hy.c: revision 1.28 via patch
sys/arch/hp300/dev/grf_dv.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_gb.c: revision 1.30 via patch
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.25.2.1.2.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #10634):
sys/arch/hp300/dev/grf_rb.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_tc.c: revision 1.33 via patch
sys/arch/hp300/dev/grf_hy.c: revision 1.28 via patch
sys/arch/hp300/dev/grf_dv.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_gb.c: revision 1.30 via patch
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.28.18.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #1348):
sys/arch/hp300/dev/grf_rb.c: revision 1.31
sys/arch/hp300/dev/grf_tc.c: revision 1.33
sys/arch/hp300/dev/grf_hy.c: revision 1.28
sys/arch/hp300/dev/grf_dv.c: revision 1.31
sys/arch/hp300/dev/grf_gb.c: revision 1.30
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.28.10.4 21-Jan-2008  yamt sync with head
 1.28.10.3 03-Sep-2007  yamt sync with head.
 1.28.10.2 30-Dec-2006  yamt sync with head.
 1.28.10.1 21-Jun-2006  yamt sync with head.
 1.28.8.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #1348):
sys/arch/hp300/dev/grf_rb.c: revision 1.31
sys/arch/hp300/dev/grf_tc.c: revision 1.33
sys/arch/hp300/dev/grf_hy.c: revision 1.28
sys/arch/hp300/dev/grf_dv.c: revision 1.31
sys/arch/hp300/dev/grf_gb.c: revision 1.30
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.29.14.1 19-Jun-2006  chap Sync with head.
 1.29.8.2 11-Aug-2006  yamt sync with head
 1.29.8.1 26-Jun-2006  yamt sync with head.
 1.29.6.1 01-Jun-2006  kardel Sync with head.
 1.29.4.1 09-Sep-2006  rpaulo sync with head
 1.34.10.1 12-Mar-2007  rmind Sync with HEAD.
 1.36.32.1 02-Jan-2008  bouyer Sync with HEAD
 1.36.26.1 18-Feb-2008  mjf Sync with HEAD.
 1.36.20.1 09-Jan-2008  matt sync with HEAD
 1.37.6.2 02-Jun-2008  mjf Sync with HEAD.
 1.37.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.38.4.1 16-May-2008  yamt sync with head.
 1.38.2.1 18-May-2008  yamt sync with head.
 1.39.30.1 08-Feb-2011  bouyer Sync with HEAD
 1.39.28.1 06-Jun-2011  jruoho Sync with HEAD.
 1.39.22.1 05-Mar-2011  rmind sync with head
 1.7 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.6 11-Dec-2005  christos branches: 1.6.100; 1.6.106; 1.6.108;
merge ktrace-lwp.
 1.5 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.4 26-Oct-1994  cgd branches: 1.4.66;
new RCS ID format.
 1.3 25-May-1994  mycroft Merge with 4.4-Lite.
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.4.66.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.66.2 18-Sep-2004  skrll Sync with HEAD.
 1.4.66.1 03-Aug-2004  skrll Sync with HEAD
 1.6.108.1 08-Feb-2011  bouyer Sync with HEAD
 1.6.106.1 06-Jun-2011  jruoho Sync with HEAD.
 1.6.100.1 05-Mar-2011  rmind sync with head
 1.38 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.37 28-Apr-2008  martin branches: 1.37.22; 1.37.28; 1.37.30;
Remove clause 3 and 4 from TNF licenses
 1.36 29-Mar-2008  tsutsui branches: 1.36.2; 1.36.4;
Split device_t/softc, and misc cosmetic changes.
 1.35 31-Dec-2007  ad branches: 1.35.6;
Remove COMPAT_HPUX.
 1.34 04-Mar-2007  tsutsui branches: 1.34.20; 1.34.26; 1.34.32;
- use (uint8_t *) for framebuffer address
- remove unneeded casts
- misc cosmetics
 1.33 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.32 21-Jul-2006  tsutsui branches: 1.32.10;
Use bus_space_map(9) and bus_space_vaddr(9).
 1.31 21-Jul-2006  tsutsui Use more proper macro.
 1.30 21-Jul-2006  tsutsui Some KNF.
 1.29 31-May-2006  tsutsui Use a proper macro to determine I/O size for DIO-II devices.
 1.28 31-May-2006  tsutsui Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.27 19-Mar-2006  tsutsui branches: 1.27.2;
- TAB/space cleanup
- use do{}while(/*CONSTCOND*/0) for macro with multiple statements
 1.26 11-Dec-2005  christos branches: 1.26.4; 1.26.6; 1.26.8; 1.26.10; 1.26.12;
merge ktrace-lwp.
 1.25 03-Jun-2005  tsutsui branches: 1.25.2;
Make fbmem volatile to appease gcc -Wcast-qual.
 1.24 02-Jan-2005  tsutsui branches: 1.24.8; 1.24.10;
u_intNN_t -> uintNN_t
 1.23 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.22 08-Apr-2004  tsutsui Check mapped device VA by badaddr() in cnattach functions for framebuffers.

Now consinit() no longer hangs at least on HP425t with Topcat console.
 1.21 17-Nov-2003  tsutsui branches: 1.21.2;
TAB/space cleanup.
 1.20 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.19 01-Apr-2003  thorpej branches: 1.19.2;
Use PAGE_SIZE rather than NBPG.
 1.18 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.17 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.16 15-Mar-2002  gmcgarry branches: 1.16.6;
Add RCSIDs.
 1.15 14-Dec-2001  gmcgarry Update hardware drivers with console attachments to the new console
attachment interface.
 1.14 08-Dec-2001  gmcgarry bcopy -> memcpy
bzero -> memset
bcmp -> memcmp
 1.13 22-Jul-2001  wiz branches: 1.13.6;
seperate -> separate
 1.12 25-Jun-1998  thorpej branches: 1.12.28;
defopt COMPAT_HPUX
 1.11 12-Jan-1998  thorpej Update for changes to config.
 1.10 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.9 31-Mar-1997  scottr branches: 1.9.4;
Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.8 30-Jan-1997  thorpej Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.7 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.6 05-Oct-1996  thorpej If console is on an ite, make sure the HIL is initialized enough for
the keyboard to work. Fixes a bug where booting with `-d' worked
only on systems using a serial console.

While I'm here, eliminate some redundancy in the ite console intialization
code.
 1.5 03-Mar-1996  thorpej Fix logic errors in new console probe code that caused framebuffers
outside of "internal i/o" space to not even have a chance at console-hood.
Fix tested by Thorsten Frueauf <frueauf@ira.uka.de>, and offered with
my sincerest apologies that the bug ever existed in the first place.
 1.4 26-Feb-1996  thorpej Avoid accidentally lowering a devices console priority.
 1.3 24-Feb-1996  thorpej Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.2 26-Oct-1994  cgd new RCS ID format.
 1.1 25-May-1994  mycroft Merge with 4.4-Lite.
 1.9.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.12.28.4 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.12.28.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.12.28.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.12.28.1 03-Aug-2001  lukem update to -current
 1.13.6.4 18-Oct-2002  nathanw Catch up to -current.
 1.13.6.3 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.13.6.2 08-Jan-2002  nathanw Catch up to -current.
 1.13.6.1 22-Jul-2001  nathanw file grf_hy.c was added on branch nathanw_sa on 2002-01-08 00:24:33 +0000
 1.16.6.1 12-Apr-2004  jmc Pullup patch (requested by tsutsui in ticket #1666)

Check mapped device VA by badaddr() in cnattach functions for framebuffers.
 1.19.2.6 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.19.2.5 17-Jan-2005  skrll Sync with HEAD.
 1.19.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.19.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.19.2.2 03-Sep-2004  skrll Sync with HEAD
 1.19.2.1 03-Aug-2004  skrll Sync with HEAD
 1.21.2.2 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #10634):
sys/arch/hp300/dev/grf_rb.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_tc.c: revision 1.33 via patch
sys/arch/hp300/dev/grf_hy.c: revision 1.28 via patch
sys/arch/hp300/dev/grf_dv.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_gb.c: revision 1.30 via patch
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.21.2.1 11-Apr-2004  jmc branches: 1.21.2.1.2; 1.21.2.1.4;
Pullup rev 1.22 (requested by tsutsui in ticket #117)

Check mapped device VA by badaddr() in cnattach functions for framebuffers.
 1.21.2.1.4.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #10634):
sys/arch/hp300/dev/grf_rb.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_tc.c: revision 1.33 via patch
sys/arch/hp300/dev/grf_hy.c: revision 1.28 via patch
sys/arch/hp300/dev/grf_dv.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_gb.c: revision 1.30 via patch
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.21.2.1.2.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #10634):
sys/arch/hp300/dev/grf_rb.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_tc.c: revision 1.33 via patch
sys/arch/hp300/dev/grf_hy.c: revision 1.28 via patch
sys/arch/hp300/dev/grf_dv.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_gb.c: revision 1.30 via patch
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.24.10.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #1348):
sys/arch/hp300/dev/grf_rb.c: revision 1.31
sys/arch/hp300/dev/grf_tc.c: revision 1.33
sys/arch/hp300/dev/grf_hy.c: revision 1.28
sys/arch/hp300/dev/grf_dv.c: revision 1.31
sys/arch/hp300/dev/grf_gb.c: revision 1.30
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.24.8.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #1348):
sys/arch/hp300/dev/grf_rb.c: revision 1.31
sys/arch/hp300/dev/grf_tc.c: revision 1.33
sys/arch/hp300/dev/grf_hy.c: revision 1.28
sys/arch/hp300/dev/grf_dv.c: revision 1.31
sys/arch/hp300/dev/grf_gb.c: revision 1.30
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.25.2.4 21-Jan-2008  yamt sync with head
 1.25.2.3 03-Sep-2007  yamt sync with head.
 1.25.2.2 30-Dec-2006  yamt sync with head.
 1.25.2.1 21-Jun-2006  yamt sync with head.
 1.26.12.1 28-Mar-2006  tron Merge 2006-03-28 NetBSD-current into the "peter-altq" branch.
 1.26.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.26.8.3 11-Aug-2006  yamt sync with head
 1.26.8.2 26-Jun-2006  yamt sync with head.
 1.26.8.1 01-Apr-2006  yamt sync with head.
 1.26.6.2 01-Jun-2006  kardel Sync with head.
 1.26.6.1 22-Apr-2006  simonb Sync with head.
 1.26.4.1 09-Sep-2006  rpaulo sync with head
 1.27.2.1 19-Jun-2006  chap Sync with head.
 1.32.10.1 12-Mar-2007  rmind Sync with HEAD.
 1.34.32.1 02-Jan-2008  bouyer Sync with HEAD
 1.34.26.1 18-Feb-2008  mjf Sync with HEAD.
 1.34.20.1 09-Jan-2008  matt sync with HEAD
 1.35.6.2 02-Jun-2008  mjf Sync with HEAD.
 1.35.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.36.4.1 16-May-2008  yamt sync with head.
 1.36.2.1 18-May-2008  yamt sync with head.
 1.37.30.1 08-Feb-2011  bouyer Sync with HEAD
 1.37.28.1 06-Jun-2011  jruoho Sync with HEAD.
 1.37.22.1 05-Mar-2011  rmind sync with head
 1.5 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.4 11-Dec-2005  christos branches: 1.4.100; 1.4.106; 1.4.108;
merge ktrace-lwp.
 1.3 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.2 26-Oct-1994  cgd branches: 1.2.66;
new RCS ID format.
 1.1 25-May-1994  mycroft Merge with 4.4-Lite.
 1.2.66.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.2.66.2 18-Sep-2004  skrll Sync with HEAD.
 1.2.66.1 03-Aug-2004  skrll Sync with HEAD
 1.4.108.1 08-Feb-2011  bouyer Sync with HEAD
 1.4.106.1 06-Jun-2011  jruoho Sync with HEAD.
 1.4.100.1 05-Mar-2011  rmind sync with head
 1.8 30-Jan-1997  thorpej Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.7 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.6 13-Oct-1996  christos backout previous kprintf changes
 1.5 11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.4 24-Feb-1996  thorpej Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.3 02-Dec-1995  thorpej Use a "match/attach" rather than "init" scheme for probing devices.
This is a step towards getting the drivers ready for new config.
 1.2 26-Oct-1994  cgd new RCS ID format.
 1.1 25-May-1994  mycroft Merge with 4.4-Lite.
 1.42 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.41 06-Feb-2011  tsutsui RENASSIANCE -> RENAISSANCE
 1.40 28-Apr-2008  martin branches: 1.40.22; 1.40.28; 1.40.30;
Remove clause 3 and 4 from TNF licenses
 1.39 29-Mar-2008  tsutsui branches: 1.39.2; 1.39.4;
Split device_t/softc, and misc cosmetic changes.
 1.38 31-Dec-2007  ad branches: 1.38.6;
Remove COMPAT_HPUX.
 1.37 04-Mar-2007  tsutsui branches: 1.37.20; 1.37.26; 1.37.32;
- use (uint8_t *) for framebuffer address
- remove unneeded casts
- misc cosmetics
 1.36 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.35 21-Jul-2006  tsutsui branches: 1.35.10;
Use bus_space_map(9) and bus_space_vaddr(9).
 1.34 21-Jul-2006  tsutsui Use more proper macro.
 1.33 21-Jul-2006  tsutsui Some KNF.
 1.32 31-May-2006  tsutsui Use a proper macro to determine I/O size for DIO-II devices.
 1.31 31-May-2006  tsutsui Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.30 11-Dec-2005  christos branches: 1.30.4; 1.30.6; 1.30.8; 1.30.14;
merge ktrace-lwp.
 1.29 02-Jan-2005  tsutsui branches: 1.29.8; 1.29.10; 1.29.18;
u_intNN_t -> uintNN_t
 1.28 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.27 08-Apr-2004  tsutsui Check mapped device VA by badaddr() in cnattach functions for framebuffers.

Now consinit() no longer hangs at least on HP425t with Topcat console.
 1.26 17-Nov-2003  tsutsui branches: 1.26.2;
TAB/space cleanup.
 1.25 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.24 01-Apr-2003  thorpej branches: 1.24.2;
Use PAGE_SIZE rather than NBPG.
 1.23 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.22 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.21 17-Mar-2002  gmcgarry branches: 1.21.6;
Don't match on trailing spaces in the module name.
 1.20 15-Mar-2002  gmcgarry Add RCSIDs.
 1.19 14-Dec-2001  gmcgarry Update hardware drivers with console attachments to the new console
attachment interface.
 1.18 08-Dec-2001  gmcgarry bcopy -> memcpy
bzero -> memset
bcmp -> memcmp
 1.17 17-Nov-2001  gmcgarry Update for new intio parent interface.
 1.16 22-Jul-2001  wiz branches: 1.16.6;
seperate -> separate
 1.15 25-Jun-1998  thorpej branches: 1.15.28;
defopt COMPAT_HPUX
 1.14 12-Jan-1998  thorpej Update for changes to config.
 1.13 11-Jan-1998  thorpej ia->ia_addr is of type `bus_addr_t'.
 1.12 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.11 31-Mar-1997  scottr branches: 1.11.4;
Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.10 30-Jan-1997  thorpej Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.9 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.8 05-Oct-1996  thorpej If console is on an ite, make sure the HIL is initialized enough for
the keyboard to work. Fixes a bug where booting with `-d' worked
only on systems using a serial console.

While I'm here, eliminate some redundancy in the ite console intialization
code.
 1.7 03-Mar-1996  thorpej Fix logic errors in new console probe code that caused framebuffers
outside of "internal i/o" space to not even have a chance at console-hood.
Fix tested by Thorsten Frueauf <frueauf@ira.uka.de>, and offered with
my sincerest apologies that the bug ever existed in the first place.
 1.6 26-Feb-1996  thorpej Avoid accidentally lowering a devices console priority.
 1.5 24-Feb-1996  thorpej Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.4 26-Oct-1994  cgd new RCS ID format.
 1.3 25-May-1994  mycroft Merge with 4.4-Lite.
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.11.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.15.28.4 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.15.28.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.15.28.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.15.28.1 03-Aug-2001  lukem update to -current
 1.16.6.4 18-Oct-2002  nathanw Catch up to -current.
 1.16.6.3 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.16.6.2 08-Jan-2002  nathanw Catch up to -current.
 1.16.6.1 22-Jul-2001  nathanw file grf_rb.c was added on branch nathanw_sa on 2002-01-08 00:24:33 +0000
 1.21.6.1 12-Apr-2004  jmc Pullup patch (requested by tsutsui in ticket #1666)

Check mapped device VA by badaddr() in cnattach functions for framebuffers.
 1.24.2.5 17-Jan-2005  skrll Sync with HEAD.
 1.24.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.24.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.24.2.2 03-Sep-2004  skrll Sync with HEAD
 1.24.2.1 03-Aug-2004  skrll Sync with HEAD
 1.26.2.2 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #10634):
sys/arch/hp300/dev/grf_rb.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_tc.c: revision 1.33 via patch
sys/arch/hp300/dev/grf_hy.c: revision 1.28 via patch
sys/arch/hp300/dev/grf_dv.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_gb.c: revision 1.30 via patch
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.26.2.1 11-Apr-2004  jmc branches: 1.26.2.1.2; 1.26.2.1.4;
Pullup rev 1.27 (requested by tsutsui in ticket #117)

Check mapped device VA by badaddr() in cnattach functions for framebuffers.
 1.26.2.1.4.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #10634):
sys/arch/hp300/dev/grf_rb.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_tc.c: revision 1.33 via patch
sys/arch/hp300/dev/grf_hy.c: revision 1.28 via patch
sys/arch/hp300/dev/grf_dv.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_gb.c: revision 1.30 via patch
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.26.2.1.2.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #10634):
sys/arch/hp300/dev/grf_rb.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_tc.c: revision 1.33 via patch
sys/arch/hp300/dev/grf_hy.c: revision 1.28 via patch
sys/arch/hp300/dev/grf_dv.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_gb.c: revision 1.30 via patch
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.29.18.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #1348):
sys/arch/hp300/dev/grf_rb.c: revision 1.31
sys/arch/hp300/dev/grf_tc.c: revision 1.33
sys/arch/hp300/dev/grf_hy.c: revision 1.28
sys/arch/hp300/dev/grf_dv.c: revision 1.31
sys/arch/hp300/dev/grf_gb.c: revision 1.30
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.29.10.4 21-Jan-2008  yamt sync with head
 1.29.10.3 03-Sep-2007  yamt sync with head.
 1.29.10.2 30-Dec-2006  yamt sync with head.
 1.29.10.1 21-Jun-2006  yamt sync with head.
 1.29.8.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #1348):
sys/arch/hp300/dev/grf_rb.c: revision 1.31
sys/arch/hp300/dev/grf_tc.c: revision 1.33
sys/arch/hp300/dev/grf_hy.c: revision 1.28
sys/arch/hp300/dev/grf_dv.c: revision 1.31
sys/arch/hp300/dev/grf_gb.c: revision 1.30
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.30.14.1 19-Jun-2006  chap Sync with head.
 1.30.8.2 11-Aug-2006  yamt sync with head
 1.30.8.1 26-Jun-2006  yamt sync with head.
 1.30.6.1 01-Jun-2006  kardel Sync with head.
 1.30.4.1 09-Sep-2006  rpaulo sync with head
 1.35.10.1 12-Mar-2007  rmind Sync with HEAD.
 1.37.32.1 02-Jan-2008  bouyer Sync with HEAD
 1.37.26.1 18-Feb-2008  mjf Sync with HEAD.
 1.37.20.1 09-Jan-2008  matt sync with HEAD
 1.38.6.2 02-Jun-2008  mjf Sync with HEAD.
 1.38.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.39.4.1 16-May-2008  yamt sync with head.
 1.39.2.1 18-May-2008  yamt sync with head.
 1.40.30.1 08-Feb-2011  bouyer Sync with HEAD
 1.40.28.1 06-Jun-2011  jruoho Sync with HEAD.
 1.40.22.1 05-Mar-2011  rmind sync with head
 1.9 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.8 07-Mar-2007  he branches: 1.8.66; 1.8.72; 1.8.74;
Fix an instance of "void *v, x;" and cast to char* before doing
pointer arithmetic.
 1.7 11-Dec-2005  christos branches: 1.7.26;
merge ktrace-lwp.
 1.6 17-Nov-2003  tsutsui branches: 1.6.16;
TAB/space cleanup.
 1.5 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.4 26-Oct-1994  cgd branches: 1.4.66;
new RCS ID format.
 1.3 25-May-1994  mycroft Merge with 4.4-Lite.
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.4.66.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.66.2 18-Sep-2004  skrll Sync with HEAD.
 1.4.66.1 03-Aug-2004  skrll Sync with HEAD
 1.6.16.1 03-Sep-2007  yamt sync with head.
 1.7.26.1 12-Mar-2007  rmind Sync with HEAD.
 1.8.74.1 08-Feb-2011  bouyer Sync with HEAD
 1.8.72.1 06-Jun-2011  jruoho Sync with HEAD.
 1.8.66.1 05-Mar-2011  rmind sync with head
 1.18 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.17 28-Apr-2008  martin branches: 1.17.22; 1.17.28; 1.17.30;
Remove clause 3 and 4 from TNF licenses
 1.16 29-Mar-2008  tsutsui branches: 1.16.2; 1.16.4;
Split device_t/softc, and misc cosmetic changes.
 1.15 04-Mar-2007  tsutsui branches: 1.15.40;
- use (uint8_t *) for framebuffer address
- remove unneeded casts
- misc cosmetics
 1.14 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.13 19-Mar-2006  tsutsui branches: 1.13.14;
Replace MALLOC(9) with malloc(9) in non critical path.
 1.12 11-Dec-2005  christos branches: 1.12.4; 1.12.6; 1.12.8; 1.12.10; 1.12.12;
merge ktrace-lwp.
 1.11 28-Aug-2004  thorpej branches: 1.11.12;
Use ANSI function decls, static, and const.
 1.10 17-Nov-2003  tsutsui TAB/space cleanup.
 1.9 01-Jan-2003  thorpej branches: 1.9.2;
Use aprint_normal() for cfprint routines.
 1.8 15-Mar-2002  gmcgarry malloc cleanups:
- malloc+memset -> malloc with M_ZERO
- malloc -> MALLOC for fixed-sized structures
Add RCSIDs while here
 1.7 14-Dec-2001  gmcgarry Update hardware drivers with console attachments to the new console
attachment interface.
 1.6 08-Dec-2001  gmcgarry bcopy -> memcpy
bzero -> memset
bcmp -> memcmp
 1.5 09-Oct-1997  jtc branches: 1.5.30; 1.5.34;
Fix tipo inherited from old version of TNF copyright template.
 1.4 31-Mar-1997  scottr branches: 1.4.4;
Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.3 31-Jan-1997  carrel Patch from thorpej to mark non-console grf's and ite's alive.
 1.2 30-Jan-1997  thorpej Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.1 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.4.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.5.34.3 03-Jan-2003  thorpej Sync with HEAD.
 1.5.34.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.5.34.1 08-Jan-2002  nathanw Catch up to -current.
 1.5.30.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.5.30.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.9.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.9.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.9.2.2 03-Sep-2004  skrll Sync with HEAD
 1.9.2.1 03-Aug-2004  skrll Sync with HEAD
 1.11.12.2 03-Sep-2007  yamt sync with head.
 1.11.12.1 21-Jun-2006  yamt sync with head.
 1.12.12.1 28-Mar-2006  tron Merge 2006-03-28 NetBSD-current into the "peter-altq" branch.
 1.12.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.12.8.1 01-Apr-2006  yamt sync with head.
 1.12.6.1 22-Apr-2006  simonb Sync with head.
 1.12.4.1 09-Sep-2006  rpaulo sync with head
 1.13.14.1 12-Mar-2007  rmind Sync with HEAD.
 1.15.40.2 02-Jun-2008  mjf Sync with HEAD.
 1.15.40.1 03-Apr-2008  mjf Sync with HEAD.
 1.16.4.1 16-May-2008  yamt sync with head.
 1.16.2.1 18-May-2008  yamt sync with head.
 1.17.30.1 08-Feb-2011  bouyer Sync with HEAD
 1.17.28.1 06-Jun-2011  jruoho Sync with HEAD.
 1.17.22.1 05-Mar-2011  rmind sync with head
 1.43 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.42 28-Apr-2008  martin branches: 1.42.22; 1.42.28; 1.42.30;
Remove clause 3 and 4 from TNF licenses
 1.41 29-Mar-2008  tsutsui branches: 1.41.2; 1.41.4;
Split device_t/softc, and misc cosmetic changes.
 1.40 31-Dec-2007  ad branches: 1.40.6;
Remove COMPAT_HPUX.
 1.39 04-Mar-2007  tsutsui branches: 1.39.20; 1.39.26; 1.39.32;
- use (uint8_t *) for framebuffer address
- remove unneeded casts
- misc cosmetics
 1.38 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.37 21-Jul-2006  tsutsui branches: 1.37.10;
Use bus_space_map(9) and bus_space_vaddr(9).
 1.36 21-Jul-2006  tsutsui Use more proper macro.
 1.35 21-Jul-2006  tsutsui Some KNF.
 1.34 31-May-2006  tsutsui Use a proper macro to determine I/O size for DIO-II devices.
 1.33 31-May-2006  tsutsui Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.32 11-Dec-2005  christos branches: 1.32.4; 1.32.6; 1.32.8; 1.32.14;
merge ktrace-lwp.
 1.31 02-Jan-2005  tsutsui branches: 1.31.8; 1.31.10; 1.31.18;
u_intNN_t -> uintNN_t
 1.30 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.29 08-Apr-2004  tsutsui Check mapped device VA by badaddr() in cnattach functions for framebuffers.

Now consinit() no longer hangs at least on HP425t with Topcat console.
 1.28 17-Nov-2003  tsutsui branches: 1.28.2;
TAB/space cleanup.
 1.27 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.26 01-Apr-2003  thorpej branches: 1.26.2;
Use PAGE_SIZE rather than NBPG.
 1.25 28-Jan-2003  wiz unknown, not unkown. Noted by mjl.
 1.24 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.23 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.22 17-Mar-2002  gmcgarry branches: 1.22.6;
Don't match on trailing spaces in the module name.
 1.21 15-Mar-2002  gmcgarry Add RCSIDs.
 1.20 16-Dec-2001  gmcgarry When attaching as console, unmap the device on failure.
 1.19 14-Dec-2001  gmcgarry Update hardware drivers with console attachments to the new console
attachment interface.
 1.18 08-Dec-2001  gmcgarry bcopy -> memcpy
bzero -> memset
bcmp -> memcmp
 1.17 17-Nov-2001  gmcgarry Update for new intio parent interface.
 1.16 22-Jul-2001  wiz branches: 1.16.6;
seperate -> separate
 1.15 25-Jun-1998  thorpej branches: 1.15.28;
defopt COMPAT_HPUX
 1.14 12-Jan-1998  thorpej Update for changes to config.
 1.13 11-Jan-1998  thorpej ia->ia_addr is of type `bus_addr_t'.
 1.12 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.11 31-Mar-1997  scottr branches: 1.11.4;
Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.10 30-Jan-1997  thorpej Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.9 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.8 05-Oct-1996  thorpej If console is on an ite, make sure the HIL is initialized enough for
the keyboard to work. Fixes a bug where booting with `-d' worked
only on systems using a serial console.

While I'm here, eliminate some redundancy in the ite console intialization
code.
 1.7 03-Mar-1996  thorpej Fix logic errors in new console probe code that caused framebuffers
outside of "internal i/o" space to not even have a chance at console-hood.
Fix tested by Thorsten Frueauf <frueauf@ira.uka.de>, and offered with
my sincerest apologies that the bug ever existed in the first place.
 1.6 26-Feb-1996  thorpej Avoid accidentally lowering a devices console priority.
 1.5 24-Feb-1996  thorpej Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.4 26-Oct-1994  cgd new RCS ID format.
 1.3 25-May-1994  mycroft Merge with 4.4-Lite.
 1.2 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.11.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.15.28.4 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.15.28.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.15.28.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.15.28.1 03-Aug-2001  lukem update to -current
 1.16.6.4 18-Oct-2002  nathanw Catch up to -current.
 1.16.6.3 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.16.6.2 08-Jan-2002  nathanw Catch up to -current.
 1.16.6.1 22-Jul-2001  nathanw file grf_tc.c was added on branch nathanw_sa on 2002-01-08 00:24:34 +0000
 1.22.6.1 12-Apr-2004  jmc Pullup patch (requested by tsutsui in ticket #1666)

Check mapped device VA by badaddr() in cnattach functions for framebuffers.
 1.26.2.5 17-Jan-2005  skrll Sync with HEAD.
 1.26.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.26.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.26.2.2 03-Sep-2004  skrll Sync with HEAD
 1.26.2.1 03-Aug-2004  skrll Sync with HEAD
 1.28.2.2 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #10634):
sys/arch/hp300/dev/grf_rb.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_tc.c: revision 1.33 via patch
sys/arch/hp300/dev/grf_hy.c: revision 1.28 via patch
sys/arch/hp300/dev/grf_dv.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_gb.c: revision 1.30 via patch
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.28.2.1 11-Apr-2004  jmc branches: 1.28.2.1.2; 1.28.2.1.4;
Pullup rev 1.29 (requested by tsutsui in ticket #117)

Check mapped device VA by badaddr() in cnattach functions for framebuffers.
 1.28.2.1.4.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #10634):
sys/arch/hp300/dev/grf_rb.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_tc.c: revision 1.33 via patch
sys/arch/hp300/dev/grf_hy.c: revision 1.28 via patch
sys/arch/hp300/dev/grf_dv.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_gb.c: revision 1.30 via patch
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.28.2.1.2.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #10634):
sys/arch/hp300/dev/grf_rb.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_tc.c: revision 1.33 via patch
sys/arch/hp300/dev/grf_hy.c: revision 1.28 via patch
sys/arch/hp300/dev/grf_dv.c: revision 1.31 via patch
sys/arch/hp300/dev/grf_gb.c: revision 1.30 via patch
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.31.18.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #1348):
sys/arch/hp300/dev/grf_rb.c: revision 1.31
sys/arch/hp300/dev/grf_tc.c: revision 1.33
sys/arch/hp300/dev/grf_hy.c: revision 1.28
sys/arch/hp300/dev/grf_dv.c: revision 1.31
sys/arch/hp300/dev/grf_gb.c: revision 1.30
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.31.10.4 21-Jan-2008  yamt sync with head
 1.31.10.3 03-Sep-2007  yamt sync with head.
 1.31.10.2 30-Dec-2006  yamt sync with head.
 1.31.10.1 21-Jun-2006  yamt sync with head.
 1.31.8.1 04-Jun-2006  tron Pull up following revision(s) (requested by tsutsui in ticket #1348):
sys/arch/hp300/dev/grf_rb.c: revision 1.31
sys/arch/hp300/dev/grf_tc.c: revision 1.33
sys/arch/hp300/dev/grf_hy.c: revision 1.28
sys/arch/hp300/dev/grf_dv.c: revision 1.31
sys/arch/hp300/dev/grf_gb.c: revision 1.30
Check scode range for DIO-II based framebuffers correctly
in cnattach() functions.
Fixes boot failure problem on HP400t with fb console
reported by Stephan "doomwarrior" on port-hp300.
 1.32.14.1 19-Jun-2006  chap Sync with head.
 1.32.8.2 11-Aug-2006  yamt sync with head
 1.32.8.1 26-Jun-2006  yamt sync with head.
 1.32.6.1 01-Jun-2006  kardel Sync with head.
 1.32.4.1 09-Sep-2006  rpaulo sync with head
 1.37.10.1 12-Mar-2007  rmind Sync with HEAD.
 1.39.32.1 02-Jan-2008  bouyer Sync with HEAD
 1.39.26.1 18-Feb-2008  mjf Sync with HEAD.
 1.39.20.1 09-Jan-2008  matt sync with HEAD
 1.40.6.2 02-Jun-2008  mjf Sync with HEAD.
 1.40.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.41.4.1 16-May-2008  yamt sync with head.
 1.41.2.1 18-May-2008  yamt sync with head.
 1.42.30.1 08-Feb-2011  bouyer Sync with HEAD
 1.42.28.1 06-Jun-2011  jruoho Sync with HEAD.
 1.42.22.1 05-Mar-2011  rmind sync with head
 1.9 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.8 11-Dec-2005  christos branches: 1.8.100; 1.8.106; 1.8.108;
merge ktrace-lwp.
 1.7 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.6 26-Oct-1994  cgd branches: 1.6.66;
new RCS ID format.
 1.5 25-May-1994  mycroft Merge with 4.4-Lite.
 1.4 08-Aug-1993  mycroft Avoid `e-' in numeric constants.
 1.3 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.6.66.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.6.66.2 18-Sep-2004  skrll Sync with HEAD.
 1.6.66.1 03-Aug-2004  skrll Sync with HEAD
 1.8.108.1 08-Feb-2011  bouyer Sync with HEAD
 1.8.106.1 06-Jun-2011  jruoho Sync with HEAD.
 1.8.100.1 05-Mar-2011  rmind sync with head
 1.10 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.9 04-Mar-2007  tsutsui branches: 1.9.66; 1.9.72; 1.9.74;
- use (uint8_t *) for framebuffer address
- remove unneeded casts
- misc cosmetics
 1.8 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.7 11-Dec-2005  christos branches: 1.7.26;
merge ktrace-lwp.
 1.6 07-Aug-2003  agc branches: 1.6.16;
Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.5 26-Oct-1994  cgd branches: 1.5.66;
new RCS ID format.
 1.4 25-May-1994  mycroft Merge with 4.4-Lite.
 1.3 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.5.66.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.5.66.2 18-Sep-2004  skrll Sync with HEAD.
 1.5.66.1 03-Aug-2004  skrll Sync with HEAD
 1.6.16.1 03-Sep-2007  yamt sync with head.
 1.7.26.1 12-Mar-2007  rmind Sync with HEAD.
 1.9.74.1 08-Feb-2011  bouyer Sync with HEAD
 1.9.72.1 06-Jun-2011  jruoho Sync with HEAD.
 1.9.66.1 05-Mar-2011  rmind sync with head
 1.6 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.5 19-Jul-2006  tsutsui branches: 1.5.84; 1.5.90; 1.5.92;
Define base address offsets of intio devices in intioreg.h
and replace various magic numbers with the macro.
 1.4 11-Dec-2005  christos branches: 1.4.4; 1.4.8;
merge ktrace-lwp.
 1.3 07-Aug-2003  agc branches: 1.3.16;
Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.2 26-Oct-1994  cgd branches: 1.2.66;
new RCS ID format.
 1.1 25-May-1994  mycroft Merge with 4.4-Lite.
 1.2.66.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.2.66.2 18-Sep-2004  skrll Sync with HEAD.
 1.2.66.1 03-Aug-2004  skrll Sync with HEAD
 1.3.16.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.92.1 08-Feb-2011  bouyer Sync with HEAD
 1.5.90.1 06-Jun-2011  jruoho Sync with HEAD.
 1.5.84.1 05-Mar-2011  rmind sync with head
 1.25 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.24 29-Mar-2008  tsutsui branches: 1.24.26; 1.24.32; 1.24.34;
Split device_t/softc, and misc cosmetic changes.
 1.23 31-Dec-2007  ad branches: 1.23.6;
Remove COMPAT_HPUX.
 1.22 04-Mar-2007  tsutsui branches: 1.22.20; 1.22.26; 1.22.32;
- use (uint8_t *) for framebuffer address
- remove unneeded casts
- misc cosmetics
 1.21 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.20 11-Dec-2005  christos branches: 1.20.26;
merge ktrace-lwp.
 1.19 03-Jun-2005  tsutsui branches: 1.19.2;
Add a const.
 1.18 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.17 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.16 29-Jun-2003  fvdl branches: 1.16.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.15 29-Jun-2003  thorpej Adapt to ktrace/lwp changes.
 1.14 14-Dec-2001  gmcgarry Update hardware drivers with console attachments to the new console
attachment interface.
 1.13 17-Jul-2000  scottr branches: 1.13.2; 1.13.4; 1.13.8;
Correct return type of grfaddr(). From Steve Peurifoy via PR #10603.
 1.12 26-Jun-2000  simonb Change the kernel mmap interface so that the offset to map is an
"off_t" and the return value is a "paddr_t" to allow mappings
at offsets past 2^31 bytes. Somewhat inspired by FreeBSD, which
only changed the offset to a "vm_offset_t".

Includes updates for the i386, pc532 and sh3 mmmmap from Jason Thorpe.
 1.11 25-Jun-1998  thorpej branches: 1.11.14; 1.11.24;
defopt COMPAT_HPUX
 1.10 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.9 30-Jan-1997  thorpej Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.8 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.7 24-Feb-1996  thorpej Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.6 28-Mar-1995  jtc KERNEL -> _KERNEL
 1.5 26-Oct-1994  cgd new RCS ID format.
 1.4 25-May-1994  mycroft Merge with 4.4-Lite.
 1.3 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.11.24.2 22-Jul-2000  simonb Pull up rev 1.13 from scottr:
Correct return type of grfaddr(). From Steve Peurifoy via PR #10603.
 1.11.24.1 30-Jun-2000  simonb Pull up mmap paddr_t/off_t changes from trunk.
 1.11.14.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.13.8.1 08-Jan-2002  nathanw Catch up to -current.
 1.13.4.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.13.2.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.16.2.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.16.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.16.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.16.2.2 03-Sep-2004  skrll Sync with HEAD
 1.16.2.1 03-Aug-2004  skrll Sync with HEAD
 1.19.2.2 21-Jan-2008  yamt sync with head
 1.19.2.1 03-Sep-2007  yamt sync with head.
 1.20.26.1 12-Mar-2007  rmind Sync with HEAD.
 1.22.32.1 02-Jan-2008  bouyer Sync with HEAD
 1.22.26.1 18-Feb-2008  mjf Sync with HEAD.
 1.22.20.1 09-Jan-2008  matt sync with HEAD
 1.23.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.24.34.1 08-Feb-2011  bouyer Sync with HEAD
 1.24.32.1 06-Jun-2011  jruoho Sync with HEAD.
 1.24.26.1 05-Mar-2011  rmind sync with head
 1.84 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.83 21-Nov-2009  rmind branches: 1.83.4; 1.83.6; 1.83.8;
Use lwp_getpcb() on hppa and ia64, clean from struct user usage.
 1.82 13-Jun-2008  cegger use device_lookup_private to get softc
 1.81 29-Mar-2008  tsutsui branches: 1.81.2; 1.81.4; 1.81.6; 1.81.8;
Split device_t/softc, and misc cosmetic changes.
 1.80 01-Mar-2008  rmind Welcome to 4.99.55:

- Add a lot of missing selinit() and seldestroy() calls.

- Merge selwakeup() and selnotify() calls into a single selnotify().

- Add an additional 'events' argument to selnotify() call. It will
indicate which event (POLL_IN, POLL_OUT, etc) happen. If unknown,
zero may be used.

Note: please pass appropriate value of 'events' where possible.
Proposed on: <tech-kern>
 1.79 31-Dec-2007  ad branches: 1.79.2; 1.79.6;
Remove COMPAT_HPUX.
 1.78 17-Oct-2007  garbled branches: 1.78.2; 1.78.8;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.77 30-Sep-2007  tsutsui Make this compile with #ifdef DEBUG.
 1.76 04-Mar-2007  tsutsui branches: 1.76.2; 1.76.10; 1.76.18; 1.76.20; 1.76.22;
Use appropriate temporary variables to handle pointer passed via (void *).
 1.75 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.74 22-Feb-2007  thorpej TRUE -> true, FALSE -> false
 1.73 09-Sep-2006  tsutsui branches: 1.73.6;
Use microtime(9), rather than copying time directly.
 1.72 23-Jul-2006  ad branches: 1.72.4;
Use the LWP cached credentials where sane.
 1.71 21-Jul-2006  tsutsui Some KNF.
 1.70 15-May-2006  yamt include kauth.h for kauth_cred_geteuid.
 1.69 14-May-2006  elad integrate kauth.
 1.68 26-Mar-2006  tsutsui Make this compile with options DEBUG.
 1.67 19-Mar-2006  tsutsui TAB/space cleanup.
 1.66 11-Dec-2005  christos branches: 1.66.4; 1.66.6; 1.66.8; 1.66.10; 1.66.12;
merge ktrace-lwp.
 1.65 19-Feb-2005  tsutsui branches: 1.65.6;
Include "ioconf.h" for struct cfdriver *_cd decls.
 1.64 28-Aug-2004  thorpej branches: 1.64.4; 1.64.6;
Use ANSI function decls, static, and const.
 1.63 10-Apr-2004  tsutsui "extern char *us_keymap" is not equivalent with "extern char us_keymap[]"
in prototype declarations.
Now hilkbdcngetc() works on "unknown" keyboards with proper default map.
 1.62 09-Apr-2004  tsutsui Include "ite.h" before the first reference of NITE.
Fixes panic with unknown type keyboards (including JP one).
 1.61 17-Nov-2003  tsutsui branches: 1.61.2;
TAB/space cleanup.
 1.60 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.59 29-Jun-2003  fvdl branches: 1.59.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.58 29-Jun-2003  thorpej Adapt to ktrace/lwp changes.
 1.57 01-Apr-2003  thorpej Use PAGE_SIZE rather than NBPG.
 1.56 02-Feb-2003  wiz Recognize with one i only. From miod@openbsd.
 1.55 02-Feb-2003  wiz guarantee, not guarentee. Idea from miod@openbsd.
 1.54 28-Jan-2003  wiz success, not sucess. Noted by mjl.
 1.53 26-Nov-2002  christos si_ -> sel_
 1.52 23-Oct-2002  jdolecek merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.51 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.50 06-Sep-2002  gehenna Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.49 06-Jul-2002  gmcgarry Fix console bell.
 1.48 17-Mar-2002  gmcgarry branches: 1.48.4; 1.48.6;
Don't match on trailing spaces in the module name.
 1.47 15-Mar-2002  gmcgarry Introduce iteinstallkeymap() which allows the keyboard driver to
register its keymap with ite. Add RCSIDs while here.
 1.46 23-Feb-2002  gmcgarry Make the keyboard attach printf a little less cryptic.
 1.45 14-Dec-2001  gmcgarry Update hardware drivers with console attachments to the new console
attachment interface.
 1.44 08-Dec-2001  gmcgarry bcopy -> memcpy
bzero -> memset
bcmp -> memcmp
 1.43 17-Nov-2001  gmcgarry Convert hil to standard device attachment.
 1.42 12-Apr-2001  thorpej branches: 1.42.2; 1.42.4; 1.42.8;
splimp -> splvm (XXX Time critical sections, but don't want to block
the clock).
 1.41 10-Oct-2000  he branches: 1.41.2;
Add randomness sampling from hil, sd and rd devices.
 1.40 26-Jun-2000  simonb Change the kernel mmap interface so that the offset to map is an
"off_t" and the return value is a "paddr_t" to allow mappings
at offsets past 2^31 bytes. Somewhat inspired by FreeBSD, which
only changed the offset to a "vm_offset_t".

Includes updates for the i386, pc532 and sh3 mmmmap from Jason Thorpe.
 1.39 13-Mar-2000  soren branches: 1.39.4;
Fix doubled 'the's in comments.
 1.38 13-Aug-1999  bad branches: 1.38.2;
Another sacrifice to appease egcs: wrap "if .. if .. else" in braces.
 1.37 09-Nov-1998  frueauf branches: 1.37.4;
Add braces to make egcs happy.
 1.36 25-Jun-1998  thorpej defopt COMPAT_HPUX
 1.35 16-Oct-1997  carrel Remove unneeded and incomplete includes of vm/vm_*.h
 1.34 02-Apr-1997  scottr Fix printf() and other warnings when compiled with DEBUG defined.
 1.33 01-Apr-1997  scottr Relocate some prototypes needed for COMPAT_HPUX to hilvar.h
 1.32 01-Apr-1997  scottr Relocate some prototypes needed by other MD code.
 1.31 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.30 20-Mar-1997  thorpej Correct keyboard map references in the default case. From
Klaus Klein <kleink@layla.inka.de>, PR #3361.
 1.29 14-Oct-1996  thorpej Default the HIL keyboard to "US ASCII". This should fix a bug where
an unrecognized keyboard produced garbage on keypresses in the kernel,
but worked in the boot program (which has this default). The bug is
that the keymap pointers are unitialized.
 1.28 13-Oct-1996  christos backout previous kprintf changes
 1.27 11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.26 05-Oct-1996  thorpej If console is on an ite, make sure the HIL is initialized enough for
the keyboard to work. Fixes a bug where booting with `-d' worked
only on systems using a serial console.

While I'm here, eliminate some redundancy in the ite console intialization
code.
 1.25 04-Oct-1996  thorpej Garbage-collect some now-unused PANICBUTTON code.
 1.24 12-Sep-1996  thorpej Correct a somewhat confusing typo in a comment, pointed out by
Scott Reynolds.
 1.23 12-Sep-1996  thorpej Update for poll(2) changes.
 1.22 14-Feb-1996  thorpej All interrupt routines (except the HIL; don't ask) now take a pointer
to a softc, rather than a unit number. Add a "dq_softc" member
to struct devqueue; this is a temporary measure until the
dma/controller/device callback spaghetti is untangled.

YAY! No more need for dcafastservice!

HIL: squish instances of "(void) splhil()" and "(void) spl0();".
 1.21 10-Jan-1996  thorpej Fix declaration of hilqfree(), from Daniel Hagerty <hag@wizardz.com>,
PR #1918.
 1.20 02-Dec-1995  thorpej Change "hilloop" to "hilsoftc" and make slightly more new config-friendly.
Remove all uses of curproc.
 1.19 22-Apr-1995  christos - added sunos_machdep.c for sun3, atari, amiga and mac68k.
- changed machdep.c and trap.c to use struct emul.
- remove ep_setup references.
- added struct emul to all emulations.
 1.18 10-Apr-1995  mycroft hilmap --> hilmmap
 1.17 26-Oct-1994  cgd new RCS ID format.
 1.16 25-May-1994  deraadt match char->u_char change in tty subsystem
 1.15 25-May-1994  mycroft Merge with 4.4-Lite.
 1.14 24-May-1994  mycroft MIN --> min
 1.13 04-May-1994  mycroft HPUXCOMPAT -> COMPAT_HPUX
 1.12 04-May-1994  mycroft Update to match proc.h.
 1.11 10-Apr-1994  hpeyerl Make hil input work. From <deraadt@fsa.ca>
 1.10 10-Feb-1994  mycroft Rearrange some #includes.
 1.9 10-Feb-1994  mycroft Add arg to ioctl functions. Clean up #includes.
 1.8 09-Jan-1994  mycroft Turn panic button into a debugger trap if DDB.
 1.7 08-Aug-1993  mycroft Just comment out undefined hilq_to_b (for now).
 1.6 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.5 12-Jul-1993  mycroft Change tty code to use clist interface, but with ring buffer implementation.
Also, fix a couple of bugs in tty.c and pccons.c, and some gross kluginess
in the hp300 stuff.
 1.4 07-Jul-1993  cgd changes for ring buffers vs. clists.
 1.3 22-May-1993  cgd add include of select.h if necessary for protos, or delete if extraneous
 1.2 18-May-1993  cgd make kernel select interface be one-stop shopping & clean it all up.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.37.4.1 12-Oct-2000  he Pull up revision 1.41 (requested by he):
Add randomness sampling for hil, sd and rd on the hp300 port.
 1.38.2.2 21-Apr-2001  bouyer Sync with HEAD
 1.38.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.39.4.2 18-Oct-2000  tv Pullup 1.41 [he]:
Add randomness sampling from hil, sd and rd devices.
 1.39.4.1 30-Jun-2000  simonb Pull up mmap paddr_t/off_t changes from trunk.
 1.41.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.42.8.9 11-Dec-2002  thorpej Sync with HEAD.
 1.42.8.8 11-Nov-2002  nathanw Catch up to -current
 1.42.8.7 18-Oct-2002  nathanw Catch up to -current.
 1.42.8.6 17-Sep-2002  nathanw Catch up to -current.
 1.42.8.5 01-Aug-2002  nathanw Catch up to -current.
 1.42.8.4 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.42.8.3 28-Feb-2002  nathanw Catch up to -current.
 1.42.8.2 08-Jan-2002  nathanw Catch up to -current.
 1.42.8.1 12-Apr-2001  nathanw file hil.c was added on branch nathanw_sa on 2002-01-08 00:24:34 +0000
 1.42.4.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.42.2.10 11-Oct-2002  jdolecek cosmetic XXXLUKEM comment change
 1.42.2.9 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.42.2.8 02-Oct-2002  jdolecek use (intptr_t) rathern than (u_long) to cast kn_hook pointer to dev_t
use (void *)(intptr_t) to cast dev_t to kn_hook pointer
 1.42.2.7 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.42.2.6 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.42.2.5 18-Jun-2002  jdolecek make compile
 1.42.2.4 16-Mar-2002  jdolecek Catch up with -current.
 1.42.2.3 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.42.2.2 09-Sep-2001  thorpej Oops,oversight in last.
 1.42.2.1 09-Sep-2001  thorpej Add kqueue support. Note yet compiled. Note: kqueue's semantics
mean that an HP-UX semantic can't be provided in the read filter.
Requires more attention.
 1.48.6.2 12-Apr-2004  jmc Pullup patch (requested by tsutsui in ticket #1668)

Include "ite.h" before the first reference of NITE.
Fixes panic with unknown type keyboards (including JP one).
 1.48.6.1 07-Jul-2002  lukem Pull up revision 1.49 (requested by gmcgarry in ticket #439):
Fix console bell.
 1.48.4.2 16-Jul-2002  gehenna catch up with -current.
 1.48.4.1 17-May-2002  gehenna Add device switch.
 1.59.2.6 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.59.2.5 24-Jan-2005  skrll Adapt to branch.
 1.59.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.59.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.59.2.2 03-Sep-2004  skrll Sync with HEAD
 1.59.2.1 03-Aug-2004  skrll Sync with HEAD
 1.61.2.1 11-Apr-2004  jmc Pullup rev 1.62-1.63 (requested by tsutsui in ticket #119)

Include ite.h before the first reference of NITE. Change us_keymap extern
 1.64.6.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.64.4.1 29-Apr-2005  kent sync with -current
 1.65.6.7 17-Mar-2008  yamt sync with head.
 1.65.6.6 21-Jan-2008  yamt sync with head
 1.65.6.5 27-Oct-2007  yamt sync with head.
 1.65.6.4 03-Sep-2007  yamt sync with head.
 1.65.6.3 26-Feb-2007  yamt sync with head.
 1.65.6.2 30-Dec-2006  yamt sync with head.
 1.65.6.1 21-Jun-2006  yamt sync with head.
 1.66.12.2 24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.66.12.1 28-Mar-2006  tron Merge 2006-03-28 NetBSD-current into the "peter-altq" branch.
 1.66.10.2 19-Apr-2006  elad sync with head - hopefully this will work
 1.66.10.1 08-Mar-2006  elad Adapt to kernel authorization KPI.

I expect *some* lossage here...
 1.66.8.4 14-Sep-2006  yamt sync with head.
 1.66.8.3 11-Aug-2006  yamt sync with head
 1.66.8.2 24-May-2006  yamt sync with head.
 1.66.8.1 01-Apr-2006  yamt sync with head.
 1.66.6.2 01-Jun-2006  kardel Sync with head.
 1.66.6.1 22-Apr-2006  simonb Sync with head.
 1.66.4.1 09-Sep-2006  rpaulo sync with head
 1.72.4.1 18-Nov-2006  ad Sync with head.
 1.73.6.2 12-Mar-2007  rmind Sync with HEAD.
 1.73.6.1 27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.76.22.1 06-Oct-2007  yamt sync with head.
 1.76.20.3 23-Mar-2008  matt sync with HEAD
 1.76.20.2 09-Jan-2008  matt sync with HEAD
 1.76.20.1 06-Nov-2007  matt sync with HEAD
 1.76.18.1 02-Oct-2007  joerg Sync with HEAD.
 1.76.10.1 03-Oct-2007  garbled Sync with HEAD
 1.76.2.1 09-Oct-2007  ad Sync with head.
 1.78.8.1 02-Jan-2008  bouyer Sync with HEAD
 1.78.2.1 18-Feb-2008  mjf Sync with HEAD.
 1.79.6.2 29-Jun-2008  mjf Sync with HEAD.
 1.79.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.79.2.1 24-Mar-2008  keiichi sync with head.
 1.81.8.1 18-Jun-2008  simonb Sync with head.
 1.81.6.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.81.4.2 11-Mar-2010  yamt sync with head
 1.81.4.1 04-May-2009  yamt sync with head.
 1.81.2.1 17-Jun-2008  yamt sync with head.
 1.83.8.1 08-Feb-2011  bouyer Sync with HEAD
 1.83.6.1 06-Jun-2011  jruoho Sync with HEAD.
 1.83.4.1 05-Mar-2011  rmind sync with head
 1.5 16-Jan-2024  thorpej Several years ago, the interrupt priority levels for devices were "flattened"
such that IPL_BIO, IPL_NET, and IPL_TTY (logical interrupt priority levels)
became aliases of IPL_VM (the logical interrupt priority level above which
memory allocation is not allowed). Unfortuantely, this meant that any
use of these logical interrupt priority levels to differentiate between
different interrupt service routines at the same auto-vectored interrupt
level was pointless... "when everyone is special, no one is".

Before this flattening happened, these distinct logical interrupt priority
levels levels were dynamically mapped to physical auto-vectored interrupt
levels based on which types of devices registered themselves at which auto-
vectored level. Now, splbio(), splnet(), etc. are all equivalent to splvm(),
which effectively blocks all device interrupts.

Switch to using the ISRPRI_* values provided by the common m68k interrupt
dispatch code, which allows interrupt handlers for devices that are more
latency-sensitive to be sorted earlier in the list of handlers at a given
auto-vectored interrupt level, as was originally intended.
 1.4 26-Dec-2020  tsutsui Fix a longstanding bug in hilkbd (and dnkbd) console attachment.

cn_tab->cn_dev is initialized in wsdisplay_emul_attach()
(but not in wsdiaplay_cnattach()) so it cannot be used
when hil(4) is attached before wsdisplay(4) is attached.
Instead, use exported wsdisplay_cnputc() that is actually
set in early wsdisplay_cnattach().

Now we can use ddb and RB_ASKNAME via HIL keyboard console.
Should be pulleld up to netbsd-8 and netbsd-9.
 1.3 19-Feb-2011  tsutsui branches: 1.3.2; 1.3.6; 1.3.52; 1.3.64; 1.3.72;
Actually check that the configured console device is a wsdisplay.
 1.2 19-Feb-2011  tsutsui - make local functions static
- use aprint_erorr(9)
- some KNF
 1.1 06-Feb-2011  tsutsui branches: 1.1.2;
Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.1.2.3 05-Mar-2011  bouyer Sync with HEAD
 1.1.2.2 08-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 06-Feb-2011  bouyer file hil_intio.c was added on branch bouyer-quota2 on 2011-02-08 16:19:21 +0000
 1.3.72.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.3.64.1 28-Dec-2020  martin Pull up following revision(s) (requested by tsutsui in ticket #1161):

sys/arch/hp300/dev/dnkbd.c: revision 1.11
sys/arch/hp300/dev/hil_intio.c: revision 1.4

Fix a longstanding bug in hilkbd (and dnkbd) console attachment.
cn_tab->cn_dev is initialized in wsdisplay_emul_attach()
(but not in wsdiaplay_cnattach()) so it cannot be used
when hil(4) is attached before wsdisplay(4) is attached.

Instead, use exported wsdisplay_cnputc() that is actually
set in early wsdisplay_cnattach().

Now we can use ddb and RB_ASKNAME via HIL keyboard console.

Should be pulleld up to netbsd-8 and netbsd-9.
 1.3.52.1 28-Dec-2020  martin Pull up following revision(s) (requested by tsutsui in ticket #1642):

sys/arch/hp300/dev/dnkbd.c: revision 1.11
sys/arch/hp300/dev/hil_intio.c: revision 1.4

Fix a longstanding bug in hilkbd (and dnkbd) console attachment.
cn_tab->cn_dev is initialized in wsdisplay_emul_attach()
(but not in wsdiaplay_cnattach()) so it cannot be used
when hil(4) is attached before wsdisplay(4) is attached.

Instead, use exported wsdisplay_cnputc() that is actually
set in early wsdisplay_cnattach().

Now we can use ddb and RB_ASKNAME via HIL keyboard console.

Should be pulleld up to netbsd-8 and netbsd-9.
 1.3.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.3.6.1 19-Feb-2011  jruoho file hil_intio.c was added on branch jruoho-x86intr on 2011-06-06 09:05:36 +0000
 1.3.2.2 05-Mar-2011  rmind sync with head
 1.3.2.1 19-Feb-2011  rmind file hil_intio.c was added on branch rmind-uvmplock on 2011-03-05 20:50:22 +0000
 1.15 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.14 11-Dec-2005  christos branches: 1.14.100; 1.14.106; 1.14.108;
merge ktrace-lwp.
 1.13 02-Jun-2005  tsutsui Add const.
 1.12 31-May-2004  tsutsui Fix usage of NULL, '\0' and "" again.
 1.11 17-Nov-2003  tsutsui TAB/space cleanup.
 1.10 26-Oct-2003  tsutsui Replace (a bunch of) NULL with '\0'. (we should define NUL?)
 1.9 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.8 15-Mar-2002  gmcgarry branches: 1.8.12;
Add RCSIDs.
 1.7 31-Mar-1997  scottr branches: 1.7.36; 1.7.40;
Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.6 06-Dec-1995  thorpej Keymap for the Swedish HIL keyboard, from Tomas Tengling <ltt@cd.chalmers.se>.
 1.5 26-Oct-1994  cgd new RCS ID format.
 1.4 25-May-1994  mycroft Merge with 4.4-Lite.
 1.3 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.7.40.1 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.7.36.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.8.12.4 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.8.12.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.8.12.2 18-Sep-2004  skrll Sync with HEAD.
 1.8.12.1 03-Aug-2004  skrll Sync with HEAD
 1.14.108.1 08-Feb-2011  bouyer Sync with HEAD
 1.14.106.1 06-Jun-2011  jruoho Sync with HEAD.
 1.14.100.1 05-Mar-2011  rmind sync with head
 1.10 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.9 19-Mar-2006  tsutsui branches: 1.9.88; 1.9.94; 1.9.96;
TAB/space cleanup.
 1.8 11-Dec-2005  christos branches: 1.8.4; 1.8.6; 1.8.8; 1.8.10; 1.8.12;
merge ktrace-lwp.
 1.7 07-Aug-2003  agc branches: 1.7.16;
Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.6 26-Oct-1994  cgd branches: 1.6.66;
new RCS ID format.
 1.5 25-May-1994  mycroft Somehow this got truncated by 8 bytes...
 1.4 25-May-1994  mycroft Merge with 4.4-Lite.
 1.3 02-Sep-1993  mycroft For some reason I don't understand, a change disappeared from the CVS tree.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.6.66.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.6.66.2 18-Sep-2004  skrll Sync with HEAD.
 1.6.66.1 03-Aug-2004  skrll Sync with HEAD
 1.7.16.1 21-Jun-2006  yamt sync with head.
 1.8.12.1 28-Mar-2006  tron Merge 2006-03-28 NetBSD-current into the "peter-altq" branch.
 1.8.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.8.8.1 01-Apr-2006  yamt sync with head.
 1.8.6.1 22-Apr-2006  simonb Sync with head.
 1.8.4.1 09-Sep-2006  rpaulo sync with head
 1.9.96.1 08-Feb-2011  bouyer Sync with HEAD
 1.9.94.1 06-Jun-2011  jruoho Sync with HEAD.
 1.9.88.1 05-Mar-2011  rmind sync with head
 1.10 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.9 19-Mar-2006  tsutsui branches: 1.9.88; 1.9.94; 1.9.96;
TAB/space cleanup.
 1.8 11-Dec-2005  christos branches: 1.8.4; 1.8.6; 1.8.8; 1.8.10; 1.8.12;
merge ktrace-lwp.
 1.7 07-Aug-2003  agc branches: 1.7.16;
Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.6 02-Feb-1997  thorpej branches: 1.6.60;
Definition of splhil() is in param.h now.
 1.5 26-Oct-1994  cgd new RCS ID format.
 1.4 25-May-1994  mycroft Merge with 4.4-Lite.
 1.3 02-Sep-1993  mycroft For some reason I don't understand, a change disappeared from the CVS tree.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.6.60.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.6.60.2 18-Sep-2004  skrll Sync with HEAD.
 1.6.60.1 03-Aug-2004  skrll Sync with HEAD
 1.7.16.1 21-Jun-2006  yamt sync with head.
 1.8.12.1 28-Mar-2006  tron Merge 2006-03-28 NetBSD-current into the "peter-altq" branch.
 1.8.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.8.8.1 01-Apr-2006  yamt sync with head.
 1.8.6.1 22-Apr-2006  simonb Sync with head.
 1.8.4.1 09-Sep-2006  rpaulo sync with head
 1.9.96.1 08-Feb-2011  bouyer Sync with HEAD
 1.9.94.1 06-Jun-2011  jruoho Sync with HEAD.
 1.9.88.1 05-Mar-2011  rmind sync with head
 1.26 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.25 29-Mar-2008  tsutsui branches: 1.25.26; 1.25.32; 1.25.34;
Split device_t/softc, and misc cosmetic changes.
 1.24 31-Dec-2007  ad branches: 1.24.6;
Remove COMPAT_HPUX.
 1.23 04-Mar-2007  christos branches: 1.23.20; 1.23.26; 1.23.32;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.22 22-Feb-2007  thorpej TRUE -> true, FALSE -> false
 1.21 11-Dec-2005  christos branches: 1.21.26;
merge ktrace-lwp.
 1.20 28-Aug-2004  thorpej branches: 1.20.12;
Use ANSI function decls, static, and const.
 1.19 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.18 14-Dec-2001  gmcgarry branches: 1.18.16;
Update hardware drivers with console attachments to the new console
attachment interface.
 1.17 17-Nov-2001  gmcgarry Convert hil to standard device attachment.
 1.16 10-Oct-2000  he branches: 1.16.2; 1.16.4; 1.16.8;
Add randomness sampling from hil, sd and rd devices.
 1.15 25-Jun-1998  thorpej branches: 1.15.8; 1.15.14; 1.15.24;
defopt COMPAT_HPUX
 1.14 01-Apr-1997  scottr Relocate some prototypes needed for COMPAT_HPUX to hilvar.h
 1.13 01-Apr-1997  scottr Relocate some prototypes needed by other MD code.
 1.12 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.11 11-Dec-1995  thorpej Oops ... missed this file in the last round of device changes.
 1.10 02-Dec-1995  thorpej Use a "match/attach" rather than "init" scheme for probing devices.
This is a step towards getting the drivers ready for new config.
 1.9 02-Dec-1995  thorpej Change "hilloop" to "hilsoftc" and make slightly more new config-friendly.
Remove all uses of curproc.
 1.8 26-Oct-1994  cgd new RCS ID format.
 1.7 25-May-1994  mycroft Merge with 4.4-Lite.
 1.6 10-Apr-1994  hpeyerl Make hil input work. From <deraadt@fsa.ca>
 1.5 07-Aug-1993  cgd some more ring buffer -> clist changes
 1.4 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.3 04-Jul-1993  cgd use ringb rather than clist
 1.2 18-May-1993  cgd make kernel select interface be one-stop shopping & clean it all up.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.15.24.1 18-Oct-2000  tv Pullup 1.16 [he]:
Add randomness sampling from hil, sd and rd devices.
 1.15.14.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.15.8.1 12-Oct-2000  he Pull up revision 1.16 (requested by he):
Add randomness sampling for hil, sd and rd on the hp300 port.
 1.16.8.1 08-Jan-2002  nathanw Catch up to -current.
 1.16.4.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.16.2.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.18.16.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.18.16.3 18-Sep-2004  skrll Sync with HEAD.
 1.18.16.2 03-Sep-2004  skrll Sync with HEAD
 1.18.16.1 03-Aug-2004  skrll Sync with HEAD
 1.20.12.3 21-Jan-2008  yamt sync with head
 1.20.12.2 03-Sep-2007  yamt sync with head.
 1.20.12.1 26-Feb-2007  yamt sync with head.
 1.21.26.2 12-Mar-2007  rmind Sync with HEAD.
 1.21.26.1 27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.23.32.1 02-Jan-2008  bouyer Sync with HEAD
 1.23.26.1 18-Feb-2008  mjf Sync with HEAD.
 1.23.20.1 09-Jan-2008  matt sync with HEAD
 1.24.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.25.34.1 08-Feb-2011  bouyer Sync with HEAD
 1.25.32.1 06-Jun-2011  jruoho Sync with HEAD.
 1.25.26.1 05-Mar-2011  rmind sync with head
 1.2 11-Dec-2005  christos merge ktrace-lwp.
 1.1 01-Aug-2003  tsutsui branches: 1.1.4;
Switch hp300 to MI SCSI with MI mb89352 SPC SCSI driver (at last),
and remove old hp300 MD oscsi support derived from 4.4BSD-Lite2.
 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 01-Aug-2003  skrll file hp98265reg.h was added on branch ktrace-lwp on 2004-08-03 10:34:23 +0000
 1.45 15-Jan-2023  tsutsui TAB/space cleanup.
 1.44 07-Aug-2021  thorpej branches: 1.44.6;
Merge thorpej-cfargs2.
 1.43 05-Jul-2021  tsutsui branches: 1.43.2;
Pull HP-IB probe fixes from OpenBSD/hp300.

https://marc.info/?l=openbsd-cvs&m=113217630426615&w=2
> Overhaul the way HP-IB devices are probed. We will now do an exhaustive
> probe of the (slave, punit) tuple space, since this is the only way we
> can get a dual disk or dual tape enclosure to attach two devices of the
> same kind.

This allows using multiple rd(4) disk images on the same slave emulated
by HPDisk (and probably the real 9122D with dual floppy disk drives).

Thanks to Miod Vallat for suggesting this fix.
 1.42 24-Apr-2021  thorpej branches: 1.42.2;
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.41 18-Nov-2020  thorpej branches: 1.41.2;
malloc(9) -> kmem(9)
 1.40 10-Nov-2019  chs branches: 1.40.8;
in many device attach paths, allocate memory with M_WAITOK instead of M_NOWAIT
and remove code to handle failures that can no longer happen.
 1.39 13-Oct-2012  tsutsui branches: 1.39.38; 1.39.42;
struct device * -> device_t, struct cfdata * -> cfdata_t
use device_xname() (from chs@)
 1.38 13-Jun-2008  cegger branches: 1.38.30; 1.38.40;
use device_lookup_private to get softc
 1.37 28-Apr-2008  martin branches: 1.37.2; 1.37.4;
Remove clause 3 and 4 from TNF licenses
 1.36 29-Mar-2008  tsutsui branches: 1.36.2; 1.36.4;
Split device_t/softc, and misc cosmetic changes.
 1.35 05-Dec-2007  tsutsui branches: 1.35.12;
Use queue(3) macro.
 1.34 21-Jul-2006  tsutsui branches: 1.34.32; 1.34.34; 1.34.40; 1.34.44;
Some KNF.
 1.33 28-Mar-2006  thorpej Use device_unit().
 1.32 19-Mar-2006  tsutsui Replace MALLOC(9) with malloc(9) in non critical path.
 1.31 11-Dec-2005  christos branches: 1.31.4; 1.31.6; 1.31.8; 1.31.10; 1.31.12;
merge ktrace-lwp.
 1.30 26-Aug-2005  drochner s/locdesc_t/int/g
 1.29 04-Jul-2005  drochner branches: 1.29.2;
some autoconf cleanup fallout, leftover of last week, mostly from
Havard Eidnes
 1.28 19-Feb-2005  tsutsui Include "ioconf.h" for struct cfdriver *_cd decls.
 1.27 28-Aug-2004  thorpej branches: 1.27.4; 1.27.6;
Use ANSI function decls, static, and const.
 1.26 17-Nov-2003  tsutsui TAB/space cleanup.
 1.25 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.24 01-Jan-2003  thorpej branches: 1.24.2;
Use aprint_normal() for cfprint routines.
 1.23 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.22 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.21 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.20 15-Mar-2002  gmcgarry malloc cleanups:
- malloc+memset -> malloc with M_ZERO
- malloc -> MALLOC for fixed-sized structures
Add RCSIDs while here
 1.19 12-Jan-1998  thorpej branches: 1.19.28; 1.19.32;
Update for changes to config.
 1.18 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.17 18-Jul-1997  jtk branches: 1.17.2;
remove old *_UNK style default defines, use standard names from locators.h
 1.16 27-Apr-1997  thorpej These files depend on things in <machine/hp300spu.h>
 1.15 14-Apr-1997  thorpej Remove unnecssary #include.
 1.14 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.13 30-Jan-1997  thorpej - Convert these drivers to new-style autoconfiguration. Old-style
configuration is no longer supported.
- Use a much more obvious HP-IB job queueing scheme.
 1.12 09-Dec-1996  thorpej isrlink() now returns a cookie. We're not interested in the cookie, so
cast to (void).

Call dmacomputeipl() after we've hooked up our interrupt handler.
 1.11 13-Oct-1996  christos backout previous kprintf changes
 1.10 11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.9 17-May-1996  thorpej Adjust for the new values of cpuspeed.
 1.8 14-Feb-1996  thorpej All interrupt routines (except the HIL; don't ask) now take a pointer
to a softc, rather than a unit number. Add a "dq_softc" member
to struct devqueue; this is a temporary measure until the
dma/controller/device callback spaghetti is untangled.

YAY! No more need for dcafastservice!

HIL: squish instances of "(void) splhil()" and "(void) spl0();".
 1.7 02-Dec-1995  thorpej Use a "match/attach" rather than "init" scheme for probing devices.
This is a step towards getting the drivers ready for new config.
 1.6 19-Nov-1995  thorpej Do an indirect driver a little more like an indirect driver would like to
be done. Set up a structure filled with function pointers in the
controller-specific probe routines, and jump through them, instead of
if()'ing our way though each operation.

Be a little more discriptive; print out the controller type found
during the probe in a way that's somewhat meaningful.
 1.5 07-Jan-1995  mycroft Various diffs from Mike Hibler; necessary for mt driver.
 1.4 26-Oct-1994  cgd new RCS ID format.
 1.3 23-May-1994  mycroft Merge with 4.4-Lite.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.17.2.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.19.32.3 03-Jan-2003  thorpej Sync with HEAD.
 1.19.32.2 18-Oct-2002  nathanw Catch up to -current.
 1.19.32.1 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.19.28.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.19.28.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.24.2.6 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.24.2.5 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.24.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.24.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.24.2.2 03-Sep-2004  skrll Sync with HEAD
 1.24.2.1 03-Aug-2004  skrll Sync with HEAD
 1.27.6.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.27.4.1 29-Apr-2005  kent sync with -current
 1.29.2.3 07-Dec-2007  yamt sync with head
 1.29.2.2 30-Dec-2006  yamt sync with head.
 1.29.2.1 21-Jun-2006  yamt sync with head.
 1.31.12.2 31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.31.12.1 28-Mar-2006  tron Merge 2006-03-28 NetBSD-current into the "peter-altq" branch.
 1.31.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.31.8.2 11-Aug-2006  yamt sync with head
 1.31.8.1 01-Apr-2006  yamt sync with head.
 1.31.6.1 22-Apr-2006  simonb Sync with head.
 1.31.4.1 09-Sep-2006  rpaulo sync with head
 1.34.44.1 08-Dec-2007  ad Sync with head.
 1.34.40.1 08-Dec-2007  mjf Sync with HEAD.
 1.34.34.1 09-Jan-2008  matt sync with HEAD
 1.34.32.1 09-Dec-2007  jmcneill Sync with HEAD.
 1.35.12.3 29-Jun-2008  mjf Sync with HEAD.
 1.35.12.2 02-Jun-2008  mjf Sync with HEAD.
 1.35.12.1 03-Apr-2008  mjf Sync with HEAD.
 1.36.4.2 04-May-2009  yamt sync with head.
 1.36.4.1 16-May-2008  yamt sync with head.
 1.36.2.2 17-Jun-2008  yamt sync with head.
 1.36.2.1 18-May-2008  yamt sync with head.
 1.37.4.1 18-Jun-2008  simonb Sync with head.
 1.37.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.38.40.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.38.30.1 30-Oct-2012  yamt sync with head
 1.39.42.1 14-Jul-2021  martin Pull up following revision(s) (requested by tsutsui in ticket #1323):

sys/arch/hp300/dev/rd.c: revision 1.109
sys/arch/hp300/stand/Makefile.buildboot: revision 1.37
sys/arch/hp300/stand/common/ct.c: revision 1.8
sys/arch/hp300/dev/hpibvar.h: revision 1.22
sys/arch/hp300/dev/ct.c: revision 1.62
sys/arch/hp300/dev/hpibvar.h: revision 1.23
sys/arch/hp300/dev/ct.c: revision 1.63
sys/arch/hp300/dev/hpibvar.h: revision 1.24
sys/arch/hp300/dev/mt.c: revision 1.55
sys/arch/hp300/dev/rdreg.h: revision 1.14
sys/arch/hp300/dev/hpib.c: revision 1.43 (via patch)
sys/arch/hp300/dev/rdreg.h: revision 1.15
sys/arch/hp300/dev/rdreg.h: revision 1.16
sys/arch/hp300/dev/rdreg.h: revision 1.17
etc/etc.hp300/MAKEDEV.conf: revision 1.15
sys/arch/hp300/stand/common/hpibvar.h: revision 1.6
sys/arch/hp300/stand/common/rd.c: revision 1.11
sys/arch/hp300/dev/ctreg.h: revision 1.11
sys/arch/hp300/dev/rdvar.h: revision 1.24
sys/arch/hp300/dev/rdvar.h: revision 1.25
sys/arch/hp300/dev/rdvar.h: revision 1.26
sys/arch/hp300/dev/rd.c: revision 1.103
sys/arch/hp300/dev/rd.c: revision 1.104
sys/arch/hp300/dev/rd.c: revision 1.105
sys/arch/hp300/dev/rd.c: revision 1.106
sys/arch/hp300/dev/rd.c: revision 1.107
sys/arch/hp300/dev/rd.c: revision 1.108

Consistently use #define<tab> here.

Consistently use #define<tab> as rdreg.h.

No need to bother to use aprint_debug(9) inside #ifdef DEBUG block.

Pull HP-IB probe fixes from OpenBSD/hp300.
https://marc.info/?l=openbsd-cvs&m=113217630426615&w=2

Overhaul the way HP-IB devices are probed. We will now do an exhaustive
probe of the (slave, punit) tuple space, since this is the only way we
can get a dual disk or dual tape enclosure to attach two devices of the
same kind.

This allows using multiple rd(4) disk images on the same slave emulated
by HPDisk (and probably the real 9122D with dual floppy disk drives).

Thanks to Miod Vallat for suggesting this fix.

Move attach messages from common rdident() to explicit rdattach().

Cleanup duplicated CS/80 indentify structures. From OpenBSD.
https://marc.info/?l=openbsd-cvs&m=113227249626888&w=2

Define the CS/80 identify structure only once and correctly, instead of
duplicating it in every CS/80 driver and using an hardcoded number for
its size.
No functional change.
https://marc.info/?l=openbsd-cvs&m=113273001020159&w=2

Pick HP-IB describe structures changes from main kernel code here as well.

Add support of multiple rd(4) disks on all punits for HPDisk.

Special thanks to Anders Gustafsson, the author of "HPDisk"
(GPIB disk emulator) http://www.dalton.ax/hpdisk/
for providing bare boards and improving firmwares for NetBSD/hp300.

Specify -fno-unwind-tables to shrink binaries.

Before:
text data bss dec hex filename
77902 4328 137120 219350 358d6 uboot

After:
text data bss dec hex filename
64186 4328 137120 205634 32342 uboot

Create rd3 device nodes, for HPDisk.

Add Device and drive info of 2202A, 7908A, 7911A, and 7941A.

Geometries and description info are taken from hpdrive.ini.sample
in HPDrive. Briefly tested on HPDisk.

Print rd(4) capacity and geometry info as sd(4) and wd(4) do.

Before:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 698 cylinders, 13 heads, 1116102 blocks, 512 bytes/block

After:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 544 MB, 698 cyl, 13 head, 123 sec, 512 bytes/block x 1116102 blocks
 1.39.38.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.40.8.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.41.2.6 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.41.2.5 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.41.2.4 04-Apr-2021  thorpej CFARG_SUBMATCH -> CFARG_SEARCH for the indirect configuration uses.
 1.41.2.3 03-Apr-2021  thorpej Give config_attach() the tagged variadic argument treatment and
mechanically convert all call sites.
 1.41.2.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.41.2.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.42.2.1 01-Aug-2021  thorpej Sync with HEAD.
 1.43.2.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.44.6.1 22-Jun-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #722):

sys/fs/cd9660/cd9660_util.c: revision 1.16
sys/arch/hp300/stand/common/clock.c: revision 1.14
sys/arch/hp300/stand/common/scsireg.h: revision 1.5
sys/arch/hp300/stand/common/scsireg.h: revision 1.6
sys/arch/hp300/stand/Makefile.buildboot: revision 1.38
sys/arch/hp300/include/bus.h: revision 1.23
sys/arch/hp300/stand/Makefile.buildboot: revision 1.39
sys/arch/hp300/stand/common/sd.c: revision 1.12
sys/arch/hp300/stand/common/prf.c: revision 1.6
sys/arch/hp300/stand/common/sd.c: revision 1.13
usr.sbin/installboot/installboot.8: revision 1.106
usr.sbin/installboot/Makefile: revision 1.59
sys/arch/hp300/stand/common/devopen.c: revision 1.14
usr.sbin/installboot/installboot.8: revision 1.107
sys/arch/hp300/stand/common/ite_dumb.c: revision 1.2
sys/arch/hp300/stand/common/devopen.c: revision 1.15
usr.sbin/installboot/installboot.8: revision 1.108
sys/fs/cd9660/cd9660_extern.h: revision 1.29
usr.sbin/installboot/installboot.8: revision 1.109
tools/Makefile.nbincludes: revision 1.11 (patch)
sys/arch/hp300/dev/rboxreg.h: revision 1.3
sys/arch/hp300/stand/common/scsivar.h: revision 1.5
sys/arch/hp300/dev/dnkbd.c: revision 1.14
sys/arch/hp300/hp300/trap.c: revision 1.156
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.12
sys/arch/hp300/dev/frodoreg.h: revision 1.6
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.13
sys/arch/hp300/stand/common/ite_sti.c: revision 1.2
sys/arch/hp300/stand/common/hil.c: revision 1.15
usr.sbin/installboot/arch/hp300.c: revision 1.18
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.14
sys/arch/hp300/dev/rbox.c: revision 1.4
usr.sbin/installboot/arch/hp300.c: revision 1.19
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.15
sys/sys/bootblock.h: revision 1.59
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.16
usr.sbin/installboot/installboot.h: revision 1.44
sys/arch/hp300/stand/mkboot/volhdr.h: file removal
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.17
sys/arch/hp300/dev/hpib.c: revision 1.45
usr.sbin/installboot/installboot.h: revision 1.45
usr.sbin/installboot/cd9660.c: revision 1.1
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.18
sys/arch/hp300/dev/topcatreg.h: revision 1.3
usr.sbin/installboot/cd9660.c: revision 1.2
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.19
sys/arch/hp300/stand/inst/inst.c: revision 1.25
sys/arch/hp300/stand/uboot/Makefile: revision 1.12
sys/arch/hp300/dev/dvbox.c: revision 1.4
sys/arch/hp300/dev/dma.c: revision 1.45
sys/arch/hp300/stand/uboot/Makefile: revision 1.13
sys/arch/hp300/stand/common/rd.c: revision 1.16
sys/arch/hp300/stand/inst/Makefile: revision 1.12
distrib/hp300/cdroms/installcd/Makefile: revision 1.4
sys/arch/hp300/stand/mkboot/volhdr.h: revision 1.6
sys/arch/hp300/stand/common/machdep.c: revision 1.16
usr.sbin/installboot/fstypes.c: revision 1.14
sys/arch/hp300/hp300/machdep.c: revision 1.238
sys/arch/hp300/include/cpu.h: revision 1.73
sys/arch/hp300/dev/diofbreg.h: revision 1.4
sys/arch/hp300/stand/common/scsi.c: revision 1.12
sys/arch/hp300/stand/common/netio.c: revision 1.19
sys/arch/hp300/stand/common/scsi.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.22
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.20
sys/arch/hp300/stand/common/conf.h: revision 1.4
sys/arch/hp300/hp300/autoconf.c: revision 1.111
sys/arch/hp300/stand/common/conf.c: revision 1.15
sys/arch/hp300/stand/mkboot/Makefile: revision 1.12
sys/arch/hp300/stand/mkboot/Makefile: revision 1.13
sys/arch/hp300/hp300/autoconf.c: revision 1.114
sys/arch/hp300/dev/dcmreg.h: revision 1.11
sys/arch/hp300/dev/diofbvar.h: revision 1.4
sys/arch/hp300/dev/dcm.c: revision 1.91
sys/fs/cd9660/cd9660_util.c: revision 1.15
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.2

TAB/space cleanup.

installboot(8): formatting improvements

Use Ar foo instead of <foo>; this is mdoc.

Other formatting tweaks.
installboot(8): fix up markup

Don't overuse .Sy - when everything is highlighted, nothing is. Use
.Ic for options &c to get correct PostScript output (both are bold in
plain text).

Use Aq Ar inside .Pa, as both Pa and Ar are rendered as underscored
text in plain text output, and the distinction is lost.

Don't set examples in bold, but give them .Pp space around - they are
much easier to read this way.

Use consistent -width in FILES.
document how to use installboot on netbsd/vax.

PR/57909: Jan-Benedict Glaw: Don't include (build) timestamp when doing a
reproducible build
fix usage string, improve error handling.
add missing chunk for repro-build. fix gcc warnings.
avoid stringop truncation, fix copyright string to prevent assembler warnings.

Fix build as a tool (Jan-Benedict Glaw)

Fix integer overflow of strtol(3) for "loadpoint" address on ILP32 hosts.

This strtol(3) was introduced in rev 1.12 for PR/57909 after netbsd-10,
but it returns LONG_MAX (0x7FFFFFFF) for 0xFFF00000 on ILP32 hosts and
the wrong loadpoint causes "NOT ENOUGH MEMORY" error by the BOOTROMs
on loading uboot.lif on (at least) my 9000/360 and 9000/425t.

Misc cosmetic changes for mostly readability.
- KNF and add some newlines per blocks
- define and use proper bintobcd() macro
- make local functions and variables static

The same uboot.lif binaries are generated.

Rename ${PROGAOUT} -> ${PROGELF} to reflect reality.
Use proper signedness for the LIF file system data structures.

Ancient 4.3BSD used short and int for location, file size, file type,
and addresses etc. but all of them should be unsigned.

Also rename several variables and add comments for readability.
The LIF file system info can be found in "The HPDir Project" page:
https://www.hp9845.net/9845/projects/hpdir/
The same uboot.lif binaries are generated.

Add a preliminary CD boot support to uboot for preparation of PR/54455.
Briefly tested on mame, but not enalbed yet.

Recognize SCSI CD-ROM devices as a booted device properly.

Necessary for PR port-hp300/54455, to boot an md root root RAMDISK

kernel from CD-ROM without "WARNING: can't find match for bootdev:"
prompt.

Sync with src/sys/arch/hp300/stand/mkboot/volhdr.h rev 1.6.
https://mail-index.netbsd.org/source-changes/2024/05/07/msg151195.html

Use proper signedness for the LIF file system data structures.
mkboot should use this MI <sys/bootblock.h> and volhdr.h should
be removed soon.

Use MI <sys/bootblock.h> to refer LIF filesystem structures.
This should have been done when LIF definitions were initially added
to <sys/bootblock.h> for MI installboot(8).

Enable SUPPORT_CD on uboot.

Make cd9660_util.c usable in userland tools like installboot(8).

This was partially done for src/distrib/cdrom/macppc_installboot,
but more strict prototypes are necessary for native binary builds.

Install cd9660 related system headers for tools installboot(8) builds.

Reorder function prototypes per source files.

Add cd9660 support to search a bootloader file in the target file system.

Also add CD boot support for hp300, using a bootloader file in cd9660 fs.
This is a tool's part to close PR/54455.

HP 9000/300 machines read LIF directory entry allocated after
the LIF volume header at the top of the boot disk during bootstrap,
and a bootstrap file must be contiguously allocated on the disk
due to limitation of the LIF specification.

Current NetBSD/hp300's bootloader is larger than ~80KB so we have
to prepare a special 'boot' partition for FFS (that has only 8KB (ffsv1)
or 32KB (ffsv2) spaces) disks to put such a large bootloader.

On the other hand, on ISO9660 fs all files are allocated contiguously
so we can specify a bootloader file in the target ISO9660 directly
in the LIF directory entry.

Note we can simply use the existing "append" option to create bootable
CD ISO for hp300, but it looks some emulators (at leaset MAME) reject
such non-standard ISO files, i.e. with an appended bootloader file at
the end of the image.

Put a RAMDISK kernel and SYS_UBOOT into hp300 installcd to make it bootable.

This should finally close PR/54455.

Fix tools build errors on Cygwin.

Appease warnings on building tools/installboot on Cygwin.
 1.24 09-Jul-2021  tsutsui Add support of multiple rd(4) disks on all punits for HPDisk.

Special thanks to Anders Gustafsson, the author of "HPDisk"
(GPIB disk emulator) http://www.dalton.ax/hpdisk/
for providing bare boards and improving firmwares for NetBSD/hp300.
 1.23 05-Jul-2021  tsutsui Cleanup duplicated CS/80 indentify structures. From OpenBSD.

https://marc.info/?l=openbsd-cvs&m=113227249626888&w=2
> Define the CS/80 identify structure only once and correctly, instead of
> duplicating it in every CS/80 driver and using an hardcoded number for
> its size.
> No functional change.

https://marc.info/?l=openbsd-cvs&m=113273001020159&w=2
> Pick HP-IB describe structures changes from main kernel code here as well.
 1.22 05-Jul-2021  tsutsui Pull HP-IB probe fixes from OpenBSD/hp300.

https://marc.info/?l=openbsd-cvs&m=113217630426615&w=2
> Overhaul the way HP-IB devices are probed. We will now do an exhaustive
> probe of the (slave, punit) tuple space, since this is the only way we
> can get a dual disk or dual tape enclosure to attach two devices of the
> same kind.

This allows using multiple rd(4) disk images on the same slave emulated
by HPDisk (and probably the real 9122D with dual floppy disk drives).

Thanks to Miod Vallat for suggesting this fix.
 1.21 13-Oct-2012  tsutsui branches: 1.21.42; 1.21.54;
struct device * -> device_t, struct cfdata * -> cfdata_t
use device_xname() (from chs@)
 1.20 28-Apr-2008  martin branches: 1.20.34; 1.20.44;
Remove clause 3 and 4 from TNF licenses
 1.19 29-Mar-2008  tsutsui branches: 1.19.2; 1.19.4;
Split device_t/softc, and misc cosmetic changes.
 1.18 04-Mar-2007  christos branches: 1.18.40;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.17 11-Dec-2005  christos branches: 1.17.26;
merge ktrace-lwp.
 1.16 02-Jan-2005  tsutsui branches: 1.16.10;
u_intNN_t -> uintNN_t
 1.15 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.14 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.13 04-Oct-1997  thorpej branches: 1.13.50;
Copyright assigned to The NetBSD Foundation.
 1.12 18-Jul-1997  jtk branches: 1.12.2;
remove old *_UNK style default defines, use standard names from locators.h
 1.11 17-Jul-1997  jtk use locator defines in "locators.h" to index cf_loc[]

still to be done and/or decided not to be done: replace all *UNK uses in
hpib code with the native names from locators.h
 1.10 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.9 30-Jan-1997  thorpej - Convert these drivers to new-style autoconfiguration. Old-style
configuration is no longer supported.
- Use a much more obvious HP-IB job queueing scheme.
 1.8 14-Feb-1996  thorpej All interrupt routines (except the HIL; don't ask) now take a pointer
to a softc, rather than a unit number. Add a "dq_softc" member
to struct devqueue; this is a temporary measure until the
dma/controller/device callback spaghetti is untangled.

YAY! No more need for dcafastservice!

HIL: squish instances of "(void) splhil()" and "(void) spl0();".
 1.7 19-Nov-1995  thorpej Do an indirect driver a little more like an indirect driver would like to
be done. Set up a structure filled with function pointers in the
controller-specific probe routines, and jump through them, instead of
if()'ing our way though each operation.

Be a little more discriptive; print out the controller type found
during the probe in a way that's somewhat meaningful.
 1.6 28-Mar-1995  jtc KERNEL -> _KERNEL
 1.5 07-Jan-1995  mycroft Various diffs from Mike Hibler; necessary for mt driver.
 1.4 26-Oct-1994  cgd new RCS ID format.
 1.3 23-May-1994  mycroft Merge with 4.4-Lite.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.12.2.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.13.50.5 17-Jan-2005  skrll Sync with HEAD.
 1.13.50.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.13.50.3 18-Sep-2004  skrll Sync with HEAD.
 1.13.50.2 03-Sep-2004  skrll Sync with HEAD
 1.13.50.1 03-Aug-2004  skrll Sync with HEAD
 1.16.10.1 03-Sep-2007  yamt sync with head.
 1.17.26.1 12-Mar-2007  rmind Sync with HEAD.
 1.18.40.2 02-Jun-2008  mjf Sync with HEAD.
 1.18.40.1 03-Apr-2008  mjf Sync with HEAD.
 1.19.4.1 16-May-2008  yamt sync with head.
 1.19.2.1 18-May-2008  yamt sync with head.
 1.20.44.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.20.34.1 30-Oct-2012  yamt sync with head
 1.21.54.1 01-Aug-2021  thorpej Sync with HEAD.
 1.21.42.1 14-Jul-2021  martin Pull up following revision(s) (requested by tsutsui in ticket #1323):

sys/arch/hp300/dev/rd.c: revision 1.109
sys/arch/hp300/stand/Makefile.buildboot: revision 1.37
sys/arch/hp300/stand/common/ct.c: revision 1.8
sys/arch/hp300/dev/hpibvar.h: revision 1.22
sys/arch/hp300/dev/ct.c: revision 1.62
sys/arch/hp300/dev/hpibvar.h: revision 1.23
sys/arch/hp300/dev/ct.c: revision 1.63
sys/arch/hp300/dev/hpibvar.h: revision 1.24
sys/arch/hp300/dev/mt.c: revision 1.55
sys/arch/hp300/dev/rdreg.h: revision 1.14
sys/arch/hp300/dev/hpib.c: revision 1.43 (via patch)
sys/arch/hp300/dev/rdreg.h: revision 1.15
sys/arch/hp300/dev/rdreg.h: revision 1.16
sys/arch/hp300/dev/rdreg.h: revision 1.17
etc/etc.hp300/MAKEDEV.conf: revision 1.15
sys/arch/hp300/stand/common/hpibvar.h: revision 1.6
sys/arch/hp300/stand/common/rd.c: revision 1.11
sys/arch/hp300/dev/ctreg.h: revision 1.11
sys/arch/hp300/dev/rdvar.h: revision 1.24
sys/arch/hp300/dev/rdvar.h: revision 1.25
sys/arch/hp300/dev/rdvar.h: revision 1.26
sys/arch/hp300/dev/rd.c: revision 1.103
sys/arch/hp300/dev/rd.c: revision 1.104
sys/arch/hp300/dev/rd.c: revision 1.105
sys/arch/hp300/dev/rd.c: revision 1.106
sys/arch/hp300/dev/rd.c: revision 1.107
sys/arch/hp300/dev/rd.c: revision 1.108

Consistently use #define<tab> here.

Consistently use #define<tab> as rdreg.h.

No need to bother to use aprint_debug(9) inside #ifdef DEBUG block.

Pull HP-IB probe fixes from OpenBSD/hp300.
https://marc.info/?l=openbsd-cvs&m=113217630426615&w=2

Overhaul the way HP-IB devices are probed. We will now do an exhaustive
probe of the (slave, punit) tuple space, since this is the only way we
can get a dual disk or dual tape enclosure to attach two devices of the
same kind.

This allows using multiple rd(4) disk images on the same slave emulated
by HPDisk (and probably the real 9122D with dual floppy disk drives).

Thanks to Miod Vallat for suggesting this fix.

Move attach messages from common rdident() to explicit rdattach().

Cleanup duplicated CS/80 indentify structures. From OpenBSD.
https://marc.info/?l=openbsd-cvs&m=113227249626888&w=2

Define the CS/80 identify structure only once and correctly, instead of
duplicating it in every CS/80 driver and using an hardcoded number for
its size.
No functional change.
https://marc.info/?l=openbsd-cvs&m=113273001020159&w=2

Pick HP-IB describe structures changes from main kernel code here as well.

Add support of multiple rd(4) disks on all punits for HPDisk.

Special thanks to Anders Gustafsson, the author of "HPDisk"
(GPIB disk emulator) http://www.dalton.ax/hpdisk/
for providing bare boards and improving firmwares for NetBSD/hp300.

Specify -fno-unwind-tables to shrink binaries.

Before:
text data bss dec hex filename
77902 4328 137120 219350 358d6 uboot

After:
text data bss dec hex filename
64186 4328 137120 205634 32342 uboot

Create rd3 device nodes, for HPDisk.

Add Device and drive info of 2202A, 7908A, 7911A, and 7941A.

Geometries and description info are taken from hpdrive.ini.sample
in HPDrive. Briefly tested on HPDisk.

Print rd(4) capacity and geometry info as sd(4) and wd(4) do.

Before:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 698 cylinders, 13 heads, 1116102 blocks, 512 bytes/block

After:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 544 MB, 698 cyl, 13 head, 123 sec, 512 bytes/block x 1116102 blocks
 1.4 27-May-2025  tsutsui Use C99 designated initializers for wscons structures.
 1.3 18-Feb-2011  tsutsui branches: 1.3.2; 1.3.6; 1.3.96;
Use aprint_normal(9) and variants.
 1.2 12-Feb-2011  tsutsui - make local functions static
- some KNF
 1.1 06-Feb-2011  tsutsui branches: 1.1.2;
Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.1.2.4 05-Mar-2011  bouyer Sync with HEAD
 1.1.2.3 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.2 08-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 06-Feb-2011  bouyer file hyper.c was added on branch bouyer-quota2 on 2011-02-08 16:19:21 +0000
 1.3.96.1 02-Aug-2025  perseant Sync with HEAD
 1.3.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.3.6.1 18-Feb-2011  jruoho file hyper.c was added on branch jruoho-x86intr on 2011-06-06 09:05:36 +0000
 1.3.2.2 05-Mar-2011  rmind sync with head
 1.3.2.1 18-Feb-2011  rmind file hyper.c was added on branch rmind-uvmplock on 2011-03-05 20:50:22 +0000
 1.3 06-Mar-2011  bouyer branches: 1.3.4;
merge the bouyer-quota2 branch. This adds a new on-disk format
to store disk quota usage and limits, integrated with ffs
metadata. Usage is checked by fsck_ffs (no more quotacheck)
and is covered by the WAPBL journal. Enabled with kernel
option QUOTA2 (added where QUOTA was enabled in kernel config files),
turned on with tunefs(8) on a per-filesystem
basis. mount_mfs(8) can also turn quotas on.

See http://mail-index.netbsd.org/tech-kern/2011/02/19/msg010025.html
for details.
 1.2 12-Feb-2011  tsutsui branches: 1.2.2;
- make local functions static
- some KNF
 1.1 06-Feb-2011  tsutsui branches: 1.1.2;
Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.1.2.3 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.2 08-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 06-Feb-2011  bouyer file hyperreg.h was added on branch bouyer-quota2 on 2011-02-08 16:19:21 +0000
 1.2.2.3 21-Apr-2011  rmind sync with head
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 12-Feb-2011  rmind file hyperreg.h was added on branch rmind-uvmplock on 2011-03-05 20:50:22 +0000
 1.3.4.2 06-Jun-2011  jruoho Sync with HEAD.
 1.3.4.1 06-Mar-2011  jruoho file hyperreg.h was added on branch jruoho-x86intr on 2011-06-06 09:05:36 +0000
 1.63 16-Jan-2024  thorpej Several years ago, the interrupt priority levels for devices were "flattened"
such that IPL_BIO, IPL_NET, and IPL_TTY (logical interrupt priority levels)
became aliases of IPL_VM (the logical interrupt priority level above which
memory allocation is not allowed). Unfortuantely, this meant that any
use of these logical interrupt priority levels to differentiate between
different interrupt service routines at the same auto-vectored interrupt
level was pointless... "when everyone is special, no one is".

Before this flattening happened, these distinct logical interrupt priority
levels levels were dynamically mapped to physical auto-vectored interrupt
levels based on which types of devices registered themselves at which auto-
vectored level. Now, splbio(), splnet(), etc. are all equivalent to splvm(),
which effectively blocks all device interrupts.

Switch to using the ISRPRI_* values provided by the common m68k interrupt
dispatch code, which allows interrupt handlers for devices that are more
latency-sensitive to be sorted earlier in the list of handlers at a given
auto-vectored interrupt level, as was originally intended.
 1.62 19-Jan-2010  pooka Redefine bpf linkage through an always present op vector, i.e.
#if NBPFILTER is no longer required in the client. This change
doesn't yet add support for loading bpf as a module, since drivers
can register before bpf is attached. However, callers of bpf can
now be modularized.

Dynamically loadable bpf could probably be done fairly easily with
coordination from the stub driver and the real driver by registering
attachments in the stub before the real driver is loaded and doing
a handoff. ... and I'm not going to ponder the depths of unload
here.

Tested with i386/MONOLITHIC, modified MONOLITHIC without bpf and rump.
 1.61 28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.60 04-Apr-2008  tsutsui branches: 1.60.2; 1.60.4;
Split device_t/softc for le(4) and variants and misc cosmetic changes.
 1.59 21-Jul-2006  tsutsui branches: 1.59.58;
Some KNF.
 1.58 11-Dec-2005  christos branches: 1.58.4; 1.58.8;
merge ktrace-lwp.
 1.57 02-Jan-2005  tsutsui branches: 1.57.10;
u_intNN_t -> uintNN_t
 1.56 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.55 17-Nov-2003  tsutsui TAB/space cleanup.
 1.54 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.53 24-May-2003  gmcgarry branches: 1.53.2;
Clean-up the DIO bus. Includes two main changes:

1) Pass address and ipl locators at attachment;
2) Remove hack which made the internal HP-IB controller
look like a DIO device.

The hack to allow the nhpib driver to support internal and DIO
controllers appears to be a leftover from 4.3BD where it was not
possible to have a driver attach to different busses. NetBSD has
supported bus-dependent attachments for a long time.
 1.52 20-Oct-2002  gmcgarry - merge if_levar.h into if_le.c
- de-__P(), ansify
- remove unnecessary headers
 1.51 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.50 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.49 15-Mar-2002  gmcgarry Add RCSIDs.
 1.48 30-May-2001  mrg branches: 1.48.2; 1.48.8;
use _KERNEL_OPT
 1.47 15-Aug-1998  mycroft branches: 1.47.24;
Assign my copyrights to TNF.
 1.46 21-Jul-1998  drochner adapt to LANCE driver split
 1.45 05-Jul-1998  jonathan defopt INET, NETATALK.
 1.44 11-Jan-1998  thorpej Convert the hp300 LANCE driver to use bus.h
 1.43 05-May-1997  thorpej - Use dio_intr_establish().
- Update for USELEDS changes.
 1.42 03-May-1997  mycroft Eliminate unused variable when !USELEDS.
 1.41 14-Apr-1997  thorpej Update for interrupt function and header name changes.
 1.40 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.39 17-Mar-1997  thorpej #include <net/if_media.h>
 1.38 15-Mar-1997  is New ARP system, supports IPv4 over any hardware link.

Some of the stuff (e.g., rarpd, bootpd, dhcpd etc., libsa) still will
only support Ethernet. Tcpdump itself should be ok, but libpcap needs
lot of work.

For the detailed change history, look at the commit log entries for
the is-newarp branch.
 1.37 30-Jan-1997  thorpej branches: 1.37.4;
Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.36 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.35 09-Dec-1996  thorpej isrlink() now returns a cookie. We're not interested in the cookie, so
cast to (void).
 1.34 14-Oct-1996  thorpej Set the device class on non-dull devices. This is a transitional thing.
 1.33 13-Oct-1996  christos backout previous kprintf changes
 1.32 11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.31 09-May-1996  thorpej Correct typos, PR #2382.
 1.30 07-May-1996  thorpej Make the MI LANCE driver standalone, and use cfattach to resolve
naming conflicts between bus attachments on ports that can have
multiple instances of the LANCE.

Changed struct ifnet to have a pointer to the softc of the underlying
device and a printable "external name" (name + unit number), thus eliminating
if_name and if_unit. Updated interface to (*if_watchdog)() and (*if_start)()
to take a struct ifnet *, rather than a unit number.
 1.29 22-Apr-1996  christos Add a hardware dependent initialization function lehwinit()
 1.28 18-Apr-1996  cgd change LANCE copy & zero functions' names to start with amd7990_, and
remove their 'integrate' (usually defined to be 'static') keywords.
when lance drivers are split up by attachment, more than one file will
reference the copy/zero functions (i.e. not just the file that pulls in
am7990.c... and eventually inclusion of am7990.c should go away entirely).
 1.27 14-Feb-1996  thorpej All interrupt routines (except the HIL; don't ask) now take a pointer
to a softc, rather than a unit number. Add a "dq_softc" member
to struct devqueue; this is a temporary measure until the
dma/controller/device callback spaghetti is untangled.

YAY! No more need for dcafastservice!

HIL: squish instances of "(void) splhil()" and "(void) spl0();".
 1.26 02-Jan-1996  thorpej Implement a suggestion from Charles; use a wrapper function before
leintr() to deal with das blinkenlights. Also squishes the need
for LEINTR_UNIT.
 1.25 30-Dec-1995  thorpej Fix something the switch to the MI LANCE code broke: use LE_TINT_HOOK
and LE_RINT_HOOK to blink the "LAN transmit" and "LAN receive" LEDs on
the front panels of 400-series machines iff the CPP symbol USELEDS is
defined in the kernel config file.
 1.24 10-Dec-1995  mycroft Use the MI LANCE code.
 1.23 02-Dec-1995  thorpej Use a "match/attach" rather than "init" scheme for probing devices.
This is a step towards getting the drivers ready for new config.
 1.22 04-Aug-1995  thorpej Kill bogus if_addrlist check.
 1.21 19-Apr-1995  mycroft Update for global changes.
 1.20 26-Oct-1994  cgd new RCS ID format.
 1.19 29-Sep-1994  mycroft Fix byte order problem in multicast filter calculation.
 1.18 18-Sep-1994  mycroft Add LED frobnication code, from 4.4-Lite.
 1.17 25-Jul-1994  mycroft Look for errors in the right place in a transmit descriptor, and count
collisions.
 1.16 15-Jul-1994  mycroft Fix a bogon relating to >16-bit addresses that I introduced. Fix up BPF
support for received packets.
 1.15 10-Jul-1994  mycroft Clean up a bit.
 1.14 07-Jul-1994  mycroft branches: 1.14.2;
This #endif got truncated...
 1.13 06-Jul-1994  mycroft Speed this up a bit, do multiple transmit buffers, etc.
 1.12 13-May-1994  mycroft Update to match other code.
 1.11 16-Feb-1994  mycroft Fix a couple of bogons I just created.
 1.10 16-Feb-1994  mycroft Use IFF_ALLMULTI correctly.
 1.9 14-Feb-1994  mycroft Fix some weirdness in the multicast initialization.
 1.8 06-Feb-1994  mycroft Strict prototyping and a couple of other nits.
 1.7 05-Feb-1994  mycroft Remember to set txcnt before it bites me.
 1.6 05-Feb-1994  mycroft Allow multiple transmit buffers to be outstanding. Original code by Hibler;
some cleanup by me.
 1.5 05-Feb-1994  mycroft Add multicast support. Lots of other cleanup, mostly from the SPARC port.
 1.4 30-Jan-1994  mycroft Fix Theo's typos.
 1.3 24-Jan-1994  deraadt delete RMP code
ether_input() takes ether_type in net byte order now
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.14.2.5 01-Oct-1994  cgd from trunk
 1.14.2.4 26-Jul-1994  cgd from trunk.
 1.14.2.3 15-Jul-1994  cgd update from trunk.
 1.14.2.2 12-Jul-1994  cgd from trunk, per mycroft
 1.14.2.1 07-Jul-1994  cgd file if_le.c was added on branch netbsd-1-0 on 1994-07-12 23:30:21 +0000
 1.37.4.2 10-Mar-1997  is netinet/if_ether.h => netinet/if_inarp.h
 1.37.4.1 03-Mar-1997  is change to new world order.
 1.47.24.1 21-Jun-2001  nathanw Catch up to -current.
 1.48.8.4 11-Nov-2002  nathanw Catch up to -current
 1.48.8.3 18-Oct-2002  nathanw Catch up to -current.
 1.48.8.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.48.8.1 30-May-2001  nathanw file if_le.c was added on branch nathanw_sa on 2002-04-01 07:39:52 +0000
 1.48.2.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.48.2.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.53.2.5 17-Jan-2005  skrll Sync with HEAD.
 1.53.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.53.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.53.2.2 03-Sep-2004  skrll Sync with HEAD
 1.53.2.1 03-Aug-2004  skrll Sync with HEAD
 1.57.10.1 30-Dec-2006  yamt sync with head.
 1.58.8.1 11-Aug-2006  yamt sync with head
 1.58.4.1 09-Sep-2006  rpaulo sync with head
 1.59.58.1 02-Jun-2008  mjf Sync with HEAD.
 1.60.4.2 11-Mar-2010  yamt sync with head
 1.60.4.1 16-May-2008  yamt sync with head.
 1.60.2.1 18-May-2008  yamt sync with head.
 1.11 11-Dec-2005  christos merge ktrace-lwp.
 1.10 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.9 11-Jan-1998  thorpej branches: 1.9.48;
Convert the hp300 LANCE driver to use bus.h
 1.8 10-Dec-1995  mycroft Use the MI LANCE code.
 1.7 26-Oct-1994  cgd new RCS ID format.
 1.6 06-Jul-1994  mycroft Speed this up a bit, do multiple transmit buffers, etc.
 1.5 06-Feb-1994  mycroft Strict prototyping and a couple of other nits.
 1.4 05-Feb-1994  mycroft Increase # of transmit buffers.
 1.3 05-Feb-1994  mycroft Add multicast support. Lots of other cleanup, mostly from the SPARC port.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.9.48.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.9.48.2 18-Sep-2004  skrll Sync with HEAD.
 1.9.48.1 03-Aug-2004  skrll Sync with HEAD
 1.11 20-Oct-2002  gmcgarry - merge if_levar.h into if_le.c
- de-__P(), ansify
- remove unnecessary headers
 1.10 15-Aug-1998  mycroft branches: 1.10.30;
Assign my copyrights to TNF.
 1.9 11-Jan-1998  thorpej Convert the hp300 LANCE driver to use bus.h
 1.8 14-Apr-1997  thorpej Remove unnecessary softc member.
 1.7 15-Mar-1997  is New ARP system, supports IPv4 over any hardware link.

Some of the stuff (e.g., rarpd, bootpd, dhcpd etc., libsa) still will
only support Ethernet. Tcpdump itself should be ok, but libpcap needs
lot of work.

For the detailed change history, look at the commit log entries for
the is-newarp branch.
 1.6 30-Jan-1997  thorpej branches: 1.6.4;
Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.5 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.4 07-May-1996  thorpej Make the MI LANCE driver standalone, and use cfattach to resolve
naming conflicts between bus attachments on ports that can have
multiple instances of the LANCE.

Changed struct ifnet to have a pointer to the softc of the underlying
device and a printable "external name" (name + unit number), thus eliminating
if_name and if_unit. Updated interface to (*if_watchdog)() and (*if_start)()
to take a struct ifnet *, rather than a unit number.
 1.3 02-Jan-1996  thorpej Implement a suggestion from Charles; use a wrapper function before
leintr() to deal with das blinkenlights. Also squishes the need
for LEINTR_UNIT.
 1.2 30-Dec-1995  thorpej Fix something the switch to the MI LANCE code broke: use LE_TINT_HOOK
and LE_RINT_HOOK to blink the "LAN transmit" and "LAN receive" LEDs on
the front panels of 400-series machines iff the CPP symbol USELEDS is
defined in the kernel config file.
 1.1 10-Dec-1995  mycroft Use the MI LANCE code.
 1.6.4.1 03-Mar-1997  is change to new world order.
 1.10.30.1 11-Nov-2002  nathanw Catch up to -current
 1.33 30-Apr-2024  tsutsui Fix fatal typo that prevents all intio devices probed.
 1.32 28-Jan-2024  thorpej Rather than having different "builtin" tables (3xx, 362, 382, 4xx),
just have a single "builtin" table with a mask indicating which of
those groups of machines have a particular built-in device.
 1.31 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.30 24-Apr-2021  thorpej branches: 1.30.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.29 31-Dec-2010  tsutsui branches: 1.29.74;
According to the 362/382 Service Handbook by HP, only 382 has a utility chip
(i.e. frodo and apci) for RS-232C so don't try to attach frodo on HP362.

XXX: HP362 detection code in locore.s and bootloader still doesn't work
XXX: if on-board framebuffer is disabled by a jumper switch, though
XXX: it's still detected as HP360 and just works.
 1.28 28-Apr-2008  martin branches: 1.28.22;
Remove clause 3 and 4 from TNF licenses
 1.27 29-Mar-2008  tsutsui branches: 1.27.2; 1.27.4;
Split device_t/softc, and misc cosmetic changes.
 1.26 04-Mar-2007  christos branches: 1.26.40;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.25 20-Jul-2006  tsutsui branches: 1.25.10;
Identify models HP362 and HP382. From OpenBSD, tested on my HP382.

Note now options HP362 and options HP382 are required for these models
in your kernel config file.
 1.24 19-Jul-2006  tsutsui oops, fix typo
 1.23 19-Jul-2006  tsutsui - strncpy() -> strlcpy()
- adjust buffer length
 1.22 19-Jul-2006  tsutsui Define base address offsets of intio devices in intioreg.h
and replace various magic numbers with the macro.
 1.21 19-Jul-2006  tsutsui - use __arraycount()
- remove parentheses from return values
 1.20 11-Dec-2005  christos branches: 1.20.4; 1.20.8;
merge ktrace-lwp.
 1.19 28-Aug-2004  thorpej branches: 1.19.12;
Use ANSI function decls, static, and const.
 1.18 17-Nov-2003  tsutsui TAB/space cleanup.
 1.17 01-Aug-2003  tsutsui Modify hp300 bus_space(9) structures/functions to add hooks to override
access functions. This is required by some DIO devices to use MI drivers.
 1.16 05-Jul-2003  tsutsui cosmetics
 1.15 24-May-2003  gmcgarry branches: 1.15.2;
Clean-up the DIO bus. Includes two main changes:

1) Pass address and ipl locators at attachment;
2) Remove hack which made the internal HP-IB controller
look like a DIO device.

The hack to allow the nhpib driver to support internal and DIO
controllers appears to be a leftover from 4.3BD where it was not
possible to have a driver attach to different busses. NetBSD has
supported bus-dependent attachments for a long time.
 1.14 01-Jan-2003  thorpej Use aprint_normal() for cfprint routines.
 1.13 22-Dec-2002  gmcgarry Make the DMA controller a separate device attached to intio. Intio
devices can use the DMA controller too.
 1.12 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.11 05-May-2002  gmcgarry 400-series machines only have DIO framebuffers. From discussion
with Michael Lorenz and Bernd Sieker.
 1.10 05-Apr-2002  gmcgarry actually, we didn't want to print pa, not kva
 1.9 17-Mar-2002  gmcgarry Don't match on trailing spaces in the module name.
 1.8 15-Mar-2002  gmcgarry Don't display ipl if the device isn't actually attaching.
Add RCSID while here.
 1.7 17-Nov-2001  gmcgarry Overhaul the intio device attachment. Devices are direct connected and
attached based on machine id.
 1.6 12-Jan-1998  thorpej branches: 1.6.28; 1.6.32;
Update for changes to config.
 1.5 11-Jan-1998  thorpej Oops, fix a printf format.
 1.4 11-Jan-1998  thorpej Pass down bus space tags to children, and use types appropriate for
bus.h.
 1.3 09-Oct-1997  jtc Fix tipo inherited from old version of TNF copyright template.
 1.2 30-Jan-1997  thorpej branches: 1.2.8;
Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.1 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.2.8.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.6.32.7 03-Jan-2003  thorpej Sync with HEAD.
 1.6.32.6 29-Dec-2002  thorpej Sync with HEAD.
 1.6.32.5 18-Oct-2002  nathanw Catch up to -current.
 1.6.32.4 20-Jun-2002  nathanw Catch up to -current.
 1.6.32.3 17-Apr-2002  nathanw Catch up to -current.
 1.6.32.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.6.32.1 08-Jan-2002  nathanw Catch up to -current.
 1.6.28.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.6.28.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.6.28.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.15.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.15.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.15.2.2 03-Sep-2004  skrll Sync with HEAD
 1.15.2.1 03-Aug-2004  skrll Sync with HEAD
 1.19.12.2 03-Sep-2007  yamt sync with head.
 1.19.12.1 30-Dec-2006  yamt sync with head.
 1.20.8.1 11-Aug-2006  yamt sync with head
 1.20.4.1 09-Sep-2006  rpaulo sync with head
 1.25.10.1 12-Mar-2007  rmind Sync with HEAD.
 1.26.40.2 02-Jun-2008  mjf Sync with HEAD.
 1.26.40.1 03-Apr-2008  mjf Sync with HEAD.
 1.27.4.1 16-May-2008  yamt sync with head.
 1.27.2.1 18-May-2008  yamt sync with head.
 1.28.22.1 05-Mar-2011  rmind sync with head
 1.29.74.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.30.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.5 28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.4 19-Jul-2006  tsutsui branches: 1.4.58; 1.4.60; 1.4.62;
Define base address offsets of intio devices in intioreg.h
and replace various magic numbers with the macro.
 1.3 11-Dec-2005  christos branches: 1.3.4; 1.3.8;
merge ktrace-lwp.
 1.2 17-Nov-2003  tsutsui branches: 1.2.16;
TAB/space cleanup.
 1.1 17-Nov-2001  gmcgarry branches: 1.1.2; 1.1.4; 1.1.20;
Overhaul the intio device attachment. Devices are direct connected and
attached based on machine id.
 1.1.20.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.20.2 18-Sep-2004  skrll Sync with HEAD.
 1.1.20.1 03-Aug-2004  skrll Sync with HEAD
 1.1.4.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.1.4.1 17-Nov-2001  thorpej file intioreg.h was added on branch kqueue on 2002-01-10 19:42:56 +0000
 1.1.2.2 08-Jan-2002  nathanw Catch up to -current.
 1.1.2.1 17-Nov-2001  nathanw file intioreg.h was added on branch nathanw_sa on 2002-01-08 00:24:35 +0000
 1.2.16.1 30-Dec-2006  yamt sync with head.
 1.3.8.1 11-Aug-2006  yamt sync with head
 1.3.4.1 09-Sep-2006  rpaulo sync with head
 1.4.62.1 16-May-2008  yamt sync with head.
 1.4.60.1 18-May-2008  yamt sync with head.
 1.4.58.1 02-Jun-2008  mjf Sync with HEAD.
 1.15 28-Jan-2024  thorpej Rather than having different "builtin" tables (3xx, 362, 382, 4xx),
just have a single "builtin" table with a mask indicating which of
those groups of machines have a particular built-in device.
 1.14 07-Aug-2023  mrg fix indentation issues.

found by GCC 12.
 1.13 28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.12 19-Jul-2006  tsutsui branches: 1.12.58; 1.12.60; 1.12.62;
- strncpy() -> strlcpy()
- adjust buffer length
 1.11 19-Mar-2006  tsutsui TAB/space cleanup.
 1.10 24-Dec-2005  perry branches: 1.10.4; 1.10.6; 1.10.8; 1.10.10; 1.10.12;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.9 11-Dec-2005  christos merge ktrace-lwp.
 1.8 02-Jun-2005  tsutsui branches: 1.8.2;
Add a const.
 1.7 02-Jan-2005  tsutsui u_intNN_t -> uintNN_t
 1.6 17-Nov-2003  tsutsui TAB/space cleanup.
 1.5 17-Nov-2001  gmcgarry branches: 1.5.16;
Overhaul the intio device attachment. Devices are direct connected and
attached based on machine id.
 1.4 11-Jan-1998  thorpej branches: 1.4.28; 1.4.32;
Pass down bus space tags to children, and use types appropriate for
bus.h.
 1.3 09-Oct-1997  jtc Fix tipo inherited from old version of TNF copyright template.
 1.2 30-Jan-1997  thorpej branches: 1.2.8;
Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.1 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.2.8.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.4.32.1 08-Jan-2002  nathanw Catch up to -current.
 1.4.28.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.5.16.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.5.16.4 17-Jan-2005  skrll Sync with HEAD.
 1.5.16.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.5.16.2 18-Sep-2004  skrll Sync with HEAD.
 1.5.16.1 03-Aug-2004  skrll Sync with HEAD
 1.8.2.2 30-Dec-2006  yamt sync with head.
 1.8.2.1 21-Jun-2006  yamt sync with head.
 1.10.12.1 28-Mar-2006  tron Merge 2006-03-28 NetBSD-current into the "peter-altq" branch.
 1.10.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.10.8.2 11-Aug-2006  yamt sync with head
 1.10.8.1 01-Apr-2006  yamt sync with head.
 1.10.6.1 22-Apr-2006  simonb Sync with head.
 1.10.4.1 09-Sep-2006  rpaulo sync with head
 1.12.62.1 16-May-2008  yamt sync with head.
 1.12.60.1 18-May-2008  yamt sync with head.
 1.12.58.1 02-Jun-2008  mjf Sync with HEAD.
 1.5 08-Feb-2011  rmind Remove clause 3 (UCB advertising clause) from the University of Utah
copyright. Confirmed by Mike Hibler, mike at cs.utah.edu - thanks!
Also, merge UCB and Utah copyright texts back into one, as they
originally were.

Extra verification by snj@.
 1.4 11-Dec-2005  christos branches: 1.4.100; 1.4.106; 1.4.108;
merge ktrace-lwp.
 1.3 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.2 26-Oct-1994  cgd branches: 1.2.66;
new RCS ID format.
 1.1 23-May-1994  mycroft Merge with 4.4-Lite.
 1.2.66.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.2.66.2 18-Sep-2004  skrll Sync with HEAD.
 1.2.66.1 03-Aug-2004  skrll Sync with HEAD
 1.4.108.1 17-Feb-2011  bouyer Sync with HEAD
 1.4.106.1 06-Jun-2011  jruoho Sync with HEAD.
 1.4.100.1 05-Mar-2011  rmind sync with head
 1.84 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.83 18-Apr-2009  tsutsui branches: 1.83.4; 1.83.6; 1.83.8;
- remove a cast against malloc
- (type *)0 -> NULL
- misc KNF
 1.82 13-Jun-2008  cegger branches: 1.82.4; 1.82.10;
use device_lookup_private to get softc
 1.81 28-Apr-2008  martin branches: 1.81.2; 1.81.4;
Remove clause 3 and 4 from TNF licenses
 1.80 29-Mar-2008  tsutsui branches: 1.80.2; 1.80.4;
Split device_t/softc, and misc cosmetic changes.
 1.79 19-Nov-2007  ad branches: 1.79.14;
- Factor out too many copies of the same bit of tty code.
- Fix another tty signalling/wakeup problem.
 1.78 18-Oct-2007  joerg branches: 1.78.2;
Initialise the callbacks for tty.t_rstrt_ch in ttymalloc
as all drivers but Sun/SPARC's kd.c use the same arguments.
Separate callout_reset into callout_schedule and the initial
callout_setfunc using that.
 1.77 04-Mar-2007  christos branches: 1.77.2; 1.77.18; 1.77.20; 1.77.24;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.76 01-Oct-2006  elad branches: 1.76.4;
Adapt MD code to KAUTH_DEVICE_TTY_OPEN. Patch from Matt Fleming, thanks!
 1.75 23-Jul-2006  ad branches: 1.75.4; 1.75.6;
Use the LWP cached credentials where sane.
 1.74 21-Jul-2006  tsutsui Some KNF.
 1.73 14-May-2006  elad integrate kauth.
 1.72 28-Mar-2006  thorpej Use device_unit().
 1.71 19-Mar-2006  tsutsui TAB/space cleanup.
 1.70 19-Mar-2006  tsutsui Replace MALLOC(9) with malloc(9) in non critical path.
 1.69 11-Dec-2005  christos branches: 1.69.4; 1.69.6; 1.69.8; 1.69.10; 1.69.12;
merge ktrace-lwp.
 1.68 06-Sep-2005  kleink Change the driver open function's conditional for overriding exclusive tty
use from checking the proc's uid to suser(9), and account for the use of
privileges. Noted by David Holland in PR kern/31126.
 1.67 02-Jun-2005  tsutsui branches: 1.67.2;
Add a const.
 1.66 19-Feb-2005  tsutsui Include "ioconf.h" for struct cfdriver *_cd decls.
 1.65 28-Aug-2004  thorpej branches: 1.65.4; 1.65.6;
Use ANSI function decls, static, and const.
 1.64 31-May-2004  tsutsui Fix usage of NULL, '\0' and "" again.
 1.63 31-May-2004  tsutsui Handle CAPSLOCK correctly. Fixes port-hp300/4689.
 1.62 17-Nov-2003  tsutsui branches: 1.62.2;
TAB/space cleanup.
 1.61 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.60 29-Jun-2003  fvdl branches: 1.60.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.59 29-Jun-2003  thorpej Adapt to ktrace/lwp changes.
 1.58 06-Mar-2003  thorpej Update for consdev changes.
 1.57 23-Oct-2002  jdolecek merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.56 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.55 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.54 06-Sep-2002  gehenna Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.53 05-Jul-2002  gmcgarry Invert test of EPASSTHROUGH. Problem reported by
Bernd Sieker <bsieker@freenet.de>.
 1.52 17-Mar-2002  atatat branches: 1.52.4; 1.52.6;
Convert ioctl code to use EPASSTHROUGH instead of -1 or ENOTTY for
indicating an unhandled "command". ERESTART is -1, which can lead to
confusion. ERESTART has been moved to -3 and EPASSTHROUGH has been
placed at -4. No ioctl code should now return -1 anywhere. The
ioctl() system call is now properly restartable.
 1.51 15-Mar-2002  gmcgarry Introduce iteinstallkeymap() which allows the keyboard driver to
register its keymap with ite. Add RCSIDs while here.
 1.50 14-Dec-2001  gmcgarry Make the ite interface look a little more like wscons. This is done
by allowing the hardware drivers to register keyboard and display
support with the ite framework. Removes the dependence on the hil
keyboard and should make support for dnkbd easier.

An interim fix until wscons arrives.
 1.49 08-Dec-2001  gmcgarry bcopy -> memcpy
bzero -> memset
bcmp -> memcmp
 1.48 17-Nov-2001  gmcgarry Convert hil to standard device attachment.
 1.47 02-May-2001  scw branches: 1.47.2; 1.47.4; 1.47.8;
Add `l_poll' to `struct linesw' and provide an xxxpoll() entry point
in each tty driver to indirect through it.

This allows tty line-disciplines to handle poll(2) system calls.
 1.46 27-Nov-2000  tsutsui branches: 1.46.2;
More fixes for linesw changes.
 1.45 02-Nov-2000  eeh Adapt to the new line discipline scheme.
 1.44 04-Aug-2000  tsutsui Fix keyboard related panic when ite device is configured
but not attached, per port-hp300/10750.
Approved by thorpej.
 1.43 23-Mar-2000  thorpej branches: 1.43.4;
New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.42 13-Mar-2000  soren Fix doubled 'the's in comments.
 1.41 20-Apr-1998  frueauf branches: 1.41.8; 1.41.14;
egcs warning: don't use a char for array index, cast it to int.
 1.40 12-Jan-1998  thorpej Update for changes to config.
 1.39 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.38 31-Mar-1997  scottr branches: 1.38.4;
Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.37 02-Feb-1997  thorpej Use splkbd().
 1.36 31-Jan-1997  carrel Patch from thorpej to mark non-console grf's and ite's alive.
 1.35 30-Jan-1997  thorpej Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.34 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.33 13-Oct-1996  christos backout previous kprintf changes
 1.32 11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.31 05-Oct-1996  thorpej If console is on an ite, make sure the HIL is initialized enough for
the keyboard to work. Fixes a bug where booting with `-d' worked
only on systems using a serial console.

While I'm here, eliminate some redundancy in the ite console intialization
code.
 1.30 06-Jun-1996  thorpej Add calls to tty_attach() and tty_detach() where appropriate.
 1.29 24-Feb-1996  thorpej branches: 1.29.4;
Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.28 19-Nov-1995  thorpej Prevent the ITE_ACTIVE bit from being cleared in iteoff() if the ITE_ISCONS
bit is set. Works around the fact that the last process to have the
console open exits, the bit is cleared, and "syncing disks...", etc. is
not seen if the system is rebooted with reboot(8). Fixes PR #1455.
 1.27 19-Apr-1995  mycroft branches: 1.27.2;
Kluge the *tty() routines until this port is converted to config.new.
 1.26 10-Apr-1995  mycroft Most of the console functions return void.
 1.25 16-Dec-1994  mycroft Fix typo in previous.
 1.24 13-Dec-1994  mycroft Add dummy itestart(), and use ttrstrt() rather than a local version of the same.
 1.23 26-Oct-1994  cgd new RCS ID format.
 1.22 25-May-1994  mycroft Merge with 4.4-Lite.
 1.21 24-May-1994  mycroft MIN --> min
 1.20 05-May-1994  mycroft Most of the changes needed to make this continue to run.
 1.19 10-Feb-1994  mycroft Rearrange some #includes.
 1.18 10-Feb-1994  mycroft Add arg to ioctl functions. Clean up #includes.
 1.17 06-Feb-1994  mycroft Remove outdated console handling code.
 1.16 06-Feb-1994  mycroft Use common version of cons.c.
 1.15 30-Jan-1994  mycroft Remove bogus declaration.
 1.14 06-Dec-1993  mycroft Dummy iteattach() for new config.
 1.13 06-Dec-1993  mycroft Fix a couple of compiler warnings.
 1.12 29-Aug-1993  deraadt tty XXstart() routines return void
 1.11 08-Aug-1993  mycroft Slight restructuring to avoid relying on the tty structure associated with
an ITE until we're sure it's allocated.
 1.10 07-Aug-1993  cgd some more ring buffer -> clist changes
 1.9 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.8 12-Jul-1993  mycroft Change tty code to use clist interface, but with ring buffer implementation.
Also, fix a couple of bugs in tty.c and pccons.c, and some gross kluginess
in the hp300 stuff.
 1.7 07-Jul-1993  deraadt the "struct tty *cn_tty" field in cons.c wasn't being used by anything
 1.6 01-Jul-1993  mycroft This has got to be a bug.
 1.5 06-Jun-1993  cgd make getc() and ungetc() be rb{un,}getc(), so getc() and ungetc()
don't conflict w/ansi prototypes...
 1.4 27-May-1993  deraadt Changes to hp300 code to support two things:
1. dynamic tty allocation
2. use ring buffers instead of clists
Of course, I can't test it :-)
 1.3 22-May-1993  cgd add include of select.h if necessary for protos, or delete if extraneous
 1.2 18-May-1993  cgd make kernel select interface be one-stop shopping & clean it all up.
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.27.2.1 19-Nov-1995  thorpej Update from trunk; don't clear the ITE_ACTIVE bit if ITE_ISCONS, so that
messages printed during shutdown are visible.
 1.29.4.1 06-Jun-1996  thorpej Update from trunk:

Add calls to tty_attach() and tty_detach() where appropriate.
 1.38.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.41.14.3 08-Dec-2000  bouyer Sync with HEAD.
 1.41.14.2 22-Nov-2000  bouyer Sync with HEAD.
 1.41.14.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.41.8.1 14-Aug-2000  he Pull up revision 1.44 (requested by tsutsui):
Fix keyboard related panic when ite device is configured
but not attached. Fixes PR#10750.
 1.43.4.1 04-Aug-2000  tsutsui pull up 1.44 (approved by thorpej):
Fix keyboard related panic when ite device is configured
but not attached, per port-hp300/10750.
 1.46.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.47.8.7 11-Nov-2002  nathanw Catch up to -current
 1.47.8.6 18-Oct-2002  nathanw Catch up to -current.
 1.47.8.5 17-Sep-2002  nathanw Catch up to -current.
 1.47.8.4 01-Aug-2002  nathanw Catch up to -current.
 1.47.8.3 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.47.8.2 08-Jan-2002  nathanw Catch up to -current.
 1.47.8.1 02-May-2001  nathanw file ite.c was added on branch nathanw_sa on 2002-01-08 00:24:35 +0000
 1.47.4.2 13-Oct-2001  fvdl Revert the t_dev -> t_devvp change in struct tty. The way that tty
structs are currently used (especially by console ttys) aren't
ready for it, and this will require quite a few changes.
 1.47.4.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.47.2.4 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.47.2.3 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.47.2.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.47.2.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.52.6.1 06-Jul-2002  lukem Pull up revision 1.53 (requested by gmcgarry in ticket #436):
Invert test of EPASSTHROUGH. Problem reported by
Bernd Sieker <bsieker@freenet.de>.
 1.52.4.2 16-Jul-2002  gehenna catch up with -current.
 1.52.4.1 19-May-2002  gehenna Add device switch.
Replace the access to devsw table and the hard-coded majors with devsw API.
 1.60.2.7 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.60.2.6 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.60.2.5 24-Jan-2005  skrll Adapt to branch.
 1.60.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.60.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.60.2.2 03-Sep-2004  skrll Sync with HEAD
 1.60.2.1 03-Aug-2004  skrll Sync with HEAD
 1.62.2.1 01-Jun-2004  jmc Pullup rev 1.63 (requested by tsutsui in ticket #430)

Handle CAPSLOCK correctly. PR#4689
 1.65.6.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.65.4.1 29-Apr-2005  kent sync with -current
 1.67.2.5 07-Dec-2007  yamt sync with head
 1.67.2.4 27-Oct-2007  yamt sync with head.
 1.67.2.3 03-Sep-2007  yamt sync with head.
 1.67.2.2 30-Dec-2006  yamt sync with head.
 1.67.2.1 21-Jun-2006  yamt sync with head.
 1.69.12.3 24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.69.12.2 31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.69.12.1 28-Mar-2006  tron Merge 2006-03-28 NetBSD-current into the "peter-altq" branch.
 1.69.10.4 13-May-2006  elad sprinkle some #include <sys/kauth.h> in files that use kauth kpi but
don't include it yet. hopefully this will prevent some fallout.
 1.69.10.3 19-Apr-2006  elad sync with head - hopefully this will work
 1.69.10.2 10-Mar-2006  elad generic_authorize() -> kauth_authorize_generic().
 1.69.10.1 08-Mar-2006  elad Adapt to kernel authorization KPI.

I expect *some* lossage here...
 1.69.8.3 11-Aug-2006  yamt sync with head
 1.69.8.2 24-May-2006  yamt sync with head.
 1.69.8.1 01-Apr-2006  yamt sync with head.
 1.69.6.2 01-Jun-2006  kardel Sync with head.
 1.69.6.1 22-Apr-2006  simonb Sync with head.
 1.69.4.1 09-Sep-2006  rpaulo sync with head
 1.75.6.1 22-Oct-2006  yamt sync with head
 1.75.4.1 18-Nov-2006  ad Sync with head.
 1.76.4.1 12-Mar-2007  rmind Sync with HEAD.
 1.77.24.2 21-Nov-2007  bouyer Sync with HEAD
 1.77.24.1 25-Oct-2007  bouyer Sync with HEAD.
 1.77.20.2 09-Jan-2008  matt sync with HEAD
 1.77.20.1 06-Nov-2007  matt sync with HEAD
 1.77.18.2 21-Nov-2007  joerg Sync with HEAD.
 1.77.18.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.77.2.2 03-Dec-2007  ad Sync with HEAD.
 1.77.2.1 23-Oct-2007  ad Sync with head.
 1.78.2.1 08-Dec-2007  mjf Sync with HEAD.
 1.79.14.3 29-Jun-2008  mjf Sync with HEAD.
 1.79.14.2 02-Jun-2008  mjf Sync with HEAD.
 1.79.14.1 03-Apr-2008  mjf Sync with HEAD.
 1.80.4.2 04-May-2009  yamt sync with head.
 1.80.4.1 16-May-2008  yamt sync with head.
 1.80.2.2 17-Jun-2008  yamt sync with head.
 1.80.2.1 18-May-2008  yamt sync with head.
 1.81.4.1 18-Jun-2008  simonb Sync with head.
 1.81.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.82.10.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.82.4.1 28-Apr-2009  skrll Sync with HEAD.
 1.83.8.1 08-Feb-2011  bouyer Sync with HEAD
 1.83.6.1 06-Jun-2011  jruoho Sync with HEAD.
 1.83.4.1 05-Mar-2011  rmind sync with head
 1.6 24-Feb-1996  thorpej Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.5 26-Oct-1994  cgd new RCS ID format.
 1.4 25-May-1994  mycroft Merge with 4.4-Lite.
 1.3 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.6 24-Feb-1996  thorpej Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.5 26-Oct-1994  cgd new RCS ID format.
 1.4 25-May-1994  mycroft Merge with 4.4-Lite.
 1.3 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.3 24-Feb-1996  thorpej Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.2 26-Oct-1994  cgd new RCS ID format.
 1.1 25-May-1994  mycroft Merge with 4.4-Lite.
 1.6 24-Feb-1996  thorpej Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.5 26-Oct-1994  cgd new RCS ID format.
 1.4 25-May-1994  mycroft Merge with 4.4-Lite.
 1.3 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.15 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.14 11-Dec-2005  christos branches: 1.14.100; 1.14.106; 1.14.108;
merge ktrace-lwp.
 1.13 03-Jun-2005  tsutsui Make fbmem volatile to appease gcc -Wcast-qual.
 1.12 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.11 17-Nov-2003  tsutsui TAB/space cleanup.
 1.10 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.9 15-Mar-2002  gmcgarry branches: 1.9.12;
Add RCSIDs.
 1.8 31-Mar-1997  scottr branches: 1.8.36; 1.8.40;
Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.7 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.6 24-Feb-1996  thorpej Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.5 26-Oct-1994  cgd new RCS ID format.
 1.4 25-May-1994  mycroft Merge with 4.4-Lite.
 1.3 02-Sep-1993  mycroft For some reason I don't understand, a change disappeared from the CVS tree.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.8.40.1 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.8.36.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.9.12.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.9.12.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.9.12.3 18-Sep-2004  skrll Sync with HEAD.
 1.9.12.2 03-Sep-2004  skrll Sync with HEAD
 1.9.12.1 03-Aug-2004  skrll Sync with HEAD
 1.14.108.1 08-Feb-2011  bouyer Sync with HEAD
 1.14.106.1 06-Jun-2011  jruoho Sync with HEAD.
 1.14.100.1 05-Mar-2011  rmind sync with head
 1.6 24-Feb-1996  thorpej Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.5 26-Oct-1994  cgd new RCS ID format.
 1.4 25-May-1994  mycroft Merge with 4.4-Lite.
 1.3 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.4 25-May-1994  mycroft Clean up deleted files.
 1.3 02-Sep-1993  mycroft For some reason I don't understand, a change disappeared from the CVS tree.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.8 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.7 11-Dec-2005  christos branches: 1.7.100; 1.7.106; 1.7.108;
merge ktrace-lwp.
 1.6 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.5 26-Oct-1994  cgd branches: 1.5.66;
new RCS ID format.
 1.4 25-May-1994  mycroft Merge with 4.4-Lite.
 1.3 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.5.66.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.5.66.2 18-Sep-2004  skrll Sync with HEAD.
 1.5.66.1 03-Aug-2004  skrll Sync with HEAD
 1.7.108.1 08-Feb-2011  bouyer Sync with HEAD
 1.7.106.1 06-Jun-2011  jruoho Sync with HEAD.
 1.7.100.1 05-Mar-2011  rmind sync with head
 1.30 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.29 18-Apr-2009  tsutsui branches: 1.29.4; 1.29.6; 1.29.8;
bcopy -> memmove (where possibly overwrapped)
 1.28 18-Mar-2009  cegger bzero -> memset
 1.27 29-Mar-2008  tsutsui branches: 1.27.4; 1.27.12; 1.27.18;
Split device_t/softc, and misc cosmetic changes.
 1.26 04-Mar-2007  tsutsui branches: 1.26.40;
- use (uint8_t *) for framebuffer address
- remove unneeded casts
- misc cosmetics
 1.25 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.24 25-Jun-2006  tsutsui branches: 1.24.10;
Remove unused extern variable declarations. Noticed by gcc4.
 1.23 19-Mar-2006  tsutsui branches: 1.23.4;
TAB/space cleanup.
 1.22 11-Dec-2005  christos branches: 1.22.4; 1.22.6; 1.22.8; 1.22.10; 1.22.12;
merge ktrace-lwp.
 1.21 03-Jun-2005  tsutsui branches: 1.21.2;
Make fbmem volatile to appease gcc -Wcast-qual.
 1.20 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.19 08-Apr-2004  tsutsui Don't panic when kernel tries to print a horizontal tab via itecnputc().
 1.18 07-Aug-2003  agc branches: 1.18.2;
Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.17 06-Sep-2002  gehenna branches: 1.17.6;
Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.16 15-Mar-2002  gmcgarry branches: 1.16.4; 1.16.6;
Introduce iteinstallkeymap() which allows the keyboard driver to
register its keymap with ite. Add RCSIDs while here.
 1.15 14-Dec-2001  gmcgarry Make the ite interface look a little more like wscons. This is done
by allowing the hardware drivers to register keyboard and display
support with the ite framework. Removes the dependence on the hil
keyboard and should make support for dnkbd easier.

An interim fix until wscons arrives.
 1.14 31-Mar-1997  scottr branches: 1.14.36; 1.14.40;
Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.13 30-Jan-1997  thorpej Garbage-collect all old-style autoconfiguration support; it is no
longer supported. The hp300 port uses new config now.
 1.12 09-Jan-1997  scottr Bracket kernel structs with #ifdef _KERNEL so that bootblocks will once
again build.
 1.11 17-Dec-1996  thorpej Snapshot of new config for NetBSD/hp300. This isn't quite finished yet.
We're about 75% there. SCSI and HP-IB are not yet supported in a new
config kernel; some autoconfiguration hackery has to be done there, yet.
These changes are enough to network boot a diskless kernel.

New config glue is enabled with the "NEWCONFIG" kernel option. If that
option is not present, an old config kernel will be built. Any kernel
configured with config(8) will automatically pick up the NEWCONFIG
option from std.hp300.
 1.10 05-Oct-1996  thorpej If console is on an ite, make sure the HIL is initialized enough for
the keyboard to work. Fixes a bug where booting with `-d' worked
only on systems using a serial console.

While I'm here, eliminate some redundancy in the ite console intialization
code.
 1.9 24-Feb-1996  thorpej Completely rework how the console is probed. Console probing no longer
requires pre-autoconfigured devices. Fix up some prototypes. Part of the
long journey towards new config. (GETTING THERE!)
 1.8 19-Nov-1995  thorpej Prevent the ITE_ACTIVE bit from being cleared in iteoff() if the ITE_ISCONS
bit is set. Works around the fact that the last process to have the
console open exits, the bit is cleared, and "syncing disks...", etc. is
not seen if the system is rebooted with reboot(8). Fixes PR #1455.
 1.7 28-Mar-1995  jtc branches: 1.7.2;
KERNEL -> _KERNEL
 1.6 26-Oct-1994  cgd new RCS ID format.
 1.5 25-May-1994  mycroft Merge with 4.4-Lite.
 1.4 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.3 29-May-1993  cgd fix for dynamic tty allocation; was being used in a #define...
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.7.2.1 19-Nov-1995  thorpej Update from trunk; don't clear the ITE_ACTIVE bit if ITE_ISCONS, so that
messages printed during shutdown are visible.
 1.14.40.3 17-Sep-2002  nathanw Catch up to -current.
 1.14.40.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.14.40.1 08-Jan-2002  nathanw Catch up to -current.
 1.14.36.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.14.36.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.14.36.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.16.6.1 12-Apr-2004  jmc Pullup rev 1.19 (requested by tsutsui in ticket #1667)

Don't panic when kernel tries to print a horizontal tab via itecnputc().
 1.16.4.1 19-May-2002  gehenna Remove unnecessary prototype.
 1.17.6.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.17.6.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.17.6.3 18-Sep-2004  skrll Sync with HEAD.
 1.17.6.2 03-Sep-2004  skrll Sync with HEAD
 1.17.6.1 03-Aug-2004  skrll Sync with HEAD
 1.18.2.1 11-Apr-2004  jmc Pullup rev 1.19 (requested by tsutsui in ticket #118)

Don't panic when kernel tries to print a horizontal tab via itecnputc().
 1.21.2.3 03-Sep-2007  yamt sync with head.
 1.21.2.2 30-Dec-2006  yamt sync with head.
 1.21.2.1 21-Jun-2006  yamt sync with head.
 1.22.12.1 28-Mar-2006  tron Merge 2006-03-28 NetBSD-current into the "peter-altq" branch.
 1.22.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.22.8.2 26-Jun-2006  yamt sync with head.
 1.22.8.1 01-Apr-2006  yamt sync with head.
 1.22.6.1 22-Apr-2006  simonb Sync with head.
 1.22.4.1 09-Sep-2006  rpaulo sync with head
 1.23.4.1 13-Jul-2006  gdamore Merge from HEAD.
 1.24.10.1 12-Mar-2007  rmind Sync with HEAD.
 1.26.40.1 03-Apr-2008  mjf Sync with HEAD.
 1.27.18.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.27.12.1 28-Apr-2009  skrll Sync with HEAD.
 1.27.4.1 04-May-2009  yamt sync with head.
 1.29.8.1 08-Feb-2011  bouyer Sync with HEAD
 1.29.6.1 06-Jun-2011  jruoho Sync with HEAD.
 1.29.4.1 05-Mar-2011  rmind sync with head
 1.13 06-Feb-2011  tsutsui Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.12 11-Dec-2005  christos branches: 1.12.100; 1.12.106; 1.12.108;
merge ktrace-lwp.
 1.11 02-Jun-2005  tsutsui Add const.
 1.10 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.9 15-Mar-2002  gmcgarry branches: 1.9.12;
Introduce iteinstallkeymap() which allows the keyboard driver to
register its keymap with ite. Add RCSIDs while here.
 1.8 14-Dec-2001  gmcgarry Make the ite interface look a little more like wscons. This is done
by allowing the hardware drivers to register keyboard and display
support with the ite framework. Removes the dependence on the hil
keyboard and should make support for dnkbd easier.

An interim fix until wscons arrives.
 1.7 05-Oct-1996  thorpej branches: 1.7.42; 1.7.46;
If console is on an ite, make sure the HIL is initialized enough for
the keyboard to work. Fixes a bug where booting with `-d' worked
only on systems using a serial console.

While I'm here, eliminate some redundancy in the ite console intialization
code.
 1.6 06-Dec-1995  thorpej Keymap for the Swedish HIL keyboard, from Tomas Tengling <ltt@cd.chalmers.se>.
 1.5 28-Mar-1995  jtc KERNEL -> _KERNEL
 1.4 26-Oct-1994  cgd new RCS ID format.
 1.3 25-May-1994  mycroft Merge with 4.4-Lite.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.7.46.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.7.46.1 08-Jan-2002  nathanw Catch up to -current.
 1.7.42.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.7.42.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.9.12.4 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.9.12.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.9.12.2 18-Sep-2004  skrll Sync with HEAD.
 1.9.12.1 03-Aug-2004  skrll Sync with HEAD
 1.12.108.1 08-Feb-2011  bouyer Sync with HEAD
 1.12.106.1 06-Jun-2011  jruoho Sync with HEAD.
 1.12.100.1 05-Mar-2011  rmind sync with head
 1.10 31-May-2025  tsutsui Use C99 exact width integer types, and misc KNF. (sync with stand/common)
 1.9 06-Feb-2011  tsutsui branches: 1.9.92;
Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.8 19-Mar-2006  tsutsui branches: 1.8.88; 1.8.94; 1.8.96;
- TAB/space cleanup
- use do{}while(/*CONSTCOND*/0) for macro with multiple statements
 1.7 24-Dec-2005  perry branches: 1.7.4; 1.7.6; 1.7.8; 1.7.10; 1.7.12;
bare asm -> __asm
 1.6 11-Dec-2005  christos merge ktrace-lwp.
 1.5 07-Aug-2003  agc branches: 1.5.16;
Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.4 16-Nov-2001  gmcgarry branches: 1.4.16;
Remove unnecessary trailing argument. Now compiles with new toolchain.
 1.3 31-Mar-1997  scottr branches: 1.3.36; 1.3.40;
Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.2 26-Oct-1994  cgd new RCS ID format.
 1.1 23-May-1994  mycroft Merge with 4.4-Lite.
 1.3.40.1 08-Jan-2002  nathanw Catch up to -current.
 1.3.36.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.4.16.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.16.2 18-Sep-2004  skrll Sync with HEAD.
 1.4.16.1 03-Aug-2004  skrll Sync with HEAD
 1.5.16.1 21-Jun-2006  yamt sync with head.
 1.7.12.1 28-Mar-2006  tron Merge 2006-03-28 NetBSD-current into the "peter-altq" branch.
 1.7.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.7.8.1 01-Apr-2006  yamt sync with head.
 1.7.6.1 22-Apr-2006  simonb Sync with head.
 1.7.4.1 09-Sep-2006  rpaulo sync with head
 1.8.96.1 08-Feb-2011  bouyer Sync with HEAD
 1.8.94.1 06-Jun-2011  jruoho Sync with HEAD.
 1.8.88.1 05-Mar-2011  rmind sync with head
 1.9.92.1 02-Aug-2025  perseant Sync with HEAD
 1.2 15-Jan-2023  tsutsui TAB/space cleanup.
 1.1 19-Apr-2014  tsutsui branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.12; 1.1.68;
Add proper RealTime Clock support for HP9000/425e.

As the OpenBSD/hp300 page says 425e doesn't have the traditional
RTC at intio (as it also lacks DCA 16550 serial at intio?),
but after a few hour investigation it turns out that
425e uses mc146818 compatible calendar clock in
the Apollo "frodo" utility chip and the frodo chip on
425e actually has the 32kHz OSC and is actually backed up
by the onboard lithium battery.

Tested on HP425e (with mcclock) and HP362 (with old rtc).
 1.1.68.1 22-Jun-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #722):

sys/fs/cd9660/cd9660_util.c: revision 1.16
sys/arch/hp300/stand/common/clock.c: revision 1.14
sys/arch/hp300/stand/common/scsireg.h: revision 1.5
sys/arch/hp300/stand/common/scsireg.h: revision 1.6
sys/arch/hp300/stand/Makefile.buildboot: revision 1.38
sys/arch/hp300/include/bus.h: revision 1.23
sys/arch/hp300/stand/Makefile.buildboot: revision 1.39
sys/arch/hp300/stand/common/sd.c: revision 1.12
sys/arch/hp300/stand/common/prf.c: revision 1.6
sys/arch/hp300/stand/common/sd.c: revision 1.13
usr.sbin/installboot/installboot.8: revision 1.106
usr.sbin/installboot/Makefile: revision 1.59
sys/arch/hp300/stand/common/devopen.c: revision 1.14
usr.sbin/installboot/installboot.8: revision 1.107
sys/arch/hp300/stand/common/ite_dumb.c: revision 1.2
sys/arch/hp300/stand/common/devopen.c: revision 1.15
usr.sbin/installboot/installboot.8: revision 1.108
sys/fs/cd9660/cd9660_extern.h: revision 1.29
usr.sbin/installboot/installboot.8: revision 1.109
tools/Makefile.nbincludes: revision 1.11 (patch)
sys/arch/hp300/dev/rboxreg.h: revision 1.3
sys/arch/hp300/stand/common/scsivar.h: revision 1.5
sys/arch/hp300/dev/dnkbd.c: revision 1.14
sys/arch/hp300/hp300/trap.c: revision 1.156
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.12
sys/arch/hp300/dev/frodoreg.h: revision 1.6
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.13
sys/arch/hp300/stand/common/ite_sti.c: revision 1.2
sys/arch/hp300/stand/common/hil.c: revision 1.15
usr.sbin/installboot/arch/hp300.c: revision 1.18
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.14
sys/arch/hp300/dev/rbox.c: revision 1.4
usr.sbin/installboot/arch/hp300.c: revision 1.19
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.15
sys/sys/bootblock.h: revision 1.59
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.16
usr.sbin/installboot/installboot.h: revision 1.44
sys/arch/hp300/stand/mkboot/volhdr.h: file removal
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.17
sys/arch/hp300/dev/hpib.c: revision 1.45
usr.sbin/installboot/installboot.h: revision 1.45
usr.sbin/installboot/cd9660.c: revision 1.1
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.18
sys/arch/hp300/dev/topcatreg.h: revision 1.3
usr.sbin/installboot/cd9660.c: revision 1.2
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.19
sys/arch/hp300/stand/inst/inst.c: revision 1.25
sys/arch/hp300/stand/uboot/Makefile: revision 1.12
sys/arch/hp300/dev/dvbox.c: revision 1.4
sys/arch/hp300/dev/dma.c: revision 1.45
sys/arch/hp300/stand/uboot/Makefile: revision 1.13
sys/arch/hp300/stand/common/rd.c: revision 1.16
sys/arch/hp300/stand/inst/Makefile: revision 1.12
distrib/hp300/cdroms/installcd/Makefile: revision 1.4
sys/arch/hp300/stand/mkboot/volhdr.h: revision 1.6
sys/arch/hp300/stand/common/machdep.c: revision 1.16
usr.sbin/installboot/fstypes.c: revision 1.14
sys/arch/hp300/hp300/machdep.c: revision 1.238
sys/arch/hp300/include/cpu.h: revision 1.73
sys/arch/hp300/dev/diofbreg.h: revision 1.4
sys/arch/hp300/stand/common/scsi.c: revision 1.12
sys/arch/hp300/stand/common/netio.c: revision 1.19
sys/arch/hp300/stand/common/scsi.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.22
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.20
sys/arch/hp300/stand/common/conf.h: revision 1.4
sys/arch/hp300/hp300/autoconf.c: revision 1.111
sys/arch/hp300/stand/common/conf.c: revision 1.15
sys/arch/hp300/stand/mkboot/Makefile: revision 1.12
sys/arch/hp300/stand/mkboot/Makefile: revision 1.13
sys/arch/hp300/hp300/autoconf.c: revision 1.114
sys/arch/hp300/dev/dcmreg.h: revision 1.11
sys/arch/hp300/dev/diofbvar.h: revision 1.4
sys/arch/hp300/dev/dcm.c: revision 1.91
sys/fs/cd9660/cd9660_util.c: revision 1.15
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.2

TAB/space cleanup.

installboot(8): formatting improvements

Use Ar foo instead of <foo>; this is mdoc.

Other formatting tweaks.
installboot(8): fix up markup

Don't overuse .Sy - when everything is highlighted, nothing is. Use
.Ic for options &c to get correct PostScript output (both are bold in
plain text).

Use Aq Ar inside .Pa, as both Pa and Ar are rendered as underscored
text in plain text output, and the distinction is lost.

Don't set examples in bold, but give them .Pp space around - they are
much easier to read this way.

Use consistent -width in FILES.
document how to use installboot on netbsd/vax.

PR/57909: Jan-Benedict Glaw: Don't include (build) timestamp when doing a
reproducible build
fix usage string, improve error handling.
add missing chunk for repro-build. fix gcc warnings.
avoid stringop truncation, fix copyright string to prevent assembler warnings.

Fix build as a tool (Jan-Benedict Glaw)

Fix integer overflow of strtol(3) for "loadpoint" address on ILP32 hosts.

This strtol(3) was introduced in rev 1.12 for PR/57909 after netbsd-10,
but it returns LONG_MAX (0x7FFFFFFF) for 0xFFF00000 on ILP32 hosts and
the wrong loadpoint causes "NOT ENOUGH MEMORY" error by the BOOTROMs
on loading uboot.lif on (at least) my 9000/360 and 9000/425t.

Misc cosmetic changes for mostly readability.
- KNF and add some newlines per blocks
- define and use proper bintobcd() macro
- make local functions and variables static

The same uboot.lif binaries are generated.

Rename ${PROGAOUT} -> ${PROGELF} to reflect reality.
Use proper signedness for the LIF file system data structures.

Ancient 4.3BSD used short and int for location, file size, file type,
and addresses etc. but all of them should be unsigned.

Also rename several variables and add comments for readability.
The LIF file system info can be found in "The HPDir Project" page:
https://www.hp9845.net/9845/projects/hpdir/
The same uboot.lif binaries are generated.

Add a preliminary CD boot support to uboot for preparation of PR/54455.
Briefly tested on mame, but not enalbed yet.

Recognize SCSI CD-ROM devices as a booted device properly.

Necessary for PR port-hp300/54455, to boot an md root root RAMDISK

kernel from CD-ROM without "WARNING: can't find match for bootdev:"
prompt.

Sync with src/sys/arch/hp300/stand/mkboot/volhdr.h rev 1.6.
https://mail-index.netbsd.org/source-changes/2024/05/07/msg151195.html

Use proper signedness for the LIF file system data structures.
mkboot should use this MI <sys/bootblock.h> and volhdr.h should
be removed soon.

Use MI <sys/bootblock.h> to refer LIF filesystem structures.
This should have been done when LIF definitions were initially added
to <sys/bootblock.h> for MI installboot(8).

Enable SUPPORT_CD on uboot.

Make cd9660_util.c usable in userland tools like installboot(8).

This was partially done for src/distrib/cdrom/macppc_installboot,
but more strict prototypes are necessary for native binary builds.

Install cd9660 related system headers for tools installboot(8) builds.

Reorder function prototypes per source files.

Add cd9660 support to search a bootloader file in the target file system.

Also add CD boot support for hp300, using a bootloader file in cd9660 fs.
This is a tool's part to close PR/54455.

HP 9000/300 machines read LIF directory entry allocated after
the LIF volume header at the top of the boot disk during bootstrap,
and a bootstrap file must be contiguously allocated on the disk
due to limitation of the LIF specification.

Current NetBSD/hp300's bootloader is larger than ~80KB so we have
to prepare a special 'boot' partition for FFS (that has only 8KB (ffsv1)
or 32KB (ffsv2) spaces) disks to put such a large bootloader.

On the other hand, on ISO9660 fs all files are allocated contiguously
so we can specify a bootloader file in the target ISO9660 directly
in the LIF directory entry.

Note we can simply use the existing "append" option to create bootable
CD ISO for hp300, but it looks some emulators (at leaset MAME) reject
such non-standard ISO files, i.e. with an appended bootloader file at
the end of the image.

Put a RAMDISK kernel and SYS_UBOOT into hp300 installcd to make it bootable.

This should finally close PR/54455.

Fix tools build errors on Cygwin.

Appease warnings on building tools/installboot on Cygwin.
 1.1.12.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.12.1 19-Apr-2014  tls file mcclock_frodo.c was added on branch tls-maxphys on 2014-08-20 00:03:00 +0000
 1.1.8.2 10-Aug-2014  tls Rebase.
 1.1.8.1 19-Apr-2014  tls file mcclock_frodo.c was added on branch tls-earlyentropy on 2014-08-10 06:53:57 +0000
 1.1.6.2 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.1.6.1 19-Apr-2014  yamt file mcclock_frodo.c was added on branch yamt-pagecache on 2014-05-22 11:39:46 +0000
 1.1.4.2 21-May-2014  bouyer Pull up following revision(s) (requested by tsutsui in ticket #1058):
sys/arch/hp300/conf/files.hp300: revision 1.88
sys/arch/hp300/include/autoconf.h: revision 1.13
sys/dev/ic/sti.c: revision 1.17
sys/arch/hp300/dev/frodo.c: revision 1.31
sys/arch/hp300/conf/GENERIC: revision 1.173
sys/arch/hp300/hp300/machdep.c: revision 1.229
sys/arch/hp300/dev/frodo.c: revision 1.32
sys/arch/hp300/hp300/autoconf.c: revision 1.102
sys/arch/hp300/dev/frodoreg.h: revision 1.5
sys/arch/hp300/stand/common/ite_sti.c: revision 1.1
sys/arch/hp300/stand/common/itevar.h: revision 1.16
sys/arch/hp300/hp300/autoconf.c: revision 1.105
sys/arch/hp300/dev/sti_sgcvar.h: revision 1.1
sys/arch/hp300/stand/common/apci.c: revision 1.12
sys/arch/hp300/stand/common/apci.c: revision 1.13
sys/arch/hp300/dev/dnkbd.c: revision 1.6
sys/arch/hp300/dev/dnkbd.c: revision 1.7
sys/arch/hp300/stand/inst/version: revision 1.12
sys/arch/hp300/dev/com_frodo.c: revision 1.9
sys/arch/hp300/stand/common/ite.c: revision 1.17
sys/arch/hp300/conf/GENERIC: revision 1.181
sys/arch/hp300/dev/sti_sgc.c: revision 1.1
sys/arch/hp300/stand/common/dnkbd.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.2
sys/dev/ic/stivar.h: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.21
sys/arch/hp300/conf/INSTALL: revision 1.56
sys/arch/hp300/conf/INSTALL: revision 1.58
sys/arch/hp300/stand/uboot/version: revision 1.19
sys/arch/hp300/stand/common/samachdep.h: revision 1.17
sys/arch/hp300/stand/common/clock.c: revision 1.12
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.1
sys/arch/hp300/stand/Makefile.buildboot: revision 1.34
sys/arch/hp300/conf/files.hp300: revision 1.87
Add sti at sgc framebuffer.
Ported from OpenBSD by kiyohara@.
Fix a botch on switching from apci (and dca) to MI com(4) 10 years ago.
I.e. fix apci device address per FRODO_BASE macro change
in frodoreg.h rev 1.2. Now bootloader works with serial console
on HP425e (which has only com at frodo).
Thanks to miod@openbsd for providing his 425e.
Add sti(4) at sgc screen console support. From (the late) OpenBSD/hp300.
Tested on HP9000/425e, which was sent from Miod Vallat and
demonstrated at Open Source unConference 2014 Kagawa.
Check the service switch on 425e to select apci serial console.
Taken from OpenBSD/hp300. See the following comment for details:
> * Check the service switch. On the 425e, this is a physical
> * switch, unlike other frodo-based machines, so we can use it
> * as a serial vs internal video selector, since the PROM can not
> * be configured for serial console.
Add proper RealTime Clock support for HP9000/425e.
As the OpenBSD/hp300 page says 425e doesn't have the traditional
RTC at intio (as it also lacks DCA 16550 serial at intio?),
but after a few hour investigation it turns out that
425e uses mc146818 compatible calendar clock in
the Apollo "frodo" utility chip and the frodo chip on
425e actually has the 32kHz OSC and is actually backed up
by the onboard lithium battery.
Tested on HP425e (with mcclock) and HP362 (with old rtc).
Add RTC support for HP9000/425e to bootloader too.
Also put several cleanup:
- make local functions and variables static
- use proper variable types
- some KNF
Note it turns out that extreme slowness of netboot on hp300 is
caused by the too slow access of the traditional RTC chip at intio
(i.e. netboot on 425e is so much faster than others). Oh well.
Add proper consinit(9) support for sti(4) at sgc framebuffer on hp300.
The cnattach functions for sti(4) and service switch check method
for 425e in com_frodo.c are taken from OpenBSD.
The strategy how to choose the console device in hp300_cninit() is
quite diverged from 4.4BSD and OpenBSD so it's tweaked by me.
Also put several changes in sti_sgc.c to reduce diffs from OpenBSD/hp300.
Tested on 425e and 362 (which still uses gendiofb(4), not sti(4)).
XXX: sti(4) requires uvm_km_alloc(9) and uvm_map_protect(9)
to copy and call ROM functions on the executable memory region, so
it can be called before UVM and related initializations are complete.
Probably it's time to consider about MI "deferred consinit()" API
in init_main.c (or elsewhere) for modern complicated VM system...
Also fix the apci device address in dnkbd.c as apci.c rev 1.12:
http://mail-index.netbsd.org/source-changes/2014/04/10/msg053940.html
Finally dnkbd(4) is confirmed working at least on bootloader.
Thanks again to Miod Vallat.
Make the Apollo Domain keyboard actually work.
Tested on HP9000/425e and the keyboard model A1630-82001 R2 (RX-60857-HW)
provided by Miod Vallat. Mouse support needs more work.
Pull random notes on the Apollo Domain keyboard from ancient PR/3528.
Bump versions to denote recent 425e related changes.
Probe mcclock only on 425e to avoid an extra "not configured" message.
Add and enable sti(4) at sgc in install kernels for 425e.
Tested on both serial console and framebuffer console.
(switched by the service switch on the back panel)
 1.1.4.1 19-Apr-2014  bouyer file mcclock_frodo.c was added on branch netbsd-6 on 2014-05-21 20:56:36 +0000
 1.1.2.2 18-May-2014  rmind sync with head
 1.1.2.1 19-Apr-2014  rmind file mcclock_frodo.c was added on branch rmind-smpnet on 2014-05-18 17:45:07 +0000
 1.3 21-Jan-2002  jdolecek Switch to MI dev/md_root.c for archs which don't have any special
memory disk hooks (i.e. everything except atari).
 1.2 17-Mar-1999  sommerfe branches: 1.2.22; 1.2.26;
defopt MINIROOTSIZE
 1.1 21-Sep-1997  thorpej branches: 1.1.2;
Add support for mounting a memory disk as the root device.
 1.1.2.2 29-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.1.2.1 21-Sep-1997  thorpej file md_root.c was added on branch marc-pcmcia on 1997-09-29 07:20:06 +0000
 1.2.26.1 28-Feb-2002  nathanw Catch up to -current.
 1.2.22.1 11-Feb-2002  jdolecek Sync w/ -current.
 1.56 26-Nov-2022  tsutsui Misc KNF and cosmetics.

No binary change.
 1.55 05-Jul-2021  tsutsui Pull HP-IB probe fixes from OpenBSD/hp300.

https://marc.info/?l=openbsd-cvs&m=113217630426615&w=2
> Overhaul the way HP-IB devices are probed. We will now do an exhaustive
> probe of the (slave, punit) tuple space, since this is the only way we
> can get a dual disk or dual tape enclosure to attach two devices of the
> same kind.

This allows using multiple rd(4) disk images on the same slave emulated
by HPDisk (and probably the real 9122D with dual floppy disk drives).

Thanks to Miod Vallat for suggesting this fix.
 1.54 25-Jul-2014  dholland branches: 1.54.32; 1.54.44;
Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.
 1.53 25-Jul-2014  dholland Add d_discard to all struct bdevsw instances I could find.

I've set them all to nodiscard. Some of them (wd, dk, vnd, ld,
raidframe, maybe cgd) should be implemented for real.
 1.52 24-Mar-2014  christos branches: 1.52.2;
- remove unused
- use cpu_{g,s}etmodel
 1.51 16-Mar-2014  dholland Change (mostly mechanically) every cdevsw/bdevsw I can find to use
designated initializers.

I have not built every extant kernel so I have probably broken at
least one build; however I've also found and fixed some wrong
cdevsw/bdevsw entries so even if so I think we come out ahead.
 1.50 05-Dec-2009  pooka branches: 1.50.12; 1.50.22; 1.50.26;
Convert tsleep(&lbolt) to kpause(). Make ltsleep/mtsleep on lbolt
illegal. I examined all places where lbolt is referenced to make
sure there were pointer aliases of it passed to tsleep, but put a
KASSERT in m/ltsleep() just to be sure.
 1.49 26-May-2009  he Remove a now-unused local variable.
 1.48 26-May-2009  ad Build failure, reported by he@
 1.47 18-May-2009  ad Don't pass a buffer to physio(), let it be allocated dynamically.

This leaves only scsipi and atapi doing the same.
 1.46 13-Jan-2009  yamt g/c BUFQ_FOO() macros and use bufq_foo() directly.
 1.45 17-Jun-2008  he branches: 1.45.4;
Correct minor mistakes and restore this to a buildable state.
 1.44 13-Jun-2008  cegger use device_lookup_private to get softc
 1.43 28-Apr-2008  martin branches: 1.43.2; 1.43.4;
Remove clause 3 and 4 from TNF licenses
 1.42 29-Mar-2008  tsutsui branches: 1.42.2; 1.42.4;
Split device_t/softc, and misc cosmetic changes.
 1.41 02-Jan-2008  ad branches: 1.41.6;
Merge vmlocking2 to head.
 1.40 17-Oct-2007  garbled branches: 1.40.2; 1.40.4; 1.40.8;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.39 29-Jul-2007  ad branches: 1.39.6;
It's not a good idea for device drivers to modify b_flags, as they don't
need to understand the locking around that field. Instead of setting
B_ERROR, set b_error instead. b_error is 'owned' by whoever completes
the I/O request.
 1.38 12-Jul-2007  he branches: 1.38.2; 1.38.4;
Adapt to the new signature of callout_init().
 1.37 04-Mar-2007  christos branches: 1.37.2; 1.37.10;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.36 15-Feb-2007  reinoud branches: 1.36.2;
Rename the B_XXX flag to B_DEVPRIVATE flag since it was never used for
debugging and its main use is in device drivers. Its used there to signal
that the flagged buffer has a special meaning or should be handled
differently.

OK'd by Bill Sudenmund on tech-kern.
 1.35 21-Jul-2006  tsutsui Some KNF.
 1.34 28-Mar-2006  thorpej Use device_unit().
 1.33 19-Mar-2006  tsutsui TAB/space cleanup.
 1.32 23-Feb-2006  thorpej branches: 1.32.2; 1.32.4; 1.32.6;
Use device_parent().
 1.31 11-Dec-2005  christos branches: 1.31.2; 1.31.4; 1.31.6;
merge ktrace-lwp.
 1.30 15-Oct-2005  yamt - change the way to specify a bufq strategy. (by string rather than by number)
- rather than embedding bufq_state in driver softc,
have a pointer to the former.
- move bufq related functions from kern/subr_disk.c to kern/subr_bufq.c.
- rename method to strategy for consistency.
- move some definitions which don't need to be exposed to the rest of kernel
from sys/bufq.h to sys/bufq_impl.h.
(is it better to move it to kern/ or somewhere?)
- fix some obvious breakage in dev/qbus/ts.c. (not tested)
 1.29 02-Jun-2005  tsutsui branches: 1.29.2;
Add const.
 1.28 19-Feb-2005  tsutsui Include "ioconf.h" for struct cfdriver *_cd decls.
 1.27 28-Oct-2004  yamt branches: 1.27.4; 1.27.6;
move buffer queue related stuffs from buf.h to their own header, bufq.h.
 1.26 22-Sep-2004  yamt fix printf formats to match with sys/buf.h 1.75.
 1.25 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.24 17-Nov-2003  tsutsui TAB/space cleanup.
 1.23 29-Jun-2003  fvdl branches: 1.23.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.22 29-Jun-2003  thorpej Adapt to ktrace/lwp changes.
 1.21 23-Oct-2002  jdolecek merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.20 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.19 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.18 06-Sep-2002  gehenna Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.17 26-Jul-2002  hannken Convert to new device buffer queue interface.

Approved by: Jason R. Thorpe <thorpej@netbsd.org>
 1.16 15-Mar-2002  gmcgarry branches: 1.16.4;
Add RCSIDs.
 1.15 23-Feb-2002  gmcgarry Unnecessary to cast splx() to void.
 1.14 19-May-2000  thorpej branches: 1.14.6; 1.14.8; 1.14.12;
A foolish consistency; most parts of the kernel use bp->b_data, so
change these from bp->b_un.b_addr to bp->b_data, as well. This also
allows us more flexibility to experiment with other data buffer types
hung off of struct buf.
 1.13 23-Mar-2000  thorpej New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.12 06-Feb-2000  frueauf remove unused variable *dp.
 1.11 21-Jan-2000  thorpej Update for sys/buf.h/disksort_*() changes.
 1.10 12-Jan-1998  thorpej branches: 1.10.14;
Update for changes to config.
 1.9 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.8 31-Mar-1997  scottr branches: 1.8.4;
Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.7 30-Jan-1997  thorpej Convert to new-style autoconfiguration; old-style config is no longer
supported.
 1.6 14-Oct-1996  thorpej Set the device class on non-dull devices. This is a transitional thing.
 1.5 13-Oct-1996  christos backout previous kprintf changes
 1.4 11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.3 14-Feb-1996  thorpej All interrupt routines (except the HIL; don't ask) now take a pointer
to a softc, rather than a unit number. Add a "dq_softc" member
to struct devqueue; this is a temporary measure until the
dma/controller/device callback spaghetti is untangled.

YAY! No more need for dcafastservice!

HIL: squish instances of "(void) splhil()" and "(void) spl0();".
 1.2 02-Dec-1995  thorpej Use a "match/attach" rather than "init" scheme for probing devices.
This is a step towards getting the drivers ready for new config.
 1.1 02-Oct-1995  thorpej Driver for HP 7974a, 7978a/b, 7979a, 7980a, and 7980xc 9-track HP-IB tapes.
Original version contributed to Utah by Mt. Xinu. Ported to 4.4BSD by
Mark Davies and Andrew Vignaux.
 1.8.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.10.14.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.14.12.6 11-Nov-2002  nathanw Catch up to -current
 1.14.12.5 18-Oct-2002  nathanw Catch up to -current.
 1.14.12.4 17-Sep-2002  nathanw Catch up to -current.
 1.14.12.3 01-Aug-2002  nathanw Catch up to -current.
 1.14.12.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.14.12.1 28-Feb-2002  nathanw Catch up to -current.
 1.14.8.4 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.14.8.3 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.14.8.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.14.8.1 16-Mar-2002  jdolecek Catch up with -current.
 1.14.6.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.16.4.2 30-Aug-2002  gehenna catch up with -current.
 1.16.4.1 17-May-2002  gehenna Add device switch.
 1.23.2.9 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.23.2.8 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.23.2.7 24-Jan-2005  skrll Adapt to branch.
 1.23.2.6 02-Nov-2004  skrll Sync with HEAD.
 1.23.2.5 24-Sep-2004  skrll Sync with HEAD.
 1.23.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.23.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.23.2.2 03-Sep-2004  skrll Sync with HEAD
 1.23.2.1 03-Aug-2004  skrll Sync with HEAD
 1.27.6.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.27.4.1 29-Apr-2005  kent sync with -current
 1.29.2.5 21-Jan-2008  yamt sync with head
 1.29.2.4 03-Sep-2007  yamt sync with head.
 1.29.2.3 26-Feb-2007  yamt sync with head.
 1.29.2.2 30-Dec-2006  yamt sync with head.
 1.29.2.1 21-Jun-2006  yamt sync with head.
 1.31.6.1 22-Apr-2006  simonb Sync with head.
 1.31.4.1 09-Sep-2006  rpaulo sync with head
 1.31.2.1 01-Mar-2006  yamt sync with head.
 1.32.6.2 31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.32.6.1 28-Mar-2006  tron Merge 2006-03-28 NetBSD-current into the "peter-altq" branch.
 1.32.4.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.32.2.2 11-Aug-2006  yamt sync with head
 1.32.2.1 01-Apr-2006  yamt sync with head.
 1.36.2.1 12-Mar-2007  rmind Sync with HEAD.
 1.37.10.1 03-Oct-2007  garbled Sync with HEAD
 1.37.2.2 19-Aug-2007  ad - Back out the biodone() changes.
- Eliminate B_ERROR (from HEAD).
 1.37.2.1 15-Jul-2007  ad Sync with head.
 1.38.4.1 15-Aug-2007  skrll Sync with HEAD.
 1.38.2.1 07-Aug-2007  matt Sync with HEAD.
 1.39.6.2 09-Jan-2008  matt sync with HEAD
 1.39.6.1 06-Nov-2007  matt sync with HEAD
 1.40.8.1 02-Jan-2008  bouyer Sync with HEAD
 1.40.4.1 31-Dec-2007  ad Make compile with new buffer cache locking scheme.

XXX This should be largely MI, please do not make another clone of disksubr.c.
 1.40.2.1 18-Feb-2008  mjf Sync with HEAD.
 1.41.6.4 17-Jan-2009  mjf Sync with HEAD.
 1.41.6.3 29-Jun-2008  mjf Sync with HEAD.
 1.41.6.2 02-Jun-2008  mjf Sync with HEAD.
 1.41.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.42.4.4 11-Mar-2010  yamt sync with head
 1.42.4.3 20-Jun-2009  yamt sync with head
 1.42.4.2 04-May-2009  yamt sync with head.
 1.42.4.1 16-May-2008  yamt sync with head.
 1.42.2.2 17-Jun-2008  yamt sync with head.
 1.42.2.1 18-May-2008  yamt sync with head.
 1.43.4.1 18-Jun-2008  simonb Sync with head.
 1.43.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.45.4.1 19-Jan-2009  skrll Sync with HEAD.
 1.50.26.1 18-May-2014  rmind sync with head
 1.50.22.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.50.12.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.52.2.1 10-Aug-2014  tls Rebase.
 1.54.44.1 01-Aug-2021  thorpej Sync with HEAD.
 1.54.32.1 14-Jul-2021  martin Pull up following revision(s) (requested by tsutsui in ticket #1323):

sys/arch/hp300/dev/rd.c: revision 1.109
sys/arch/hp300/stand/Makefile.buildboot: revision 1.37
sys/arch/hp300/stand/common/ct.c: revision 1.8
sys/arch/hp300/dev/hpibvar.h: revision 1.22
sys/arch/hp300/dev/ct.c: revision 1.62
sys/arch/hp300/dev/hpibvar.h: revision 1.23
sys/arch/hp300/dev/ct.c: revision 1.63
sys/arch/hp300/dev/hpibvar.h: revision 1.24
sys/arch/hp300/dev/mt.c: revision 1.55
sys/arch/hp300/dev/rdreg.h: revision 1.14
sys/arch/hp300/dev/hpib.c: revision 1.43 (via patch)
sys/arch/hp300/dev/rdreg.h: revision 1.15
sys/arch/hp300/dev/rdreg.h: revision 1.16
sys/arch/hp300/dev/rdreg.h: revision 1.17
etc/etc.hp300/MAKEDEV.conf: revision 1.15
sys/arch/hp300/stand/common/hpibvar.h: revision 1.6
sys/arch/hp300/stand/common/rd.c: revision 1.11
sys/arch/hp300/dev/ctreg.h: revision 1.11
sys/arch/hp300/dev/rdvar.h: revision 1.24
sys/arch/hp300/dev/rdvar.h: revision 1.25
sys/arch/hp300/dev/rdvar.h: revision 1.26
sys/arch/hp300/dev/rd.c: revision 1.103
sys/arch/hp300/dev/rd.c: revision 1.104
sys/arch/hp300/dev/rd.c: revision 1.105
sys/arch/hp300/dev/rd.c: revision 1.106
sys/arch/hp300/dev/rd.c: revision 1.107
sys/arch/hp300/dev/rd.c: revision 1.108

Consistently use #define<tab> here.

Consistently use #define<tab> as rdreg.h.

No need to bother to use aprint_debug(9) inside #ifdef DEBUG block.

Pull HP-IB probe fixes from OpenBSD/hp300.
https://marc.info/?l=openbsd-cvs&m=113217630426615&w=2

Overhaul the way HP-IB devices are probed. We will now do an exhaustive
probe of the (slave, punit) tuple space, since this is the only way we
can get a dual disk or dual tape enclosure to attach two devices of the
same kind.

This allows using multiple rd(4) disk images on the same slave emulated
by HPDisk (and probably the real 9122D with dual floppy disk drives).

Thanks to Miod Vallat for suggesting this fix.

Move attach messages from common rdident() to explicit rdattach().

Cleanup duplicated CS/80 indentify structures. From OpenBSD.
https://marc.info/?l=openbsd-cvs&m=113227249626888&w=2

Define the CS/80 identify structure only once and correctly, instead of
duplicating it in every CS/80 driver and using an hardcoded number for
its size.
No functional change.
https://marc.info/?l=openbsd-cvs&m=113273001020159&w=2

Pick HP-IB describe structures changes from main kernel code here as well.

Add support of multiple rd(4) disks on all punits for HPDisk.

Special thanks to Anders Gustafsson, the author of "HPDisk"
(GPIB disk emulator) http://www.dalton.ax/hpdisk/
for providing bare boards and improving firmwares for NetBSD/hp300.

Specify -fno-unwind-tables to shrink binaries.

Before:
text data bss dec hex filename
77902 4328 137120 219350 358d6 uboot

After:
text data bss dec hex filename
64186 4328 137120 205634 32342 uboot

Create rd3 device nodes, for HPDisk.

Add Device and drive info of 2202A, 7908A, 7911A, and 7941A.

Geometries and description info are taken from hpdrive.ini.sample
in HPDrive. Briefly tested on HPDisk.

Print rd(4) capacity and geometry info as sd(4) and wd(4) do.

Before:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 698 cylinders, 13 heads, 1116102 blocks, 512 bytes/block

After:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 544 MB, 698 cyl, 13 head, 123 sec, 512 bytes/block x 1116102 blocks
 1.9 19-Aug-2023  andvar fix typos in documented error codes.
 1.8 26-Nov-2022  tsutsui Misc KNF and cosmetics.

No binary change.
 1.7 05-Dec-2021  msaitoh s/corect/correct/ in comment.
 1.6 28-May-2019  msaitoh s/recieve/receive/
 1.5 06-Mar-2011  tsutsui branches: 1.5.56;
Remove trailing spaces.
 1.4 11-Dec-2005  christos branches: 1.4.100; 1.4.106;
merge ktrace-lwp.
 1.3 24-Feb-2004  wiz occured -> occurred. From Peter Postma.
 1.2 12-Jun-2001  wiz branches: 1.2.8; 1.2.24;
receive, not recieve
 1.1 02-Oct-1995  thorpej branches: 1.1.44;
Driver for HP 7974a, 7978a/b, 7979a, 7980a, and 7980xc 9-track HP-IB tapes.
Original version contributed to Utah by Mt. Xinu. Ported to 4.4BSD by
Mark Davies and Andrew Vignaux.
 1.1.44.1 21-Jun-2001  nathanw Catch up to -current.
 1.2.24.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.2.24.2 18-Sep-2004  skrll Sync with HEAD.
 1.2.24.1 03-Aug-2004  skrll Sync with HEAD
 1.2.8.2 12-Jun-2001  wiz receive, not recieve
 1.2.8.1 12-Jun-2001  wiz file mtreg.h was added on branch nathanw_sa on 2001-06-12 15:17:19 +0000
 1.4.106.1 06-Jun-2011  jruoho Sync with HEAD.
 1.4.100.1 21-Apr-2011  rmind sync with head
 1.5.56.1 10-Jun-2019  christos Sync with HEAD
 1.44 16-Jan-2024  thorpej Several years ago, the interrupt priority levels for devices were "flattened"
such that IPL_BIO, IPL_NET, and IPL_TTY (logical interrupt priority levels)
became aliases of IPL_VM (the logical interrupt priority level above which
memory allocation is not allowed). Unfortuantely, this meant that any
use of these logical interrupt priority levels to differentiate between
different interrupt service routines at the same auto-vectored interrupt
level was pointless... "when everyone is special, no one is".

Before this flattening happened, these distinct logical interrupt priority
levels levels were dynamically mapped to physical auto-vectored interrupt
levels based on which types of devices registered themselves at which auto-
vectored level. Now, splbio(), splnet(), etc. are all equivalent to splvm(),
which effectively blocks all device interrupts.

Switch to using the ISRPRI_* values provided by the common m68k interrupt
dispatch code, which allows interrupt handlers for devices that are more
latency-sensitive to be sorted earlier in the list of handlers at a given
auto-vectored interrupt level, as was originally intended.
 1.43 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.42 24-Apr-2021  thorpej branches: 1.42.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.41 24-Mar-2014  christos branches: 1.41.44;
- remove unused
- use cpu_{g,s}etmodel
 1.40 28-Apr-2008  martin branches: 1.40.34; 1.40.44; 1.40.50;
Remove clause 3 and 4 from TNF licenses
 1.39 29-Mar-2008  tsutsui branches: 1.39.2; 1.39.4;
Split device_t/softc, and misc cosmetic changes.
 1.38 05-Dec-2007  tsutsui branches: 1.38.12;
Use queue(3) macro.
 1.37 17-Oct-2007  garbled branches: 1.37.2; 1.37.4;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.36 12-Jul-2007  he branches: 1.36.8; 1.36.10;
Adapt to the new signature of callout_init().
 1.35 21-Jul-2006  tsutsui branches: 1.35.14; 1.35.22;
Some KNF.
 1.34 19-Mar-2006  tsutsui TAB/space cleanup.
 1.33 23-Feb-2006  thorpej branches: 1.33.2; 1.33.4; 1.33.6;
Use device_parent().
 1.32 11-Dec-2005  christos branches: 1.32.2; 1.32.4; 1.32.6;
merge ktrace-lwp.
 1.31 28-Aug-2004  thorpej branches: 1.31.12;
Use ANSI function decls, static, and const.
 1.30 17-Nov-2003  tsutsui TAB/space cleanup.
 1.29 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.28 05-Jul-2003  tsutsui Some cosmetics on bus_space_tag_t initialization.
 1.27 24-May-2003  gmcgarry branches: 1.27.2;
Clean-up the DIO bus. Includes two main changes:

1) Pass address and ipl locators at attachment;
2) Remove hack which made the internal HP-IB controller
look like a DIO device.

The hack to allow the nhpib driver to support internal and DIO
controllers appears to be a leftover from 4.3BD where it was not
possible to have a driver attach to different busses. NetBSD has
supported bus-dependent attachments for a long time.
 1.26 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.25 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.24 15-Mar-2002  gmcgarry Add RCSIDs.
 1.23 25-Mar-2000  frueauf branches: 1.23.8; 1.23.12;
Fix typo: calllout_reset -> callout_reset.
 1.22 23-Mar-2000  thorpej New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.21 17-Sep-1999  thorpej branches: 1.21.2;
Centralize the declaration and clearing of `cold'.
 1.20 01-Jul-1998  thorpej Dont' check sysflags here... just look for NHPIB or IHPIB device IDs.
 1.19 12-Jan-1998  thorpej Update for changes to config.
 1.18 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.17 05-May-1997  thorpej branches: 1.17.4;
Use dio_intr_establish().
 1.16 14-Apr-1997  thorpej Update for interrupt function and header name changes.
 1.15 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.14 30-Jan-1997  thorpej - Convert these drivers to new-style autoconfiguration. Old-style
configuration is no longer supported.
- Use a much more obvious HP-IB job queueing scheme.
 1.13 13-Oct-1996  christos backout previous kprintf changes
 1.12 11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.11 18-May-1996  thorpej Back most (not all) of the previous delay-related changes now that
delay is calibrated properly.
 1.10 17-May-1996  thorpej Change "DELAY(1)" to "DELAY(5)". This is basically equivalent to how
the old implementation of DELAY() behaved with small values.
 1.9 14-Feb-1996  thorpej All interrupt routines (except the HIL; don't ask) now take a pointer
to a softc, rather than a unit number. Add a "dq_softc" member
to struct devqueue; this is a temporary measure until the
dma/controller/device callback spaghetti is untangled.

YAY! No more need for dcafastservice!

HIL: squish instances of "(void) splhil()" and "(void) spl0();".
 1.8 02-Dec-1995  thorpej Use a "match/attach" rather than "init" scheme for probing devices.
This is a step towards getting the drivers ready for new config.
 1.7 19-Nov-1995  thorpej Do an indirect driver a little more like an indirect driver would like to
be done. Set up a structure filled with function pointers in the
controller-specific probe routines, and jump through them, instead of
if()'ing our way though each operation.

Be a little more discriptive; print out the controller type found
during the probe in a way that's somewhat meaningful.
 1.6 07-Jan-1995  mycroft Various diffs from Mike Hibler; necessary for mt driver.
 1.5 26-Oct-1994  cgd new RCS ID format.
 1.4 23-May-1994  mycroft Merge with 4.4-Lite.
 1.3 05-May-1994  mycroft Most of the changes needed to make this continue to run.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.17.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.21.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.23.12.2 18-Oct-2002  nathanw Catch up to -current.
 1.23.12.1 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.23.8.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.23.8.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.27.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.27.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.27.2.2 03-Sep-2004  skrll Sync with HEAD
 1.27.2.1 03-Aug-2004  skrll Sync with HEAD
 1.31.12.4 07-Dec-2007  yamt sync with head
 1.31.12.3 03-Sep-2007  yamt sync with head.
 1.31.12.2 30-Dec-2006  yamt sync with head.
 1.31.12.1 21-Jun-2006  yamt sync with head.
 1.32.6.1 22-Apr-2006  simonb Sync with head.
 1.32.4.1 09-Sep-2006  rpaulo sync with head
 1.32.2.1 01-Mar-2006  yamt sync with head.
 1.33.6.1 28-Mar-2006  tron Merge 2006-03-28 NetBSD-current into the "peter-altq" branch.
 1.33.4.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.33.2.2 11-Aug-2006  yamt sync with head
 1.33.2.1 01-Apr-2006  yamt sync with head.
 1.35.22.1 03-Oct-2007  garbled Sync with HEAD
 1.35.14.1 15-Jul-2007  ad Sync with head.
 1.36.10.2 09-Jan-2008  matt sync with HEAD
 1.36.10.1 06-Nov-2007  matt sync with HEAD
 1.36.8.1 09-Dec-2007  jmcneill Sync with HEAD.
 1.37.4.1 08-Dec-2007  ad Sync with head.
 1.37.2.1 08-Dec-2007  mjf Sync with HEAD.
 1.38.12.2 02-Jun-2008  mjf Sync with HEAD.
 1.38.12.1 03-Apr-2008  mjf Sync with HEAD.
 1.39.4.1 16-May-2008  yamt sync with head.
 1.39.2.1 18-May-2008  yamt sync with head.
 1.40.50.1 18-May-2014  rmind sync with head
 1.40.44.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.40.34.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.41.44.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.42.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.7 11-Dec-2005  christos merge ktrace-lwp.
 1.6 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.5 07-Jan-1995  mycroft branches: 1.5.66;
Various diffs from Mike Hibler; necessary for mt driver.
 1.4 26-Oct-1994  cgd new RCS ID format.
 1.3 23-May-1994  mycroft Merge with 4.4-Lite.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.5.66.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.5.66.2 18-Sep-2004  skrll Sync with HEAD.
 1.5.66.1 03-Aug-2004  skrll Sync with HEAD
 1.48 18-Nov-2020  thorpej malloc(9) -> kmem(9)
 1.47 03-Sep-2018  riastradh branches: 1.47.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.46 25-Mar-2017  tsutsui branches: 1.46.12; 1.46.14;
Include <sys/kernel.h> for hz.

Compile test only. (no HP-IB devices here)
 1.45 25-Jul-2014  dholland branches: 1.45.4; 1.45.8; 1.45.12;
Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.
 1.44 16-Mar-2014  dholland branches: 1.44.2;
Change (mostly mechanically) every cdevsw/bdevsw I can find to use
designated initializers.

I have not built every extant kernel so I have probably broken at
least one build; however I've also found and fixed some wrong
cdevsw/bdevsw entries so even if so I think we come out ahead.
 1.43 28-Jul-2011  uebayasi branches: 1.43.2; 1.43.12; 1.43.16;
dev_t is uint64_t; use PRIx64 to print it. Fix DEBUG build.
 1.42 18-Jun-2008  tsutsui Make this compile.
 1.41 13-Jun-2008  cegger use device_lookup_private to get softc
 1.40 28-Apr-2008  martin branches: 1.40.2; 1.40.4;
Remove clause 3 and 4 from TNF licenses
 1.39 29-Mar-2008  tsutsui branches: 1.39.2; 1.39.4;
Split device_t/softc, and misc cosmetic changes.
 1.38 17-Oct-2007  garbled branches: 1.38.16;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.37 12-Jul-2007  he branches: 1.37.10;
Adapt to the new signature of callout_init().
 1.36 04-Mar-2007  christos branches: 1.36.2; 1.36.10;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.35 16-Feb-2007  ad branches: 1.35.2;
More spllowersoftclock() fallout.
 1.34 21-Jul-2006  tsutsui Some KNF.
 1.33 28-Mar-2006  thorpej Use device_unit().
 1.32 23-Feb-2006  thorpej branches: 1.32.2; 1.32.4; 1.32.6;
Use device_parent().
 1.31 11-Dec-2005  christos branches: 1.31.2; 1.31.4; 1.31.6;
merge ktrace-lwp.
 1.30 19-Feb-2005  tsutsui branches: 1.30.6;
Include "ioconf.h" for struct cfdriver *_cd decls.
 1.29 28-Aug-2004  thorpej branches: 1.29.4; 1.29.6;
Use ANSI function decls, static, and const.
 1.28 17-Nov-2003  tsutsui TAB/space cleanup.
 1.27 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.26 29-Jun-2003  fvdl branches: 1.26.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.25 29-Jun-2003  thorpej Adapt to ktrace/lwp changes.
 1.24 23-Oct-2002  jdolecek merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.23 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.22 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.21 06-Sep-2002  gehenna Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.20 15-Mar-2002  gmcgarry branches: 1.20.4;
Add RCSIDs.
 1.19 27-May-2000  thorpej branches: 1.19.6; 1.19.8; 1.19.12;
sleep() -> tsleep()
 1.18 23-Mar-2000  thorpej New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.17 05-Aug-1999  thorpej branches: 1.17.2;
Change the semantics of splsoftclock() to be like other spl*() functions,
that is priority is rasied. Add a new spllowersoftclock() to provide the
atomic drop-to-softclock semantics that the old splsoftclock() provided,
and update calls accordingly.

This fixes a problem with using the "rnd" pseudo-device from within
interrupt context to extract random data (e.g. from within the softnet
interrupt) where doing so would incorrectly unblock interrupts (causing
all sorts of lossage).

XXX 4 platforms do not have priority-raising capability: newsmips, sparc,
XXX sparc64, and VAX. This platforms still have this bug until their
XXX spl*() functions are fixed.
 1.16 12-Jan-1998  thorpej Update for changes to config.
 1.15 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.14 18-Jul-1997  jtk branches: 1.14.2;
remove old *_UNK style default defines, use standard names from locators.h
 1.13 02-Apr-1997  scottr Fix printf() and other warnings when compiled with DEBUG defined.
 1.12 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.11 30-Jan-1997  thorpej Convert to new-style autoconfiguration; old-style config is no longer
supported.
 1.10 13-Oct-1996  christos backout previous kprintf changes
 1.9 11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.8 14-Feb-1996  thorpej All interrupt routines (except the HIL; don't ask) now take a pointer
to a softc, rather than a unit number. Add a "dq_softc" member
to struct devqueue; this is a temporary measure until the
dma/controller/device callback spaghetti is untangled.

YAY! No more need for dcafastservice!

HIL: squish instances of "(void) splhil()" and "(void) spl0();".
 1.7 02-Dec-1995  thorpej Use a "match/attach" rather than "init" scheme for probing devices.
This is a step towards getting the drivers ready for new config.
 1.6 26-Oct-1994  cgd new RCS ID format.
 1.5 25-May-1994  mycroft Merge with 4.4-Lite.
 1.4 05-May-1994  mycroft Most of the changes needed to make this continue to run.
 1.3 10-Feb-1994  mycroft Add arg to ioctl functions. Clean up #includes.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.14.2.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.17.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.19.12.4 11-Nov-2002  nathanw Catch up to -current
 1.19.12.3 18-Oct-2002  nathanw Catch up to -current.
 1.19.12.2 17-Sep-2002  nathanw Catch up to -current.
 1.19.12.1 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.19.8.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.19.8.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.19.6.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.20.4.1 17-May-2002  gehenna Add device switch.
 1.26.2.6 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.26.2.5 24-Jan-2005  skrll Adapt to branch.
 1.26.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.26.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.26.2.2 03-Sep-2004  skrll Sync with HEAD
 1.26.2.1 03-Aug-2004  skrll Sync with HEAD
 1.29.6.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.29.4.1 29-Apr-2005  kent sync with -current
 1.30.6.4 03-Sep-2007  yamt sync with head.
 1.30.6.3 26-Feb-2007  yamt sync with head.
 1.30.6.2 30-Dec-2006  yamt sync with head.
 1.30.6.1 21-Jun-2006  yamt sync with head.
 1.31.6.1 22-Apr-2006  simonb Sync with head.
 1.31.4.1 09-Sep-2006  rpaulo sync with head
 1.31.2.1 01-Mar-2006  yamt sync with head.
 1.32.6.1 31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.32.4.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.32.2.2 11-Aug-2006  yamt sync with head
 1.32.2.1 01-Apr-2006  yamt sync with head.
 1.35.2.1 12-Mar-2007  rmind Sync with HEAD.
 1.36.10.1 03-Oct-2007  garbled Sync with HEAD
 1.36.2.1 15-Jul-2007  ad Sync with head.
 1.37.10.1 06-Nov-2007  matt sync with HEAD
 1.38.16.3 29-Jun-2008  mjf Sync with HEAD.
 1.38.16.2 02-Jun-2008  mjf Sync with HEAD.
 1.38.16.1 03-Apr-2008  mjf Sync with HEAD.
 1.39.4.2 04-May-2009  yamt sync with head.
 1.39.4.1 16-May-2008  yamt sync with head.
 1.39.2.2 17-Jun-2008  yamt sync with head.
 1.39.2.1 18-May-2008  yamt sync with head.
 1.40.4.1 18-Jun-2008  simonb Sync with head.
 1.40.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.43.16.1 18-May-2014  rmind sync with head
 1.43.12.2 03-Dec-2017  jdolecek update from HEAD
 1.43.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.43.2.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.44.2.1 10-Aug-2014  tls Rebase.
 1.45.12.1 21-Apr-2017  bouyer Sync with HEAD
 1.45.8.1 26-Apr-2017  pgoyette Sync with HEAD
 1.45.4.1 28-Aug-2017  skrll Sync with HEAD
 1.46.14.1 10-Jun-2019  christos Sync with HEAD
 1.46.12.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.47.12.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.6 11-Dec-2005  christos merge ktrace-lwp.
 1.5 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.4 26-Oct-1994  cgd branches: 1.4.66;
new RCS ID format.
 1.3 25-May-1994  mycroft Merge with 4.4-Lite.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.4.66.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.66.2 18-Sep-2004  skrll Sync with HEAD.
 1.4.66.1 03-Aug-2004  skrll Sync with HEAD
 1.5 27-May-2025  tsutsui Use C99 designated initializers for wscons structures.
 1.4 15-Jan-2023  tsutsui branches: 1.4.6;
TAB/space cleanup.
 1.3 18-Feb-2011  tsutsui branches: 1.3.2; 1.3.6; 1.3.90;
Use aprint_normal(9) and variants.
 1.2 12-Feb-2011  tsutsui - make local functions static
- some KNF
 1.1 06-Feb-2011  tsutsui branches: 1.1.2;
Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.1.2.4 05-Mar-2011  bouyer Sync with HEAD
 1.1.2.3 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.2 08-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 06-Feb-2011  bouyer file rbox.c was added on branch bouyer-quota2 on 2011-02-08 16:19:21 +0000
 1.3.90.1 22-Jun-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #722):

sys/fs/cd9660/cd9660_util.c: revision 1.16
sys/arch/hp300/stand/common/clock.c: revision 1.14
sys/arch/hp300/stand/common/scsireg.h: revision 1.5
sys/arch/hp300/stand/common/scsireg.h: revision 1.6
sys/arch/hp300/stand/Makefile.buildboot: revision 1.38
sys/arch/hp300/include/bus.h: revision 1.23
sys/arch/hp300/stand/Makefile.buildboot: revision 1.39
sys/arch/hp300/stand/common/sd.c: revision 1.12
sys/arch/hp300/stand/common/prf.c: revision 1.6
sys/arch/hp300/stand/common/sd.c: revision 1.13
usr.sbin/installboot/installboot.8: revision 1.106
usr.sbin/installboot/Makefile: revision 1.59
sys/arch/hp300/stand/common/devopen.c: revision 1.14
usr.sbin/installboot/installboot.8: revision 1.107
sys/arch/hp300/stand/common/ite_dumb.c: revision 1.2
sys/arch/hp300/stand/common/devopen.c: revision 1.15
usr.sbin/installboot/installboot.8: revision 1.108
sys/fs/cd9660/cd9660_extern.h: revision 1.29
usr.sbin/installboot/installboot.8: revision 1.109
tools/Makefile.nbincludes: revision 1.11 (patch)
sys/arch/hp300/dev/rboxreg.h: revision 1.3
sys/arch/hp300/stand/common/scsivar.h: revision 1.5
sys/arch/hp300/dev/dnkbd.c: revision 1.14
sys/arch/hp300/hp300/trap.c: revision 1.156
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.12
sys/arch/hp300/dev/frodoreg.h: revision 1.6
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.13
sys/arch/hp300/stand/common/ite_sti.c: revision 1.2
sys/arch/hp300/stand/common/hil.c: revision 1.15
usr.sbin/installboot/arch/hp300.c: revision 1.18
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.14
sys/arch/hp300/dev/rbox.c: revision 1.4
usr.sbin/installboot/arch/hp300.c: revision 1.19
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.15
sys/sys/bootblock.h: revision 1.59
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.16
usr.sbin/installboot/installboot.h: revision 1.44
sys/arch/hp300/stand/mkboot/volhdr.h: file removal
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.17
sys/arch/hp300/dev/hpib.c: revision 1.45
usr.sbin/installboot/installboot.h: revision 1.45
usr.sbin/installboot/cd9660.c: revision 1.1
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.18
sys/arch/hp300/dev/topcatreg.h: revision 1.3
usr.sbin/installboot/cd9660.c: revision 1.2
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.19
sys/arch/hp300/stand/inst/inst.c: revision 1.25
sys/arch/hp300/stand/uboot/Makefile: revision 1.12
sys/arch/hp300/dev/dvbox.c: revision 1.4
sys/arch/hp300/dev/dma.c: revision 1.45
sys/arch/hp300/stand/uboot/Makefile: revision 1.13
sys/arch/hp300/stand/common/rd.c: revision 1.16
sys/arch/hp300/stand/inst/Makefile: revision 1.12
distrib/hp300/cdroms/installcd/Makefile: revision 1.4
sys/arch/hp300/stand/mkboot/volhdr.h: revision 1.6
sys/arch/hp300/stand/common/machdep.c: revision 1.16
usr.sbin/installboot/fstypes.c: revision 1.14
sys/arch/hp300/hp300/machdep.c: revision 1.238
sys/arch/hp300/include/cpu.h: revision 1.73
sys/arch/hp300/dev/diofbreg.h: revision 1.4
sys/arch/hp300/stand/common/scsi.c: revision 1.12
sys/arch/hp300/stand/common/netio.c: revision 1.19
sys/arch/hp300/stand/common/scsi.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.22
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.20
sys/arch/hp300/stand/common/conf.h: revision 1.4
sys/arch/hp300/hp300/autoconf.c: revision 1.111
sys/arch/hp300/stand/common/conf.c: revision 1.15
sys/arch/hp300/stand/mkboot/Makefile: revision 1.12
sys/arch/hp300/stand/mkboot/Makefile: revision 1.13
sys/arch/hp300/hp300/autoconf.c: revision 1.114
sys/arch/hp300/dev/dcmreg.h: revision 1.11
sys/arch/hp300/dev/diofbvar.h: revision 1.4
sys/arch/hp300/dev/dcm.c: revision 1.91
sys/fs/cd9660/cd9660_util.c: revision 1.15
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.2

TAB/space cleanup.

installboot(8): formatting improvements

Use Ar foo instead of <foo>; this is mdoc.

Other formatting tweaks.
installboot(8): fix up markup

Don't overuse .Sy - when everything is highlighted, nothing is. Use
.Ic for options &c to get correct PostScript output (both are bold in
plain text).

Use Aq Ar inside .Pa, as both Pa and Ar are rendered as underscored
text in plain text output, and the distinction is lost.

Don't set examples in bold, but give them .Pp space around - they are
much easier to read this way.

Use consistent -width in FILES.
document how to use installboot on netbsd/vax.

PR/57909: Jan-Benedict Glaw: Don't include (build) timestamp when doing a
reproducible build
fix usage string, improve error handling.
add missing chunk for repro-build. fix gcc warnings.
avoid stringop truncation, fix copyright string to prevent assembler warnings.

Fix build as a tool (Jan-Benedict Glaw)

Fix integer overflow of strtol(3) for "loadpoint" address on ILP32 hosts.

This strtol(3) was introduced in rev 1.12 for PR/57909 after netbsd-10,
but it returns LONG_MAX (0x7FFFFFFF) for 0xFFF00000 on ILP32 hosts and
the wrong loadpoint causes "NOT ENOUGH MEMORY" error by the BOOTROMs
on loading uboot.lif on (at least) my 9000/360 and 9000/425t.

Misc cosmetic changes for mostly readability.
- KNF and add some newlines per blocks
- define and use proper bintobcd() macro
- make local functions and variables static

The same uboot.lif binaries are generated.

Rename ${PROGAOUT} -> ${PROGELF} to reflect reality.
Use proper signedness for the LIF file system data structures.

Ancient 4.3BSD used short and int for location, file size, file type,
and addresses etc. but all of them should be unsigned.

Also rename several variables and add comments for readability.
The LIF file system info can be found in "The HPDir Project" page:
https://www.hp9845.net/9845/projects/hpdir/
The same uboot.lif binaries are generated.

Add a preliminary CD boot support to uboot for preparation of PR/54455.
Briefly tested on mame, but not enalbed yet.

Recognize SCSI CD-ROM devices as a booted device properly.

Necessary for PR port-hp300/54455, to boot an md root root RAMDISK

kernel from CD-ROM without "WARNING: can't find match for bootdev:"
prompt.

Sync with src/sys/arch/hp300/stand/mkboot/volhdr.h rev 1.6.
https://mail-index.netbsd.org/source-changes/2024/05/07/msg151195.html

Use proper signedness for the LIF file system data structures.
mkboot should use this MI <sys/bootblock.h> and volhdr.h should
be removed soon.

Use MI <sys/bootblock.h> to refer LIF filesystem structures.
This should have been done when LIF definitions were initially added
to <sys/bootblock.h> for MI installboot(8).

Enable SUPPORT_CD on uboot.

Make cd9660_util.c usable in userland tools like installboot(8).

This was partially done for src/distrib/cdrom/macppc_installboot,
but more strict prototypes are necessary for native binary builds.

Install cd9660 related system headers for tools installboot(8) builds.

Reorder function prototypes per source files.

Add cd9660 support to search a bootloader file in the target file system.

Also add CD boot support for hp300, using a bootloader file in cd9660 fs.
This is a tool's part to close PR/54455.

HP 9000/300 machines read LIF directory entry allocated after
the LIF volume header at the top of the boot disk during bootstrap,
and a bootstrap file must be contiguously allocated on the disk
due to limitation of the LIF specification.

Current NetBSD/hp300's bootloader is larger than ~80KB so we have
to prepare a special 'boot' partition for FFS (that has only 8KB (ffsv1)
or 32KB (ffsv2) spaces) disks to put such a large bootloader.

On the other hand, on ISO9660 fs all files are allocated contiguously
so we can specify a bootloader file in the target ISO9660 directly
in the LIF directory entry.

Note we can simply use the existing "append" option to create bootable
CD ISO for hp300, but it looks some emulators (at leaset MAME) reject
such non-standard ISO files, i.e. with an appended bootloader file at
the end of the image.

Put a RAMDISK kernel and SYS_UBOOT into hp300 installcd to make it bootable.

This should finally close PR/54455.

Fix tools build errors on Cygwin.

Appease warnings on building tools/installboot on Cygwin.
 1.3.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.3.6.1 18-Feb-2011  jruoho file rbox.c was added on branch jruoho-x86intr on 2011-06-06 09:05:36 +0000
 1.3.2.2 05-Mar-2011  rmind sync with head
 1.3.2.1 18-Feb-2011  rmind file rbox.c was added on branch rmind-uvmplock on 2011-03-05 20:50:22 +0000
 1.4.6.1 02-Aug-2025  perseant Sync with HEAD
 1.3 15-Jan-2023  tsutsui TAB/space cleanup.
 1.2 12-Feb-2011  tsutsui branches: 1.2.2; 1.2.6; 1.2.90;
- make local functions static
- some KNF
 1.1 06-Feb-2011  tsutsui branches: 1.1.2;
Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.1.2.3 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.2 08-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 06-Feb-2011  bouyer file rboxreg.h was added on branch bouyer-quota2 on 2011-02-08 16:19:21 +0000
 1.2.90.1 22-Jun-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #722):

sys/fs/cd9660/cd9660_util.c: revision 1.16
sys/arch/hp300/stand/common/clock.c: revision 1.14
sys/arch/hp300/stand/common/scsireg.h: revision 1.5
sys/arch/hp300/stand/common/scsireg.h: revision 1.6
sys/arch/hp300/stand/Makefile.buildboot: revision 1.38
sys/arch/hp300/include/bus.h: revision 1.23
sys/arch/hp300/stand/Makefile.buildboot: revision 1.39
sys/arch/hp300/stand/common/sd.c: revision 1.12
sys/arch/hp300/stand/common/prf.c: revision 1.6
sys/arch/hp300/stand/common/sd.c: revision 1.13
usr.sbin/installboot/installboot.8: revision 1.106
usr.sbin/installboot/Makefile: revision 1.59
sys/arch/hp300/stand/common/devopen.c: revision 1.14
usr.sbin/installboot/installboot.8: revision 1.107
sys/arch/hp300/stand/common/ite_dumb.c: revision 1.2
sys/arch/hp300/stand/common/devopen.c: revision 1.15
usr.sbin/installboot/installboot.8: revision 1.108
sys/fs/cd9660/cd9660_extern.h: revision 1.29
usr.sbin/installboot/installboot.8: revision 1.109
tools/Makefile.nbincludes: revision 1.11 (patch)
sys/arch/hp300/dev/rboxreg.h: revision 1.3
sys/arch/hp300/stand/common/scsivar.h: revision 1.5
sys/arch/hp300/dev/dnkbd.c: revision 1.14
sys/arch/hp300/hp300/trap.c: revision 1.156
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.12
sys/arch/hp300/dev/frodoreg.h: revision 1.6
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.13
sys/arch/hp300/stand/common/ite_sti.c: revision 1.2
sys/arch/hp300/stand/common/hil.c: revision 1.15
usr.sbin/installboot/arch/hp300.c: revision 1.18
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.14
sys/arch/hp300/dev/rbox.c: revision 1.4
usr.sbin/installboot/arch/hp300.c: revision 1.19
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.15
sys/sys/bootblock.h: revision 1.59
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.16
usr.sbin/installboot/installboot.h: revision 1.44
sys/arch/hp300/stand/mkboot/volhdr.h: file removal
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.17
sys/arch/hp300/dev/hpib.c: revision 1.45
usr.sbin/installboot/installboot.h: revision 1.45
usr.sbin/installboot/cd9660.c: revision 1.1
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.18
sys/arch/hp300/dev/topcatreg.h: revision 1.3
usr.sbin/installboot/cd9660.c: revision 1.2
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.19
sys/arch/hp300/stand/inst/inst.c: revision 1.25
sys/arch/hp300/stand/uboot/Makefile: revision 1.12
sys/arch/hp300/dev/dvbox.c: revision 1.4
sys/arch/hp300/dev/dma.c: revision 1.45
sys/arch/hp300/stand/uboot/Makefile: revision 1.13
sys/arch/hp300/stand/common/rd.c: revision 1.16
sys/arch/hp300/stand/inst/Makefile: revision 1.12
distrib/hp300/cdroms/installcd/Makefile: revision 1.4
sys/arch/hp300/stand/mkboot/volhdr.h: revision 1.6
sys/arch/hp300/stand/common/machdep.c: revision 1.16
usr.sbin/installboot/fstypes.c: revision 1.14
sys/arch/hp300/hp300/machdep.c: revision 1.238
sys/arch/hp300/include/cpu.h: revision 1.73
sys/arch/hp300/dev/diofbreg.h: revision 1.4
sys/arch/hp300/stand/common/scsi.c: revision 1.12
sys/arch/hp300/stand/common/netio.c: revision 1.19
sys/arch/hp300/stand/common/scsi.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.22
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.20
sys/arch/hp300/stand/common/conf.h: revision 1.4
sys/arch/hp300/hp300/autoconf.c: revision 1.111
sys/arch/hp300/stand/common/conf.c: revision 1.15
sys/arch/hp300/stand/mkboot/Makefile: revision 1.12
sys/arch/hp300/stand/mkboot/Makefile: revision 1.13
sys/arch/hp300/hp300/autoconf.c: revision 1.114
sys/arch/hp300/dev/dcmreg.h: revision 1.11
sys/arch/hp300/dev/diofbvar.h: revision 1.4
sys/arch/hp300/dev/dcm.c: revision 1.91
sys/fs/cd9660/cd9660_util.c: revision 1.15
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.2

TAB/space cleanup.

installboot(8): formatting improvements

Use Ar foo instead of <foo>; this is mdoc.

Other formatting tweaks.
installboot(8): fix up markup

Don't overuse .Sy - when everything is highlighted, nothing is. Use
.Ic for options &c to get correct PostScript output (both are bold in
plain text).

Use Aq Ar inside .Pa, as both Pa and Ar are rendered as underscored
text in plain text output, and the distinction is lost.

Don't set examples in bold, but give them .Pp space around - they are
much easier to read this way.

Use consistent -width in FILES.
document how to use installboot on netbsd/vax.

PR/57909: Jan-Benedict Glaw: Don't include (build) timestamp when doing a
reproducible build
fix usage string, improve error handling.
add missing chunk for repro-build. fix gcc warnings.
avoid stringop truncation, fix copyright string to prevent assembler warnings.

Fix build as a tool (Jan-Benedict Glaw)

Fix integer overflow of strtol(3) for "loadpoint" address on ILP32 hosts.

This strtol(3) was introduced in rev 1.12 for PR/57909 after netbsd-10,
but it returns LONG_MAX (0x7FFFFFFF) for 0xFFF00000 on ILP32 hosts and
the wrong loadpoint causes "NOT ENOUGH MEMORY" error by the BOOTROMs
on loading uboot.lif on (at least) my 9000/360 and 9000/425t.

Misc cosmetic changes for mostly readability.
- KNF and add some newlines per blocks
- define and use proper bintobcd() macro
- make local functions and variables static

The same uboot.lif binaries are generated.

Rename ${PROGAOUT} -> ${PROGELF} to reflect reality.
Use proper signedness for the LIF file system data structures.

Ancient 4.3BSD used short and int for location, file size, file type,
and addresses etc. but all of them should be unsigned.

Also rename several variables and add comments for readability.
The LIF file system info can be found in "The HPDir Project" page:
https://www.hp9845.net/9845/projects/hpdir/
The same uboot.lif binaries are generated.

Add a preliminary CD boot support to uboot for preparation of PR/54455.
Briefly tested on mame, but not enalbed yet.

Recognize SCSI CD-ROM devices as a booted device properly.

Necessary for PR port-hp300/54455, to boot an md root root RAMDISK

kernel from CD-ROM without "WARNING: can't find match for bootdev:"
prompt.

Sync with src/sys/arch/hp300/stand/mkboot/volhdr.h rev 1.6.
https://mail-index.netbsd.org/source-changes/2024/05/07/msg151195.html

Use proper signedness for the LIF file system data structures.
mkboot should use this MI <sys/bootblock.h> and volhdr.h should
be removed soon.

Use MI <sys/bootblock.h> to refer LIF filesystem structures.
This should have been done when LIF definitions were initially added
to <sys/bootblock.h> for MI installboot(8).

Enable SUPPORT_CD on uboot.

Make cd9660_util.c usable in userland tools like installboot(8).

This was partially done for src/distrib/cdrom/macppc_installboot,
but more strict prototypes are necessary for native binary builds.

Install cd9660 related system headers for tools installboot(8) builds.

Reorder function prototypes per source files.

Add cd9660 support to search a bootloader file in the target file system.

Also add CD boot support for hp300, using a bootloader file in cd9660 fs.
This is a tool's part to close PR/54455.

HP 9000/300 machines read LIF directory entry allocated after
the LIF volume header at the top of the boot disk during bootstrap,
and a bootstrap file must be contiguously allocated on the disk
due to limitation of the LIF specification.

Current NetBSD/hp300's bootloader is larger than ~80KB so we have
to prepare a special 'boot' partition for FFS (that has only 8KB (ffsv1)
or 32KB (ffsv2) spaces) disks to put such a large bootloader.

On the other hand, on ISO9660 fs all files are allocated contiguously
so we can specify a bootloader file in the target ISO9660 directly
in the LIF directory entry.

Note we can simply use the existing "append" option to create bootable
CD ISO for hp300, but it looks some emulators (at leaset MAME) reject
such non-standard ISO files, i.e. with an appended bootloader file at
the end of the image.

Put a RAMDISK kernel and SYS_UBOOT into hp300 installcd to make it bootable.

This should finally close PR/54455.

Fix tools build errors on Cygwin.

Appease warnings on building tools/installboot on Cygwin.
 1.2.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.1 12-Feb-2011  jruoho file rboxreg.h was added on branch jruoho-x86intr on 2011-06-06 09:05:36 +0000
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 12-Feb-2011  rmind file rboxreg.h was added on branch rmind-uvmplock on 2011-03-05 20:50:22 +0000
 1.126 21-Apr-2023  tsutsui Remove ancient /* ARGSUSED */ lint comments.
 1.125 12-Feb-2023  andvar fix various typos in comments.
 1.124 03-Dec-2022  tsutsui Explicitly include <sys/kernel.h> for hz(9) as man pages says.

XXX: it looks sys/param.h r1.615 and later also has extern int hz
 1.123 03-Dec-2022  tsutsui Add empty DIOCCACHESYNC ioctl(2) for rd(4).

Without this raid(4) always complains on various raidctl(8) ops:
> raid0: cache flush[0] to component 0 failed (22)

RAID1 configured by raid(4) just works HP-IB disks on hp300.
 1.122 01-Dec-2022  tsutsui Misc KNF and cosmetics.
 1.121 30-Nov-2022  tsutsui Remove more duplicated static function declarations.
 1.120 30-Nov-2022  tsutsui Use proper RAW_PART macro rather than a magic number.
 1.119 30-Nov-2022  tsutsui Set disk_geom parameters required by DIOCGPARTINFO in disk_ioctl().

With this change raid(4) no longer complains before mountroot:
> RAIDframe: can't get disk size for dev rd0 (22)

Should be pulled up to netbsd-9.
 1.118 30-Nov-2022  tsutsui Remove a duplicated static function declaration.
 1.117 30-Nov-2022  tsutsui Pass a correct dev_t arg to disk_ioctl().

Probably harmless.
 1.116 30-Nov-2022  tsutsui Check bounds of each partition by MI bounds_check_with_label(9).

The previous implementation was committed in rev 1.26 about 26 years ago
and it looks there is no quirk to use the old MD one.
 1.115 30-Nov-2022  tsutsui Check bounds of RAW_PART by bounds_check_with_mediasize() as other drivers.

With this check, dd(1) without a count value against a raw partition
is terminated properly at the end of media. Tested on 425t and HPDisk.

Should be pulled up to netbsd-9.
 1.114 25-Nov-2022  tsutsui Remove unnecessary declarations.
 1.113 25-Nov-2022  tsutsui Use proper integer types for HP-IB xfer parameters.

No visible regression on 425t and HPDisk.
 1.112 23-Nov-2022  tsutsui Fix "rd(4) at punits not configured on HPDisk are misprobed" problem.

- check not only stat value returned by C_QSTAT command against
each punit but also desc.d_name returned by C_DESC command
because it looks HPDisk responds to commands against punits supported
but not-configured punits at 1-3
- prepare rdreset_unit() function to manage reset punit ops during
probe without valid softc

The stragety is taken from OpenBSD with several modification.
Tested on 425t with real 9122D and HPDisk emulating two 7937H drives.

Should be pulled up to netbsd-9.
 1.111 21-Nov-2022  tsutsui Use common macro for numbers of cylinders and blocks for HP-IB disks.

No binary changes.
 1.110 31-Jul-2021  andvar s/threshhold/threshold
 1.109 11-Jul-2021  tsutsui Add Device and drive info of 2202A, 7908A, 7911A, and 7941A.

Geometries and description info are taken from hpdrive.ini.sample
in HPDrive. Briefly tested on HPDisk.
 1.108 09-Jul-2021  tsutsui Add support of multiple rd(4) disks on all punits for HPDisk.

Special thanks to Anders Gustafsson, the author of "HPDisk"
(GPIB disk emulator) http://www.dalton.ax/hpdisk/
for providing bare boards and improving firmwares for NetBSD/hp300.
 1.107 05-Jul-2021  tsutsui Cleanup duplicated CS/80 indentify structures. From OpenBSD.

https://marc.info/?l=openbsd-cvs&m=113227249626888&w=2
> Define the CS/80 identify structure only once and correctly, instead of
> duplicating it in every CS/80 driver and using an hardcoded number for
> its size.
> No functional change.

https://marc.info/?l=openbsd-cvs&m=113273001020159&w=2
> Pick HP-IB describe structures changes from main kernel code here as well.
 1.106 05-Jul-2021  tsutsui Move attach messages from common rdident() to explicit rdattach().
 1.105 05-Jul-2021  tsutsui Pull HP-IB probe fixes from OpenBSD/hp300.

https://marc.info/?l=openbsd-cvs&m=113217630426615&w=2
> Overhaul the way HP-IB devices are probed. We will now do an exhaustive
> probe of the (slave, punit) tuple space, since this is the only way we
> can get a dual disk or dual tape enclosure to attach two devices of the
> same kind.

This allows using multiple rd(4) disk images on the same slave emulated
by HPDisk (and probably the real 9122D with dual floppy disk drives).

Thanks to Miod Vallat for suggesting this fix.
 1.104 30-Jun-2021  tsutsui No need to bother to use aprint_debug(9) inside #ifdef DEBUG block.
 1.103 10-Jan-2021  tsutsui branches: 1.103.4;
Print rd(4) capacity and geometry info as sd(4) and wd(4) do.

Before:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 698 cylinders, 13 heads, 1116102 blocks, 512 bytes/block

After:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 544 MB, 698 cyl, 13 head, 123 sec, 512 bytes/block x 1116102 blocks
 1.102 29-Sep-2020  msaitoh branches: 1.102.2;
s/parition/partition/
 1.101 13-Apr-2015  riastradh branches: 1.101.22;
MD rnd.h cleanups. Please let me know if I broke anything!
 1.100 02-Jan-2015  christos We have three sets of DTYPE_ constants in the kernel:
altq Drop Type
disklabel Disk Type
file Descriptor Type
(not to mention constants that contain the string DTYPE).
Let's make them two, by changing the disklabel one to be DisK TYPE since the
other disklabel constants seem to do that. Not many userland programs use
these constants (and the ones that they do are mostly in ifdefs). They will
be fixed shortly.
 1.99 31-Dec-2014  christos make more drivers use disk_ioctl, and add a dev parameter to it so that
we can merge the "easy" disklabel ioctls to it. Ultimately all this will
go do dk_ioctl once all the drivers have been converted.
 1.98 10-Aug-2014  tls branches: 1.98.4;
Merge tls-earlyentropy branch into HEAD.
 1.97 25-Jul-2014  dholland Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.
 1.96 25-Jul-2014  dholland Add d_discard to all struct bdevsw instances I could find.

I've set them all to nodiscard. Some of them (wd, dk, vnd, ld,
raidframe, maybe cgd) should be implemented for real.
 1.95 24-Mar-2014  christos branches: 1.95.2;
- remove unused
- use cpu_{g,s}etmodel
 1.94 16-Mar-2014  dholland Change (mostly mechanically) every cdevsw/bdevsw I can find to use
designated initializers.

I have not built every extant kernel so I have probably broken at
least one build; however I've also found and fixed some wrong
cdevsw/bdevsw entries so even if so I think we come out ahead.
 1.93 13-Oct-2012  tsutsui branches: 1.93.2;
struct device * -> device_t, struct cfdata * -> cfdata_t
use device_xname() (from chs@)
 1.92 02-Feb-2012  tls branches: 1.92.6;
Entropy-pool implementation move and cleanup.

1) Move core entropy-pool code and source/sink/sample management code
to sys/kern from sys/dev.

2) Remove use of NRND as test for presence of entropy-pool code throughout
source tree.

3) Remove use of RND_ENABLED in device drivers as microoptimization to
avoid expensive operations on disabled entropy sources; make the
rnd_add calls do this directly so all callers benefit.

4) Fix bug in recent rnd_add_data()/rnd_add_uint32() changes that might
have lead to slight entropy overestimation for some sources.

5) Add new source types for environmental sensors, power sensors, VM
system events, and skew between clocks, with a sample implementation
for each.

ok releng to go in before the branch due to the difficulty of later
pullup (widespread #ifdef removal and moved files). Tested with release
builds on amd64 and evbarm and live testing on amd64.
 1.91 28-Jul-2011  uebayasi branches: 1.91.2; 1.91.6;
dev_t is uint64_t; use PRIx64 to print it. Fix DEBUG build.
 1.90 08-Feb-2011  rmind Remove clause 3 (UCB advertising clause) from the University of Utah
copyright. Confirmed by Mike Hibler, mike at cs.utah.edu - thanks!
Also, merge UCB and Utah copyright texts back into one, as they
originally were.

Extra verification by snj@.
 1.89 13-Jan-2009  yamt branches: 1.89.6; 1.89.8; 1.89.10;
g/c BUFQ_FOO() macros and use bufq_foo() directly.
 1.88 17-Jun-2008  he branches: 1.88.4;
Add some missing parenthesis to restore this to a buildable state.
 1.87 13-Jun-2008  cegger use device_lookup_private to get softc
 1.86 28-Apr-2008  martin branches: 1.86.2; 1.86.4;
Remove clause 3 and 4 from TNF licenses
 1.85 29-Mar-2008  tsutsui branches: 1.85.2; 1.85.4;
Split device_t/softc, and misc cosmetic changes.
 1.84 17-Oct-2007  garbled branches: 1.84.16;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.83 08-Oct-2007  ad Merge disk init changes from the vmlocking branch. These seperate init /
destroy of 'struct disk' from attach / detach.
 1.82 29-Jul-2007  ad branches: 1.82.4; 1.82.6; 1.82.8;
It's not a good idea for device drivers to modify b_flags, as they don't
need to understand the locking around that field. Instead of setting
B_ERROR, set b_error instead. b_error is 'owned' by whoever completes
the I/O request.
 1.81 12-Jul-2007  he branches: 1.81.2; 1.81.4;
Adapt to the new signature of callout_init().
 1.80 04-Mar-2007  tsutsui branches: 1.80.2; 1.80.10;
Use (char *) cast on pointer arith.
 1.79 04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.78 21-Jul-2006  tsutsui branches: 1.78.10;
Some KNF.
 1.77 16-Jun-2006  tsutsui - strncpy -> strlcpy
- 16 -> sizeof(foo)
 1.76 10-Jun-2006  tsutsui branches: 1.76.2;
space nits.
 1.75 14-May-2006  elad branches: 1.75.2;
integrate kauth.
 1.74 14-Apr-2006  blymn Make i/o statistics collection more generic, include tape drives and
nfs mounts in the set of devices that statistics will be reported on.
 1.73 29-Mar-2006  tsutsui Add a missing parenthesis.
 1.72 28-Mar-2006  thorpej Use device_unit().
 1.71 25-Feb-2006  wiz branches: 1.71.2; 1.71.4; 1.71.6;
Fix some typos.
 1.70 23-Feb-2006  thorpej Use device_parent().
 1.69 11-Dec-2005  christos branches: 1.69.2; 1.69.4; 1.69.6;
merge ktrace-lwp.
 1.68 15-Oct-2005  yamt - change the way to specify a bufq strategy. (by string rather than by number)
- rather than embedding bufq_state in driver softc,
have a pointer to the former.
- move bufq related functions from kern/subr_disk.c to kern/subr_bufq.c.
- rename method to strategy for consistency.
- move some definitions which don't need to be exposed to the rest of kernel
from sys/bufq.h to sys/bufq_impl.h.
(is it better to move it to kern/ or somewhere?)
- fix some obvious breakage in dev/qbus/ts.c. (not tested)
 1.67 19-Feb-2005  tsutsui branches: 1.67.6;
Include "ioconf.h" for struct cfdriver *_cd decls.
 1.66 05-Feb-2005  chs make this compile with DEBUG.
 1.65 28-Oct-2004  yamt branches: 1.65.4; 1.65.6;
move buffer queue related stuffs from buf.h to their own header, bufq.h.
 1.64 28-Aug-2004  thorpej Remove the last vestiges of COMPAT_NOLABEL. It's been 10 years; label
your disks already.
 1.63 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.62 17-Nov-2003  tsutsui TAB/space cleanup.
 1.61 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.60 29-Jun-2003  fvdl branches: 1.60.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.59 29-Jun-2003  thorpej Adapt to ktrace/lwp changes.
 1.58 03-May-2003  wiz DMA, not dma nor Dma.
 1.57 02-May-2003  dsl Change return type of readdisklabel() to const char *
I hope I've found all the correct places!
 1.56 14-Feb-2003  gmcgarry Handle 64-bit daddr_t.
 1.55 01-Nov-2002  mrg implement separate read/write disk statistics:
- disk_unbusy() gets a new parameter to tell the IO direction.
- struct disk_sysctl gets 4 new members for read/write bytes/transfers.
when processing hw.diskstats, add the read&write bytes/transfers for
the old combined stats to attempt to keep backwards compatibility.

unfortunately, due to multiple bugs, this will cause new kernels and old
vmstat/iostat/systat programs to fail. however, the next time this is
change it will not fail again.

this is just the kernel portion.
 1.54 23-Oct-2002  jdolecek merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.53 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.52 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.51 06-Sep-2002  gehenna Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.50 26-Jul-2002  hannken Convert to new device buffer queue interface.

Approved by: Jason R. Thorpe <thorpej@netbsd.org>
 1.49 08-Apr-2002  gmcgarry branches: 1.49.2;
Create default disklabel correctly.
 1.48 15-Mar-2002  gmcgarry Add RCSIDs.
 1.47 10-Feb-2002  gmcgarry Implement DIOCGDEFLABEL ioctl.
 1.46 08-Dec-2001  gmcgarry bcopy -> memcpy
bzero -> memset
bcmp -> memcmp
 1.45 16-Sep-2001  wiz branches: 1.45.4;
Spell 'occurred' with two 'r's.
 1.44 10-Oct-2000  he branches: 1.44.2; 1.44.4;
Add randomness sampling from hil, sd and rd devices.
 1.43 27-May-2000  thorpej branches: 1.43.4;
sleep() -> tsleep()
 1.42 19-May-2000  thorpej A foolish consistency; most parts of the kernel use bp->b_data, so
change these from bp->b_un.b_addr to bp->b_data, as well. This also
allows us more flexibility to experiment with other data buffer types
hung off of struct buf.
 1.41 23-Mar-2000  thorpej New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.40 11-Feb-2000  kleink printf format mismatch in DEBUG code (related to already fixed PR hp300/9388).
 1.39 07-Feb-2000  thorpej Fix a bug in disksort_*() which caused non-optimal ordering when multiple
active partitions were on a single spindle. Add a b_rawblkno member to
struct buf which contains the non-partition-relative block number to sort
by.
 1.38 31-Jan-2000  kleink Make these build again after buf.h/disksort changes.
 1.37 21-Jan-2000  thorpej Update for sys/buf.h/disksort_*() changes.
 1.36 12-Jan-1998  thorpej branches: 1.36.8; 1.36.14; 1.36.20;
Update for changes to config.
 1.35 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.34 22-Jul-1997  kleink branches: 1.34.2;
Remove old *_UNK style default defines, use standard names from locators.h.
Missed in "locators.h" cleanup; reported by Thorsten Frueauf in PR 3906.
 1.33 10-Jul-1997  kleink Remove misplaced/unnecessary VM #include cruft; from Thorsten Frueauf
<frueauf@ira.uka.de> in PR port-hp300/3851.
 1.32 24-Jun-1997  thorpej foosize()'s return value is in DEV_BSIZE units; adjust the size obtained
from the disklabel accordingly.
 1.31 05-May-1997  thorpej Update for USELEDS changes.
 1.30 09-Apr-1997  thorpej Use the %x printf format where appropriate
 1.29 02-Apr-1997  scottr Fix printf() and other warnings when compiled with DEBUG defined.
 1.28 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.27 30-Jan-1997  thorpej Convert to new-style autoconfiguration; old-style config is no longer
supported.
 1.26 07-Jan-1997  thorpej Bring some sanity into my frazzled existence:
- Always ensure that RAW_PART ("c") can be opened.
- Disallow unused or non-existent partitions from being opened.
- Don't do bounds checking or partition translation on RAW_PART.
This is consistent with other disk drivers in the NetBSD source tree,
and fixes a condition where the user could not fix a corrupted disklabel
due to a bogus offset for partition "c".
 1.25 14-Oct-1996  thorpej Set the device class on non-dull devices. This is a transitional thing.
 1.24 13-Oct-1996  christos backout previous kprintf changes
 1.23 11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.22 06-Oct-1996  thorpej Fix kernel crash dumps. Still uses the old format for now.
 1.21 06-Jun-1996  thorpej Remove the old-style disk instrumentation support. Nothing uses it
anymore.
 1.20 14-Feb-1996  thorpej branches: 1.20.4;
All interrupt routines (except the HIL; don't ask) now take a pointer
to a softc, rather than a unit number. Add a "dq_softc" member
to struct devqueue; this is a temporary measure until the
dma/controller/device callback spaghetti is untangled.

YAY! No more need for dcafastservice!

HIL: squish instances of "(void) splhil()" and "(void) spl0();".
 1.19 03-Feb-1996  thorpej Remove bogus "return (0);" in rdmatch() that wiggled its way in uninvited.
 1.18 10-Jan-1996  thorpej Kludge around a case where a flaky HP-IB disk might be slow to respond
to the identification request in rdmatch(). Similar in spirit to a
patch from Jason Downs (written eons ago), but limited to the broken
device we're trying to reach. My patch tested (and fixed :-) by
Herb Peyerl.
 1.17 07-Jan-1996  thorpej New generic disk framework. Highlights:

- New metrics handling. Metrics are now kept in the new
`struct disk'. Busy time is now stored as a timeval, and
transfer count in bytes.

- Storage for disklabels is now dynamically allocated, so that
the size of the disk structure is not machine-dependent.

- Several new functions for attaching and detaching disks, and
handling metrics calculation.

Old-style instrumentation is still supported in drivers that did it before.
However, old-style instrumentation is being deprecated, and will go away
once the userland utilities are updated for the new framework.

For usage and architectural details, see the forthcoming disk(9) manual
page.
 1.16 09-Dec-1995  thorpej Pass the correct number of arguments to readdisklabel().
 1.15 02-Dec-1995  thorpej Use a "match/attach" rather than "init" scheme for probing devices.
This is a step towards getting the drivers ready for new config.
 1.14 19-Nov-1995  thorpej Re-arrange things such that we can print out disk geometry regardless of
COMPAT_NOLABEL.

XXX One day when the world doesn't assume DEV_BSIZE bytes/sector, we'll be
able to actually use the stuff sensed from the drive, rather than a table.
 1.13 09-Oct-1995  thorpej Pass correct number of arguments to hpibgo().
 1.12 04-Aug-1995  thorpej Update for conf.h changes.
 1.11 10-Apr-1995  mycroft kernel_pmap --> pmap_kernel()
 1.10 26-Oct-1994  cgd new RCS ID format.
 1.9 27-May-1994  mycroft Bug fixes from Mike Hibler.
 1.8 23-May-1994  mycroft Merge with 4.4-Lite.
 1.7 11-May-1994  mycroft Get rid of private *read() and *write() functions.
 1.6 05-May-1994  mycroft Most of the changes needed to make this continue to run.
 1.5 10-Feb-1994  mycroft Add arg to ioctl functions. Clean up #includes.
 1.4 11-Jan-1994  mycroft *strategy functions return void.
 1.3 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.20.4.1 06-Jun-1996  thorpej Update from trunk:

Remove old-style disk instrumentation support. Nothing uses it
anymore.
 1.34.2.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.36.20.1 21-Dec-1999  wrstuden Initial commit of recent changes to make DEV_BSIZE go away.

Runs on i386, needs work on other arch's. Main kernel routines should be
fine, but a number of the stand programs need help.

cd, fd, ccd, wd, and sd have been updated. sd has been tested with non-512
byte block devices. vnd, raidframe, and lfs need work.

Non 2**n block support is automatic for LKM's and conditional for kernels
on "options NON_PO2_BLOCKS".
 1.36.14.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.36.8.1 12-Oct-2000  he Pull up revision 1.44 (requested by he):
Add randomness sampling for hil, sd and rd on the hp300 port.
 1.43.4.1 18-Oct-2000  tv Pullup 1.44 [he]:
Add randomness sampling from hil, sd and rd devices.
 1.44.4.5 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.44.4.4 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.44.4.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.44.4.2 16-Mar-2002  jdolecek Catch up with -current.
 1.44.4.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.44.2.2 10-Oct-2001  fvdl Convert all remaining devices.
 1.44.2.1 01-Oct-2001  fvdl Catch up with -current.
 1.45.4.9 11-Nov-2002  nathanw Catch up to -current
 1.45.4.8 18-Oct-2002  nathanw Catch up to -current.
 1.45.4.7 17-Sep-2002  nathanw Catch up to -current.
 1.45.4.6 01-Aug-2002  nathanw Catch up to -current.
 1.45.4.5 17-Apr-2002  nathanw Catch up to -current.
 1.45.4.4 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.45.4.3 28-Feb-2002  nathanw Catch up to -current.
 1.45.4.2 08-Jan-2002  nathanw Catch up to -current.
 1.45.4.1 16-Sep-2001  nathanw file rd.c was added on branch nathanw_sa on 2002-01-08 00:24:36 +0000
 1.49.2.2 30-Aug-2002  gehenna catch up with -current.
 1.49.2.1 17-May-2002  gehenna Add device switch.
 1.60.2.9 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.60.2.8 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.60.2.7 06-Feb-2005  skrll Sync with HEAD.
 1.60.2.6 24-Jan-2005  skrll Adapt to branch.
 1.60.2.5 02-Nov-2004  skrll Sync with HEAD.
 1.60.2.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.60.2.3 18-Sep-2004  skrll Sync with HEAD.
 1.60.2.2 03-Sep-2004  skrll Sync with HEAD
 1.60.2.1 03-Aug-2004  skrll Sync with HEAD
 1.65.6.2 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.65.6.1 12-Feb-2005  yamt sync with head.
 1.65.4.1 29-Apr-2005  kent sync with -current
 1.67.6.4 27-Oct-2007  yamt sync with head.
 1.67.6.3 03-Sep-2007  yamt sync with head.
 1.67.6.2 30-Dec-2006  yamt sync with head.
 1.67.6.1 21-Jun-2006  yamt sync with head.
 1.69.6.1 22-Apr-2006  simonb Sync with head.
 1.69.4.1 09-Sep-2006  rpaulo sync with head
 1.69.2.1 01-Mar-2006  yamt sync with head.
 1.71.6.2 24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.71.6.1 31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.71.4.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.71.2.4 11-Aug-2006  yamt sync with head
 1.71.2.3 26-Jun-2006  yamt sync with head.
 1.71.2.2 24-May-2006  yamt sync with head.
 1.71.2.1 01-Apr-2006  yamt sync with head.
 1.75.2.1 19-Jun-2006  chap Sync with head.
 1.76.2.1 13-Jul-2006  gdamore Merge from HEAD.
 1.78.10.1 12-Mar-2007  rmind Sync with HEAD.
 1.80.10.2 16-Oct-2007  garbled Sync with HEAD
 1.80.10.1 03-Oct-2007  garbled Sync with HEAD
 1.80.2.3 20-Aug-2007  ad - Alter disk attach/detach to fix a panic when closing a vnd device.
- Sync with HEAD.
 1.80.2.2 19-Aug-2007  ad - Back out the biodone() changes.
- Eliminate B_ERROR (from HEAD).
 1.80.2.1 15-Jul-2007  ad Sync with head.
 1.81.4.1 15-Aug-2007  skrll Sync with HEAD.
 1.81.2.1 07-Aug-2007  matt Sync with HEAD.
 1.82.8.1 14-Oct-2007  yamt sync with head.
 1.82.6.1 06-Nov-2007  matt sync with HEAD
 1.82.4.1 26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.84.16.4 17-Jan-2009  mjf Sync with HEAD.
 1.84.16.3 29-Jun-2008  mjf Sync with HEAD.
 1.84.16.2 02-Jun-2008  mjf Sync with HEAD.
 1.84.16.1 03-Apr-2008  mjf Sync with HEAD.
 1.85.4.2 04-May-2009  yamt sync with head.
 1.85.4.1 16-May-2008  yamt sync with head.
 1.85.2.2 17-Jun-2008  yamt sync with head.
 1.85.2.1 18-May-2008  yamt sync with head.
 1.86.4.1 18-Jun-2008  simonb Sync with head.
 1.86.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.88.4.1 19-Jan-2009  skrll Sync with HEAD.
 1.89.10.1 17-Feb-2011  bouyer Sync with HEAD
 1.89.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.89.6.1 05-Mar-2011  rmind sync with head
 1.91.6.1 18-Feb-2012  mrg merge to -current.
 1.91.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.91.2.2 30-Oct-2012  yamt sync with head
 1.91.2.1 17-Apr-2012  yamt sync with head
 1.92.6.4 03-Dec-2017  jdolecek update from HEAD
 1.92.6.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.92.6.2 02-Dec-2012  tls Don't pass NULL struct dkdriver to disk_init. That's seriously bogus.
 1.92.6.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.93.2.1 18-May-2014  rmind sync with head
 1.95.2.2 10-Aug-2014  tls Rebase.
 1.95.2.1 07-Apr-2014  tls Be a little more clear and consistent about harvesting entropy from devices:

1) deprecate RND_FLAG_NO_ESTIMATE

2) define RND_FLAG_COLLECT_TIME, RND_FLAG_COLLECT_VALUE

3) define RND_FLAG_ESTIMATE_TIME, RND_FLAG_ESTIMATE_VALUE

4) define RND_FLAG_DEFAULT: RND_FLAG_COLLECT_TIME|
RND_FLAG_COLLECT_VALUE|RND_FLAG_ESTIMATE_TIME

5) Make entropy harvesting from environmental sensors a little more generic
and remove it from individual sensor drivers.

6) Remove individual open-coded delta-estimators for values from a few
places in the tree (uvm, environmental drivers).

7) 0 -> RND_FLAG_DEFAULT, actually gather entropy from various drivers
that had stubbed out code, other minor cleanups.
 1.98.4.2 06-Jun-2015  skrll Sync with HEAD
 1.98.4.1 06-Apr-2015  skrll Sync with HEAD
 1.101.22.2 06-Dec-2022  martin Pull up following revision(s) (requested by tsutsui in ticket #1552):

sys/arch/hp300/dev/rd.c: revision 1.120
sys/arch/hp300/dev/rd.c: revision 1.121
sys/arch/hp300/dev/rd.c: revision 1.122
sys/arch/hp300/dev/rd.c: revision 1.123
sys/arch/hp300/dev/rd.c: revision 1.124
sys/arch/hp300/dev/rdreg.h: revision 1.19
sys/arch/hp300/dev/rd.c: revision 1.111
sys/arch/hp300/dev/rd.c: revision 1.112
sys/arch/hp300/dev/rd.c: revision 1.113
sys/arch/hp300/stand/common/rd.c: revision 1.12
sys/arch/hp300/dev/rd.c: revision 1.114
sys/arch/hp300/stand/common/rd.c: revision 1.13
sys/arch/hp300/dev/rd.c: revision 1.115
sys/arch/hp300/stand/common/rd.c: revision 1.14
sys/arch/hp300/dev/rd.c: revision 1.116
sys/arch/hp300/stand/common/rd.c: revision 1.15
sys/arch/hp300/dev/rd.c: revision 1.117
sys/arch/hp300/dev/rd.c: revision 1.118
sys/arch/hp300/dev/rd.c: revision 1.119
sys/arch/hp300/dev/rdvar.h: revision 1.27
sys/arch/hp300/dev/rdreg.h: revision 1.20

Sync a list of HP-IB disk IDs with kernel's one.
Now bootloader can boot from 2202A, 7908A, 7911A, and 7941A.
Tested on 425t and HPDisk.

Make local variables static and read only ones const.

Use common macro for numbers of cylinders and blocks for HP-IB disks.
No binary changes.

Fix "rd(4) at punits not configured on HPDisk are misprobed" problem.
- check not only stat value returned by C_QSTAT command against
each punit but also desc.d_name returned by C_DESC command
because it looks HPDisk responds to commands against punits supported
but not-configured punits at 1-3
- prepare rdreset_unit() function to manage reset punit ops during
probe without valid softc

The stragety is taken from OpenBSD with several modification.
Tested on 425t with real 9122D and HPDisk emulating two 7937H drives.
Should be pulled up to netbsd-9.

Remove now unused buffer members from softc prepared only for rdreset().

Use proper integer types for HP-IB xfer parameters.
No visible regression on 425t and HPDisk.

Sync with rdreg.h integer type changes.

Remove unnecessary declarations.

Check bounds of RAW_PART by bounds_check_with_mediasize() as other drivers.
With this check, dd(1) without a count value against a raw partition
is terminated properly at the end of media. Tested on 425t and HPDisk.
Should be pulled up to netbsd-9.

Check bounds of each partition by MI bounds_check_with_label(9).
The previous implementation was committed in rev 1.26 about 26 years ago
and it looks there is no quirk to use the old MD one.

Pass a correct dev_t arg to disk_ioctl().
Probably harmless.

Remove a duplicated static function declaration.

Set disk_geom parameters required by DIOCGPARTINFO in disk_ioctl().
With this change raid(4) no longer complains before mountroot:
RAIDframe: can't get disk size for dev rd0 (22)
Should be pulled up to netbsd-9.

Use proper RAW_PART macro rather than a magic number.

Remove more duplicated static function declarations.

Misc KNF and cosmetics.

Add empty DIOCCACHESYNC ioctl(2) for rd(4).
Without this raid(4) always complains on various raidctl(8) ops:
raid0: cache flush[0] to component 0 failed (22)
RAID1 configured by raid(4) just works HP-IB disks on hp300.

Explicitly include <sys/kernel.h> for hz(9) as man pages says.
XXX: it looks sys/param.h r1.615 and later also has extern int hz
 1.101.22.1 14-Jul-2021  martin Pull up following revision(s) (requested by tsutsui in ticket #1323):

sys/arch/hp300/dev/rd.c: revision 1.109
sys/arch/hp300/stand/Makefile.buildboot: revision 1.37
sys/arch/hp300/stand/common/ct.c: revision 1.8
sys/arch/hp300/dev/hpibvar.h: revision 1.22
sys/arch/hp300/dev/ct.c: revision 1.62
sys/arch/hp300/dev/hpibvar.h: revision 1.23
sys/arch/hp300/dev/ct.c: revision 1.63
sys/arch/hp300/dev/hpibvar.h: revision 1.24
sys/arch/hp300/dev/mt.c: revision 1.55
sys/arch/hp300/dev/rdreg.h: revision 1.14
sys/arch/hp300/dev/hpib.c: revision 1.43 (via patch)
sys/arch/hp300/dev/rdreg.h: revision 1.15
sys/arch/hp300/dev/rdreg.h: revision 1.16
sys/arch/hp300/dev/rdreg.h: revision 1.17
etc/etc.hp300/MAKEDEV.conf: revision 1.15
sys/arch/hp300/stand/common/hpibvar.h: revision 1.6
sys/arch/hp300/stand/common/rd.c: revision 1.11
sys/arch/hp300/dev/ctreg.h: revision 1.11
sys/arch/hp300/dev/rdvar.h: revision 1.24
sys/arch/hp300/dev/rdvar.h: revision 1.25
sys/arch/hp300/dev/rdvar.h: revision 1.26
sys/arch/hp300/dev/rd.c: revision 1.103
sys/arch/hp300/dev/rd.c: revision 1.104
sys/arch/hp300/dev/rd.c: revision 1.105
sys/arch/hp300/dev/rd.c: revision 1.106
sys/arch/hp300/dev/rd.c: revision 1.107
sys/arch/hp300/dev/rd.c: revision 1.108

Consistently use #define<tab> here.

Consistently use #define<tab> as rdreg.h.

No need to bother to use aprint_debug(9) inside #ifdef DEBUG block.

Pull HP-IB probe fixes from OpenBSD/hp300.
https://marc.info/?l=openbsd-cvs&m=113217630426615&w=2

Overhaul the way HP-IB devices are probed. We will now do an exhaustive
probe of the (slave, punit) tuple space, since this is the only way we
can get a dual disk or dual tape enclosure to attach two devices of the
same kind.

This allows using multiple rd(4) disk images on the same slave emulated
by HPDisk (and probably the real 9122D with dual floppy disk drives).

Thanks to Miod Vallat for suggesting this fix.

Move attach messages from common rdident() to explicit rdattach().

Cleanup duplicated CS/80 indentify structures. From OpenBSD.
https://marc.info/?l=openbsd-cvs&m=113227249626888&w=2

Define the CS/80 identify structure only once and correctly, instead of
duplicating it in every CS/80 driver and using an hardcoded number for
its size.
No functional change.
https://marc.info/?l=openbsd-cvs&m=113273001020159&w=2

Pick HP-IB describe structures changes from main kernel code here as well.

Add support of multiple rd(4) disks on all punits for HPDisk.

Special thanks to Anders Gustafsson, the author of "HPDisk"
(GPIB disk emulator) http://www.dalton.ax/hpdisk/
for providing bare boards and improving firmwares for NetBSD/hp300.

Specify -fno-unwind-tables to shrink binaries.

Before:
text data bss dec hex filename
77902 4328 137120 219350 358d6 uboot

After:
text data bss dec hex filename
64186 4328 137120 205634 32342 uboot

Create rd3 device nodes, for HPDisk.

Add Device and drive info of 2202A, 7908A, 7911A, and 7941A.

Geometries and description info are taken from hpdrive.ini.sample
in HPDrive. Briefly tested on HPDisk.

Print rd(4) capacity and geometry info as sd(4) and wd(4) do.

Before:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 698 cylinders, 13 heads, 1116102 blocks, 512 bytes/block

After:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 544 MB, 698 cyl, 13 head, 123 sec, 512 bytes/block x 1116102 blocks
 1.102.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.103.4.1 01-Aug-2021  thorpej Sync with HEAD.
 1.13 28-Aug-2004  thorpej Remove the last vestiges of COMPAT_NOLABEL. It's been 10 years; label
your disks already.
 1.12 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.11 17-Nov-2003  tsutsui TAB/space cleanup.
 1.10 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.9 15-Mar-2002  gmcgarry branches: 1.9.12;
Add RCSIDs.
 1.8 12-Jan-1998  thorpej branches: 1.8.28; 1.8.32;
Update for changes to config.
 1.7 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.6 30-Jan-1997  thorpej Convert to new-style autoconfiguration; old-style config is no longer
supported.
 1.5 07-Jan-1996  thorpej New generic disk framework. Highlights:

- New metrics handling. Metrics are now kept in the new
`struct disk'. Busy time is now stored as a timeval, and
transfer count in bytes.

- Storage for disklabels is now dynamically allocated, so that
the size of the disk structure is not machine-dependent.

- Several new functions for attaching and detaching disks, and
handling metrics calculation.

Old-style instrumentation is still supported in drivers that did it before.
However, old-style instrumentation is being deprecated, and will go away
once the userland utilities are updated for the new framework.

For usage and architectural details, see the forthcoming disk(9) manual
page.
 1.4 19-Nov-1995  thorpej Re-arrange things such that we can print out disk geometry regardless of
COMPAT_NOLABEL.

XXX One day when the world doesn't assume DEV_BSIZE bytes/sector, we'll be
able to actually use the stuff sensed from the drive, rather than a table.
 1.3 26-Oct-1994  cgd new RCS ID format.
 1.2 16-Jul-1994  cgd get device.h from the right place
 1.1 23-May-1994  mycroft branches: 1.1.2;
Merge with 4.4-Lite.
 1.1.2.1 16-Jul-1994  cgd update from trunk
 1.8.32.1 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.8.28.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.9.12.2 03-Sep-2004  skrll Sync with HEAD
 1.9.12.1 03-Aug-2004  skrll Sync with HEAD
 1.21 10-Feb-2024  andvar s/indicies/indices/ in comments.
 1.20 25-Nov-2022  tsutsui Use proper integer types for HP-IB xfer parameters.

No visible regression on 425t and HPDisk.
 1.19 21-Nov-2022  tsutsui Use common macro for numbers of cylinders and blocks for HP-IB disks.

No binary changes.
 1.18 23-May-2022  andvar s/boundries/boundaries/, s/itterate/iterate/ and few more typos.
 1.17 11-Jul-2021  tsutsui Add Device and drive info of 2202A, 7908A, 7911A, and 7941A.

Geometries and description info are taken from hpdrive.ini.sample
in HPDrive. Briefly tested on HPDisk.
 1.16 09-Jul-2021  tsutsui Add support of multiple rd(4) disks on all punits for HPDisk.

Special thanks to Anders Gustafsson, the author of "HPDisk"
(GPIB disk emulator) http://www.dalton.ax/hpdisk/
for providing bare boards and improving firmwares for NetBSD/hp300.
 1.15 05-Jul-2021  tsutsui Cleanup duplicated CS/80 indentify structures. From OpenBSD.

https://marc.info/?l=openbsd-cvs&m=113227249626888&w=2
> Define the CS/80 identify structure only once and correctly, instead of
> duplicating it in every CS/80 driver and using an hardcoded number for
> its size.
> No functional change.

https://marc.info/?l=openbsd-cvs&m=113273001020159&w=2
> Pick HP-IB describe structures changes from main kernel code here as well.
 1.14 18-May-2021  tsutsui Consistently use #define<tab> here.
 1.13 08-Feb-2011  rmind branches: 1.13.60; 1.13.72; 1.13.74;
Remove clause 3 (UCB advertising clause) from the University of Utah
copyright. Confirmed by Mike Hibler, mike at cs.utah.edu - thanks!
Also, merge UCB and Utah copyright texts back into one, as they
originally were.

Extra verification by snj@.
 1.12 11-Dec-2005  christos branches: 1.12.100; 1.12.106; 1.12.108;
merge ktrace-lwp.
 1.11 19-Apr-2004  wiz Spell removable with only two es. Inspired by jmc@openbsd.
 1.10 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.9 11-Feb-2002  wiz branches: 1.9.16;
"doesn't" should have an 's'.
 1.8 27-May-2001  gmcgarry branches: 1.8.2; 1.8.8;
Alignment fix. rd disks now work on ELF systems.
 1.7 09-Feb-1996  scottr branches: 1.7.42;
Info from Mike Hibler <mike@cs.utah.edu> indicates that the probable
intent for the value of the C_REL constant was 0xc0. Testing has turned
up no adverse effect on tape or disk devices, and in fact this change
apparently makes my 9145 tape work as expected. (!) Closes PRs 1874 and
1971.
 1.6 31-Dec-1995  thorpej XXX TEMPORARY STOP-GAP MEASURE! A 12-bit command modifier was being
squished into an 8-bit position in a command stream! Which one is wrong?
Changed the constant from 0x140 to 0x40, which is what ended up happening
anyhow. This exists in the old Utah sources, too! How long has this
bug existed?!
 1.5 26-Oct-1994  cgd branches: 1.5.2;
new RCS ID format.
 1.4 23-May-1994  mycroft Merge with 4.4-Lite.
 1.3 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.5.2.1 12-Feb-1996  thorpej Bring in C_REL fix from main branch; reported to make 9145 tapes work
properly, and even seems to make HP-IB disks a bit faster.
 1.7.42.1 21-Jun-2001  nathanw Catch up to -current.
 1.8.8.2 28-Feb-2002  nathanw Catch up to -current.
 1.8.8.1 27-May-2001  nathanw file rdreg.h was added on branch nathanw_sa on 2002-02-28 04:09:25 +0000
 1.8.2.1 16-Mar-2002  jdolecek Catch up with -current.
 1.9.16.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.9.16.2 18-Sep-2004  skrll Sync with HEAD.
 1.9.16.1 03-Aug-2004  skrll Sync with HEAD
 1.12.108.1 17-Feb-2011  bouyer Sync with HEAD
 1.12.106.1 06-Jun-2011  jruoho Sync with HEAD.
 1.12.100.1 05-Mar-2011  rmind sync with head
 1.13.74.1 31-May-2021  cjep sync with head
 1.13.72.2 01-Aug-2021  thorpej Sync with HEAD.
 1.13.72.1 17-Jun-2021  thorpej Sync w/ HEAD.
 1.13.60.2 06-Dec-2022  martin Pull up following revision(s) (requested by tsutsui in ticket #1552):

sys/arch/hp300/dev/rd.c: revision 1.120
sys/arch/hp300/dev/rd.c: revision 1.121
sys/arch/hp300/dev/rd.c: revision 1.122
sys/arch/hp300/dev/rd.c: revision 1.123
sys/arch/hp300/dev/rd.c: revision 1.124
sys/arch/hp300/dev/rdreg.h: revision 1.19
sys/arch/hp300/dev/rd.c: revision 1.111
sys/arch/hp300/dev/rd.c: revision 1.112
sys/arch/hp300/dev/rd.c: revision 1.113
sys/arch/hp300/stand/common/rd.c: revision 1.12
sys/arch/hp300/dev/rd.c: revision 1.114
sys/arch/hp300/stand/common/rd.c: revision 1.13
sys/arch/hp300/dev/rd.c: revision 1.115
sys/arch/hp300/stand/common/rd.c: revision 1.14
sys/arch/hp300/dev/rd.c: revision 1.116
sys/arch/hp300/stand/common/rd.c: revision 1.15
sys/arch/hp300/dev/rd.c: revision 1.117
sys/arch/hp300/dev/rd.c: revision 1.118
sys/arch/hp300/dev/rd.c: revision 1.119
sys/arch/hp300/dev/rdvar.h: revision 1.27
sys/arch/hp300/dev/rdreg.h: revision 1.20

Sync a list of HP-IB disk IDs with kernel's one.
Now bootloader can boot from 2202A, 7908A, 7911A, and 7941A.
Tested on 425t and HPDisk.

Make local variables static and read only ones const.

Use common macro for numbers of cylinders and blocks for HP-IB disks.
No binary changes.

Fix "rd(4) at punits not configured on HPDisk are misprobed" problem.
- check not only stat value returned by C_QSTAT command against
each punit but also desc.d_name returned by C_DESC command
because it looks HPDisk responds to commands against punits supported
but not-configured punits at 1-3
- prepare rdreset_unit() function to manage reset punit ops during
probe without valid softc

The stragety is taken from OpenBSD with several modification.
Tested on 425t with real 9122D and HPDisk emulating two 7937H drives.
Should be pulled up to netbsd-9.

Remove now unused buffer members from softc prepared only for rdreset().

Use proper integer types for HP-IB xfer parameters.
No visible regression on 425t and HPDisk.

Sync with rdreg.h integer type changes.

Remove unnecessary declarations.

Check bounds of RAW_PART by bounds_check_with_mediasize() as other drivers.
With this check, dd(1) without a count value against a raw partition
is terminated properly at the end of media. Tested on 425t and HPDisk.
Should be pulled up to netbsd-9.

Check bounds of each partition by MI bounds_check_with_label(9).
The previous implementation was committed in rev 1.26 about 26 years ago
and it looks there is no quirk to use the old MD one.

Pass a correct dev_t arg to disk_ioctl().
Probably harmless.

Remove a duplicated static function declaration.

Set disk_geom parameters required by DIOCGPARTINFO in disk_ioctl().
With this change raid(4) no longer complains before mountroot:
RAIDframe: can't get disk size for dev rd0 (22)
Should be pulled up to netbsd-9.

Use proper RAW_PART macro rather than a magic number.

Remove more duplicated static function declarations.

Misc KNF and cosmetics.

Add empty DIOCCACHESYNC ioctl(2) for rd(4).
Without this raid(4) always complains on various raidctl(8) ops:
raid0: cache flush[0] to component 0 failed (22)
RAID1 configured by raid(4) just works HP-IB disks on hp300.

Explicitly include <sys/kernel.h> for hz(9) as man pages says.
XXX: it looks sys/param.h r1.615 and later also has extern int hz
 1.13.60.1 14-Jul-2021  martin Pull up following revision(s) (requested by tsutsui in ticket #1323):

sys/arch/hp300/dev/rd.c: revision 1.109
sys/arch/hp300/stand/Makefile.buildboot: revision 1.37
sys/arch/hp300/stand/common/ct.c: revision 1.8
sys/arch/hp300/dev/hpibvar.h: revision 1.22
sys/arch/hp300/dev/ct.c: revision 1.62
sys/arch/hp300/dev/hpibvar.h: revision 1.23
sys/arch/hp300/dev/ct.c: revision 1.63
sys/arch/hp300/dev/hpibvar.h: revision 1.24
sys/arch/hp300/dev/mt.c: revision 1.55
sys/arch/hp300/dev/rdreg.h: revision 1.14
sys/arch/hp300/dev/hpib.c: revision 1.43 (via patch)
sys/arch/hp300/dev/rdreg.h: revision 1.15
sys/arch/hp300/dev/rdreg.h: revision 1.16
sys/arch/hp300/dev/rdreg.h: revision 1.17
etc/etc.hp300/MAKEDEV.conf: revision 1.15
sys/arch/hp300/stand/common/hpibvar.h: revision 1.6
sys/arch/hp300/stand/common/rd.c: revision 1.11
sys/arch/hp300/dev/ctreg.h: revision 1.11
sys/arch/hp300/dev/rdvar.h: revision 1.24
sys/arch/hp300/dev/rdvar.h: revision 1.25
sys/arch/hp300/dev/rdvar.h: revision 1.26
sys/arch/hp300/dev/rd.c: revision 1.103
sys/arch/hp300/dev/rd.c: revision 1.104
sys/arch/hp300/dev/rd.c: revision 1.105
sys/arch/hp300/dev/rd.c: revision 1.106
sys/arch/hp300/dev/rd.c: revision 1.107
sys/arch/hp300/dev/rd.c: revision 1.108

Consistently use #define<tab> here.

Consistently use #define<tab> as rdreg.h.

No need to bother to use aprint_debug(9) inside #ifdef DEBUG block.

Pull HP-IB probe fixes from OpenBSD/hp300.
https://marc.info/?l=openbsd-cvs&m=113217630426615&w=2

Overhaul the way HP-IB devices are probed. We will now do an exhaustive
probe of the (slave, punit) tuple space, since this is the only way we
can get a dual disk or dual tape enclosure to attach two devices of the
same kind.

This allows using multiple rd(4) disk images on the same slave emulated
by HPDisk (and probably the real 9122D with dual floppy disk drives).

Thanks to Miod Vallat for suggesting this fix.

Move attach messages from common rdident() to explicit rdattach().

Cleanup duplicated CS/80 indentify structures. From OpenBSD.
https://marc.info/?l=openbsd-cvs&m=113227249626888&w=2

Define the CS/80 identify structure only once and correctly, instead of
duplicating it in every CS/80 driver and using an hardcoded number for
its size.
No functional change.
https://marc.info/?l=openbsd-cvs&m=113273001020159&w=2

Pick HP-IB describe structures changes from main kernel code here as well.

Add support of multiple rd(4) disks on all punits for HPDisk.

Special thanks to Anders Gustafsson, the author of "HPDisk"
(GPIB disk emulator) http://www.dalton.ax/hpdisk/
for providing bare boards and improving firmwares for NetBSD/hp300.

Specify -fno-unwind-tables to shrink binaries.

Before:
text data bss dec hex filename
77902 4328 137120 219350 358d6 uboot

After:
text data bss dec hex filename
64186 4328 137120 205634 32342 uboot

Create rd3 device nodes, for HPDisk.

Add Device and drive info of 2202A, 7908A, 7911A, and 7941A.

Geometries and description info are taken from hpdrive.ini.sample
in HPDrive. Briefly tested on HPDisk.

Print rd(4) capacity and geometry info as sd(4) and wd(4) do.

Before:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 698 cylinders, 13 heads, 1116102 blocks, 512 bytes/block

After:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 544 MB, 698 cyl, 13 head, 123 sec, 512 bytes/block x 1116102 blocks
 1.27 23-Nov-2022  tsutsui Remove now unused buffer members from softc prepared only for rdreset().
 1.26 09-Jul-2021  tsutsui Add support of multiple rd(4) disks on all punits for HPDisk.

Special thanks to Anders Gustafsson, the author of "HPDisk"
(GPIB disk emulator) http://www.dalton.ax/hpdisk/
for providing bare boards and improving firmwares for NetBSD/hp300.
 1.25 05-Jul-2021  tsutsui Cleanup duplicated CS/80 indentify structures. From OpenBSD.

https://marc.info/?l=openbsd-cvs&m=113227249626888&w=2
> Define the CS/80 identify structure only once and correctly, instead of
> duplicating it in every CS/80 driver and using an hardcoded number for
> its size.
> No functional change.

https://marc.info/?l=openbsd-cvs&m=113273001020159&w=2
> Pick HP-IB describe structures changes from main kernel code here as well.
 1.24 04-Jun-2021  tsutsui Consistently use #define<tab> as rdreg.h.
 1.23 14-Apr-2015  riastradh branches: 1.23.22; 1.23.34; 1.23.38;
Include <sys/rndsource.h> where it is actually used.

I had removed <sys/rnd.h> from files that didn't mention anything of
the rnd(9) API. But they included other files which assumed
<sys/rnd.h> had already been included.
 1.22 02-Feb-2012  tls branches: 1.22.6; 1.22.24;
Entropy-pool implementation move and cleanup.

1) Move core entropy-pool code and source/sink/sample management code
to sys/kern from sys/dev.

2) Remove use of NRND as test for presence of entropy-pool code throughout
source tree.

3) Remove use of RND_ENABLED in device drivers as microoptimization to
avoid expensive operations on disabled entropy sources; make the
rnd_add calls do this directly so all callers benefit.

4) Fix bug in recent rnd_add_data()/rnd_add_uint32() changes that might
have lead to slight entropy overestimation for some sources.

5) Add new source types for environmental sensors, power sensors, VM
system events, and skew between clocks, with a sample implementation
for each.

ok releng to go in before the branch due to the difficulty of later
pullup (widespread #ifdef removal and moved files). Tested with release
builds on amd64 and evbarm and live testing on amd64.
 1.21 19-Nov-2011  tls branches: 1.21.2;
First step of random number subsystem rework described in
<20111022023242.BA26F14A158@mail.netbsd.org>. This change includes
the following:

An initial cleanup and minor reorganization of the entropy pool
code in sys/dev/rnd.c and sys/dev/rndpool.c. Several bugs are
fixed. Some effort is made to accumulate entropy more quickly at
boot time.

A generic interface, "rndsink", is added, for stream generators to
request that they be re-keyed with good quality entropy from the pool
as soon as it is available.

The arc4random()/arc4randbytes() implementation in libkern is
adjusted to use the rndsink interface for rekeying, which helps
address the problem of low-quality keys at boot time.

An implementation of the FIPS 140-2 statistical tests for random
number generator quality is provided (libkern/rngtest.c). This
is based on Greg Rose's implementation from Qualcomm.

A new random stream generator, nist_ctr_drbg, is provided. It is
based on an implementation of the NIST SP800-90 CTR_DRBG by
Henric Jungheim. This generator users AES in a modified counter
mode to generate a backtracking-resistant random stream.

An abstraction layer, "cprng", is provided for in-kernel consumers
of randomness. The arc4random/arc4randbytes API is deprecated for
in-kernel use. It is replaced by "cprng_strong". The current
cprng_fast implementation wraps the existing arc4random
implementation. The current cprng_strong implementation wraps the
new CTR_DRBG implementation. Both interfaces are rekeyed from
the entropy pool automatically at intervals justifiable from best
current cryptographic practice.

In some quick tests, cprng_fast() is about the same speed as
the old arc4randbytes(), and cprng_strong() is about 20% faster
than rnd_extract_data(). Performance is expected to improve.

The AES code in src/crypto/rijndael is no longer an optional
kernel component, as it is required by cprng_strong, which is
not an optional kernel component.

The entropy pool output is subjected to the rngtest tests at
startup time; if it fails, the system will reboot. There is
approximately a 3/10000 chance of a false positive from these
tests. Entropy pool _input_ from hardware random numbers is
subjected to the rngtest tests at attach time, as well as the
FIPS continuous-output test, to detect bad or stuck hardware
RNGs; if any are detected, they are detached, but the system
continues to run.

A problem with rndctl(8) is fixed -- datastructures with
pointers in arrays are no longer passed to userspace (this
was not a security problem, but rather a major issue for
compat32). A new kernel will require a new rndctl.

The sysctl kern.arandom() and kern.urandom() nodes are hooked
up to the new generators, but the /dev/*random pseudodevices
are not, yet.

Manual pages for the new kernel interfaces are forthcoming.
 1.20 08-Feb-2011  rmind branches: 1.20.4;
Remove clause 3 (UCB advertising clause) from the University of Utah
copyright. Confirmed by Mike Hibler, mike at cs.utah.edu - thanks!
Also, merge UCB and Utah copyright texts back into one, as they
originally were.

Extra verification by snj@.
 1.19 11-Jan-2009  tsutsui branches: 1.19.6; 1.19.8; 1.19.10;
Add casts to int to rdunit() and rdpart() macro to suppress a warning
since they are unlikely 64 bits.

XXX: actually these should be DISKUNIT() and DISKPART() in <sys/disklabel.h>.
 1.18 29-Mar-2008  tsutsui branches: 1.18.4; 1.18.12;
Split device_t/softc, and misc cosmetic changes.
 1.17 11-Dec-2005  christos branches: 1.17.74;
merge ktrace-lwp.
 1.16 15-Oct-2005  yamt - change the way to specify a bufq strategy. (by string rather than by number)
- rather than embedding bufq_state in driver softc,
have a pointer to the former.
- move bufq related functions from kern/subr_disk.c to kern/subr_bufq.c.
- rename method to strategy for consistency.
- move some definitions which don't need to be exposed to the rest of kernel
from sys/bufq.h to sys/bufq_impl.h.
(is it better to move it to kern/ or somewhere?)
- fix some obvious breakage in dev/qbus/ts.c. (not tested)
 1.15 02-Jun-2005  tsutsui branches: 1.15.2;
Add const.
 1.14 28-Aug-2004  thorpej Remove the last vestiges of COMPAT_NOLABEL. It's been 10 years; label
your disks already.
 1.13 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.12 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.11 26-Jul-2002  hannken branches: 1.11.6;
Convert to new device buffer queue interface.

Approved by: Jason R. Thorpe <thorpej@netbsd.org>
 1.10 10-Oct-2000  he branches: 1.10.4; 1.10.8; 1.10.16;
Add randomness sampling from hil, sd and rd devices.
 1.9 23-Mar-2000  thorpej branches: 1.9.4;
New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.8 21-Jan-2000  thorpej Update for sys/buf.h/disksort_*() changes.
 1.7 31-Mar-1997  scottr branches: 1.7.16; 1.7.22;
Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.6 30-Jan-1997  thorpej Convert to new-style autoconfiguration; old-style config is no longer
supported.
 1.5 06-Jun-1996  thorpej Remove the old-style disk instrumentation support. Nothing uses it
anymore.
 1.4 07-Jan-1996  thorpej branches: 1.4.4;
New generic disk framework. Highlights:

- New metrics handling. Metrics are now kept in the new
`struct disk'. Busy time is now stored as a timeval, and
transfer count in bytes.

- Storage for disklabels is now dynamically allocated, so that
the size of the disk structure is not machine-dependent.

- Several new functions for attaching and detaching disks, and
handling metrics calculation.

Old-style instrumentation is still supported in drivers that did it before.
However, old-style instrumentation is being deprecated, and will go away
once the userland utilities are updated for the new framework.

For usage and architectural details, see the forthcoming disk(9) manual
page.
 1.3 19-Nov-1995  thorpej Re-arrange things such that we can print out disk geometry regardless of
COMPAT_NOLABEL.

XXX One day when the world doesn't assume DEV_BSIZE bytes/sector, we'll be
able to actually use the stuff sensed from the drive, rather than a table.
 1.2 26-Oct-1994  cgd new RCS ID format.
 1.1 23-May-1994  mycroft Merge with 4.4-Lite.
 1.4.4.1 06-Jun-1996  thorpej Update from trunk:

Remove old-style disk instrumentation support. Nothing uses it
anymore.
 1.7.22.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.7.16.1 12-Oct-2000  he Pull up revision 1.10 (requested by he):
Add randomness sampling for hil, sd and rd on the hp300 port.
 1.9.4.1 18-Oct-2000  tv Pullup 1.10 [he]:
Add randomness sampling from hil, sd and rd devices.
 1.10.16.1 30-Aug-2002  gehenna catch up with -current.
 1.10.8.1 01-Aug-2002  nathanw Catch up to -current.
 1.10.4.1 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.11.6.5 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.11.6.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.11.6.3 18-Sep-2004  skrll Sync with HEAD.
 1.11.6.2 03-Sep-2004  skrll Sync with HEAD
 1.11.6.1 03-Aug-2004  skrll Sync with HEAD
 1.15.2.1 21-Jun-2006  yamt sync with head.
 1.17.74.2 17-Jan-2009  mjf Sync with HEAD.
 1.17.74.1 03-Apr-2008  mjf Sync with HEAD.
 1.18.12.1 19-Jan-2009  skrll Sync with HEAD.
 1.18.4.1 04-May-2009  yamt sync with head.
 1.19.10.1 17-Feb-2011  bouyer Sync with HEAD
 1.19.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.19.6.1 05-Mar-2011  rmind sync with head
 1.20.4.1 17-Apr-2012  yamt sync with head
 1.21.2.1 18-Feb-2012  mrg merge to -current.
 1.22.24.1 06-Jun-2015  skrll Sync with HEAD
 1.22.6.1 03-Dec-2017  jdolecek update from HEAD
 1.23.38.1 06-Jun-2021  cjep sync with head
 1.23.34.2 01-Aug-2021  thorpej Sync with HEAD.
 1.23.34.1 17-Jun-2021  thorpej Sync w/ HEAD.
 1.23.22.2 06-Dec-2022  martin Pull up following revision(s) (requested by tsutsui in ticket #1552):

sys/arch/hp300/dev/rd.c: revision 1.120
sys/arch/hp300/dev/rd.c: revision 1.121
sys/arch/hp300/dev/rd.c: revision 1.122
sys/arch/hp300/dev/rd.c: revision 1.123
sys/arch/hp300/dev/rd.c: revision 1.124
sys/arch/hp300/dev/rdreg.h: revision 1.19
sys/arch/hp300/dev/rd.c: revision 1.111
sys/arch/hp300/dev/rd.c: revision 1.112
sys/arch/hp300/dev/rd.c: revision 1.113
sys/arch/hp300/stand/common/rd.c: revision 1.12
sys/arch/hp300/dev/rd.c: revision 1.114
sys/arch/hp300/stand/common/rd.c: revision 1.13
sys/arch/hp300/dev/rd.c: revision 1.115
sys/arch/hp300/stand/common/rd.c: revision 1.14
sys/arch/hp300/dev/rd.c: revision 1.116
sys/arch/hp300/stand/common/rd.c: revision 1.15
sys/arch/hp300/dev/rd.c: revision 1.117
sys/arch/hp300/dev/rd.c: revision 1.118
sys/arch/hp300/dev/rd.c: revision 1.119
sys/arch/hp300/dev/rdvar.h: revision 1.27
sys/arch/hp300/dev/rdreg.h: revision 1.20

Sync a list of HP-IB disk IDs with kernel's one.
Now bootloader can boot from 2202A, 7908A, 7911A, and 7941A.
Tested on 425t and HPDisk.

Make local variables static and read only ones const.

Use common macro for numbers of cylinders and blocks for HP-IB disks.
No binary changes.

Fix "rd(4) at punits not configured on HPDisk are misprobed" problem.
- check not only stat value returned by C_QSTAT command against
each punit but also desc.d_name returned by C_DESC command
because it looks HPDisk responds to commands against punits supported
but not-configured punits at 1-3
- prepare rdreset_unit() function to manage reset punit ops during
probe without valid softc

The stragety is taken from OpenBSD with several modification.
Tested on 425t with real 9122D and HPDisk emulating two 7937H drives.
Should be pulled up to netbsd-9.

Remove now unused buffer members from softc prepared only for rdreset().

Use proper integer types for HP-IB xfer parameters.
No visible regression on 425t and HPDisk.

Sync with rdreg.h integer type changes.

Remove unnecessary declarations.

Check bounds of RAW_PART by bounds_check_with_mediasize() as other drivers.
With this check, dd(1) without a count value against a raw partition
is terminated properly at the end of media. Tested on 425t and HPDisk.
Should be pulled up to netbsd-9.

Check bounds of each partition by MI bounds_check_with_label(9).
The previous implementation was committed in rev 1.26 about 26 years ago
and it looks there is no quirk to use the old MD one.

Pass a correct dev_t arg to disk_ioctl().
Probably harmless.

Remove a duplicated static function declaration.

Set disk_geom parameters required by DIOCGPARTINFO in disk_ioctl().
With this change raid(4) no longer complains before mountroot:
RAIDframe: can't get disk size for dev rd0 (22)
Should be pulled up to netbsd-9.

Use proper RAW_PART macro rather than a magic number.

Remove more duplicated static function declarations.

Misc KNF and cosmetics.

Add empty DIOCCACHESYNC ioctl(2) for rd(4).
Without this raid(4) always complains on various raidctl(8) ops:
raid0: cache flush[0] to component 0 failed (22)
RAID1 configured by raid(4) just works HP-IB disks on hp300.

Explicitly include <sys/kernel.h> for hz(9) as man pages says.
XXX: it looks sys/param.h r1.615 and later also has extern int hz
 1.23.22.1 14-Jul-2021  martin Pull up following revision(s) (requested by tsutsui in ticket #1323):

sys/arch/hp300/dev/rd.c: revision 1.109
sys/arch/hp300/stand/Makefile.buildboot: revision 1.37
sys/arch/hp300/stand/common/ct.c: revision 1.8
sys/arch/hp300/dev/hpibvar.h: revision 1.22
sys/arch/hp300/dev/ct.c: revision 1.62
sys/arch/hp300/dev/hpibvar.h: revision 1.23
sys/arch/hp300/dev/ct.c: revision 1.63
sys/arch/hp300/dev/hpibvar.h: revision 1.24
sys/arch/hp300/dev/mt.c: revision 1.55
sys/arch/hp300/dev/rdreg.h: revision 1.14
sys/arch/hp300/dev/hpib.c: revision 1.43 (via patch)
sys/arch/hp300/dev/rdreg.h: revision 1.15
sys/arch/hp300/dev/rdreg.h: revision 1.16
sys/arch/hp300/dev/rdreg.h: revision 1.17
etc/etc.hp300/MAKEDEV.conf: revision 1.15
sys/arch/hp300/stand/common/hpibvar.h: revision 1.6
sys/arch/hp300/stand/common/rd.c: revision 1.11
sys/arch/hp300/dev/ctreg.h: revision 1.11
sys/arch/hp300/dev/rdvar.h: revision 1.24
sys/arch/hp300/dev/rdvar.h: revision 1.25
sys/arch/hp300/dev/rdvar.h: revision 1.26
sys/arch/hp300/dev/rd.c: revision 1.103
sys/arch/hp300/dev/rd.c: revision 1.104
sys/arch/hp300/dev/rd.c: revision 1.105
sys/arch/hp300/dev/rd.c: revision 1.106
sys/arch/hp300/dev/rd.c: revision 1.107
sys/arch/hp300/dev/rd.c: revision 1.108

Consistently use #define<tab> here.

Consistently use #define<tab> as rdreg.h.

No need to bother to use aprint_debug(9) inside #ifdef DEBUG block.

Pull HP-IB probe fixes from OpenBSD/hp300.
https://marc.info/?l=openbsd-cvs&m=113217630426615&w=2

Overhaul the way HP-IB devices are probed. We will now do an exhaustive
probe of the (slave, punit) tuple space, since this is the only way we
can get a dual disk or dual tape enclosure to attach two devices of the
same kind.

This allows using multiple rd(4) disk images on the same slave emulated
by HPDisk (and probably the real 9122D with dual floppy disk drives).

Thanks to Miod Vallat for suggesting this fix.

Move attach messages from common rdident() to explicit rdattach().

Cleanup duplicated CS/80 indentify structures. From OpenBSD.
https://marc.info/?l=openbsd-cvs&m=113227249626888&w=2

Define the CS/80 identify structure only once and correctly, instead of
duplicating it in every CS/80 driver and using an hardcoded number for
its size.
No functional change.
https://marc.info/?l=openbsd-cvs&m=113273001020159&w=2

Pick HP-IB describe structures changes from main kernel code here as well.

Add support of multiple rd(4) disks on all punits for HPDisk.

Special thanks to Anders Gustafsson, the author of "HPDisk"
(GPIB disk emulator) http://www.dalton.ax/hpdisk/
for providing bare boards and improving firmwares for NetBSD/hp300.

Specify -fno-unwind-tables to shrink binaries.

Before:
text data bss dec hex filename
77902 4328 137120 219350 358d6 uboot

After:
text data bss dec hex filename
64186 4328 137120 205634 32342 uboot

Create rd3 device nodes, for HPDisk.

Add Device and drive info of 2202A, 7908A, 7911A, and 7941A.

Geometries and description info are taken from hpdrive.ini.sample
in HPDrive. Briefly tested on HPDisk.

Print rd(4) capacity and geometry info as sd(4) and wd(4) do.

Before:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 698 cylinders, 13 heads, 1116102 blocks, 512 bytes/block

After:
rd0 at hpibbus1 slave 0 punit 0: 7937H
rd0: 544 MB, 698 cyl, 13 head, 123 sec, 512 bytes/block x 1116102 blocks
 1.25 07-Sep-2025  thorpej Change todr_chip_handle::cookie -> todr_chip_handle::todr_dev, and
make it a device_t. Upcoming functional changes will require the
device_t associated with a TODR device.

Change todr_chip_handle::bus_cookie -> todr_chip_handle::todr_devaux.
Nothing was using the old field, but I decided to keep it around just
in cause something needs it in the future.

And with these largely mechanical yet semantically meaningful changes,
thus spake the Oracle: "Welcome to NetBSD 11.99.2."
 1.24 07-Sep-2025  thorpej Remove unnecessary NULL-initialization of TODR handle fields.
 1.23 20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h> include.
 1.22 15-Jan-2023  tsutsui TAB/space cleanup.
 1.21 19-Apr-2014  tsutsui branches: 1.21.58;
Add proper RealTime Clock support for HP9000/425e.

As the OpenBSD/hp300 page says 425e doesn't have the traditional
RTC at intio (as it also lacks DCA 16550 serial at intio?),
but after a few hour investigation it turns out that
425e uses mc146818 compatible calendar clock in
the Apollo "frodo" utility chip and the frodo chip on
425e actually has the 32kHz OSC and is actually backed up
by the onboard lithium battery.

Tested on HP425e (with mcclock) and HP362 (with old rtc).
 1.20 08-Feb-2011  rmind branches: 1.20.4; 1.20.10; 1.20.14; 1.20.18; 1.20.28;
Remove clause 3 (UCB advertising clause) from the University of Utah
copyright. Confirmed by Mike Hibler, mike at cs.utah.edu - thanks!
Also, merge UCB and Utah copyright texts back into one, as they
originally were.

Extra verification by snj@.
 1.19 29-Mar-2008  tsutsui branches: 1.19.26; 1.19.32; 1.19.34;
Split device_t/softc, and misc cosmetic changes.
 1.18 22-Feb-2007  tsutsui branches: 1.18.42;
- use todr_[gs]ettime_ymdhms
- use bool
- some KNF
 1.17 04-Sep-2006  gdamore branches: 1.17.8;
Remove unused todr_setcal/todr_getcal and all the assorted stub
implementations.
 1.16 21-Jul-2006  tsutsui Some KNF.
 1.15 11-Dec-2005  christos branches: 1.15.4; 1.15.8;
merge ktrace-lwp.
 1.14 05-Jun-2005  he branches: 1.14.2;
Add volatile to the second argument to _gettime / _settime functions.
 1.13 10-Feb-2005  tsutsui Allocate struct todr_chip_handle in struct rtc_softc rather than
using MALLOC(9).
 1.12 02-Jan-2005  tsutsui branches: 1.12.2; 1.12.4;
u_intNN_t -> uintNN_t
 1.11 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.10 17-Nov-2003  tsutsui TAB/space cleanup.
 1.9 07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.8 19-Jul-2003  tsutsui Rename clockattach() to todr_attach().
 1.7 05-Jul-2003  tsutsui Initialize bus_space_tag in rtc_softc properly in rtcattch().
 1.6 02-Oct-2002  thorpej branches: 1.6.6;
Use CFATTACH_DECL().
 1.5 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.4 17-Mar-2002  gmcgarry Don't match on trailing spaces in the module name.
 1.3 15-Mar-2002  gmcgarry malloc cleanups:
- malloc+memset -> malloc with M_ZERO
- malloc -> MALLOC for fixed-sized structures
Add RCSIDs while here
 1.2 17-Nov-2001  gmcgarry branches: 1.2.2; 1.2.4;
Merge some fixes from clock.c, revision 1.23.
 1.1 17-Nov-2001  gmcgarry Device attachment for the real-time clock.
 1.2.4.4 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.2.4.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.2.4.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.2.4.1 17-Nov-2001  thorpej file rtc.c was added on branch kqueue on 2002-01-10 19:42:58 +0000
 1.2.2.4 18-Oct-2002  nathanw Catch up to -current.
 1.2.2.3 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.2.2.2 08-Jan-2002  nathanw Catch up to -current.
 1.2.2.1 17-Nov-2001  nathanw file rtc.c was added on branch nathanw_sa on 2002-01-08 00:24:36 +0000
 1.6.6.7 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.6.6.6 15-Feb-2005  skrll Sync with HEAD.
 1.6.6.5 17-Jan-2005  skrll Sync with HEAD.
 1.6.6.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.6.6.3 18-Sep-2004  skrll Sync with HEAD.
 1.6.6.2 03-Sep-2004  skrll Sync with HEAD
 1.6.6.1 03-Aug-2004  skrll Sync with HEAD
 1.12.4.1 12-Feb-2005  yamt sync with head.
 1.12.2.1 29-Apr-2005  kent sync with -current
 1.14.2.2 26-Feb-2007  yamt sync with head.
 1.14.2.1 30-Dec-2006  yamt sync with head.
 1.15.8.2 14-Sep-2006  yamt sync with head.
 1.15.8.1 11-Aug-2006  yamt sync with head
 1.15.4.1 09-Sep-2006  rpaulo sync with head
 1.17.8.1 27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.18.42.1 03-Apr-2008  mjf Sync with HEAD.
 1.19.34.1 17-Feb-2011  bouyer Sync with HEAD
 1.19.32.1 06-Jun-2011  jruoho Sync with HEAD.
 1.19.26.1 05-Mar-2011  rmind sync with head
 1.20.28.1 10-Aug-2014  tls Rebase.
 1.20.18.1 18-May-2014  rmind sync with head
 1.20.14.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.20.10.1 21-May-2014  bouyer Pull up following revision(s) (requested by tsutsui in ticket #1058):
sys/arch/hp300/conf/files.hp300: revision 1.88
sys/arch/hp300/include/autoconf.h: revision 1.13
sys/dev/ic/sti.c: revision 1.17
sys/arch/hp300/dev/frodo.c: revision 1.31
sys/arch/hp300/conf/GENERIC: revision 1.173
sys/arch/hp300/hp300/machdep.c: revision 1.229
sys/arch/hp300/dev/frodo.c: revision 1.32
sys/arch/hp300/hp300/autoconf.c: revision 1.102
sys/arch/hp300/dev/frodoreg.h: revision 1.5
sys/arch/hp300/stand/common/ite_sti.c: revision 1.1
sys/arch/hp300/stand/common/itevar.h: revision 1.16
sys/arch/hp300/hp300/autoconf.c: revision 1.105
sys/arch/hp300/dev/sti_sgcvar.h: revision 1.1
sys/arch/hp300/stand/common/apci.c: revision 1.12
sys/arch/hp300/stand/common/apci.c: revision 1.13
sys/arch/hp300/dev/dnkbd.c: revision 1.6
sys/arch/hp300/dev/dnkbd.c: revision 1.7
sys/arch/hp300/stand/inst/version: revision 1.12
sys/arch/hp300/dev/com_frodo.c: revision 1.9
sys/arch/hp300/stand/common/ite.c: revision 1.17
sys/arch/hp300/conf/GENERIC: revision 1.181
sys/arch/hp300/dev/sti_sgc.c: revision 1.1
sys/arch/hp300/stand/common/dnkbd.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.2
sys/dev/ic/stivar.h: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.21
sys/arch/hp300/conf/INSTALL: revision 1.56
sys/arch/hp300/conf/INSTALL: revision 1.58
sys/arch/hp300/stand/uboot/version: revision 1.19
sys/arch/hp300/stand/common/samachdep.h: revision 1.17
sys/arch/hp300/stand/common/clock.c: revision 1.12
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.1
sys/arch/hp300/stand/Makefile.buildboot: revision 1.34
sys/arch/hp300/conf/files.hp300: revision 1.87
Add sti at sgc framebuffer.
Ported from OpenBSD by kiyohara@.
Fix a botch on switching from apci (and dca) to MI com(4) 10 years ago.
I.e. fix apci device address per FRODO_BASE macro change
in frodoreg.h rev 1.2. Now bootloader works with serial console
on HP425e (which has only com at frodo).
Thanks to miod@openbsd for providing his 425e.
Add sti(4) at sgc screen console support. From (the late) OpenBSD/hp300.
Tested on HP9000/425e, which was sent from Miod Vallat and
demonstrated at Open Source unConference 2014 Kagawa.
Check the service switch on 425e to select apci serial console.
Taken from OpenBSD/hp300. See the following comment for details:
> * Check the service switch. On the 425e, this is a physical
> * switch, unlike other frodo-based machines, so we can use it
> * as a serial vs internal video selector, since the PROM can not
> * be configured for serial console.
Add proper RealTime Clock support for HP9000/425e.
As the OpenBSD/hp300 page says 425e doesn't have the traditional
RTC at intio (as it also lacks DCA 16550 serial at intio?),
but after a few hour investigation it turns out that
425e uses mc146818 compatible calendar clock in
the Apollo "frodo" utility chip and the frodo chip on
425e actually has the 32kHz OSC and is actually backed up
by the onboard lithium battery.
Tested on HP425e (with mcclock) and HP362 (with old rtc).
Add RTC support for HP9000/425e to bootloader too.
Also put several cleanup:
- make local functions and variables static
- use proper variable types
- some KNF
Note it turns out that extreme slowness of netboot on hp300 is
caused by the too slow access of the traditional RTC chip at intio
(i.e. netboot on 425e is so much faster than others). Oh well.
Add proper consinit(9) support for sti(4) at sgc framebuffer on hp300.
The cnattach functions for sti(4) and service switch check method
for 425e in com_frodo.c are taken from OpenBSD.
The strategy how to choose the console device in hp300_cninit() is
quite diverged from 4.4BSD and OpenBSD so it's tweaked by me.
Also put several changes in sti_sgc.c to reduce diffs from OpenBSD/hp300.
Tested on 425e and 362 (which still uses gendiofb(4), not sti(4)).
XXX: sti(4) requires uvm_km_alloc(9) and uvm_map_protect(9)
to copy and call ROM functions on the executable memory region, so
it can be called before UVM and related initializations are complete.
Probably it's time to consider about MI "deferred consinit()" API
in init_main.c (or elsewhere) for modern complicated VM system...
Also fix the apci device address in dnkbd.c as apci.c rev 1.12:
http://mail-index.netbsd.org/source-changes/2014/04/10/msg053940.html
Finally dnkbd(4) is confirmed working at least on bootloader.
Thanks again to Miod Vallat.
Make the Apollo Domain keyboard actually work.
Tested on HP9000/425e and the keyboard model A1630-82001 R2 (RX-60857-HW)
provided by Miod Vallat. Mouse support needs more work.
Pull random notes on the Apollo Domain keyboard from ancient PR/3528.
Bump versions to denote recent 425e related changes.
Probe mcclock only on 425e to avoid an extra "not configured" message.
Add and enable sti(4) at sgc in install kernels for 425e.
Tested on both serial console and framebuffer console.
(switched by the service switch on the back panel)
 1.20.4.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.21.58.1 22-Jun-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #722):

sys/fs/cd9660/cd9660_util.c: revision 1.16
sys/arch/hp300/stand/common/clock.c: revision 1.14
sys/arch/hp300/stand/common/scsireg.h: revision 1.5
sys/arch/hp300/stand/common/scsireg.h: revision 1.6
sys/arch/hp300/stand/Makefile.buildboot: revision 1.38
sys/arch/hp300/include/bus.h: revision 1.23
sys/arch/hp300/stand/Makefile.buildboot: revision 1.39
sys/arch/hp300/stand/common/sd.c: revision 1.12
sys/arch/hp300/stand/common/prf.c: revision 1.6
sys/arch/hp300/stand/common/sd.c: revision 1.13
usr.sbin/installboot/installboot.8: revision 1.106
usr.sbin/installboot/Makefile: revision 1.59
sys/arch/hp300/stand/common/devopen.c: revision 1.14
usr.sbin/installboot/installboot.8: revision 1.107
sys/arch/hp300/stand/common/ite_dumb.c: revision 1.2
sys/arch/hp300/stand/common/devopen.c: revision 1.15
usr.sbin/installboot/installboot.8: revision 1.108
sys/fs/cd9660/cd9660_extern.h: revision 1.29
usr.sbin/installboot/installboot.8: revision 1.109
tools/Makefile.nbincludes: revision 1.11 (patch)
sys/arch/hp300/dev/rboxreg.h: revision 1.3
sys/arch/hp300/stand/common/scsivar.h: revision 1.5
sys/arch/hp300/dev/dnkbd.c: revision 1.14
sys/arch/hp300/hp300/trap.c: revision 1.156
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.12
sys/arch/hp300/dev/frodoreg.h: revision 1.6
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.13
sys/arch/hp300/stand/common/ite_sti.c: revision 1.2
sys/arch/hp300/stand/common/hil.c: revision 1.15
usr.sbin/installboot/arch/hp300.c: revision 1.18
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.14
sys/arch/hp300/dev/rbox.c: revision 1.4
usr.sbin/installboot/arch/hp300.c: revision 1.19
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.15
sys/sys/bootblock.h: revision 1.59
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.16
usr.sbin/installboot/installboot.h: revision 1.44
sys/arch/hp300/stand/mkboot/volhdr.h: file removal
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.17
sys/arch/hp300/dev/hpib.c: revision 1.45
usr.sbin/installboot/installboot.h: revision 1.45
usr.sbin/installboot/cd9660.c: revision 1.1
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.18
sys/arch/hp300/dev/topcatreg.h: revision 1.3
usr.sbin/installboot/cd9660.c: revision 1.2
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.19
sys/arch/hp300/stand/inst/inst.c: revision 1.25
sys/arch/hp300/stand/uboot/Makefile: revision 1.12
sys/arch/hp300/dev/dvbox.c: revision 1.4
sys/arch/hp300/dev/dma.c: revision 1.45
sys/arch/hp300/stand/uboot/Makefile: revision 1.13
sys/arch/hp300/stand/common/rd.c: revision 1.16
sys/arch/hp300/stand/inst/Makefile: revision 1.12
distrib/hp300/cdroms/installcd/Makefile: revision 1.4
sys/arch/hp300/stand/mkboot/volhdr.h: revision 1.6
sys/arch/hp300/stand/common/machdep.c: revision 1.16
usr.sbin/installboot/fstypes.c: revision 1.14
sys/arch/hp300/hp300/machdep.c: revision 1.238
sys/arch/hp300/include/cpu.h: revision 1.73
sys/arch/hp300/dev/diofbreg.h: revision 1.4
sys/arch/hp300/stand/common/scsi.c: revision 1.12
sys/arch/hp300/stand/common/netio.c: revision 1.19
sys/arch/hp300/stand/common/scsi.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.22
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.20
sys/arch/hp300/stand/common/conf.h: revision 1.4
sys/arch/hp300/hp300/autoconf.c: revision 1.111
sys/arch/hp300/stand/common/conf.c: revision 1.15
sys/arch/hp300/stand/mkboot/Makefile: revision 1.12
sys/arch/hp300/stand/mkboot/Makefile: revision 1.13
sys/arch/hp300/hp300/autoconf.c: revision 1.114
sys/arch/hp300/dev/dcmreg.h: revision 1.11
sys/arch/hp300/dev/diofbvar.h: revision 1.4
sys/arch/hp300/dev/dcm.c: revision 1.91
sys/fs/cd9660/cd9660_util.c: revision 1.15
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.2

TAB/space cleanup.

installboot(8): formatting improvements

Use Ar foo instead of <foo>; this is mdoc.

Other formatting tweaks.
installboot(8): fix up markup

Don't overuse .Sy - when everything is highlighted, nothing is. Use
.Ic for options &c to get correct PostScript output (both are bold in
plain text).

Use Aq Ar inside .Pa, as both Pa and Ar are rendered as underscored
text in plain text output, and the distinction is lost.

Don't set examples in bold, but give them .Pp space around - they are
much easier to read this way.

Use consistent -width in FILES.
document how to use installboot on netbsd/vax.

PR/57909: Jan-Benedict Glaw: Don't include (build) timestamp when doing a
reproducible build
fix usage string, improve error handling.
add missing chunk for repro-build. fix gcc warnings.
avoid stringop truncation, fix copyright string to prevent assembler warnings.

Fix build as a tool (Jan-Benedict Glaw)

Fix integer overflow of strtol(3) for "loadpoint" address on ILP32 hosts.

This strtol(3) was introduced in rev 1.12 for PR/57909 after netbsd-10,
but it returns LONG_MAX (0x7FFFFFFF) for 0xFFF00000 on ILP32 hosts and
the wrong loadpoint causes "NOT ENOUGH MEMORY" error by the BOOTROMs
on loading uboot.lif on (at least) my 9000/360 and 9000/425t.

Misc cosmetic changes for mostly readability.
- KNF and add some newlines per blocks
- define and use proper bintobcd() macro
- make local functions and variables static

The same uboot.lif binaries are generated.

Rename ${PROGAOUT} -> ${PROGELF} to reflect reality.
Use proper signedness for the LIF file system data structures.

Ancient 4.3BSD used short and int for location, file size, file type,
and addresses etc. but all of them should be unsigned.

Also rename several variables and add comments for readability.
The LIF file system info can be found in "The HPDir Project" page:
https://www.hp9845.net/9845/projects/hpdir/
The same uboot.lif binaries are generated.

Add a preliminary CD boot support to uboot for preparation of PR/54455.
Briefly tested on mame, but not enalbed yet.

Recognize SCSI CD-ROM devices as a booted device properly.

Necessary for PR port-hp300/54455, to boot an md root root RAMDISK

kernel from CD-ROM without "WARNING: can't find match for bootdev:"
prompt.

Sync with src/sys/arch/hp300/stand/mkboot/volhdr.h rev 1.6.
https://mail-index.netbsd.org/source-changes/2024/05/07/msg151195.html

Use proper signedness for the LIF file system data structures.
mkboot should use this MI <sys/bootblock.h> and volhdr.h should
be removed soon.

Use MI <sys/bootblock.h> to refer LIF filesystem structures.
This should have been done when LIF definitions were initially added
to <sys/bootblock.h> for MI installboot(8).

Enable SUPPORT_CD on uboot.

Make cd9660_util.c usable in userland tools like installboot(8).

This was partially done for src/distrib/cdrom/macppc_installboot,
but more strict prototypes are necessary for native binary builds.

Install cd9660 related system headers for tools installboot(8) builds.

Reorder function prototypes per source files.

Add cd9660 support to search a bootloader file in the target file system.

Also add CD boot support for hp300, using a bootloader file in cd9660 fs.
This is a tool's part to close PR/54455.

HP 9000/300 machines read LIF directory entry allocated after
the LIF volume header at the top of the boot disk during bootstrap,
and a bootstrap file must be contiguously allocated on the disk
due to limitation of the LIF specification.

Current NetBSD/hp300's bootloader is larger than ~80KB so we have
to prepare a special 'boot' partition for FFS (that has only 8KB (ffsv1)
or 32KB (ffsv2) spaces) disks to put such a large bootloader.

On the other hand, on ISO9660 fs all files are allocated contiguously
so we can specify a bootloader file in the target ISO9660 directly
in the LIF directory entry.

Note we can simply use the existing "append" option to create bootable
CD ISO for hp300, but it looks some emulators (at leaset MAME) reject
such non-standard ISO files, i.e. with an appended bootloader file at
the end of the image.

Put a RAMDISK kernel and SYS_UBOOT into hp300 installcd to make it bootable.

This should finally close PR/54455.

Fix tools build errors on Cygwin.

Appease warnings on building tools/installboot on Cygwin.
 1.3 28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.2 17-Nov-2001  gmcgarry branches: 1.2.2; 1.2.4; 1.2.122; 1.2.124; 1.2.126;
Merge some fixes from clock.c, revision 1.23.
 1.1 17-Nov-2001  gmcgarry Device attachment for the real-time clock.
 1.2.126.1 16-May-2008  yamt sync with head.
 1.2.124.1 18-May-2008  yamt sync with head.
 1.2.122.1 02-Jun-2008  mjf Sync with HEAD.
 1.2.4.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.2.4.1 17-Nov-2001  thorpej file rtcreg.h was added on branch kqueue on 2002-01-10 19:42:59 +0000
 1.2.2.2 08-Jan-2002  nathanw Catch up to -current.
 1.2.2.1 17-Nov-2001  nathanw file rtcreg.h was added on branch nathanw_sa on 2002-01-08 00:24:36 +0000
 1.38 01-Aug-2003  tsutsui Switch hp300 to MI SCSI with MI mb89352 SPC SCSI driver (at last),
and remove old hp300 MD oscsi support derived from 4.4BSD-Lite2.
 1.37 25-May-2003  tsutsui branches: 1.37.2;
Fix part number in comment.

hp300/dev/scsireg.h says it's HP 98265A SCSI, and
I can't find any description about 98658.
(typo of 98568A backplane expander?)
 1.36 24-May-2003  gmcgarry Clean-up the DIO bus. Includes two main changes:

1) Pass address and ipl locators at attachment;
2) Remove hack which made the internal HP-IB controller
look like a DIO device.

The hack to allow the nhpib driver to support internal and DIO
controllers appears to be a leftover from 4.3BD where it was not
possible to have a driver attach to different busses. NetBSD has
supported bus-dependent attachments for a long time.
 1.35 03-May-2003  wiz DMA, not dma nor Dma.
 1.34 01-Jan-2003  thorpej Use aprint_normal() for cfprint routines.
 1.33 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.32 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.31 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.30 15-Mar-2002  gmcgarry Add RCSIDs.
 1.29 08-Dec-2001  gmcgarry bcopy -> memcpy
bzero -> memset
bcmp -> memcmp
 1.28 19-May-2000  thorpej branches: 1.28.8; 1.28.12;
A foolish consistency; most parts of the kernel use bp->b_data, so
change these from bp->b_un.b_addr to bp->b_data, as well. This also
allows us more flexibility to experiment with other data buffer types
hung off of struct buf.
 1.27 21-Jan-2000  thorpej Update for sys/buf.h/disksort_*() changes.
 1.26 31-Oct-1999  he Print drive vendor_id/product_id/revision strings also for SCSI-3 devices.
before: sd0 at oscsi0 targ 0 lun 0: type 0x0, qual 0x0, ver 3
after: sd0 at oscsi0 targ 0 lun 0: <IBM, DGHS09U, 0350> (SCSI-3)
 1.25 06-Feb-1999  thorpej branches: 1.25.2; 1.25.8; 1.25.10; 1.25.12;
Workaround for disks that respond slowly to selection, provided by
David Jones in PR #3769.

Every day, I hate this driver more and more.
 1.24 12-Jan-1998  thorpej Update for changes to config.
 1.23 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.22 17-Jul-1997  jtk branches: 1.22.2;
use locator defines in "locators.h" to index cf_loc[]

still to be done and/or decided not to be done: replace all *UNK uses in
hpib code with the native names from locators.h
 1.21 05-May-1997  thorpej Use dio_intr_establish().
 1.20 27-Apr-1997  thorpej These files depend on things in <machine/hp300spu.h>
 1.19 14-Apr-1997  thorpej Update for interrupt function and header name changes.
 1.18 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.17 31-Mar-1997  thorpej Fix a bogus argument to dmafree(), from Scott Reynolds.
 1.16 10-Mar-1997  thorpej Print the interrupt level in scsiattach().
 1.15 30-Jan-1997  thorpej branches: 1.15.4;
- Convert these drivers to new-style autoconfiguration. Old-style
config is no longer supported.
- Use a much more obvious SCSI job queueing scheme.
 1.14 26-Jan-1997  hpeyerl fix an *old* booboo where the dma queue wasn't being set in unexpected
case. Found, fixed, and dictated by jason. (thorpe)
 1.13 09-Dec-1996  thorpej branches: 1.13.2;
isrlink() now returns a cookie. We're not interested in the cookie, so
cast to (void).

Call dmacomputeipl() after we've hooked up our interrupt handler.
 1.12 13-Oct-1996  christos backout previous kprintf changes
 1.11 11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.10 18-May-1996  thorpej Back most (not all) of the previous delay-related changes now that
delay is calibrated properly.
 1.9 17-May-1996  thorpej Adjust for new DELAY() ... s/DELAY(1)/DELAY(5)/ and lengthen some
timeouts.
 1.8 14-Feb-1996  thorpej All interrupt routines (except the HIL; don't ask) now take a pointer
to a softc, rather than a unit number. Add a "dq_softc" member
to struct devqueue; this is a temporary measure until the
dma/controller/device callback spaghetti is untangled.

YAY! No more need for dcafastservice!

HIL: squish instances of "(void) splhil()" and "(void) spl0();".
 1.7 02-Dec-1995  thorpej Use a "match/attach" rather than "init" scheme for probing devices.
This is a step towards getting the drivers ready for new config.
 1.6 16-Oct-1995  thorpej Deal with vendor, product, and revision strings properly.
 1.5 09-Oct-1995  thorpej branches: 1.5.2;
Remove unneeded RCS ids.
 1.4 26-Oct-1994  cgd new RCS ID format.
 1.3 23-May-1994  mycroft Merge with 4.4-Lite.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.5.2.1 16-Oct-1995  thorpej Update from trunk; deal with ID strings correctly.
 1.13.2.1 30-Jan-1997  thorpej update from trunk
 1.15.4.1 11-Mar-1997  is merge in changes from Trunk.
 1.22.2.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.25.12.1 27-Dec-1999  wrstuden Pull up to last week's -current.
 1.25.10.1 15-Nov-1999  fvdl Sync with -current
 1.25.8.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.25.2.1 31-Oct-1999  he Pull up revision 1.26 (requested by he):
Print vendor/product/rev also for SCSI-3 devices.
 1.28.12.4 03-Jan-2003  thorpej Sync with HEAD.
 1.28.12.3 18-Oct-2002  nathanw Catch up to -current.
 1.28.12.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.28.12.1 08-Jan-2002  nathanw Catch up to -current.
 1.28.8.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.28.8.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.28.8.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.37.2.1 03-Aug-2004  skrll Sync with HEAD
 1.6 01-Aug-2003  tsutsui Move dev/scsireg.h into stand/common since it is no longer used by kernel.
 1.5 14-May-2002  matt branches: 1.5.10;
Eliminate more commons or redundant declarations.
 1.4 26-Oct-1994  cgd branches: 1.4.46; 1.4.50;
new RCS ID format.
 1.3 23-May-1994  mycroft Merge with 4.4-Lite.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.4.50.1 20-Jun-2002  nathanw Catch up to -current.
 1.4.46.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.5.10.1 03-Aug-2004  skrll Sync with HEAD
 1.9 01-Aug-2003  tsutsui Switch hp300 to MI SCSI with MI mb89352 SPC SCSI driver (at last),
and remove old hp300 MD oscsi support derived from 4.4BSD-Lite2.
 1.8 04-Oct-1997  thorpej branches: 1.8.50;
Copyright assigned to The NetBSD Foundation.
 1.7 31-Mar-1997  scottr branches: 1.7.4;
Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.6 30-Jan-1997  thorpej - Convert these drivers to new-style autoconfiguration. Old-style
config is no longer supported.
- Use a much more obvious SCSI job queueing scheme.
 1.5 02-Dec-1995  thorpej Use a "match/attach" rather than "init" scheme for probing devices.
This is a step towards getting the drivers ready for new config.
 1.4 26-Oct-1994  cgd new RCS ID format.
 1.3 23-May-1994  mycroft Merge with 4.4-Lite.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.7.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.8.50.1 03-Aug-2004  skrll Sync with HEAD
 1.65 01-Aug-2003  tsutsui Switch hp300 to MI SCSI with MI mb89352 SPC SCSI driver (at last),
and remove old hp300 MD oscsi support derived from 4.4BSD-Lite2.
 1.64 29-Jun-2003  fvdl branches: 1.64.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.63 29-Jun-2003  thorpej Adapt to ktrace/lwp changes.
 1.62 28-Jun-2003  darrenr Pass lwp pointers throughtout the kernel, as required, so that the lwpid can
be inserted into ktrace records. The general change has been to replace
"struct proc *" with "struct lwp *" in various function prototypes, pass
the lwp through and use l_proc to get the process pointer when needed.

Bump the kernel rev up to 1.6V
 1.61 03-May-2003  wiz DMA, not dma nor Dma.
 1.60 02-May-2003  dsl Change return type of readdisklabel() to const char *
I hope I've found all the correct places!
 1.59 25-Feb-2003  thorpej Add a new BUF_INIT() macro which initializes b_dep and b_interlock, and
use it. This fixes a few places where either b_dep or b_interlock were
not properly initialized.
 1.58 17-Jan-2003  thorpej Merge the nathanw_sa branch.
 1.57 01-Nov-2002  mrg implement separate read/write disk statistics:
- disk_unbusy() gets a new parameter to tell the IO direction.
- struct disk_sysctl gets 4 new members for read/write bytes/transfers.
when processing hw.diskstats, add the read&write bytes/transfers for
the old combined stats to attempt to keep backwards compatibility.

unfortunately, due to multiple bugs, this will cause new kernels and old
vmstat/iostat/systat programs to fail. however, the next time this is
change it will not fail again.

this is just the kernel portion.
 1.56 23-Oct-2002  jdolecek merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.55 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.54 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.53 10-Sep-2002  gmcgarry Garbage-collect unused sdreset(). Remove commented-out prototypes.
 1.52 06-Sep-2002  gehenna Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.51 26-Jul-2002  hannken Convert to new device buffer queue interface.

Approved by: Jason R. Thorpe <thorpej@netbsd.org>
 1.50 15-Mar-2002  gmcgarry branches: 1.50.4;
malloc cleanups:
- malloc+memset -> malloc with M_ZERO
- malloc -> MALLOC for fixed-sized structures
Add RCSIDs while here
 1.49 05-Mar-2002  simonb Sort function declarations.
Fix some KNF whitespace nits.
 1.48 23-Feb-2002  gmcgarry Implement DIOCGDEFLABEL ioctl.
 1.47 08-Dec-2001  gmcgarry bcopy -> memcpy
bzero -> memset
bcmp -> memcmp
 1.46 19-Jun-2001  wiz branches: 1.46.2; 1.46.4; 1.46.8;
`existent', not `existant'
 1.45 29-May-2001  chs initialize the b_dep field in malloc()'d buffers. fixes PR 13065.
 1.44 10-Oct-2000  he branches: 1.44.2;
Add randomness sampling from hil, sd and rd devices.
 1.43 17-Jul-2000  scottr Repair format type mismatch in DEBUG code. From Steve Peurifoy via PR #10603.
 1.42 27-May-2000  thorpej branches: 1.42.4;
sleep() -> tsleep()
 1.41 19-May-2000  thorpej A foolish consistency; most parts of the kernel use bp->b_data, so
change these from bp->b_un.b_addr to bp->b_data, as well. This also
allows us more flexibility to experiment with other data buffer types
hung off of struct buf.
 1.40 10-Feb-2000  thorpej Fix a couple of printf format botches. port-hp300/9388, Steve Peurifoy.
 1.39 07-Feb-2000  thorpej Fix a bug in disksort_*() which caused non-optimal ordering when multiple
active partitions were on a single spindle. Add a b_rawblkno member to
struct buf which contains the non-partition-relative block number to sort
by.
 1.38 31-Jan-2000  kleink Make these build again after buf.h/disksort changes.
 1.37 21-Jan-2000  thorpej Update for sys/buf.h/disksort_*() changes.
 1.36 12-Jan-1998  thorpej branches: 1.36.8; 1.36.14; 1.36.20;
Update for changes to config.
 1.35 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.34 10-Jul-1997  kleink branches: 1.34.2;
Remove misplaced/unnecessary VM #include cruft; from Thorsten Frueauf
<frueauf@ira.uka.de> in PR port-hp300/3851.
 1.33 24-Jun-1997  thorpej foosize()'s return value is in DEV_BSIZE units; adjust the size obtained
from the disklabel accordingly.
 1.32 05-May-1997  thorpej Update for USELEDS changes.
 1.31 02-Apr-1997  scottr Fix printf() and other warnings when compiled with DEBUG defined.
 1.30 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.29 30-Jan-1997  thorpej Convert to new-style autoconfiguration; old-style config is no longer
supported.
 1.28 07-Jan-1997  thorpej Bring some sanity into my frazzled existence:
- Always ensure that RAW_PART ("c") can be opened.
- Disallow unused or non-existent partitions from being opened.
- Don't do bounds checking or partition translation on RAW_PART.
This is consistent with other disk drivers in the NetBSD source tree,
and fixes a condition where the user could not fix a corrupted disklabel
due to a bogus offset for partition "c".
 1.27 14-Oct-1996  thorpej Set the device class on non-dull devices. This is a transitional thing.
 1.26 13-Oct-1996  christos backout previous kprintf changes
 1.25 11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.24 06-Oct-1996  thorpej Fix kernel crash dumps. Still uses the old format for now.
 1.23 06-Jun-1996  thorpej Remove the old-style disk instrumentation support. Nothing uses it
anymore.
 1.22 14-Feb-1996  thorpej branches: 1.22.4;
All interrupt routines (except the HIL; don't ask) now take a pointer
to a softc, rather than a unit number. Add a "dq_softc" member
to struct devqueue; this is a temporary measure until the
dma/controller/device callback spaghetti is untangled.

YAY! No more need for dcafastservice!

HIL: squish instances of "(void) splhil()" and "(void) spl0();".
 1.21 07-Jan-1996  thorpej New generic disk framework. Highlights:

- New metrics handling. Metrics are now kept in the new
`struct disk'. Busy time is now stored as a timeval, and
transfer count in bytes.

- Storage for disklabels is now dynamically allocated, so that
the size of the disk structure is not machine-dependent.

- Several new functions for attaching and detaching disks, and
handling metrics calculation.

Old-style instrumentation is still supported in drivers that did it before.
However, old-style instrumentation is being deprecated, and will go away
once the userland utilities are updated for the new framework.

For usage and architectural details, see the forthcoming disk(9) manual
page.
 1.20 09-Dec-1995  thorpej Pass the correct number of arguments to readdisklabel().
 1.19 02-Dec-1995  thorpej Use a "match/attach" rather than "init" scheme for probing devices.
This is a step towards getting the drivers ready for new config.
 1.18 16-Oct-1995  thorpej Deal with vendor, product, and revision strings properly.
 1.17 15-Oct-1995  thorpej Be a tad bit more informative when the drive is attached. Print geometry
info when appropriate, because, darn it, it's useful.
 1.16 09-Oct-1995  thorpej branches: 1.16.2;
Remove unneeded RCS ids.
 1.15 02-Jun-1995  mycroft Arrest the KNF policeman.
 1.14 24-May-1995  hpeyerl KNF police.
 1.13 10-Apr-1995  mycroft kernel_pmap --> pmap_kernel()
 1.12 18-Jan-1995  mycroft Do not allow opening a device which is not `alive'.
 1.11 26-Oct-1994  cgd new RCS ID format.
 1.10 27-May-1994  mycroft Bug fixes from Mike Hibler.
 1.9 23-May-1994  mycroft Merge with 4.4-Lite.
 1.8 11-May-1994  mycroft Get rid of private *read() and *write() functions.
 1.7 22-Feb-1994  hpeyerl SCSI disklabel support complete with Duct Tape (tm).
 1.6 10-Feb-1994  mycroft Add arg to ioctl functions. Clean up #includes.
 1.5 25-Jan-1994  mycroft Someone should fix his damned tabs after pasting code.
 1.4 25-Jan-1994  brezak Rudimentary disklabel support.
 1.3 07-Aug-1993  mycroft Modified to use disklabels. Needs more work, but this at least boots.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.16.2.2 16-Oct-1995  thorpej Update from trunk; deal with ID strings correctly.
 1.16.2.1 15-Oct-1995  thorpej Update from trunk; be more informative at drive attach time.
 1.22.4.1 06-Jun-1996  thorpej Update from trunk:

Remove old-style disk instrumentation support. Nothing uses it
anymore.
 1.34.2.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.36.20.1 21-Dec-1999  wrstuden Initial commit of recent changes to make DEV_BSIZE go away.

Runs on i386, needs work on other arch's. Main kernel routines should be
fine, but a number of the stand programs need help.

cd, fd, ccd, wd, and sd have been updated. sd has been tested with non-512
byte block devices. vnd, raidframe, and lfs need work.

Non 2**n block support is automatic for LKM's and conditional for kernels
on "options NON_PO2_BLOCKS".
 1.36.14.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.36.8.1 12-Oct-2000  he Pull up revision 1.44 (requested by he):
Add randomness sampling for hil, sd and rd on the hp300 port.
 1.42.4.3 07-Jun-2001  he Pull up revision 1.45 (requested by chs):
Initialize the b_dep field after malloc(). Fixes PR#13065.
 1.42.4.2 18-Oct-2000  tv Pullup 1.44 [he]:
Add randomness sampling from hil, sd and rd devices.
 1.42.4.1 14-Sep-2000  scottr Pull up rev 1.43 from scottr:
Repair format type mismatch in DEBUG code. From Steve Peurifoy
via PR #10603.
 1.44.2.1 21-Jun-2001  nathanw Catch up to -current.
 1.46.8.11 11-Nov-2002  nathanw Catch up to -current
 1.46.8.10 18-Oct-2002  nathanw Catch up to -current.
 1.46.8.9 17-Sep-2002  nathanw Catch up to -current.
 1.46.8.8 01-Aug-2002  nathanw Catch up to -current.
 1.46.8.7 12-Jul-2002  nathanw No longer need to pull in lwp.h; proc.h pulls it in for us.
 1.46.8.6 24-Jun-2002  nathanw Curproc->curlwp renaming.

Change uses of "curproc->l_proc" back to "curproc", which is more like the
original use. Bare uses of "curproc" are now "curlwp".

"curproc" is now #defined in proc.h as ((curlwp) ? (curlwp)->l_proc) : NULL)
so that it is always safe to reference curproc (*de*referencing curproc
is another story, but that's always been true).
 1.46.8.5 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.46.8.4 28-Feb-2002  nathanw Catch up to -current.
 1.46.8.3 08-Jan-2002  nathanw Catch up to -current.
 1.46.8.2 18-Nov-2001  scw MD Scheduler Activation bits for HP300.
Compile-tested only.
Note: COMPAT_HPUX is not yet fully lwp'ified.
 1.46.8.1 19-Jun-2001  scw file sd.c was added on branch nathanw_sa on 2001-11-18 18:09:32 +0000
 1.46.4.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.46.2.5 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.46.2.4 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.46.2.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.46.2.2 16-Mar-2002  jdolecek Catch up with -current.
 1.46.2.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.50.4.2 30-Aug-2002  gehenna catch up with -current.
 1.50.4.1 17-May-2002  gehenna Add device switch.
 1.64.2.2 03-Aug-2004  skrll Sync with HEAD
 1.64.2.1 02-Jul-2003  darrenr Apply the aborted ktrace-lwp changes to a specific branch. This is just for
others to review, I'm concerned that patch fuziness may have resulted in some
errant code being generated but I'll look at that later by comparing the diff
from the base to the branch with the file I attempt to apply to it. This will,
at the very least, put the changes in a better context for others to review
them and attempt to tinker with removing passing of 'struct lwp' through
the kernel.
 1.10 01-Aug-2003  tsutsui Switch hp300 to MI SCSI with MI mb89352 SPC SCSI driver (at last),
and remove old hp300 MD oscsi support derived from 4.4BSD-Lite2.
 1.9 30-May-2002  thorpej branches: 1.9.6;
Account for changes to struct partition.
 1.8 15-Mar-2002  gmcgarry branches: 1.8.4;
Add RCSIDs.
 1.7 12-Jan-1998  thorpej branches: 1.7.28; 1.7.32;
Update for changes to config.
 1.6 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.5 30-Jan-1997  thorpej Convert to new-style autoconfiguration; old-style config is no longer
supported.
 1.4 07-Jan-1996  thorpej New generic disk framework. Highlights:

- New metrics handling. Metrics are now kept in the new
`struct disk'. Busy time is now stored as a timeval, and
transfer count in bytes.

- Storage for disklabels is now dynamically allocated, so that
the size of the disk structure is not machine-dependent.

- Several new functions for attaching and detaching disks, and
handling metrics calculation.

Old-style instrumentation is still supported in drivers that did it before.
However, old-style instrumentation is being deprecated, and will go away
once the userland utilities are updated for the new framework.

For usage and architectural details, see the forthcoming disk(9) manual
page.
 1.3 26-Oct-1994  cgd new RCS ID format.
 1.2 16-Jul-1994  cgd get device.h from the right place
 1.1 23-May-1994  mycroft branches: 1.1.2;
Merge with 4.4-Lite.
 1.1.2.1 16-Jul-1994  cgd update from trunk
 1.7.32.2 20-Jun-2002  nathanw Catch up to -current.
 1.7.32.1 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.7.28.1 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.8.4.1 14-Jul-2002  gehenna catch up with -current.
 1.9.6.1 03-Aug-2004  skrll Sync with HEAD
 1.11 01-Aug-2003  tsutsui Switch hp300 to MI SCSI with MI mb89352 SPC SCSI driver (at last),
and remove old hp300 MD oscsi support derived from 4.4BSD-Lite2.
 1.10 26-Jul-2002  hannken branches: 1.10.6;
Convert to new device buffer queue interface.

Approved by: Jason R. Thorpe <thorpej@netbsd.org>
 1.9 10-Oct-2000  he branches: 1.9.2; 1.9.4; 1.9.8; 1.9.16;
Add randomness sampling from hil, sd and rd devices.
 1.8 21-Jan-2000  thorpej branches: 1.8.4;
Update for sys/buf.h/disksort_*() changes.
 1.7 31-Mar-1997  scottr branches: 1.7.16; 1.7.22;
Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.6 30-Jan-1997  thorpej Convert to new-style autoconfiguration; old-style config is no longer
supported.
 1.5 06-Jun-1996  thorpej Remove the old-style disk instrumentation support. Nothing uses it
anymore.
 1.4 07-Jan-1996  thorpej branches: 1.4.4;
New generic disk framework. Highlights:

- New metrics handling. Metrics are now kept in the new
`struct disk'. Busy time is now stored as a timeval, and
transfer count in bytes.

- Storage for disklabels is now dynamically allocated, so that
the size of the disk structure is not machine-dependent.

- Several new functions for attaching and detaching disks, and
handling metrics calculation.

Old-style instrumentation is still supported in drivers that did it before.
However, old-style instrumentation is being deprecated, and will go away
once the userland utilities are updated for the new framework.

For usage and architectural details, see the forthcoming disk(9) manual
page.
 1.3 15-Oct-1995  thorpej Be a tad bit more informative when the drive is attached. Print geometry
info when appropriate, because, darn it, it's useful.
 1.2 26-Oct-1994  cgd branches: 1.2.2;
new RCS ID format.
 1.1 23-May-1994  mycroft Merge with 4.4-Lite.
 1.2.2.1 15-Oct-1995  thorpej Update from trunk; be more informative at drive attach time.
 1.4.4.1 06-Jun-1996  thorpej Update from trunk:

Remove old-style disk instrumentation support. Nothing uses it
anymore.
 1.7.22.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.7.16.1 12-Oct-2000  he Pull up revision 1.9 (requested by he):
Add randomness sampling for hil, sd and rd on the hp300 port.
 1.8.4.1 18-Oct-2000  tv Pullup 1.9 [he]:
Add randomness sampling from hil, sd and rd devices.
 1.9.16.1 30-Aug-2002  gehenna catch up with -current.
 1.9.8.1 01-Aug-2002  nathanw Catch up to -current.
 1.9.4.1 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.9.2.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.10.6.1 03-Aug-2004  skrll Sync with HEAD
 1.4 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.3 24-Apr-2021  thorpej branches: 1.3.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.2 18-Feb-2011  tsutsui branches: 1.2.2; 1.2.6; 1.2.74;
Make local functions static.
 1.1 12-Feb-2011  tsutsui branches: 1.1.2;
Pull basic SGC bus attachment from OpenBSD to test devices.
Disabled by default since there is no SGC drivers yet.
 1.1.2.3 05-Mar-2011  bouyer Sync with HEAD
 1.1.2.2 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 12-Feb-2011  bouyer file sgc.c was added on branch bouyer-quota2 on 2011-02-17 11:59:39 +0000
 1.2.74.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.2.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.1 18-Feb-2011  jruoho file sgc.c was added on branch jruoho-x86intr on 2011-06-06 09:05:36 +0000
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 18-Feb-2011  rmind file sgc.c was added on branch rmind-uvmplock on 2011-03-05 20:50:22 +0000
 1.3.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.1 12-Feb-2011  tsutsui branches: 1.1.2; 1.1.4; 1.1.8;
Pull basic SGC bus attachment from OpenBSD to test devices.
Disabled by default since there is no SGC drivers yet.
 1.1.8.2 06-Jun-2011  jruoho Sync with HEAD.
 1.1.8.1 12-Feb-2011  jruoho file sgcreg.h was added on branch jruoho-x86intr on 2011-06-06 09:05:36 +0000
 1.1.4.2 05-Mar-2011  rmind sync with head
 1.1.4.1 12-Feb-2011  rmind file sgcreg.h was added on branch rmind-uvmplock on 2011-03-05 20:50:22 +0000
 1.1.2.2 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 12-Feb-2011  bouyer file sgcreg.h was added on branch bouyer-quota2 on 2011-02-17 11:59:39 +0000
 1.1 12-Feb-2011  tsutsui branches: 1.1.2; 1.1.4; 1.1.8;
Pull basic SGC bus attachment from OpenBSD to test devices.
Disabled by default since there is no SGC drivers yet.
 1.1.8.2 06-Jun-2011  jruoho Sync with HEAD.
 1.1.8.1 12-Feb-2011  jruoho file sgcvar.h was added on branch jruoho-x86intr on 2011-06-06 09:05:36 +0000
 1.1.4.2 05-Mar-2011  rmind sync with head
 1.1.4.1 12-Feb-2011  rmind file sgcvar.h was added on branch rmind-uvmplock on 2011-03-05 20:50:22 +0000
 1.1.2.2 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 12-Feb-2011  bouyer file sgcvar.h was added on branch bouyer-quota2 on 2011-02-17 11:59:39 +0000
 1.9 16-Jan-2024  thorpej Several years ago, the interrupt priority levels for devices were "flattened"
such that IPL_BIO, IPL_NET, and IPL_TTY (logical interrupt priority levels)
became aliases of IPL_VM (the logical interrupt priority level above which
memory allocation is not allowed). Unfortuantely, this meant that any
use of these logical interrupt priority levels to differentiate between
different interrupt service routines at the same auto-vectored interrupt
level was pointless... "when everyone is special, no one is".

Before this flattening happened, these distinct logical interrupt priority
levels levels were dynamically mapped to physical auto-vectored interrupt
levels based on which types of devices registered themselves at which auto-
vectored level. Now, splbio(), splnet(), etc. are all equivalent to splvm(),
which effectively blocks all device interrupts.

Switch to using the ISRPRI_* values provided by the common m68k interrupt
dispatch code, which allows interrupt handlers for devices that are more
latency-sensitive to be sorted earlier in the list of handlers at a given
auto-vectored interrupt level, as was originally intended.
 1.8 12-Feb-2011  tsutsui Handle LED_DISK per DMA xfer.
 1.7 14-May-2008  tsutsui branches: 1.7.20; 1.7.26; 1.7.28;
Normalize my licenses.
 1.6 31-Mar-2008  tsutsui branches: 1.6.2; 1.6.4; 1.6.6;
Split softc/device_t for spc(4) and misc related cleanup.
 1.5 11-Dec-2005  christos branches: 1.5.74;
merge ktrace-lwp.
 1.4 02-Jan-2005  tsutsui u_intNN_t -> uintNN_t
 1.3 28-Aug-2004  thorpej Use ANSI function decls, static, and const.
 1.2 17-Nov-2003  tsutsui branches: 1.2.4;
TAB/space cleanup.
 1.1 01-Aug-2003  tsutsui Switch hp300 to MI SCSI with MI mb89352 SPC SCSI driver (at last),
and remove old hp300 MD oscsi support derived from 4.4BSD-Lite2.
 1.2.4.6 17-Jan-2005  skrll Sync with HEAD.
 1.2.4.5 21-Sep-2004  skrll Fix the sync with head I botched.
 1.2.4.4 18-Sep-2004  skrll Sync with HEAD.
 1.2.4.3 03-Sep-2004  skrll Sync with HEAD
 1.2.4.2 03-Aug-2004  skrll Sync with HEAD
 1.2.4.1 17-Nov-2003  skrll file spc.c was added on branch ktrace-lwp on 2004-08-03 10:34:24 +0000
 1.5.74.2 02-Jun-2008  mjf Sync with HEAD.
 1.5.74.1 03-Apr-2008  mjf Sync with HEAD.
 1.6.6.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.6.4.1 16-May-2008  yamt sync with head.
 1.6.2.1 18-May-2008  yamt sync with head.
 1.7.28.1 17-Feb-2011  bouyer Sync with HEAD
 1.7.26.1 06-Jun-2011  jruoho Sync with HEAD.
 1.7.20.1 05-Mar-2011  rmind sync with head
 1.40 01-Aug-2003  tsutsui Switch hp300 to MI SCSI with MI mb89352 SPC SCSI driver (at last),
and remove old hp300 MD oscsi support derived from 4.4BSD-Lite2.
 1.39 29-Jun-2003  fvdl branches: 1.39.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.38 29-Jun-2003  thorpej Adapt to ktrace/lwp changes.
 1.37 03-May-2003  wiz DMA, not dma nor Dma.
 1.36 23-Oct-2002  jdolecek merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.35 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.34 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.33 06-Sep-2002  gehenna Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.32 26-Jul-2002  hannken Convert to new device buffer queue interface.

Approved by: Jason R. Thorpe <thorpej@netbsd.org>
 1.31 15-Mar-2002  gmcgarry branches: 1.31.4;
Add RCSIDs.
 1.30 08-Dec-2001  gmcgarry bcopy -> memcpy
bzero -> memset
bcmp -> memcmp
 1.29 04-Dec-2001  wiz Replace some misuses of "then" with "than".
 1.28 27-May-2000  thorpej branches: 1.28.6; 1.28.8; 1.28.12;
sleep() -> tsleep()
 1.27 19-May-2000  thorpej A foolish consistency; most parts of the kernel use bp->b_data, so
change these from bp->b_un.b_addr to bp->b_data, as well. This also
allows us more flexibility to experiment with other data buffer types
hung off of struct buf.
 1.26 21-Jan-2000  thorpej Update for sys/buf.h/disksort_*() changes.
 1.25 17-May-1998  hpeyerl branches: 1.25.14;
Add the HP35470A DAT drive.
 1.24 12-Jan-1998  thorpej Update for changes to config.
 1.23 04-Oct-1997  thorpej Copyright assigned to The NetBSD Foundation.
 1.22 02-Apr-1997  scottr branches: 1.22.4;
Fix printf() and other warnings when compiled with DEBUG defined.
 1.21 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.20 22-Mar-1997  mycroft Fix editing error in new config changes.
 1.19 30-Jan-1997  thorpej Convert to new-style autoconfiguration; old-style config is no longer
supported.
 1.18 14-Oct-1996  thorpej Set the device class on non-dull devices. This is a transitional thing.
 1.17 13-Oct-1996  christos backout previous kprintf changes
 1.16 11-Oct-1996  christos printf -> kprintf, sprintf -> ksprintf
 1.15 10-Jun-1996  thorpej Add the "Python 28849" to the list of `supported' tape drives as a PYTHON
type.
 1.14 14-Feb-1996  thorpej branches: 1.14.4;
All interrupt routines (except the HIL; don't ask) now take a pointer
to a softc, rather than a unit number. Add a "dq_softc" member
to struct devqueue; this is a temporary measure until the
dma/controller/device callback spaghetti is untangled.

YAY! No more need for dcafastservice!

HIL: squish instances of "(void) splhil()" and "(void) spl0();".
 1.13 02-Dec-1995  thorpej Use a "match/attach" rather than "init" scheme for probing devices.
This is a step towards getting the drivers ready for new config.
 1.12 16-Oct-1995  thorpej Deal with vendor, product, and revision strings properly.
 1.11 04-Aug-1995  thorpej branches: 1.11.2;
Acknowledge the Archive Viper 60 tape. Fixes pr-863.
 1.10 04-Aug-1995  thorpej Update for conf.h changes.
 1.9 26-Oct-1994  cgd new RCS ID format.
 1.8 23-May-1994  mycroft Merge with 4.4-Lite.
 1.7 11-May-1994  mycroft Get rid of private *read() and *write() functions.
 1.6 10-Feb-1994  mycroft Add arg to ioctl functions. Clean up #includes.
 1.5 06-Feb-1994  mycroft Use b_actb, not b_actl.
 1.4 11-Jan-1994  mycroft *strategy functions return void.
 1.3 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.11.2.1 16-Oct-1995  thorpej Update from trunk; deal with ID strings correctly.
 1.14.4.1 10-Jun-1996  thorpej Update from trunk:

Add the "Python 28849" to the list of `supported' tape drives as a PYTHON
type.
 1.22.4.1 14-Oct-1997  thorpej Update marc-pcmcia branch from trunk.
 1.25.14.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.28.12.6 11-Nov-2002  nathanw Catch up to -current
 1.28.12.5 18-Oct-2002  nathanw Catch up to -current.
 1.28.12.4 17-Sep-2002  nathanw Catch up to -current.
 1.28.12.3 01-Aug-2002  nathanw Catch up to -current.
 1.28.12.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.28.12.1 08-Jan-2002  nathanw Catch up to -current.
 1.28.8.4 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.28.8.3 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.28.8.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.28.8.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.28.6.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.31.4.2 30-Aug-2002  gehenna catch up with -current.
 1.31.4.1 17-May-2002  gehenna Add device switch.
 1.39.2.1 03-Aug-2004  skrll Sync with HEAD
 1.4 28-May-2025  tsutsui branches: 1.4.4;
Use explicit STI_CODEBASE_M68K macro defined in MI stireg.h.

No binary change.
 1.3 26-May-2025  tsutsui Also use sti(4) ROM functions for 362/382 framebuffers on bootloader.

Mostly taken on OpenBSD/hp300.
Tested on 382 with VGA-res EVRX, and no visible regression on
425e (sti EVRX), 425t (sti CRX), and 380 (topcat).
 1.2 23-May-2025  tsutsui Remove a redundant cast.
 1.1 01-May-2025  tsutsui Add sti(4) support for 9000/362 and 9000/382 on-board framebuffers.

Mostly pulled from OpenBSD/hp300.

This supersedes old and dumb gendiofb. Currently there is no mmap
or cmap (palette) support, but I'll investigate how Bt474 RAMDAC
should be handled.

Tested on 382 with 640x480 and 1024x768 variants, and 362 with 640x480.
No visible regression on 425e (EVRX) and 425t (CRX).
 1.4.4.2 02-Aug-2025  perseant Sync with HEAD
 1.4.4.1 28-May-2025  perseant file sti_dio.c was added on branch perseant-exfatfs on 2025-08-02 05:55:38 +0000
 1.2 26-May-2025  tsutsui branches: 1.2.4;
Also use sti(4) ROM functions for 362/382 framebuffers on bootloader.

Mostly taken on OpenBSD/hp300.
Tested on 382 with VGA-res EVRX, and no visible regression on
425e (sti EVRX), 425t (sti CRX), and 380 (topcat).
 1.1 01-May-2025  tsutsui Add sti(4) support for 9000/362 and 9000/382 on-board framebuffers.

Mostly pulled from OpenBSD/hp300.

This supersedes old and dumb gendiofb. Currently there is no mmap
or cmap (palette) support, but I'll investigate how Bt474 RAMDAC
should be handled.

Tested on 382 with 640x480 and 1024x768 variants, and 362 with 640x480.
No visible regression on 425e (EVRX) and 425t (CRX).
 1.2.4.2 02-Aug-2025  perseant Sync with HEAD
 1.2.4.1 26-May-2025  perseant file sti_diovar.h was added on branch perseant-exfatfs on 2025-08-02 05:55:38 +0000
 1.7 31-May-2025  tsutsui branches: 1.7.4;
Merge common code block.
 1.6 28-May-2025  tsutsui Use explicit STI_CODEBASE_M68K macro defined in MI stireg.h.

No binary change.
 1.5 27-May-2025  tsutsui Use C99 designated initializers for wscons structures.
 1.4 25-May-2025  tsutsui Add mmap(2) support to sti(4) for 362 and 382 framebuffers.

It turns out that on-board framebuffers on both 425e and 382/362 are
treated as the same "EVRX" variant on HP-UX even though they have
different RAMDAC chips (Bt458 on 425e and Bt474 on 362/382).

Now X.org server and other framebuffer applications like mlterm-wscons
work on these machines.
 1.3 19-May-2025  tsutsui Remove an unnecessary #include.
 1.2 17-May-2025  tsutsui Fix RCSId.
 1.1 01-May-2025  tsutsui Add sti(4) support for 9000/362 and 9000/382 on-board framebuffers.

Mostly pulled from OpenBSD/hp300.

This supersedes old and dumb gendiofb. Currently there is no mmap
or cmap (palette) support, but I'll investigate how Bt474 RAMDAC
should be handled.

Tested on 382 with 640x480 and 1024x768 variants, and 362 with 640x480.
No visible regression on 425e (EVRX) and 425t (CRX).
 1.7.4.2 02-Aug-2025  perseant Sync with HEAD
 1.7.4.1 31-May-2025  perseant file sti_machdep.c was added on branch perseant-exfatfs on 2025-08-02 05:55:38 +0000
 1.1 01-May-2025  tsutsui branches: 1.1.4;
Add sti(4) support for 9000/362 and 9000/382 on-board framebuffers.

Mostly pulled from OpenBSD/hp300.

This supersedes old and dumb gendiofb. Currently there is no mmap
or cmap (palette) support, but I'll investigate how Bt474 RAMDAC
should be handled.

Tested on 382 with 640x480 and 1024x768 variants, and 362 with 640x480.
No visible regression on 425e (EVRX) and 425t (CRX).
 1.1.4.2 02-Aug-2025  perseant Sync with HEAD
 1.1.4.1 01-May-2025  perseant file sti_machdep.h was added on branch perseant-exfatfs on 2025-08-02 05:55:38 +0000
 1.10 28-May-2025  tsutsui Use explicit STI_CODEBASE_M68K macro defined in MI stireg.h.

No binary change.
 1.9 01-May-2025  tsutsui Add sti(4) support for 9000/362 and 9000/382 on-board framebuffers.

Mostly pulled from OpenBSD/hp300.

This supersedes old and dumb gendiofb. Currently there is no mmap
or cmap (palette) support, but I'll investigate how Bt474 RAMDAC
should be handled.

Tested on 382 with 640x480 and 1024x768 variants, and 362 with 640x480.
No visible regression on 425e (EVRX) and 425t (CRX).
 1.8 15-Jan-2023  tsutsui branches: 1.8.6;
TAB/space cleanup.
 1.7 03-Jul-2022  andvar branches: 1.7.4;
fix various typos in comments, mainly s/pallete/palette/.
 1.6 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.5 24-Apr-2021  thorpej branches: 1.5.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.4 23-Dec-2020  tsutsui branches: 1.4.2;
Add bitmap access ops support for SGC CRX (A1659-66001) framebuffer.

Also modify existing 425e EVRX attachment to use updated MI sti(4) ops
more efficiently.

The Xorg server and mlterm-wscons (that support wsdisplay bitmap) work
fine on SGC hp425t.

No particular comments on port-hp300@ and port-hppa@:
https://mail-index.netbsd.org/port-hp300/2020/12/19/msg000184.html
https://mail-index.netbsd.org/port-hp300/2020/12/20/msg000185.html

Special thanks to Miod Vallat again, for contributing the SGC CRX
framebuffer with the SGC connector and flexible cable for HP9000/425t.

He also contributed DIO-II "Hyperion" monochrome framebuffer and
1 plane grayscale SGC GRX (A1924-66001), and I've confirmed hyper(4)
just works even with Xorg server. I will try GRX as the next project.
 1.3 04-May-2020  tsutsui branches: 1.3.2;
Add bitmap access ops support for EVRX framebuffer on HP9000/425e.

8bpp Xorg wsfb server and mlterm-wscons (formerly mlterm-fb) work.
No particular comment on port-hp300@ and port-hppa@:
https://mail-index.netbsd.org/port-hp300/2020/05/02/msg000170.html

Special thanks to Miod Vallat, for his advice about HP-UX implementation
and binutils patches to disassemble old HP-UX a.out-hp300hpux binaries
(and also contributing his 425e back in 2014).
 1.2 20-Apr-2014  tsutsui branches: 1.2.2; 1.2.34;
Add proper consinit(9) support for sti(4) at sgc framebuffer on hp300.

The cnattach functions for sti(4) and service switch check method
for 425e in com_frodo.c are taken from OpenBSD.
The strategy how to choose the console device in hp300_cninit() is
quite diverged from 4.4BSD and OpenBSD so it's tweaked by me.

Also put several changes in sti_sgc.c to reduce diffs from OpenBSD/hp300.

Tested on 425e and 362 (which still uses gendiofb(4), not sti(4)).

XXX: sti(4) requires uvm_km_alloc(9) and uvm_map_protect(9)
to copy and call ROM functions on the executable memory region, so
it can be called before UVM and related initializations are complete.
Probably it's time to consider about MI "deferred consinit()" API
in init_main.c (or elsewhere) for modern complicated VM system...
 1.1 11-Jan-2013  tsutsui branches: 1.1.2; 1.1.4; 1.1.6; 1.1.14;
Add sti at sgc framebuffer.
Ported from OpenBSD by kiyohara@.
 1.1.14.1 10-Aug-2014  tls Rebase.
 1.1.6.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 11-Jan-2013  tls file sti_sgc.c was added on branch tls-maxphys on 2013-02-25 00:28:41 +0000
 1.1.4.1 18-May-2014  rmind sync with head
 1.1.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.1.2.2 23-Jan-2013  yamt sync with head
 1.1.2.1 11-Jan-2013  yamt file sti_sgc.c was added on branch yamt-pagecache on 2013-01-23 00:05:47 +0000
 1.2.34.2 28-Dec-2020  martin Pull up following revision(s) (requested by tsutsui in ticket #1162):

sys/dev/ic/stivar.h: revision 1.11
sys/dev/ic/sti.c: revision 1.23
sys/dev/ic/sti.c: revision 1.24
sys/dev/ic/sti.c: revision 1.25
sys/arch/hp300/dev/sti_sgc.c: revision 1.4

Pull the latest OpenBSD sti(4) changes for bitmap framebuffer support.
- bitmap and colormap ops based on old HP ngle X11 driver:
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/dev/ic/sti.c#rev1.76
> Work-in-progress support for non-accelerated X11 on *some* sti(4)
> frame buffers; based upon the old HP ngle X11 driver.
> Currently limited to CRX (720/735/750), Timber (710, old 715),
> Artist (712, 715) and EG (B-series), however the
> colormap isn't set up correctly on Timber and EG yet.
>
> Joint work with Artem Falcon, now in good enough shape to be worked further
> in the tree.
- misc other cosmetic changes to reduce diffs
No particular comments on port-hp300@ and port-hppa@:
https://mail-index.netbsd.org/port-hp300/2020/12/19/msg000184.html
https://mail-index.netbsd.org/port-hp300/2020/12/20/msg000185.html

The MD hp300 attachment for SGC CRX (A1659-66001) will be committed
separately.

Add bitmap access ops support for SGC CRX (A1659-66001) framebuffer.
Also modify existing 425e EVRX attachment to use updated MI sti(4) ops
more efficiently.

The Xorg server and mlterm-wscons (that support wsdisplay bitmap) work
fine on SGC hp425t.

No particular comments on port-hp300@ and port-hppa@:
https://mail-index.netbsd.org/port-hp300/2020/12/19/msg000184.html
https://mail-index.netbsd.org/port-hp300/2020/12/20/msg000185.html

Special thanks to Miod Vallat again, for contributing the SGC CRX
framebuffer with the SGC connector and flexible cable for HP9000/425t.

He also contributed DIO-II "Hyperion" monochrome framebuffer and
1 plane grayscale SGC GRX (A1924-66001), and I've confirmed hyper(4)
just works even with Xorg server. I will try GRX as the next project.

Handle WSSCREEN_REVERSE properly. Based on OpenBSD's sti(4).

Also remove WSSCREEN_UNDERLINE from capabilities that is not handled
by sti(4) ROM routines.

Tested on HP9000/425t with CRX.

Ignore WSDISPLAYIO_PUTCMAP in WSDISPLAYIO_MODE_EMUL, i.e. text mode.

The hardware palette settings are handled by the STI ROM in STI_TEXTMODE
and changing cmap could cause mangled text colors at least on CRX on 425t.

Updating CMAP in EMUL mode isn't expected anyway.

Fixes "red or invisible text" after exiting mlterm-wscons on A1659 CRX.
 1.2.34.1 18-May-2020  martin Pull up following revision(s) (requested by tsutsui in ticket #908):

sys/dev/ic/stivar.h: revision 1.10
sys/dev/ic/sti.c: revision 1.21
sys/arch/hp300/dev/sti_sgc.c: revision 1.3

Add bitmap access ops support for EVRX framebuffer on HP9000/425e.

8bpp Xorg wsfb server and mlterm-wscons (formerly mlterm-fb) work.
No particular comment on port-hp300@ and port-hppa@:
https://mail-index.netbsd.org/port-hp300/2020/05/02/msg000170.html

Special thanks to Miod Vallat, for his advice about HP-UX implementation
and binutils patches to disassemble old HP-UX a.out-hp300hpux binaries
(and also contributing his 425e back in 2014).
 1.2.2.2 21-May-2014  bouyer Pull up following revision(s) (requested by tsutsui in ticket #1058):
sys/arch/hp300/conf/files.hp300: revision 1.88
sys/arch/hp300/include/autoconf.h: revision 1.13
sys/dev/ic/sti.c: revision 1.17
sys/arch/hp300/dev/frodo.c: revision 1.31
sys/arch/hp300/conf/GENERIC: revision 1.173
sys/arch/hp300/hp300/machdep.c: revision 1.229
sys/arch/hp300/dev/frodo.c: revision 1.32
sys/arch/hp300/hp300/autoconf.c: revision 1.102
sys/arch/hp300/dev/frodoreg.h: revision 1.5
sys/arch/hp300/stand/common/ite_sti.c: revision 1.1
sys/arch/hp300/stand/common/itevar.h: revision 1.16
sys/arch/hp300/hp300/autoconf.c: revision 1.105
sys/arch/hp300/dev/sti_sgcvar.h: revision 1.1
sys/arch/hp300/stand/common/apci.c: revision 1.12
sys/arch/hp300/stand/common/apci.c: revision 1.13
sys/arch/hp300/dev/dnkbd.c: revision 1.6
sys/arch/hp300/dev/dnkbd.c: revision 1.7
sys/arch/hp300/stand/inst/version: revision 1.12
sys/arch/hp300/dev/com_frodo.c: revision 1.9
sys/arch/hp300/stand/common/ite.c: revision 1.17
sys/arch/hp300/conf/GENERIC: revision 1.181
sys/arch/hp300/dev/sti_sgc.c: revision 1.1
sys/arch/hp300/stand/common/dnkbd.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.2
sys/dev/ic/stivar.h: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.21
sys/arch/hp300/conf/INSTALL: revision 1.56
sys/arch/hp300/conf/INSTALL: revision 1.58
sys/arch/hp300/stand/uboot/version: revision 1.19
sys/arch/hp300/stand/common/samachdep.h: revision 1.17
sys/arch/hp300/stand/common/clock.c: revision 1.12
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.1
sys/arch/hp300/stand/Makefile.buildboot: revision 1.34
sys/arch/hp300/conf/files.hp300: revision 1.87
Add sti at sgc framebuffer.
Ported from OpenBSD by kiyohara@.
Fix a botch on switching from apci (and dca) to MI com(4) 10 years ago.
I.e. fix apci device address per FRODO_BASE macro change
in frodoreg.h rev 1.2. Now bootloader works with serial console
on HP425e (which has only com at frodo).
Thanks to miod@openbsd for providing his 425e.
Add sti(4) at sgc screen console support. From (the late) OpenBSD/hp300.
Tested on HP9000/425e, which was sent from Miod Vallat and
demonstrated at Open Source unConference 2014 Kagawa.
Check the service switch on 425e to select apci serial console.
Taken from OpenBSD/hp300. See the following comment for details:
> * Check the service switch. On the 425e, this is a physical
> * switch, unlike other frodo-based machines, so we can use it
> * as a serial vs internal video selector, since the PROM can not
> * be configured for serial console.
Add proper RealTime Clock support for HP9000/425e.
As the OpenBSD/hp300 page says 425e doesn't have the traditional
RTC at intio (as it also lacks DCA 16550 serial at intio?),
but after a few hour investigation it turns out that
425e uses mc146818 compatible calendar clock in
the Apollo "frodo" utility chip and the frodo chip on
425e actually has the 32kHz OSC and is actually backed up
by the onboard lithium battery.
Tested on HP425e (with mcclock) and HP362 (with old rtc).
Add RTC support for HP9000/425e to bootloader too.
Also put several cleanup:
- make local functions and variables static
- use proper variable types
- some KNF
Note it turns out that extreme slowness of netboot on hp300 is
caused by the too slow access of the traditional RTC chip at intio
(i.e. netboot on 425e is so much faster than others). Oh well.
Add proper consinit(9) support for sti(4) at sgc framebuffer on hp300.
The cnattach functions for sti(4) and service switch check method
for 425e in com_frodo.c are taken from OpenBSD.
The strategy how to choose the console device in hp300_cninit() is
quite diverged from 4.4BSD and OpenBSD so it's tweaked by me.
Also put several changes in sti_sgc.c to reduce diffs from OpenBSD/hp300.
Tested on 425e and 362 (which still uses gendiofb(4), not sti(4)).
XXX: sti(4) requires uvm_km_alloc(9) and uvm_map_protect(9)
to copy and call ROM functions on the executable memory region, so
it can be called before UVM and related initializations are complete.
Probably it's time to consider about MI "deferred consinit()" API
in init_main.c (or elsewhere) for modern complicated VM system...
Also fix the apci device address in dnkbd.c as apci.c rev 1.12:
http://mail-index.netbsd.org/source-changes/2014/04/10/msg053940.html
Finally dnkbd(4) is confirmed working at least on bootloader.
Thanks again to Miod Vallat.
Make the Apollo Domain keyboard actually work.
Tested on HP9000/425e and the keyboard model A1630-82001 R2 (RX-60857-HW)
provided by Miod Vallat. Mouse support needs more work.
Pull random notes on the Apollo Domain keyboard from ancient PR/3528.
Bump versions to denote recent 425e related changes.
Probe mcclock only on 425e to avoid an extra "not configured" message.
Add and enable sti(4) at sgc in install kernels for 425e.
Tested on both serial console and framebuffer console.
(switched by the service switch on the back panel)
 1.2.2.1 20-Apr-2014  bouyer file sti_sgc.c was added on branch netbsd-6 on 2014-05-21 20:56:36 +0000
 1.3.2.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.4.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.5.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.7.4.1 22-Jun-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #722):

sys/fs/cd9660/cd9660_util.c: revision 1.16
sys/arch/hp300/stand/common/clock.c: revision 1.14
sys/arch/hp300/stand/common/scsireg.h: revision 1.5
sys/arch/hp300/stand/common/scsireg.h: revision 1.6
sys/arch/hp300/stand/Makefile.buildboot: revision 1.38
sys/arch/hp300/include/bus.h: revision 1.23
sys/arch/hp300/stand/Makefile.buildboot: revision 1.39
sys/arch/hp300/stand/common/sd.c: revision 1.12
sys/arch/hp300/stand/common/prf.c: revision 1.6
sys/arch/hp300/stand/common/sd.c: revision 1.13
usr.sbin/installboot/installboot.8: revision 1.106
usr.sbin/installboot/Makefile: revision 1.59
sys/arch/hp300/stand/common/devopen.c: revision 1.14
usr.sbin/installboot/installboot.8: revision 1.107
sys/arch/hp300/stand/common/ite_dumb.c: revision 1.2
sys/arch/hp300/stand/common/devopen.c: revision 1.15
usr.sbin/installboot/installboot.8: revision 1.108
sys/fs/cd9660/cd9660_extern.h: revision 1.29
usr.sbin/installboot/installboot.8: revision 1.109
tools/Makefile.nbincludes: revision 1.11 (patch)
sys/arch/hp300/dev/rboxreg.h: revision 1.3
sys/arch/hp300/stand/common/scsivar.h: revision 1.5
sys/arch/hp300/dev/dnkbd.c: revision 1.14
sys/arch/hp300/hp300/trap.c: revision 1.156
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.12
sys/arch/hp300/dev/frodoreg.h: revision 1.6
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.13
sys/arch/hp300/stand/common/ite_sti.c: revision 1.2
sys/arch/hp300/stand/common/hil.c: revision 1.15
usr.sbin/installboot/arch/hp300.c: revision 1.18
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.14
sys/arch/hp300/dev/rbox.c: revision 1.4
usr.sbin/installboot/arch/hp300.c: revision 1.19
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.15
sys/sys/bootblock.h: revision 1.59
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.16
usr.sbin/installboot/installboot.h: revision 1.44
sys/arch/hp300/stand/mkboot/volhdr.h: file removal
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.17
sys/arch/hp300/dev/hpib.c: revision 1.45
usr.sbin/installboot/installboot.h: revision 1.45
usr.sbin/installboot/cd9660.c: revision 1.1
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.18
sys/arch/hp300/dev/topcatreg.h: revision 1.3
usr.sbin/installboot/cd9660.c: revision 1.2
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.19
sys/arch/hp300/stand/inst/inst.c: revision 1.25
sys/arch/hp300/stand/uboot/Makefile: revision 1.12
sys/arch/hp300/dev/dvbox.c: revision 1.4
sys/arch/hp300/dev/dma.c: revision 1.45
sys/arch/hp300/stand/uboot/Makefile: revision 1.13
sys/arch/hp300/stand/common/rd.c: revision 1.16
sys/arch/hp300/stand/inst/Makefile: revision 1.12
distrib/hp300/cdroms/installcd/Makefile: revision 1.4
sys/arch/hp300/stand/mkboot/volhdr.h: revision 1.6
sys/arch/hp300/stand/common/machdep.c: revision 1.16
usr.sbin/installboot/fstypes.c: revision 1.14
sys/arch/hp300/hp300/machdep.c: revision 1.238
sys/arch/hp300/include/cpu.h: revision 1.73
sys/arch/hp300/dev/diofbreg.h: revision 1.4
sys/arch/hp300/stand/common/scsi.c: revision 1.12
sys/arch/hp300/stand/common/netio.c: revision 1.19
sys/arch/hp300/stand/common/scsi.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.22
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.20
sys/arch/hp300/stand/common/conf.h: revision 1.4
sys/arch/hp300/hp300/autoconf.c: revision 1.111
sys/arch/hp300/stand/common/conf.c: revision 1.15
sys/arch/hp300/stand/mkboot/Makefile: revision 1.12
sys/arch/hp300/stand/mkboot/Makefile: revision 1.13
sys/arch/hp300/hp300/autoconf.c: revision 1.114
sys/arch/hp300/dev/dcmreg.h: revision 1.11
sys/arch/hp300/dev/diofbvar.h: revision 1.4
sys/arch/hp300/dev/dcm.c: revision 1.91
sys/fs/cd9660/cd9660_util.c: revision 1.15
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.2

TAB/space cleanup.

installboot(8): formatting improvements

Use Ar foo instead of <foo>; this is mdoc.

Other formatting tweaks.
installboot(8): fix up markup

Don't overuse .Sy - when everything is highlighted, nothing is. Use
.Ic for options &c to get correct PostScript output (both are bold in
plain text).

Use Aq Ar inside .Pa, as both Pa and Ar are rendered as underscored
text in plain text output, and the distinction is lost.

Don't set examples in bold, but give them .Pp space around - they are
much easier to read this way.

Use consistent -width in FILES.
document how to use installboot on netbsd/vax.

PR/57909: Jan-Benedict Glaw: Don't include (build) timestamp when doing a
reproducible build
fix usage string, improve error handling.
add missing chunk for repro-build. fix gcc warnings.
avoid stringop truncation, fix copyright string to prevent assembler warnings.

Fix build as a tool (Jan-Benedict Glaw)

Fix integer overflow of strtol(3) for "loadpoint" address on ILP32 hosts.

This strtol(3) was introduced in rev 1.12 for PR/57909 after netbsd-10,
but it returns LONG_MAX (0x7FFFFFFF) for 0xFFF00000 on ILP32 hosts and
the wrong loadpoint causes "NOT ENOUGH MEMORY" error by the BOOTROMs
on loading uboot.lif on (at least) my 9000/360 and 9000/425t.

Misc cosmetic changes for mostly readability.
- KNF and add some newlines per blocks
- define and use proper bintobcd() macro
- make local functions and variables static

The same uboot.lif binaries are generated.

Rename ${PROGAOUT} -> ${PROGELF} to reflect reality.
Use proper signedness for the LIF file system data structures.

Ancient 4.3BSD used short and int for location, file size, file type,
and addresses etc. but all of them should be unsigned.

Also rename several variables and add comments for readability.
The LIF file system info can be found in "The HPDir Project" page:
https://www.hp9845.net/9845/projects/hpdir/
The same uboot.lif binaries are generated.

Add a preliminary CD boot support to uboot for preparation of PR/54455.
Briefly tested on mame, but not enalbed yet.

Recognize SCSI CD-ROM devices as a booted device properly.

Necessary for PR port-hp300/54455, to boot an md root root RAMDISK

kernel from CD-ROM without "WARNING: can't find match for bootdev:"
prompt.

Sync with src/sys/arch/hp300/stand/mkboot/volhdr.h rev 1.6.
https://mail-index.netbsd.org/source-changes/2024/05/07/msg151195.html

Use proper signedness for the LIF file system data structures.
mkboot should use this MI <sys/bootblock.h> and volhdr.h should
be removed soon.

Use MI <sys/bootblock.h> to refer LIF filesystem structures.
This should have been done when LIF definitions were initially added
to <sys/bootblock.h> for MI installboot(8).

Enable SUPPORT_CD on uboot.

Make cd9660_util.c usable in userland tools like installboot(8).

This was partially done for src/distrib/cdrom/macppc_installboot,
but more strict prototypes are necessary for native binary builds.

Install cd9660 related system headers for tools installboot(8) builds.

Reorder function prototypes per source files.

Add cd9660 support to search a bootloader file in the target file system.

Also add CD boot support for hp300, using a bootloader file in cd9660 fs.
This is a tool's part to close PR/54455.

HP 9000/300 machines read LIF directory entry allocated after
the LIF volume header at the top of the boot disk during bootstrap,
and a bootstrap file must be contiguously allocated on the disk
due to limitation of the LIF specification.

Current NetBSD/hp300's bootloader is larger than ~80KB so we have
to prepare a special 'boot' partition for FFS (that has only 8KB (ffsv1)
or 32KB (ffsv2) spaces) disks to put such a large bootloader.

On the other hand, on ISO9660 fs all files are allocated contiguously
so we can specify a bootloader file in the target ISO9660 directly
in the LIF directory entry.

Note we can simply use the existing "append" option to create bootable
CD ISO for hp300, but it looks some emulators (at leaset MAME) reject
such non-standard ISO files, i.e. with an appended bootloader file at
the end of the image.

Put a RAMDISK kernel and SYS_UBOOT into hp300 installcd to make it bootable.

This should finally close PR/54455.

Fix tools build errors on Cygwin.

Appease warnings on building tools/installboot on Cygwin.
 1.8.6.1 02-Aug-2025  perseant Sync with HEAD
 1.2 01-May-2025  tsutsui Add sti(4) support for 9000/362 and 9000/382 on-board framebuffers.

Mostly pulled from OpenBSD/hp300.

This supersedes old and dumb gendiofb. Currently there is no mmap
or cmap (palette) support, but I'll investigate how Bt474 RAMDAC
should be handled.

Tested on 382 with 640x480 and 1024x768 variants, and 362 with 640x480.
No visible regression on 425e (EVRX) and 425t (CRX).
 1.1 20-Apr-2014  tsutsui branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.12; 1.1.74;
Add proper consinit(9) support for sti(4) at sgc framebuffer on hp300.

The cnattach functions for sti(4) and service switch check method
for 425e in com_frodo.c are taken from OpenBSD.
The strategy how to choose the console device in hp300_cninit() is
quite diverged from 4.4BSD and OpenBSD so it's tweaked by me.

Also put several changes in sti_sgc.c to reduce diffs from OpenBSD/hp300.

Tested on 425e and 362 (which still uses gendiofb(4), not sti(4)).

XXX: sti(4) requires uvm_km_alloc(9) and uvm_map_protect(9)
to copy and call ROM functions on the executable memory region, so
it can be called before UVM and related initializations are complete.
Probably it's time to consider about MI "deferred consinit()" API
in init_main.c (or elsewhere) for modern complicated VM system...
 1.1.74.1 02-Aug-2025  perseant Sync with HEAD
 1.1.12.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.12.1 20-Apr-2014  tls file sti_sgcvar.h was added on branch tls-maxphys on 2014-08-20 00:03:00 +0000
 1.1.8.2 10-Aug-2014  tls Rebase.
 1.1.8.1 20-Apr-2014  tls file sti_sgcvar.h was added on branch tls-earlyentropy on 2014-08-10 06:53:57 +0000
 1.1.6.2 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.1.6.1 20-Apr-2014  yamt file sti_sgcvar.h was added on branch yamt-pagecache on 2014-05-22 11:39:46 +0000
 1.1.4.2 21-May-2014  bouyer Pull up following revision(s) (requested by tsutsui in ticket #1058):
sys/arch/hp300/conf/files.hp300: revision 1.88
sys/arch/hp300/include/autoconf.h: revision 1.13
sys/dev/ic/sti.c: revision 1.17
sys/arch/hp300/dev/frodo.c: revision 1.31
sys/arch/hp300/conf/GENERIC: revision 1.173
sys/arch/hp300/hp300/machdep.c: revision 1.229
sys/arch/hp300/dev/frodo.c: revision 1.32
sys/arch/hp300/hp300/autoconf.c: revision 1.102
sys/arch/hp300/dev/frodoreg.h: revision 1.5
sys/arch/hp300/stand/common/ite_sti.c: revision 1.1
sys/arch/hp300/stand/common/itevar.h: revision 1.16
sys/arch/hp300/hp300/autoconf.c: revision 1.105
sys/arch/hp300/dev/sti_sgcvar.h: revision 1.1
sys/arch/hp300/stand/common/apci.c: revision 1.12
sys/arch/hp300/stand/common/apci.c: revision 1.13
sys/arch/hp300/dev/dnkbd.c: revision 1.6
sys/arch/hp300/dev/dnkbd.c: revision 1.7
sys/arch/hp300/stand/inst/version: revision 1.12
sys/arch/hp300/dev/com_frodo.c: revision 1.9
sys/arch/hp300/stand/common/ite.c: revision 1.17
sys/arch/hp300/conf/GENERIC: revision 1.181
sys/arch/hp300/dev/sti_sgc.c: revision 1.1
sys/arch/hp300/stand/common/dnkbd.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.2
sys/dev/ic/stivar.h: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.21
sys/arch/hp300/conf/INSTALL: revision 1.56
sys/arch/hp300/conf/INSTALL: revision 1.58
sys/arch/hp300/stand/uboot/version: revision 1.19
sys/arch/hp300/stand/common/samachdep.h: revision 1.17
sys/arch/hp300/stand/common/clock.c: revision 1.12
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.1
sys/arch/hp300/stand/Makefile.buildboot: revision 1.34
sys/arch/hp300/conf/files.hp300: revision 1.87
Add sti at sgc framebuffer.
Ported from OpenBSD by kiyohara@.
Fix a botch on switching from apci (and dca) to MI com(4) 10 years ago.
I.e. fix apci device address per FRODO_BASE macro change
in frodoreg.h rev 1.2. Now bootloader works with serial console
on HP425e (which has only com at frodo).
Thanks to miod@openbsd for providing his 425e.
Add sti(4) at sgc screen console support. From (the late) OpenBSD/hp300.
Tested on HP9000/425e, which was sent from Miod Vallat and
demonstrated at Open Source unConference 2014 Kagawa.
Check the service switch on 425e to select apci serial console.
Taken from OpenBSD/hp300. See the following comment for details:
> * Check the service switch. On the 425e, this is a physical
> * switch, unlike other frodo-based machines, so we can use it
> * as a serial vs internal video selector, since the PROM can not
> * be configured for serial console.
Add proper RealTime Clock support for HP9000/425e.
As the OpenBSD/hp300 page says 425e doesn't have the traditional
RTC at intio (as it also lacks DCA 16550 serial at intio?),
but after a few hour investigation it turns out that
425e uses mc146818 compatible calendar clock in
the Apollo "frodo" utility chip and the frodo chip on
425e actually has the 32kHz OSC and is actually backed up
by the onboard lithium battery.
Tested on HP425e (with mcclock) and HP362 (with old rtc).
Add RTC support for HP9000/425e to bootloader too.
Also put several cleanup:
- make local functions and variables static
- use proper variable types
- some KNF
Note it turns out that extreme slowness of netboot on hp300 is
caused by the too slow access of the traditional RTC chip at intio
(i.e. netboot on 425e is so much faster than others). Oh well.
Add proper consinit(9) support for sti(4) at sgc framebuffer on hp300.
The cnattach functions for sti(4) and service switch check method
for 425e in com_frodo.c are taken from OpenBSD.
The strategy how to choose the console device in hp300_cninit() is
quite diverged from 4.4BSD and OpenBSD so it's tweaked by me.
Also put several changes in sti_sgc.c to reduce diffs from OpenBSD/hp300.
Tested on 425e and 362 (which still uses gendiofb(4), not sti(4)).
XXX: sti(4) requires uvm_km_alloc(9) and uvm_map_protect(9)
to copy and call ROM functions on the executable memory region, so
it can be called before UVM and related initializations are complete.
Probably it's time to consider about MI "deferred consinit()" API
in init_main.c (or elsewhere) for modern complicated VM system...
Also fix the apci device address in dnkbd.c as apci.c rev 1.12:
http://mail-index.netbsd.org/source-changes/2014/04/10/msg053940.html
Finally dnkbd(4) is confirmed working at least on bootloader.
Thanks again to Miod Vallat.
Make the Apollo Domain keyboard actually work.
Tested on HP9000/425e and the keyboard model A1630-82001 R2 (RX-60857-HW)
provided by Miod Vallat. Mouse support needs more work.
Pull random notes on the Apollo Domain keyboard from ancient PR/3528.
Bump versions to denote recent 425e related changes.
Probe mcclock only on 425e to avoid an extra "not configured" message.
Add and enable sti(4) at sgc in install kernels for 425e.
Tested on both serial console and framebuffer console.
(switched by the service switch on the back panel)
 1.1.4.1 20-Apr-2014  bouyer file sti_sgcvar.h was added on branch netbsd-6 on 2014-05-21 20:56:36 +0000
 1.1.2.2 18-May-2014  rmind sync with head
 1.1.2.1 20-Apr-2014  rmind file sti_sgcvar.h was added on branch rmind-smpnet on 2014-05-18 17:45:07 +0000
 1.9 01-Aug-2003  tsutsui Switch hp300 to MI SCSI with MI mb89352 SPC SCSI driver (at last),
and remove old hp300 MD oscsi support derived from 4.4BSD-Lite2.
 1.8 26-Jul-2002  hannken branches: 1.8.6;
Convert to new device buffer queue interface.

Approved by: Jason R. Thorpe <thorpej@netbsd.org>
 1.7 21-Jan-2000  thorpej branches: 1.7.6; 1.7.8; 1.7.12; 1.7.20;
Update for sys/buf.h/disksort_*() changes.
 1.6 02-Apr-1997  scottr branches: 1.6.22;
Fix printf() and other warnings when compiled with DEBUG defined.
 1.5 31-Mar-1997  scottr Add prototypes, and make this compile with -Wall. Remove register
modifier from all declarations.
 1.4 26-Oct-1994  cgd new RCS ID format.
 1.3 23-May-1994  mycroft Merge with 4.4-Lite.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.6.22.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.7.20.1 30-Aug-2002  gehenna catch up with -current.
 1.7.12.1 01-Aug-2002  nathanw Catch up to -current.
 1.7.8.1 06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.7.6.1 10-Oct-2001  fvdl Convert all remaining devices.
 1.8.6.1 03-Aug-2004  skrll Sync with HEAD
 1.15 27-May-2025  tsutsui Use C99 designated initializers for wscons structures.
 1.14 26-Feb-2025  andvar Fix typos in comments, mainly s/calcurate/calculate/.
 1.13 20-Dec-2024  tsutsui Remove trailing whitespace.
 1.12 04-May-2024  tsutsui branches: 1.12.2;
Add comments about quirks of 98542/98543 framebuffers with 1024x400 pixels.
 1.11 01-May-2024  tsutsui Fix topcat(4) problems on some models that cause garbages on screen.

- Make sure that windowmove (hardware BITBLT) ops complete by checking
tc_busywait() before calling putchar functions by MI rasops(9).
It looks CPU accesses against VRAM during windowmove (copy, erase,
and cursor) ops causes unexpected garbages at least on 98543 on HP360,
98547 on HP370, and also on 98543 on 040 HP380 (but not on 98549).

- Handle 'sparse VRAM' on 98543 (and probably 98542) properly:
- Prepare and use own topcat_putchar1_4() function for sparse VRAM.
- Pass proper 'VRAM width' rather than actuall font width to all
windowmove (copycols, erasecols, copyrows, eraserows, and do_cursor)
operation functions.

Now all topcat(4) consoles on 98543 on HP360/HP380 and 98547 on HP370
work fine, and no visible regression on 98549 on HP380 and 98544 on HP360.

Worth to pullup netbsd-10.
 1.10 01-May-2024  tsutsui Add DELAY(9) to make palette register settings stable on 98543 in HP360.

Note 98547 (6 bpp variant) on HP370 (68030 33MHz) doesn't need these
DELAYs so maybe only some old variants (98543 and 98545?) on 020/030
have such restriction (actually only one nop seems enough.)
 1.9 29-Apr-2024  tsutsui Check tc_waitbusy() before writing palette registers in topcat_setcolor().

This seems to make palette operations more stable on my HP360 with HP98543.
 1.8 29-Apr-2024  tsutsui Use proper planemask per a vaild number of planes.
 1.7 29-Apr-2024  tsutsui Move a check of topcat(4) specific fb width quirks to topcat.c.

We need to check fb->planes but it's propbed in topcat.c after
common diofb_fbinquire() is called.

Also add a comment that it looks these 1 bpp and 4 bpp boards have
VRAM with sparse address layout and we have to handle
512 pixels per line with 1024 bytes per line.
 1.6 30-Nov-2022  tsutsui branches: 1.6.2;
Fix silent bus error panic on 98543A topcat framebuffer on HP320 and HP360.

It looks DELAY(100)s before checking cmap_busy in old pre-wscons grf_tc.c
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/arch/hp300/dev/Attic/grf_tc.c?rev=1.42
are actually necessary on 68020 (HP320) and 68030 (HP360) machines,
while it works without them on 68040 (HP380).

Should be pulled up to netbsd-9.
 1.5 15-Apr-2021  tsutsui Fix two problems on old topcat(4) framebuffers found on HP332/340.

- Fix panic on monochrome framebuffers. They don't have palette registers.
The problem was reported from Anders Gustafsson and also Andrew Gillham
back in 2013:
https://mail-index.netbsd.org/port-hp300/2013/09/27/msg000086.html
https://mail-index.netbsd.org/port-hp300/2013/09/28/msg000087.html
- Fix incorrect framebuffer width of 98542/98544 framebuffers on HP332.
Reported from Andrew Gillham (98542) as above and Chris Hanson (98543):
https://mail-index.netbsd.org/port-hp300/2013/09/27/msg000083.html
https://mail-index.netbsd.org/port-hp300/2020/05/01/msg000164.html

Worth to pullup to netbsd-9.
 1.4 18-Feb-2011  tsutsui branches: 1.4.2; 1.4.6; 1.4.64; 1.4.74;
Use aprint_normal(9) and variants.
 1.3 18-Feb-2011  tsutsui Make local functions and variables static.
 1.2 12-Feb-2011  tsutsui - make local functions static
- some KNF
 1.1 06-Feb-2011  tsutsui branches: 1.1.2;
Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.1.2.4 05-Mar-2011  bouyer Sync with HEAD
 1.1.2.3 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.2 08-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 06-Feb-2011  bouyer file topcat.c was added on branch bouyer-quota2 on 2011-02-08 16:19:21 +0000
 1.4.74.1 17-Apr-2021  thorpej Sync with HEAD.
 1.4.64.2 06-Dec-2022  martin Pull up following revision(s) (requested by tsutsui in ticket #1551):

sys/arch/hp300/dev/topcat.c: revision 1.6

Fix silent bus error panic on 98543A topcat framebuffer on HP320 and HP360.

It looks DELAY(100)s before checking cmap_busy in old pre-wscons grf_tc.c
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/arch/hp300/dev/Attic/grf_tc.c?rev=1.42
are actually necessary on 68020 (HP320) and 68030 (HP360) machines,
while it works without them on 68040 (HP380).

Should be pulled up to netbsd-9.
 1.4.64.1 21-Apr-2021  martin Pull up following revision(s) (requested by tsutsui in ticket #1248):

sys/arch/hp300/dev/topcat.c: revision 1.5
sys/arch/hp300/dev/diofb.c: revision 1.5

Fix two problems on old topcat(4) framebuffers found on HP332/340.

- Fix panic on monochrome framebuffers. They don't have palette registers.
The problem was reported from Anders Gustafsson and also Andrew Gillham
back in 2013:
https://mail-index.netbsd.org/port-hp300/2013/09/27/msg000086.html
https://mail-index.netbsd.org/port-hp300/2013/09/28/msg000087.html

- Fix incorrect framebuffer width of 98542/98544 framebuffers on HP332.
Reported from Andrew Gillham (98542) as above and Chris Hanson (98543):
https://mail-index.netbsd.org/port-hp300/2013/09/27/msg000083.html
https://mail-index.netbsd.org/port-hp300/2020/05/01/msg000164.html

Worth to pullup to netbsd-9.
 1.4.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.4.6.1 18-Feb-2011  jruoho file topcat.c was added on branch jruoho-x86intr on 2011-06-06 09:05:36 +0000
 1.4.2.2 05-Mar-2011  rmind sync with head
 1.4.2.1 18-Feb-2011  rmind file topcat.c was added on branch rmind-uvmplock on 2011-03-05 20:50:23 +0000
 1.6.2.1 16-May-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #690):

sys/arch/hp300/dev/topcat.c: revision 1.7
sys/arch/hp300/dev/topcat.c: revision 1.8
sys/arch/hp300/dev/topcat.c: revision 1.9
sys/arch/hp300/dev/diofb.c: revision 1.8
sys/arch/hp300/dev/diofb.c: revision 1.9
sys/arch/hp300/dev/diofb.c: revision 1.10
sys/arch/hp300/dev/topcat.c: revision 1.10
sys/arch/hp300/dev/topcat.c: revision 1.11
sys/arch/hp300/dev/topcat.c: revision 1.12
sys/arch/hp300/dev/topcatreg.h: revision 1.5
distrib/notes/hp300/hardware: revision 1.28
sys/arch/hp300/dev/diofbvar.h: revision 1.5
share/man/man4/man4.hp300/topcat.4: revision 1.8

Increase DELAY() for waitbusy macroes as pre-wscons and 4.4BSD did.

It looks necessary for sane palette ops at least on HP98543 topcat
on 68030 HP 9000/360.

Move a check of topcat(4) specific fb width quirks to topcat.c.

We need to check fb->planes but it's propbed in topcat.c after
common diofb_fbinquire() is called.

Also add a comment that it looks these 1 bpp and 4 bpp boards have
VRAM with sparse address layout and we have to handle
512 pixels per line with 1024 bytes per line.

Fix MD allocattr to return proper attributes what MI rasops(9) expects.
Use proper planemask per a vaild number of planes.

Check tc_waitbusy() before writing palette registers in topcat_setcolor().
This seems to make palette operations more stable on my HP360 with HP98543.

Add DELAY(9) to make palette register settings stable on 98543 in HP360.
Note 98547 (6 bpp variant) on HP370 (68030 33MHz) doesn't need these
DELAYs so maybe only some old variants (98543 and 98545?) on 020/030
have such restriction (actually only one nop seems enough.)

Fix topcat(4) problems on some models that cause garbages on screen.
- Make sure that windowmove (hardware BITBLT) ops complete by checking
tc_busywait() before calling putchar functions by MI rasops(9).
It looks CPU accesses against VRAM during windowmove (copy, erase,
and cursor) ops causes unexpected garbages at least on 98543 on HP360,
98547 on HP370, and also on 98543 on 040 HP380 (but not on 98549).
- Handle 'sparse VRAM' on 98543 (and probably 98542) properly:
- Prepare and use own topcat_putchar1_4() function for sparse VRAM.
- Pass proper 'VRAM width' rather than actuall font width to all
windowmove (copycols, erasecols, copyrows, eraserows, and do_cursor)
operation functions.
Now all topcat(4) consoles on 98543 on HP360/HP380 and 98547 on HP370
work fine, and no visible regression on 98549 on HP380 and 98544 on HP360.

Note that 98542 and 98543 variants are also supported by topcat(4).

Add 98542 and 98543 framebuffers to supported "Graphics Devices" section.
I hope someone will sync a list of supported devices in port wiki pages
with one in this installation notes.

Add comments about quirks of 98542/98543 framebuffers with 1024x400 pixels.
 1.12.2.1 02-Aug-2025  perseant Sync with HEAD
 1.5 29-Apr-2024  tsutsui Increase DELAY() for waitbusy macroes as pre-wscons and 4.4BSD did.

It looks necessary for sane palette ops at least on HP98543 topcat
on 68030 HP 9000/360.
 1.4 02-Feb-2024  andvar s/Staus/Status/ in comments.
 1.3 15-Jan-2023  tsutsui TAB/space cleanup.
 1.2 12-Feb-2011  tsutsui branches: 1.2.2; 1.2.6; 1.2.90;
- make local functions static
- some KNF
 1.1 06-Feb-2011  tsutsui branches: 1.1.2;
Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.1.2.3 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.2 08-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 06-Feb-2011  bouyer file topcatreg.h was added on branch bouyer-quota2 on 2011-02-08 16:19:21 +0000
 1.2.90.2 22-Jun-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #722):

sys/fs/cd9660/cd9660_util.c: revision 1.16
sys/arch/hp300/stand/common/clock.c: revision 1.14
sys/arch/hp300/stand/common/scsireg.h: revision 1.5
sys/arch/hp300/stand/common/scsireg.h: revision 1.6
sys/arch/hp300/stand/Makefile.buildboot: revision 1.38
sys/arch/hp300/include/bus.h: revision 1.23
sys/arch/hp300/stand/Makefile.buildboot: revision 1.39
sys/arch/hp300/stand/common/sd.c: revision 1.12
sys/arch/hp300/stand/common/prf.c: revision 1.6
sys/arch/hp300/stand/common/sd.c: revision 1.13
usr.sbin/installboot/installboot.8: revision 1.106
usr.sbin/installboot/Makefile: revision 1.59
sys/arch/hp300/stand/common/devopen.c: revision 1.14
usr.sbin/installboot/installboot.8: revision 1.107
sys/arch/hp300/stand/common/ite_dumb.c: revision 1.2
sys/arch/hp300/stand/common/devopen.c: revision 1.15
usr.sbin/installboot/installboot.8: revision 1.108
sys/fs/cd9660/cd9660_extern.h: revision 1.29
usr.sbin/installboot/installboot.8: revision 1.109
tools/Makefile.nbincludes: revision 1.11 (patch)
sys/arch/hp300/dev/rboxreg.h: revision 1.3
sys/arch/hp300/stand/common/scsivar.h: revision 1.5
sys/arch/hp300/dev/dnkbd.c: revision 1.14
sys/arch/hp300/hp300/trap.c: revision 1.156
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.12
sys/arch/hp300/dev/frodoreg.h: revision 1.6
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.13
sys/arch/hp300/stand/common/ite_sti.c: revision 1.2
sys/arch/hp300/stand/common/hil.c: revision 1.15
usr.sbin/installboot/arch/hp300.c: revision 1.18
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.14
sys/arch/hp300/dev/rbox.c: revision 1.4
usr.sbin/installboot/arch/hp300.c: revision 1.19
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.15
sys/sys/bootblock.h: revision 1.59
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.16
usr.sbin/installboot/installboot.h: revision 1.44
sys/arch/hp300/stand/mkboot/volhdr.h: file removal
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.17
sys/arch/hp300/dev/hpib.c: revision 1.45
usr.sbin/installboot/installboot.h: revision 1.45
usr.sbin/installboot/cd9660.c: revision 1.1
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.18
sys/arch/hp300/dev/topcatreg.h: revision 1.3
usr.sbin/installboot/cd9660.c: revision 1.2
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.19
sys/arch/hp300/stand/inst/inst.c: revision 1.25
sys/arch/hp300/stand/uboot/Makefile: revision 1.12
sys/arch/hp300/dev/dvbox.c: revision 1.4
sys/arch/hp300/dev/dma.c: revision 1.45
sys/arch/hp300/stand/uboot/Makefile: revision 1.13
sys/arch/hp300/stand/common/rd.c: revision 1.16
sys/arch/hp300/stand/inst/Makefile: revision 1.12
distrib/hp300/cdroms/installcd/Makefile: revision 1.4
sys/arch/hp300/stand/mkboot/volhdr.h: revision 1.6
sys/arch/hp300/stand/common/machdep.c: revision 1.16
usr.sbin/installboot/fstypes.c: revision 1.14
sys/arch/hp300/hp300/machdep.c: revision 1.238
sys/arch/hp300/include/cpu.h: revision 1.73
sys/arch/hp300/dev/diofbreg.h: revision 1.4
sys/arch/hp300/stand/common/scsi.c: revision 1.12
sys/arch/hp300/stand/common/netio.c: revision 1.19
sys/arch/hp300/stand/common/scsi.c: revision 1.13
sys/arch/hp300/dev/sti_sgc.c: revision 1.8
sys/arch/hp300/dev/rtc.c: revision 1.22
sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.20
sys/arch/hp300/stand/common/conf.h: revision 1.4
sys/arch/hp300/hp300/autoconf.c: revision 1.111
sys/arch/hp300/stand/common/conf.c: revision 1.15
sys/arch/hp300/stand/mkboot/Makefile: revision 1.12
sys/arch/hp300/stand/mkboot/Makefile: revision 1.13
sys/arch/hp300/hp300/autoconf.c: revision 1.114
sys/arch/hp300/dev/dcmreg.h: revision 1.11
sys/arch/hp300/dev/diofbvar.h: revision 1.4
sys/arch/hp300/dev/dcm.c: revision 1.91
sys/fs/cd9660/cd9660_util.c: revision 1.15
sys/arch/hp300/dev/mcclock_frodo.c: revision 1.2

TAB/space cleanup.

installboot(8): formatting improvements

Use Ar foo instead of <foo>; this is mdoc.

Other formatting tweaks.
installboot(8): fix up markup

Don't overuse .Sy - when everything is highlighted, nothing is. Use
.Ic for options &c to get correct PostScript output (both are bold in
plain text).

Use Aq Ar inside .Pa, as both Pa and Ar are rendered as underscored
text in plain text output, and the distinction is lost.

Don't set examples in bold, but give them .Pp space around - they are
much easier to read this way.

Use consistent -width in FILES.
document how to use installboot on netbsd/vax.

PR/57909: Jan-Benedict Glaw: Don't include (build) timestamp when doing a
reproducible build
fix usage string, improve error handling.
add missing chunk for repro-build. fix gcc warnings.
avoid stringop truncation, fix copyright string to prevent assembler warnings.

Fix build as a tool (Jan-Benedict Glaw)

Fix integer overflow of strtol(3) for "loadpoint" address on ILP32 hosts.

This strtol(3) was introduced in rev 1.12 for PR/57909 after netbsd-10,
but it returns LONG_MAX (0x7FFFFFFF) for 0xFFF00000 on ILP32 hosts and
the wrong loadpoint causes "NOT ENOUGH MEMORY" error by the BOOTROMs
on loading uboot.lif on (at least) my 9000/360 and 9000/425t.

Misc cosmetic changes for mostly readability.
- KNF and add some newlines per blocks
- define and use proper bintobcd() macro
- make local functions and variables static

The same uboot.lif binaries are generated.

Rename ${PROGAOUT} -> ${PROGELF} to reflect reality.
Use proper signedness for the LIF file system data structures.

Ancient 4.3BSD used short and int for location, file size, file type,
and addresses etc. but all of them should be unsigned.

Also rename several variables and add comments for readability.
The LIF file system info can be found in "The HPDir Project" page:
https://www.hp9845.net/9845/projects/hpdir/
The same uboot.lif binaries are generated.

Add a preliminary CD boot support to uboot for preparation of PR/54455.
Briefly tested on mame, but not enalbed yet.

Recognize SCSI CD-ROM devices as a booted device properly.

Necessary for PR port-hp300/54455, to boot an md root root RAMDISK

kernel from CD-ROM without "WARNING: can't find match for bootdev:"
prompt.

Sync with src/sys/arch/hp300/stand/mkboot/volhdr.h rev 1.6.
https://mail-index.netbsd.org/source-changes/2024/05/07/msg151195.html

Use proper signedness for the LIF file system data structures.
mkboot should use this MI <sys/bootblock.h> and volhdr.h should
be removed soon.

Use MI <sys/bootblock.h> to refer LIF filesystem structures.
This should have been done when LIF definitions were initially added
to <sys/bootblock.h> for MI installboot(8).

Enable SUPPORT_CD on uboot.

Make cd9660_util.c usable in userland tools like installboot(8).

This was partially done for src/distrib/cdrom/macppc_installboot,
but more strict prototypes are necessary for native binary builds.

Install cd9660 related system headers for tools installboot(8) builds.

Reorder function prototypes per source files.

Add cd9660 support to search a bootloader file in the target file system.

Also add CD boot support for hp300, using a bootloader file in cd9660 fs.
This is a tool's part to close PR/54455.

HP 9000/300 machines read LIF directory entry allocated after
the LIF volume header at the top of the boot disk during bootstrap,
and a bootstrap file must be contiguously allocated on the disk
due to limitation of the LIF specification.

Current NetBSD/hp300's bootloader is larger than ~80KB so we have
to prepare a special 'boot' partition for FFS (that has only 8KB (ffsv1)
or 32KB (ffsv2) spaces) disks to put such a large bootloader.

On the other hand, on ISO9660 fs all files are allocated contiguously
so we can specify a bootloader file in the target ISO9660 directly
in the LIF directory entry.

Note we can simply use the existing "append" option to create bootable
CD ISO for hp300, but it looks some emulators (at leaset MAME) reject
such non-standard ISO files, i.e. with an appended bootloader file at
the end of the image.

Put a RAMDISK kernel and SYS_UBOOT into hp300 installcd to make it bootable.

This should finally close PR/54455.

Fix tools build errors on Cygwin.

Appease warnings on building tools/installboot on Cygwin.
 1.2.90.1 16-May-2024  martin Pull up following revision(s) (requested by tsutsui in ticket #690):

sys/arch/hp300/dev/topcat.c: revision 1.7
sys/arch/hp300/dev/topcat.c: revision 1.8
sys/arch/hp300/dev/topcat.c: revision 1.9
sys/arch/hp300/dev/diofb.c: revision 1.8
sys/arch/hp300/dev/diofb.c: revision 1.9
sys/arch/hp300/dev/diofb.c: revision 1.10
sys/arch/hp300/dev/topcat.c: revision 1.10
sys/arch/hp300/dev/topcat.c: revision 1.11
sys/arch/hp300/dev/topcat.c: revision 1.12
sys/arch/hp300/dev/topcatreg.h: revision 1.5
distrib/notes/hp300/hardware: revision 1.28
sys/arch/hp300/dev/diofbvar.h: revision 1.5
share/man/man4/man4.hp300/topcat.4: revision 1.8

Increase DELAY() for waitbusy macroes as pre-wscons and 4.4BSD did.

It looks necessary for sane palette ops at least on HP98543 topcat
on 68030 HP 9000/360.

Move a check of topcat(4) specific fb width quirks to topcat.c.

We need to check fb->planes but it's propbed in topcat.c after
common diofb_fbinquire() is called.

Also add a comment that it looks these 1 bpp and 4 bpp boards have
VRAM with sparse address layout and we have to handle
512 pixels per line with 1024 bytes per line.

Fix MD allocattr to return proper attributes what MI rasops(9) expects.
Use proper planemask per a vaild number of planes.

Check tc_waitbusy() before writing palette registers in topcat_setcolor().
This seems to make palette operations more stable on my HP360 with HP98543.

Add DELAY(9) to make palette register settings stable on 98543 in HP360.
Note 98547 (6 bpp variant) on HP370 (68030 33MHz) doesn't need these
DELAYs so maybe only some old variants (98543 and 98545?) on 020/030
have such restriction (actually only one nop seems enough.)

Fix topcat(4) problems on some models that cause garbages on screen.
- Make sure that windowmove (hardware BITBLT) ops complete by checking
tc_busywait() before calling putchar functions by MI rasops(9).
It looks CPU accesses against VRAM during windowmove (copy, erase,
and cursor) ops causes unexpected garbages at least on 98543 on HP360,
98547 on HP370, and also on 98543 on 040 HP380 (but not on 98549).
- Handle 'sparse VRAM' on 98543 (and probably 98542) properly:
- Prepare and use own topcat_putchar1_4() function for sparse VRAM.
- Pass proper 'VRAM width' rather than actuall font width to all
windowmove (copycols, erasecols, copyrows, eraserows, and do_cursor)
operation functions.
Now all topcat(4) consoles on 98543 on HP360/HP380 and 98547 on HP370
work fine, and no visible regression on 98549 on HP380 and 98544 on HP360.

Note that 98542 and 98543 variants are also supported by topcat(4).

Add 98542 and 98543 framebuffers to supported "Graphics Devices" section.
I hope someone will sync a list of supported devices in port wiki pages
with one in this installation notes.

Add comments about quirks of 98542/98543 framebuffers with 1024x400 pixels.
 1.2.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.1 12-Feb-2011  jruoho file topcatreg.h was added on branch jruoho-x86intr on 2011-06-06 09:05:36 +0000
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 12-Feb-2011  rmind file topcatreg.h was added on branch rmind-uvmplock on 2011-03-05 20:50:23 +0000
 1.5 30-May-2025  tsutsui Fix inverted logic botch in tvrxcnattach().

This has been wrong since my initial hp300 wscons commit in 2011,
and probably never worked. (sigh)

(Un)fortunately, tvrxcnattach() also failed on 362 and 382 with
EVRX sti(4) because bus_space_map(9) failed with the default 4KB page
size. It turns out it succeeds with an 8KB page setting, then sti(4)
or gendiofb(4) won't be attached in that case.

Should be pulled up to netbsd-9 and netbsd-10.
 1.4 27-May-2025  tsutsui Use C99 designated initializers for wscons structures.
 1.3 18-Feb-2011  tsutsui branches: 1.3.2; 1.3.6; 1.3.64; 1.3.90; 1.3.96;
Use aprint_normal(9) and variants.
 1.2 12-Feb-2011  tsutsui - make local functions static
- some KNF
 1.1 06-Feb-2011  tsutsui branches: 1.1.2;
Switch NetBSD/hp300 to wscons with rasops. Simply ported from OpenBSD/hp300.

- Only A1416 Kathmandu (topcat) framebuffer on 425t is tested, but
all other variants (TigerShark, Hyperion, DaVinci, GatorBox, Renaissance)
should also work if they are working on OpenBSD/hp300.
- sti(4) and SGC bus support are not pulled because I don't have 425e
and I can't confirm that 362 and 382 actually have SGC bus.
(I'll commit a DIO based dumb driver for 362 and 382 framebuffers later)
- Xorg server with wsfb driver will also be integrated soon
once after keycode with NoSymbol problem is addressed.
(We have to re-think what code should be used on WSDISPLAY_COMPAT_RAWKBD)
- MI HIL keyboard and mouse drivers are working fine though
cngetc via hilkbd has some problem (still we can input commands).
- No old HP-UX like HIL ioctl compatibility (we removed COMPAT_HPUX anyway).
grfinfo(8) and hilinfo(8) will be removed shortly.

Demonstrated on NetBSD booth at Open Source Conference 2011 Kagawa.
 1.1.2.4 05-Mar-2011  bouyer Sync with HEAD
 1.1.2.3 17-Feb-2011  bouyer Sync with HEAD
 1.1.2.2 08-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 06-Feb-2011  bouyer file tvrx.c was added on branch bouyer-quota2 on 2011-02-08 16:19:21 +0000
 1.3.96.1 02-Aug-2025  perseant Sync with HEAD
 1.3.90.1 01-Jun-2025  martin Pull up following revision(s) (requested by tsutsui in ticket #1123):

sys/arch/hp300/dev/tvrx.c: revision 1.5

Fix inverted logic botch in tvrxcnattach().

This has been wrong since my initial hp300 wscons commit in 2011,
and probably never worked. (sigh)

(Un)fortunately, tvrxcnattach() also failed on 362 and 382 with
EVRX sti(4) because bus_space_map(9) failed with the default 4KB page
size. It turns out it succeeds with an 8KB page setting, then sti(4)
or gendiofb(4) won't be attached in that case.
 1.3.64.1 01-Jun-2025  martin Pull up following revision(s) (requested by tsutsui in ticket #1957):

sys/arch/hp300/dev/tvrx.c: revision 1.5

Fix inverted logic botch in tvrxcnattach().

This has been wrong since my initial hp300 wscons commit in 2011,
and probably never worked. (sigh)

(Un)fortunately, tvrxcnattach() also failed on 362 and 382 with
EVRX sti(4) because bus_space_map(9) failed with the default 4KB page
size. It turns out it succeeds with an 8KB page setting, then sti(4)
or gendiofb(4) won't be attached in that case.
 1.3.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.3.6.1 18-Feb-2011  jruoho file tvrx.c was added on branch jruoho-x86intr on 2011-06-06 09:05:37 +0000
 1.3.2.2 05-Mar-2011  rmind sync with head
 1.3.2.1 18-Feb-2011  rmind file tvrx.c was added on branch rmind-uvmplock on 2011-03-05 20:50:23 +0000
 1.7 24-Jul-1994  mycroft Clean up deleted files.
 1.6 11-May-1994  mycroft Get rid of private *read() and *write() functions.
 1.5 11-Jan-1994  mycroft *strategy functions return void.
 1.4 12-Nov-1993  cgd new specfs.h and fifo.h locations
 1.3 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...
 1.4 24-Jul-1994  mycroft Clean up deleted files.
 1.3 01-Aug-1993  mycroft Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
 1.2 22-May-1993  cgd add rcsids to everything and clean up headers
 1.1 13-May-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1 13-May-1993  cgd add hp300 kernel files. generic kernel files might need some help...

RSS XML Feed