Home | History | Annotate | only in /src/sys/arch/sgimips/hpc
History log of /src/sys/arch/sgimips/hpc
RevisionDateAuthorComments
 1.1 09-Apr-2018  christos branches: 1.1.2;
rename panel to button.
 1.1.2.2 16-Apr-2018  pgoyette Sync with HEAD, resolve some conflicts
 1.1.2.1 09-Apr-2018  pgoyette file button.c was added on branch pgoyette-compat on 2018-04-16 01:59:55 +0000
 1.3 12-Feb-2009  rumble Enable Personal IRIS 4D/20 and 4D/25 support:
- Adapt int(4) to handle the INT1 chip
- Move generic rtc clocks out of hpc/ and into dev/
- Handle the very strangely wired eeprom and other bits in arcemu
- Sprinkle MACH_SGI_IP6 as necessary
- Enable IP6/IP10 devices in GENERIC32_IP12. Yes, the naming is poor but
there's no winning with kernel/hw compatibility on sgimips...

Tested on my 4D/25. Doesn't (appear to) break macallan@'s IP22.
 1.2 11-Dec-2005  christos branches: 1.2.78; 1.2.86; 1.2.92;
merge ktrace-lwp.
 1.1 22-Nov-2003  sekiya branches: 1.1.4;
Register definitions for National Semiconductor DP8573A RTC. Code originally
from Steve Rumble, with modifications by myself.
 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 22-Nov-2003  skrll file dp8573areg.h was added on branch ktrace-lwp on 2004-08-03 10:40:06 +0000
 1.2.92.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.2.86.1 03-Mar-2009  skrll Sync with HEAD.
 1.2.78.1 04-May-2009  yamt sync with head.
 1.4 12-Feb-2009  rumble Enable Personal IRIS 4D/20 and 4D/25 support:
- Adapt int(4) to handle the INT1 chip
- Move generic rtc clocks out of hpc/ and into dev/
- Handle the very strangely wired eeprom and other bits in arcemu
- Sprinkle MACH_SGI_IP6 as necessary
- Enable IP6/IP10 devices in GENERIC32_IP12. Yes, the naming is poor but
there's no winning with kernel/hw compatibility on sgimips...

Tested on my 4D/25. Doesn't (appear to) break macallan@'s IP22.
 1.3 05-Sep-2006  rumble branches: 1.3.60; 1.3.68; 1.3.74;
Switch sgimips to MI todr.
 1.2 11-Dec-2005  christos branches: 1.2.4; 1.2.8;
merge ktrace-lwp.
 1.1 22-Nov-2003  sekiya branches: 1.1.4; 1.1.18;
Add dpclock driver (and minimal hpc1 goo) for ip20. Code originally
from Steve Rumble, with modifications by myself.
 1.1.18.1 30-Dec-2006  yamt sync with head.
 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 22-Nov-2003  skrll file dpclock_hpc.c was added on branch ktrace-lwp on 2004-08-03 10:40:06 +0000
 1.2.8.1 14-Sep-2006  yamt sync with head.
 1.2.4.1 09-Sep-2006  rpaulo sync with head
 1.3.74.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.3.68.1 03-Mar-2009  skrll Sync with HEAD.
 1.3.60.1 04-May-2009  yamt sync with head.
 1.3 25-Nov-2001  soren O2 RTC attachment, based on code from Antti Kantee.
 1.2 18-Nov-2001  thorpej * Clean up HPC autoconfiguration a little. Pass device register and
DMA register offsets, as well as IRQ, to children. Use direct
config. Use machine type/subtype to determine which devices are
present.
* Add support for the second SCSI controller on the Indigo2.
 1.1 11-May-2001  thorpej branches: 1.1.2; 1.1.8;
Support for the Dallas 1286 clock found on the Indigo2 and Indy.
 1.1.8.2 28-Feb-2002  nathanw Catch up to -current.
 1.1.8.1 11-May-2001  nathanw file ds1286.c was added on branch nathanw_sa on 2002-02-28 04:11:35 +0000
 1.1.2.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.11 12-Feb-2009  rumble Enable Personal IRIS 4D/20 and 4D/25 support:
- Adapt int(4) to handle the INT1 chip
- Move generic rtc clocks out of hpc/ and into dev/
- Handle the very strangely wired eeprom and other bits in arcemu
- Sprinkle MACH_SGI_IP6 as necessary
- Enable IP6/IP10 devices in GENERIC32_IP12. Yes, the naming is poor but
there's no winning with kernel/hw compatibility on sgimips...

Tested on my 4D/25. Doesn't (appear to) break macallan@'s IP22.
 1.10 05-Sep-2006  rumble branches: 1.10.60; 1.10.68; 1.10.74;
Switch sgimips to MI todr.
 1.9 11-Dec-2005  christos branches: 1.9.4; 1.9.8;
merge ktrace-lwp.
 1.8 15-Jul-2003  lukem branches: 1.8.16;
__KERNEL_RCSID()
 1.7 19-Jan-2003  rafal branches: 1.7.2;
Change DS1286 definitions to start with DS1286_ rather than DS_ so these and
DS1687 definitions are easier to distinguish.
 1.6 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.5 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.4 27-Sep-2002  thorpej Rather than referencing the cfdriver directly in the cfdata entries,
instead use a string naming the driver. The cfdriver is then looked
up in a list which is built at run-time.
 1.3 13-Mar-2002  simonb Replace lots of 8x<space> with <tabs> and other miscellaneous indentation
fixes.
Wrap a couple of long lines.
Use <return-type>\n<function name> as per KNF in a few places.
 1.2 14-Jan-2002  pooka make RTC year IRIX semantics adjustments a macro
 1.1 25-Nov-2001  soren branches: 1.1.2; 1.1.4;
O2 RTC attachment, based on code from Antti Kantee.
 1.1.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.1.4.4 16-Mar-2002  jdolecek Catch up with -current.
 1.1.4.3 11-Feb-2002  jdolecek Sync w/ -current.
 1.1.4.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.1.4.1 25-Nov-2001  thorpej file dsclock_hpc.c was added on branch kqueue on 2002-01-10 19:48:25 +0000
 1.1.2.5 18-Oct-2002  nathanw Catch up to -current.
 1.1.2.4 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.1.2.3 28-Feb-2002  nathanw Catch up to -current.
 1.1.2.2 08-Jan-2002  nathanw Catch up to -current.
 1.1.2.1 25-Nov-2001  nathanw file dsclock_hpc.c was added on branch nathanw_sa on 2002-01-08 00:27:27 +0000
 1.7.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.7.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.7.2.1 03-Aug-2004  skrll Sync with HEAD
 1.8.16.1 30-Dec-2006  yamt sync with head.
 1.9.8.1 14-Sep-2006  yamt sync with head.
 1.9.4.1 09-Sep-2006  rpaulo sync with head
 1.10.74.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.10.68.1 03-Mar-2009  skrll Sync with HEAD.
 1.10.60.1 04-May-2009  yamt sync with head.
 1.17 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.16 09-Apr-2018  christos branches: 1.16.2; 1.16.4;
rename panel to button.
 1.15 09-Apr-2018  christos rename "panel" to "button" to avoid conflict with fdt
 1.14 14-May-2009  macallan branches: 1.14.62;
add a driver for the Indy's front panel buttons.
- power button presses are reported to sysmon
- volume control buttons are reported to PMF
TODO: add better key repeat code. The hardware keeps firing interrupts at us
whenever a button is down and not on - say - status change. If we don't clear
the interrupt we'll be fired on until someone clears it. We should probably
disable the entire interrupt and occasionally poll for button release.
 1.13 12-Feb-2009  rumble Enable Personal IRIS 4D/20 and 4D/25 support:
- Adapt int(4) to handle the INT1 chip
- Move generic rtc clocks out of hpc/ and into dev/
- Handle the very strangely wired eeprom and other bits in arcemu
- Sprinkle MACH_SGI_IP6 as necessary
- Enable IP6/IP10 devices in GENERIC32_IP12. Yes, the naming is poor but
there's no winning with kernel/hw compatibility on sgimips...

Tested on my 4D/25. Doesn't (appear to) break macallan@'s IP22.
 1.12 27-Aug-2006  bjh21 branches: 1.12.60; 1.12.68; 1.12.70; 1.12.74; 1.12.78;
Remove obsolete "sbic" define.
 1.11 26-Aug-2006  bjh21 Move the sgimips "sbic" driver from arch/sgimips/hpc/sbic.c to
dev/ic/wd33c93.c. This may not be the best WD33C93 driver we've
got, but it's the most recently worked on and probably the most
portable, so it seems like a good basis for further work (and in
particular an acorn26 driver for the Acorn SCSI card). There's
no functional change in this commit, and sgimips kernels still
compile.
 1.10 28-Dec-2005  kurahone branches: 1.10.4; 1.10.8;
Added support for the IP22 IOC's parallel port (PI1).

Code contributed by Joe Britt.

Reviewed by <sekiya> and <kurahone>.
 1.9 11-Dec-2005  christos merge ktrace-lwp.
 1.8 22-Nov-2003  sekiya branches: 1.8.16;
Add dpclock driver (and minimal hpc1 goo) for ip20.
 1.7 17-Oct-2003  sekiya Compile dsclock_hpc.c only if dsclock is present in config file.
 1.6 27-Sep-2003  he Allow kernels without the haltwo driver configured to build, i.e.
make the driver optional by adding the haltwo attribute.
 1.5 25-Sep-2003  lonewolf Support for HAL2 audio controller attached to the HPC ASIC, found on SGI Indy.

The driver is not too heavily tested and only supports audio playback and
master volume setting currently.
 1.4 13-Mar-2002  simonb branches: 1.4.12;
Replace lots of 8x<space> with <tabs> and other miscellaneous indentation
fixes.
Wrap a couple of long lines.
Use <return-type>\n<function name> as per KNF in a few places.
 1.3 25-Nov-2001  soren Adjust for dsclock name change.
 1.2 19-Aug-2001  wdk branches: 1.2.6;
Initial implementation of WD33C9x SCSI driver for SGI IP22 platforms.

Based on mvme68k and Atari drivers for the same chipset with the
addition of bus_space support. Attempts have been made to seperate out the
machine dependent dma components and more work is required in this area.

Tested on SGI R4K Indy, but has little testing on other platforms.
 1.1 11-May-2001  thorpej branches: 1.1.2;
Autoconfiguration glue for HPC devices.

From Rafal K. Boni.
 1.1.2.3 16-Mar-2002  jdolecek Catch up with -current.
 1.1.2.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.1.2.1 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.2.6.3 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.2.6.2 08-Jan-2002  nathanw Catch up to -current.
 1.2.6.1 19-Aug-2001  nathanw file files.hpc was added on branch nathanw_sa on 2002-01-08 00:27:27 +0000
 1.4.12.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.12.2 18-Sep-2004  skrll Sync with HEAD.
 1.4.12.1 03-Aug-2004  skrll Sync with HEAD
 1.8.16.2 30-Dec-2006  yamt sync with head.
 1.8.16.1 21-Jun-2006  yamt sync with head.
 1.10.8.1 03-Sep-2006  yamt sync with head.
 1.10.4.1 09-Sep-2006  rpaulo sync with head
 1.12.78.1 29-Dec-2010  matt Merge changes from netbsd-5.
 1.12.74.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.12.70.1 26-Sep-2009  snj Pull up following revision(s) (requested by macallan in ticket #976):
sys/arch/sgimips/hpc/files.hpc: revision 1.14
sys/arch/sgimips/hpc/hpc.c: revision 1.62
sys/arch/sgimips/hpc/panel.c: revision 1.1
add a driver for the Indy's front panel buttons.
- power button presses are reported to sysmon
- volume control buttons are reported to PMF
TODO: add better key repeat code. The hardware keeps firing interrupts
at us whenever a button is down and not on - say - status change. If we
don't clear the interrupt we'll be fired on until someone clears it. We
should probably disable the entire interrupt and occasionally poll for
button release.
 1.12.68.1 03-Mar-2009  skrll Sync with HEAD.
 1.12.60.2 16-May-2009  yamt sync with head
 1.12.60.1 04-May-2009  yamt sync with head.
 1.14.62.1 16-Apr-2018  pgoyette Sync with HEAD, resolve some conflicts
 1.16.4.1 05-May-2019  isaki Remove obsoleted au{,rate,vol}conv and mulaw attributes.
audio provides the equivalent of them inseparably.
 1.16.2.1 10-Jun-2019  christos Sync with HEAD
 1.26 25-May-2019  isaki Make it compilable even with debug option.
 1.25 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.24 16-Mar-2019  isaki branches: 1.24.2;
Use C99 style struct initializer to audio_hw_if.
 1.23 01-Jun-2017  chs branches: 1.23.10;
remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.
 1.22 24-Nov-2011  mrg branches: 1.22.8; 1.22.26;
put back IPL_AUDIO and splaudio(), at the request of rmind. they are
aliases and now we can easily revert audio to IPL_VM if necessary,
without having to revert the whole branch.
 1.21 23-Nov-2011  jmcneill Merge jmcneill-audiomp3 branch, which is derived from ad-audiomp2. From
the original ad-audiomp branch notes:

Add MP locking to the audio drivers.

Making the audio drivers MP safe is necessary before efforts
can be made to make the VM system MP safe.

The are two locks per device instance, an ISR lock and
a character device lock. The ISR lock replaces calls to
splaudio()/splx(), and will be held across calls to device
methods which were called at splaudio() before (e.g.
trigger_output). The character device lock is held across
calls to nearly all of the methods, excluding some only
used for initialization, e.g. get_locks.

Welcome to 5.99.57.
 1.20 01-Jul-2011  dyoung branches: 1.20.2; 1.20.4;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.19 25-Jan-2011  tsutsui Split device_t/softc. Tested on Indy.
 1.18 25-Jan-2011  tsutsui u_intNN_t -> uintNN_t
 1.17 24-Sep-2009  tsutsui branches: 1.17.4; 1.17.6; 1.17.8;
Replace shutdownhook_establish(9) (which was added by me)
with pmf_device_register1(9).
 1.16 14-May-2009  macallan set delta value for the mixer's master channel
 1.15 24-Aug-2008  tsutsui branches: 1.15.4; 1.15.12;
Pacify haltwo audio on shutdown hook to avoid noise on poweroff.
 1.14 17-Oct-2007  garbled branches: 1.14.16; 1.14.20; 1.14.22; 1.14.26;
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.13 23-Jul-2007  he branches: 1.13.6;
After move to 64-bit paddr_t, cast via vaddr_t before casting to void*.
OK'ed by macallan@.
 1.12 04-Mar-2007  christos branches: 1.12.2; 1.12.10; 1.12.12; 1.12.14;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.11 29-Dec-2006  rumble branches: 1.11.2;
IP12 (and perhaps other systems) appear to be buggy and incapable of
reliably supporting badaddr(). False negatives appear to occur
approximately 1.8 percent of the time, although neither false positives
nor consecutive false negatives occur. We take advantage of the latter
property and always use a wrapper that makes multiple checks.

My IP12 no longer sees occasional ghost devices and related panics during
boot.
 1.10 04-Sep-2006  rumble branches: 1.10.2;
Check the haltwo hardware present bit in the match function, rather than
in the attach function after we've thwacked several registers and
potentially wedged the machine. This fixes booting on Challenge S systems
and addresses PR 25202.

Consequently, re-enable haltwo in the default kernel configuration.

Many thanks to George Harvey for testing and feedback.
 1.9 11-Dec-2005  christos branches: 1.9.4; 1.9.8; 1.9.18;
merge ktrace-lwp.
 1.8 28-Feb-2005  sekiya branches: 1.8.2; 1.8.4;
Attempt to verify presence of haltwo hardware, rather than just blithely
believing that all hpc3 have a haltwo. This should help Challenge-S owners.
 1.7 15-Jan-2005  kent branches: 1.7.2; 1.7.4;
ansify and KNF
 1.6 10-Jan-2005  kent merge kent-audio1 branch, which introduces audio filter pipeline to the MI
audio framework


Summary of changes:

* struct audio_params
- remove sw_code, factor, factor_denom, hw_sample_rate,
hw_encoding ,hw_precision, and hw_channels. Conversion information
is conveyed by stream_filter_list_t.
- change the type of sample_rate: u_long -> u_int
- add `validbits,' which represents the valid data size in
precision bits. It is required in order to distinguish 24/32bit
from 24/24bit or 32/32bit.

* audio_hw_if
- add two parameters to set_params()
stream_filter_list_t *pfil, stream_filter_list *rfil
A HW driver should set filter recipes for requested formats
- constify audio_params parameters of trigger_output() and
trigger_input(). They represent audio formats for the hardware.
- make open() and close() optional
- add int (AUMODE_PLAY or AUMODE_RECORD) and audio_params_t parameters
to round_blocksize()

* sw_code is replaced with stream_filter_t.
stream_filer_t converts audio data in an input buffer and writes
into another output buffer unlike sw_code, which converts data in
single buffer.
converters in dev/auconv.c, dev/mulaw.c, dev/aurateconv.c,
dev/tc/bba.c, dev/ic/msm6258.c, and arch/arm/iomd/vidcaudio.c are
reimplemented as stream_filter_t

* MI audio
- audiosetinfo() builds filter pipelines from stream_filter_list_t
filled by audio_hw_if::set_params()
- audiosetinfo() returns with EINVAL if mmapped and set_params()
requests filters
- audio_write(), audio_pint(), and audio_rint() invoke a filter
pipeline.
- ioctl() for FIONREAD, AUDIO_WSEEK, AUDIO_GETIOFFS,
AUDIO_GETOOFFS, and audio_prinfo::{seek,samples} for
AUDIO_GETINFO handle values for a buffer nearest to userland.

* add `struct device *' parameter to ac97_attach()

* all of audio HW drivers follow audio_hw_if and ac97 changes
 1.5 30-Dec-2004  rumble Prepend HPC3 macros universally with "HPC3_" to distinctly recognise
the corresponding revision and maintain consistency with HPC1.

No functional change intended.
 1.4 29-Oct-2004  yamt branches: 1.4.2;
constify audio_hw_if, midi_hw_if, and radio_hw_if.
 1.3 29-Dec-2003  sekiya branches: 1.3.4;
Fixes to HPC abstraction layer from Steve Rumble:

- hpc1_hdd_{ctl,bufptr} and hpc3_hdd_{ctl,bufptr} are
established in hpcreg.h. All references to these fields
are updated with the exception of if_sq: (haltwo,
hpcdma). This makes reading the code and spotting bugs
easier.
- hpcdma.c was applying EOCHAIN to the wrong descriptor
word for the hpc1 case.
- I added scsi_max_xfer to the abstraction layer, and it
allows some crusty #defines in wdsc.c to be removed.
hpc1 now doesn't waste descriptors as it once did.
- hpcreg.h was updated to reflect the lack of XMITDONE
bit in hpc1. HPC1_REV15 added for a test in hpc.c
- hpc.c now verifies HPC1 revisions (1.0 vs 1.5) and
prints the output a little prettier ;)
- power interrupts shouldn't establish on non-IP22
platforms.
 1.2 04-Oct-2003  tsutsui TAB/space cleanup.
 1.1 25-Sep-2003  lonewolf Support for HAL2 audio controller attached to the HPC ASIC, found on SGI Indy.

