Home | History | Annotate | only in /src/sys/arch/mips/rmi
History log of /src/sys/arch/mips/rmi
RevisionDateAuthorComments
 1.1 24-Dec-2011  matt branches: 1.1.2;
file com_pci.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1 19-Jan-2012  matt branches: 1.1.2;
file rmixl_cde_pci.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 19-Jan-2012  matt PCI attachments (mostly stubs) for most XLP devices.
 1.1 27-Dec-2011  matt branches: 1.1.2;
file rmixl_cfi_xlnor.c was initially added on branch matt-nb5-mips64.
 1.1.2.2 28-Dec-2011  matt Add NOR support for XLP.
 1.1.2.1 27-Dec-2011  matt Add NOR/NAND (from HEAD)/SPI attachments.
 1.8 11-Dec-2018  thorpej Add a convenience function, com_init_regs_stride(), that shifts the register
offsets and size by the specified amount. Use in front-ends as appropriate.
 1.7 08-Dec-2018  thorpej Remove the COM_REGMAP option -- just use it all the time. While here,
garbage-collect the COM_FUNCMAP and COM_AU1X00 options, as there are
not used anywhere.
 1.6 08-Dec-2018  thorpej Clean up initialization of com_regs structure, in preparation for
some additional changers.
 1.5 01-Jul-2011  dyoung branches: 1.5.52; 1.5.54;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.4 11-May-2011  cliff sync from matt-nb5-mips64 branch
 1.3 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.2 14-Dec-2009  matt branches: 1.2.4; 1.2.6; 1.2.8; 1.2.10;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.1 13-Sep-2009  cliff branches: 1.1.2;
file rmixl_com.c was initially added on branch matt-nb5-mips64.
 1.1.2.17 31-Dec-2011  matt Switch to using IST_<foo> instead of private enums.
 1.1.2.16 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.15 11-May-2011  cliff simplify rmixl_com_initmap() a bit
 1.1.2.14 21-May-2010  cliff - establish interrupt at IPL_VM (was IPL_SERIAL)
 1.1.2.13 18-May-2010  cliff configure com1 and make it attach correctly
note that config loc 'mult' is assumed to be 4, and so no need to specify
 1.1.2.12 12-Apr-2010  cliff - specifiy if mpsafe when establishing interrupts
(all are 'false' except comintr for now)
 1.1.2.11 21-Mar-2010  cliff - pass obio_tmsk to rmixl_intr_establish
 1.1.2.10 20-Jan-2010  matt cleanup attachments so that other mips cpus can use the same scheme.
 1.1.2.9 14-Dec-2009  cliff - replace single bus space with two (big & little endian) bus spaces for obio
- use comcnspeed instead of CONSPEED
- use comcnfreq instead of CONFREQ
 1.1.2.8 12-Dec-2009  cliff initialize sc_frequency to CONSFREQ
 1.1.2.7 15-Nov-2009  cliff - use new obio bus space
 1.1.2.6 25-Sep-2009  cliff establish interrupt in rmixl_com_attach()
 1.1.2.5 22-Sep-2009  cliff add baud rate initialization to rmixl_putchar_init()
use symbolic offsets for reg access in rmixl_putchar()
 1.1.2.4 15-Sep-2009  cliff fix typo assigning bus_space_tag in rmixl_com_cnattach
set sc_dev in rmixl_com_attach
 1.1.2.3 15-Sep-2009  cliff always use big endian access methods & bus space for com
also do some code cleanup
 1.1.2.2 13-Sep-2009  cliff improve how some config data are managed
 1.1.2.1 13-Sep-2009  cliff add netbsd support for RMI XLS6ATX_7A board and XL SoC family
 1.2.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.2.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.2 31-May-2011  rmind sync with head
 1.2.6.1 05-Mar-2011  rmind sync with head
 1.2.4.2 11-Mar-2010  yamt sync with head
 1.2.4.1 14-Dec-2009  yamt file rmixl_com.c was added on branch yamt-nfs-mp on 2010-03-11 15:02:41 +0000
 1.5.54.1 10-Jun-2019  christos Sync with HEAD
 1.5.52.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.2 14-Dec-2009  matt branches: 1.2.4;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.1 13-Sep-2009  cliff branches: 1.1.2;
file rmixl_comvar.h was initially added on branch matt-nb5-mips64.
 1.1.2.3 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.2 13-Nov-2009  cliff - define used to prevent recursive include gets renamed according to convention
 1.1.2.1 13-Sep-2009  cliff add netbsd support for RMI XLS6ATX_7A board and XL SoC family
 1.2.4.2 11-Mar-2010  yamt sync with head
 1.2.4.1 14-Dec-2009  yamt file rmixl_comvar.h was added on branch yamt-nfs-mp on 2010-03-11 15:02:41 +0000
 1.15 29-Sep-2022  skrll Remove unnecessary include of <sys/malloc.h>.
 1.14 29-Sep-2022  skrll Trailing whitespace
 1.13 09-Apr-2022  riastradh mips/rmi: Hack to get XLSATX64.MP kernel building again.

Using <mips/asm.h> in a .c file is kinda grody but CALLFRAME_SIZ
doesn't seem to be defined anywhere else. Not sure how this was ever
supposed to work...
 1.12 12-Aug-2020  skrll Don't include mips/asm.h from a C file
 1.11 03-Dec-2019  riastradh Rip out pserialize(9) logic now that the RCU patent has expired.

pserialize_perform() is now basically just xc_barrier(XC_HIGHPRI).
No more tentacles throughout the scheduler. Simplify the psz read
count for diagnostic assertions by putting it unconditionally into
cpu_info.

From rmind@, tidied up by me.
 1.10 01-Dec-2019  ad Fix false sharing problems with cpu_info. Identified with tprof(8).
This was a very nice win in my tests on a 48 CPU box.

- Reorganise cpu_data slightly according to usage.
- Put cpu_onproc into struct cpu_info alongside ci_curlwp (now is ci_onproc).
- On x86, put some items in their own cache lines according to usage, like
the IPI bitmask and ci_want_resched.
 1.9 28-Jun-2015  matt branches: 1.9.18;
Print both user and kernel segtabs
 1.8 10-Jun-2015  matt Transition from __cpuset_t to kcpuset_t *. This brings the local pmap one
step closer to uvm/pmap, its eventual replacement. Tested on ERLITE MP kernel.
 1.7 01-Jun-2015  matt Rework cavium support in preparation for MULTIPROCESSOR support
 1.6 25-Nov-2013  christos branches: 1.6.6;
nobody uses qchain and it is about to be GC'ed.
 1.5 27-Oct-2012  chs branches: 1.5.2;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.4 29-Apr-2011  matt branches: 1.4.4; 1.4.14;
minor cleanups.
 1.3 14-Apr-2011  cliff - add cpu_rmixl_run(), and set in mips_locoresw.lsw_cpu_run
to be called from cpu_hatch() once cpus are running,
so we can determine what threads are configured
and running, and can finish initialization of per-core registers
depending on that.
- in cpu_rmixl_db_watch_init() clear IEU_DEFEATURE[DBE],
and init all COP0 watchpoint regs
- option MIPS_DDB_WATCH is deprecated, removed; use of cpu watchpoints
is longer depends on that or DDB
 1.2 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.1 16-Jan-2010  cliff branches: 1.1.2; 1.1.6; 1.1.8; 1.1.10;
file rmixl_cpu.c was initially added on branch matt-nb5-mips64.
 1.1.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.6.3 31-May-2011  rmind sync with head
 1.1.6.2 21-Apr-2011  rmind sync with head
 1.1.6.1 05-Mar-2011  rmind sync with head
 1.1.2.25 19-Jan-2012  matt Unbreak things so that XLS/XLR boot again. :)
 1.1.2.24 19-Jan-2012  matt Change struct rmixl_cpu_softc to cpu_softc and remove casts.
Fix IPIs.
More FMN cleanup.
 1.1.2.23 04-Jan-2012  matt Rework Fast Messaging Network support (it's now lockless).
Workaround a problem with bus 0 BAR sizing causing the registers behind
the BAR to become inaccessible.
Move much/most of the startup code from evbmips/rmixl/machdep to
mips/rmi/rmixl_machdep.c
Move the code to find the XLP variant to the early boot so it can be used
early.
8bit and 16bit accessed to PCI bus 0 cause cache errors so chagne the access
of pci mem to 32bits.
 1.1.2.22 26-May-2011  matt Add MIPS64_RMIXL (XLR/XLS) and MIPS64R2_RMIXL (XLP). This allows the kernel
to treat this special which is needed for MP support. When accessing the TLB,
always lock the TLB before hand. If in the miss handlers, the TLB is already
locked let trap deal with the exeception.
 1.1.2.21 29-Apr-2011  matt Major merge to/from current.
Adds MIPS32/MIPS64 R2 support (24k, 74k, etc.) including COP0_USERLOCAL
Adds support for emulation of rdhwr $3,$29 instruction.
Major cleanup of SMP code. (stable on multi-core / single thread per core)
llsc locking code only used in MP capable kernels.
 1.1.2.20 08-Feb-2011  cliff - make compile without MULTIPROCESSOR
 1.1.2.19 08-Feb-2011  cliff - remove sc_ih_clk, sc_ih_fmn, sc_ih_ipi from struct rmixl_cpu_softc;
they were unused just taking up space
- rmixl_intr_init_clk() and rmixl_intr_init_ipi() are now type void
 1.1.2.18 08-Feb-2011  cliff - renamed cpu_rmixl_attach_once() to cpu_rmixl_attach_primary() (more clear)
- cpu_rmixl_attach_primary() obtains ci_cpuid from COP0 EBASE reg
instead of assuming always cpuid==0
- in cpu_rmixl_attach(), first call of the function determines we are attaching
primary cpu, instead of asuming core0 thread0 is always the primary cpu
- cpu_fmn_intr() uses CPU_IS_PRIMARY() instead of asuming cpu_number()==0
always indicates the primary cpu
- debug function rmixl_cpuinfo_print() argument is now a cpu index, not cpuid
 1.1.2.17 05-Feb-2011  cliff - include opt_multiprocessor.h for MULTIPROCESSOR dependency
- add suport for MIPS COP0 watchpoint in ddb
- add ci_pmap_asid_cur print in rmixl_cpuinfo_print().
- note rmixl_cpuinfo_print() (or something like it) should eventually get moved
into a md support fn of a (hypothetical) ddb 'show cpu' command.
 1.1.2.16 07-Jan-2011  cliff - ifdef out guts of cpu_xls616_erratum(); the problem is still unknown.
- cpu_rmixl_hatch() calls cpucore_rmixl_hatch()
 1.1.2.15 20-Sep-2010  cliff - remove MULTIPROCESSOR condition for rmixl_cpuinfo_print and
rmixl_cpu_data_print functions, so we can call them
e.g. from ddb in non-MP kernels
 1.1.2.14 01-Sep-2010  matt Fill cpu_data cpu_{node,core,smt}_id for RMI.
 1.1.2.13 16-Aug-2010  matt Support user VAs > 4GB (but less than 1TB for now) using a 3 level page table.
Add debug code to help find redundant faults (PMAP_FAULTINFO).
 1.1.2.12 10-Jun-2010  cliff - remove rmixl_spl_init_cpu calls from rmixl_intr_init_cpu
because rmixl_intr_init_cpu only runs on cpu#0.
rmixl_spl_init_cpu calls are now done in cpu_rmixl_atach (for cpu#0)
or cpu_rmixl_hatch (for other cpus).
- add cpu_xls616_erratum to avoid count/compare conflict on XLS616
XXX VERIFY WITH RMI
- rmixl_spl_init_cpu CPU#0 in attach, others in hatch
- remove splhi/splx for non-cpu#0 work in attach
interrupts arent enabled yet anyway
 1.1.2.11 01-May-2010  cliff remove some development debug prints,
in cpu_setup_trampoline_common()
and cpu_setup_trampoline_callback()
 1.1.2.10 16-Apr-2010  cliff - remove cpu_setup_trampoline_fmn()
- remove cpu_setup_trampoline_ipi()
- cpu_setup_trampoline_common() provides wakeup-method independent function,
used only by cpu_setup_trampoline_callback() for now
- PSB_TYPE_DELL firmware works with cpu_setup_trampoline_callback()
 1.1.2.9 29-Mar-2010  cliff - cpu_setup_trampoline_fmn() is #ifdef NOTYET until we make it work...
 1.1.2.8 22-Mar-2010  cliff - in cpu_setup_trampoline_callback, add some DIAGNOSTIC checks,
and make sure we get needed sign extension when storing 32 bit pointers
into trampoline args structure.
 1.1.2.7 21-Mar-2010  cliff declaration of rmixl_cpu_trampoline_args now #ifdef MULTIPROCESSOR
 1.1.2.6 21-Mar-2010  cliff - use different wakeup trampolines depending on firmware type
so far only RMI formware with callback wakeup method is tested.
- add a (chip-specific) softc structure, and cross link it
with struct cpu_info
- remove exception vectors mem allocation, it is now provided
by cpu_attach_common
- remove common cpu_info initialization, now provided
by cpu_attach_common
- use per-CPU bit in 'cpus_hatched' as handshake with the CPU
we just hatched
- call rmixl_intr_init_cpu for per-CPU interrupt initialization
- call cpu_attach_common() for common mips stuff
- cpu_rmixl_attach_once() groups together chip-specific initializations
that are only to be one once, i.e. by CPU#0
- cpu_rmixl_hatch() provides chip-specific hatch code called from
(mips-common) cpu_hatch() via lsw_cpu_init
- cpu_setup_trampoline_callback() provides method to wake up
subordinate CPUs using RMI firmware callback.
- rmixl_cpuinfo_print() can be called for debugging e.g. from DDB
should maybe evolve into DDB 'mach cpu <n>' ?
 1.1.2.5 23-Feb-2010  matt Make sure <mips/locore.h> is not included by MI code.
Add send_ipi and cpu_offline_md hooks to locoresw.
Add MP support to pmap (pvlist locking, tlb locking).
Add TLB shootdown support (see comment at the top of mips/pmap_tlb.c).
Add mipsXX_tlb_invalidate_globals routine
 1.1.2.4 29-Jan-2010  cliff - avoid cpu_wakeup callback if running on PSB_TYPE_DELL firmware
 1.1.2.3 24-Jan-2010  cliff - cpu_rmixl_attach calls cpu_setup_trampoline to get control of
subordinate CPUs from firmware by using the 'wakeup' callback method
and into cpu_wakeup_trampoline where they just spin pending further work.
- the callback requires re-basing the stack pointer to be in KSEG0,
done in asm subroutine rmixlfw_wakeup_cpu
 1.1.2.2 20-Jan-2010  matt cleanup attachments so that other mips cpus can use the same scheme.
 1.1.2.1 16-Jan-2010  cliff - moved arch/evbmips/rmixl/cpu.c to arch/mips/rmi/rmixl_cpu.c
 1.4.14.3 03-Dec-2017  jdolecek update from HEAD
 1.4.14.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.14.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.4.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.4.1 30-Oct-2012  yamt sync with head
 1.5.2.1 18-May-2014  rmind sync with head
 1.6.6.2 22-Sep-2015  skrll Sync with HEAD
 1.6.6.1 06-Jun-2015  skrll Sync with HEAD
 1.9.18.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.7 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.6 24-Apr-2021  thorpej branches: 1.6.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.5 29-Apr-2011  matt branches: 1.5.70;
minor cleanups.
 1.4 14-Apr-2011  cliff - fix comment at cpucore_rmixl_run()
 1.3 14-Apr-2011  cliff - in cpucore_rmixl_attach(), keep track of which threads are
enabled by firmware and configured and attach, or not.
- add cpucore_rmixl_run() to do the post-running initialization:
disable unused threads in RMIXL_PCR_THREADEN, and
set Round Robin thread scheduling mode.
 1.2 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.1 16-Jan-2010  cliff branches: 1.1.2; 1.1.6; 1.1.8; 1.1.10;
file rmixl_cpucore.c was initially added on branch matt-nb5-mips64.
 1.1.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.6.3 31-May-2011  rmind sync with head
 1.1.6.2 21-Apr-2011  rmind sync with head
 1.1.6.1 05-Mar-2011  rmind sync with head
 1.1.2.14 19-Jan-2012  matt Add missing arg.
 1.1.2.13 04-Jan-2012  matt Rework Fast Messaging Network support (it's now lockless).
Workaround a problem with bus 0 BAR sizing causing the registers behind
the BAR to become inaccessible.
Move much/most of the startup code from evbmips/rmixl/machdep to
mips/rmi/rmixl_machdep.c
Move the code to find the XLP variant to the early boot so it can be used
early.
8bit and 16bit accessed to PCI bus 0 cause cache errors so chagne the access
of pci mem to 32bits.
 1.1.2.12 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.11 29-Apr-2011  matt Major merge to/from current.
Adds MIPS32/MIPS64 R2 support (24k, 74k, etc.) including COP0_USERLOCAL
Adds support for emulation of rdhwr $3,$29 instruction.
Major cleanup of SMP code. (stable on multi-core / single thread per core)
llsc locking code only used in MP capable kernels.
 1.1.2.10 08-Feb-2011  cliff - make compile without MULTIPROCESSOR
 1.1.2.9 08-Feb-2011  cliff - cpucore_rmixl_attach() now examines 'userapp_cpu_map' bitmask obtained
from the firmware, and avoids attaching threads that are not enabled there.
 1.1.2.8 05-Feb-2011  cliff - include opt_multiprocessor.h for explicit MULTIPROCESSOR dependency
 1.1.2.7 07-Jan-2011  cliff - add cpucore_rmixl_hatch() for per-core initialization
 1.1.2.6 21-Mar-2010  cliff - except for core#0, pmap tlb0info lives in the cpucore softc;
cpucore_rmixl_attach() calls pmap_tlb_info_init() with a KSEG0 or
XKPHYS_CACHED conversion of the address of that structure in the softc
 1.1.2.5 27-Feb-2010  matt s/pmap_tlb_info/pmap_tlb0_info/
 1.1.2.4 23-Feb-2010  matt Make sure <mips/locore.h> is not included by MI code.
Add send_ipi and cpu_offline_md hooks to locoresw.
Add MP support to pmap (pvlist locking, tlb locking).
Add TLB shootdown support (see comment at the top of mips/pmap_tlb.c).
Add mipsXX_tlb_invalidate_globals routine
 1.1.2.3 20-Jan-2010  matt cleanup attachments so that other mips cpus can use the same scheme.
 1.1.2.2 20-Jan-2010  matt Adjust things to the new world order.
 1.1.2.1 16-Jan-2010  cliff - moved arch/evbmips/rmixl/cpucore.c to arch/mips/rmi/rmixl_cpucore.c
 1.5.70.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.6.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.4 29-Apr-2011  matt minor cleanups.
 1.3 14-Apr-2011  cliff - add sc_running flag to allow cpucore_rmixl_run() to do once-per-core
initializations once we know what threads are configured
- add sc_threads_enb and sc_threads_dis to track what threads are
enabled by firmware and configured and attach, or not.
- add prototype for cpucore_rmixl_run()
 1.2 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.1 16-Jan-2010  cliff branches: 1.1.2; 1.1.6; 1.1.8; 1.1.10;
file rmixl_cpucorevar.h was initially added on branch matt-nb5-mips64.
 1.1.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.6.3 31-May-2011  rmind sync with head
 1.1.6.2 21-Apr-2011  rmind sync with head
 1.1.6.1 05-Mar-2011  rmind sync with head
 1.1.2.7 29-Apr-2011  matt Major merge to/from current.
Adds MIPS32/MIPS64 R2 support (24k, 74k, etc.) including COP0_USERLOCAL
Adds support for emulation of rdhwr $3,$29 instruction.
Major cleanup of SMP code. (stable on multi-core / single thread per core)
llsc locking code only used in MP capable kernels.
 1.1.2.6 05-Feb-2011  cliff - protect option includes ("opt_multiprocessor.h") with #ifdef _KERNEL_OPT
 1.1.2.5 05-Feb-2011  cliff - include opt_multiprocessor.h for explicit MULTIPROCESSOR dependency
 1.1.2.4 07-Jan-2011  cliff - add sc_hatched flag to the cpucore softc
 1.1.2.3 13-Apr-2010  cliff add TNF License and copyright.
 1.1.2.2 23-Feb-2010  matt Make sure <mips/locore.h> is not included by MI code.
Add send_ipi and cpu_offline_md hooks to locoresw.
Add MP support to pmap (pvlist locking, tlb locking).
Add TLB shootdown support (see comment at the top of mips/pmap_tlb.c).
Add mipsXX_tlb_invalidate_globals routine
 1.1.2.1 16-Jan-2010  cliff - moved arch/evbmips/rmixl/cpucorevar.h to arch/mips/rmi/rmixl_cpucorevar.h
 1.6 29-Sep-2022  skrll Remove unnecessary include of <sys/malloc.h>.
 1.5 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.4 24-Apr-2021  thorpej branches: 1.4.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.3 01-Jul-2011  dyoung branches: 1.3.68;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.2 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.1 17-Jan-2010  cliff branches: 1.1.2; 1.1.6; 1.1.8; 1.1.10;
file rmixl_cpunode.c was initially added on branch matt-nb5-mips64.
 1.1.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.6.1 05-Mar-2011  rmind sync with head
 1.1.2.6 04-Jan-2012  matt Rework Fast Messaging Network support (it's now lockless).
Workaround a problem with bus 0 BAR sizing causing the registers behind
the BAR to become inaccessible.
Move much/most of the startup code from evbmips/rmixl/machdep to
mips/rmi/rmixl_machdep.c
Move the code to find the XLP variant to the early boot so it can be used
early.
8bit and 16bit accessed to PCI bus 0 cause cache errors so chagne the access
of pci mem to 32bits.
 1.1.2.5 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.4 22-Mar-2010  cliff in cpunode_rmixl_attach use the right macro to obtain number of cores
provided by this chip.
 1.1.2.3 20-Jan-2010  matt cleanup attachments so that other mips cpus can use the same scheme.
 1.1.2.2 20-Jan-2010  matt Adjust things to the new world order.
 1.1.2.1 17-Jan-2010  cliff cpunode driver represents CPU node in device tree
 1.3.68.1 21-Mar-2021  thorpej Give config_found() the same variadic arguments treatment as
config_search(). This commit only adds the CFARG_EOL sentinel
to the existing config_found() calls. Conversion of config_found_sm_loc()
and config_found_ia() call sites will be in subsequent commits.
 1.4.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.2 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.1 17-Jan-2010  cliff branches: 1.1.2; 1.1.6; 1.1.8; 1.1.10;
file rmixl_cpunodevar.h was initially added on branch matt-nb5-mips64.
 1.1.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.6.1 05-Mar-2011  rmind sync with head
 1.1.2.3 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.2 13-Apr-2010  cliff add TNF License and copyright.
 1.1.2.1 17-Jan-2010  cliff cpunode driver represents CPU node in device tree
 1.2 20-Feb-2011  matt branches: 1.2.2;
Merge forward from matt-nb5-mips64.
 1.1 21-Mar-2010  cliff branches: 1.1.2; 1.1.4; 1.1.6;
file rmixl_cpuvar.h was initially added on branch matt-nb5-mips64.
 1.1.6.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.4.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.2.6 27-Feb-2012  matt Add a test for recursive IPIs.
use __builtin_clzll
 1.1.2.5 19-Jan-2012  matt Change struct rmixl_cpu_softc to cpu_softc and remove casts.
Fix IPIs.
More FMN cleanup.
 1.1.2.4 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.3 08-Feb-2011  cliff - remove sc_ih_clk, sc_ih_fmn, sc_ih_ipi from struct rmixl_cpu_softc;
they were unused just taking up space
- rmixl_intr_init_clk() and rmixl_intr_init_ipi() are now type void
 1.1.2.2 13-Apr-2010  cliff add TNF License and copyright.
 1.1.2.1 21-Mar-2010  cliff add include for RMI specific cpu stuff: softc and wakeup trampoline args structures
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 20-Feb-2011  rmind file rmixl_cpuvar.h was added on branch rmind-uvmplock on 2011-03-05 20:51:10 +0000
 1.1 15-Sep-2009  cliff branches: 1.1.2;
file rmixl_eb_space.c was initially added on branch matt-nb5-mips64.
 1.1.2.2 15-Nov-2009  cliff - we don't need -el bus space for obio, get rid of it and clean up the naming
- delete rmixl_eb_space.c, rmixl_el_space.c
- add mixl_obio_space.c, provides -eb bus space for obio devices
 1.1.2.1 15-Sep-2009  cliff obio now provides both big endian and little endian bus spaces
to allow child devices to use according to access method needs

also preparing for dual bus_dma methods, one for addrs <4GB,
the other for all memory, including addrs >= 4GB
the bulk of XLS DMA work is still TBD
 1.8 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.7 24-Apr-2021  thorpej branches: 1.7.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.6 23-Apr-2016  skrll branches: 1.6.32;
Merge nick-nhusb

- API / infrastructure changes to support memory management changes.
- Memory management improvements and bug fixes.
- HCDs should now be MP safe
- conversion to KERNHIST based debug
- FS/LS isoc support on ehci(4).
- conversion to kmem(9)
- Some USB 3 support - mostly from Takahiro HAYASHI (t-hash).
- interrupt transfers now get proper DMA operations
- general bug fixes
- kern/48308
- uhub status notification improvements
- umass(4) probe fix (applied to HEAD already)
- ohci(4) short transfer fix
 1.5 20-Jul-2012  matt branches: 1.5.2; 1.5.14; 1.5.16; 1.5.20;
EHCI_USBINTR is 4 bytes long so use EOWRITE4
 1.4 01-Jul-2011  dyoung branches: 1.4.2;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.3 29-Apr-2011  matt Provide OHCI companions devices to EHCI.
 1.2 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.1 14-Dec-2009  cliff branches: 1.1.2; 1.1.6; 1.1.8; 1.1.10;
file rmixl_ehci.c was initially added on branch matt-nb5-mips64.
 1.1.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.6.2 31-May-2011  rmind sync with head
 1.1.6.1 05-Mar-2011  rmind sync with head
 1.1.2.6 30-Dec-2011  matt Change devices name from rmixl_* to xl*.
 1.1.2.5 29-Apr-2011  matt Major merge to/from current.
Adds MIPS32/MIPS64 R2 support (24k, 74k, etc.) including COP0_USERLOCAL
Adds support for emulation of rdhwr $3,$29 instruction.
Major cleanup of SMP code. (stable on multi-core / single thread per core)
llsc locking code only used in MP capable kernels.
 1.1.2.4 21-Mar-2010  cliff - include rmixl_intr.h for externs
 1.1.2.3 29-Jan-2010  cliff - use rmixl_probe_4 to match
 1.1.2.2 03-Jan-2010  cliff - unconfuse bit defines for rmixl gpio RESET and RESET_CFG registers
 1.1.2.1 14-Dec-2009  cliff - add attach glue for ehci at XLS USB Interface
 1.4.2.1 30-Oct-2012  yamt sync with head
 1.5.20.1 06-Sep-2016  skrll First pass at netbsd-7 updated with USB code from HEAD
 1.5.16.3 05-Dec-2014  skrll Use int for return type for [eou]chi_init and motg_init.
 1.5.16.2 03-Dec-2014  skrll The grand renaming of structure members.

No functional change.
 1.5.16.1 03-Dec-2014  skrll Trailing whitespace.
 1.5.14.1 05-Apr-2017  snj Pull up following revision(s) (requested by skrll in ticket #1395):
share/man/man4/axe.4: netbsd-7-nhusb
share/man/man4/axen.4: netbsd-7-nhusb
share/man/man4/cdce.4: netbsd-7-nhusb
share/man/man4/uaudio.4: netbsd-7-nhusb
share/man/man4/ucom.4: netbsd-7-nhusb
share/man/man4/uep.4: netbsd-7-nhusb
share/man/man4/urtw.4: netbsd-7-nhusb
share/man/man4/usb.4: netbsd-7-nhusb
share/man/man4/uyap.4: netbsd-7-nhusb
share/man/man4/xhci.4: netbsd-7-nhusb
share/man/man9/usbdi.9: netbsd-7-nhusb
sys/arch/amd64/conf/ALL: netbsd-7-nhusb
sys/arch/amd64/conf/GENERIC: netbsd-7-nhusb
sys/arch/amiga/dev/slhci_zbus.c: netbsd-7-nhusb
sys/arch/arm/allwinner/awin_otg.c: netbsd-7-nhusb
sys/arch/arm/allwinner/awin_usb.c: netbsd-7-nhusb
sys/arch/arm/amlogic/amlogic_dwctwo.c: netbsd-7-nhusb
sys/arch/arm/at91/at91ohci.c: netbsd-7-nhusb
sys/arch/arm/broadcom/bcm2835_dwctwo.c: netbsd-7-nhusb
sys/arch/arm/broadcom/bcm53xx_usb.c: netbsd-7-nhusb
sys/arch/arm/ep93xx/epohci.c: netbsd-7-nhusb
sys/arch/arm/gemini/obio_ehci.c: netbsd-7-nhusb
sys/arch/arm/imx/files.imx23: netbsd-7-nhusb
sys/arch/arm/imx/imxusb.c: netbsd-7-nhusb
sys/arch/arm/imx/imxusbreg.h: netbsd-7-nhusb
sys/arch/arm/omap/obio_ohci.c: netbsd-7-nhusb
sys/arch/arm/omap/omap3_ehci.c: netbsd-7-nhusb
sys/arch/arm/omap/omapl1x_ohci.c: netbsd-7-nhusb
sys/arch/arm/omap/tiotg.c: netbsd-7-nhusb
sys/arch/arm/s3c2xx0/ohci_s3c24x0.c: netbsd-7-nhusb
sys/arch/arm/samsung/exynos_usb.c: netbsd-7-nhusb
sys/arch/arm/xscale/pxa2x0_ohci.c: netbsd-7-nhusb
sys/arch/arm/zynq/zynq_usb.c: netbsd-7-nhusb
sys/arch/hpcarm/dev/nbp_slhci.c: netbsd-7-nhusb
sys/arch/hpcmips/dev/plumohci.c: netbsd-7-nhusb
sys/arch/i386/conf/ALL: netbsd-7-nhusb
sys/arch/i386/conf/GENERIC: netbsd-7-nhusb
sys/arch/i386/pci/gcscehci.c: netbsd-7-nhusb
sys/arch/luna68k/conf/GENERIC: netbsd-7-nhusb
sys/arch/mips/adm5120/dev/ahci.c: netbsd-7-nhusb
sys/arch/mips/adm5120/dev/ahcivar.h: netbsd-7-nhusb
sys/arch/mips/alchemy/dev/ohci_aubus.c: netbsd-7-nhusb
sys/arch/mips/atheros/dev/ehci_arbus.c: netbsd-7-nhusb
sys/arch/mips/atheros/dev/ohci_arbus.c: netbsd-7-nhusb
sys/arch/mips/conf/files.adm5120: netbsd-7-nhusb
sys/arch/mips/ralink/ralink_ehci.c: netbsd-7-nhusb
sys/arch/mips/ralink/ralink_ohci.c: netbsd-7-nhusb
sys/arch/mips/rmi/rmixl_ehci.c: netbsd-7-nhusb
sys/arch/mips/rmi/rmixl_ohci.c: netbsd-7-nhusb
sys/arch/playstation2/dev/ohci_sbus.c: netbsd-7-nhusb
sys/arch/powerpc/booke/dev/pq3ehci.c: netbsd-7-nhusb
sys/arch/powerpc/ibm4xx/dev/dwctwo_plb.c: netbsd-7-nhusb
sys/arch/x68k/dev/slhci_intio.c: netbsd-7-nhusb
sys/conf/files: netbsd-7-nhusb
sys/dev/cardbus/ehci_cardbus.c: netbsd-7-nhusb
sys/dev/cardbus/ohci_cardbus.c: netbsd-7-nhusb
sys/dev/cardbus/uhci_cardbus.c: netbsd-7-nhusb
sys/dev/ic/sl811hs.c: netbsd-7-nhusb
sys/dev/ic/sl811hsvar.h: netbsd-7-nhusb
sys/dev/isa/slhci_isa.c: netbsd-7-nhusb
sys/dev/marvell/ehci_mv.c: netbsd-7-nhusb
sys/dev/pci/ehci_pci.c: netbsd-7-nhusb
sys/dev/pci/ohci_pci.c: netbsd-7-nhusb
sys/dev/pci/uhci_pci.c: netbsd-7-nhusb
sys/dev/pci/xhci_pci.c: netbsd-7-nhusb
sys/dev/pcmcia/slhci_pcmcia.c: netbsd-7-nhusb
sys/dev/usb/Makefile.usbdevs: netbsd-7-nhusb
sys/dev/usb/TODO: netbsd-7-nhusb
sys/dev/usb/TODO.usbmp: netbsd-7-nhusb
sys/dev/usb/aubtfwl.c: netbsd-7-nhusb
sys/dev/usb/auvitek.c: netbsd-7-nhusb
sys/dev/usb/auvitek_audio.c: netbsd-7-nhusb
sys/dev/usb/auvitek_dtv.c: netbsd-7-nhusb
sys/dev/usb/auvitek_i2c.c: netbsd-7-nhusb
sys/dev/usb/auvitek_video.c: netbsd-7-nhusb
sys/dev/usb/auvitekvar.h: netbsd-7-nhusb
sys/dev/usb/ehci.c: netbsd-7-nhusb
sys/dev/usb/ehcireg.h: netbsd-7-nhusb
sys/dev/usb/ehcivar.h: netbsd-7-nhusb
sys/dev/usb/emdtv.c: netbsd-7-nhusb
sys/dev/usb/emdtv_dtv.c: netbsd-7-nhusb
sys/dev/usb/emdtv_ir.c: netbsd-7-nhusb
sys/dev/usb/emdtvvar.h: netbsd-7-nhusb
sys/dev/usb/ezload.c: netbsd-7-nhusb
sys/dev/usb/ezload.h: netbsd-7-nhusb
sys/dev/usb/files.usb: netbsd-7-nhusb
sys/dev/usb/hid.c: netbsd-7-nhusb
sys/dev/usb/hid.h: netbsd-7-nhusb
sys/dev/usb/if_athn_usb.c: netbsd-7-nhusb
sys/dev/usb/if_athn_usb.h: netbsd-7-nhusb
sys/dev/usb/if_atu.c: netbsd-7-nhusb
sys/dev/usb/if_atureg.h: netbsd-7-nhusb
sys/dev/usb/if_aue.c: netbsd-7-nhusb
sys/dev/usb/if_auereg.h: netbsd-7-nhusb
sys/dev/usb/if_axe.c: netbsd-7-nhusb
sys/dev/usb/if_axen.c: netbsd-7-nhusb
sys/dev/usb/if_axenreg.h: netbsd-7-nhusb
sys/dev/usb/if_axereg.h: netbsd-7-nhusb
sys/dev/usb/if_cdce.c: netbsd-7-nhusb
sys/dev/usb/if_cdcereg.h: netbsd-7-nhusb
sys/dev/usb/if_cue.c: netbsd-7-nhusb
sys/dev/usb/if_cuereg.h: netbsd-7-nhusb
sys/dev/usb/if_kue.c: netbsd-7-nhusb
sys/dev/usb/if_kuereg.h: netbsd-7-nhusb
sys/dev/usb/if_otus.c: netbsd-7-nhusb
sys/dev/usb/if_otusvar.h: netbsd-7-nhusb
sys/dev/usb/if_rum.c: netbsd-7-nhusb
sys/dev/usb/if_rumreg.h: netbsd-7-nhusb
sys/dev/usb/if_rumvar.h: netbsd-7-nhusb
sys/dev/usb/if_run.c: netbsd-7-nhusb
sys/dev/usb/if_runvar.h: netbsd-7-nhusb
sys/dev/usb/if_smsc.c: netbsd-7-nhusb
sys/dev/usb/if_smscreg.h: netbsd-7-nhusb
sys/dev/usb/if_smscvar.h: netbsd-7-nhusb
sys/dev/usb/if_udav.c: netbsd-7-nhusb
sys/dev/usb/if_udavreg.h: netbsd-7-nhusb
sys/dev/usb/if_upgt.c: netbsd-7-nhusb
sys/dev/usb/if_upgtvar.h: netbsd-7-nhusb
sys/dev/usb/if_upl.c: netbsd-7-nhusb
sys/dev/usb/if_ural.c: netbsd-7-nhusb
sys/dev/usb/if_uralreg.h: netbsd-7-nhusb
sys/dev/usb/if_uralvar.h: netbsd-7-nhusb
sys/dev/usb/if_url.c: netbsd-7-nhusb
sys/dev/usb/if_urlreg.h: netbsd-7-nhusb
sys/dev/usb/if_urndis.c: netbsd-7-nhusb
sys/dev/usb/if_urndisreg.h: netbsd-7-nhusb
sys/dev/usb/if_urtw.c: netbsd-7-nhusb
sys/dev/usb/if_urtwn.c: netbsd-7-nhusb
sys/dev/usb/if_urtwn_data.h: netbsd-7-nhusb
sys/dev/usb/if_urtwnreg.h: netbsd-7-nhusb
sys/dev/usb/if_urtwnvar.h: netbsd-7-nhusb
sys/dev/usb/if_urtwreg.h: netbsd-7-nhusb
sys/dev/usb/if_zyd.c: netbsd-7-nhusb
sys/dev/usb/if_zydreg.h: netbsd-7-nhusb
sys/dev/usb/irmce.c: netbsd-7-nhusb
sys/dev/usb/moscom.c: netbsd-7-nhusb
sys/dev/usb/motg.c: netbsd-7-nhusb
sys/dev/usb/motgvar.h: netbsd-7-nhusb
sys/dev/usb/ohci.c: netbsd-7-nhusb
sys/dev/usb/ohcireg.h: netbsd-7-nhusb
sys/dev/usb/ohcivar.h: netbsd-7-nhusb
sys/dev/usb/pseye.c: netbsd-7-nhusb
sys/dev/usb/slurm.c: netbsd-7-nhusb
sys/dev/usb/stuirda.c: netbsd-7-nhusb
sys/dev/usb/u3g.c: netbsd-7-nhusb
sys/dev/usb/uark.c: netbsd-7-nhusb
sys/dev/usb/uatp.c: netbsd-7-nhusb
sys/dev/usb/uaudio.c: netbsd-7-nhusb
sys/dev/usb/uberry.c: netbsd-7-nhusb
sys/dev/usb/ubsa.c: netbsd-7-nhusb
sys/dev/usb/ubsa_common.c: netbsd-7-nhusb
sys/dev/usb/ubsavar.h: netbsd-7-nhusb
sys/dev/usb/ubt.c: netbsd-7-nhusb
sys/dev/usb/uchcom.c: netbsd-7-nhusb
sys/dev/usb/ucom.c: netbsd-7-nhusb
sys/dev/usb/ucomvar.h: netbsd-7-nhusb
sys/dev/usb/ucycom.c: netbsd-7-nhusb
sys/dev/usb/udl.c: netbsd-7-nhusb
sys/dev/usb/udl.h: netbsd-7-nhusb
sys/dev/usb/udsbr.c: netbsd-7-nhusb
sys/dev/usb/udsir.c: netbsd-7-nhusb
sys/dev/usb/uep.c: netbsd-7-nhusb
sys/dev/usb/uftdi.c: netbsd-7-nhusb
sys/dev/usb/uftdireg.h: netbsd-7-nhusb
sys/dev/usb/ugen.c: netbsd-7-nhusb
sys/dev/usb/ugensa.c: netbsd-7-nhusb
sys/dev/usb/uhci.c: netbsd-7-nhusb
sys/dev/usb/uhcireg.h: netbsd-7-nhusb
sys/dev/usb/uhcivar.h: netbsd-7-nhusb
sys/dev/usb/uhid.c: netbsd-7-nhusb
sys/dev/usb/uhidev.c: netbsd-7-nhusb
sys/dev/usb/uhidev.h: netbsd-7-nhusb
sys/dev/usb/uhmodem.c: netbsd-7-nhusb
sys/dev/usb/uhso.c: netbsd-7-nhusb
sys/dev/usb/uhub.c: netbsd-7-nhusb
sys/dev/usb/uipad.c: netbsd-7-nhusb
sys/dev/usb/uipaq.c: netbsd-7-nhusb
sys/dev/usb/uirda.c: netbsd-7-nhusb
sys/dev/usb/uirdavar.h: netbsd-7-nhusb
sys/dev/usb/ukbd.c: netbsd-7-nhusb
sys/dev/usb/ukbdmap.c: netbsd-7-nhusb
sys/dev/usb/ukyopon.c: netbsd-7-nhusb
sys/dev/usb/ukyopon.h: netbsd-7-nhusb
sys/dev/usb/ulpt.c: netbsd-7-nhusb
sys/dev/usb/umass.c: netbsd-7-nhusb
sys/dev/usb/umass_isdata.c: netbsd-7-nhusb
sys/dev/usb/umass_isdata.h: netbsd-7-nhusb
sys/dev/usb/umass_quirks.c: netbsd-7-nhusb
sys/dev/usb/umass_quirks.h: netbsd-7-nhusb
sys/dev/usb/umass_scsipi.c: netbsd-7-nhusb
sys/dev/usb/umass_scsipi.h: netbsd-7-nhusb
sys/dev/usb/umassvar.h: netbsd-7-nhusb
sys/dev/usb/umcs.c: netbsd-7-nhusb
sys/dev/usb/umct.c: netbsd-7-nhusb
sys/dev/usb/umidi.c: netbsd-7-nhusb
sys/dev/usb/umidi_quirks.c: netbsd-7-nhusb
sys/dev/usb/umidi_quirks.h: netbsd-7-nhusb
sys/dev/usb/umodem.c: netbsd-7-nhusb
sys/dev/usb/umodem_common.c: netbsd-7-nhusb
sys/dev/usb/umodemvar.h: netbsd-7-nhusb
sys/dev/usb/ums.c: netbsd-7-nhusb
sys/dev/usb/uplcom.c: netbsd-7-nhusb
sys/dev/usb/urio.c: netbsd-7-nhusb
sys/dev/usb/urio.h: netbsd-7-nhusb
sys/dev/usb/usb.c: netbsd-7-nhusb
sys/dev/usb/usb.h: netbsd-7-nhusb
sys/dev/usb/usb_mem.c: netbsd-7-nhusb
sys/dev/usb/usb_mem.h: netbsd-7-nhusb
sys/dev/usb/usb_quirks.c: netbsd-7-nhusb
sys/dev/usb/usb_quirks.h: netbsd-7-nhusb
sys/dev/usb/usb_subr.c: netbsd-7-nhusb
sys/dev/usb/usbdevices.config: netbsd-7-nhusb
sys/dev/usb/usbdevs: netbsd-7-nhusb
sys/dev/usb/usbdevs.h: netbsd-7-nhusb
sys/dev/usb/usbdevs_data.h: netbsd-7-nhusb
sys/dev/usb/usbdi.c: netbsd-7-nhusb
sys/dev/usb/usbdi.h: netbsd-7-nhusb
sys/dev/usb/usbdi_util.c: netbsd-7-nhusb
sys/dev/usb/usbdi_util.h: netbsd-7-nhusb
sys/dev/usb/usbdivar.h: netbsd-7-nhusb
sys/dev/usb/usbhid.h: netbsd-7-nhusb
sys/dev/usb/usbhist.h: netbsd-7-nhusb
sys/dev/usb/usbroothub.c: netbsd-7-nhusb
sys/dev/usb/usbroothub.h: netbsd-7-nhusb
sys/dev/usb/usbroothub_subr.c: delete
sys/dev/usb/usbroothub_subr.h: delete
sys/dev/usb/uscanner.c: netbsd-7-nhusb
sys/dev/usb/uslsa.c: netbsd-7-nhusb
sys/dev/usb/usscanner.c: netbsd-7-nhusb
sys/dev/usb/ustir.c: netbsd-7-nhusb
sys/dev/usb/uthum.c: netbsd-7-nhusb
sys/dev/usb/utoppy.c: netbsd-7-nhusb
sys/dev/usb/uts.c: netbsd-7-nhusb
sys/dev/usb/uvideo.c: netbsd-7-nhusb
sys/dev/usb/uvisor.c: netbsd-7-nhusb
sys/dev/usb/uvscom.c: netbsd-7-nhusb
sys/dev/usb/uyap.c: netbsd-7-nhusb
sys/dev/usb/uyap_firmware.h: netbsd-7-nhusb
sys/dev/usb/uyurex.c: netbsd-7-nhusb
sys/dev/usb/x1input_rdesc.h: netbsd-7-nhusb
sys/dev/usb/xhci.c: netbsd-7-nhusb
sys/dev/usb/xhcireg.h: netbsd-7-nhusb
sys/dev/usb/xhcivar.h: netbsd-7-nhusb
sys/dev/usb/xinput_rdesc.h: netbsd-7-nhusb
sys/external/bsd/common/conf/files.linux: netbsd-7-nhusb
sys/external/bsd/common/include/linux/err.h: netbsd-7-nhusb
sys/external/bsd/common/include/linux/kernel.h: netbsd-7-nhusb
sys/external/bsd/common/include/linux/workqueue.h: netbsd-7-nhusb
sys/external/bsd/common/linux/linux_work.c: netbsd-7-nhusb
sys/external/bsd/drm2/dist/drm/radeon/atombios_encoders.c: netbsd-7-nhusb
sys/external/bsd/drm2/dist/drm/radeon/radeon_legacy_encoders.c: netbsd-7-nhusb
sys/external/bsd/drm2/drm/files.drmkms: netbsd-7-nhusb
sys/external/bsd/drm2/i915drm/files.i915drmkms: netbsd-7-nhusb
sys/external/bsd/drm2/include/linux/err.h: delete
sys/external/bsd/drm2/include/linux/workqueue.h: delete
sys/external/bsd/drm2/linux/files.drmkms_linux: netbsd-7-nhusb
sys/external/bsd/drm2/linux/linux_work.c: delete
sys/external/bsd/dwc2/dwc2.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dwc2.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dwc2var.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dwctwo2netbsd: netbsd-7-nhusb
sys/external/bsd/dwc2/conf/files.dwc2: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_core.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_core.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_coreintr.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcd.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcd.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcdddma.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcdintr.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcdqueue.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hw.h: netbsd-7-nhusb
sys/modules/drmkms_linux/Makefile: netbsd-7-nhusb
sys/modules/i915drmkms/Makefile: netbsd-7-nhusb
sys/rump/dev/lib/libugenhc/ugenhc.c: netbsd-7-nhusb
sys/rump/dev/lib/libusb/Makefile: netbsd-7-nhusb
sys/rump/dev/lib/libusb/USB.ioconf: netbsd-7-nhusb
sys/rump/dev/lib/libusb/usb_at_ugenhc.c: delete
sys/rump/dev/lib/libusb/opt/opt_usb.h: delete
sys/rump/dev/lib/libusb/opt/opt_usbverbose.h: delete
sys/sys/mbuf.h: netbsd-7-nhusb
usr.sbin/usbdevs/usbdevs.8: netbsd-7-nhusb
usr.sbin/usbdevs/usbdevs.c: netbsd-7-nhusb
Merge netbsd-7-nhusb:
- API / infrastructure changes to support memory management changes.
- Memory management improvements and bug fixes.
- HCDs should now be MP safe
- conversion to KERNHIST based debug
- FS/LS isoc support on ehci(4).
- conversion to kmem(9)
- Some USB 3 support - mostly from Takahiro HAYASHI (t-hash).
- interrupt transfers now get proper DMA operations
- general bug fixes
- kern/48308
- uhub status notification improvements
- umass(4) probe fix (applied to HEAD already)
- ohci(4) short transfer fix
- Change the SOFTINT level from NET to SERIAL for the USB softint handler.
This gives the callback a chance of running when another softint handler
at SOFTINT_NET has blocked holding a lock, e.g. softnet_lock and most of
the network stack.
- kern/49065 - ifconfig tun0 ... sequence locks up system / lockup:
softnet_lock held across usb xfr
- kern/50491 - unkillable wait in usbd_transfer while using usmsc0
on raspberry pi 2
- kern/51395 - USB Ethernet makes xhci hang
- Various improvements to slhci(4)
- Various improvements to dwc2(4)
 1.5.2.1 03-Dec-2017  jdolecek update from HEAD
 1.6.32.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.7.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.1 15-Sep-2009  cliff branches: 1.1.2;
file rmixl_el_space.c was initially added on branch matt-nb5-mips64.
 1.1.2.2 15-Nov-2009  cliff - we don't need -el bus space for obio, get rid of it and clean up the naming
- delete rmixl_eb_space.c, rmixl_el_space.c
- add mixl_obio_space.c, provides -eb bus space for obio devices
 1.1.2.1 15-Sep-2009  cliff obio now provides both big endian and little endian bus spaces
to allow child devices to use according to access method needs

also preparing for dual bus_dma methods, one for addrs <4GB,
the other for all memory, including addrs >= 4GB
the bulk of XLS DMA work is still TBD
 1.4 14-May-2020  msaitoh Remove extra semicolon.
 1.3 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.2 14-Dec-2009  matt branches: 1.2.4; 1.2.6; 1.2.8; 1.2.10;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.1 13-Sep-2009  cliff branches: 1.1.2;
file rmixl_firmware.h was initially added on branch matt-nb5-mips64.
 1.1.2.4 23-Jan-2010  cliff define RMI firmware IPIs
 1.1.2.3 17-Jan-2010  cliff - add struct rmixlfw_cpu_wakeup_info and related
 1.1.2.2 09-Nov-2009  cliff - add some new RMIXLFW_MMAP_TYPE_* defines
 1.1.2.1 13-Sep-2009  cliff add netbsd support for RMI XLS6ATX_7A board and XL SoC family
 1.2.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.2.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.1 05-Mar-2011  rmind sync with head
 1.2.4.2 11-Mar-2010  yamt sync with head
 1.2.4.1 14-Dec-2009  yamt file rmixl_firmware.h was added on branch yamt-nfs-mp on 2010-03-11 15:02:41 +0000
 1.1 28-Dec-2011  matt branches: 1.1.2;
file rmixl_flash_eb_space.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 28-Dec-2011  matt Add NOR support for XLP.
 1.1 28-Dec-2011  matt branches: 1.1.2;
file rmixl_flash_el_space.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 28-Dec-2011  matt Add NOR support for XLP.
 1.5 11-Aug-2023  mrg avoid uninitialised variable warnings (likely incorrect ones.)

cry wolved by GCC 12.
 1.4 27-Sep-2011  jym Modify *ASSERTMSG() so they are now used as variadic macros. The main goal
is to provide routines that do as KASSERT(9) says: append a message
to the panic format string when the assertion triggers, with optional
arguments.

Fix call sites to reflect the new definition.

Discussed on tech-kern@. See
http://mail-index.netbsd.org/tech-kern/2011/09/07/msg011427.html
 1.3 29-Apr-2011  matt cpu_number() return an u_int, use %u for format
 1.2 20-Feb-2011  matt branches: 1.2.2;
Merge forward from matt-nb5-mips64.
 1.1 21-Mar-2010  cliff branches: 1.1.2; 1.1.4; 1.1.6;
file rmixl_fmn.c was initially added on branch matt-nb5-mips64.
 1.1.6.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.4.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.2.13 15-Dec-2012  matt Add initial support for XLP II (XLP2XX/XLP1XX).
 1.1.2.12 30-Mar-2012  matt Deal with station ids without names (not all XLS have all stations).
 1.1.2.11 19-Jan-2012  matt Unbreak things so that XLS/XLR boot again. :)
 1.1.2.10 19-Jan-2012  matt Change struct rmixl_cpu_softc to cpu_softc and remove casts.
Fix IPIs.
More FMN cleanup.
 1.1.2.9 04-Jan-2012  matt Rework Fast Messaging Network support (it's now lockless).
Workaround a problem with bus 0 BAR sizing causing the registers behind
the BAR to become inaccessible.
Move much/most of the startup code from evbmips/rmixl/machdep to
mips/rmi/rmixl_machdep.c
Move the code to find the XLP variant to the early boot so it can be used
early.
8bit and 16bit accessed to PCI bus 0 cause cache errors so chagne the access
of pci mem to 32bits.
 1.1.2.8 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.7 29-Apr-2011  matt Major merge to/from current.
Adds MIPS32/MIPS64 R2 support (24k, 74k, etc.) including COP0_USERLOCAL
Adds support for emulation of rdhwr $3,$29 instruction.
Major cleanup of SMP code. (stable on multi-core / single thread per core)
llsc locking code only used in MP capable kernels.
 1.1.2.6 08-Feb-2011  cliff - eliminate assumptions that cpuid 0 is primary
- distinguish between cpuid and cpu index.
 1.1.2.5 05-Feb-2011  cliff - obtain rmixl_intr_lock before rmixl_vec_establish(),
he expects that lock is held
 1.1.2.4 13-Apr-2010  cliff add TNF License and copyright.
 1.1.2.3 13-Apr-2010  cliff improve names to avoid confusion between storage and pointers
 1.1.2.2 29-Mar-2010  cliff - use the new chip-type-specific names for logical station IDs
- dimension fmn_intrhand[] by max number of station for any RMIXL chip type
- add FMN station tables and info for XLR; these are untested.
- rmixl_fmn_init_core() now calls chip-type-specific init subfunctions
which just grab the appropriate station table and info strutures.
 1.1.2.1 21-Mar-2010  cliff add device driver for RMI Fast Message Network
 1.2.2.3 31-May-2011  rmind sync with head
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 20-Feb-2011  rmind file rmixl_fmn.c was added on branch rmind-uvmplock on 2011-03-05 20:51:10 +0000
 1.1 19-Jan-2012  matt branches: 1.1.2;
file rmixl_fmn_pci.c was initially added on branch matt-nb5-mips64.
 1.1.2.2 09-Aug-2012  matt Deal with unallocated spill area in the fmn.
 1.1.2.1 19-Jan-2012  matt PCI attachments (mostly stubs) for most XLP devices.
 1.5 06-Jun-2024  andvar s/sation/station/ in comment.
 1.4 29-Apr-2011  matt Use mips64 for m[tf]c2, not arch=xlr
 1.3 14-Apr-2011  matt Use .set arch=xlr to access RMI specific instructions.
 1.2 20-Feb-2011  matt branches: 1.2.2;
Merge forward from matt-nb5-mips64.
 1.1 21-Mar-2010  cliff branches: 1.1.2; 1.1.4; 1.1.6;
file rmixl_fmnvar.h was initially added on branch matt-nb5-mips64.
 1.1.6.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.4.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.2.9 16-Feb-2012  matt enable_cp2 needs a early clobber
 1.1.2.8 19-Jan-2012  matt Unbreak things so that XLS/XLR boot again. :)
 1.1.2.7 19-Jan-2012  matt Add more function prototypes.
 1.1.2.6 04-Jan-2012  matt Rework Fast Messaging Network support (it's now lockless).
Workaround a problem with bus 0 BAR sizing causing the registers behind
the BAR to become inaccessible.
Move much/most of the startup code from evbmips/rmixl/machdep to
mips/rmi/rmixl_machdep.c
Move the code to find the XLP variant to the early boot so it can be used
early.
8bit and 16bit accessed to PCI bus 0 cause cache errors so chagne the access
of pci mem to 32bits.
 1.1.2.5 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.4 29-Apr-2011  matt Major merge to/from current.
Adds MIPS32/MIPS64 R2 support (24k, 74k, etc.) including COP0_USERLOCAL
Adds support for emulation of rdhwr $3,$29 instruction.
Major cleanup of SMP code. (stable on multi-core / single thread per core)
llsc locking code only used in MP capable kernels.
 1.1.2.3 13-Apr-2010  cliff add TNF License and copyright.
 1.1.2.2 29-Mar-2010  cliff - logical station names are now chip-type-specific
- RMIXL_FMN_NSTID is the max number of station for any RMIXL chip type
 1.1.2.1 21-Mar-2010  cliff add device driver for RMI Fast Message Network
 1.2.2.4 31-May-2011  rmind sync with head
 1.2.2.3 21-Apr-2011  rmind sync with head
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 20-Feb-2011  rmind file rmixl_fmnvar.h was added on branch rmind-uvmplock on 2011-03-05 20:51:10 +0000
 1.5 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.4 24-Apr-2021  thorpej branches: 1.4.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.3 10-Jul-2011  matt branches: 1.3.68;
Fix machine/ includes
 1.2 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.1 18-Mar-2011  cliff branches: 1.1.2; 1.1.6;
add gpio support for RMI XL* chips
 1.1.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.1.6.1 18-Mar-2011  jruoho file rmixl_gpio.c was added on branch jruoho-x86intr on 2011-06-06 09:06:09 +0000
 1.1.2.2 21-Apr-2011  rmind sync with head
 1.1.2.1 18-Mar-2011  rmind file rmixl_gpio.c was added on branch rmind-uvmplock on 2011-04-21 01:41:13 +0000
 1.3.68.1 23-Mar-2021  thorpej Convert config_found_ia() call sites where the device only carries
a single interface attribute to bare config_found() calls.
 1.4.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.1 30-Dec-2011  matt branches: 1.1.2;
file rmixl_gpio_pci.c was initially added on branch matt-nb5-mips64.
 1.1.2.8 14-Nov-2013  matt Deal with new interrupt structure.
 1.1.2.7 15-Dec-2012  matt Add initial support for XLP II (XLP2XX/XLP1XX).
 1.1.2.6 19-Jan-2012  matt Fix percpu usage.
 1.1.2.5 04-Jan-2012  matt Rework Fast Messaging Network support (it's now lockless).
Workaround a problem with bus 0 BAR sizing causing the registers behind
the BAR to become inaccessible.
Move much/most of the startup code from evbmips/rmixl/machdep to
mips/rmi/rmixl_machdep.c
Move the code to find the XLP variant to the early boot so it can be used
early.
8bit and 16bit accessed to PCI bus 0 cause cache errors so chagne the access
of pci mem to 32bits.
 1.1.2.4 31-Dec-2011  matt Switch to using IST_<foo> instead of private enums.
 1.1.2.3 31-Dec-2011  matt Deal with the movement of some GPIO registers on the XPL3xx.
 1.1.2.2 31-Dec-2011  matt Fix xlgpio_pin_ctl inversion problem.
 1.1.2.1 30-Dec-2011  matt Add GPIO support for XLP.
Let NAND, MMC/SD, and SPI remove their pins from the GPIO available pin mask.
 1.1 24-Dec-2011  matt branches: 1.1.2;
file rmixl_i2c.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1 24-Dec-2011  matt branches: 1.1.2;
file rmixl_i2c_obio.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1 24-Dec-2011  matt branches: 1.1.2;
file rmixl_i2c_pci.c was initially added on branch matt-nb5-mips64.
 1.1.2.3 19-Jan-2012  matt Enable interrupts (even though they are not yet used).
 1.1.2.2 27-Dec-2011  matt Add commented out intr establishment.
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1 24-Dec-2011  matt branches: 1.1.2;
file rmixl_i2creg.h was initially added on branch matt-nb5-mips64.
 1.1.2.2 31-Dec-2011  matt Consolidate and complete PCITAGs.
Print/Set BARs for AHCI and SRIO.
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1 24-Dec-2011  matt branches: 1.1.2;
file rmixl_i2cvar.h was initially added on branch matt-nb5-mips64.
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.15 29-Sep-2022  skrll Remove unnecessary include of <sys/malloc.h>.
 1.14 29-Sep-2022  skrll Trailing whitespace
 1.13 09-Apr-2022  riastradh mips/rmixl: Insert appropriate membars around IPIs.
 1.12 26-Aug-2016  skrll Adjust evbmips_iointr to pass a clockframe pointer and use it for
pwmclock @ voyager.

Suggested by matt@

Hi macallan!
 1.11 01-Aug-2016  dholland PR 51384 David Binderman: don't shift into the void
 1.10 23-Apr-2016  skrll branches: 1.10.2;
Merge nick-nhusb

- API / infrastructure changes to support memory management changes.
- Memory management improvements and bug fixes.
- HCDs should now be MP safe
- conversion to KERNHIST based debug
- FS/LS isoc support on ehci(4).
- conversion to kmem(9)
- Some USB 3 support - mostly from Takahiro HAYASHI (t-hash).
- interrupt transfers now get proper DMA operations
- general bug fixes
- kern/48308
- uhub status notification improvements
- umass(4) probe fix (applied to HEAD already)
- ohci(4) short transfer fix
 1.9 10-Jun-2015  matt Transition from __cpuset_t to kcpuset_t *. This brings the local pmap one
step closer to uvm/pmap, its eventual replacement. Tested on ERLITE MP kernel.
 1.8 27-Sep-2011  jym branches: 1.8.12; 1.8.30;
Modify *ASSERTMSG() so they are now used as variadic macros. The main goal
is to provide routines that do as KASSERT(9) says: append a message
to the panic format string when the assertion triggers, with optional
arguments.

Fix call sites to reflect the new definition.

Discussed on tech-kern@. See
http://mail-index.netbsd.org/tech-kern/2011/09/07/msg011427.html
 1.7 10-Jul-2011  matt Fix machine/ includes
 1.6 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.5 29-Apr-2011  matt minor constification, format cleanups
 1.4 14-Apr-2011  cliff - in evbmips_iointr(), call assembly function rmixl_eirr_ack()
to ack the EIRR, instead of using a bunch of asm() here.
- in rmixl_ipi_intr(), remove overly paranoid assert that the given
IPI request is pending; if the request is clear, it was previously processed.
- in rmixl_vecnames_common[], give ipi vectors unique (numbered) names
 1.3 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.2 14-Dec-2009  matt branches: 1.2.4; 1.2.6; 1.2.8; 1.2.10;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.1 13-Sep-2009  cliff branches: 1.1.2;
file rmixl_intr.c was initially added on branch matt-nb5-mips64.
 1.1.2.39 14-Feb-2014  matt Change KASSERTMSG/KDASSERTMSG to use varadic arguments like HEAD.
panic -> vpanic, add panic wrapper to vpanic.
 1.1.2.38 05-Nov-2013  matt Add XLP2XX support.
 1.1.2.37 15-Dec-2012  matt Add initial support for XLP II (XLP2XX/XLP1XX).
 1.1.2.36 27-Feb-2012  matt Add a test for recursive IPIs.
use __builtin_clzll
 1.1.2.35 19-Jan-2012  matt Change struct rmixl_cpu_softc to cpu_softc and remove casts.
Fix IPIs.
More FMN cleanup.
 1.1.2.34 04-Jan-2012  matt Rework Fast Messaging Network support (it's now lockless).
Workaround a problem with bus 0 BAR sizing causing the registers behind
the BAR to become inaccessible.
Move much/most of the startup code from evbmips/rmixl/machdep to
mips/rmi/rmixl_machdep.c
Move the code to find the XLP variant to the early boot so it can be used
early.
8bit and 16bit accessed to PCI bus 0 cause cache errors so chagne the access
of pci mem to 32bits.
 1.1.2.33 31-Dec-2011  matt Switch to using IST_<foo> instead of private enums.
 1.1.2.32 31-Dec-2011  matt XLP8xx and XLP3xx have different IRT layouts.
 1.1.2.31 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.30 29-Apr-2011  matt Major merge to/from current.
Adds MIPS32/MIPS64 R2 support (24k, 74k, etc.) including COP0_USERLOCAL
Adds support for emulation of rdhwr $3,$29 instruction.
Major cleanup of SMP code. (stable on multi-core / single thread per core)
llsc locking code only used in MP capable kernels.
 1.1.2.29 08-Feb-2011  cliff - in rmixl_intr_init_clk, use MIPS_INT_MASK_SHIFT instead of 8
when calculating vector number for clock.
 1.1.2.28 08-Feb-2011  cliff - use mutex_obj_alloc() instead of declaring locks statically
 1.1.2.27 08-Feb-2011  cliff - remove sc_ih_clk, sc_ih_fmn, sc_ih_ipi from struct rmixl_cpu_softc;
they were unused just taking up space
- rmixl_intr_init_clk() and rmixl_intr_init_ipi() are now type void
 1.1.2.26 08-Feb-2011  cliff - distinguish between cpuid and cpu index.
 1.1.2.25 05-Feb-2011  cliff - include opt_multiprocessor.h for MULTIPROCESSOR dependency
- use seperate vectors for various IPI tags, instead of all piling on one.
this theoretically allows different functions to interrupt at different
priorities. the fmn vector number got rippled up in the process.
- add rmixl_ipi_lock to serialize access to RMIXL_PIC_IPIBASE
- add rmixl_intr_lock to serialize access to rest of PIC and rmixl_intrhand[]
- include mips/cpuset.h and use CPUSET_* macros for cpus_running &etc.
 1.1.2.24 20-Sep-2010  cliff - rmixl_intrhand_t is valid only if ih_func is non-NULL;
set valid at end of rmixl_vec_establish and
set invalid at start of rmixl_vec_disestablish
to allow lockless check if valid in dispatch.
 1.1.2.23 26-Aug-2010  rmind Fix non-DEBUG/DIAGNOSTIC builds of RMI mips64.
 1.1.2.22 10-Jun-2010  cliff - remove rmixl_spl_init_cpu calls from rmixl_intr_init_cpu
because rmixl_intr_init_cpu only runs on cpu#0.
rmixl_spl_init_cpu calls are now done in cpu_rmixl_atach (for cpu#0)
or cpu_rmixl_hatch (for other cpus).
- in evbmips_iointr, be sure to mask out count/compare interrupt
along with softints (these are handled elsewhere)
and improve coments
- fix bug in rmixl_send_ipi: 'cpus_running' is bit-indexed
by ci_index, not ci_cpuid
 1.1.2.21 28-May-2010  cliff rmixl_spl.S:
- where possible, stop using CP0 STATUS to disable all interrupts,zero EIMR instead. more efficient since less meddling with CP0.
assume STATUS[IE] is normally set.
- add rmixl_spl_init_cpu(), to initialize cp0 interrupt control for this cpu

rmixl_intr.c:
- rmixl_intr_init_cpu() calls rmixl_spl_init_cpu()
to set up CP0 interrupt controls for this cpu
 1.1.2.20 21-May-2010  cliff - rename IRT based interrupts to "pic int ..."
- rename rmixl_vecnames_common to "vec ..."
- move ipl_eimr_map table print into rmixl_ipl_eimr_map_print()
- consolidate debug print funcs at the end of the file
- 'irq' -- being somewhat ambiguous -- renamed to 'irt' throughout
to reflect use as IRT index
- IRT-based interrupts are moved to EIRR/EIMR vectors (bits) 32..63
to avoid all opverlap with EIRR/EIMR bits 0..7 which are CAUSE[8..15].
To date this has been a non-issue since we aren't using the
watchdog or timers there. non-IRT interrupts (FMN and IPI) are moved
to unused portion vectors 8, 9
- in rmixl_intr_init_cpu, instead of writing 0 to EIRR, ack with bits read
(excluding CAUSE[8..15] bits) as defense against possible stale
interrupts inherited from firmware (paranoid -- we aren't seeing any).
- rmixl_irt_establish gets a 'vec' arg for use in IRTENTRYC1 reg
(no longer assume vec = irt)
- set/clear irq bits in ipl_eimr_map[] during interrupt establish/disestablish
- in evbmips_iointr(), mask off ints enabled at higher ipl; we only
dispatch interrupts at highest enabling ipl.
 1.1.2.19 06-May-2010  cliff fix pcie IRQ assignments for XLS2xx
 1.1.2.18 01-May-2010  cliff in evbmips_iointr() for RMI, where we ack the EIRR,
replace (relatively expensive) splhigh()/splx()
protection with (more efficient) EIMR-based disable/restore.
 1.1.2.17 12-Apr-2010  cliff - establishing an ISR now takes 'mpsafe' arg
- obtain/release kernel lock around calls to non-mpsafe ISRs
 1.1.2.16 29-Mar-2010  cliff - add IRT-based interrupt names for XLR
- rmixl_intr_string() calls chip-type-specific functions
to get appropriate names table
 1.1.2.15 21-Mar-2010  cliff - rework to make full use of RMI extended interrupt management
provided by EIRR/EIMR registers
- depends on rmixl_spl.S
- add support for IRT based interrupt routing; for now we are still routing
all IRT interrupts to CPU#0.
- note that count/compare clock, IPI and FMN are handled by each CPU since
these are local interrupt sources.
- further changes are still needed for XLR and XLP support
 1.1.2.14 28-Feb-2010  matt Add #define __INTR_PRIVATE
 1.1.2.13 23-Feb-2010  matt Instead of a read-only ipl_sr_bits, define a ipl_sr_map struct and fill that
in the interrupt init routine. There's a default ipl_sr_map will operate
correctly, but isn't performant.
 1.1.2.12 16-Feb-2010  matt Add __HAVE_PREEMPTION support for NetBSD/mips. Kill IPL_PREEMPT since it
isn't needed.
 1.1.2.11 15-Feb-2010  matt Adapt to the new interrupt framework for NetBSD/mips.
 1.1.2.10 06-Feb-2010  cliff - when establishing an intr, if malloc fails, be sure to splx on the way out
- in interrupt dispatch, when ack-ing EIRR, preserve the softint bits
 1.1.2.9 06-Feb-2010  matt A little constification and remove some old softintr cruft.
 1.1.2.8 29-Jan-2010  cliff - be more thorough about 'mips_cpu_id' based variations
- rip out pcie interrupt related debug stuff
- start thinking about MULTIPROCESSOR IRT entries in rmixl_intr_irt_init()
 1.1.2.7 20-Jan-2010  matt Adjust things to the new world order.
 1.1.2.6 12-Dec-2009  cliff - in ipl_sr_bits[], ensure ints for unused vectors are always disabled
and ensure that MIPS_INT_MASK_5 (clock) is enabled as needed
- break IRT entry management out into routines;
this allows e.g. setup of IRT entry for clock without all the
rest of rmixl_intr_irt_establish()
- evbmips_intr_init() now creates IRT entry for mips3 clock interrupt
 1.1.2.5 13-Nov-2009  cliff - KASSERT this interrupt code being used on XLS family CPU
 1.1.2.4 09-Nov-2009  cliff - multiple changes; make interrupts work
 1.1.2.3 25-Sep-2009  cliff chop out some test printf's
 1.1.2.2 25-Sep-2009  cliff rmixl gets interrupt support
 1.1.2.1 13-Sep-2009  cliff add netbsd support for RMI XLS6ATX_7A board and XL SoC family
 1.2.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.2.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.3 31-May-2011  rmind sync with head
 1.2.6.2 21-Apr-2011  rmind sync with head
 1.2.6.1 05-Mar-2011  rmind sync with head
 1.2.4.2 11-Mar-2010  yamt sync with head
 1.2.4.1 14-Dec-2009  yamt file rmixl_intr.c was added on branch yamt-nfs-mp on 2010-03-11 15:02:41 +0000
 1.8.30.2 05-Oct-2016  skrll Sync with HEAD
 1.8.30.1 22-Sep-2015  skrll Sync with HEAD
 1.8.12.1 03-Dec-2017  jdolecek update from HEAD
 1.10.2.1 06-Aug-2016  pgoyette Sync with HEAD
 1.3 14-Apr-2011  cliff - add compile time check in case NIPIS ever exceeds number of available vectors
 1.2 20-Feb-2011  matt branches: 1.2.2;
Merge forward from matt-nb5-mips64.
 1.1 21-Mar-2010  cliff branches: 1.1.2; 1.1.4; 1.1.6;
file rmixl_intr.h was initially added on branch matt-nb5-mips64.
 1.1.6.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.4.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.2.13 05-Nov-2013  matt Add XLP2XX support.
 1.1.2.12 04-Jan-2012  matt Rework Fast Messaging Network support (it's now lockless).
Workaround a problem with bus 0 BAR sizing causing the registers behind
the BAR to become inaccessible.
Move much/most of the startup code from evbmips/rmixl/machdep to
mips/rmi/rmixl_machdep.c
Move the code to find the XLP variant to the early boot so it can be used
early.
8bit and 16bit accessed to PCI bus 0 cause cache errors so chagne the access
of pci mem to 32bits.
 1.1.2.11 31-Dec-2011  matt Switch to using IST_<foo> instead of private enums.
 1.1.2.10 30-Dec-2011  matt Add GPIO support for XLP.
Let NAND, MMC/SD, and SPI remove their pins from the GPIO available pin mask.
 1.1.2.9 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.8 29-Apr-2011  matt Major merge to/from current.
Adds MIPS32/MIPS64 R2 support (24k, 74k, etc.) including COP0_USERLOCAL
Adds support for emulation of rdhwr $3,$29 instruction.
Major cleanup of SMP code. (stable on multi-core / single thread per core)
llsc locking code only used in MP capable kernels.
 1.1.2.7 08-Feb-2011  cliff - remove sc_ih_clk, sc_ih_fmn, sc_ih_ipi from struct rmixl_cpu_softc;
they were unused just taking up space
- rmixl_intr_init_clk() and rmixl_intr_init_ipi() are now type void
 1.1.2.6 05-Feb-2011  cliff - protect option includes ("opt_multiprocessor.h") with #ifdef _KERNEL_OPT
 1.1.2.5 05-Feb-2011  cliff - include opt_multiprocessor.h for MULTIPROCESSOR dependency
- move RMIXL_INTRVEC_FMN to RMIXL_INTRVEC_IPI + NIPIS
since each IPI tag now has own vector
 1.1.2.4 21-May-2010  cliff - rename IRT based interrupts to "pic int ..."
- rename rmixl_vecnames_common to "vec ..."
- move ipl_eimr_map table print into rmixl_ipl_eimr_map_print()
- consolidate debug print funcs at the end of the file
- 'irq' -- being somewhat ambiguous -- renamed to 'irt' throughout
to reflect use as IRT index
- IRT-based interrupts are moved to EIRR/EIMR vectors (bits) 32..63
to avoid all opverlap with EIRR/EIMR bits 0..7 which are CAUSE[8..15].
To date this has been a non-issue since we aren't using the
watchdog or timers there. non-IRT interrupts (FMN and IPI) are moved
to unused portion vectors 8, 9
- in rmixl_intr_init_cpu, instead of writing 0 to EIRR, ack with bits read
(excluding CAUSE[8..15] bits) as defense against possible stale
interrupts inherited from firmware (paranoid -- we aren't seeing any).
- rmixl_irt_establish gets a 'vec' arg for use in IRTENTRYC1 reg
(no longer assume vec = irt)
- set/clear irq bits in ipl_eimr_map[] during interrupt establish/disestablish
- in evbmips_iointr(), mask off ints enabled at higher ipl; we only
dispatch interrupts at highest enabling ipl.
 1.1.2.3 13-Apr-2010  cliff add TNF License and copyright.
 1.1.2.2 12-Apr-2010  cliff - establishing an ISR now takes 'mpsafe' arg
- obtain/release kernel lock around calls to non-mpsafe ISRs
 1.1.2.1 21-Mar-2010  cliff - added this file of RMI interrupt stuff
 1.2.2.3 21-Apr-2011  rmind sync with head
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 20-Feb-2011  rmind file rmixl_intr.h was added on branch rmind-uvmplock on 2011-03-05 20:51:10 +0000
 1.7 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.6 24-Apr-2021  thorpej branches: 1.6.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.5 21-Aug-2019  msaitoh branches: 1.5.10;
Fix typo (s/controler/controller/).
 1.4 16-Sep-2018  skrll interrupt has two 'r's

fix another typo while I'm here (flsah)
 1.3 01-Jul-2011  dyoung branches: 1.3.8; 1.3.54; 1.3.56;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.2 18-Mar-2011  cliff branches: 1.2.2; 1.2.6;
- fix typo when clearing pre-existing intrs in attach
 1.1 18-Mar-2011  cliff - add support for Peripherals IO Bus for RMI XL* chips
 1.2.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.1 18-Mar-2011  jruoho file rmixl_iobus.c was added on branch jruoho-x86intr on 2011-06-06 09:06:09 +0000
 1.2.2.2 21-Apr-2011  rmind sync with head
 1.2.2.1 18-Mar-2011  rmind file rmixl_iobus.c was added on branch rmind-uvmplock on 2011-04-21 01:41:13 +0000
 1.3.56.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.3.56.1 10-Jun-2019  christos Sync with HEAD
 1.3.54.1 30-Sep-2018  pgoyette Ssync with HEAD
 1.3.8.3 19-Jan-2012  matt Fix config ifattr.
 1.3.8.2 27-Dec-2011  matt Add NOR/NAND (from HEAD)/SPI attachments.
 1.3.8.1 01-Jul-2011  matt file rmixl_iobus.c was added on branch matt-nb5-mips64 on 2011-12-27 19:58:19 +0000
 1.5.10.6 05-Apr-2021  thorpej Treat config_probe() as if it were a boolean function; don't compare
return value > 0... except for the odd balls, which are now really easy
to spot.
 1.5.10.5 05-Apr-2021  thorpej config_match() -> config_probe() for the straight-forward indirect config
cases. There are still a few odd balls using config_match() which should
be sorted out later.
 1.5.10.4 04-Apr-2021  thorpej CFARG_SUBMATCH -> CFARG_SEARCH for the indirect configuration uses.
 1.5.10.3 03-Apr-2021  thorpej Give config_attach() the tagged variadic argument treatment and
mechanically convert all call sites.
 1.5.10.2 21-Mar-2021  thorpej CFARG_IATTR usage audit:

If a device carries only one interface attribute, there is no need
to specify it when calling config_search(); that specification is
meant only to disambiguate which interface attribute (which is a
proxy for "what kind of attach args are being used") is having
children attached. cfparent_match() will take care of ensuring that
any potential children can attach to one of the parent's iterface
attributes, and if the parent only carries one, no disambiguation is
necessary.
 1.5.10.1 20-Mar-2021  thorpej The proliferation if config_search_*() and config_found_*() combinations
is a little absurd, so begin to tidy this up:

- Introduce a new cfarg_t enumerated type, that defines the types of
tag-value variadic arguments that can be passed to the various
config_*() functions (CFARG_SUBMATCH, CFARG_IATTR, and CFARG_LOCATORS,
for now, plus a CFARG_EOL sentinel).
- Collapse config_search_*() into config_search() that takes these
variadic arguments.
- Convert all call sites of config_search_*() to the new signature.
Noticed several incorrect usages along the way, which will be
audited in a future commit.
 1.6.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.3 01-Jul-2011  dyoung branches: 1.3.8;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.2 18-Mar-2011  cliff branches: 1.2.2; 1.2.6;
RMIXL_FLASH_BAR_MASK_MAX is __BITS(34,0)
so avoid using extent if that value overflows 'long'
 1.1 18-Mar-2011  cliff - add support for Peripherals IO Bus for RMI XL* chips
 1.2.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.1 18-Mar-2011  jruoho file rmixl_iobus_space.c was added on branch jruoho-x86intr on 2011-06-06 09:06:09 +0000
 1.2.2.2 21-Apr-2011  rmind sync with head
 1.2.2.1 18-Mar-2011  rmind file rmixl_iobus_space.c was added on branch rmind-uvmplock on 2011-04-21 01:41:13 +0000
 1.3.8.2 27-Dec-2011  matt Add NOR/NAND (from HEAD)/SPI attachments.
 1.3.8.1 01-Jul-2011  matt file rmixl_iobus_space.c was added on branch matt-nb5-mips64 on 2011-12-27 19:58:19 +0000
 1.2 21-Aug-2019  msaitoh Fix typo (s/controler/controller/).
 1.1 18-Mar-2011  cliff branches: 1.1.2; 1.1.6; 1.1.14; 1.1.62;
- add support for Peripherals IO Bus for RMI XL* chips
 1.1.62.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.14.2 27-Dec-2011  matt Add NOR/NAND (from HEAD)/SPI attachments.
 1.1.14.1 18-Mar-2011  matt file rmixl_iobusvar.h was added on branch matt-nb5-mips64 on 2011-12-27 19:58:19 +0000
 1.1.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.1.6.1 18-Mar-2011  jruoho file rmixl_iobusvar.h was added on branch jruoho-x86intr on 2011-06-06 09:06:09 +0000
 1.1.2.2 21-Apr-2011  rmind sync with head
 1.1.2.1 18-Mar-2011  rmind file rmixl_iobusvar.h was added on branch rmind-uvmplock on 2011-04-21 01:41:13 +0000
 1.1 04-Jan-2012  matt branches: 1.1.2;
file rmixl_machdep.c was initially added on branch matt-nb5-mips64.
 1.1.2.5 15-Dec-2012  matt Add initial support for XLP II (XLP2XX/XLP1XX).
 1.1.2.4 16-Feb-2012  matt Add mips_ksegx_tlb_slot.
When casting pointers, use intptr_t so we get proper sign extension.
 1.1.2.3 02-Feb-2012  matt Fix XLP case where we weren't copying mem_clusters to avail_clusters.
 1.1.2.2 27-Jan-2012  matt Keep mem_clusters as the original amount of memory and add avail_cluster
as the edited version.
 1.1.2.1 04-Jan-2012  matt Rework Fast Messaging Network support (it's now lockless).
Workaround a problem with bus 0 BAR sizing causing the registers behind
the BAR to become inaccessible.
Move much/most of the startup code from evbmips/rmixl/machdep to
mips/rmi/rmixl_machdep.c
Move the code to find the XLP variant to the early boot so it can be used
early.
8bit and 16bit accessed to PCI bus 0 cause cache errors so chagne the access
of pci mem to 32bits.
 1.8 29-Sep-2022  skrll Remove unnecessary include of <sys/malloc.h>.
 1.7 29-Sep-2022  skrll Trailing whitespace
 1.6 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.5 24-Apr-2021  thorpej branches: 1.5.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.4 01-Jul-2011  dyoung branches: 1.4.68;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.3 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.2 14-Dec-2009  matt branches: 1.2.4; 1.2.6; 1.2.8; 1.2.10;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.1 13-Sep-2009  cliff branches: 1.1.2;
file rmixl_mainbus.c was initially added on branch matt-nb5-mips64.
 1.1.2.7 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.6 16-Jan-2010  cliff - mainbus now attaches cpunode's
 1.1.2.5 13-Jan-2010  cliff - clean up formatting in print functions
 1.1.2.4 13-Jan-2010  cliff - nuke mainbussearch()
- use config_found (vs. config_search_ia) for cpucore's and obio
- print L2 cache attributes
 1.1.2.3 09-Nov-2009  cliff - convert to CFATTACH_DECL_NEW & related
 1.1.2.2 15-Sep-2009  cliff some code cleanup
 1.1.2.1 13-Sep-2009  cliff add netbsd support for RMI XLS6ATX_7A board and XL SoC family
 1.2.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.2.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.1 05-Mar-2011  rmind sync with head
 1.2.4.2 11-Mar-2010  yamt sync with head
 1.2.4.1 14-Dec-2009  yamt file rmixl_mainbus.c was added on branch yamt-nfs-mp on 2010-03-11 15:02:41 +0000
 1.4.68.7 05-Apr-2021  thorpej Treat config_probe() as if it were a boolean function; don't compare
return value > 0... except for the odd balls, which are now really easy
to spot.
 1.4.68.6 05-Apr-2021  thorpej config_match() -> config_probe() for the straight-forward indirect config
cases. There are still a few odd balls using config_match() which should
be sorted out later.
 1.4.68.5 04-Apr-2021  thorpej CFARG_SUBMATCH -> CFARG_SEARCH for the indirect configuration uses.
 1.4.68.4 03-Apr-2021  thorpej Give config_attach() the tagged variadic argument treatment and
mechanically convert all call sites.
 1.4.68.3 21-Mar-2021  thorpej CFARG_IATTR usage audit:

If a device carries only one interface attribute, there is no need
to specify it when calling config_search(); that specification is
meant only to disambiguate which interface attribute (which is a
proxy for "what kind of attach args are being used") is having
children attached. cfparent_match() will take care of ensuring that
any potential children can attach to one of the parent's iterface
attributes, and if the parent only carries one, no disambiguation is
necessary.
 1.4.68.2 20-Mar-2021  thorpej Don't pass the autoconfig print routine as the aux pointer to the
indirect search routine. That argument slot is meant for "attach
args" structures, not function pointers. Besides, no one actually
used it anyway.
 1.4.68.1 20-Mar-2021  thorpej The proliferation if config_search_*() and config_found_*() combinations
is a little absurd, so begin to tidy this up:

- Introduce a new cfarg_t enumerated type, that defines the types of
tag-value variadic arguments that can be passed to the various
config_*() functions (CFARG_SUBMATCH, CFARG_IATTR, and CFARG_LOCATORS,
for now, plus a CFARG_EOL sentinel).
- Collapse config_search_*() into config_search() that takes these
variadic arguments.
- Convert all call sites of config_search_*() to the new signature.
Noticed several incorrect usages along the way, which will be
audited in a future commit.
 1.5.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.1 24-Dec-2011  matt branches: 1.1.2;
file rmixl_nae.c was initially added on branch matt-nb5-mips64.
 1.1.2.2 19-Jan-2012  matt Fix CFATTACH_DECL_NEW so kernels build again.
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1 24-Dec-2011  matt branches: 1.1.2;
file rmixl_naereg.h was initially added on branch matt-nb5-mips64.
 1.1.2.2 31-Dec-2011  matt Consolidate and complete PCITAGs.
Print/Set BARs for AHCI and SRIO.
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.8 10-May-2023  riastradh mips: Use config_detach_children to reduce error branch bugs.
 1.7 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.6 28-Jun-2011  ahoka follow nand api changes
 1.5 27-Mar-2011  ahoka branches: 1.5.2; 1.5.6;
use nand_init_interface
 1.4 18-Mar-2011  cliff fix typo
 1.3 18-Mar-2011  cliff style improvements, input from matt@
 1.2 18-Mar-2011  cliff cosmetics
 1.1 18-Mar-2011  cliff - add NAND suport for RMI XL* chips
 1.5.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.5.6.1 27-Mar-2011  jruoho file rmixl_nand.c was added on branch jruoho-x86intr on 2011-06-06 09:06:10 +0000
 1.5.2.2 21-Apr-2011  rmind sync with head
 1.5.2.1 27-Mar-2011  rmind file rmixl_nand.c was added on branch rmind-uvmplock on 2011-04-21 01:41:13 +0000
 1.1 27-Dec-2011  matt branches: 1.1.2;
file rmixl_nand_iobus.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 27-Dec-2011  matt Add NOR/NAND (from HEAD)/SPI attachments.
 1.1 27-Dec-2011  matt branches: 1.1.2;
file rmixl_nand_pci.c was initially added on branch matt-nb5-mips64.
 1.1.2.4 14-Feb-2014  matt Change KASSERTMSG/KDASSERTMSG to use varadic arguments like HEAD.
panic -> vpanic, add panic wrapper to vpanic.
 1.1.2.3 05-Nov-2013  matt Start of a nand for xlp3xx/xlp2xx.
 1.1.2.2 30-Dec-2011  matt Add GPIO support for XLP.
Let NAND, MMC/SD, and SPI remove their pins from the GPIO available pin mask.
 1.1.2.1 27-Dec-2011  matt Add NOR/NAND (from HEAD)/SPI attachments.
 1.1 27-Dec-2011  matt branches: 1.1.2;
file rmixl_nor_pci.c was initially added on branch matt-nb5-mips64.
 1.1.2.2 28-Dec-2011  matt Add NOR support for XLP.
 1.1.2.1 27-Dec-2011  matt Add NOR/NAND (from HEAD)/SPI attachments.
 1.10 29-Sep-2022  skrll Remove unnecessary include of <sys/malloc.h>.
 1.9 22-Jan-2022  skrll Ensure bus_dmatag_subregion is called with an inclusive max_addr
everywhere.
 1.8 22-Jan-2022  skrll Trailing whitespace
 1.7 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.6 24-Apr-2021  thorpej branches: 1.6.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.5 10-Jul-2011  matt branches: 1.5.68;
Fix machine/ includes
 1.4 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.3 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.2 14-Dec-2009  matt branches: 1.2.4; 1.2.6; 1.2.8; 1.2.10;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.1 13-Sep-2009  cliff branches: 1.1.2;
file rmixl_obio.c was initially added on branch matt-nb5-mips64.
 1.1.2.18 31-Dec-2011  matt Switch to using IST_<foo> instead of private enums.
 1.1.2.17 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.16 17-Apr-2010  cliff - struct rmixl_config field 'rc_64bit_dmat' is now a bus_dma_tag_t
and initially points at 'rc_dma_tag' which provides the store area.
this allows rc_64bit_dmat to be subregioned for imposing
bounce-buffering if needed.
 1.1.2.15 12-Apr-2010  cliff - specifiy if mpsafe when establishing interrupts
(all are 'false' except comintr for now)
 1.1.2.14 21-Mar-2010  cliff - add use of the 'tmsk' locator
- adapt to new rmixl_intr_establish() args
- establishing the system bridge controller
address error interrupt is now explicitly XLS specific
 1.1.2.13 24-Jan-2010  cliff remove include of "obio.h"
 1.1.2.12 20-Jan-2010  matt cleanup attachments so that other mips cpus can use the same scheme.
 1.1.2.11 13-Jan-2010  cliff - don't match if attach arg name doesn;t match cf_name
 1.1.2.10 10-Jan-2010  matt Actually use a 32bit limit for the 32bit bus_dma_tag.
 1.1.2.9 10-Jan-2010  matt Add generic support for DMA bounce buffers and real version of
bus_dmatag_subregion. MALTA uses it for ISADMA. Make RMIXL use
for creating 32bit and 29bit subregions.
 1.1.2.8 14-Dec-2009  cliff - replace single bus space with two (big & little endian) bus spaces for obio
 1.1.2.7 18-Nov-2009  cliff - use PRIxBUSADDR, PRIxBUSSIZE formats as needed
 1.1.2.6 15-Nov-2009  cliff - use PRIxPADDR and PRIxPSIZE as needed when printing
bus address and size following change in typedef
- use new obio bus space
 1.1.2.5 09-Nov-2009  cliff - convert to CFATTACH_DECL_NEW & related
- add obio_dma_init_29() to allow DMA for addrs < 512MB
- obio_dma_init_32() and obio_dma_init_64() are TBD (#ifdef NOTYET)
- obio_bus_dmamap_sync() provides null DMA sync function, since
DMA is cache coherent
- rmixl_addr_error_init() establishes ISR for address error interrupt
 1.1.2.4 15-Sep-2009  cliff make functions static
 1.1.2.3 15-Sep-2009  cliff obio now provides both big endian and little endian bus spaces
to allow child devices to use according to access method needs

also preparing for dual bus_dma methods, one for addrs <4GB,
the other for all memory, including addrs >= 4GB
the bulk of XLS DMA work is still TBD
 1.1.2.2 13-Sep-2009  cliff improve how some config data are managed
 1.1.2.1 13-Sep-2009  cliff add netbsd support for RMI XLS6ATX_7A board and XL SoC family
 1.2.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.2.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.1 05-Mar-2011  rmind sync with head
 1.2.4.2 11-Mar-2010  yamt sync with head
 1.2.4.1 14-Dec-2009  yamt file rmixl_obio.c was added on branch yamt-nfs-mp on 2010-03-11 15:02:41 +0000
 1.5.68.6 05-Apr-2021  thorpej Treat config_probe() as if it were a boolean function; don't compare
return value > 0... except for the odd balls, which are now really easy
to spot.
 1.5.68.5 05-Apr-2021  thorpej config_match() -> config_probe() for the straight-forward indirect config
cases. There are still a few odd balls using config_match() which should
be sorted out later.
 1.5.68.4 04-Apr-2021  thorpej CFARG_SUBMATCH -> CFARG_SEARCH for the indirect configuration uses.
 1.5.68.3 03-Apr-2021  thorpej Give config_attach() the tagged variadic argument treatment and
mechanically convert all call sites.
 1.5.68.2 21-Mar-2021  thorpej CFARG_IATTR usage audit:

If a device carries only one interface attribute, there is no need
to specify it when calling config_search(); that specification is
meant only to disambiguate which interface attribute (which is a
proxy for "what kind of attach args are being used") is having
children attached. cfparent_match() will take care of ensuring that
any potential children can attach to one of the parent's iterface
attributes, and if the parent only carries one, no disambiguation is
necessary.
 1.5.68.1 20-Mar-2021  thorpej The proliferation if config_search_*() and config_found_*() combinations
is a little absurd, so begin to tidy this up:

- Introduce a new cfarg_t enumerated type, that defines the types of
tag-value variadic arguments that can be passed to the various
config_*() functions (CFARG_SUBMATCH, CFARG_IATTR, and CFARG_LOCATORS,
for now, plus a CFARG_EOL sentinel).
- Collapse config_search_*() into config_search() that takes these
variadic arguments.
- Convert all call sites of config_search_*() to the new signature.
Noticed several incorrect usages along the way, which will be
audited in a future commit.
 1.6.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.3 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.2 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.1 14-Dec-2009  cliff branches: 1.1.2; 1.1.6; 1.1.8; 1.1.10;
file rmixl_obio_eb_space.c was initially added on branch matt-nb5-mips64.
 1.1.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.6.1 05-Mar-2011  rmind sync with head
 1.1.2.2 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.1 14-Dec-2009  cliff obio now has 2 bus spaces, one each for Big and Little Endian access
- delete rmixl_obio_space.c
- add rmixl_obio_eb_space.c, rmixl_obio_el_space.c
 1.4 16-Sep-2021  andvar fix various typos, mainly in comments.
 1.3 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.2 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.1 14-Dec-2009  cliff branches: 1.1.2; 1.1.6; 1.1.8; 1.1.10;
file rmixl_obio_el_space.c was initially added on branch matt-nb5-mips64.
 1.1.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.6.1 05-Mar-2011  rmind sync with head
 1.1.2.2 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.1 14-Dec-2009  cliff obio now has 2 bus spaces, one each for Big and Little Endian access
- delete rmixl_obio_space.c
- add rmixl_obio_eb_space.c, rmixl_obio_el_space.c
 1.3 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.2 14-Dec-2009  matt branches: 1.2.4; 1.2.6; 1.2.8; 1.2.10;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.1 13-Sep-2009  cliff branches: 1.1.2;
file rmixl_obio_space.c was initially added on branch matt-nb5-mips64.
 1.1.2.6 14-Dec-2009  cliff obio now has 2 bus spaces, one each for Big and Little Endian access
- delete rmixl_obio_space.c
- add rmixl_obio_eb_space.c, rmixl_obio_el_space.c
 1.1.2.5 18-Nov-2009  cliff - add extents for bus spaces
 1.1.2.4 15-Nov-2009  cliff - we don't need -el bus space for obio, get rid of it and clean up the naming
- delete rmixl_eb_space.c, rmixl_el_space.c
- add mixl_obio_space.c, provides -eb bus space for obio devices
 1.1.2.3 15-Sep-2009  cliff obio now provides both big endian and little endian bus spaces
to allow child devices to use according to access method needs

also preparing for dual bus_dma methods, one for addrs <4GB,
the other for all memory, including addrs >= 4GB
the bulk of XLS DMA work is still TBD
 1.1.2.2 13-Sep-2009  cliff improve how some config data are managed
 1.1.2.1 13-Sep-2009  cliff add netbsd support for RMI XLS6ATX_7A board and XL SoC family
 1.2.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.2.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.1 05-Mar-2011  rmind sync with head
 1.2.4.2 11-Mar-2010  yamt sync with head
 1.2.4.1 14-Dec-2009  yamt file rmixl_obio_space.c was added on branch yamt-nfs-mp on 2010-03-11 15:02:41 +0000
 1.4 08-Jul-2011  dyoung Just #include <sys/bus.h> instead of <machine/bus_dma.h>, which is going
away, soon.
 1.3 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.2 14-Dec-2009  matt branches: 1.2.4; 1.2.6; 1.2.8; 1.2.10;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.1 13-Sep-2009  cliff branches: 1.1.2;
file rmixl_obiovar.h was initially added on branch matt-nb5-mips64.
 1.1.2.10 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.9 13-Apr-2010  cliff add TNF License and copyright.
 1.1.2.8 21-Mar-2010  cliff - add obio_tmsk interrupt routing mask to obio_attach_args
 1.1.2.7 14-Dec-2009  cliff - replace single bus space with two (big & little endian) bus spaces for obio
 1.1.2.6 15-Nov-2009  cliff - we don't need -el bus space for obio, get rid of it and clean up the naming
- delete rmixl_eb_space.c, rmixl_el_space.c
- add mixl_obio_space.c, provides -eb bus space for obio devices
 1.1.2.5 13-Nov-2009  cliff - define used to prevent recursive include gets renamed according to convention
 1.1.2.4 09-Nov-2009  cliff - convert to CFATTACH_DECL_NEW & related
- add bus_dma tags
- removed unused fields: sc_pci_dmat, rmixl_bus_mbst, rmixl_bus_mdt
- add PCI bus_space addrs and tags
 1.1.2.3 15-Sep-2009  cliff obio now provides both big endian and little endian bus spaces
to allow child devices to use according to access method needs

also preparing for dual bus_dma methods, one for addrs <4GB,
the other for all memory, including addrs >= 4GB
the bulk of XLS DMA work is still TBD
 1.1.2.2 13-Sep-2009  cliff improve how some config data are managed
 1.1.2.1 13-Sep-2009  cliff add netbsd support for RMI XLS6ATX_7A board and XL SoC family
 1.2.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.2.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.1 05-Mar-2011  rmind sync with head
 1.2.4.2 11-Mar-2010  yamt sync with head
 1.2.4.1 14-Dec-2009  yamt file rmixl_obiovar.h was added on branch yamt-nfs-mp on 2010-03-11 15:02:41 +0000
 1.8 10-Nov-2021  msaitoh s/endianess/endianness/
 1.7 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.6 24-Apr-2021  thorpej branches: 1.6.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.5 23-Apr-2016  skrll branches: 1.5.32;
Merge nick-nhusb

- API / infrastructure changes to support memory management changes.
- Memory management improvements and bug fixes.
- HCDs should now be MP safe
- conversion to KERNHIST based debug
- FS/LS isoc support on ehci(4).
- conversion to kmem(9)
- Some USB 3 support - mostly from Takahiro HAYASHI (t-hash).
- interrupt transfers now get proper DMA operations
- general bug fixes
- kern/48308
- uhub status notification improvements
- umass(4) probe fix (applied to HEAD already)
- ohci(4) short transfer fix
 1.4 01-Jul-2011  dyoung branches: 1.4.12; 1.4.28; 1.4.30; 1.4.34;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.3 29-Apr-2011  matt Provide OHCI companions devices to EHCI.
 1.2 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.1 14-Dec-2009  cliff branches: 1.1.2; 1.1.6; 1.1.8; 1.1.10;
file rmixl_ohci.c was initially added on branch matt-nb5-mips64.
 1.1.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.6.2 31-May-2011  rmind sync with head
 1.1.6.1 05-Mar-2011  rmind sync with head
 1.1.2.6 30-Dec-2011  matt Change devices name from rmixl_* to xl*.
 1.1.2.5 29-Apr-2011  matt Major merge to/from current.
Adds MIPS32/MIPS64 R2 support (24k, 74k, etc.) including COP0_USERLOCAL
Adds support for emulation of rdhwr $3,$29 instruction.
Major cleanup of SMP code. (stable on multi-core / single thread per core)
llsc locking code only used in MP capable kernels.
 1.1.2.4 21-Mar-2010  cliff - include rmixl_intr.h for externs
 1.1.2.3 29-Jan-2010  cliff - use rmixl_probe_4 to match
 1.1.2.2 03-Jan-2010  cliff - unconfuse bit defines for rmixl gpio RESET and RESET_CFG registers
 1.1.2.1 14-Dec-2009  cliff - add attach glue for ohci at XLS USB Interface
 1.4.34.1 06-Sep-2016  skrll First pass at netbsd-7 updated with USB code from HEAD
 1.4.30.3 05-Dec-2014  skrll Use int for return type for [eou]chi_init and motg_init.
 1.4.30.2 03-Dec-2014  skrll The grand renaming of structure members.

No functional change.
 1.4.30.1 03-Dec-2014  skrll Trailing whitespace.
 1.4.28.1 05-Apr-2017  snj Pull up following revision(s) (requested by skrll in ticket #1395):
share/man/man4/axe.4: netbsd-7-nhusb
share/man/man4/axen.4: netbsd-7-nhusb
share/man/man4/cdce.4: netbsd-7-nhusb
share/man/man4/uaudio.4: netbsd-7-nhusb
share/man/man4/ucom.4: netbsd-7-nhusb
share/man/man4/uep.4: netbsd-7-nhusb
share/man/man4/urtw.4: netbsd-7-nhusb
share/man/man4/usb.4: netbsd-7-nhusb
share/man/man4/uyap.4: netbsd-7-nhusb
share/man/man4/xhci.4: netbsd-7-nhusb
share/man/man9/usbdi.9: netbsd-7-nhusb
sys/arch/amd64/conf/ALL: netbsd-7-nhusb
sys/arch/amd64/conf/GENERIC: netbsd-7-nhusb
sys/arch/amiga/dev/slhci_zbus.c: netbsd-7-nhusb
sys/arch/arm/allwinner/awin_otg.c: netbsd-7-nhusb
sys/arch/arm/allwinner/awin_usb.c: netbsd-7-nhusb
sys/arch/arm/amlogic/amlogic_dwctwo.c: netbsd-7-nhusb
sys/arch/arm/at91/at91ohci.c: netbsd-7-nhusb
sys/arch/arm/broadcom/bcm2835_dwctwo.c: netbsd-7-nhusb
sys/arch/arm/broadcom/bcm53xx_usb.c: netbsd-7-nhusb
sys/arch/arm/ep93xx/epohci.c: netbsd-7-nhusb
sys/arch/arm/gemini/obio_ehci.c: netbsd-7-nhusb
sys/arch/arm/imx/files.imx23: netbsd-7-nhusb
sys/arch/arm/imx/imxusb.c: netbsd-7-nhusb
sys/arch/arm/imx/imxusbreg.h: netbsd-7-nhusb
sys/arch/arm/omap/obio_ohci.c: netbsd-7-nhusb
sys/arch/arm/omap/omap3_ehci.c: netbsd-7-nhusb
sys/arch/arm/omap/omapl1x_ohci.c: netbsd-7-nhusb
sys/arch/arm/omap/tiotg.c: netbsd-7-nhusb
sys/arch/arm/s3c2xx0/ohci_s3c24x0.c: netbsd-7-nhusb
sys/arch/arm/samsung/exynos_usb.c: netbsd-7-nhusb
sys/arch/arm/xscale/pxa2x0_ohci.c: netbsd-7-nhusb
sys/arch/arm/zynq/zynq_usb.c: netbsd-7-nhusb
sys/arch/hpcarm/dev/nbp_slhci.c: netbsd-7-nhusb
sys/arch/hpcmips/dev/plumohci.c: netbsd-7-nhusb
sys/arch/i386/conf/ALL: netbsd-7-nhusb
sys/arch/i386/conf/GENERIC: netbsd-7-nhusb
sys/arch/i386/pci/gcscehci.c: netbsd-7-nhusb
sys/arch/luna68k/conf/GENERIC: netbsd-7-nhusb
sys/arch/mips/adm5120/dev/ahci.c: netbsd-7-nhusb
sys/arch/mips/adm5120/dev/ahcivar.h: netbsd-7-nhusb
sys/arch/mips/alchemy/dev/ohci_aubus.c: netbsd-7-nhusb
sys/arch/mips/atheros/dev/ehci_arbus.c: netbsd-7-nhusb
sys/arch/mips/atheros/dev/ohci_arbus.c: netbsd-7-nhusb
sys/arch/mips/conf/files.adm5120: netbsd-7-nhusb
sys/arch/mips/ralink/ralink_ehci.c: netbsd-7-nhusb
sys/arch/mips/ralink/ralink_ohci.c: netbsd-7-nhusb
sys/arch/mips/rmi/rmixl_ehci.c: netbsd-7-nhusb
sys/arch/mips/rmi/rmixl_ohci.c: netbsd-7-nhusb
sys/arch/playstation2/dev/ohci_sbus.c: netbsd-7-nhusb
sys/arch/powerpc/booke/dev/pq3ehci.c: netbsd-7-nhusb
sys/arch/powerpc/ibm4xx/dev/dwctwo_plb.c: netbsd-7-nhusb
sys/arch/x68k/dev/slhci_intio.c: netbsd-7-nhusb
sys/conf/files: netbsd-7-nhusb
sys/dev/cardbus/ehci_cardbus.c: netbsd-7-nhusb
sys/dev/cardbus/ohci_cardbus.c: netbsd-7-nhusb
sys/dev/cardbus/uhci_cardbus.c: netbsd-7-nhusb
sys/dev/ic/sl811hs.c: netbsd-7-nhusb
sys/dev/ic/sl811hsvar.h: netbsd-7-nhusb
sys/dev/isa/slhci_isa.c: netbsd-7-nhusb
sys/dev/marvell/ehci_mv.c: netbsd-7-nhusb
sys/dev/pci/ehci_pci.c: netbsd-7-nhusb
sys/dev/pci/ohci_pci.c: netbsd-7-nhusb
sys/dev/pci/uhci_pci.c: netbsd-7-nhusb
sys/dev/pci/xhci_pci.c: netbsd-7-nhusb
sys/dev/pcmcia/slhci_pcmcia.c: netbsd-7-nhusb
sys/dev/usb/Makefile.usbdevs: netbsd-7-nhusb
sys/dev/usb/TODO: netbsd-7-nhusb
sys/dev/usb/TODO.usbmp: netbsd-7-nhusb
sys/dev/usb/aubtfwl.c: netbsd-7-nhusb
sys/dev/usb/auvitek.c: netbsd-7-nhusb
sys/dev/usb/auvitek_audio.c: netbsd-7-nhusb
sys/dev/usb/auvitek_dtv.c: netbsd-7-nhusb
sys/dev/usb/auvitek_i2c.c: netbsd-7-nhusb
sys/dev/usb/auvitek_video.c: netbsd-7-nhusb
sys/dev/usb/auvitekvar.h: netbsd-7-nhusb
sys/dev/usb/ehci.c: netbsd-7-nhusb
sys/dev/usb/ehcireg.h: netbsd-7-nhusb
sys/dev/usb/ehcivar.h: netbsd-7-nhusb
sys/dev/usb/emdtv.c: netbsd-7-nhusb
sys/dev/usb/emdtv_dtv.c: netbsd-7-nhusb
sys/dev/usb/emdtv_ir.c: netbsd-7-nhusb
sys/dev/usb/emdtvvar.h: netbsd-7-nhusb
sys/dev/usb/ezload.c: netbsd-7-nhusb
sys/dev/usb/ezload.h: netbsd-7-nhusb
sys/dev/usb/files.usb: netbsd-7-nhusb
sys/dev/usb/hid.c: netbsd-7-nhusb
sys/dev/usb/hid.h: netbsd-7-nhusb
sys/dev/usb/if_athn_usb.c: netbsd-7-nhusb
sys/dev/usb/if_athn_usb.h: netbsd-7-nhusb
sys/dev/usb/if_atu.c: netbsd-7-nhusb
sys/dev/usb/if_atureg.h: netbsd-7-nhusb
sys/dev/usb/if_aue.c: netbsd-7-nhusb
sys/dev/usb/if_auereg.h: netbsd-7-nhusb
sys/dev/usb/if_axe.c: netbsd-7-nhusb
sys/dev/usb/if_axen.c: netbsd-7-nhusb
sys/dev/usb/if_axenreg.h: netbsd-7-nhusb
sys/dev/usb/if_axereg.h: netbsd-7-nhusb
sys/dev/usb/if_cdce.c: netbsd-7-nhusb
sys/dev/usb/if_cdcereg.h: netbsd-7-nhusb
sys/dev/usb/if_cue.c: netbsd-7-nhusb
sys/dev/usb/if_cuereg.h: netbsd-7-nhusb
sys/dev/usb/if_kue.c: netbsd-7-nhusb
sys/dev/usb/if_kuereg.h: netbsd-7-nhusb
sys/dev/usb/if_otus.c: netbsd-7-nhusb
sys/dev/usb/if_otusvar.h: netbsd-7-nhusb
sys/dev/usb/if_rum.c: netbsd-7-nhusb
sys/dev/usb/if_rumreg.h: netbsd-7-nhusb
sys/dev/usb/if_rumvar.h: netbsd-7-nhusb
sys/dev/usb/if_run.c: netbsd-7-nhusb
sys/dev/usb/if_runvar.h: netbsd-7-nhusb
sys/dev/usb/if_smsc.c: netbsd-7-nhusb
sys/dev/usb/if_smscreg.h: netbsd-7-nhusb
sys/dev/usb/if_smscvar.h: netbsd-7-nhusb
sys/dev/usb/if_udav.c: netbsd-7-nhusb
sys/dev/usb/if_udavreg.h: netbsd-7-nhusb
sys/dev/usb/if_upgt.c: netbsd-7-nhusb
sys/dev/usb/if_upgtvar.h: netbsd-7-nhusb
sys/dev/usb/if_upl.c: netbsd-7-nhusb
sys/dev/usb/if_ural.c: netbsd-7-nhusb
sys/dev/usb/if_uralreg.h: netbsd-7-nhusb
sys/dev/usb/if_uralvar.h: netbsd-7-nhusb
sys/dev/usb/if_url.c: netbsd-7-nhusb
sys/dev/usb/if_urlreg.h: netbsd-7-nhusb
sys/dev/usb/if_urndis.c: netbsd-7-nhusb
sys/dev/usb/if_urndisreg.h: netbsd-7-nhusb
sys/dev/usb/if_urtw.c: netbsd-7-nhusb
sys/dev/usb/if_urtwn.c: netbsd-7-nhusb
sys/dev/usb/if_urtwn_data.h: netbsd-7-nhusb
sys/dev/usb/if_urtwnreg.h: netbsd-7-nhusb
sys/dev/usb/if_urtwnvar.h: netbsd-7-nhusb
sys/dev/usb/if_urtwreg.h: netbsd-7-nhusb
sys/dev/usb/if_zyd.c: netbsd-7-nhusb
sys/dev/usb/if_zydreg.h: netbsd-7-nhusb
sys/dev/usb/irmce.c: netbsd-7-nhusb
sys/dev/usb/moscom.c: netbsd-7-nhusb
sys/dev/usb/motg.c: netbsd-7-nhusb
sys/dev/usb/motgvar.h: netbsd-7-nhusb
sys/dev/usb/ohci.c: netbsd-7-nhusb
sys/dev/usb/ohcireg.h: netbsd-7-nhusb
sys/dev/usb/ohcivar.h: netbsd-7-nhusb
sys/dev/usb/pseye.c: netbsd-7-nhusb
sys/dev/usb/slurm.c: netbsd-7-nhusb
sys/dev/usb/stuirda.c: netbsd-7-nhusb
sys/dev/usb/u3g.c: netbsd-7-nhusb
sys/dev/usb/uark.c: netbsd-7-nhusb
sys/dev/usb/uatp.c: netbsd-7-nhusb
sys/dev/usb/uaudio.c: netbsd-7-nhusb
sys/dev/usb/uberry.c: netbsd-7-nhusb
sys/dev/usb/ubsa.c: netbsd-7-nhusb
sys/dev/usb/ubsa_common.c: netbsd-7-nhusb
sys/dev/usb/ubsavar.h: netbsd-7-nhusb
sys/dev/usb/ubt.c: netbsd-7-nhusb
sys/dev/usb/uchcom.c: netbsd-7-nhusb
sys/dev/usb/ucom.c: netbsd-7-nhusb
sys/dev/usb/ucomvar.h: netbsd-7-nhusb
sys/dev/usb/ucycom.c: netbsd-7-nhusb
sys/dev/usb/udl.c: netbsd-7-nhusb
sys/dev/usb/udl.h: netbsd-7-nhusb
sys/dev/usb/udsbr.c: netbsd-7-nhusb
sys/dev/usb/udsir.c: netbsd-7-nhusb
sys/dev/usb/uep.c: netbsd-7-nhusb
sys/dev/usb/uftdi.c: netbsd-7-nhusb
sys/dev/usb/uftdireg.h: netbsd-7-nhusb
sys/dev/usb/ugen.c: netbsd-7-nhusb
sys/dev/usb/ugensa.c: netbsd-7-nhusb
sys/dev/usb/uhci.c: netbsd-7-nhusb
sys/dev/usb/uhcireg.h: netbsd-7-nhusb
sys/dev/usb/uhcivar.h: netbsd-7-nhusb
sys/dev/usb/uhid.c: netbsd-7-nhusb
sys/dev/usb/uhidev.c: netbsd-7-nhusb
sys/dev/usb/uhidev.h: netbsd-7-nhusb
sys/dev/usb/uhmodem.c: netbsd-7-nhusb
sys/dev/usb/uhso.c: netbsd-7-nhusb
sys/dev/usb/uhub.c: netbsd-7-nhusb
sys/dev/usb/uipad.c: netbsd-7-nhusb
sys/dev/usb/uipaq.c: netbsd-7-nhusb
sys/dev/usb/uirda.c: netbsd-7-nhusb
sys/dev/usb/uirdavar.h: netbsd-7-nhusb
sys/dev/usb/ukbd.c: netbsd-7-nhusb
sys/dev/usb/ukbdmap.c: netbsd-7-nhusb
sys/dev/usb/ukyopon.c: netbsd-7-nhusb
sys/dev/usb/ukyopon.h: netbsd-7-nhusb
sys/dev/usb/ulpt.c: netbsd-7-nhusb
sys/dev/usb/umass.c: netbsd-7-nhusb
sys/dev/usb/umass_isdata.c: netbsd-7-nhusb
sys/dev/usb/umass_isdata.h: netbsd-7-nhusb
sys/dev/usb/umass_quirks.c: netbsd-7-nhusb
sys/dev/usb/umass_quirks.h: netbsd-7-nhusb
sys/dev/usb/umass_scsipi.c: netbsd-7-nhusb
sys/dev/usb/umass_scsipi.h: netbsd-7-nhusb
sys/dev/usb/umassvar.h: netbsd-7-nhusb
sys/dev/usb/umcs.c: netbsd-7-nhusb
sys/dev/usb/umct.c: netbsd-7-nhusb
sys/dev/usb/umidi.c: netbsd-7-nhusb
sys/dev/usb/umidi_quirks.c: netbsd-7-nhusb
sys/dev/usb/umidi_quirks.h: netbsd-7-nhusb
sys/dev/usb/umodem.c: netbsd-7-nhusb
sys/dev/usb/umodem_common.c: netbsd-7-nhusb
sys/dev/usb/umodemvar.h: netbsd-7-nhusb
sys/dev/usb/ums.c: netbsd-7-nhusb
sys/dev/usb/uplcom.c: netbsd-7-nhusb
sys/dev/usb/urio.c: netbsd-7-nhusb
sys/dev/usb/urio.h: netbsd-7-nhusb
sys/dev/usb/usb.c: netbsd-7-nhusb
sys/dev/usb/usb.h: netbsd-7-nhusb
sys/dev/usb/usb_mem.c: netbsd-7-nhusb
sys/dev/usb/usb_mem.h: netbsd-7-nhusb
sys/dev/usb/usb_quirks.c: netbsd-7-nhusb
sys/dev/usb/usb_quirks.h: netbsd-7-nhusb
sys/dev/usb/usb_subr.c: netbsd-7-nhusb
sys/dev/usb/usbdevices.config: netbsd-7-nhusb
sys/dev/usb/usbdevs: netbsd-7-nhusb
sys/dev/usb/usbdevs.h: netbsd-7-nhusb
sys/dev/usb/usbdevs_data.h: netbsd-7-nhusb
sys/dev/usb/usbdi.c: netbsd-7-nhusb
sys/dev/usb/usbdi.h: netbsd-7-nhusb
sys/dev/usb/usbdi_util.c: netbsd-7-nhusb
sys/dev/usb/usbdi_util.h: netbsd-7-nhusb
sys/dev/usb/usbdivar.h: netbsd-7-nhusb
sys/dev/usb/usbhid.h: netbsd-7-nhusb
sys/dev/usb/usbhist.h: netbsd-7-nhusb
sys/dev/usb/usbroothub.c: netbsd-7-nhusb
sys/dev/usb/usbroothub.h: netbsd-7-nhusb
sys/dev/usb/usbroothub_subr.c: delete
sys/dev/usb/usbroothub_subr.h: delete
sys/dev/usb/uscanner.c: netbsd-7-nhusb
sys/dev/usb/uslsa.c: netbsd-7-nhusb
sys/dev/usb/usscanner.c: netbsd-7-nhusb
sys/dev/usb/ustir.c: netbsd-7-nhusb
sys/dev/usb/uthum.c: netbsd-7-nhusb
sys/dev/usb/utoppy.c: netbsd-7-nhusb
sys/dev/usb/uts.c: netbsd-7-nhusb
sys/dev/usb/uvideo.c: netbsd-7-nhusb
sys/dev/usb/uvisor.c: netbsd-7-nhusb
sys/dev/usb/uvscom.c: netbsd-7-nhusb
sys/dev/usb/uyap.c: netbsd-7-nhusb
sys/dev/usb/uyap_firmware.h: netbsd-7-nhusb
sys/dev/usb/uyurex.c: netbsd-7-nhusb
sys/dev/usb/x1input_rdesc.h: netbsd-7-nhusb
sys/dev/usb/xhci.c: netbsd-7-nhusb
sys/dev/usb/xhcireg.h: netbsd-7-nhusb
sys/dev/usb/xhcivar.h: netbsd-7-nhusb
sys/dev/usb/xinput_rdesc.h: netbsd-7-nhusb
sys/external/bsd/common/conf/files.linux: netbsd-7-nhusb
sys/external/bsd/common/include/linux/err.h: netbsd-7-nhusb
sys/external/bsd/common/include/linux/kernel.h: netbsd-7-nhusb
sys/external/bsd/common/include/linux/workqueue.h: netbsd-7-nhusb
sys/external/bsd/common/linux/linux_work.c: netbsd-7-nhusb
sys/external/bsd/drm2/dist/drm/radeon/atombios_encoders.c: netbsd-7-nhusb
sys/external/bsd/drm2/dist/drm/radeon/radeon_legacy_encoders.c: netbsd-7-nhusb
sys/external/bsd/drm2/drm/files.drmkms: netbsd-7-nhusb
sys/external/bsd/drm2/i915drm/files.i915drmkms: netbsd-7-nhusb
sys/external/bsd/drm2/include/linux/err.h: delete
sys/external/bsd/drm2/include/linux/workqueue.h: delete
sys/external/bsd/drm2/linux/files.drmkms_linux: netbsd-7-nhusb
sys/external/bsd/drm2/linux/linux_work.c: delete
sys/external/bsd/dwc2/dwc2.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dwc2.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dwc2var.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dwctwo2netbsd: netbsd-7-nhusb
sys/external/bsd/dwc2/conf/files.dwc2: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_core.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_core.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_coreintr.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcd.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcd.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcdddma.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcdintr.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcdqueue.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hw.h: netbsd-7-nhusb
sys/modules/drmkms_linux/Makefile: netbsd-7-nhusb
sys/modules/i915drmkms/Makefile: netbsd-7-nhusb
sys/rump/dev/lib/libugenhc/ugenhc.c: netbsd-7-nhusb
sys/rump/dev/lib/libusb/Makefile: netbsd-7-nhusb
sys/rump/dev/lib/libusb/USB.ioconf: netbsd-7-nhusb
sys/rump/dev/lib/libusb/usb_at_ugenhc.c: delete
sys/rump/dev/lib/libusb/opt/opt_usb.h: delete
sys/rump/dev/lib/libusb/opt/opt_usbverbose.h: delete
sys/sys/mbuf.h: netbsd-7-nhusb
usr.sbin/usbdevs/usbdevs.8: netbsd-7-nhusb
usr.sbin/usbdevs/usbdevs.c: netbsd-7-nhusb
Merge netbsd-7-nhusb:
- API / infrastructure changes to support memory management changes.
- Memory management improvements and bug fixes.
- HCDs should now be MP safe
- conversion to KERNHIST based debug
- FS/LS isoc support on ehci(4).
- conversion to kmem(9)
- Some USB 3 support - mostly from Takahiro HAYASHI (t-hash).
- interrupt transfers now get proper DMA operations
- general bug fixes
- kern/48308
- uhub status notification improvements
- umass(4) probe fix (applied to HEAD already)
- ohci(4) short transfer fix
- Change the SOFTINT level from NET to SERIAL for the USB softint handler.
This gives the callback a chance of running when another softint handler
at SOFTINT_NET has blocked holding a lock, e.g. softnet_lock and most of
the network stack.
- kern/49065 - ifconfig tun0 ... sequence locks up system / lockup:
softnet_lock held across usb xfr
- kern/50491 - unkillable wait in usbd_transfer while using usmsc0
on raspberry pi 2
- kern/51395 - USB Ethernet makes xhci hang
- Various improvements to slhci(4)
- Various improvements to dwc2(4)
 1.4.12.1 03-Dec-2017  jdolecek update from HEAD
 1.5.32.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.6.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.1 24-Dec-2011  matt branches: 1.1.2;
file rmixl_pci_cfg_eb_space.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1 24-Dec-2011  matt branches: 1.1.2;
file rmixl_pci_cfg_el_space.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.3 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.2 20-Feb-2011  matt branches: 1.2.2;
Merge forward from matt-nb5-mips64.
 1.1 17-Apr-2010  cliff branches: 1.1.2; 1.1.4; 1.1.6;
file rmixl_pci_cfg_space.c was initially added on branch matt-nb5-mips64.
 1.1.6.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.4.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.2.2 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.1 17-Apr-2010  cliff - rename "pcie" bus space files to "pci" to reflect common use
by either pcie or pcix, depending on RMI chip type.
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 20-Feb-2011  rmind file rmixl_pci_cfg_space.c was added on branch rmind-uvmplock on 2011-03-05 20:51:10 +0000
 1.1 04-Jan-2012  matt branches: 1.1.2;
file rmixl_pci_eb_mem_space.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 04-Jan-2012  matt Rework Fast Messaging Network support (it's now lockless).
Workaround a problem with bus 0 BAR sizing causing the registers behind
the BAR to become inaccessible.
Move much/most of the startup code from evbmips/rmixl/machdep to
mips/rmi/rmixl_machdep.c
Move the code to find the XLP variant to the early boot so it can be used
early.
8bit and 16bit accessed to PCI bus 0 cause cache errors so chagne the access
of pci mem to 32bits.
 1.1 24-Dec-2011  matt branches: 1.1.2;
file rmixl_pci_ecfg_eb_space.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1 24-Dec-2011  matt branches: 1.1.2;
file rmixl_pci_ecfg_el_space.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.3 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.2 20-Feb-2011  matt branches: 1.2.2;
Merge forward from matt-nb5-mips64.
 1.1 17-Apr-2010  cliff branches: 1.1.2; 1.1.4; 1.1.6;
file rmixl_pci_ecfg_space.c was initially added on branch matt-nb5-mips64.
 1.1.6.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.4.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.2.2 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.1 17-Apr-2010  cliff - rename "pcie" bus space files to "pci" to reflect common use
by either pcie or pcix, depending on RMI chip type.
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 20-Feb-2011  rmind file rmixl_pci_ecfg_space.c was added on branch rmind-uvmplock on 2011-03-05 20:51:10 +0000
 1.1 04-Jan-2012  matt branches: 1.1.2;
file rmixl_pci_el_mem_space.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 04-Jan-2012  matt Rework Fast Messaging Network support (it's now lockless).
Workaround a problem with bus 0 BAR sizing causing the registers behind
the BAR to become inaccessible.
Move much/most of the startup code from evbmips/rmixl/machdep to
mips/rmi/rmixl_machdep.c
Move the code to find the XLP variant to the early boot so it can be used
early.
8bit and 16bit accessed to PCI bus 0 cause cache errors so chagne the access
of pci mem to 32bits.
 1.3 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.2 20-Feb-2011  matt branches: 1.2.2;
Merge forward from matt-nb5-mips64.
 1.1 17-Apr-2010  cliff branches: 1.1.2; 1.1.4; 1.1.6;
file rmixl_pci_io_space.c was initially added on branch matt-nb5-mips64.
 1.1.6.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.4.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.2.2 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.1 17-Apr-2010  cliff - rename "pcie" bus space files to "pci" to reflect common use
by either pcie or pcix, depending on RMI chip type.
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 20-Feb-2011  rmind file rmixl_pci_io_space.c was added on branch rmind-uvmplock on 2011-03-05 20:51:10 +0000
 1.3 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.2 20-Feb-2011  matt branches: 1.2.2;
Merge forward from matt-nb5-mips64.
 1.1 17-Apr-2010  cliff branches: 1.1.2; 1.1.4; 1.1.6;
file rmixl_pci_mem_space.c was initially added on branch matt-nb5-mips64.
 1.1.6.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.4.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.2.3 04-Jan-2012  matt Rework Fast Messaging Network support (it's now lockless).
Workaround a problem with bus 0 BAR sizing causing the registers behind
the BAR to become inaccessible.
Move much/most of the startup code from evbmips/rmixl/machdep to
mips/rmi/rmixl_machdep.c
Move the code to find the XLP variant to the early boot so it can be used
early.
8bit and 16bit accessed to PCI bus 0 cause cache errors so chagne the access
of pci mem to 32bits.
 1.1.2.2 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.1 17-Apr-2010  cliff - rename "pcie" bus space files to "pci" to reflect common use
by either pcie or pcix, depending on RMI chip type.
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 20-Feb-2011  rmind file rmixl_pci_mem_space.c was added on branch rmind-uvmplock on 2011-03-05 20:51:10 +0000
 1.16 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.15 24-Apr-2021  thorpej branches: 1.15.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.14 07-Jul-2020  thorpej branches: 1.14.4;
Overhaul the interface to pci_configure_bus():
- Don't expose how PCI bus configuration resource management is implemented.
Provide a new resource provider API:

==> pciconf_resource_init() -- Initialize a PCI configuration resources
container.
==> pciconf_resource_add() -- Add a PCI configuration resource to the
container (I/O, MEM, or prefetchable MEM). Multiple resources of
each type may be added.
==> pciconf_resource_fini() -- Tear down the PCI configurtation resources
container once the bus has been configured.

This is much easier to use than the previous method of providing an
extent map for each kind of resource, and works better for e.g. ACPI
platforms that provide potentially multiple PCI resources in tables
provided by firmware.

- Re-implement PCI configuration resource management using vmem arenas,
rather than extent maps.
 1.13 10-Nov-2019  chs in many device attach paths, allocate memory with M_WAITOK instead of M_NOWAIT
and remove code to handle failures that can no longer happen.
 1.12 02-Oct-2015  msaitoh branches: 1.12.18;
PCI Extended Configuration stuff written by nonaka@:
- Add PCI Extended Configuration Space support into x86.
- Check register offset of pci_conf_read() in MD part. It returns (pcireg_t)-1
if it isn't accessible.
- Decode Extended Capability in PCI Extended Configuration Space.
Currently the following extended capabilities are decoded:
- Advanced Error Reporting
- Virtual Channel
- Device Serial Number
- Power Budgeting
- Root Complex Link Declaration
- Root Complex Event Collector Association
- Access Control Services
- Alternative Routing-ID Interpretation
- Address Translation Services
- Single Root IO Virtualization
- Page Request
- TPH Requester
- Latency Tolerance Reporting
- Secondary PCI Express
- Process Address Space ID
- LN Requester
- L1 PM Substates
The following extended capabilities are not decoded yet:
- Root Complex Internal Link Control
- Multi-Function Virtual Channel
- RCRB Header
- Vendor Unique
- Configuration Access Correction
- Multiple Root IO Virtualization
- Multicast
- Resizable BAR
- Dynamic Power Allocation
- Protocol Multiplexing
- Downstream Port Containment
- Precision Time Management
- M-PCIe
- Function Reading Status Queueing
- Readiness Time Reporting
- Designated Vendor-Specific
 1.11 04-Apr-2014  christos branches: 1.11.6;
adjust to pci_intr_string signature.
 1.10 27-Oct-2012  chs branches: 1.10.2;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.9 27-Jan-2012  para branches: 1.9.6;
converting extent(9) from malloc(9) to kmem(9)
preceding kmem-vmem-pool-uvm patch

releng@ acknowledged
 1.8 10-Jul-2011  matt branches: 1.8.2; 1.8.6;
Fix machine/ includes
 1.7 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.6 17-May-2011  dyoung PCI_FLAGS_IO_ENABLED and PCI_FLAGS_MEM_ENABLED changed their functional
role in NetBSD (drivers are no longer supposed to write these to
pa_flags) without changing name. Correct that.

Rename PCI_FLAGS_IO_ENABLED to PCI_FLAGS_IO_OKAY and
PCI_FLAGS_MEM_ENABLED to PCI_FLAGS_MEM_OKAY, thus making their names
consistent with the other PCI flags and poisoning 3rd-party driver
sources that use the flags in the old bad way.

This patch produces no binary changes in this set of PCI kernels when
they are compiled w/o 'options DIAGNOSTIC' and w/ -V MKREPRO=yes:

algor P4032 P5064 P6032
alpha GENERIC
amd64 GENERIC XEN3_DOM0
arc GENERIC
atari HADES MILAN-PCIIDE
bebox GENERIC
cats GENERIC
cobalt GENERIC
evbarm-el ADI_BRH ARMADILLO9 CP3100 GEMINI GEMINI_MASTER GEMINI_SLAVE
evbarm-el GUMSTIX HDL_G IMX31LITE INTEGRATOR IQ31244 IQ80310 IQ80321
evbarm-el IXDP425 IXM1200 KUROBOX_PRO
evbarm-el LUBBOCK MARVELL_NAS NAPPI NSLU2 SHEEVAPLUG SMDK2800 TEAMASA_NPWR
evbarm-el TEAMASA_NPWR_FC TS7200 TWINTAIL ZAO425
evbmips-el AP30 DBAU1500 DBAU1550 MALTA MERAKI MTX-1 OMSAL400 RB153 WGT624V3
evbmips64-el XLSATX
evbppc EV64260 MPC8536DS MPC8548CDS OPENBLOCKS200 OPENBLOCKS266
evbppc OPENBLOCKS266_OPT P2020RDB PMPPC RB800 WALNUT
hp700 GENERIC
i386 ALL XEN3_DOM0 XEN3_DOMU
ibmnws GENERIC
iyonix GENERIC
landisk GENERIC
macppc GENERIC
mvmeppc GENERIC
netwinder GENERIC
ofppc GENERIC
prep GENERIC
sandpoint GENERIC
sbmips-el GENERIC
sgimips GENERIC32_IP2x GENERIC32_IP3x
sparc GENERIC_SUN4U KRUPS
sparc64 GENERIC
 1.5 14-Apr-2011  cliff - in rmixl_pcie_intr_string(), convert irq to vector when calling
rmixl_intr_string()
 1.4 04-Apr-2011  dyoung Neither pci_dma64_available(), pci_probe_device(), pci_mapreg_map(9),
pci_find_rom(), pci_intr_map(9), pci_enumerate_bus(), nor the match
predicate passed to pciide_compat_intr_establish() should ever modify
their pci_attach_args argument, so make their pci_attach_args arguments
const and deal with the fallout throughout the kernel.

For the most part, these changes add a 'const' where there was no
'const' before, however, some drivers and MD code used to modify
pci_attach_args. Now those drivers either copy their pci_attach_args
and modify the copy, or refrain from modifying pci_attach_args:

Xen: according to Manuel Bouyer, writing to pci_attach_args in
pci_intr_map() was a leftover from Xen 2. Probably a bug. I
stopped writing it. I have not tested this change.

siside(4): sis_hostbr_match() needlessly wrote to pci_attach_args.
Probably a bug. I use a temporary variable. I have not tested this
change.

slide(4): sl82c105_chip_map() overwrote the caller's pci_attach_args.
Probably a bug. Use a local pci_attach_args. I have not tested
this change.

viaide(4): via_sata_chip_map() and via_sata_chip_map_new() overwrote the
caller's pci_attach_args. Probably a bug. Make a local copy of the
caller's pci_attach_args and modify the copy. I have not tested
this change.

While I'm here, make pci_mapreg_submap() static.

With these changes in place, I have tested the compilation of these
kernels:

alpha GENERIC
amd64 GENERIC XEN3_DOM0
arc GENERIC
atari HADES MILAN-PCIIDE
bebox GENERIC
cats GENERIC
cobalt GENERIC
evbarm-eb NSLU2
evbarm-el ADI_BRH ARMADILLO9 CP3100 GEMINI GEMINI_MASTER GEMINI_SLAVE GUMSTIX
HDL_G IMX31LITE INTEGRATOR IQ31244 IQ80310 IQ80321 IXDP425 IXM1200
KUROBOX_PRO LUBBOCK MARVELL_NAS NAPPI SHEEVAPLUG SMDK2800 TEAMASA_NPWR
TEAMASA_NPWR_FC TS7200 TWINTAIL ZAO425
evbmips-el AP30 DBAU1500 DBAU1550 MALTA MERAKI MTX-1 OMSAL400 RB153 WGT624V3
evbmips64-el XLSATX
evbppc EV64260 MPC8536DS MPC8548CDS OPENBLOCKS200 OPENBLOCKS266
OPENBLOCKS266_OPT P2020RDB PMPPC RB800 WALNUT
hp700 GENERIC
i386 ALL XEN3_DOM0 XEN3_DOMU
ibmnws GENERIC
macppc GENERIC
mvmeppc GENERIC
netwinder GENERIC
ofppc GENERIC
prep GENERIC
sandpoint GENERIC
sgimips GENERIC32_IP2x
sparc GENERIC_SUN4U KRUPS
sparc64 GENERIC

As of Sun Apr 3 15:26:26 CDT 2011, I could not compile these kernels
with or without my patches in place:

### evbmips-el GDIUM

nbmake: nbmake: don't know how to make /home/dyoung/pristine-nbsd/src/sys/arch/mips/mips/softintr.c. Stop

### evbarm-el MPCSA_GENERIC
src/sys/arch/evbarm/conf/MPCSA_GENERIC:318: ds1672rtc*: unknown device `ds1672rtc'

### ia64 GENERIC

/tmp/genassym.28085/assym.c: In function 'f111':
/tmp/genassym.28085/assym.c:67: error: invalid application of 'sizeof' to incomplete type 'struct pcb'
/tmp/genassym.28085/assym.c:76: error: dereferencing pointer to incomplete type

### sgimips GENERIC32_IP3x

crmfb.o: In function `crmfb_attach':
crmfb.c:(.text+0x2304): undefined reference to `ddc_read_edid'
crmfb.c:(.text+0x2304): relocation truncated to fit: R_MIPS_26 against `ddc_read_edid'
crmfb.c:(.text+0x234c): undefined reference to `edid_parse'
crmfb.c:(.text+0x234c): relocation truncated to fit: R_MIPS_26 against `edid_parse'
crmfb.c:(.text+0x2354): undefined reference to `edid_print'
crmfb.c:(.text+0x2354): relocation truncated to fit: R_MIPS_26 against `edid_print'
 1.3 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.2 14-Dec-2009  matt branches: 1.2.4; 1.2.6; 1.2.8; 1.2.10;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.1 09-Nov-2009  cliff branches: 1.1.2;
file rmixl_pcie.c was initially added on branch matt-nb5-mips64.
 1.1.2.22 05-Nov-2013  matt Add XLP2XX support.
 1.1.2.21 04-Jan-2012  matt Rework Fast Messaging Network support (it's now lockless).
Workaround a problem with bus 0 BAR sizing causing the registers behind
the BAR to become inaccessible.
Move much/most of the startup code from evbmips/rmixl/machdep to
mips/rmi/rmixl_machdep.c
Move the code to find the XLP variant to the early boot so it can be used
early.
8bit and 16bit accessed to PCI bus 0 cause cache errors so chagne the access
of pci mem to 32bits.
 1.1.2.20 31-Dec-2011  matt Switch to using IST_<foo> instead of private enums.
 1.1.2.19 27-Dec-2011  matt Fix _LP64 compile issue.
 1.1.2.18 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.17 29-Apr-2011  matt Major merge to/from current.
Adds MIPS32/MIPS64 R2 support (24k, 74k, etc.) including COP0_USERLOCAL
Adds support for emulation of rdhwr $3,$29 instruction.
Major cleanup of SMP code. (stable on multi-core / single thread per core)
llsc locking code only used in MP capable kernels.
 1.1.2.16 20-Sep-2010  cliff - provide lockless interrupt dispatch by eliminating use of LIST(9)
for interrupt handles. Handles are now managed in variable size arrays.
Establishing a new interrupt causes allocation of a new array, pointer
to which is changed atomically. Old arrays are allowed to persist for
some time before free, allowing any CPU working with that data
to safely finish using it.
- interrupt events are now managed per-CPU, avoid need for atomic adds.
 1.1.2.15 26-Aug-2010  rmind Fix non-DEBUG/DIAGNOSTIC builds of RMI mips64.
 1.1.2.14 08-May-2010  matt Rework the way interrupts are decided on. Don't use pa_bus since that's
arbitrary. Instead grab the device from pa_intrtag since that corresponds
to the PCIe bus we are actually attached to.

While I'm here, compact some switch statements into a few simple assignments.
 1.1.2.13 06-May-2010  cliff fix pcie IRQ assignments for XLS2xx
 1.1.2.12 12-Apr-2010  cliff - specifiy if mpsafe when establishing interrupts
(all are 'false' except comintr for now)
 1.1.2.11 07-Apr-2010  cliff - use new PCIE register & macro names
- use new bus space related field names in struct rmixl_config
- don't match if not running on an XLS chip
- rmixl_pcie_intr_string() properly decomposes pci_intr_handle_t to obtain irq
- in rmixl_pcie_make_pih() and rmixl_pcie_decompose_pih() KASSERTS,
no check for < 0 needed on unsigned
- fix assignment of 'other' in rmixl_pcie_intr_disestablish()
when bit number is >= 32
- in rmixl_pcie_intr_establish(), change = to == in a couple asserts
- in rmixl_pcie_intr_establish(), if rmixl_intr_establish() fails,
report irq properly in panic message
 1.1.2.10 29-Mar-2010  cliff - rmixl_physaddr_init_pcie discovers PCIE physical address regions from BARs
 1.1.2.9 21-Mar-2010  cliff - include rmixl_intr.h
- obtain interrupt routing mask from obio_attach_args,
pass along to rmixl_intr_establish
- cut out some dead (#if 0) code
- in rmixl_pcie_intr_establish(), construct interrupt event name
in the interrupt dispatch structure, not on the stack. also
improve the name.
 1.1.2.8 29-Jan-2010  cliff - rmixl_cache_err_dis, rmixl_cache_err_restore, rmixl_cache_err_check
inlines moved from here ro rmixlvar.h
- add a layer of interrupt dispatch to allow sharing link interrupts,
- enable and handle pcie link error interrupts
- initialize the PCIe INT and MSI config regs, make sure MSI ints are disabled!
- improve display names for link configurations
- be more thorough about 'mips_cpu_id' based variations
 1.1.2.7 20-Jan-2010  matt Adjust things to the new world order.
 1.1.2.6 10-Jan-2010  matt Add generic support for DMA bounce buffers and real version of
bus_dmatag_subregion. MALTA uses it for ISADMA. Make RMIXL use
for creating 32bit and 29bit subregions.
 1.1.2.5 14-Dec-2009  cliff fix typo
 1.1.2.4 18-Nov-2009  cliff - use PRIxBUSADDR as needed
- make cfg_oba, ecfg_oba type bus_addr_t
 1.1.2.3 15-Nov-2009  cliff - abandon XKPHYS mapping for access PCIe CFG and ECFG space, useless for N32
- rmixl_pcie_conf_read() and rmixl_pcie_conf_write() now use
rmixl_pcie_conf_setup() to establish bus space mappings for
access to PCIe CFG, ECFG space. The mappings are "lazy"
to allow successive accesses to the same (bus) in CFG space,
or to the same (bus, device) in ECFG space, to reuse the mapping.
 1.1.2.2 13-Nov-2009  cliff - rmixls_subr.S is replaced by rmixl_subr.S
- those subroutine names changed accordingly
 1.1.2.1 09-Nov-2009  cliff add driver and bus space for RMI XLS PCIe Interface
 1.2.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.2.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.3 31-May-2011  rmind sync with head
 1.2.6.2 21-Apr-2011  rmind sync with head
 1.2.6.1 05-Mar-2011  rmind sync with head
 1.2.4.2 11-Mar-2010  yamt sync with head
 1.2.4.1 14-Dec-2009  yamt file rmixl_pcie.c was added on branch yamt-nfs-mp on 2010-03-11 15:02:41 +0000
 1.8.6.1 18-Feb-2012  mrg merge to -current.
 1.8.2.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.8.2.2 30-Oct-2012  yamt sync with head
 1.8.2.1 17-Apr-2012  yamt sync with head
 1.9.6.3 03-Dec-2017  jdolecek update from HEAD
 1.9.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.9.6.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.10.2.1 18-May-2014  rmind sync with head
 1.11.6.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.12.18.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.14.4.2 02-Apr-2021  thorpej config_found_ia() -> config_found() w/ CFARG_IATTR.
 1.14.4.1 23-Mar-2021  thorpej Convert config_found_ia() call sites where the device only carries
a single interface attribute to bare config_found() calls.
 1.15.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.3 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.2 14-Dec-2009  matt branches: 1.2.4; 1.2.6; 1.2.8; 1.2.10;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.1 15-Nov-2009  cliff branches: 1.1.2;
file rmixl_pcie_cfg_space.c was initially added on branch matt-nb5-mips64.
 1.1.2.4 17-Apr-2010  cliff - rename "pcie" bus space files to "pci" to reflect common use
by either pcie or pcix, depending on RMI chip type.
 1.1.2.3 07-Apr-2010  cliff - these bus spaces can be used by pcix or pcie interfaces,
use names changed to reflet that
- also these files will soon be renamed accordingly
 1.1.2.2 18-Nov-2009  cliff - add extents for bus spaces
 1.1.2.1 15-Nov-2009  cliff add bus space for PCIe CFG and ECFG spaces
 1.2.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.2.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.1 05-Mar-2011  rmind sync with head
 1.2.4.2 11-Mar-2010  yamt sync with head
 1.2.4.1 14-Dec-2009  yamt file rmixl_pcie_cfg_space.c was added on branch yamt-nfs-mp on 2010-03-11 15:02:41 +0000
 1.3 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.2 14-Dec-2009  matt branches: 1.2.4; 1.2.6; 1.2.8; 1.2.10;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.1 15-Nov-2009  cliff branches: 1.1.2;
file rmixl_pcie_ecfg_space.c was initially added on branch matt-nb5-mips64.
 1.1.2.4 17-Apr-2010  cliff - rename "pcie" bus space files to "pci" to reflect common use
by either pcie or pcix, depending on RMI chip type.
 1.1.2.3 07-Apr-2010  cliff - these bus spaces can be used by pcix or pcie interfaces,
use names changed to reflet that
- also these files will soon be renamed accordingly
 1.1.2.2 18-Nov-2009  cliff - add extents for bus spaces
 1.1.2.1 15-Nov-2009  cliff add bus space for PCIe CFG and ECFG spaces
 1.2.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.2.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.1 05-Mar-2011  rmind sync with head
 1.2.4.2 11-Mar-2010  yamt sync with head
 1.2.4.1 14-Dec-2009  yamt file rmixl_pcie_ecfg_space.c was added on branch yamt-nfs-mp on 2010-03-11 15:02:41 +0000
 1.3 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.2 14-Dec-2009  matt branches: 1.2.4; 1.2.6; 1.2.8; 1.2.10;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.1 09-Nov-2009  cliff branches: 1.1.2;
file rmixl_pcie_io_space.c was initially added on branch matt-nb5-mips64.
 1.1.2.4 17-Apr-2010  cliff - rename "pcie" bus space files to "pci" to reflect common use
by either pcie or pcix, depending on RMI chip type.
 1.1.2.3 07-Apr-2010  cliff - these bus spaces can be used by pcix or pcie interfaces,
use names changed to reflet that
- also these files will soon be renamed accordingly
 1.1.2.2 18-Nov-2009  cliff - add extents for bus spaces
 1.1.2.1 09-Nov-2009  cliff add driver and bus space for RMI XLS PCIe Interface
 1.2.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.2.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.1 05-Mar-2011  rmind sync with head
 1.2.4.2 11-Mar-2010  yamt sync with head
 1.2.4.1 14-Dec-2009  yamt file rmixl_pcie_io_space.c was added on branch yamt-nfs-mp on 2010-03-11 15:02:41 +0000
 1.3 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.2 14-Dec-2009  matt branches: 1.2.4; 1.2.6; 1.2.8; 1.2.10;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.1 09-Nov-2009  cliff branches: 1.1.2;
file rmixl_pcie_mem_space.c was initially added on branch matt-nb5-mips64.
 1.1.2.4 17-Apr-2010  cliff - rename "pcie" bus space files to "pci" to reflect common use
by either pcie or pcix, depending on RMI chip type.
 1.1.2.3 07-Apr-2010  cliff - these bus spaces can be used by pcix or pcie interfaces,
use names changed to reflet that
- also these files will soon be renamed accordingly
 1.1.2.2 18-Nov-2009  cliff - add extents for bus spaces
 1.1.2.1 09-Nov-2009  cliff add driver and bus space for RMI XLS PCIe Interface
 1.2.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.2.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.1 05-Mar-2011  rmind sync with head
 1.2.4.2 11-Mar-2010  yamt sync with head
 1.2.4.1 14-Dec-2009  yamt file rmixl_pcie_mem_space.c was added on branch yamt-nfs-mp on 2010-03-11 15:02:41 +0000
 1.1 05-Nov-2013  matt branches: 1.1.2;
file rmixl_pcie_subr.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 05-Nov-2013  matt Add XLP2XX support.
 1.3 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.2 14-Dec-2009  matt branches: 1.2.4; 1.2.6; 1.2.8; 1.2.10;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.1 09-Nov-2009  cliff branches: 1.1.2;
file rmixl_pcievar.h was initially added on branch matt-nb5-mips64.
 1.1.2.10 05-Nov-2013  matt Add XLP2XX support.
 1.1.2.9 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.8 20-Sep-2010  cliff - provide lockless interrupt dispatch by eliminating use of LIST(9)
for interrupt handles. Handles are now managed in variable size arrays.
Establishing a new interrupt causes allocation of a new array, pointer
to which is changed atomically. Old arrays are allowed to persist for
some time before free, allowing any CPU working with that data
to safely finish using it.
- interrupt events are now managed per-CPU, avoid need for atomic adds.
 1.1.2.7 13-Apr-2010  cliff add TNF License and copyright.
 1.1.2.6 07-Apr-2010  cliff - rename bus space related fields in rmixl_pcie_softc
 1.1.2.5 29-Mar-2010  cliff - add extern decl/prototype for rmixl_physaddr_init_pcie()
 1.1.2.4 21-Mar-2010  cliff - add sc_tmsk interrupt routing mask to the softc
- add count_name for naming the evcnt count in
each struct rmixl_pcie_link_dispatch
 1.1.2.3 29-Jan-2010  cliff - add pcie interrupt dispatch stuff
 1.1.2.2 15-Nov-2009  cliff - abandon XKPHYS mapping for access PCIe CFG and ECFG space, useless for N32
- rmixl_pcie_conf_read() and rmixl_pcie_conf_write() now use
rmixl_pcie_conf_setup() to establish bus space mappings for
access to PCIe CFG, ECFG space. The mappings are "lazy"
to allow successive accesses to the same (bus) in CFG space,
or to the same (bus, device) in ECFG space, to reuse the mapping.
 1.1.2.1 09-Nov-2009  cliff add driver and bus space for RMI XLS PCIe Interface
 1.2.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.2.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.1 05-Mar-2011  rmind sync with head
 1.2.4.2 11-Mar-2010  yamt sync with head
 1.2.4.1 14-Dec-2009  yamt file rmixl_pcievar.h was added on branch yamt-nfs-mp on 2010-03-11 15:02:41 +0000
 1.19 22-Jan-2022  skrll Ensure bus_dmatag_subregion is called with an inclusive max_addr
everywhere.
 1.18 22-Jan-2022  skrll Trailing whitespace
 1.17 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.16 24-Apr-2021  thorpej branches: 1.16.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.15 07-Jul-2020  thorpej branches: 1.15.4;
Overhaul the interface to pci_configure_bus():
- Don't expose how PCI bus configuration resource management is implemented.
Provide a new resource provider API:

==> pciconf_resource_init() -- Initialize a PCI configuration resources
container.
==> pciconf_resource_add() -- Add a PCI configuration resource to the
container (I/O, MEM, or prefetchable MEM). Multiple resources of
each type may be added.
==> pciconf_resource_fini() -- Tear down the PCI configurtation resources
container once the bus has been configured.

This is much easier to use than the previous method of providing an
extent map for each kind of resource, and works better for e.g. ACPI
platforms that provide potentially multiple PCI resources in tables
provided by firmware.

- Re-implement PCI configuration resource management using vmem arenas,
rather than extent maps.
 1.14 10-Nov-2019  chs in many device attach paths, allocate memory with M_WAITOK instead of M_NOWAIT
and remove code to handle failures that can no longer happen.
 1.13 02-Oct-2015  msaitoh branches: 1.13.18;
PCI Extended Configuration stuff written by nonaka@:
- Add PCI Extended Configuration Space support into x86.
- Check register offset of pci_conf_read() in MD part. It returns (pcireg_t)-1
if it isn't accessible.
- Decode Extended Capability in PCI Extended Configuration Space.
Currently the following extended capabilities are decoded:
- Advanced Error Reporting
- Virtual Channel
- Device Serial Number
- Power Budgeting
- Root Complex Link Declaration
- Root Complex Event Collector Association
- Access Control Services
- Alternative Routing-ID Interpretation
- Address Translation Services
- Single Root IO Virtualization
- Page Request
- TPH Requester
- Latency Tolerance Reporting
- Secondary PCI Express
- Process Address Space ID
- LN Requester
- L1 PM Substates
The following extended capabilities are not decoded yet:
- Root Complex Internal Link Control
- Multi-Function Virtual Channel
- RCRB Header
- Vendor Unique
- Configuration Access Correction
- Multiple Root IO Virtualization
- Multicast
- Resizable BAR
- Dynamic Power Allocation
- Protocol Multiplexing
- Downstream Port Containment
- Precision Time Management
- M-PCIe
- Function Reading Status Queueing
- Readiness Time Reporting
- Designated Vendor-Specific
 1.12 04-Apr-2014  ozaki-r branches: 1.12.6;
Adjust to pci_intr_string signature
 1.11 11-Mar-2014  mrg avoid set but unused variables.
move variables under their usage #ifdef.
 1.10 27-Oct-2012  chs branches: 1.10.2;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.9 10-Jul-2011  matt branches: 1.9.2; 1.9.12;
Fix machine/ includes
 1.8 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.7 17-May-2011  dyoung PCI_FLAGS_IO_ENABLED and PCI_FLAGS_MEM_ENABLED changed their functional
role in NetBSD (drivers are no longer supposed to write these to
pa_flags) without changing name. Correct that.

Rename PCI_FLAGS_IO_ENABLED to PCI_FLAGS_IO_OKAY and
PCI_FLAGS_MEM_ENABLED to PCI_FLAGS_MEM_OKAY, thus making their names
consistent with the other PCI flags and poisoning 3rd-party driver
sources that use the flags in the old bad way.

This patch produces no binary changes in this set of PCI kernels when
they are compiled w/o 'options DIAGNOSTIC' and w/ -V MKREPRO=yes:

algor P4032 P5064 P6032
alpha GENERIC
amd64 GENERIC XEN3_DOM0
arc GENERIC
atari HADES MILAN-PCIIDE
bebox GENERIC
cats GENERIC
cobalt GENERIC
evbarm-el ADI_BRH ARMADILLO9 CP3100 GEMINI GEMINI_MASTER GEMINI_SLAVE
evbarm-el GUMSTIX HDL_G IMX31LITE INTEGRATOR IQ31244 IQ80310 IQ80321
evbarm-el IXDP425 IXM1200 KUROBOX_PRO
evbarm-el LUBBOCK MARVELL_NAS NAPPI NSLU2 SHEEVAPLUG SMDK2800 TEAMASA_NPWR
evbarm-el TEAMASA_NPWR_FC TS7200 TWINTAIL ZAO425
evbmips-el AP30 DBAU1500 DBAU1550 MALTA MERAKI MTX-1 OMSAL400 RB153 WGT624V3
evbmips64-el XLSATX
evbppc EV64260 MPC8536DS MPC8548CDS OPENBLOCKS200 OPENBLOCKS266
evbppc OPENBLOCKS266_OPT P2020RDB PMPPC RB800 WALNUT
hp700 GENERIC
i386 ALL XEN3_DOM0 XEN3_DOMU
ibmnws GENERIC
iyonix GENERIC
landisk GENERIC
macppc GENERIC
mvmeppc GENERIC
netwinder GENERIC
ofppc GENERIC
prep GENERIC
sandpoint GENERIC
sbmips-el GENERIC
sgimips GENERIC32_IP2x GENERIC32_IP3x
sparc GENERIC_SUN4U KRUPS
sparc64 GENERIC
 1.6 29-Apr-2011  matt Use M_ZERO with malloc instead of doing a explicit memset
 1.5 14-Apr-2011  cliff - in rmixl_pcix_intr_string() convert irq to vector when calling
rmixl_intr_string()
- in rmixl_pcix_intr_establish(), initialize dispatch data 'counts' pointer
- in rmixl_pcix_pip_add_1(), zero out pip_new after allocated.
 1.4 13-Apr-2011  cliff initialize mutex in attach
 1.3 04-Apr-2011  dyoung Neither pci_dma64_available(), pci_probe_device(), pci_mapreg_map(9),
pci_find_rom(), pci_intr_map(9), pci_enumerate_bus(), nor the match
predicate passed to pciide_compat_intr_establish() should ever modify
their pci_attach_args argument, so make their pci_attach_args arguments
const and deal with the fallout throughout the kernel.

For the most part, these changes add a 'const' where there was no
'const' before, however, some drivers and MD code used to modify
pci_attach_args. Now those drivers either copy their pci_attach_args
and modify the copy, or refrain from modifying pci_attach_args:

Xen: according to Manuel Bouyer, writing to pci_attach_args in
pci_intr_map() was a leftover from Xen 2. Probably a bug. I
stopped writing it. I have not tested this change.

siside(4): sis_hostbr_match() needlessly wrote to pci_attach_args.
Probably a bug. I use a temporary variable. I have not tested this
change.

slide(4): sl82c105_chip_map() overwrote the caller's pci_attach_args.
Probably a bug. Use a local pci_attach_args. I have not tested
this change.

viaide(4): via_sata_chip_map() and via_sata_chip_map_new() overwrote the
caller's pci_attach_args. Probably a bug. Make a local copy of the
caller's pci_attach_args and modify the copy. I have not tested
this change.

While I'm here, make pci_mapreg_submap() static.

With these changes in place, I have tested the compilation of these
kernels:

alpha GENERIC
amd64 GENERIC XEN3_DOM0
arc GENERIC
atari HADES MILAN-PCIIDE
bebox GENERIC
cats GENERIC
cobalt GENERIC
evbarm-eb NSLU2
evbarm-el ADI_BRH ARMADILLO9 CP3100 GEMINI GEMINI_MASTER GEMINI_SLAVE GUMSTIX
HDL_G IMX31LITE INTEGRATOR IQ31244 IQ80310 IQ80321 IXDP425 IXM1200
KUROBOX_PRO LUBBOCK MARVELL_NAS NAPPI SHEEVAPLUG SMDK2800 TEAMASA_NPWR
TEAMASA_NPWR_FC TS7200 TWINTAIL ZAO425
evbmips-el AP30 DBAU1500 DBAU1550 MALTA MERAKI MTX-1 OMSAL400 RB153 WGT624V3
evbmips64-el XLSATX
evbppc EV64260 MPC8536DS MPC8548CDS OPENBLOCKS200 OPENBLOCKS266
OPENBLOCKS266_OPT P2020RDB PMPPC RB800 WALNUT
hp700 GENERIC
i386 ALL XEN3_DOM0 XEN3_DOMU
ibmnws GENERIC
macppc GENERIC
mvmeppc GENERIC
netwinder GENERIC
ofppc GENERIC
prep GENERIC
sandpoint GENERIC
sgimips GENERIC32_IP2x
sparc GENERIC_SUN4U KRUPS
sparc64 GENERIC

As of Sun Apr 3 15:26:26 CDT 2011, I could not compile these kernels
with or without my patches in place:

### evbmips-el GDIUM

nbmake: nbmake: don't know how to make /home/dyoung/pristine-nbsd/src/sys/arch/mips/mips/softintr.c. Stop

### evbarm-el MPCSA_GENERIC
src/sys/arch/evbarm/conf/MPCSA_GENERIC:318: ds1672rtc*: unknown device `ds1672rtc'

### ia64 GENERIC

/tmp/genassym.28085/assym.c: In function 'f111':
/tmp/genassym.28085/assym.c:67: error: invalid application of 'sizeof' to incomplete type 'struct pcb'
/tmp/genassym.28085/assym.c:76: error: dereferencing pointer to incomplete type

### sgimips GENERIC32_IP3x

crmfb.o: In function `crmfb_attach':
crmfb.c:(.text+0x2304): undefined reference to `ddc_read_edid'
crmfb.c:(.text+0x2304): relocation truncated to fit: R_MIPS_26 against `ddc_read_edid'
crmfb.c:(.text+0x234c): undefined reference to `edid_parse'
crmfb.c:(.text+0x234c): relocation truncated to fit: R_MIPS_26 against `edid_parse'
crmfb.c:(.text+0x2354): undefined reference to `edid_print'
crmfb.c:(.text+0x2354): relocation truncated to fit: R_MIPS_26 against `edid_print'
 1.2 20-Feb-2011  matt branches: 1.2.2;
Merge forward from matt-nb5-mips64.
 1.1 07-Apr-2010  cliff branches: 1.1.2; 1.1.4; 1.1.6;
file rmixl_pcix.c was initially added on branch matt-nb5-mips64.
 1.1.6.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.4.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.2.13 02-Feb-2012  matt We use avail_clusters_cnt now.
 1.1.2.12 04-Jan-2012  matt Rework Fast Messaging Network support (it's now lockless).
Workaround a problem with bus 0 BAR sizing causing the registers behind
the BAR to become inaccessible.
Move much/most of the startup code from evbmips/rmixl/machdep to
mips/rmi/rmixl_machdep.c
Move the code to find the XLP variant to the early boot so it can be used
early.
8bit and 16bit accessed to PCI bus 0 cause cache errors so chagne the access
of pci mem to 32bits.
 1.1.2.11 31-Dec-2011  matt Switch to using IST_<foo> instead of private enums.
 1.1.2.10 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.9 29-Apr-2011  matt Major merge to/from current.
Adds MIPS32/MIPS64 R2 support (24k, 74k, etc.) including COP0_USERLOCAL
Adds support for emulation of rdhwr $3,$29 instruction.
Major cleanup of SMP code. (stable on multi-core / single thread per core)
llsc locking code only used in MP capable kernels.
 1.1.2.8 13-Apr-2011  cliff initialize mutex in attach
 1.1.2.7 20-Sep-2010  cliff - provide lockless interrupt dispatch by eliminating use of LIST(9)
for interrupt handles. Handles are now managed in variable size arrays.
Establishing a new interrupt causes allocation of a new array, pointer
to which is changed atomically. Old arrays are allowed to persist for
some time before free, allowing any CPU working with that data
to safely finish using it.
- interrupt events are now managed per-CPU, avoid need for atomic adds.
 1.1.2.6 26-Aug-2010  rmind Fix non-DEBUG/DIAGNOSTIC builds of RMI mips64.
 1.1.2.5 17-Apr-2010  cliff - in rmixl_pcix_attach() use bus_dmatag_subregion() to set up
bounce buffering for non-DMA-accessible RAM addrs
 1.1.2.4 16-Apr-2010  cliff - in attach, if Host BAR does not cover all RAM, instead of panic,
complain a lot, and force use of DMA bounce buffers
 1.1.2.3 12-Apr-2010  cliff - specifiy if mpsafe when establishing interrupts
(all are 'false' except comintr for now)
 1.1.2.2 12-Apr-2010  cliff - add bit defines for HOST_MODE_CTL reg
- panic if Host BAR regs do not cover RAM addrs 0..mem_cluster_maxaddr
 1.1.2.1 07-Apr-2010  cliff - add driver for RMI XLR PCI-X interface
 1.2.2.4 31-May-2011  rmind sync with head
 1.2.2.3 21-Apr-2011  rmind sync with head
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 20-Feb-2011  rmind file rmixl_pcix.c was added on branch rmind-uvmplock on 2011-03-05 20:51:11 +0000
 1.9.12.3 03-Dec-2017  jdolecek update from HEAD
 1.9.12.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.9.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.9.2.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.9.2.1 30-Oct-2012  yamt sync with head
 1.10.2.1 18-May-2014  rmind sync with head
 1.12.6.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.13.18.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.15.4.2 02-Apr-2021  thorpej config_found_ia() -> config_found() w/ CFARG_IATTR.
 1.15.4.1 23-Mar-2021  thorpej Convert config_found_ia() call sites where the device only carries
a single interface attribute to bare config_found() calls.
 1.16.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.2 20-Feb-2011  matt branches: 1.2.2;
Merge forward from matt-nb5-mips64.
 1.1 07-Apr-2010  cliff branches: 1.1.2; 1.1.4; 1.1.6;
file rmixl_pcixvar.h was initially added on branch matt-nb5-mips64.
 1.1.6.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.4.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.2.4 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.3 20-Sep-2010  cliff - provide lockless interrupt dispatch by eliminating use of LIST(9)
for interrupt handles. Handles are now managed in variable size arrays.
Establishing a new interrupt causes allocation of a new array, pointer
to which is changed atomically. Old arrays are allowed to persist for
some time before free, allowing any CPU working with that data
to safely finish using it.
- interrupt events are now managed per-CPU, avoid need for atomic adds.
 1.1.2.2 13-Apr-2010  cliff add TNF License and copyright.
 1.1.2.1 07-Apr-2010  cliff - add driver for RMI XLR PCI-X interface
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 20-Feb-2011  rmind file rmixl_pcixvar.h was added on branch rmind-uvmplock on 2011-03-05 20:51:11 +0000
 1.1 19-Jan-2012  matt branches: 1.1.2;
file rmixl_pke_pci.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 19-Jan-2012  matt PCI attachments (mostly stubs) for most XLP devices.
 1.1 19-Jan-2012  matt branches: 1.1.2;
file rmixl_poe_pci.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 19-Jan-2012  matt PCI attachments (mostly stubs) for some XLP devices.
POE = Packet Ordering Engine
SAE = Security Acceleration Engine
 1.1 19-Jan-2012  matt branches: 1.1.2;
file rmixl_poereg.h was initially added on branch matt-nb5-mips64.
 1.1.2.1 19-Jan-2012  matt PCI attachments (mostly stubs) for some XLP devices.
POE = Packet Ordering Engine
SAE = Security Acceleration Engine
 1.1 19-Jan-2012  matt branches: 1.1.2;
file rmixl_rxe_pci.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 19-Jan-2012  matt PCI attachments (mostly stubs) for most XLP devices.
 1.1 19-Jan-2012  matt branches: 1.1.2;
file rmixl_sae_pci.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 19-Jan-2012  matt PCI attachments (mostly stubs) for some XLP devices.
POE = Packet Ordering Engine
SAE = Security Acceleration Engine
 1.1 24-Dec-2011  matt branches: 1.1.2;
file rmixl_sdhc.c was initially added on branch matt-nb5-mips64.
 1.1.2.2 15-Feb-2014  matt HAS_CGM -> HAVE_CGM (like current)
Add 32BIT_ACCESS
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1 24-Dec-2011  matt branches: 1.1.2;
file rmixl_sdhcvar.h was initially added on branch matt-nb5-mips64.
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1 24-Dec-2011  matt branches: 1.1.2;
file rmixl_sdio.c was initially added on branch matt-nb5-mips64.
 1.1.2.2 30-Dec-2011  matt Add GPIO support for XLP.
Let NAND, MMC/SD, and SPI remove their pins from the GPIO available pin mask.
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1 27-Dec-2011  matt branches: 1.1.2;
file rmixl_spi_pci.c was initially added on branch matt-nb5-mips64.
 1.1.2.2 30-Dec-2011  matt Add GPIO support for XLP.
Let NAND, MMC/SD, and SPI remove their pins from the GPIO available pin mask.
 1.1.2.1 27-Dec-2011  matt Add NOR/NAND (from HEAD)/SPI attachments.
 1.7 01-Sep-2021  andvar fix few typos in comments.
 1.6 01-Dec-2020  skrll Trailing whitespace
 1.5 26-Jul-2020  simonb branches: 1.5.2;
Use EIMR/EIRR regs definitions from <mips/cpuregs.h>
 1.4 19-Jun-2015  matt Don't include <machine/param.h>
 1.3 14-Apr-2011  cliff branches: 1.3.14; 1.3.32;
- remove most of the PARANOIA code
- add COP0_SYNC and JR_HB_RA following CP0 after all
writes to STATUS or EIMR that change interrupt control.
- all interrupt control now done w/ EIMR, except for
initial set of IE in STATUS.
 1.2 20-Feb-2011  matt branches: 1.2.2;
Merge forward from matt-nb5-mips64.
 1.1 21-Mar-2010  cliff branches: 1.1.2; 1.1.4; 1.1.6;
file rmixl_spl.S was initially added on branch matt-nb5-mips64.
 1.1.6.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.4.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.2.6 29-Apr-2011  matt Major merge to/from current.
Adds MIPS32/MIPS64 R2 support (24k, 74k, etc.) including COP0_USERLOCAL
Adds support for emulation of rdhwr $3,$29 instruction.
Major cleanup of SMP code. (stable on multi-core / single thread per core)
llsc locking code only used in MP capable kernels.
 1.1.2.5 20-Sep-2010  cliff - .set noreorder up top to avoid instruction reordering
- adopt bugfix suggested by Manuel Boyer for mips/spl.S:
in _splraise and _splsw_splhigh, reload L_CPU in case we were
preempted prior to interrupts being blocked (thanks).
 1.1.2.4 28-May-2010  cliff rmixl_spl.S:
- where possible, stop using CP0 STATUS to disable all interrupts,zero EIMR instead. more efficient since less meddling with CP0.
assume STATUS[IE] is normally set.
- add rmixl_spl_init_cpu(), to initialize cp0 interrupt control for this cpu

rmixl_intr.c:
- rmixl_intr_init_cpu() calls rmixl_spl_init_cpu()
to set up CP0 interrupt controls for this cpu
 1.1.2.3 21-May-2010  cliff - turn off PARANOIA
- except for softintr irqs, ipl_eimr_map is no longer const;
all other irq bits are set/cleared at interrupt establish/disestablish
- add _splsw_splddb
- in _splsw_splintr, correct the return IPL_NONE case, and clarify some comments
 1.1.2.2 14-Apr-2010  cliff insert nop in delay slots
- at end of _splsw_splvm and
- inside _splsw_splint
 1.1.2.1 21-Mar-2010  cliff add splswitch variant using RMI chip-specific EIRR/EIMR interrupt extensions
 1.2.2.3 21-Apr-2011  rmind sync with head
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 20-Feb-2011  rmind file rmixl_spl.S was added on branch rmind-uvmplock on 2011-03-05 20:51:11 +0000
 1.3.32.1 22-Sep-2015  skrll Sync with HEAD
 1.3.14.1 03-Dec-2017  jdolecek update from HEAD
 1.5.2.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.1 24-Dec-2011  matt branches: 1.1.2;
file rmixl_srio_mem_space.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1 19-Jan-2012  matt branches: 1.1.2;
file rmixl_srio_pci.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 19-Jan-2012  matt PCI attachments (mostly stubs) for most XLP devices.
 1.7 26-Jul-2020  simonb Use EIMR/EIRR regs definitions from <mips/cpuregs.h>
 1.6 07-Jun-2015  matt Define COP0 register that use select value in <mips/cpuregs.h>
Use those new definitions
 1.5 14-Apr-2011  matt branches: 1.5.14; 1.5.32;
Use .set arch=xlr to access RMI specific instructions.
 1.4 14-Apr-2011  cliff - fix RCSID
- add rmixl_eirr_ack() to ack the EIRR, using COP0_SYNC & JR_HB_RA as needed
- in rmixl_cpu_trampoline, remove old KSEG0 address reconstruction
of trampoline args pointer, and comment/explain the new way
- also in rmixl_cpu_trampoline, remove old watchpoint hack used for debugging
 1.3 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.2 14-Dec-2009  matt branches: 1.2.4; 1.2.6; 1.2.8; 1.2.10;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.1 13-Nov-2009  cliff branches: 1.1.2;
file rmixl_subr.S was initially added on branch matt-nb5-mips64.
 1.1.2.12 19-Jan-2012  matt KX needs to be enabled for n32
 1.1.2.11 06-Dec-2011  matt Use MIPS_COP_0_OSSCRATCH instead $22
 1.1.2.10 03-Dec-2011  matt Rework things a bit for the XLR/XLS/XLP TLB. Before dealing with the TLB when
MP on the XL?, disable interrupts and take out a lock to prevent concurrent
updates to the TLB. In the TLB miss and invalid exception handlers, if the
lock is already owned by another CPU, simply return from the exception and
let it continue or restart as appropriate. This prevents concurrent TLB
exceptions in multiple threads from possibly updating the TLB multiple times
for a single address.
 1.1.2.9 26-May-2011  matt Add MIPS64_RMIXL (XLR/XLS) and MIPS64R2_RMIXL (XLP). This allows the kernel
to treat this special which is needed for MP support. When accessing the TLB,
always lock the TLB before hand. If in the miss handlers, the TLB is already
locked let trap deal with the exeception.
 1.1.2.8 29-Apr-2011  matt Major merge to/from current.
Adds MIPS32/MIPS64 R2 support (24k, 74k, etc.) including COP0_USERLOCAL
Adds support for emulation of rdhwr $3,$29 instruction.
Major cleanup of SMP code. (stable on multi-core / single thread per core)
llsc locking code only used in MP capable kernels.
 1.1.2.7 13-Apr-2010  cliff add TNF License and copyright.
 1.1.2.6 22-Mar-2010  cliff - in rmixlfw_wakeup_cpu, properly nuke the upper half of sp
before OR-ing in KSEG0_START. This is only needed in _LP64 case.
- in rmixl_cpu_trampoline:
trampoline args addr needs reconstructing the upper half only in _LP64 case.
delete set of MIPS_SR_INT_IE bit.
use REG_L instead of PTR_L to load trampoline args
so we get 64 bit loads in both 32 and 64 bit kernels.
 1.1.2.5 21-Mar-2010  cliff - add rmixlfw_wakeup_cpu, performs callback to RMI firmware wakeup function
- add rmixl_cpu_trampoline, entry point for CPU wakeup following
RMI firmware wakeup callback.
 1.1.2.4 10-Feb-2010  cliff save gp and t8 before callback to firmware
 1.1.2.3 24-Jan-2010  cliff - cpu_rmixl_attach calls cpu_setup_trampoline to get control of
subordinate CPUs from firmware by using the 'wakeup' callback method
and into cpu_wakeup_trampoline where they just spin pending further work.
- the callback requires re-basing the stack pointer to be in KSEG0,
done in asm subroutine rmixlfw_wakeup_cpu
 1.1.2.2 31-Dec-2009  matt Indicate that some RMI mfcr/mtcr can't be used in O32
 1.1.2.1 13-Nov-2009  cliff - rmixls_subr.S is replaced by rmixl_subr.S
- those subroutine names changed accordingly
 1.2.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.2.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.2 21-Apr-2011  rmind sync with head
 1.2.6.1 05-Mar-2011  rmind sync with head
 1.2.4.2 11-Mar-2010  yamt sync with head
 1.2.4.1 14-Dec-2009  yamt file rmixl_subr.S was added on branch yamt-nfs-mp on 2010-03-11 15:02:41 +0000
 1.5.32.1 22-Sep-2015  skrll Sync with HEAD
 1.5.14.1 03-Dec-2017  jdolecek update from HEAD
 1.7 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.6 24-Apr-2021  thorpej branches: 1.6.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.5 01-Jul-2011  dyoung branches: 1.5.68;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.4 29-Apr-2011  matt Provide OHCI companions devices to EHCI.
 1.3 14-Apr-2011  cliff - report of BIST result is information only; don't fail attach because of it
 1.2 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.1 14-Dec-2009  cliff branches: 1.1.2; 1.1.6; 1.1.8; 1.1.10;
file rmixl_usbi.c was initially added on branch matt-nb5-mips64.
 1.1.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.6.3 31-May-2011  rmind sync with head
 1.1.6.2 21-Apr-2011  rmind sync with head
 1.1.6.1 05-Mar-2011  rmind sync with head
 1.1.2.11 19-Jan-2012  matt Fix config ifattr.
 1.1.2.10 31-Dec-2011  matt Switch to using IST_<foo> instead of private enums.
 1.1.2.9 30-Dec-2011  matt Change devices name from rmixl_* to xl*.
 1.1.2.8 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.7 29-Apr-2011  matt Major merge to/from current.
Adds MIPS32/MIPS64 R2 support (24k, 74k, etc.) including COP0_USERLOCAL
Adds support for emulation of rdhwr $3,$29 instruction.
Major cleanup of SMP code. (stable on multi-core / single thread per core)
llsc locking code only used in MP capable kernels.
 1.1.2.6 05-Feb-2011  cliff - if obio_intr is OBIOCF_INTR_DEFAULT, don't establish an interrupt
 1.1.2.5 12-Apr-2010  cliff - specifiy if mpsafe when establishing interrupts
(all are 'false' except comintr for now)
 1.1.2.4 21-Mar-2010  cliff - obtain interrupt routing mask from obio_attach_args,
pass along to rmixl_intr_establish
 1.1.2.3 29-Jan-2010  cliff - use rmixl_probe_4 to match
- fail attach if USB interface is disabled GPIO LOW_PWR_DIS reg (?)
- fail attach if USB interface BIST failed (?)
- enable HW byteswap enable if LITTLE_ENDIAN
 1.1.2.2 10-Jan-2010  matt Add generic support for DMA bounce buffers and real version of
bus_dmatag_subregion. MALTA uses it for ISADMA. Make RMIXL use
for creating 32bit and 29bit subregions.
 1.1.2.1 14-Dec-2009  cliff - add driver for XLS USB Interface
 1.5.68.6 05-Apr-2021  thorpej Treat config_probe() as if it were a boolean function; don't compare
return value > 0... except for the odd balls, which are now really easy
to spot.
 1.5.68.5 05-Apr-2021  thorpej config_match() -> config_probe() for the straight-forward indirect config
cases. There are still a few odd balls using config_match() which should
be sorted out later.
 1.5.68.4 04-Apr-2021  thorpej CFARG_SUBMATCH -> CFARG_SEARCH for the indirect configuration uses.
 1.5.68.3 03-Apr-2021  thorpej Give config_attach() the tagged variadic argument treatment and
mechanically convert all call sites.
 1.5.68.2 21-Mar-2021  thorpej CFARG_IATTR usage audit:

If a device carries only one interface attribute, there is no need
to specify it when calling config_search(); that specification is
meant only to disambiguate which interface attribute (which is a
proxy for "what kind of attach args are being used") is having
children attached. cfparent_match() will take care of ensuring that
any potential children can attach to one of the parent's iterface
attributes, and if the parent only carries one, no disambiguation is
necessary.
 1.5.68.1 20-Mar-2021  thorpej The proliferation if config_search_*() and config_found_*() combinations
is a little absurd, so begin to tidy this up:

- Introduce a new cfarg_t enumerated type, that defines the types of
tag-value variadic arguments that can be passed to the various
config_*() functions (CFARG_SUBMATCH, CFARG_IATTR, and CFARG_LOCATORS,
for now, plus a CFARG_EOL sentinel).
- Collapse config_search_*() into config_search() that takes these
variadic arguments.
- Convert all call sites of config_search_*() to the new signature.
Noticed several incorrect usages along the way, which will be
audited in a future commit.
 1.6.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.4 08-Jul-2011  dyoung Just #include <sys/bus.h> instead of <machine/bus_dma.h>, which is going
away, soon.
 1.3 29-Apr-2011  matt Provide OHCI companions devices to EHCI.
 1.2 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.1 14-Dec-2009  cliff branches: 1.1.2; 1.1.6; 1.1.8; 1.1.10;
file rmixl_usbivar.h was initially added on branch matt-nb5-mips64.
 1.1.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.6.2 31-May-2011  rmind sync with head
 1.1.6.1 05-Mar-2011  rmind sync with head
 1.1.2.2 29-Apr-2011  matt Major merge to/from current.
Adds MIPS32/MIPS64 R2 support (24k, 74k, etc.) including COP0_USERLOCAL
Adds support for emulation of rdhwr $3,$29 instruction.
Major cleanup of SMP code. (stable on multi-core / single thread per core)
llsc locking code only used in MP capable kernels.
 1.1.2.1 14-Dec-2009  cliff - add driver for XLS USB Interface
 1.1 24-Dec-2011  matt branches: 1.1.2;
file rmixl_xlnae.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1 24-Dec-2011  matt branches: 1.1.2;
file rmixl_xlnae_obio.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1 24-Dec-2011  matt branches: 1.1.2;
file rmixl_xlnae_pci.c was initially added on branch matt-nb5-mips64.
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1 24-Dec-2011  matt branches: 1.1.2;
file rmixlp_pcie.c was initially added on branch matt-nb5-mips64.
 1.1.2.10 05-Nov-2013  matt Add XLP2XX support.
 1.1.2.9 15-Dec-2012  matt Add initial support for XLP II (XLP2XX/XLP1XX).
 1.1.2.8 09-Jan-2012  matt Use a map of bar0 sizes instead of a switch statement.
Return the proper IRT entry for the 2nd i2c controller.
 1.1.2.7 04-Jan-2012  matt Rework Fast Messaging Network support (it's now lockless).
Workaround a problem with bus 0 BAR sizing causing the registers behind
the BAR to become inaccessible.
Move much/most of the startup code from evbmips/rmixl/machdep to
mips/rmi/rmixl_machdep.c
Move the code to find the XLP variant to the early boot so it can be used
early.
8bit and 16bit accessed to PCI bus 0 cause cache errors so chagne the access
of pci mem to 32bits.
 1.1.2.6 31-Dec-2011  matt Switch to using IST_<foo> instead of private enums.
 1.1.2.5 31-Dec-2011  matt Consolidate and complete PCITAGs.
Print/Set BARs for AHCI and SRIO.
 1.1.2.4 30-Dec-2011  matt Cleanup USB byte swap support.
 1.1.2.3 28-Dec-2011  matt Cleanup aprint*
 1.1.2.2 27-Dec-2011  matt Make it compile if PCI_NETBSD_CONFIGURE is not present.
 1.1.2.1 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.6 03-May-2025  riastradh mips: Include opt_cputype.h before any of the flags it defines.

PR port-evbmips/59385: PGSHIFT is inconsistently defined on MIPS
 1.5 24-Jul-2021  andvar branches: 1.5.16;
Fix all remaining typos, mainly in comments but also in few definitions and log messages, reported by me in PR kern/54889.
Also fixed some additional typos in comments, found on review of same files or typos.
 1.4 18-Mar-2011  cliff branches: 1.4.72;
- add register & bit defines for GPIO, Peripherals IO Bus, Flash, NAND
 1.3 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.2 14-Dec-2009  matt branches: 1.2.4; 1.2.6; 1.2.8; 1.2.10;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.1 13-Sep-2009  cliff branches: 1.1.2;
file rmixlreg.h was initially added on branch matt-nb5-mips64.
 1.1.2.22 05-Nov-2013  matt Add XLP2XX support.
 1.1.2.21 15-Dec-2012  matt Add initial support for XLP II (XLP2XX/XLP1XX).
 1.1.2.20 19-Jan-2012  matt Fix IPI_CTRL_MAKE for RMIXLP
Correct PCITAGs for CDE/SRIO/RXE.
 1.1.2.19 04-Jan-2012  matt Rework Fast Messaging Network support (it's now lockless).
Workaround a problem with bus 0 BAR sizing causing the registers behind
the BAR to become inaccessible.
Move much/most of the startup code from evbmips/rmixl/machdep to
mips/rmi/rmixl_machdep.c
Move the code to find the XLP variant to the early boot so it can be used
early.
8bit and 16bit accessed to PCI bus 0 cause cache errors so chagne the access
of pci mem to 32bits.
 1.1.2.18 31-Dec-2011  matt Consolidate and complete PCITAGs.
Print/Set BARs for AHCI and SRIO.
 1.1.2.17 31-Dec-2011  matt Deal with the movement of some GPIO registers on the XPL3xx.
 1.1.2.16 30-Dec-2011  matt Add GPIO support for XLP.
Let NAND, MMC/SD, and SPI remove their pins from the GPIO available pin mask.
 1.1.2.15 28-Dec-2011  matt Add NOR support for XLP.
 1.1.2.14 27-Dec-2011  matt Add NOR/NAND (from HEAD)/SPI attachments.
 1.1.2.13 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.12 01-May-2010  cliff correct offset for RMIXL_FMN_BS_SGMII_FCB1
 1.1.2.11 07-Apr-2010  cliff - add PCI-X regs
- improve names for XLR and XLS specific and common
PCI-X, PCIe regs and macros
 1.1.2.10 24-Mar-2010  cliff shift enable bits into correct field in RMIXL_PIC_CONTROL_TIMER_ENBn() macro
 1.1.2.9 21-Mar-2010  cliff - add defines for Coprocessor 2 (FMN) registers
- add defines for non-CPU-core FMN bucket size and credit counter regs
arch/mips/rmi/rmixlvar.h
 1.1.2.8 29-Jan-2010  cliff - add RMIXL_ADDR_ERR_DEVICE_MASK_2 reg
- add RMIXL_GPIO_LOW_PWR_DIS bit defines
 1.1.2.7 17-Jan-2010  cliff - fix RMIXL_PIC_IPIBASE register bits
 1.1.2.6 03-Jan-2010  cliff - unconfuse bit defines for rmixl gpio RESET and RESET_CFG registers
 1.1.2.5 14-Dec-2009  cliff - add bit defines for GPIO_RESET register
- add register defines for USB
 1.1.2.4 09-Nov-2009  cliff - RMIXL_IOREG_READ, RMIXL_IOREG_WRITE provide general use ops for
accessing on-chip DEV_IO regs w/ Big Endian byte order.
- add System Bridge Controller registers defines
- add Address Error registers defines
- add DRAM register defines
- add GPIO signal and system control register offsets
- add PCIE Interface controller register offsets
- fix typo for RMIXL_PIC_INTRACK
- add RMIXL_PIC_IRTENTRYC0_RESV
 1.1.2.3 25-Sep-2009  cliff define some fields for reserved register bits
 1.1.2.2 15-Sep-2009  cliff add som XLS PIC register defines
 1.1.2.1 13-Sep-2009  cliff add netbsd support for RMI XLS6ATX_7A board and XL SoC family
 1.2.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.2.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.2 21-Apr-2011  rmind sync with head
 1.2.6.1 05-Mar-2011  rmind sync with head
 1.2.4.2 11-Mar-2010  yamt sync with head
 1.2.4.1 14-Dec-2009  yamt file rmixlreg.h was added on branch yamt-nfs-mp on 2010-03-11 15:02:42 +0000
 1.4.72.1 01-Aug-2021  thorpej Sync with HEAD.
 1.5.16.1 02-Aug-2025  perseant Sync with HEAD
 1.1 09-Nov-2009  cliff branches: 1.1.2;
file rmixls_subr.S was initially added on branch matt-nb5-mips64.
 1.1.2.2 13-Nov-2009  cliff - rmixls_subr.S is replaced by rmixl_subr.S
- those subroutine names changed accordingly
 1.1.2.1 09-Nov-2009  cliff this is a temporary place to park some trivial .S stuff until they can find a better home
 1.7 11-Mar-2014  mrg avoid set but unused variables.
move variables under their usage #ifdef.
 1.6 01-Jul-2011  dyoung branches: 1.6.2; 1.6.12; 1.6.16;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.5 14-Apr-2011  cliff - add prototype for rmixl_eirr_ack()
 1.4 18-Mar-2011  cliff - add to struct rmixl_config storage for IO Peripherals Bus
base address, address mask, and bus space.
 1.3 20-Feb-2011  matt Merge forward from matt-nb5-mips64.
 1.2 14-Dec-2009  matt branches: 1.2.4; 1.2.6; 1.2.8; 1.2.10;
Merge from matt-nb5-mips64
Merge mips-specific arch files.
 1.1 13-Sep-2009  cliff branches: 1.1.2;
file rmixlvar.h was initially added on branch matt-nb5-mips64.
 1.1.2.27 15-Dec-2012  matt Add initial support for XLP II (XLP2XX/XLP1XX).
 1.1.2.26 19-Jan-2012  matt Improved true/false for cpu_rmixl?
 1.1.2.25 04-Jan-2012  matt Rework Fast Messaging Network support (it's now lockless).
Workaround a problem with bus 0 BAR sizing causing the registers behind
the BAR to become inaccessible.
Move much/most of the startup code from evbmips/rmixl/machdep to
mips/rmi/rmixl_machdep.c
Move the code to find the XLP variant to the early boot so it can be used
early.
8bit and 16bit accessed to PCI bus 0 cause cache errors so chagne the access
of pci mem to 32bits.
 1.1.2.24 30-Dec-2011  matt Add a field to track available GPIO pins.
 1.1.2.23 28-Dec-2011  matt Add NOR support for XLP.
 1.1.2.22 27-Dec-2011  matt Add NOR/NAND (from HEAD)/SPI attachments.
 1.1.2.21 24-Dec-2011  matt Add XLP support (i2c, console, pci, sdhc works).
 1.1.2.20 29-Apr-2011  matt Major merge to/from current.
Adds MIPS32/MIPS64 R2 support (24k, 74k, etc.) including COP0_USERLOCAL
Adds support for emulation of rdhwr $3,$29 instruction.
Major cleanup of SMP code. (stable on multi-core / single thread per core)
llsc locking code only used in MP capable kernels.
 1.1.2.19 07-Jan-2011  cliff - add prottotype for rmixl_pcr_init_core()
 1.1.2.18 17-Apr-2010  cliff - struct rmixl_config field 'rc_64bit_dmat' is now a bus_dma_tag_t
and initially points at 'rc_dma_tag' which provides the store area.
this allows rc_64bit_dmat to be subregioned for imposing
bounce-buffering if needed.
 1.1.2.17 07-Apr-2010  cliff - bus space related fields renamed to reflect use by both pcie and pcix
 1.1.2.16 29-Mar-2010  cliff - add inline cpu_rmixl_chip_type()
 1.1.2.15 21-Mar-2010  cliff moved a number of RMI interrupt items to rmixl_intr.h
 1.1.2.14 23-Feb-2010  matt Make sure <mips/locore.h> is not included by MI code.
Add send_ipi and cpu_offline_md hooks to locoresw.
Add MP support to pmap (pvlist locking, tlb locking).
Add TLB shootdown support (see comment at the top of mips/pmap_tlb.c).
Add mipsXX_tlb_invalidate_globals routine
 1.1.2.13 29-Jan-2010  cliff - add enum and display name lookup for firmware type
- firmware type field added to rmixl_config
- rmixl_cache_err_dis, rmixl_cache_err_restore, rmixl_cache_err_check
inlines moved here from pcie driver
- add rmixl_probe_4 nofault address probe inline
 1.1.2.12 24-Jan-2010  cliff - move firmware info stuff into struct rmixl_config
 1.1.2.11 17-Jan-2010  cliff - add cpu wakeup info pointers
 1.1.2.10 10-Jan-2010  matt Add generic support for DMA bounce buffers and real version of
bus_dmatag_subregion. MALTA uses it for ISADMA. Make RMIXL use
for creating 32bit and 29bit subregions.
 1.1.2.9 14-Dec-2009  cliff - replace single bus space with two (big & little endian) bus spaces for obio
 1.1.2.8 18-Nov-2009  cliff - add extents for bus spaces
 1.1.2.7 15-Nov-2009  cliff - use new obio bus space
- add bus space stuff for PCIe CFG and ECFG spaces
 1.1.2.6 13-Nov-2009  cliff - add inline to simplify recognizing RMI Company ID
- add inlines to simplify use of RMI company specific flags in pridtab entry
 1.1.2.5 09-Nov-2009  cliff - remove unused extents
- add pci stuff to struct rmixl_config
- add dma tags to struct rmixl_config
- link physaddr extent to struct rmixl_config
- >>>> rc_pci_io_ex and rc_pci_mem_ex can be removed, unused ???
- add prototypes for PCI funcs
- add prototypes for addr interrupt funcs
- add prototypes for addr sbccheck debug funcs
- prototype for rmixls_mfcr, rmixls_mtcr -- these are temporary until determine better home
 1.1.2.4 25-Sep-2009  cliff - add enums for rmixl interrupt trigger and polarity attributes
- rmixl_intr_establish gets an updated prpototype
 1.1.2.3 15-Sep-2009  cliff obio now provides both big endian and little endian bus spaces
to allow child devices to use according to access method needs

also preparing for dual bus_dma methods, one for addrs <4GB,
the other for all memory, including addrs >= 4GB
the bulk of XLS DMA work is still TBD
 1.1.2.2 13-Sep-2009  cliff improve how some config data are managed
 1.1.2.1 13-Sep-2009  cliff add netbsd support for RMI XLS6ATX_7A board and XL SoC family
 1.2.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.2.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.6.2 21-Apr-2011  rmind sync with head
 1.2.6.1 05-Mar-2011  rmind sync with head
 1.2.4.2 11-Mar-2010  yamt sync with head
 1.2.4.1 14-Dec-2009  yamt file rmixlvar.h was added on branch yamt-nfs-mp on 2010-03-11 15:02:42 +0000
 1.6.16.1 18-May-2014  rmind sync with head
 1.6.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.6.2.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")

RSS XML Feed