The driver is not too heavily tested and only supports audio playback and
master volume setting currently.
 1.3.4.7 04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.3.4.6 17-Jan-2005  skrll Sync with HEAD.
 1.3.4.5 02-Nov-2004  skrll Sync with HEAD.
 1.3.4.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.3.4.3 18-Sep-2004  skrll Sync with HEAD.
 1.3.4.2 03-Aug-2004  skrll Sync with HEAD
 1.3.4.1 29-Dec-2003  skrll file haltwo.c was added on branch ktrace-lwp on 2004-08-03 10:40:06 +0000
 1.4.2.2 09-Jan-2005  kent audio_hw_if change
* make open() and close() optional
* add int (AUMODE_PLAY or AUMODE_RECORD) and audio_params_t parameters
to round_blocksize()
 1.4.2.1 03-Jan-2005  kent adopt the filter pipeline framework
 1.7.4.1 19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.7.2.1 29-Apr-2005  kent sync with -current
 1.8.4.2 03-Sep-2007  yamt sync with head.
 1.8.4.1 30-Dec-2006  yamt sync with head.
 1.8.2.1 16-Sep-2006  ghen Pull up following revision(s) (requested by rumble in ticket #1497):
sys/arch/sgimips/hpc/haltwo.c: revision 1.10
Check the haltwo hardware present bit in the match function, rather than
in the attach function after we've thwacked several registers and
potentially wedged the machine. This fixes booting on Challenge S systems
and addresses PR 25202.
Many thanks to George Harvey for testing and feedback.
 1.9.18.1 08-Sep-2006  riz Pull up following revision(s) (requested by rumble in ticket #120):
sys/arch/sgimips/conf/GENERIC32_IP2x: revision 1.58 via patch
sys/arch/sgimips/hpc/haltwo.c: revision 1.10
Check the haltwo hardware present bit in the match function, rather than
in the attach function after we've thwacked several registers and
potentially wedged the machine. This fixes booting on Challenge S systems
and addresses PR 25202.
Consequently, re-enable haltwo in the default kernel configuration.
Many thanks to George Harvey for testing and feedback.
 1.9.8.1 14-Sep-2006  yamt sync with head.
 1.9.4.1 09-Sep-2006  rpaulo sync with head
 1.10.2.1 12-Jan-2007  ad Sync with head.
 1.11.2.1 12-Mar-2007  rmind Sync with HEAD.
 1.12.14.1 15-Aug-2007  skrll Sync with HEAD.
 1.12.12.1 07-Aug-2007  matt Sync with HEAD.
 1.12.10.1 03-Oct-2007  garbled Sync with HEAD
 1.12.2.1 20-Aug-2007  ad Sync with HEAD.
 1.13.6.1 06-Nov-2007  matt sync with HEAD
 1.14.26.1 19-Oct-2008  haad Sync with HEAD.
 1.14.22.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.14.20.3 11-Mar-2010  yamt sync with head
 1.14.20.2 16-May-2009  yamt sync with head
 1.14.20.1 04-May-2009  yamt sync with head.
 1.14.16.1 28-Sep-2008  mjf Sync with HEAD.
 1.15.12.1 29-Dec-2010  matt Merge changes from netbsd-5.
 1.15.4.1 26-Sep-2009  snj Pull up following revision(s) (requested by macallan in ticket #964):
sys/arch/sgimips/hpc/haltwo.c: revision 1.16
set delta value for the mixer's master channel
 1.17.8.1 08-Feb-2011  bouyer Sync with HEAD
 1.17.6.1 06-Jun-2011  jruoho Sync with HEAD.
 1.17.4.1 05-Mar-2011  rmind sync with head
 1.20.4.2 22-Nov-2011  jmcneill get rid of unused 'powerstate' callback in audio_hw_if
 1.20.4.1 20-Nov-2011  jmcneill adapt to audiomp api changes
 1.20.2.1 17-Apr-2012  yamt sync with head
 1.22.26.1 28-Aug-2017  skrll Sync with HEAD
 1.22.8.1 03-Dec-2017  jdolecek update from HEAD
 1.23.10.1 10-Jun-2019  christos Sync with HEAD
 1.24.2.3 04-May-2019  isaki Move dev/audio_if.h -> dev/audio/audio_if.h
 1.24.2.2 28-Apr-2019  isaki Correct debug message in previous commit.
 1.24.2.1 21-Apr-2019  isaki Adapt to audio2.
- The driver doesn't seem to support recording.
 1.2 11-Dec-2005  christos merge ktrace-lwp.
 1.1 25-Sep-2003  lonewolf branches: 1.1.4;
Support for HAL2 audio controller attached to the HPC ASIC, found on SGI Indy.

The driver is not too heavily tested and only supports audio playback and
master volume setting currently.
 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 25-Sep-2003  skrll file haltworeg.h was added on branch ktrace-lwp on 2004-08-03 10:40:06 +0000
 1.8 23-Nov-2011  jmcneill Merge jmcneill-audiomp3 branch, which is derived from ad-audiomp2. From
the original ad-audiomp branch notes:

Add MP locking to the audio drivers.

Making the audio drivers MP safe is necessary before efforts
can be made to make the VM system MP safe.

The are two locks per device instance, an ISR lock and
a character device lock. The ISR lock replaces calls to
splaudio()/splx(), and will be held across calls to device
methods which were called at splaudio() before (e.g.
trigger_output). The character device lock is held across
calls to nearly all of the methods, excluding some only
used for initialization, e.g. get_locks.

Welcome to 5.99.57.
 1.7 25-Jan-2011  tsutsui branches: 1.7.4; 1.7.6;
Split device_t/softc. Tested on Indy.
 1.6 24-Sep-2009  tsutsui branches: 1.6.4; 1.6.6; 1.6.8;
Replace shutdownhook_establish(9) (which was added by me)
with pmf_device_register1(9).
 1.5 24-Aug-2008  tsutsui Pacify haltwo audio on shutdown hook to avoid noise on poweroff.
 1.4 04-Mar-2007  christos branches: 1.4.40; 1.4.44; 1.4.46; 1.4.50;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.3 11-Dec-2005  christos branches: 1.3.26;
merge ktrace-lwp.
 1.2 15-Jan-2005  kent branches: 1.2.10;
ansify and KNF
 1.1 25-Sep-2003  lonewolf branches: 1.1.4;
Support for HAL2 audio controller attached to the HPC ASIC, found on SGI Indy.

The driver is not too heavily tested and only supports audio playback and
master volume setting currently.
 1.1.4.5 17-Jan-2005  skrll Sync with HEAD.
 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 25-Sep-2003  skrll file haltwovar.h was added on branch ktrace-lwp on 2004-08-03 10:40:06 +0000
 1.2.10.1 03-Sep-2007  yamt sync with head.
 1.3.26.1 12-Mar-2007  rmind Sync with HEAD.
 1.4.50.1 19-Oct-2008  haad Sync with HEAD.
 1.4.46.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.4.44.2 11-Mar-2010  yamt sync with head
 1.4.44.1 04-May-2009  yamt sync with head.
 1.4.40.1 28-Sep-2008  mjf Sync with HEAD.
 1.6.8.1 08-Feb-2011  bouyer Sync with HEAD
 1.6.6.1 06-Jun-2011  jruoho Sync with HEAD.
 1.6.4.1 05-Mar-2011  rmind sync with head
 1.7.6.1 20-Nov-2011  jmcneill adapt to audiomp api changes
 1.7.4.1 17-Apr-2012  yamt sync with head
 1.73 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.72 24-Apr-2021  thorpej branches: 1.72.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.71 15-Sep-2018  macallan branches: 1.71.14;
remove long unused power button handler
 1.70 15-Sep-2018  macallan one more s/panel/button, now this actually works again.
 1.69 24-Jul-2016  macallan branches: 1.69.14; 1.69.16;
use bus_space_map()
 1.68 18-Feb-2015  macallan branches: 1.68.2;
switch sgimips to common bus_dma and bus_space in arch/mips/
Tested on O2 and Indy.
Things that are compile-tested only for lack of hardware:
- GIO ethernet cards with PCI bridges
- IP2x hardware not found on Indy
- IP1x
 1.67 27-Oct-2012  chs branches: 1.67.14;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.66 01-Jul-2011  dyoung branches: 1.66.2; 1.66.12;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.65 25-Jan-2011  tsutsui Split device_t/softc. Tested on Indy.
 1.64 25-Jan-2011  tsutsui u_intNN_t -> uintNN_t
 1.63 14-Dec-2009  matt branches: 1.63.4; 1.63.6; 1.63.8;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.62 14-May-2009  macallan add a driver for the Indy's front panel buttons.
- power button presses are reported to sysmon
- volume control buttons are reported to PMF
TODO: add better key repeat code. The hardware keeps firing interrupts at us
whenever a button is down and not on - say - status change. If we don't clear
the interrupt we'll be fired on until someone clears it. We should probably
disable the entire interrupt and occasionally poll for button release.
 1.61 12-Feb-2009  rumble Enable Personal IRIS 4D/20 and 4D/25 support:
- Adapt int(4) to handle the INT1 chip
- Move generic rtc clocks out of hpc/ and into dev/
- Handle the very strangely wired eeprom and other bits in arcemu
- Sprinkle MACH_SGI_IP6 as necessary
- Enable IP6/IP10 devices in GENERIC32_IP12. Yes, the naming is poor but
there's no winning with kernel/hw compatibility on sgimips...

Tested on my 4D/25. Doesn't (appear to) break macallan@'s IP22.
 1.60 17-Oct-2007  garbled branches: 1.60.20; 1.60.28; 1.60.30; 1.60.34; 1.60.38;
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.59 23-Jul-2007  he branches: 1.59.6;
After move to 64-bit paddr_t, cast via vaddr_t before casting to void*.
OK'ed by macallan@.
 1.58 09-Jul-2007  ad branches: 1.58.2; 1.58.4;
Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.57 22-Feb-2007  rumble branches: 1.57.4; 1.57.6; 1.57.12;
Make this compile again.
 1.56 21-Feb-2007  rumble Disable handling of the power interrupt. We aren't handling it properly and
hitting any of the buttons results in infinite such interrupts.
 1.55 20-Feb-2007  rumble Add a reasonably disgusting hack to not complain about a non-configured
"sq" or "wdsc" device in the GIO32 SCSI and E++ adapter cases,
respectively.

This file is getting nasty, but we've just about covered all the bases now.
 1.54 20-Feb-2007  rumble Add wdsc devices for the GIO32 SCSI adapter.
 1.53 20-Feb-2007  rumble Only read the eeprom once per hpc.
 1.52 19-Feb-2007  rumble Support the sq(4) interface on the Challenge S's IOPLUS mezzanine. This
requires us to configure the IOPLUS to use the appropriate DMA channel,
depending on what other expansion cards may be installed. Further, we need
to do a bit more configuration of the sq(4) DMA engine, which apparently
was formerly being configured properly by the PROM. Use the same values,
which appear to work fine.

Also, extend the gio_arb_config interface as needed.

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

My IP12 no longer sees occasional ghost devices and related panics during
boot.
 1.49 22-Dec-2006  rumble Prefix 'dma_data{in,out}_cmd' with 'scsi_', since that's what they're used
for. Also, remove the 'clk_freq' variable, since this value differs on a
per-platform (IP12 is 20MHz, others are 10MHz) basis.

NB: I have no idea what frequency the GIO SCSI cards use. We'll have to
re-investigate this if we ever come across one.
 1.48 22-Dec-2006  rumble Remove errnoneous register definitions and rename some to be more specific.
Also, remove unused/invalid fields in our hpc revision abstraction and
be sure to zero entries when they do not apply to a specific revision.
 1.47 22-Dec-2006  rumble Use SGIMIPS_BUS_SPACE_HPC, rather than hard-coding it.
 1.46 22-Dec-2006  rumble Determine if we've an onboard HPC. If not, we must set up the bus arbiter
appropriately. We may need to do further work to get the IOPLUS mezzanine
devices working as well.
 1.45 22-Dec-2006  rumble Break our list of HPC devices into HPC1 and HPC3 variants. This cleans up
the list a bit and avoids Challenge S from using the HPC1 offets for its
HPC3-based secondary ethernet on the IOPLUS mezzanine board.
 1.44 22-Dec-2006  rumble Indigo and Indigo2 machines have only one shared interrupt for the two
GIO slots. This differs from Indy, which has an interrupt per slot, neither
of which is the same as on the other two machines.

This lets my Phobos G160 run in both slots in my Indigo2 and my E++ adapter
works in both slots in my Indigo.
 1.43 22-Dec-2006  rumble EEPROM and LED controls occupy the same byte. Unify them again.
 1.42 22-Dec-2006  rumble Provide attaching hpc devices with the eeprom contents, should a chip be
connected to the HPC. The only real reason for doing this is to get the
mac addresses off of E++ ethernet boards and the Challenge S IOPLUS board.
If no eeprom is present, we read in invalid data and take some default
action (query ARCBIOS).
 1.41 22-Dec-2006  rumble Sprinkle static.
 1.40 22-Dec-2006  rumble Rework detecting the HPC revision. In most cases we can presume what it is
based on mach_type (or at least know the major revision). The only case we
really need to concern ourselves with is differentiating between HPC1
and HPC3 on IP22. Specifically, between a HPC3 on the Challenge S IOPLUS
board and a HPC1.5-based adapter in an Indy.
 1.39 22-Dec-2006  rumble Fix previous by including the necessary header.
 1.38 22-Dec-2006  rumble Remove superfluous extern declarations; they're already in the headers.
 1.37 01-Sep-2006  sekiya branches: 1.37.2;
Add missing equal sign.
 1.36 29-Mar-2006  thorpej Use device_cfdata().
 1.35 28-Dec-2005  kurahone branches: 1.35.4; 1.35.6; 1.35.8; 1.35.10; 1.35.12;
Added support for the IP22 IOC's parallel port (PI1).

Code contributed by Joe Britt.

Reviewed by <sekiya> and <kurahone>.
 1.34 11-Dec-2005  christos merge ktrace-lwp.
 1.33 26-Aug-2005  drochner s/locdesc_t/int/g
 1.32 28-Jun-2005  drochner branches: 1.32.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.31 30-Dec-2004  rumble Prepend HPC3 macros universally with "HPC3_" to distinctly recognise
the corresponding revision and maintain consistency with HPC1.

No functional change intended.
 1.30 30-Dec-2004  rumble Remove a few HPC1 register definitions for ones that don't exist.

Also, HPC1_ENET_INTDELAYVAL isn't a magic number. It turns the
interrupt delay off (by being the timer trigger bit), so name it
more appropriately.
 1.29 17-Aug-2004  rumble Add some infrastructure to support HPC-based ethernet adapters
(E++):
o The static configuration table now identifies by HPC offset.
o Added sq(4) entries for IP12, IP20, and IP24.
o Accomodated HPC revision forcing based on kernel config flags.
 1.28 11-Apr-2004  pooka Make das blinkenlights, well, blink on IP12 also.
 1.27 10-Apr-2004  pooka * The HPC endianness register isn't mapped on my IP12, so don't try to
unconditionally read it
* IP12 glue from Steve Rumble
 1.26 28-Feb-2004  sekiya branches: 1.26.2;
Blinkenlitzen for IP20 (Indigo).
 1.25 02-Jan-2004  sekiya IP20 has two z8530 chips -- one at 0xd00 for keyboard/mouse, one at 0xd10
for serial ports. Attach the former as zs1 to keep serial console goo as
simple as possible.
 1.24 30-Dec-2003  sekiya Force little-endian mode on hpc1, and attach zs on IP20.
 1.23 29-Dec-2003  sekiya Fixes to HPC abstraction layer from Steve Rumble:

- hpc1_hdd_{ctl,bufptr} and hpc3_hdd_{ctl,bufptr} are
established in hpcreg.h. All references to these fields
are updated with the exception of if_sq: (haltwo,
hpcdma). This makes reading the code and spotting bugs
easier.
- hpcdma.c was applying EOCHAIN to the wrong descriptor
word for the hpc1 case.
- I added scsi_max_xfer to the abstraction layer, and it
allows some crusty #defines in wdsc.c to be removed.
hpc1 now doesn't waste descriptors as it once did.
- hpcreg.h was updated to reflect the lack of XMITDONE
bit in hpc1. HPC1_REV15 added for a test in hpc.c
- hpc.c now verifies HPC1 revisions (1.0 vs 1.5) and
prints the output a little prettier ;)
- power interrupts shouldn't establish on non-IP22
platforms.
 1.22 16-Dec-2003  sekiya Introduce abstraction layer for HPC registers and values, which addresses the
divergence between HPC revision 1.5 and revision 3.

The wdsc driver has been updated to reflect this layer (and may now work on
IP20). The sq driver needs a bit more work before it can be committed.
 1.21 16-Dec-2003  sekiya A slighly more descriptive iocreg.h now lives in ../ioc.
 1.20 14-Dec-2003  sekiya Allow hpc to attach on IP20.
 1.19 04-Dec-2003  lonewolf Replace some magic numbers by symbolic constants.
 1.18 22-Nov-2003  sekiya Add dpclock driver (and minimal hpc1 goo) for ip20.
 1.17 20-Nov-2003  sekiya Add pckbc to device list.
 1.16 17-Nov-2003  keihan www.netbsd.org -> www.NetBSD.org
 1.15 26-Sep-2003  lonewolf Attach haltwo on Indigo2 machines also, it reportedly works on them.
 1.14 25-Sep-2003  lonewolf Support for HAL2 audio controller attached to the HPC ASIC, found on SGI Indy.

The driver is not too heavily tested and only supports audio playback and
master volume setting currently.
 1.13 15-Jul-2003  lukem __KERNEL_RCSID()
 1.12 09-Nov-2002  thorpej branches: 1.12.6;
Fix signed/unsigned comparison warnings.
 1.11 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.10 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.9 27-Sep-2002  provos remove trailing \n in panic(). approved perry.
 1.8 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.7 13-Mar-2002  simonb Replace lots of 8x<space> with <tabs> and other miscellaneous indentation
fixes.
Wrap a couple of long lines.
Use <return-type>\n<function name> as per KNF in a few places.
 1.6 25-Jan-2002  rafal Less odious hack for powerfail interrupt; even thought it's still odious,
at least now we only attempt to install the handler once.
 1.5 20-Nov-2001  rafal Stylistic fix to last.
 1.4 20-Nov-2001  rafal Fix up Jason's last cleanup (thanks for that, btw!!)... Don't attach
hpc child devices that don't match our systype. Attempting to attach
a wdsc1 on my Challenge S locks the box hard.
 1.3 18-Nov-2001  thorpej * Clean up HPC autoconfiguration a little. Pass device register and
DMA register offsets, as well as IRQ, to children. Use direct
config. Use machine type/subtype to determine which devices are
present.
* Add support for the second SCSI controller on the Indigo2.
 1.2 19-Aug-2001  wdk branches: 1.2.6;
Initial implementation of WD33C9x SCSI driver for SGI IP22 platforms.

Based on mvme68k and Atari drivers for the same chipset with the
addition of bus_space support. Attempts have been made to seperate out the
machine dependent dma components and more work is required in this area.

Tested on SGI R4K Indy, but has little testing on other platforms.
 1.1 11-May-2001  thorpej branches: 1.1.2;
Support for the HPC I/O peripheral ASIC. There is where SCSI, Ethernet,
etc. live on the Indigo2 and Indy.

From Rafal K. Boni.
 1.1.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.1.2.4 16-Mar-2002  jdolecek Catch up with -current.
 1.1.2.3 11-Feb-2002  jdolecek Sync w/ -current.
 1.1.2.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.1.2.1 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.2.6.6 11-Nov-2002  nathanw Catch up to -current
 1.2.6.5 18-Oct-2002  nathanw Catch up to -current.
 1.2.6.4 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.2.6.3 28-Feb-2002  nathanw Catch up to -current.
 1.2.6.2 08-Jan-2002  nathanw Catch up to -current.
 1.2.6.1 19-Aug-2001  nathanw file hpc.c was added on branch nathanw_sa on 2002-01-08 00:27:27 +0000
 1.12.6.6 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.12.6.5 17-Jan-2005  skrll Sync with HEAD.
 1.12.6.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.12.6.3 18-Sep-2004  skrll Sync with HEAD.
 1.12.6.2 25-Aug-2004  skrll Sync with HEAD.
 1.12.6.1 03-Aug-2004  skrll Sync with HEAD
 1.26.2.2 23-Jul-2004  tron Pull up revision 1.28 (requested by rumble in ticket #682):
Make das blinkenlights, well, blink on IP12 also.
 1.26.2.1 23-Jul-2004  tron Pull up revision 1.27 (requested by rumble in ticket #682):
* The HPC endianness register isn't mapped on my IP12, so don't try to
unconditionally read it
* IP12 glue from Steve Rumble
 1.32.2.4 03-Sep-2007  yamt sync with head.
 1.32.2.3 26-Feb-2007  yamt sync with head.
 1.32.2.2 30-Dec-2006  yamt sync with head.
 1.32.2.1 21-Jun-2006  yamt sync with head.
 1.35.12.1 31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.35.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.35.8.2 03-Sep-2006  yamt sync with head.
 1.35.8.1 01-Apr-2006  yamt sync with head.
 1.35.6.1 22-Apr-2006  simonb Sync with head.
 1.35.4.1 09-Sep-2006  rpaulo sync with head
 1.37.2.1 12-Jan-2007  ad Sync with head.
 1.51.2.1 27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.57.12.1 03-Oct-2007  garbled Sync with HEAD
 1.57.6.1 11-Jul-2007  mjf Sync with head.
 1.57.4.2 20-Aug-2007  ad Sync with HEAD.
 1.57.4.1 15-Jul-2007  ad Sync with head.
 1.58.4.1 15-Aug-2007  skrll Sync with HEAD.
 1.58.2.1 07-Aug-2007  matt Sync with HEAD.
 1.59.6.1 06-Nov-2007  matt sync with HEAD
 1.60.38.2 29-Dec-2010  matt Merge changes from netbsd-5.
 1.60.38.1 26-Aug-2009  matt Fixup (all but mipsco) to deal the new realities in mipsland.
 1.60.34.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.60.30.1 26-Sep-2009  snj Pull up following revision(s) (requested by macallan in ticket #976):
sys/arch/sgimips/hpc/files.hpc: revision 1.14
sys/arch/sgimips/hpc/hpc.c: revision 1.62
sys/arch/sgimips/hpc/panel.c: revision 1.1
add a driver for the Indy's front panel buttons.
- power button presses are reported to sysmon
- volume control buttons are reported to PMF
TODO: add better key repeat code. The hardware keeps firing interrupts
at us whenever a button is down and not on - say - status change. If we
don't clear the interrupt we'll be fired on until someone clears it. We
should probably disable the entire interrupt and occasionally poll for
button release.
 1.60.28.1 03-Mar-2009  skrll Sync with HEAD.
 1.60.20.3 11-Mar-2010  yamt sync with head
 1.60.20.2 16-May-2009  yamt sync with head
 1.60.20.1 04-May-2009  yamt sync with head.
 1.63.8.1 08-Feb-2011  bouyer Sync with HEAD
 1.63.6.1 06-Jun-2011  jruoho Sync with HEAD.
 1.63.4.1 05-Mar-2011  rmind sync with head
 1.66.12.2 03-Dec-2017  jdolecek update from HEAD
 1.66.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.66.2.1 30-Oct-2012  yamt sync with head
 1.67.14.2 05-Oct-2016  skrll Sync with HEAD
 1.67.14.1 06-Apr-2015  skrll Sync with HEAD
 1.68.2.1 26-Jul-2016  pgoyette Sync with HEAD
 1.69.16.1 10-Jun-2019  christos Sync with HEAD
 1.69.14.1 30-Sep-2018  pgoyette Ssync with HEAD
 1.71.14.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.71.14.1 22-Mar-2021  thorpej Mechanical conversion of config_found_sm_loc() -> config_found().
CFARG_IATTR usage needs to be audited.
 1.72.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.22 13-Dec-2023  andvar Add (intptr_t) casts to fix "cast to pointer from integer of different size",
mainly for GENERIC64_32_* configs.
Also change segp->ds_len format specifier to %lld, which fixes DMA_DEBUG build.
 1.21 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.20 25-Jan-2011  tsutsui Some KNF and cosmetics.
 1.19 25-Jan-2011  tsutsui u_intNN_t -> uintNN_t
 1.18 25-Jan-2011  tsutsui Small bus_dma(9) tweaks:
- call bus_dmamap_create(9) after bus_dmamem_alloc(9) and bus_dmamem_map(9)
return successfully
- no need to use PAGE_SIZE for size of descriptor dmamap
- use bus_addr_t to store DMA address
- BUS_DMASYNC_PREWRITE is enough for host-to-device only descriptors

Tested on R5000 Indy.
 1.17 14-Dec-2009  matt branches: 1.17.4; 1.17.6; 1.17.8;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.16 10-May-2008  martin branches: 1.16.16;
Backout previous: the license sweep touched these files in error, so
restore the old license.
 1.15 28-Apr-2008  martin branches: 1.15.2;
Remove clause 3 and 4 from TNF licenses
 1.14 17-Oct-2007  garbled branches: 1.14.20;
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.13 23-Jul-2007  he branches: 1.13.6;
After move to 64-bit paddr_t, cast via vaddr_t before casting to void*.
OK'ed by macallan@.
 1.12 04-Mar-2007  christos branches: 1.12.2; 1.12.10; 1.12.12; 1.12.14;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.11 11-Dec-2005  christos branches: 1.11.26;
merge ktrace-lwp.
 1.10 30-Dec-2004  rumble branches: 1.10.10;
Prepend HPC3 macros universally with "HPC3_" to distinctly recognise
the corresponding revision and maintain consistency with HPC1.

No functional change intended.
 1.9 29-Dec-2003  sekiya Fixes to HPC abstraction layer from Steve Rumble:

- hpc1_hdd_{ctl,bufptr} and hpc3_hdd_{ctl,bufptr} are
established in hpcreg.h. All references to these fields
are updated with the exception of if_sq: (haltwo,
hpcdma). This makes reading the code and spotting bugs
easier.
- hpcdma.c was applying EOCHAIN to the wrong descriptor
word for the hpc1 case.
- I added scsi_max_xfer to the abstraction layer, and it
allows some crusty #defines in wdsc.c to be removed.
hpc1 now doesn't waste descriptors as it once did.
- hpcreg.h was updated to reflect the lack of XMITDONE
bit in hpc1. HPC1_REV15 added for a test in hpc.c
- hpc.c now verifies HPC1 revisions (1.0 vs 1.5) and
prints the output a little prettier ;)
- power interrupts shouldn't establish on non-IP22
platforms.
 1.8 16-Dec-2003  sekiya Introduce abstraction layer for HPC registers and values, which addresses the
divergence between HPC revision 1.5 and revision 3.

The wdsc driver has been updated to reflect this layer (and may now work on
IP20). The sq driver needs a bit more work before it can be committed.
 1.7 15-Jul-2003  lukem __KERNEL_RCSID()
 1.6 02-Apr-2003  thorpej branches: 1.6.2;
Use PAGE_SIZE rather than NBPG.
 1.5 09-Nov-2002  thorpej Avoid a strict-aliasing warning from GCC 3.3.
 1.4 13-Mar-2002  simonb Replace lots of 8x<space> with <tabs> and other miscellaneous indentation
fixes.
Wrap a couple of long lines.
Use <return-type>\n<function name> as per KNF in a few places.
 1.3 18-Nov-2001  thorpej * Clean up HPC autoconfiguration a little. Pass device register and
DMA register offsets, as well as IRQ, to children. Use direct
config. Use machine type/subtype to determine which devices are
present.
* Add support for the second SCSI controller on the Indigo2.
 1.2 18-Nov-2001  thorpej * Add a callback to the front-end for the 33c93 driver to reset
the controller/SCSI bus.
* Implement controller/SCSI bus reset on SGI HPC3 SCSI using the
"channel reset" bit in the SCSI DMA channel control register.
 1.1 19-Aug-2001  wdk branches: 1.1.2; 1.1.8;
Initial implementation of WD33C9x SCSI driver for SGI IP22 platforms.

Based on mvme68k and Atari drivers for the same chipset with the
addition of bus_space support. Attempts have been made to seperate out the
machine dependent dma components and more work is required in this area.

Tested on SGI R4K Indy, but has little testing on other platforms.
 1.1.8.4 11-Nov-2002  nathanw Catch up to -current
 1.1.8.3 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.1.8.2 08-Jan-2002  nathanw Catch up to -current.
 1.1.8.1 19-Aug-2001  nathanw file hpcdma.c was added on branch nathanw_sa on 2002-01-08 00:27:27 +0000
 1.1.2.4 16-Mar-2002  jdolecek Catch up with -current.
 1.1.2.3 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.1.2.2 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.1.2.1 19-Aug-2001  thorpej file hpcdma.c was added on branch kqueue on 2001-08-25 06:15:49 +0000
 1.6.2.4 17-Jan-2005  skrll 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.10.10.1 03-Sep-2007  yamt sync with head.
 1.11.26.1 12-Mar-2007  rmind Sync with HEAD.
 1.12.14.1 15-Aug-2007  skrll Sync with HEAD.
 1.12.12.1 07-Aug-2007  matt Sync with HEAD.
 1.12.10.1 03-Oct-2007  garbled Sync with HEAD
 1.12.2.1 20-Aug-2007  ad Sync with HEAD.
 1.13.6.1 06-Nov-2007  matt sync with HEAD
 1.14.20.1 11-Mar-2010  yamt sync with head
 1.15.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.16.16.1 10-Sep-2009  matt Add preliminary LP64 support for sgimips
 1.17.8.1 08-Feb-2011  bouyer Sync with HEAD
 1.17.6.1 06-Jun-2011  jruoho Sync with HEAD.
 1.17.4.1 05-Mar-2011  rmind sync with head
 1.12 27-Dec-2019  msaitoh s/transfered/transferred/
 1.11 01-Jul-2011  dyoung branches: 1.11.54;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.10 25-Jan-2011  tsutsui u_intNN_t -> uintNN_t
 1.9 25-Jan-2011  tsutsui Small bus_dma(9) tweaks:
- call bus_dmamap_create(9) after bus_dmamem_alloc(9) and bus_dmamem_map(9)
return successfully
- no need to use PAGE_SIZE for size of descriptor dmamap
- use bus_addr_t to store DMA address
- BUS_DMASYNC_PREWRITE is enough for host-to-device only descriptors

Tested on R5000 Indy.
 1.8 10-May-2008  martin branches: 1.8.20; 1.8.26; 1.8.28;
Backout previous: the license sweep touched these files in error, so
restore the old license.
 1.7 28-Apr-2008  martin branches: 1.7.2;
Remove clause 3 and 4 from TNF licenses
 1.6 11-Dec-2005  christos merge ktrace-lwp.
 1.5 16-Dec-2003  sekiya Introduce abstraction layer for HPC registers and values, which addresses the
divergence between HPC revision 1.5 and revision 3.

The wdsc driver has been updated to reflect this layer (and may now work on
IP20). The sq driver needs a bit more work before it can be committed.
 1.4 13-Mar-2002  simonb branches: 1.4.12;
Replace lots of 8x<space> with <tabs> and other miscellaneous indentation
fixes.
Wrap a couple of long lines.
Use <return-type>\n<function name> as per KNF in a few places.
 1.3 18-Nov-2001  thorpej * Add a callback to the front-end for the 33c93 driver to reset
the controller/SCSI bus.
* Implement controller/SCSI bus reset on SGI HPC3 SCSI using the
"channel reset" bit in the SCSI DMA channel control register.
 1.2 10-Nov-2001  wdk branches: 1.2.2;
Complete overhaul of WD33c93 SCSI driver

- Full support for SCSI-2 Tagged commands (enabled by default)
- Implement save and restore datapointer messages
- Formalize interface between MI and MD drivers.
- decouple interface between MD driver and DMA routines
- Use scsipi layer where appropriate (Tags, Sync Negotiations etc)
- control blocks stored using kernel pool(9) functions
- evcnt(9) compliant counters
- Enable advanced features on later WD33c93 chips.
(Identify message out phase is hardware assisted)
- Improved timeout support (one per active control block)
- Improved MESG_IN and MESG_OUT handling
- Start to tidy up debugging output
- Numerous bug fixes and cleanups throughout

Changes are based largely on the NCR53c9x MI driver for ideas on
how to DTRT.
 1.1 19-Aug-2001  wdk branches: 1.1.2; 1.1.6;
Initial implementation of WD33C9x SCSI driver for SGI IP22 platforms.

Based on mvme68k and Atari drivers for the same chipset with the
addition of bus_space support. Attempts have been made to seperate out the
machine dependent dma components and more work is required in this area.

Tested on SGI R4K Indy, but has little testing on other platforms.
 1.1.6.1 12-Nov-2001  thorpej Sync the thorpej-mips-cache branch with -current.
 1.1.2.4 16-Mar-2002  jdolecek Catch up with -current.
 1.1.2.3 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.1.2.2 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.1.2.1 19-Aug-2001  thorpej file hpcdma.h was added on branch kqueue on 2001-08-25 06:15:49 +0000
 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 10-Nov-2001  nathanw file hpcdma.h was added on branch nathanw_sa on 2002-01-08 00:27:28 +0000
 1.4.12.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.12.2 18-Sep-2004  skrll Sync with HEAD.
 1.4.12.1 03-Aug-2004  skrll Sync with HEAD
 1.7.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.8.28.1 08-Feb-2011  bouyer Sync with HEAD
 1.8.26.1 06-Jun-2011  jruoho Sync with HEAD.
 1.8.20.1 05-Mar-2011  rmind sync with head
 1.11.54.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.21 23-Feb-2025  andvar s/configururation/configuration/ in comments.
 1.20 25-Jan-2011  tsutsui branches: 1.20.92;
u_intNN_t -> uintNN_t
 1.19 19-Feb-2007  rumble branches: 1.19.68; 1.19.74; 1.19.76;
Support the sq(4) interface on the Challenge S's IOPLUS mezzanine. This
requires us to configure the IOPLUS to use the appropriate DMA channel,
depending on what other expansion cards may be installed. Further, we need
to do a bit more configuration of the sq(4) DMA engine, which apparently
was formerly being configured properly by the PROM. Use the same values,
which appear to work fine.

Also, extend the gio_arb_config interface as needed.

NB: We're currently setting the IOPLUS board to long burst, but it may be
better to use realtime. This will require some experimentation.
 1.18 22-Dec-2006  rumble branches: 1.18.2;
Remove errnoneous register definitions and rename some to be more specific.
Also, remove unused/invalid fields in our hpc revision abstraction and
be sure to zero entries when they do not apply to a specific revision.
 1.17 22-Dec-2006  rumble EEPROM and LED controls occupy the same byte. Unify them again.
 1.16 22-Dec-2006  rumble Provide attaching hpc devices with the eeprom contents, should a chip be
connected to the HPC. The only real reason for doing this is to get the
mac addresses off of E++ ethernet boards and the Challenge S IOPLUS board.
If no eeprom is present, we read in invalid data and take some default
action (query ARCBIOS).
 1.15 22-Dec-2006  rumble Rework detecting the HPC revision. In most cases we can presume what it is
based on mach_type (or at least know the major revision). The only case we
really need to concern ourselves with is differentiating between HPC1
and HPC3 on IP22. Specifically, between a HPC3 on the Challenge S IOPLUS
board and a HPC1.5-based adapter in an Indy.
 1.14 11-Dec-2005  christos branches: 1.14.20;
merge ktrace-lwp.
 1.13 30-Dec-2004  rumble branches: 1.13.10;
Prepend HPC3 macros universally with "HPC3_" to distinctly recognise
the corresponding revision and maintain consistency with HPC1.

No functional change intended.
 1.12 30-Dec-2004  rumble Remove a few HPC1 register definitions for ones that don't exist.

Also, HPC1_ENET_INTDELAYVAL isn't a magic number. It turns the
interrupt delay off (by being the timer trigger bit), so name it
more appropriately.
 1.11 17-Aug-2004  rumble Add defines for the four possible HPC GIO bus addresses.
 1.10 29-Dec-2003  sekiya Fixes to HPC abstraction layer from Steve Rumble:

- hpc1_hdd_{ctl,bufptr} and hpc3_hdd_{ctl,bufptr} are
established in hpcreg.h. All references to these fields
are updated with the exception of if_sq: (haltwo,
hpcdma). This makes reading the code and spotting bugs
easier.
- hpcdma.c was applying EOCHAIN to the wrong descriptor
word for the hpc1 case.
- I added scsi_max_xfer to the abstraction layer, and it
allows some crusty #defines in wdsc.c to be removed.
hpc1 now doesn't waste descriptors as it once did.
- hpcreg.h was updated to reflect the lack of XMITDONE
bit in hpc1. HPC1_REV15 added for a test in hpc.c
- hpc.c now verifies HPC1 revisions (1.0 vs 1.5) and
prints the output a little prettier ;)
- power interrupts shouldn't establish on non-IP22
platforms.
 1.9 16-Dec-2003  sekiya Introduce abstraction layer for HPC registers and values, which addresses the
divergence between HPC revision 1.5 and revision 3.

The wdsc driver has been updated to reflect this layer (and may now work on
IP20). The sq driver needs a bit more work before it can be committed.
 1.8 22-Nov-2003  sekiya Add dpclock driver (and minimal hpc1 goo) for ip20.
 1.7 18-Sep-2003  lonewolf Fix mistake in previous.
 1.6 18-Sep-2003  lonewolf Correct offsets for HPC_PBUS_CHx_{BP,DP} and add HPC_PBUS_DMACTL_* definitions.
 1.5 13-Mar-2002  simonb branches: 1.5.12;
Replace lots of 8x<space> with <tabs> and other miscellaneous indentation
fixes.
Wrap a couple of long lines.
Use <return-type>\n<function name> as per KNF in a few places.
 1.4 18-Nov-2001  thorpej * Clean up HPC autoconfiguration a little. Pass device register and
DMA register offsets, as well as IRQ, to children. Use direct
config. Use machine type/subtype to determine which devices are
present.
* Add support for the second SCSI controller on the Indigo2.
 1.3 19-Aug-2001  wdk branches: 1.3.6;
Initial implementation of WD33C9x SCSI driver for SGI IP22 platforms.

Based on mvme68k and Atari drivers for the same chipset with the
addition of bus_space support. Attempts have been made to seperate out the
machine dependent dma components and more work is required in this area.

Tested on SGI R4K Indy, but has little testing on other platforms.
 1.2 07-Jun-2001  rafal branches: 1.2.2;
Add a bunch of defines for bits withing the ethernet-related registers so
the Seeq driver can use them instead of hardcoded constants.
 1.1 11-May-2001  thorpej Support for the HPC I/O peripheral ASIC. There is where SCSI, Ethernet,
etc. live on the Indigo2 and Indy.

From Rafal K. Boni.
 1.2.2.3 16-Mar-2002  jdolecek Catch up with -current.
 1.2.2.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.2.2.1 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.3.6.3 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.3.6.2 08-Jan-2002  nathanw Catch up to -current.
 1.3.6.1 19-Aug-2001  nathanw file hpcreg.h was added on branch nathanw_sa on 2002-01-08 00:27:28 +0000
 1.5.12.5 17-Jan-2005  skrll Sync with HEAD.
 1.5.12.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.5.12.3 18-Sep-2004  skrll Sync with HEAD.
 1.5.12.2 25-Aug-2004  skrll Sync with HEAD.
 1.5.12.1 03-Aug-2004  skrll Sync with HEAD
 1.13.10.2 26-Feb-2007  yamt sync with head.
 1.13.10.1 30-Dec-2006  yamt sync with head.
 1.14.20.1 12-Jan-2007  ad Sync with head.
 1.18.2.1 27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.19.76.1 08-Feb-2011  bouyer Sync with HEAD
 1.19.74.1 06-Jun-2011  jruoho Sync with HEAD.
 1.19.68.1 05-Mar-2011  rmind sync with head
 1.20.92.1 02-Aug-2025  perseant Sync with HEAD
 1.12 25-Jan-2011  tsutsui u_intNN_t -> uintNN_t
 1.11 22-Dec-2006  rumble branches: 1.11.70; 1.11.76; 1.11.78;
Prefix 'dma_data{in,out}_cmd' with 'scsi_', since that's what they're used
for. Also, remove the 'clk_freq' variable, since this value differs on a
per-platform (IP12 is 20MHz, others are 10MHz) basis.

NB: I have no idea what frequency the GIO SCSI cards use. We'll have to
re-investigate this if we ever come across one.
 1.10 22-Dec-2006  rumble Remove errnoneous register definitions and rename some to be more specific.
Also, remove unused/invalid fields in our hpc revision abstraction and
be sure to zero entries when they do not apply to a specific revision.
 1.9 22-Dec-2006  rumble Provide attaching hpc devices with the eeprom contents, should a chip be
connected to the HPC. The only real reason for doing this is to get the
mac addresses off of E++ ethernet boards and the Challenge S IOPLUS board.
If no eeprom is present, we read in invalid data and take some default
action (query ARCBIOS).
 1.8 11-Dec-2005  christos branches: 1.8.20;
merge ktrace-lwp.
 1.7 29-Dec-2003  sekiya branches: 1.7.16;
Fixes to HPC abstraction layer from Steve Rumble:

- hpc1_hdd_{ctl,bufptr} and hpc3_hdd_{ctl,bufptr} are
established in hpcreg.h. All references to these fields
are updated with the exception of if_sq: (haltwo,
hpcdma). This makes reading the code and spotting bugs
easier.
- hpcdma.c was applying EOCHAIN to the wrong descriptor
word for the hpc1 case.
- I added scsi_max_xfer to the abstraction layer, and it
allows some crusty #defines in wdsc.c to be removed.
hpc1 now doesn't waste descriptors as it once did.
- hpcreg.h was updated to reflect the lack of XMITDONE
bit in hpc1. HPC1_REV15 added for a test in hpc.c
- hpc.c now verifies HPC1 revisions (1.0 vs 1.5) and
prints the output a little prettier ;)
- power interrupts shouldn't establish on non-IP22
platforms.
 1.6 16-Dec-2003  sekiya Introduce abstraction layer for HPC registers and values, which addresses the
divergence between HPC revision 1.5 and revision 3.

The wdsc driver has been updated to reflect this layer (and may now work on
IP20). The sq driver needs a bit more work before it can be committed.
 1.5 22-Nov-2003  sekiya Add dpclock driver (and minimal hpc1 goo) for ip20.
 1.4 13-Mar-2002  simonb branches: 1.4.12;
Replace lots of 8x<space> with <tabs> and other miscellaneous indentation
fixes.
Wrap a couple of long lines.
Use <return-type>\n<function name> as per KNF in a few places.
 1.3 18-Nov-2001  thorpej * Clean up HPC autoconfiguration a little. Pass device register and
DMA register offsets, as well as IRQ, to children. Use direct
config. Use machine type/subtype to determine which devices are
present.
* Add support for the second SCSI controller on the Indigo2.
 1.2 19-Aug-2001  wdk branches: 1.2.6;
Initial implementation of WD33C9x SCSI driver for SGI IP22 platforms.

Based on mvme68k and Atari drivers for the same chipset with the
addition of bus_space support. Attempts have been made to seperate out the
machine dependent dma components and more work is required in this area.

Tested on SGI R4K Indy, but has little testing on other platforms.
 1.1 11-May-2001  thorpej branches: 1.1.2;
Support for the HPC I/O peripheral ASIC. There is where SCSI, Ethernet,
etc. live on the Indigo2 and Indy.

From Rafal K. Boni.
 1.1.2.3 16-Mar-2002  jdolecek Catch up with -current.
 1.1.2.2 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.1.2.1 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.2.6.3 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.2.6.2 08-Jan-2002  nathanw Catch up to -current.
 1.2.6.1 19-Aug-2001  nathanw file hpcvar.h was added on branch nathanw_sa on 2002-01-08 00:27:28 +0000
 1.4.12.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.12.2 18-Sep-2004  skrll Sync with HEAD.
 1.4.12.1 03-Aug-2004  skrll Sync with HEAD
 1.7.16.1 30-Dec-2006  yamt sync with head.
 1.8.20.1 12-Jan-2007  ad Sync with head.
 1.11.78.1 08-Feb-2011  bouyer Sync with HEAD
 1.11.76.1 06-Jun-2011  jruoho Sync with HEAD.
 1.11.70.1 05-Mar-2011  rmind sync with head
 1.60 05-Jul-2024  rin sys: Drop redundant NULL check before m_freem(9)

m_freem(9) safely has accepted NULL argument at least since 4.2BSD:
https://www.tuhs.org/cgi-bin/utree.pl?file=4.2BSD/usr/src/sys/sys/uipc_mbuf.c

Compile-tested on amd64/ALL.

Suggested by knakahara@
 1.59 29-Jun-2024  riastradh branches: 1.59.2;
if_stats(9): Add ifp argument to if_stat..._ref.

This will enable us to pass the ifp through to a dtrace probe inside.

No functional change intended in this change, but this is an API
change visible to modules so it shouldn't be pulled up.

PR kern/58377
 1.58 10-Feb-2024  andvar s/alloted/allotted/ in comments.
 1.57 20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h>.
 1.56 05-Dec-2023  andvar add explicit braces around SQ_DPRINTF() to fix dangling else compiler error.

fixes build with SQ_DEBUG option enabled for sgimips.
 1.55 18-Sep-2022  thorpej Eliminate use of IFF_OACTIVE.
 1.54 30-Jan-2020  martin Fix typo
 1.53 29-Jan-2020  thorpej Adopt <net/if_stats.h>.
 1.52 23-May-2019  msaitoh branches: 1.52.4;
Whitespace fix (mainly tabify).
 1.51 23-May-2019  msaitoh -No functional change:
- KNF
- u_int*_t -> uint*_t.
 1.50 05-Feb-2019  msaitoh Remove very old IFF_NOTRAILERS flag.
 1.49 26-Jun-2018  msaitoh branches: 1.49.2;
Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward
compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same
as FreeBSD.

This change also fixes a bug that the direction is misunderstand on some
environment by passing the direction to bpf_mtap*() instead of checking
m->m_pkthdr.rcvif.
 1.48 15-Dec-2016  ozaki-r branches: 1.48.14;
Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input

The benefits of the change are:
- We can reduce codes
- We can provide the same behavior between drivers
- Where/When if_ipackets is counted up
- Note that some drivers still update packet statistics in their own
way (periodical update)
- Moved bpf_mtap run in softint
- This makes it easy to MP-ify bpf

Proposed on tech-kern and tech-net
 1.47 08-Dec-2016  ozaki-r Apply deferred if_start framework

if_schedule_deferred_start checks if the if_snd queue contains packets,
so drivers don't need to check it by themselves.
 1.46 10-Jun-2016  ozaki-r branches: 1.46.2;
Introduce m_set_rcvif and m_reset_rcvif

The API is used to set (or reset) a received interface of a mbuf.
They are counterpart of m_get_rcvif, which will come in another
commit, hide internal of rcvif operation, and reduce the diff of
the upcoming change.

No functional change.
 1.45 09-Feb-2016  ozaki-r Introduce softint-based if_input

This change intends to run the whole network stack in softint context
(or normal LWP), not hardware interrupt context. Note that the work is
still incomplete by this change; to that end, we also have to softint-ify
if_link_state_change (and bpf) which can still run in hardware interrupt.

This change softint-ifies at ifp->if_input that is called from
each device driver (and ieee80211_input) to ensure Layer 2 runs
in softint (e.g., ether_input and bridge_input). To this end,
we provide a framework (called percpuq) that utlizes softint(9)
and percpu ifqueues. With this patch, rxintr of most drivers just
queues received packets and schedules a softint, and the softint
dequeues packets and does rest packet processing.

To minimize changes to each driver, percpuq is allocated in struct
ifnet for now and that is initialized by default (in if_attach).
We probably have to move percpuq to softc of each driver, but it's
future work. At this point, only wm(4) has percpuq in its softc
as a reference implementation.

Additional information including performance numbers can be found
in the thread at tech-kern@ and tech-net@:
http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html

Acknowledgment: riastradh@ greatly helped this work.
Thank you very much!
 1.44 18-Feb-2015  macallan switch sgimips to common bus_dma and bus_space in arch/mips/
Tested on O2 and Indy.
Things that are compile-tested only for lack of hardware:
- GIO ethernet cards with PCI bridges
- IP2x hardware not found on Indy
- IP1x
 1.43 02-Feb-2012  tls branches: 1.43.6; 1.43.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.42 01-Jul-2011  dyoung branches: 1.42.2; 1.42.6;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.41 20-Feb-2011  matt Merge forward matt-nb5-mips64
Adapt to new interrupt/spl framework
Deal with arcbios calls being O32 and kernels being N32/N64.
Need to save/restore T8 across arcbios calls.
 1.40 25-Jan-2011  tsutsui KNF and misc cosmetics.
 1.39 25-Jan-2011  tsutsui Split device_t/softc. Tested on Indy.
 1.38 25-Jan-2011  tsutsui u_intNN_t -> uintNN_t
 1.37 10-Jan-2011  tsutsui branches: 1.37.2; 1.37.4;
Use ether_aton_r() in sys/net/if_ethersubr.c instead of home grown copies.
Hint from ryo@. Tested on IP32 mec(4).
 1.36 05-Apr-2010  joerg Push the bpf_ops usage back into bpf.h. Push the common ifp->if_bpf
check into the inline functions as well the fourth argument for
bpf_attach.
 1.35 19-Jan-2010  pooka branches: 1.35.2; 1.35.4;
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.34 14-Dec-2009  matt Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.33 04-Mar-2007  christos branches: 1.33.44; 1.33.62;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.32 20-Feb-2007  rumble Add a real probe so that we don't attach sq(4) on GIO32 SCSI adapters.
 1.31 19-Feb-2007  rumble Support the sq(4) interface on the Challenge S's IOPLUS mezzanine. This
requires us to configure the IOPLUS to use the appropriate DMA channel,
depending on what other expansion cards may be installed. Further, we need
to do a bit more configuration of the sq(4) DMA engine, which apparently
was formerly being configured properly by the PROM. Use the same values,
which appear to work fine.

Also, extend the gio_arb_config interface as needed.

NB: We're currently setting the IOPLUS board to long burst, but it may be
better to use realtime. This will require some experimentation.
 1.30 22-Dec-2006  rumble branches: 1.30.2;
Provide attaching hpc devices with the eeprom contents, should a chip be
connected to the HPC. The only real reason for doing this is to get the
mac addresses off of E++ ethernet boards and the Challenge S IOPLUS board.
If no eeprom is present, we read in invalid data and take some default
action (query ARCBIOS).
 1.29 11-Dec-2005  christos branches: 1.29.20;
merge ktrace-lwp.
 1.28 03-Jun-2005  martin branches: 1.28.2;
Constify
 1.27 31-Dec-2004  rumble Do not report unexpected interrupts when not debugging. These
seem to occur fairly often under normal operation with HPC1.5.
Also, do not return if the interrupt is unexpected, but see if
there is anything to handle regardless, which appears to always
be the case with HPC1.5.
 1.26 30-Dec-2004  rumble Prepend HPC3 macros universally with "HPC3_" to distinctly recognise
the corresponding revision and maintain consistency with HPC1.

No functional change intended.
 1.25 30-Dec-2004  rumble Remove a few HPC1 register definitions for ones that don't exist.

Also, HPC1_ENET_INTDELAYVAL isn't a magic number. It turns the
interrupt delay off (by being the timer trigger bit), so name it
more appropriately.
 1.24 30-Dec-2004  rumble Wrap seeq and hpc register reads and writes in macros for
readability. While here, engage in some KNF and 80-column policing.
No functional changes intended.
 1.23 29-Dec-2004  rumble Fix the HPC1 transmit logic, which was previously very broken.

HPC1 does not mark transmitted descriptors like HPC3. We must
query the HPC1 chip to determine what it expects the next
descriptor to be, reclaim used ones, and restart if necessary. Each
revision's corresponding logic now lives in its own
sq_txring_hpc{1,3} function.

HPC1's transmit interrupt conditions also differ from HPC3, so
remove the INTR bits from descriptors when tagging new packets on
to the end of the chain in order to avoid unwanted interrupts.

Also, be extra careful when restarting the transmit ring. Since
transmit interrupts seem to be relatively slow on HPC1, sq_start
may be called while the DMA engine is quiescent, and before a
transmit interrupt is asserted. We cannot behave like HPC3, which
begins transmission from the first packet pulled from IFQ if the
DMA engine is quiescent as this would skip enqueued packets. It
appears that sq_start is never called before HPC3 asserts an
interrupt, which restarts the transmit queue at the appropriate
place. However, this often happens with HPC1 and we cannot assume
that if DMA is inactive in sq_start, then all previously queued
packets have fled the coop.
XXX Is there a similar race possible with HPC3?

HPC3 logic should remain functionally unchanged, and HPC1 should
finally work properly.
 1.22 29-Dec-2004  rumble Remove the static sq_trace array and make it per-device as
multiple seeq interfaces may exist. While here, add a few trace
actions, move the related macros into sqvar.h, and enhance the
sq_trace_dump output a bit.
 1.21 30-Oct-2004  thorpej When adding/deleting multicast addresses, only whack the address
filter if the interface is marked RUNNING.

Fixes kern/27678.
 1.20 30-Dec-2003  sekiya branches: 1.20.2; 1.20.4;
Adapt if_sq to HPC abstraction layer. It took both Steve Rumble and myself
to untangle the unhappiness that arises from the design differences between
HPC1 and HPC3.
 1.19 30-Oct-2003  matt Fix another lasttx uninitialized variable
 1.18 04-Oct-2003  tsutsui TAB/space cleanup.
 1.17 15-Jul-2003  lukem __KERNEL_RCSID()
 1.16 13-Jan-2003  bouyer branches: 1.16.2;
When padding frames smaller than ethernet minimum size, make sure we supply
a buffer long enouth, with the padding bytes initialised.
Also pad to ETHER_MIN_LEN - ETHER_CRC_LEN, not ETHER_MIN_LEN (padded frames
were 4 bytes too long).
 1.15 09-Nov-2002  thorpej Fix signed/unsigned comparison warnings.
 1.14 02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.13 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.12 27-Sep-2002  thorpej Rather than referencing the cfdriver directly in the cfdata entries,
instead use a string naming the driver. The cfdriver is then looked
up in a list which is built at run-time.
 1.11 02-May-2002  rafal branches: 1.11.4;
Add interrupt counter for Seeq interrupts; also, make sure to reset back to
"recieve only my frames & broadcasts" and clear the ALLMULTI flag if we have
no multicast addresses in our list.
 1.10 13-Mar-2002  simonb Replace lots of 8x<space> with <tabs> and other miscellaneous indentation
fixes.
Wrap a couple of long lines.
Use <return-type>\n<function name> as per KNF in a few places.
 1.9 20-Nov-2001  rafal Post Jason's autoconfig cleanup, the DMA tags are actually passed in from
the parent, so we don't need to look at the innards of bus_dma anymore.
Also, remove the Todo item pertaining to autoconfig cleanup from the list
in the comments.
 1.8 18-Nov-2001  thorpej * Clean up HPC autoconfiguration a little. Pass device register and
DMA register offsets, as well as IRQ, to children. Use direct
config. Use machine type/subtype to determine which devices are
present.
* Add support for the second SCSI controller on the Indigo2.
 1.7 08-Jul-2001  thorpej branches: 1.7.2; 1.7.8;
bcopy -> memcpy, bzero -> memset
 1.6 08-Jul-2001  thorpej - If the multicast address list changes, make sure to kick the chip.
- Remove unnecessary includes.
- Slight cosmetic change in sq_start().
 1.5 08-Jul-2001  thorpej Use sys/dev/arcbios.
 1.4 08-Jun-2001  thorpej Make sure to always re-sync the rx buffer dmamap if recycling the
rx buffer.
 1.3 07-Jun-2001  thorpej - Differentiate beteen the 8003 and 80c03 (the 80c03 has some additional
features).
- Implement crude multicast support -- enable reception of all multicast
frames if we have any addresses on the multicast list. TODO: use the
64-bit hash table on the 80c03.
- Implement promiscuous mode.

IPv6 doesn't quite work yet -- DAD finds a duplicate for the
link-local. The 8003 hears its own transmissions, but IFF_SIMPLEX
is not set, so I'm a little confused.
 1.2 07-Jun-2001  rafal Fix a deadlock in the tx code -- the code checked the DMA status before
sync'ing the descriptor, leading to a race where the packet could complete
after the DMA check but before the sync of the descriptor, sending the code
into unknown territory and the DMA engine into space. Also, fix a bug with
spurious watchdog resets going off due to the if_timer not always being set
on transmit.

Finally, clean up use of hardcoded magic numbers, get them from hpcreg.h
when possible.
 1.1 11-May-2001  thorpej Support for the Seeq 8003 Ethernet attached to the HPC ASIC,
found on Indigo2 and Indy.

From Rafal K. Boni.
 1.7.8.7 15-Jan-2003  thorpej Sync with HEAD.
 1.7.8.6 11-Nov-2002  nathanw Catch up to -current
 1.7.8.5 18-Oct-2002  nathanw Catch up to -current.
 1.7.8.4 20-Jun-2002  nathanw Catch up to -current.
 1.7.8.3 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.7.8.2 08-Jan-2002  nathanw Catch up to -current.
 1.7.8.1 08-Jul-2001  nathanw file if_sq.c was added on branch nathanw_sa on 2002-01-08 00:27:28 +0000
 1.7.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.7.2.3 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.7.2.2 16-Mar-2002  jdolecek Catch up with -current.
 1.7.2.1 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.11.4.1 27-Jan-2003  jmc Pullup revisions 1.15-1.16 via hand patch (requested by bouyer in ticket #1097)
When padding frames smaller than ethernet minimum size, make sure
we supply a buffer long enouth, with the padding bytes initialised.
Also pad to ETHER_MIN_LEN - ETHER_CRC_LEN, not ETHER_MIN_LEN
(padded frames were 4 bytes too long).
 1.16.2.6 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.16.2.5 17-Jan-2005  skrll Sync with HEAD.
 1.16.2.4 02-Nov-2004  skrll Sync with HEAD.
 1.16.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.16.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.16.2.1 03-Aug-2004  skrll Sync with HEAD
 1.20.4.2 06-Apr-2005  he Pull up revisions 1.22-1.23 (requested by rumble in ticket #1054):
Fix the HPC1 transmit logic, which was previously very broken.
 1.20.4.1 24-Jan-2005  he Pull up revision 1.21 (requested by thorpej in ticket #939):
When adding or deleting multicast addresses, only change
the address filter if the interface is marked RUNNING.
Fixes PR#27678.
 1.20.2.2 06-Apr-2005  he Pull up revisions 1.22-1.23 (requested by rumble in ticket #1054):
Fix the HPC1 transmit logic, which was previously very broken.
 1.20.2.1 06-Apr-2005  he Pull up revision 1.21 (requested by thorpej in ticket #939):
When adding or deleting multicast addresses, only change
the address filter if the interface is marked RUNNING.
Fixes PR#27678.
Dragged along for the benefit of ticket #1054 which will be committed shortly.
 1.28.2.3 03-Sep-2007  yamt sync with head.
 1.28.2.2 26-Feb-2007  yamt sync with head.
 1.28.2.1 30-Dec-2006  yamt sync with head.
 1.29.20.1 12-Jan-2007  ad Sync with head.
 1.30.2.2 12-Mar-2007  rmind Sync with HEAD.
 1.30.2.1 27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.33.62.2 12-Sep-2009  matt Don't cast a paddr if you don't have to.
 1.33.62.1 10-Sep-2009  matt Add preliminary LP64 support for sgimips
 1.33.44.2 11-Aug-2010  yamt sync with head.
 1.33.44.1 11-Mar-2010  yamt sync with head
 1.35.4.2 05-Mar-2011  rmind sync with head
 1.35.4.1 30-May-2010  rmind sync with head
 1.35.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.37.4.2 05-Mar-2011  bouyer Sync with HEAD
 1.37.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.37.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.42.6.1 18-Feb-2012  mrg merge to -current.
 1.42.2.1 17-Apr-2012  yamt sync with head
 1.43.24.4 05-Feb-2017  skrll Sync with HEAD
 1.43.24.3 09-Jul-2016  skrll Sync with HEAD
 1.43.24.2 19-Mar-2016  skrll Sync with HEAD
 1.43.24.1 06-Apr-2015  skrll Sync with HEAD
 1.43.6.1 03-Dec-2017  jdolecek update from HEAD
 1.46.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.48.14.1 28-Jul-2018  pgoyette Sync with HEAD
 1.49.2.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.49.2.1 10-Jun-2019  christos Sync with HEAD
 1.52.4.1 29-Feb-2020  ad Sync with head.
 1.59.2.1 02-Aug-2025  perseant Sync with HEAD
 1.3 16-Dec-2003  sekiya A slighly more descriptive iocreg.h now lives in ../ioc.
 1.2 13-Mar-2002  simonb branches: 1.2.12;
Replace lots of 8x<space> with <tabs> and other miscellaneous indentation
fixes.
Wrap a couple of long lines.
Use <return-type>\n<function name> as per KNF in a few places.
 1.1 11-May-2001  thorpej branches: 1.1.2; 1.1.8;
IOC1/2 memory map.

From Rafal K. Boni.
 1.1.8.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.1.8.1 11-May-2001  nathanw file iocreg.h was added on branch nathanw_sa on 2002-04-01 07:42:23 +0000
 1.1.2.1 16-Mar-2002  jdolecek Catch up with -current.
 1.2.12.1 03-Aug-2004  skrll Sync with HEAD
 1.4 09-Apr-2018  christos rename panel to button.
 1.3 18-Feb-2015  macallan branches: 1.3.16;
switch sgimips to common bus_dma and bus_space in arch/mips/
Tested on O2 and Indy.
Things that are compile-tested only for lack of hardware:
- GIO ethernet cards with PCI bridges
- IP2x hardware not found on Indy
- IP1x
 1.2 16-Feb-2011  jmcneill branches: 1.2.14; 1.2.32;
validate cf_name in driver match method
 1.1 14-May-2009  macallan branches: 1.1.2; 1.1.4; 1.1.8; 1.1.10; 1.1.12; 1.1.14;
add a driver for the Indy's front panel buttons.
- power button presses are reported to sysmon
- volume control buttons are reported to PMF
TODO: add better key repeat code. The hardware keeps firing interrupts at us
whenever a button is down and not on - say - status change. If we don't clear
the interrupt we'll be fired on until someone clears it. We should probably
disable the entire interrupt and occasionally poll for button release.
 1.1.14.1 17-Feb-2011  bouyer Sync with HEAD
 1.1.12.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.10.2 29-Dec-2010  matt Merge changes from netbsd-5.
 1.1.10.1 14-May-2009  matt file panel.c was added on branch matt-nb5-mips64 on 2010-12-29 07:19:28 +0000
 1.1.8.1 05-Mar-2011  rmind sync with head
 1.1.4.2 26-Sep-2009  snj Pull up following revision(s) (requested by macallan in ticket #976):
sys/arch/sgimips/hpc/files.hpc: revision 1.14
sys/arch/sgimips/hpc/hpc.c: revision 1.62
sys/arch/sgimips/hpc/panel.c: revision 1.1
add a driver for the Indy's front panel buttons.
- power button presses are reported to sysmon
- volume control buttons are reported to PMF
TODO: add better key repeat code. The hardware keeps firing interrupts
at us whenever a button is down and not on - say - status change. If we
don't clear the interrupt we'll be fired on until someone clears it. We
should probably disable the entire interrupt and occasionally poll for
button release.
 1.1.4.1 14-May-2009  snj file panel.c was added on branch netbsd-5 on 2009-09-26 18:03:06 +0000
 1.1.2.2 16-May-2009  yamt sync with head
 1.1.2.1 14-May-2009  yamt file panel.c was added on branch yamt-nfs-mp on 2009-05-16 10:41:16 +0000
 1.2.32.1 06-Apr-2015  skrll Sync with HEAD
 1.2.14.1 03-Dec-2017  jdolecek update from HEAD
 1.3.16.1 16-Apr-2018  pgoyette Sync with HEAD, resolve some conflicts
 1.11 21-Nov-2020  thorpej malloc(9) -> kmem(9)
 1.10 18-Feb-2015  macallan branches: 1.10.30;
switch sgimips to common bus_dma and bus_space in arch/mips/
Tested on O2 and Indy.
Things that are compile-tested only for lack of hardware:
- GIO ethernet cards with PCI bridges
- IP2x hardware not found on Indy
- IP1x
 1.9 15-Mar-2008  cube branches: 1.9.48; 1.9.68;
Split device_t and softc for pckbc(4) and its attachments.
 1.8 05-Jan-2008  ad branches: 1.8.2; 1.8.6;
Fix includes.
 1.7 17-Oct-2007  garbled branches: 1.7.2; 1.7.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.6 09-Jul-2007  ad branches: 1.6.10;
Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.5 11-Dec-2005  christos branches: 1.5.30; 1.5.32; 1.5.38;
merge ktrace-lwp.
 1.4 19-Feb-2004  bjh21 branches: 1.4.4; 1.4.18;
Remove pckbc_machdep_cnattach() -- it's no longer needed.
 1.3 10-Dec-2003  lonewolf Make this compile and apparently work (it generates interrupts properly, at
least).
XXX The is_console test is horribly ugly but necessary for the pckbc_cnattach
XXX coming soon.
 1.2 04-Dec-2003  keihan netbsd.org -> NetBSD.org

All "netbsd.org" is now gone from src/sys/arch.
 1.1 20-Nov-2003  sekiya Add driver for pckbc at hpc. There's an interrupt issue that still needs
to be resolved.
 1.4.18.3 17-Mar-2008  yamt sync with head.
 1.4.18.2 21-Jan-2008  yamt sync with head
 1.4.18.1 03-Sep-2007  yamt sync with head.
 1.4.4.4 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.4.3 18-Sep-2004  skrll Sync with HEAD.
 1.4.4.2 03-Aug-2004  skrll Sync with HEAD
 1.4.4.1 19-Feb-2004  skrll file pckbc_hpc.c was added on branch ktrace-lwp on 2004-08-03 10:40:07 +0000
 1.5.38.1 03-Oct-2007  garbled Sync with HEAD
 1.5.32.1 11-Jul-2007  mjf Sync with head.
 1.5.30.1 15-Jul-2007  ad Sync with head.
 1.6.10.3 23-Mar-2008  matt sync with HEAD
 1.6.10.2 09-Jan-2008  matt sync with HEAD
 1.6.10.1 06-Nov-2007  matt sync with HEAD
 1.7.8.1 08-Jan-2008  bouyer Sync with HEAD
 1.7.2.1 18-Feb-2008  mjf Sync with HEAD.
 1.8.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.8.2.1 24-Mar-2008  keiichi sync with head.
 1.9.68.1 06-Apr-2015  skrll Sync with HEAD
 1.9.48.1 03-Dec-2017  jdolecek update from HEAD
 1.10.30.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.17 01-Nov-2022  andvar s/varaible/variable/ and s/varible/variable/ in comments.
 1.16 03-Dec-2021  andvar fix various typos in comments, log messages and documentation.
 1.15 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.14 24-Apr-2021  thorpej branches: 1.14.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.13 27-Dec-2019  msaitoh branches: 1.13.10;
s/transfered/transferred/
 1.12 13-Jul-2014  dholland branches: 1.12.28;
"peripheral", not "peripherial".
 1.11 01-Jul-2011  dyoung branches: 1.11.12; 1.11.26;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.10 09-Jun-2011  rmind Convert simple_lock/ltsleep to mutex/condvar and malloc to kmem.
 1.9 16-Feb-2011  jmcneill branches: 1.9.2;
validate cf_name in driver match method
 1.8 25-Jan-2011  tsutsui u_intNN_t -> uintNN_t
 1.7 16-Dec-2008  christos branches: 1.7.6; 1.7.8; 1.7.10;
replace bitmask_snprintf(9) with snprintb(3)
 1.6 22-Apr-2008  cegger branches: 1.6.2; 1.6.10;
Make this build again. From Hans Rosenfeld.
 1.5 18-Apr-2008  cegger branches: 1.5.2;
Fix panics at boot and some other misc bugs. From Hans Rosenfeld.
 1.4 16-Apr-2008  cegger device_t / softc split. From Hans Rosenfeld.
 1.3 16-Apr-2008  cegger ppbus device_t / softc splitting. From Hans Rosenfeld.
 1.2 04-Mar-2007  christos branches: 1.2.40;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.1 28-Dec-2005  kurahone branches: 1.1.18; 1.1.28;
Added support for the IP22 IOC's parallel port (PI1).

Code contributed by Joe Britt.

Reviewed by <sekiya> and <kurahone>.
 1.1.28.1 12-Mar-2007  rmind Sync with HEAD.
 1.1.18.3 03-Sep-2007  yamt sync with head.
 1.1.18.2 21-Jun-2006  yamt sync with head.
 1.1.18.1 28-Dec-2005  yamt file pi1ppc.c was added on branch yamt-lazymbuf on 2006-06-21 14:55:29 +0000
 1.2.40.2 17-Jan-2009  mjf Sync with HEAD.
 1.2.40.1 02-Jun-2008  mjf Sync with HEAD.
 1.5.2.1 18-May-2008  yamt sync with head.
 1.6.10.1 19-Jan-2009  skrll Sync with HEAD.
 1.6.2.1 04-May-2009  yamt sync with head.
 1.7.10.2 17-Feb-2011  bouyer Sync with HEAD
 1.7.10.1 08-Feb-2011  bouyer Sync with HEAD
 1.7.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.7.6.2 12-Jun-2011  rmind sync with head
 1.7.6.1 05-Mar-2011  rmind sync with head
 1.9.2.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.11.26.1 10-Aug-2014  tls Rebase.
 1.11.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.12.28.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.13.10.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.14.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.2 05-Mar-2009  msaitoh Fix typo(s/interupt/interrupt/)
 1.1 28-Dec-2005  kurahone branches: 1.1.18; 1.1.80; 1.1.88; 1.1.94;
Added support for the IP22 IOC's parallel port (PI1).

Code contributed by Joe Britt.

Reviewed by <sekiya> and <kurahone>.
 1.1.94.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.1.88.1 28-Apr-2009  skrll Sync with HEAD.
 1.1.80.1 04-May-2009  yamt sync with head.
 1.1.18.2 21-Jun-2006  yamt sync with head.
 1.1.18.1 28-Dec-2005  yamt file pi1ppcreg.h was added on branch yamt-lazymbuf on 2006-06-21 14:55:30 +0000
 1.8 13-Aug-2024  andvar s/Thresold/Threshold/ in comments.
 1.7 03-Dec-2021  andvar branches: 1.7.10;
fix various typos in comments, log messages and documentation.
 1.6 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.5 09-Jun-2011  rmind Convert simple_lock/ltsleep to mutex/condvar and malloc to kmem.
 1.4 25-Jan-2011  tsutsui branches: 1.4.2;
u_intNN_t -> uintNN_t
 1.3 16-Apr-2008  cegger branches: 1.3.26; 1.3.32; 1.3.34;
ppbus device_t / softc splitting. From Hans Rosenfeld.
 1.2 04-Mar-2007  christos branches: 1.2.40;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.1 28-Dec-2005  kurahone branches: 1.1.18; 1.1.28;
Added support for the IP22 IOC's parallel port (PI1).

Code contributed by Joe Britt.

Reviewed by <sekiya> and <kurahone>.
 1.1.28.1 12-Mar-2007  rmind Sync with HEAD.
 1.1.18.3 03-Sep-2007  yamt sync with head.
 1.1.18.2 21-Jun-2006  yamt sync with head.
 1.1.18.1 28-Dec-2005  yamt file pi1ppcvar.h was added on branch yamt-lazymbuf on 2006-06-21 14:55:30 +0000
 1.2.40.1 02-Jun-2008  mjf Sync with HEAD.
 1.3.34.1 08-Feb-2011  bouyer Sync with HEAD
 1.3.32.1 06-Jun-2011  jruoho Sync with HEAD.
 1.3.26.2 12-Jun-2011  rmind sync with head
 1.3.26.1 05-Mar-2011  rmind sync with head
 1.4.2.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.7.10.1 02-Aug-2025  perseant Sync with HEAD
 1.22 26-Aug-2006  bjh21 Move the sgimips "sbic" driver from arch/sgimips/hpc/sbic.c to
dev/ic/wd33c93.c. This may not be the best WD33C93 driver we've
got, but it's the most recently worked on and probably the most
portable, so it seems like a good basis for further work (and in
particular an acorn26 driver for the Acorn SCSI card). There's
no functional change in this commit, and sgimips kernels still
compile.
 1.21 29-Mar-2006  thorpej Use device_cfdata().
 1.20 08-Mar-2006  lukem branches: 1.20.2;
Use the SI capitalization for "Hz", "kHz", and "MHz" in comments and strings.
Add a space between numbers and Hz unit.
 1.19 11-Dec-2005  christos branches: 1.19.4; 1.19.6; 1.19.8; 1.19.10;
merge ktrace-lwp.
 1.18 03-Jun-2005  martin branches: 1.18.2;
Constify
 1.17 10-Jan-2004  sekiya de-__P, sprinkle some KNF.
 1.16 04-Oct-2003  tsutsui TAB/space cleanup.
 1.15 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.14 15-Jul-2003  lukem __KERNEL_RCSID()
 1.13 18-Jun-2003  drochner branches: 1.13.2;
don't #include <sys/dkstat.h> where it is (appearently) unused
 1.12 03-May-2003  wiz DMA, not dma nor Dma.
 1.11 09-Nov-2002  thorpej Fix signed/unsigned comparison warnings.
 1.10 27-Sep-2002  provos remove trailing \n in panic(). approved perry.
 1.9 05-Apr-2002  bouyer Implement mstohz() as discussed on tech-kern, and use it in SCSI drivers
to convert xs->timeout to callout() parameter.
 1.8 13-Mar-2002  simonb Replace lots of 8x<space> with <tabs> and other miscellaneous indentation
fixes.
Wrap a couple of long lines.
Use <return-type>\n<function name> as per KNF in a few places.
 1.7 08-Mar-2002  thorpej Pool deals fairly well with physical memory shortage, but it doesn't
deal with shortages of the VM maps where the backing pages are mapped
(usually kmem_map). Try to deal with this:

* Group all information about the backend allocator for a pool in a
separate structure. The pool references this structure, rather than
the individual fields.
* Change the pool_init() API accordingly, and adjust all callers.
* Link all pools using the same backend allocator on a list.
* The backend allocator is responsible for waiting for physical memory
to become available, but will still fail if it cannot callocate KVA
space for the pages. If this happens, carefully drain all pools using
the same backend allocator, so that some KVA space can be freed.
* Change pool_reclaim() to indicate if it actually succeeded in freeing
some pages, and use that information to make draining easier and more
efficient.
* Get rid of PR_URGENT. There was only one use of it, and it could be
dealt with by the caller.

From art@openbsd.org.
 1.6 11-Feb-2002  wiz s/seperate/separate/
 1.5 21-Nov-2001  thorpej sbic -> wd33c93, in preparation for the core driver going into
sys/dev/ic.
 1.4 18-Nov-2001  thorpej * Add a callback to the front-end for the 33c93 driver to reset
the controller/SCSI bus.
* Implement controller/SCSI bus reset on SGI HPC3 SCSI using the
"channel reset" bit in the SCSI DMA channel control register.
 1.3 10-Nov-2001  wdk branches: 1.3.2;
Tidy up debug logic

Fix compile errors when DIAGNOSTIC or DEBUG options disabled.
 1.2 10-Nov-2001  wdk Complete overhaul of WD33c93 SCSI driver

- Full support for SCSI-2 Tagged commands (enabled by default)
- Implement save and restore datapointer messages
- Formalize interface between MI and MD drivers.
- decouple interface between MD driver and DMA routines
- Use scsipi layer where appropriate (Tags, Sync Negotiations etc)
- control blocks stored using kernel pool(9) functions
- evcnt(9) compliant counters
- Enable advanced features on later WD33c93 chips.
(Identify message out phase is hardware assisted)
- Improved timeout support (one per active control block)
- Improved MESG_IN and MESG_OUT handling
- Start to tidy up debugging output
- Numerous bug fixes and cleanups throughout

Changes are based largely on the NCR53c9x MI driver for ideas on
how to DTRT.
 1.1 19-Aug-2001  wdk branches: 1.1.2; 1.1.6;
Initial implementation of WD33C9x SCSI driver for SGI IP22 platforms.

Based on mvme68k and Atari drivers for the same chipset with the
addition of bus_space support. Attempts have been made to seperate out the
machine dependent dma components and more work is required in this area.

Tested on SGI R4K Indy, but has little testing on other platforms.
 1.1.6.1 12-Nov-2001  thorpej Sync the thorpej-mips-cache branch with -current.
 1.1.2.6 10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.1.2.5 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.1.2.4 16-Mar-2002  jdolecek Catch up with -current.
 1.1.2.3 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.1.2.2 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.1.2.1 19-Aug-2001  thorpej file sbic.c was added on branch kqueue on 2001-08-25 06:15:50 +0000
 1.3.2.7 11-Nov-2002  nathanw Catch up to -current
 1.3.2.6 18-Oct-2002  nathanw Catch up to -current.
 1.3.2.5 17-Apr-2002  nathanw Catch up to -current.
 1.3.2.4 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.3.2.3 28-Feb-2002  nathanw Catch up to -current.
 1.3.2.2 08-Jan-2002  nathanw Catch up to -current.
 1.3.2.1 10-Nov-2001  nathanw file sbic.c was added on branch nathanw_sa on 2002-01-08 00:27:28 +0000
 1.13.2.4 10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.13.2.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.13.2.2 18-Sep-2004  skrll Sync with HEAD.
 1.13.2.1 03-Aug-2004  skrll Sync with HEAD
 1.18.2.2 30-Dec-2006  yamt sync with head.
 1.18.2.1 21-Jun-2006  yamt sync with head.
 1.19.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.19.8.3 03-Sep-2006  yamt sync with head.
 1.19.8.2 01-Apr-2006  yamt sync with head.
 1.19.8.1 13-Mar-2006  yamt sync with head.
 1.19.6.1 22-Apr-2006  simonb Sync with head.
 1.19.4.1 09-Sep-2006  rpaulo sync with head
 1.20.2.1 31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.8 26-Aug-2006  bjh21 Move the sgimips "sbic" driver from arch/sgimips/hpc/sbic.c to
dev/ic/wd33c93.c. This may not be the best WD33C93 driver we've
got, but it's the most recently worked on and probably the most
portable, so it seems like a good basis for further work (and in
particular an acorn26 driver for the Acorn SCSI card). There's
no functional change in this commit, and sgimips kernels still
compile.
 1.7 08-Mar-2006  lukem Use the SI capitalization for "Hz", "kHz", and "MHz" in comments and strings.
Add a space between numbers and Hz unit.
 1.6 11-Dec-2005  christos branches: 1.6.4; 1.6.6; 1.6.8; 1.6.10;
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 13-Mar-2002  simonb branches: 1.4.12;
Replace lots of 8x<space> with <tabs> and other miscellaneous indentation
fixes.
Wrap a couple of long lines.
Use <return-type>\n<function name> as per KNF in a few places.
 1.3 21-Nov-2001  thorpej sbic -> wd33c93, in preparation for the core driver going into
sys/dev/ic.
 1.2 10-Nov-2001  wdk branches: 1.2.2;
Complete overhaul of WD33c93 SCSI driver

- Full support for SCSI-2 Tagged commands (enabled by default)
- Implement save and restore datapointer messages
- Formalize interface between MI and MD drivers.
- decouple interface between MD driver and DMA routines
- Use scsipi layer where appropriate (Tags, Sync Negotiations etc)
- control blocks stored using kernel pool(9) functions
- evcnt(9) compliant counters
- Enable advanced features on later WD33c93 chips.
(Identify message out phase is hardware assisted)
- Improved timeout support (one per active control block)
- Improved MESG_IN and MESG_OUT handling
- Start to tidy up debugging output
- Numerous bug fixes and cleanups throughout

Changes are based largely on the NCR53c9x MI driver for ideas on
how to DTRT.
 1.1 19-Aug-2001  wdk branches: 1.1.2; 1.1.6;
Initial implementation of WD33C9x SCSI driver for SGI IP22 platforms.

Based on mvme68k and Atari drivers for the same chipset with the
addition of bus_space support. Attempts have been made to seperate out the
machine dependent dma components and more work is required in this area.

Tested on SGI R4K Indy, but has little testing on other platforms.
 1.1.6.1 12-Nov-2001  thorpej Sync the thorpej-mips-cache branch with -current.
 1.1.2.4 16-Mar-2002  jdolecek Catch up with -current.
 1.1.2.3 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.1.2.2 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.1.2.1 19-Aug-2001  thorpej file sbicreg.h was added on branch kqueue on 2001-08-25 06:15:50 +0000
 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 10-Nov-2001  nathanw file sbicreg.h was added on branch nathanw_sa on 2002-01-08 00:27:29 +0000
 1.4.12.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.12.2 18-Sep-2004  skrll Sync with HEAD.
 1.4.12.1 03-Aug-2004  skrll Sync with HEAD
 1.5.16.2 30-Dec-2006  yamt sync with head.
 1.5.16.1 21-Jun-2006  yamt sync with head.
 1.6.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.6.8.2 03-Sep-2006  yamt sync with head.
 1.6.8.1 13-Mar-2006  yamt sync with head.
 1.6.6.1 22-Apr-2006  simonb Sync with head.
 1.6.4.1 09-Sep-2006  rpaulo sync with head
 1.12 26-Aug-2006  bjh21 Move the sgimips "sbic" driver from arch/sgimips/hpc/sbic.c to
dev/ic/wd33c93.c. This may not be the best WD33C93 driver we've
got, but it's the most recently worked on and probably the most
portable, so it seems like a good basis for further work (and in
particular an acorn26 driver for the Acorn SCSI card). There's
no functional change in this commit, and sgimips kernels still
compile.
 1.11 08-Mar-2006  lukem Use the SI capitalization for "Hz", "kHz", and "MHz" in comments and strings.
Add a space between numbers and Hz unit.
 1.10 11-Dec-2005  christos branches: 1.10.4; 1.10.6; 1.10.8; 1.10.10;
merge ktrace-lwp.
 1.9 07-Dec-2004  thorpej branches: 1.9.10;
Use "struct scsipi_command" in internal command structures so that
we have enough space for 16-byte CDBs.
 1.8 24-Feb-2004  wiz occured -> occurred. From Peter Postma.
 1.7 10-Jan-2004  sekiya de-__P, sprinkle some KNF.
 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 13-Mar-2002  simonb branches: 1.5.12;
Replace lots of 8x<space> with <tabs> and other miscellaneous indentation
fixes.
Wrap a couple of long lines.
Use <return-type>\n<function name> as per KNF in a few places.
 1.4 21-Nov-2001  thorpej sbic -> wd33c93, in preparation for the core driver going into
sys/dev/ic.
 1.3 18-Nov-2001  thorpej * Add a callback to the front-end for the 33c93 driver to reset
the controller/SCSI bus.
* Implement controller/SCSI bus reset on SGI HPC3 SCSI using the
"channel reset" bit in the SCSI DMA channel control register.
 1.2 10-Nov-2001  wdk branches: 1.2.2;
Complete overhaul of WD33c93 SCSI driver

- Full support for SCSI-2 Tagged commands (enabled by default)
- Implement save and restore datapointer messages
- Formalize interface between MI and MD drivers.
- decouple interface between MD driver and DMA routines
- Use scsipi layer where appropriate (Tags, Sync Negotiations etc)
- control blocks stored using kernel pool(9) functions
- evcnt(9) compliant counters
- Enable advanced features on later WD33c93 chips.
(Identify message out phase is hardware assisted)
- Improved timeout support (one per active control block)
- Improved MESG_IN and MESG_OUT handling
- Start to tidy up debugging output
- Numerous bug fixes and cleanups throughout

Changes are based largely on the NCR53c9x MI driver for ideas on
how to DTRT.
 1.1 19-Aug-2001  wdk branches: 1.1.2; 1.1.6;
Initial implementation of WD33C9x SCSI driver for SGI IP22 platforms.

Based on mvme68k and Atari drivers for the same chipset with the
addition of bus_space support. Attempts have been made to seperate out the
machine dependent dma components and more work is required in this area.

Tested on SGI R4K Indy, but has little testing on other platforms.
 1.1.6.1 12-Nov-2001  thorpej Sync the thorpej-mips-cache branch with -current.
 1.1.2.4 16-Mar-2002  jdolecek Catch up with -current.
 1.1.2.3 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.1.2.2 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.1.2.1 19-Aug-2001  thorpej file sbicvar.h was added on branch kqueue on 2001-08-25 06:15:50 +0000
 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 10-Nov-2001  nathanw file sbicvar.h was added on branch nathanw_sa on 2002-01-08 00:27:29 +0000
 1.5.12.4 18-Dec-2004  skrll Sync with HEAD.
 1.5.12.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.5.12.2 18-Sep-2004  skrll Sync with HEAD.
 1.5.12.1 03-Aug-2004  skrll Sync with HEAD
 1.9.10.2 30-Dec-2006  yamt sync with head.
 1.9.10.1 21-Jun-2006  yamt sync with head.
 1.10.10.1 19-Apr-2006  elad sync with head - hopefully this will work
 1.10.8.2 03-Sep-2006  yamt sync with head.
 1.10.8.1 13-Mar-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.15 13-Apr-2015  riastradh MD rnd.h cleanups. Please let me know if I broke anything!
 1.14 02-Feb-2012  tls branches: 1.14.6; 1.14.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.13 19-Nov-2011  tls branches: 1.13.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.12 25-Jan-2011  tsutsui branches: 1.12.4;
KNF and misc cosmetics.
 1.11 25-Jan-2011  tsutsui Split device_t/softc. Tested on Indy.
 1.10 25-Jan-2011  tsutsui u_intNN_t -> uintNN_t
 1.9 11-Dec-2005  christos branches: 1.9.100; 1.9.106; 1.9.108;
merge ktrace-lwp.
 1.8 30-Dec-2004  rumble Prepend HPC3 macros universally with "HPC3_" to distinctly recognise
the corresponding revision and maintain consistency with HPC1.

No functional change intended.
 1.7 29-Dec-2004  rumble HPC1 seems to benefit from larger rings. This should be especially
true on the transmit side, which appears to be significantly slower at
interrupting than HPC3.

XXX I used to be able to occasionally wedge the chip with
SQ_NTXDESC == 32, but have not yet been able to reproduce that
behaviour this evening with a larger value.
 1.6 29-Dec-2004  rumble Remove the static sq_trace array and make it per-device as
multiple seeq interfaces may exist. While here, add a few trace
actions, move the related macros into sqvar.h, and enhance the
sq_trace_dump output a bit.
 1.5 30-Dec-2003  sekiya branches: 1.5.2; 1.5.6;
Adapt if_sq to HPC abstraction layer. It took both Steve Rumble and myself
to untangle the unhappiness that arises from the design differences between
HPC1 and HPC3.
 1.4 02-May-2002  rafal branches: 1.4.10;
Add interrupt counter for Seeq interrupts; also, make sure to reset back to
"recieve only my frames & broadcasts" and clear the ALLMULTI flag if we have
no multicast addresses in our list.
 1.3 13-Mar-2002  simonb Replace lots of 8x<space> with <tabs> and other miscellaneous indentation
fixes.
Wrap a couple of long lines.
Use <return-type>\n<function name> as per KNF in a few places.
 1.2 07-Jun-2001  thorpej branches: 1.2.2; 1.2.8;
- Differentiate beteen the 8003 and 80c03 (the 80c03 has some additional
features).
- Implement crude multicast support -- enable reception of all multicast
frames if we have any addresses on the multicast list. TODO: use the
64-bit hash table on the 80c03.
- Implement promiscuous mode.

IPv6 doesn't quite work yet -- DAD finds a duplicate for the
link-local. The 8003 hears its own transmissions, but IFF_SIMPLEX
is not set, so I'm a little confused.
 1.1 11-May-2001  thorpej Support for the Seeq 8003 Ethernet attached to the HPC ASIC,
found on Indigo2 and Indy.

From Rafal K. Boni.
 1.2.8.3 20-Jun-2002  nathanw Catch up to -current.
 1.2.8.2 01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.2.8.1 07-Jun-2001  nathanw file sqvar.h was added on branch nathanw_sa on 2002-04-01 07:42:25 +0000
 1.2.2.2 23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.2.2.1 16-Mar-2002  jdolecek Catch up with -current.
 1.4.10.4 17-Jan-2005  skrll Sync with HEAD.
 1.4.10.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.4.10.2 18-Sep-2004  skrll Sync with HEAD.
 1.4.10.1 03-Aug-2004  skrll Sync with HEAD
 1.5.6.1 06-Apr-2005  he Pull up revisions 1.6-1.7 (requested by rumble in ticket #1054):
Fix the HPC1 transmit logic, which was previously very broken.
 1.5.2.1 06-Apr-2005  he Pull up revisions 1.6-1.7 (requested by rumble in ticket #1054):
Fix the HPC1 transmit logic, which was previously very broken.
 1.9.108.1 08-Feb-2011  bouyer Sync with HEAD
 1.9.106.1 06-Jun-2011  jruoho Sync with HEAD.
 1.9.100.1 05-Mar-2011  rmind sync with head
 1.12.4.1 17-Apr-2012  yamt sync with head
 1.13.2.1 18-Feb-2012  mrg merge to -current.
 1.14.24.1 06-Jun-2015  skrll Sync with HEAD
 1.14.6.1 03-Dec-2017  jdolecek update from HEAD
 1.35 02-Sep-2018  tsutsui Fix wdsc(4) probe failure on HPC1.5 machines (Indigo R3k/R4k, IP6/IP10/IP12).

The alignment adjustment code was removed in rev 1.36 for common
mips bus_space changes, but the code was not bus_space related
but used for uint32_t register acccess during probe.

Reported and tested by Naruaki Etomi in PR port-sgimips/53522.
Should be pulled up to netbsd-8.
 1.34 18-Feb-2015  macallan branches: 1.34.10; 1.34.16; 1.34.18;
switch sgimips to common bus_dma and bus_space in arch/mips/
Tested on O2 and Indy.
Things that are compile-tested only for lack of hardware:
- GIO ethernet cards with PCI bridges
- IP2x hardware not found on Indy
- IP1x
 1.33 27-Oct-2012  chs branches: 1.33.14;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.32 01-Jul-2011  dyoung branches: 1.32.2; 1.32.12;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.31 25-Jan-2011  tsutsui Some KNF and cosmetics.
 1.30 25-Jan-2011  tsutsui - MAXPHYS is enough for DMA xfer size (hpc->scsi_max_xfer seems too large)
- switch BUS_DMASYNC_*READ and BUS_DMASYNC_*WRITE properly in
bus_dmamap_sync(9) ops per each xfer dir

Tested on R5000 Indy.
 1.29 14-Dec-2009  matt branches: 1.29.4; 1.29.6; 1.29.8;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.28 12-Feb-2009  rumble WD33C93 has only two registers, which often times aren't mapped to adjacent
bus space locations. Map them individually, instead.
 1.27 27-Jan-2009  tsutsui branches: 1.27.2;
- use device_t and cfdata_t
- rename variables for readability after device_t/softc split
- use proper pointer types

No binary changes.
 1.26 25-Jan-2009  bjh21 Split device_t from wd33c93_softc. Reviewed by cube; tested on sgimips
by tsutsui.
 1.25 10-May-2008  martin branches: 1.25.6; 1.25.14;
Backout previous: the license sweep touched these files in error, so
restore the old license.
 1.24 28-Apr-2008  martin branches: 1.24.2;
Remove clause 3 and 4 from TNF licenses
 1.23 17-Oct-2007  garbled branches: 1.23.20;
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.22 06-May-2007  rumble branches: 1.22.10;
Use burst dma for all systems, since it's supported by all HPCs and runs
with about 25% higher throughput on my Indy and ST32430N.
 1.21 30-Mar-2007  rumble branches: 1.21.4;
The wd33c93 chip appears to be clocked at 20MHz for all systems with a HPC.
 1.20 04-Mar-2007  christos branches: 1.20.2; 1.20.4;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.19 20-Feb-2007  rumble Add probe for wdsc so that we do not falsely attach wdsc(4) devices to E++
ethernet adapters.

By resetting the chip we also allow the wd33c93 attach routines to succeed.
Otherwise, device register accesses would result in a bus error.
 1.18 22-Dec-2006  rumble branches: 1.18.2;
Prefix 'dma_data{in,out}_cmd' with 'scsi_', since that's what they're used
for. Also, remove the 'clk_freq' variable, since this value differs on a
per-platform (IP12 is 20MHz, others are 10MHz) basis.

NB: I have no idea what frequency the GIO SCSI cards use. We'll have to
re-investigate this if we ever come across one.
 1.17 01-Oct-2006  bjh21 Allow wd33c93 attachments to choose what DMA mode it should use, and arrange
to use burst mode on sec(4), which makes it slightly but significantly faster.
 1.16 26-Aug-2006  bjh21 branches: 1.16.2; 1.16.4;
Move the sgimips "sbic" driver from arch/sgimips/hpc/sbic.c to
dev/ic/wd33c93.c. This may not be the best WD33C93 driver we've
got, but it's the most recently worked on and probably the most
portable, so it seems like a good basis for further work (and in
particular an acorn26 driver for the Acorn SCSI card). There's
no functional change in this commit, and sgimips kernels still
compile.
 1.15 11-Dec-2005  christos branches: 1.15.4; 1.15.8;
merge ktrace-lwp.
 1.14 10-Jan-2004  sekiya branches: 1.14.16;
de-__P, sprinkle some KNF.
 1.13 29-Dec-2003  sekiya Fixes to HPC abstraction layer from Steve Rumble:

- hpc1_hdd_{ctl,bufptr} and hpc3_hdd_{ctl,bufptr} are
established in hpcreg.h. All references to these fields
are updated with the exception of if_sq: (haltwo,
hpcdma). This makes reading the code and spotting bugs
easier.
- hpcdma.c was applying EOCHAIN to the wrong descriptor
word for the hpc1 case.
- I added scsi_max_xfer to the abstraction layer, and it
allows some crusty #defines in wdsc.c to be removed.
hpc1 now doesn't waste descriptors as it once did.
- hpcreg.h was updated to reflect the lack of XMITDONE
bit in hpc1. HPC1_REV15 added for a test in hpc.c
- hpc.c now verifies HPC1 revisions (1.0 vs 1.5) and
prints the output a little prettier ;)
- power interrupts shouldn't establish on non-IP22
platforms.
 1.12 16-Dec-2003  sekiya Introduce abstraction layer for HPC registers and values, which addresses the
divergence between HPC revision 1.5 and revision 3.

The wdsc driver has been updated to reflect this layer (and may now work on
IP20). The sq driver needs a bit more work before it can be committed.
 1.11 15-Jul-2003  lukem __KERNEL_RCSID()
 1.10 02-Oct-2002  thorpej branches: 1.10.6;
Use CFATTACH_DECL().
 1.9 27-Sep-2002  thorpej Declare all cfattach structures const.
 1.8 27-Sep-2002  thorpej Rather than referencing the cfdriver directly in the cfdata entries,
instead use a string naming the driver. The cfdriver is then looked
up in a list which is built at run-time.
 1.7 13-Mar-2002  simonb Replace lots of 8x<space> with <tabs> and other miscellaneous indentation
fixes.
Wrap a couple of long lines.
Use <return-type>\n<function name> as per KNF in a few places.
 1.6 21-Nov-2001  thorpej sbic -> wd33c93, in preparation for the core driver going into
sys/dev/ic.
 1.5 20-Nov-2001  thorpej The 2nd SCSI controller is now supported; remove it from the TODO list.
 1.4 18-Nov-2001  thorpej * Clean up HPC autoconfiguration a little. Pass device register and
DMA register offsets, as well as IRQ, to children. Use direct
config. Use machine type/subtype to determine which devices are
present.
* Add support for the second SCSI controller on the Indigo2.
 1.3 18-Nov-2001  thorpej * Add a callback to the front-end for the 33c93 driver to reset
the controller/SCSI bus.
* Implement controller/SCSI bus reset on SGI HPC3 SCSI using the
"channel reset" bit in the SCSI DMA channel control register.
 1.2 10-Nov-2001  wdk branches: 1.2.2;
Complete overhaul of WD33c93 SCSI driver

- Full support for SCSI-2 Tagged commands (enabled by default)
- Implement save and restore datapointer messages
- Formalize interface between MI and MD drivers.
- decouple interface between MD driver and DMA routines
- Use scsipi layer where appropriate (Tags, Sync Negotiations etc)
- control blocks stored using kernel pool(9) functions
- evcnt(9) compliant counters
- Enable advanced features on later WD33c93 chips.
(Identify message out phase is hardware assisted)
- Improved timeout support (one per active control block)
- Improved MESG_IN and MESG_OUT handling
- Start to tidy up debugging output
- Numerous bug fixes and cleanups throughout

Changes are based largely on the NCR53c9x MI driver for ideas on
how to DTRT.
 1.1 19-Aug-2001  wdk branches: 1.1.2; 1.1.6;
Initial implementation of WD33C9x SCSI driver for SGI IP22 platforms.

Based on mvme68k and Atari drivers for the same chipset with the
addition of bus_space support. Attempts have been made to seperate out the
machine dependent dma components and more work is required in this area.

Tested on SGI R4K Indy, but has little testing on other platforms.
 1.1.6.1 12-Nov-2001  thorpej Sync the thorpej-mips-cache branch with -current.
 1.1.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.1.2.4 16-Mar-2002  jdolecek Catch up with -current.
 1.1.2.3 10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.1.2.2 25-Aug-2001  thorpej Merge Aug 24 -current into the kqueue branch.
 1.1.2.1 19-Aug-2001  thorpej file wdsc.c was added on branch kqueue on 2001-08-25 06:15:50 +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 10-Nov-2001  nathanw file wdsc.c was added on branch nathanw_sa on 2002-01-08 00:27:29 +0000
 1.10.6.3 21-Sep-2004  skrll Fix the sync with head I botched.
 1.10.6.2 18-Sep-2004  skrll Sync with HEAD.
 1.10.6.1 03-Aug-2004  skrll Sync with HEAD
 1.14.16.3 03-Sep-2007  yamt sync with head.
 1.14.16.2 26-Feb-2007  yamt sync with head.
 1.14.16.1 30-Dec-2006  yamt sync with head.
 1.15.8.1 03-Sep-2006  yamt sync with head.
 1.15.4.1 09-Sep-2006  rpaulo sync with head
 1.16.4.1 22-Oct-2006  yamt sync with head
 1.16.2.2 12-Jan-2007  ad Sync with head.
 1.16.2.1 18-Nov-2006  ad Sync with head.
 1.18.2.4 07-May-2007  yamt sync with head.
 1.18.2.3 15-Apr-2007  yamt sync with head.
 1.18.2.2 12-Mar-2007  rmind Sync with HEAD.
 1.18.2.1 27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.20.4.1 11-Jul-2007  mjf Sync with head.
 1.20.2.2 27-May-2007  ad Sync with head.
 1.20.2.1 10-Apr-2007  ad Sync with head.
 1.21.4.1 22-May-2007  matt Update to HEAD.
 1.22.10.1 06-Nov-2007  matt sync with HEAD
 1.23.20.2 11-Mar-2010  yamt sync with head
 1.23.20.1 04-May-2009  yamt sync with head.
 1.24.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.25.14.1 10-Sep-2009  matt Add preliminary LP64 support for sgimips
 1.25.6.1 03-Mar-2009  skrll Sync with HEAD.
 1.27.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 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.32.12.2 03-Dec-2017  jdolecek update from HEAD
 1.32.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.32.2.1 30-Oct-2012  yamt sync with head
 1.33.14.1 06-Apr-2015  skrll Sync with HEAD
 1.34.18.1 10-Jun-2019  christos Sync with HEAD
 1.34.16.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.34.10.1 10-Sep-2018  martin Pull up following revision(s) (requested by tsutsui in ticket #1017):

sys/arch/sgimips/conf/INSTALL32_IP2x: revision 1.10
sys/arch/sgimips/stand/boot/Makefile: revision 1.20
sys/arch/sgimips/sgimips/machdep.c: revision 1.146
sys/arch/sgimips/hpc/wdsc.c: revision 1.35
distrib/sgimips/instkernel/Makefile: revision 1.13

Disable misc options to shrink an INSTALL kernel for IP2x.

The ARC BIOS on Indy seems to have ~8MB limit.

Fixes PR port-sgimips/53378 from Naruaki Etomi.
Should be pulled up to netbsd-7 and netbsd-8.

-

Fix build failure without options DDB and with pseudo-device ksyms.
There is a typo for ksyms (NKSYMS vs NKSYM).

Also use consistent "#if NKSYMS" rather than "#if NKSYMS > 0" etc.
and add comments after corresponding #endif for readability.

Fixes PR port-sgimips/53521 from Naruaki Etomi.
Should be pulled up to (at least) netbsd-8.

-

Use elf2ecoff(1) rather than objcopy(1) to generat ecoff for old machines.
objcopy(1) was used instead of elf2ecoff(1) since Makefile rev 1.9:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/arch/sgimips/stand/boot/Makefile#rev1.9
but it looks ELF binaries generated by recent binutils are too complicated
to convert them to ecoff for old machines by objcopy(1).

Reported by Naruaki Etomi in PR port-sgimips/53519.
Should be pulled up to at least netbsd-8.

-

Fix wdsc(4) probe failure on HPC1.5 machines (Indigo R3k/R4k, IP6/IP10/IP12).

The alignment adjustment code was removed in rev 1.36 for common
mips bus_space changes, but the code was not bus_space related
but used for uint32_t register acccess during probe.

Reported and tested by Naruaki Etomi in PR port-sgimips/53522.
Should be pulled up to netbsd-8.

-

Use elf2ecoff(1) rather than objcopy(1) to generate ecoff kernel.

Reported by Naruaki Etomi in PR port-sgimips/53518.

Should be pulled up to netbsd-7 and netbsd-8.

RSS XML Feed