Home | History | Annotate | only in /src/sys/arch/arm/imx
History log of /src/sys/arch/arm/imx
RevisionDateAuthorComments
 1.3 13-Nov-2010  bsh rename files.imx as files.imx31
 1.2 27-Apr-2008  matt branches: 1.2.22;
Merge kernel changes in matt-armv6 to HEAD.
 1.1 29-Aug-2007  matt branches: 1.1.2; 1.1.20; 1.1.22; 1.1.24;
file files.imx was initially added on branch matt-armv6.
 1.1.24.1 16-May-2008  yamt sync with head.
 1.1.22.1 18-May-2008  yamt sync with head.
 1.1.20.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.2.3 28-Jan-2008  matt Given the that there are only 4 IPLs (ignoring soft IPLs), a number of
cleanups can be done:
Remove _SPL_* aliases.
Don't store irqmasks in ci_cpl, just make it an ipl level.
Add fast softint switching support.
 1.1.2.2 11-Sep-2007  matt Initial support for Freescale i.MX31 (ARM1136).
 1.1.2.1 29-Aug-2007  matt W-I-P initial support for Freescale i.MX31 ARM11 SoC.
 1.2.22.1 05-Mar-2011  rmind sync with head
 1.7 09-Oct-2025  skrll Add the beginnings of a GENERIC_V5 kernel that targets armv5 boards and
uses FDT.

In this first iteration some support is added for OLinuXino boards.

Thanks to Yuri Honegger for doing the vast majority of the work.
 1.6 28-Nov-2020  skrll Fix build by renaming the pinctrl driver
 1.5 26-Nov-2020  skrll Trailing whitespace
 1.4 10-Jan-2015  jmcneill branches: 1.4.30;
Petri Laakso <petri.laakso@asd.fi>
- New audio driver
- Add new devices rtc and digfilt
- Use BOOT_ARGS if defined in kernel configuration
 1.3 10-Jan-2015  jmcneill define MEMSIZE in opt_imx.h, fixes build of IMX23_OLINUXINO kernel
 1.2 07-Oct-2013  matt branches: 1.2.4; 1.2.6; 1.2.10;
iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.4; 1.1.6;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.6.4 03-Dec-2017  jdolecek update from HEAD
 1.1.6.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file files.imx23 was added on branch tls-maxphys on 2013-02-25 00:28:27 +0000
 1.1.4.1 18-May-2014  rmind sync with head
 1.1.2.3 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file files.imx23 was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.2.10.1 06-Sep-2016  skrll First pass at netbsd-7 updated with USB code from HEAD
 1.2.6.1 06-Apr-2015  skrll Sync with HEAD
 1.2.4.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.30.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.8 08-Sep-2017  hkenken - Move CFATTACH_DECL_NEW() from common uart driver.
- Rename : imxuart_cons_attach() -> imxuart_cnattach()
 1.7 11-Mar-2011  bsh branches: 1.7.14;
split arch/arm/pic/pic.c so that we can implement more efficient version of splfoo() while using pic framework.
 1.6 15-Nov-2010  bsh branches: 1.6.2; 1.6.6;
EPIT support as system clock for i.MX31
 1.5 13-Nov-2010  bsh branches: 1.5.2;
UART driver for i.MX31 and 51.
 1.4 13-Nov-2010  bsh back out previous. That was an mistake.
 1.3 13-Nov-2010  bsh rename imx31_space.c as imx_space.c
 1.2 13-Nov-2010  bsh rename imx31_space.c as imx_space.c
 1.1 13-Nov-2010  bsh rename files.imx as files.imx31
 1.5.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.5.2.1 13-Nov-2010  uebayasi file files.imx31 was added on branch uebayasi-xip on 2010-11-15 14:38:21 +0000
 1.6.6.3 21-Apr-2011  rmind sync with head
 1.6.6.2 05-Mar-2011  rmind sync with head
 1.6.6.1 15-Nov-2010  rmind file files.imx31 was added on branch rmind-uvmplock on 2011-03-05 20:49:33 +0000
 1.6.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.7.14.1 03-Dec-2017  jdolecek update from HEAD
 1.24 21-Jun-2020  skrll Remove all paltforms
 1.23 21-Jun-2020  simonb Fix tyop.
 1.22 23-May-2020  rin imxpwm depends on clk.
 1.21 20-May-2020  hkenken Use kernel API of PWM subsystems for i.MX PWM driver.
 1.20 12-Oct-2019  skrll Spell controller correctly
 1.19 24-Jul-2019  hkenken Modified i.MX GPIO control module and PCIe module.

+ Add imxpcie.c
imx PCIe common driver
 1.18 17-Mar-2018  ryo branches: 1.18.2;
move from sys/arch/arm/arm32/armv7_generic_dma.c to sys/arch/arm/arm/arm_generic_dma.c,
and change variable name from armv7_generic_dma_tag to arm_generic_dma_tag

no functional change. (preliminary changes for merging aarch64)
 1.17 08-Sep-2017  hkenken branches: 1.17.2;
- Move CFATTACH_DECL_NEW() from common uart driver.
- Rename : imxuart_cons_attach() -> imxuart_cnattach()
 1.16 18-Aug-2017  jakllsch Sprinkle 'bus_dma_generic needs-flag' to fix build after previous.
 1.15 17-Aug-2017  hkenken Use armv7_generic_[dma|bs]_tag.
 1.14 21-Dec-2015  hkenken Rewritten to take advantage of genfb(4).
 1.13 07-May-2015  hkenken use armv7_generic_space
 1.12 27-Mar-2015  hkenken Rewritten to take advantage of motoi2c code.
 1.11 25-Jul-2014  hkenken branches: 1.11.4;
Add support i.MX50x
* i.MX50 series is e-ink e-reader processor.
 1.10 25-Jul-2014  hkenken Add i2c driver for i.MX.
 1.9 06-May-2014  hkenken Add support for LCD Backlight control on NetWalker.
+ use imxpwm driver (PWM control driver for i.MX)
 1.8 22-Mar-2014  hkenken branches: 1.8.2;
Add SPI driver.
i.MX51 have two eCSPI, and one CSPI.
 1.7 22-Mar-2014  hkenken * GPIO interrupts of i.MX5 are divided into two groups.
add IMX_GPIO_INTR_SPLIT option
* Support GPIO both edge trigger interrupt.
 1.6 22-Mar-2014  hkenken add Watchdog Timer support for i.MX51.
 1.5 19-Apr-2012  bsh branches: 1.5.2; 1.5.4;
support SD/MMC on Netwalker.
 1.4 17-Apr-2012  bsh Support i.MX51's LCD framebuffer on Netwalker.
from Kenichi Hashimoto.
 1.3 11-Mar-2011  bsh branches: 1.3.4; 1.3.8;
split arch/arm/pic/pic.c so that we can implement more efficient version of splfoo() while using pic framework.
 1.2 30-Nov-2010  bsh branches: 1.2.2; 1.2.6;
Support GPIO, IOMUX, and USB on i.MX51.
 1.1 13-Nov-2010  bsh branches: 1.1.2;
i.MX51 support by SHIMIZU Ryo, Hashimoto Kenichi, and me.
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file files.imx51 was added on branch uebayasi-xip on 2010-11-15 14:38:21 +0000
 1.2.6.3 21-Apr-2011  rmind sync with head
 1.2.6.2 05-Mar-2011  rmind sync with head
 1.2.6.1 30-Nov-2010  rmind file files.imx51 was added on branch rmind-uvmplock on 2011-03-05 20:49:33 +0000
 1.2.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.3.8.1 29-Apr-2012  mrg sync to latest -current.
 1.3.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.3.4.1 23-May-2012  yamt sync with head.
 1.5.4.1 18-May-2014  rmind sync with head
 1.5.2.2 03-Dec-2017  jdolecek update from HEAD
 1.5.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.8.2.1 10-Aug-2014  tls Rebase.
 1.11.4.4 28-Aug-2017  skrll Sync with HEAD
 1.11.4.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.11.4.2 06-Jun-2015  skrll Sync with HEAD
 1.11.4.1 06-Apr-2015  skrll Sync with HEAD
 1.17.2.1 22-Mar-2018  pgoyette Synch with HEAD, resolve conflicts
 1.18.2.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.21 23-May-2020  skrll imx6 kernels are part of GENERIC now
 1.20 23-May-2020  rin imxpcie also depends on clk.
 1.19 12-Oct-2019  skrll Spell controller correctly
 1.18 27-Jul-2019  skrll Fix builds properly
 1.17 24-Jul-2019  hkenken Modified i.MX GPIO control module and PCIe module.

+ Add imxpcie.c
imx PCIe common driver
 1.16 24-Jul-2019  hkenken Modified imx6 Clock Controller Module (CCM).

+ Add imx6_get_clock_by_id().
 1.15 20-Jun-2019  hkenken Add support for clk subsystem in imx6 CCM driver.
 1.14 20-Jun-2018  hkenken branches: 1.14.2;
Modified CCM register defines.
 1.13 17-Mar-2018  ryo move from sys/arch/arm/arm32/armv7_generic_dma.c to sys/arch/arm/arm/arm_generic_dma.c,
and change variable name from armv7_generic_dma_tag to arm_generic_dma_tag

no functional change. (preliminary changes for merging aarch64)
 1.12 09-Nov-2017  hkenken branches: 1.12.2;
- Add imxusbphy driver for i.MX6.
- Clean up CCM (Clock driver).
Add imx6_ccm_analog_read/write() functions.
 1.11 08-Sep-2017  hkenken - Move CFATTACH_DECL_NEW() from common uart driver.
- Rename : imxuart_cons_attach() -> imxuart_cnattach()
 1.10 18-Aug-2017  jakllsch Sprinkle 'bus_dma_generic needs-flag' to fix build after previous.
 1.9 17-Aug-2017  hkenken Use armv7_generic_[dma|bs]_tag.
 1.8 24-Nov-2016  hkenken Add support imx6 PCIe controller.
 1.7 17-May-2016  ryo branches: 1.7.2;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.6 31-Dec-2015  ryo use armv7_generic_space
 1.5 27-Mar-2015  hkenken Rewritten to take advantage of motoi2c code.
 1.4 07-Oct-2014  ryo branches: 1.4.2;
add support imx6 I2C Controller
 1.3 06-Oct-2014  ryo add support imx6 Secure Non-Volatile Storage (SNVS) real-time clock
 1.2 25-Sep-2014  ryo add support i.MX6 and NITROGEN6X evaluation board
 1.1 01-Sep-2012  matt branches: 1.1.2; 1.1.4;
Some initial iMX.6 support
 1.1.4.2 30-Oct-2012  yamt sync with head
 1.1.4.1 01-Sep-2012  yamt file files.imx6 was added on branch yamt-pagecache on 2012-10-30 17:19:03 +0000
 1.1.2.1 03-Dec-2017  jdolecek update from HEAD
 1.4.2.5 28-Aug-2017  skrll Sync with HEAD
 1.4.2.4 05-Dec-2016  skrll Sync with HEAD
 1.4.2.3 29-May-2016  skrll Sync with HEAD
 1.4.2.2 19-Mar-2016  skrll Sync with HEAD
 1.4.2.1 06-Apr-2015  skrll Sync with HEAD
 1.7.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.12.2.2 25-Jun-2018  pgoyette Sync with HEAD
 1.12.2.1 22-Mar-2018  pgoyette Synch with HEAD, resolve conflicts
 1.14.2.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.10 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.9 12-Oct-2019  skrll branches: 1.9.8;
Spell controller correctly
 1.8 27-Jul-2019  hkenken Fixed compile error.
 1.7 24-Jul-2019  hkenken Modified i.MX GPIO control module and PCIe module.

+ Add imxpcie.c
imx PCIe common driver
 1.6 17-Mar-2018  ryo branches: 1.6.2;
move from sys/arch/arm/arm32/armv7_generic_dma.c to sys/arch/arm/arm/arm_generic_dma.c,
and change variable name from armv7_generic_dma_tag to arm_generic_dma_tag

no functional change. (preliminary changes for merging aarch64)
 1.5 08-Sep-2017  hkenken branches: 1.5.2; 1.5.4;
- Move CFATTACH_DECL_NEW() from common uart driver.
- Rename : imxuart_cons_attach() -> imxuart_cnattach()
 1.4 18-Aug-2017  jakllsch Sprinkle 'bus_dma_generic needs-flag' to fix build after previous.
 1.3 17-Aug-2017  hkenken Use armv7_generic_[dma|bs]_tag.
 1.2 17-Oct-2016  ryo * Add option MEMSIZE_RESERVED to reserves memory for Cortex-M4 area
* change KERNEL_BASE from 0x80008000 to 0x82000000
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.4;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.4.1 04-Nov-2016  pgoyette Sync with HEAD
 1.1.2.4 28-Aug-2017  skrll Sync with HEAD
 1.1.2.3 05-Dec-2016  skrll Sync with HEAD
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file files.imx7 was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.5.4.1 22-Mar-2018  pgoyette Synch with HEAD, resolve conflicts
 1.5.2.2 03-Dec-2017  jdolecek update from HEAD
 1.5.2.1 08-Sep-2017  jdolecek file files.imx7 was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.6.2.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.9.8.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.37 07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.36 18-Sep-2022  thorpej Eliminate use of IFF_OACTIVE.
 1.35 24-Jan-2022  andvar s/begining/beginning/ in comments and messages.
 1.34 31-Dec-2021  riastradh sys: Use if_init wrapper function.

Exception: Not in kern_pmf.c, for the kind of silly reason that it
avoids having kern_pmf.c refer to symbols defined only in net; this
avoids a pain in the rump.
 1.33 31-Dec-2020  uwe enet(4): fix refactoring accident. Spotted by mrg@.
 1.32 14-May-2020  msaitoh branches: 1.32.2;
Remove extra semicolon.
 1.31 29-Jan-2020  thorpej Adopt <net/if_stats.h>.
 1.30 15-Jan-2020  jmcneill Add support for NXP i.MX 8M Dual/8M QuadLite/8M Quad family SoCs.
 1.29 29-Nov-2019  ryo branches: 1.29.2;
set the multicast filter properly.

don't always IFF_ALLMULTI if multicast is configured.
fix the handling of GAUR and GALR.
 1.28 12-Nov-2019  hkenken IPG clock is used instead of ENET_PLL clock to set MII Speed Control Register.
 1.27 20-Sep-2019  maxv Use M_BUFADDR.
 1.26 13-Sep-2019  msaitoh if_flags is neither int nor short. It's unsigned short.
 1.25 30-Jul-2019  hkenken branches: 1.25.2;
Remove fdtbus_gpio_release() from enet_phy_reset().
 1.24 23-Jul-2019  hkenken Modified enet_attach_common().
 1.23 28-May-2019  msaitoh Use ETHER_LOCK()/ETHER_UNLOCK() for all ethernet drivers to protect ec_multi*.
 1.22 24-May-2019  msaitoh Fix compile error.
 1.21 23-May-2019  msaitoh Whitespace fix (mainly tabify).
 1.20 23-May-2019  msaitoh -No functional change:
- Simplify struct ethercom's pointer near ETHER_FIRST_MULTI().
- Simplify MII structure initialization.
- u_int*_t -> uint*_t.
- KNF
 1.19 24-Apr-2019  msaitoh SIOCS is 'S'et function and the ioctl argument is ifreq.
SIOCG is 'G'et function and the ioctl argument is ifmediareq.
Before this change, SIOCG modify sc->sc_flowflags unexpectedly.
Don't hook SIOCGIFMEDIA because this driver uses MII(4) and ether_ioctl has
the hook(if_ethersubr.c rev. 1.160). This driver might require some additional
fixes for SIOCSIFMTU and other ioctl()s.

XXX pullup-[78].
 1.18 11-Apr-2019  msaitoh Fix a bug that the duplex of manual media setting may be wrong
when the IFM_GMASK bit other than IFM_[FH]DX is set.
 1.17 22-Jan-2019  msaitoh Change MII PHY read/write API from:

int (*mii_readreg_t)(device_t, int, int);
void (*mii_writereg_t)(device_t, int, int, int);
to:

int (*mii_readreg_t)(device_t, int, int, uint16_t *);
int (*mii_writereg_t)(device_t, int, int, uint16_t);

Now we can test if a read/write operation failed or not by the return value.

In 802.3 spec says that the PHY shall not respond to read/write transaction
to the unimplemented register(22.2.4.3). Detecting timeout can be used to
check whether a register is implemented or not (if the register conforms to
the spec). ukphy(4) can be used this for MII_MMDACR and MII_MMDAADR.

Note that I noticed that the following code do infinite loop in the
read/wirte function. If it accesses unimplemented PHY register, it will hang.
It should be fixed:

arm/at91/at91emac.c
arm/ep93xx/epe.c
arm/omap/omapl1x_emac.c
mips/ralink/ralink_eth.c
arch/powerpc/booke/dev/pq3etsec.c(read)
dev/cadence/if_cemac.c <- hkenken
dev/ic/lan9118.c


Tested with the following device:

axe+ukphy
axe+rgephy
axen+rgephy (tested by Andrius V)
wm+atphy
wm+ukphy
wm+igphy
wm+ihphy
wm+makphy
sk+makphy
sk+brgphy
sk+gentbi
msk+makphy
sip+icsphy
sip+ukphy
re+rgephy
bge+brgphy
bnx+brgphy
gsip+gphyter
rtk+rlphy
fxp+inphy (tested by Andrius V)
tlp+acphy
ex+exphy
epic+qsphy
vge+ciphy (tested by Andrius V)
vr+ukphy (tested by Andrius V)
vte+ukphy (tested by Andrius V)

Not tested (MAC):
arm:at91emac
arm:cemac
arm:epe
arm:geminigmac
arm:enet
arm:cpsw
arm:emac(omac)
arm:emac(sunxi)
arm:npe
evbppc:temac
macppc:bm
macppc:gm
mips:aumac
mips:ae
mips:cnmac
mips:reth
mips:sbmac
playstation2:smap
powerpc:tsec
powerpc:emac(ibm4xx)
sgimips:mec
sparc:be
sf
ne(ax88190, dl10019)
awge
ep
gem
hme
smsh
mtd
sm
age
alc
ale
bce
cas
et
jme
lii
nfe
pcn
ste
stge
tl
xi
aue
mue
smsc
udav
url

Not tested (PHY):
amhphy
bmtphy
dmphy
etphy
glxtphy
ikphy
iophy
lxtphy
nsphyter
pnaphy
rdcphy
sqphy
tlphy
tqphy
urlphy
 1.16 22-Dec-2018  maxv Replace: M_MOVE_PKTHDR -> m_move_pkthdr. No functional change, since the
former is a macro to the latter.
 1.15 03-Sep-2018  riastradh Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.14 26-Jun-2018  msaitoh branches: 1.14.2;
Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward
compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same
as FreeBSD.

This change also fixes a bug that the direction is misunderstand on some
environment by passing the direction to bpf_mtap*() instead of checking
m->m_pkthdr.rcvif.
 1.13 08-May-2018  maxv Don't remove M_PKTHDR manually, use m_remove_pkthdr instead.

ok ryo@
 1.12 16-Feb-2018  ryo branches: 1.12.2;
* avoid writing past the end of the mbuf.
* m_getptr was introduced for the IPsec Crypto code. it must not be used here.

pointed out by maxv@. thanks.
 1.11 09-Jun-2017  ryo branches: 1.11.4;
add support for i.MX6UltraLite, and
ConnectCore for iMX6UL Starter Board.
 1.10 15-Dec-2016  ozaki-r branches: 1.10.8;
Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input

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

Proposed on tech-kern and tech-net
 1.9 02-Oct-2016  christos MFREE -> m_free
 1.8 15-Jun-2016  ryo branches: 1.8.2;
fix the tx stall problem. ("watchdog timeout")
TX descriptor should be written out once before writing READY flag.
 1.7 10-Jun-2016  ozaki-r Introduce m_set_rcvif and m_reset_rcvif

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

No functional change.
 1.6 17-May-2016  ryo Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.5 09-Feb-2016  ozaki-r Introduce softint-based if_input

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

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

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

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

Acknowledgment: riastradh@ greatly helped this work.
Thank you very much!
 1.4 27-Apr-2015  christos Fix memory leak (Brainy)
 1.3 13-Apr-2015  riastradh MD rnd.h cleanups. Please let me know if I broke anything!
 1.2 15-Mar-2015  ryo - fix interrupt type ans interrupt masks
- change timing of callout_schedule because it doesn't schedule once enet_stop is called
- typo
 1.1 25-Sep-2014  ryo branches: 1.1.2;
add support i.MX6 and NITROGEN6X evaluation board
 1.1.2.8 28-Aug-2017  skrll Sync with HEAD
 1.1.2.7 05-Feb-2017  skrll Sync with HEAD
 1.1.2.6 05-Oct-2016  skrll Sync with HEAD
 1.1.2.5 09-Jul-2016  skrll Sync with HEAD
 1.1.2.4 29-May-2016  skrll Sync with HEAD
 1.1.2.3 19-Mar-2016  skrll Sync with HEAD
 1.1.2.2 06-Jun-2015  skrll Sync with HEAD
 1.1.2.1 06-Apr-2015  skrll Sync with HEAD
 1.8.2.2 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.8.2.1 04-Nov-2016  pgoyette Sync with HEAD
 1.10.8.2 14-May-2019  martin Pull up following revision(s) (requested by msaitoh in ticket #1267):

sys/arch/arm/imx/if_enet.c: revision 1.19
sys/dev/pci/if_wm.c: revision 1.634

SIOCS is 'S'et function and the ioctl argument is ifreq.
SIOCG is 'G'et function and the ioctl armument is ifmediareq.

Before this change, SIOCG modify sc->sc_flowflags unexpectedly.


Don't hook SIOCGIFMEDIA becauise this driver uses MII(4) and ether_ioctl has
the hook(if_ethersubr.c rev. 1.160).
real bug because the modification is overriden in ifmedia_ioctl().

This driver might require some additional fixes for SIOCSIFMTU and other
ioctl()s.
XXX pullup-[78].
 1.10.8.1 13-May-2019  martin Pull up the following, via patch, requested by msaitoh in ticket #1263:

sys/dev/mii/brgphy.c 1.84
sys/dev/mii/ciphy.c 1.33 via patch
sys/dev/mii/rgephy.c 1.53
sys/arch/arm/imx/if_enet.c 1.18
sys/arch/mips/adm5120/dev/if_admsw.c 1.19-1.20
sys/dev/pci/if_bge.c 1.329
sys/dev/pci/if_bnx.c 1.81
sys/dev/pci/if_et.c 1.21
sys/dev/pci/if_lii.c 1.22
sys/dev/pci/if_msk.c 1.87
sys/dev/pci/if_nfe.c 1.68
sys/dev/pci/if_sk.c 1.95
sys/dev/pci/if_ti.c 1.107
sys/dev/pci/if_txp.c 1.52
sys/dev/pci/if_vge.c 1.69
sys/dev/usb/if_axen.c 1.38
sys/dev/usb/if_aue.c 1.149

Fix a bug that the duplex of manual media setting may be wrong
when the IFM_GMASK bit other than IFM_[FH]DX is set.
 1.11.4.2 03-Dec-2017  jdolecek update from HEAD
 1.11.4.1 09-Jun-2017  jdolecek file if_enet.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.12.2.5 26-Jan-2019  pgoyette Sync with HEAD
 1.12.2.4 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.12.2.3 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.12.2.2 28-Jul-2018  pgoyette Sync with HEAD
 1.12.2.1 21-May-2018  pgoyette Sync with HEAD
 1.14.2.3 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.14.2.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.14.2.1 10-Jun-2019  christos Sync with HEAD
 1.25.2.1 08-Dec-2019  martin Pull up following revision(s) (requested by ryo in ticket #509):

sys/arch/arm/imx/if_enet.c: revision 1.29

set the multicast filter properly.

don't always IFF_ALLMULTI if multicast is configured.
fix the handling of GAUR and GALR.
 1.29.2.2 29-Feb-2020  ad Sync with head.
 1.29.2.1 17-Jan-2020  ad Sync with head.
 1.32.2.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.10 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.9 15-Jan-2020  jmcneill branches: 1.9.6;
Add support for NXP i.MX 8M Dual/8M QuadLite/8M Quad family SoCs.
 1.8 25-Nov-2019  hkenken branches: 1.8.2;
Fixed bug.

* typo
 1.7 12-Nov-2019  hkenken IPG clock is used instead of ENET_PLL clock to set MII Speed Control Register.
 1.6 30-Jul-2019  hkenken Remove fdtbus_gpio_release() from enet_phy_reset().
 1.5 23-Jul-2019  hkenken Modified enet_attach_common().
 1.4 20-Jun-2019  hkenken Add support for clk subsystem in imx6 CCM driver.
 1.3 09-Jun-2017  ryo branches: 1.3.4; 1.3.8;
add support for i.MX6UltraLite, and
ConnectCore for iMX6UL Starter Board.
 1.2 24-Nov-2016  hkenken Modified imx6_pll_power() arguments.
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.4;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.4.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.1.2.4 28-Aug-2017  skrll Sync with HEAD
 1.1.2.3 05-Dec-2016  skrll Sync with HEAD
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file if_enet_imx6.c was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.3.8.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.3.4.2 03-Dec-2017  jdolecek update from HEAD
 1.3.4.1 09-Jun-2017  jdolecek file if_enet_imx6.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.8.2.1 17-Jan-2020  ad Sync with head.
 1.9.6.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.7 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.6 15-Jan-2020  jmcneill branches: 1.6.6;
Add support for NXP i.MX 8M Dual/8M QuadLite/8M Quad family SoCs.
 1.5 12-Nov-2019  hkenken branches: 1.5.2;
IPG clock is used instead of ENET_PLL clock to set MII Speed Control Register.
 1.4 30-Jul-2019  hkenken Remove fdtbus_gpio_release() from enet_phy_reset().
 1.3 23-Jul-2019  hkenken Modified enet_attach_common().
 1.2 09-Jun-2017  ryo branches: 1.2.4; 1.2.8;
add support for i.MX6UltraLite, and
ConnectCore for iMX6UL Starter Board.
 1.1 17-May-2016  ryo branches: 1.1.2;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.2.3 28-Aug-2017  skrll Sync with HEAD
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file if_enet_imx7.c was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2.8.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.2.8.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.2.4.2 03-Dec-2017  jdolecek update from HEAD
 1.2.4.1 09-Jun-2017  jdolecek file if_enet_imx7.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.5.2.1 17-Jan-2020  ad Sync with head.
 1.6.6.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.6 07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.5 27-Jun-2022  andvar fix various typos in comments.
 1.4 12-Nov-2019  hkenken IPG clock is used instead of ENET_PLL clock to set MII Speed Control Register.
 1.3 09-Jun-2017  ryo branches: 1.3.4; 1.3.8;
add support for i.MX6UltraLite, and
ConnectCore for iMX6UL Starter Board.
 1.2 17-May-2016  ryo Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1 25-Sep-2014  ryo branches: 1.1.2;
add support i.MX6 and NITROGEN6X evaluation board
 1.1.2.2 28-Aug-2017  skrll Sync with HEAD
 1.1.2.1 29-May-2016  skrll Sync with HEAD
 1.3.8.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.3.4.2 03-Dec-2017  jdolecek update from HEAD
 1.3.4.1 09-Jun-2017  jdolecek file if_enetreg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.9 07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.8 18-Sep-2022  thorpej Eliminate use of IFF_OACTIVE.
 1.7 15-Jan-2020  jmcneill Add support for NXP i.MX 8M Dual/8M QuadLite/8M Quad family SoCs.
 1.6 12-Nov-2019  hkenken branches: 1.6.2;
IPG clock is used instead of ENET_PLL clock to set MII Speed Control Register.
 1.5 13-Sep-2019  msaitoh if_flags is neither int nor short. It's unsigned short.
 1.4 23-Jul-2019  hkenken Modified enet_attach_common().
 1.3 20-Jun-2019  hkenken Add support for clk subsystem in imx6 CCM driver.
 1.2 09-Jun-2017  ryo branches: 1.2.4; 1.2.8;
add support for i.MX6UltraLite, and
ConnectCore for iMX6UL Starter Board.
 1.1 17-May-2016  ryo branches: 1.1.2;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.2.3 28-Aug-2017  skrll Sync with HEAD
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file if_enetvar.h was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2.8.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.2.4.2 03-Dec-2017  jdolecek update from HEAD
 1.2.4.1 09-Jun-2017  jdolecek file if_enetvar.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.6.2.1 17-Jan-2020  ad Sync with head.
 1.4 02-Oct-2025  skrll Trailing whitespace.
 1.3 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.2 24-Apr-2021  thorpej branches: 1.2.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.1 07-Oct-2013  matt branches: 1.1.4; 1.1.6; 1.1.10; 1.1.50;
iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.1.50.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.1.50.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.1.50.4 04-Apr-2021  thorpej CFARG_SUBMATCH -> CFARG_SEARCH for the indirect configuration uses.
 1.1.50.3 03-Apr-2021  thorpej Give config_attach() the tagged variadic argument treatment and
mechanically convert all call sites.
 1.1.50.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.1.50.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.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 07-Oct-2013  tls file imx23_ahb.c was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 07-Oct-2013  yamt file imx23_ahb.c was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 07-Oct-2013  rmind file imx23_ahb.c was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.2.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.5 02-Oct-2025  skrll Trailing whitespace.
 1.4 10-Jan-2015  jmcneill From Petri Laakso <petri.laakso@asd.fi>:
- Fix typo: AHBH should be APBH
- Add support for APBX DMA
- New function apbdma_wait(); wait for DMA completion
 1.3 03-Mar-2013  jkunz branches: 1.3.14;
Contribution from Petri Laakso:
- DMA driver stub code replaced with working code.
- Add support to multi block DMA in ssp driver.
 1.2 16-Dec-2012  jkunz branches: 1.2.2; 1.2.6;
Contribution from Petri Laakso: Fix some spelling.
 1.1 20-Nov-2012  jkunz Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.2.6.4 03-Dec-2017  jdolecek update from HEAD
 1.2.6.3 23-Jun-2013  tls resync from head
 1.2.6.2 25-Feb-2013  tls resync with head
 1.2.6.1 16-Dec-2012  tls file imx23_apbdma.c was added on branch tls-maxphys on 2013-02-25 00:28:27 +0000
 1.2.2.4 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.2.2.3 23-Jan-2013  yamt sync with head
 1.2.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.2.2.1 16-Dec-2012  yamt file imx23_apbdma.c was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.3.14.1 06-Apr-2015  skrll Sync with HEAD
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.6;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_apbdma.h was added on branch tls-maxphys on 2013-02-25 00:28:27 +0000
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_apbdma.h was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.3 10-Jan-2015  jmcneill From Petri Laakso <petri.laakso@asd.fi>:
- Fix typo: AHBH should be APBH
- Add support for APBX DMA
- New function apbdma_wait(); wait for DMA completion
 1.2 03-Mar-2013  jkunz branches: 1.2.14;
Contribution from Petri Laakso:
- DMA driver stub code replaced with working code.
- Add support to multi block DMA in ssp driver.
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.6;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.6.4 03-Dec-2017  jdolecek update from HEAD
 1.1.6.3 23-Jun-2013  tls resync from head
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_apbdmareg.h was added on branch tls-maxphys on 2013-02-25 00:28:27 +0000
 1.1.2.3 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_apbdmareg.h was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.2.14.1 06-Apr-2015  skrll Sync with HEAD
 1.2 10-Jan-2015  jmcneill From Petri Laakso <petri.laakso@asd.fi>:
- Fix typo: AHBH should be APBH
- Add support for APBX DMA
- New function apbdma_wait(); wait for DMA completion
 1.1 03-Mar-2013  jkunz branches: 1.1.6; 1.1.14; 1.1.18;
Contribution from Petri Laakso:
- DMA driver stub code replaced with working code.
- Add support to multi block DMA in ssp driver.
 1.1.18.1 06-Apr-2015  skrll Sync with HEAD
 1.1.14.2 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.14.1 03-Mar-2013  yamt file imx23_apbdmavar.h was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.6.3 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 23-Jun-2013  tls resync from head
 1.1.6.1 03-Mar-2013  tls file imx23_apbdmavar.h was added on branch tls-maxphys on 2013-06-23 06:20:00 +0000
 1.5 09-Oct-2025  skrll Add the beginnings of a GENERIC_V5 kernel that targets armv5 boards and
uses FDT.

In this first iteration some support is added for OLinuXino boards.

Thanks to Yuri Honegger for doing the vast majority of the work.
 1.4 02-Oct-2025  skrll Trailing whitespace.
 1.3 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.2 24-Apr-2021  thorpej branches: 1.2.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.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.6; 1.1.56;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.56.7 05-Apr-2021  thorpej Oops. missed this in the last.
 1.1.56.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.1.56.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.1.56.4 04-Apr-2021  thorpej CFARG_SUBMATCH -> CFARG_SEARCH for the indirect configuration uses.
 1.1.56.3 03-Apr-2021  thorpej Give config_attach() the tagged variadic argument treatment and
mechanically convert all call sites.
 1.1.56.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.1.56.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.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_apbh.c was added on branch tls-maxphys on 2013-02-25 00:28:27 +0000
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_apbh.c was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.2.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.2 03-Mar-2013  jkunz Contribution from Petri Laakso:
- DMA driver stub code replaced with working code.
- Add support to multi block DMA in ssp driver.
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.6;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.6.3 23-Jun-2013  tls resync from head
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_apbhdmareg.h was added on branch tls-maxphys on 2013-02-25 00:28:27 +0000
 1.1.2.3 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_apbhdmareg.h was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.5 09-Oct-2025  skrll Add the beginnings of a GENERIC_V5 kernel that targets armv5 boards and
uses FDT.

In this first iteration some support is added for OLinuXino boards.

Thanks to Yuri Honegger for doing the vast majority of the work.
 1.4 02-Oct-2025  skrll Trailing whitespace.
 1.3 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.2 24-Apr-2021  thorpej branches: 1.2.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.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.6; 1.1.56;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.56.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.1.56.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.1.56.4 04-Apr-2021  thorpej CFARG_SUBMATCH -> CFARG_SEARCH for the indirect configuration uses.
 1.1.56.3 03-Apr-2021  thorpej Give config_attach() the tagged variadic argument treatment and
mechanically convert all call sites.
 1.1.56.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.1.56.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.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_apbx.c was added on branch tls-maxphys on 2013-02-25 00:28:27 +0000
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_apbx.c was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.2.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.2 03-Mar-2013  jkunz Contribution from Petri Laakso:
- DMA driver stub code replaced with working code.
- Add support to multi block DMA in ssp driver.
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.6;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.6.3 23-Jun-2013  tls resync from head
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_apbxdmareg.h was added on branch tls-maxphys on 2013-02-25 00:28:27 +0000
 1.1.2.3 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_apbxdmareg.h was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.4 02-Oct-2025  skrll Trailing whitespace.
 1.3 18-Oct-2019  msaitoh s/initalize/initialize/ in comment or printf message.
 1.2 10-Jan-2015  jmcneill branches: 1.2.18;
From: Petri Laakso <petri.laakso@asd.fi>
- Enable 24MHz clock for the Digital Filter.
 1.1 07-Oct-2013  matt branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.1.12.1 06-Apr-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 07-Oct-2013  tls file imx23_clkctrl.c was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 07-Oct-2013  yamt file imx23_clkctrl.c was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 07-Oct-2013  rmind file imx23_clkctrl.c was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.2.18.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.2 07-Oct-2013  matt iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.4; 1.1.6;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.6.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_clkctrlreg.h was added on branch tls-maxphys on 2013-02-25 00:28:27 +0000
 1.1.4.1 18-May-2014  rmind sync with head
 1.1.2.3 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_clkctrlreg.h was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.2 10-Jan-2015  jmcneill From: Petri Laakso <petri.laakso@asd.fi>
- Enable 24MHz clock for the Digital Filter.
 1.1 07-Oct-2013  matt branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.1.12.1 06-Apr-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 07-Oct-2013  tls file imx23_clkctrlvar.h was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 07-Oct-2013  yamt file imx23_clkctrlvar.h was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 07-Oct-2013  rmind file imx23_clkctrlvar.h was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.3 02-Oct-2025  skrll Trailing whitespace.
 1.2 18-Oct-2019  msaitoh s/initalize/initialize/ in comment or printf message.
 1.1 07-Oct-2013  matt branches: 1.1.4; 1.1.6; 1.1.10; 1.1.36;
iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.1.36.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 07-Oct-2013  tls file imx23_digctl.c was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 07-Oct-2013  yamt file imx23_digctl.c was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 07-Oct-2013  rmind file imx23_digctl.c was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.2 07-Oct-2013  matt iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.4; 1.1.6;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.6.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_digctlreg.h was added on branch tls-maxphys on 2013-02-25 00:28:27 +0000
 1.1.4.1 18-May-2014  rmind sync with head
 1.1.2.3 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_digctlreg.h was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.1 07-Oct-2013  matt branches: 1.1.4; 1.1.6; 1.1.10;
iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 07-Oct-2013  tls file imx23_digctlvar.h was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 07-Oct-2013  yamt file imx23_digctlvar.h was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 07-Oct-2013  rmind file imx23_digctlvar.h was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.5 02-Oct-2025  skrll Trailing whitespace.
 1.4 04-Oct-2021  andvar follow fcambus steps by fixing typos for "unknown" in few more error messages.
 1.3 19-Apr-2020  isaki Fix round_blocksize not to return 0.
 1.2 08-May-2019  isaki branches: 1.2.8;
Merge isaki-audio2 branch, the overhaul of audio subsystem.
- Interrupt-oriented system rather than thread-oriented.
- Improve stability, quality and performance.
- Split playback and record cleanly. Improve halfduplex support.
- Many bugs are fixed including deadlocks, resource leaks, abuses, etc.
- Simplify audio filter mechanism. The encoding/channels/frequency
conversions are completely handled in the upper layer. So the hard-
ware driver only converts its hardware encoding (if necessary).
- audio_hw_if changes:
- Obsoletes query_encoding and add query_format instead.
- Obsoletes set_params and add set_format instead.
- Remove drain, setfd, mappage.
- The call sequences are changed.
- ioctl AUDIO_GETFD/SETFD, AUDIO_GETCHAN/SETCHAN are obsoleted.
- ioctl AUDIO_{QUERY,GET,SET}FORMAT are introduced.
- cleanup config attributes: au*conv and mulaw.
- All hardware drivers should follow it (I've done as much as possible).

Some file paths are changed:
- dev/audio.c -> dev/audio/audio.c (rewritten)
- dev/audiovar.h -> dev/audio/audiovar.h
- dev/audio_dai.h -> dev/audio/audio_dai.h
- dev/audio_if.h -> dev/audio/audio_if.h
- dev/audiobell.c -> dev/audio/audiobell.c
- dev/audiobellvar.h -> dev/audio/audiobellvar.h
- dev/mulaw.[ch] -> dev/audio/mulaw.[ch] + dev/audio/alaw.c
 1.1 10-Jan-2015  jmcneill branches: 1.1.2; 1.1.18; 1.1.22; 1.1.24;
From Petri Laakso <petri.laakso@asd.fi>:
- Audio output driver for imx23
- Supporting code for audio driver
 1.1.24.3 04-May-2019  isaki Move dev/audio_if.h -> dev/audio/audio_if.h
 1.1.24.2 04-May-2019  isaki Remove obsoleted methods in audio_hw_if.
- drain: is handled in audio upper layer now.
- mappage: is handled in audio upper layer now.
- setfd: no one uses and it's meaningless now.
 1.1.24.1 24-Apr-2019  isaki Adapt to audio2.
- move resetting sc_cmd_index from drain to halt_output since
drain is obsoleted.
 1.1.22.2 21-Apr-2020  martin Sync with HEAD
 1.1.22.1 10-Jun-2019  christos Sync with HEAD
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 10-Jan-2015  jdolecek file imx23_digfilt.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 06-Apr-2015  skrll Sync with HEAD
 1.1.2.1 10-Jan-2015  skrll file imx23_digfilt.c was added on branch nick-nhusb on 2015-04-06 15:17:52 +0000
 1.2.8.1 20-Apr-2020  bouyer Sync with HEAD
 1.1 10-Jan-2015  jmcneill branches: 1.1.2; 1.1.18;
From Petri Laakso <petri.laakso@asd.fi>:
- Audio output driver for imx23
- Supporting code for audio driver
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 10-Jan-2015  jdolecek file imx23_digfiltreg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 06-Apr-2015  skrll Sync with HEAD
 1.1.2.1 10-Jan-2015  skrll file imx23_digfiltreg.h was added on branch nick-nhusb on 2015-04-06 15:17:52 +0000
 1.1 10-Jan-2015  jmcneill branches: 1.1.2; 1.1.18;
From Petri Laakso <petri.laakso@asd.fi>:
- Audio output driver for imx23
- Supporting code for audio driver
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 10-Jan-2015  jdolecek file imx23_digfiltvar.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 06-Apr-2015  skrll Sync with HEAD
 1.1.2.1 10-Jan-2015  skrll file imx23_digfiltvar.h was added on branch nick-nhusb on 2015-04-06 15:17:52 +0000
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.6;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_dma.c was added on branch tls-maxphys on 2013-02-25 00:28:27 +0000
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_dma.c was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.6;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_emireg.h was added on branch tls-maxphys on 2013-02-25 00:28:27 +0000
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_emireg.h was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.6 09-Oct-2025  skrll Add the beginnings of a GENERIC_V5 kernel that targets armv5 boards and
uses FDT.

In this first iteration some support is added for OLinuXino boards.

Thanks to Yuri Honegger for doing the vast majority of the work.
 1.5 02-Oct-2025  skrll Trailing whitespace.
 1.4 25-Jun-2022  jmcneill pic: Update ci_cpl in pic_set_priority callback.

Not all ICs need interrupts disabled to update the priority. DAIF accesses
are not cheap, so push the update of ci_cpl from pic_set_priority to the
IC's pic_set_priority callback, and let the IC driver determine whether
or not it needs interrupts disabled.
 1.3 25-Feb-2014  martin Add missing include of <arm/cpufunc.h>.
Pointed out by Tero Koskinen.
 1.2 16-Dec-2012  jkunz branches: 1.2.2; 1.2.4; 1.2.6;
Contribution from Petri Laakso: Fix some spelling.
 1.1 20-Nov-2012  jkunz Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.2.6.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.6.2 25-Feb-2013  tls resync with head
 1.2.6.1 16-Dec-2012  tls file imx23_icoll.c was added on branch tls-maxphys on 2013-02-25 00:28:27 +0000
 1.2.4.1 18-May-2014  rmind sync with head
 1.2.2.4 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.2.2.3 23-Jan-2013  yamt sync with head
 1.2.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.2.2.1 16-Dec-2012  yamt file imx23_icoll.c was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.3 03-Mar-2013  jkunz Contribution from Petri Laakso:
- DMA driver stub code replaced with working code.
- Add support to multi block DMA in ssp driver.
 1.2 16-Dec-2012  jkunz branches: 1.2.2; 1.2.6;
Contribution from Petri Laakso: Fix some spelling.
 1.1 20-Nov-2012  jkunz Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.2.6.3 23-Jun-2013  tls resync from head
 1.2.6.2 25-Feb-2013  tls resync with head
 1.2.6.1 16-Dec-2012  tls file imx23_icollreg.h was added on branch tls-maxphys on 2013-02-25 00:28:27 +0000
 1.2.2.4 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.2.2.3 23-Jan-2013  yamt sync with head
 1.2.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.2.2.1 16-Dec-2012  yamt file imx23_icollreg.h was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.1 09-Oct-2025  skrll Add the beginnings of a GENERIC_V5 kernel that targets armv5 boards and
uses FDT.

In this first iteration some support is added for OLinuXino boards.

Thanks to Yuri Honegger for doing the vast majority of the work.
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.6;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_intr.h was added on branch tls-maxphys on 2013-02-25 00:28:27 +0000
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_intr.h was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 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 28-Nov-2020  skrll branches: 1.4.2;
Fix build by renaming the pinctrl driver
 1.3 26-Nov-2020  skrll Trailing whitespace
 1.2 18-Oct-2019  msaitoh branches: 1.2.8;
s/initalize/initialize/ in comment or printf message.
 1.1 07-Oct-2013  matt branches: 1.1.4; 1.1.6; 1.1.10; 1.1.36;
iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.1.36.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 07-Oct-2013  tls file imx23_pinctrl.c was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 07-Oct-2013  yamt file imx23_pinctrl.c was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 07-Oct-2013  rmind file imx23_pinctrl.c was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.2.8.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.4.2.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.5.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.2 07-Oct-2013  matt iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.4; 1.1.6;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.6.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_pinctrlreg.h was added on branch tls-maxphys on 2013-02-25 00:28:27 +0000
 1.1.4.1 18-May-2014  rmind sync with head
 1.1.2.3 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_pinctrlreg.h was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.2 28-Nov-2020  skrll Fix build by renaming the pinctrl driver
 1.1 07-Oct-2013  matt branches: 1.1.4; 1.1.6; 1.1.10; 1.1.48;
iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.1.48.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 07-Oct-2013  tls file imx23_pinctrlvar.h was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 07-Oct-2013  yamt file imx23_pinctrlvar.h was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 07-Oct-2013  rmind file imx23_pinctrlvar.h was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.1 09-Oct-2025  skrll Add the beginnings of a GENERIC_V5 kernel that targets armv5 boards and
uses FDT.

In this first iteration some support is added for OLinuXino boards.

Thanks to Yuri Honegger for doing the vast majority of the work.
 1.2 23-Oct-2018  jmcneill Fix blank line printed at attach on ACPI
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.6; 1.1.40; 1.1.42;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.42.1 10-Jun-2019  christos Sync with HEAD
 1.1.40.1 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_plcom.c was added on branch tls-maxphys on 2013-02-25 00:28:27 +0000
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_plcom.c was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.2 07-Oct-2013  matt iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.4; 1.1.6;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.6.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_powerreg.h was added on branch tls-maxphys on 2013-02-25 00:28:27 +0000
 1.1.4.1 18-May-2014  rmind sync with head
 1.1.2.3 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_powerreg.h was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.3 02-Oct-2025  skrll Trailing whitespace.
 1.2 18-Oct-2019  msaitoh s/initalize/initialize/ in comment or printf message.
 1.1 10-Jan-2015  jmcneill branches: 1.1.2; 1.1.18; 1.1.22;
From Petri Laakso <petri.laakso@asd.fi>:
- Audio output driver for imx23
- Supporting code for audio driver
 1.1.22.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 10-Jan-2015  jdolecek file imx23_rtc.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 06-Apr-2015  skrll Sync with HEAD
 1.1.2.1 10-Jan-2015  skrll file imx23_rtc.c was added on branch nick-nhusb on 2015-04-06 15:17:52 +0000
 1.2 10-Jan-2015  jmcneill From Petri Laakso <petri.laakso@asd.fi>:
- Audio output driver for imx23
- Supporting code for audio driver
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.6; 1.1.18;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.18.1 06-Apr-2015  skrll Sync with HEAD
 1.1.6.3 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_rtcreg.h was added on branch tls-maxphys on 2013-02-25 00:28:27 +0000
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_rtcreg.h was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.1 10-Jan-2015  jmcneill branches: 1.1.2; 1.1.18;
From Petri Laakso <petri.laakso@asd.fi>:
- Audio output driver for imx23
- Supporting code for audio driver
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 10-Jan-2015  jdolecek file imx23_rtcvar.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 06-Apr-2015  skrll Sync with HEAD
 1.1.2.1 10-Jan-2015  skrll file imx23_rtcvar.h was added on branch nick-nhusb on 2015-04-06 15:17:52 +0000
 1.3 16-Mar-2018  ryo use designated initializer to make adaptability and flexibility for changing struct bus_space.
no functional change.
 1.2 07-Oct-2013  matt branches: 1.2.28;
iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.4; 1.1.6;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.6.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_space.c was added on branch tls-maxphys on 2013-02-25 00:28:28 +0000
 1.1.4.1 18-May-2014  rmind sync with head
 1.1.2.3 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_space.c was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.2.28.1 22-Mar-2018  pgoyette Synch with HEAD, resolve conflicts
 1.9 02-Oct-2025  skrll Trailing whitespace.
 1.8 21-Oct-2021  andvar fix various typos, mainly in comments, but also in man pages and log messages.
 1.7 16-Sep-2021  andvar fix typos in word "successfully", mainly s/succesfully/successfully/.
 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 07-Oct-2013  matt branches: 1.4.44;
iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.3 03-Mar-2013  jkunz branches: 1.3.6;
Contribution from Petri Laakso:
- DMA driver stub code replaced with working code.
- Add support to multi block DMA in ssp driver.
 1.2 16-Dec-2012  jkunz branches: 1.2.2; 1.2.6;
Contribution from Petri Laakso: Initial support for SD card controller.
iMX233-OLinuXino can now boot and run from its own SD card.
 1.1 20-Nov-2012  jkunz Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.2.6.4 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.6.3 23-Jun-2013  tls resync from head
 1.2.6.2 25-Feb-2013  tls resync with head
 1.2.6.1 16-Dec-2012  tls file imx23_ssp.c was added on branch tls-maxphys on 2013-02-25 00:28:28 +0000
 1.2.2.4 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.2.2.3 23-Jan-2013  yamt sync with head
 1.2.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.2.2.1 16-Dec-2012  yamt file imx23_ssp.c was added on branch yamt-pagecache on 2013-01-16 05:32:47 +0000
 1.3.6.1 18-May-2014  rmind sync with head
 1.4.44.1 21-Mar-2021  thorpej Give config_found() the same variadic arguments treatment as
config_search(). This commit only adds the CFARG_EOL sentinel
to the existing config_found() calls. Conversion of config_found_sm_loc()
and config_found_ia() call sites will be in subsequent commits.
 1.5.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.6;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_sspreg.h was added on branch tls-maxphys on 2013-02-25 00:28:28 +0000
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_sspreg.h was added on branch yamt-pagecache on 2013-01-16 05:32:48 +0000
 1.5 09-Oct-2025  skrll Add the beginnings of a GENERIC_V5 kernel that targets armv5 boards and
uses FDT.

In this first iteration some support is added for OLinuXino boards.

Thanks to Yuri Honegger for doing the vast majority of the work.
 1.4 02-Oct-2025  skrll Trailing whitespace.
 1.3 07-Oct-2013  matt iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.2 16-Dec-2012  jkunz branches: 1.2.2; 1.2.4; 1.2.6;
Contribution from Petri Laakso: Fix some spelling.
 1.1 20-Nov-2012  jkunz Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.2.6.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.6.2 25-Feb-2013  tls resync with head
 1.2.6.1 16-Dec-2012  tls file imx23_timrot.c was added on branch tls-maxphys on 2013-02-25 00:28:28 +0000
 1.2.4.1 18-May-2014  rmind sync with head
 1.2.2.4 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.2.2.3 23-Jan-2013  yamt sync with head
 1.2.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.2.2.1 16-Dec-2012  yamt file imx23_timrot.c was added on branch yamt-pagecache on 2013-01-16 05:32:48 +0000
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.6;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_timrotreg.h was added on branch tls-maxphys on 2013-02-25 00:28:28 +0000
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_timrotreg.h was added on branch yamt-pagecache on 2013-01-16 05:32:48 +0000
 1.1 09-Oct-2025  skrll Add the beginnings of a GENERIC_V5 kernel that targets armv5 boards and
uses FDT.

In this first iteration some support is added for OLinuXino boards.

Thanks to Yuri Honegger for doing the vast majority of the work.
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.6;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_uartappreg.h was added on branch tls-maxphys on 2013-02-25 00:28:28 +0000
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_uartappreg.h was added on branch yamt-pagecache on 2013-01-16 05:32:48 +0000
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.6;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23_uartdbgreg.h was added on branch tls-maxphys on 2013-02-25 00:28:28 +0000
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23_uartdbgreg.h was added on branch yamt-pagecache on 2013-01-16 05:32:48 +0000
 1.7 15-Jan-2024  andvar Fix imx23_usb_init() function declaration, it expects two parameters.

Fixes build for IMX23_OLINUXINO kernel config.
 1.6 04-May-2023  bouyer The i.mx6sx has 2 OTG and one host-only USB controller, while the 6q has
only one OTG.
Add a "uintptr_t data" argument to all sc_*_md_hook callbacks, which
gets the sc_md_hook_data value when called.
In imx6_usb.c use this to pass the number of OTG controllers to the callbacks.
imx6_usb_init() can then properly call init_otg() or init_h1() for unit 1.

In imx6_usb_attach(), test if there is a vbus-supply property in the fdt,
and enable the regulator if present.

Now the USB port of the UDOO Neo works.
 1.5 07-Aug-2021  thorpej branches: 1.5.6;
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 28-Nov-2020  skrll branches: 1.3.2;
Fix build by renaming the pinctrl driver
 1.2 24-Jul-2019  hkenken branches: 1.2.10;
i.MX USB host code re-arrangement.
 1.1 07-Oct-2013  matt branches: 1.1.4; 1.1.6; 1.1.10; 1.1.36;
iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.1.36.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 07-Oct-2013  tls file imx23_usb.c was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 07-Oct-2013  yamt file imx23_usb.c was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 07-Oct-2013  rmind file imx23_usb.c was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.2.10.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.3.2.6 05-Apr-2021  thorpej Treat config_probe() as if it were a boolean function; don't compare
return value > 0... except for the odd balls, which are now really easy
to spot.
 1.3.2.5 05-Apr-2021  thorpej config_match() -> config_probe() for the straight-forward indirect config
cases. There are still a few odd balls using config_match() which should
be sorted out later.
 1.3.2.4 04-Apr-2021  thorpej CFARG_SUBMATCH -> CFARG_SEARCH for the indirect configuration uses.
 1.3.2.3 03-Apr-2021  thorpej Give config_attach() the tagged variadic argument treatment and
mechanically convert all call sites.
 1.3.2.2 21-Mar-2021  thorpej CFARG_IATTR usage audit:

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

- Introduce a new cfarg_t enumerated type, that defines the types of
tag-value variadic arguments that can be passed to the various
config_*() functions (CFARG_SUBMATCH, CFARG_IATTR, and CFARG_LOCATORS,
for now, plus a CFARG_EOL sentinel).
- Collapse config_search_*() into config_search() that takes these
variadic arguments.
- Convert all call sites of config_search_*() to the new signature.
Noticed several incorrect usages along the way, which will be
audited in a future commit.
 1.4.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.5.6.2 16-Jan-2024  martin Pull up following revision(s) (requested by andvar in ticket #556):

sys/arch/arm/imx/imx23_usb.c: revision 1.7

Fix imx23_usb_init() function declaration, it expects two parameters.

Fixes build for IMX23_OLINUXINO kernel config.
 1.5.6.1 28-May-2023  martin Pull up following revision(s) (requested by bouyer in ticket #182):

sys/arch/arm/nxp/imx6_platform.c: revision 1.8 (via patch)
sys/arch/arm/nxp/imx6_platform.c: revision 1.9 (via patch)
sys/arch/arm/nxp/imx6_ccmvar.h: revision 1.2
sys/arch/arm/nxp/imx6_ccmvar.h: revision 1.3
distrib/sets/lists/dtb/ad.earmv7hf: revision 1.10
sys/arch/arm/nxp/imx6sx_clk.c: revision 1.1
sys/arch/arm/nxp/imx6_ccm.c: revision 1.3
sys/arch/arm/nxp/imx6sx_clk.c: revision 1.2
sys/arch/arm/nxp/imx6_ccm.c: revision 1.4
sys/arch/arm/nxp/imx6sx_clk.c: revision 1.3
sys/arch/arm/nxp/imx6_spi.c: revision 1.8
sys/arch/arm/nxp/imx_sdhc.c: revision 1.8
sys/arch/arm/imx/imxusb.c: revision 1.19
sys/arch/arm/nxp/imx6_usb.c: revision 1.7
sys/arch/arm/nxp/imx6_usb.c: revision 1.8
sys/arch/arm/nxp/files.imx: revision 1.3
sys/arch/arm/nxp/imx6_clk.c: revision 1.5
sys/arch/arm/nxp/imx6_clk.c: revision 1.6
sys/arch/arm/nxp/imx6_reg.h: revision 1.2
sys/arch/arm/nxp/imx6_gpc.c: revision 1.4
sys/arch/arm/imx/imx23_usb.c: revision 1.6
sys/dtb/arm/Makefile: revision 1.6
sys/arch/arm/imx/imxusbvar.h: revision 1.7
sys/arch/evbarm/conf/GENERIC: revision 1.119
sys/arch/arm/nxp/imx6_ccmreg.h: revision 1.2
sys/arch/arm/nxp/imx6_iomux.c: revision 1.3
sys/arch/arm/nxp/imx6_usbphy.c: revision 1.3
sys/arch/arm/nxp/imx6_pcie.c: revision 1.7

In preparation of imx6sx support, move imx6q-specific definitions from
imx6_ccm.c to imx6_clk.c, and prefix with IMX6Q/imx6q:
- Clock IDs and related struct imx_clock_id
- Clock Parents and Divider Tables
- struct imx6_clk
and related static functions

Add a pointer to struct imx6_clk, and it's size to imx6ccm_softc

Pass a pointer to imx6ccm_softc to all functions from imx6_ccm.c
NFCI

i.mx6sx CPU support in the CCM module: the clock tree si different from
the i.mx6q
- move i.mx6q-specific functions and data to imx6_clk.c
- add i.mx6sx specific imx6sx_clk.c
- add a imx6sxccm device
i.mx6sx platform support:
- the i.mx6sx has a third AIPS, so KERNEL_IO_IOREG map has to be larger
- the uart clock is at 24Mhz instead of 80.

Add i.mx6sx compatible entries to drivers that should work as is.

Fix typo, preventing i2c4 from attaching
remove commented out entries, leftover from the imx6q ccm code.
introduce imx6sx_platform_bootstrap(), which calls imx_platform_bootstrap()
and then checks for an "arm,cortex-a9-twd-timer" compatible entry in the
fdt. If not present, create one so that a9ptmr will attach.
We need this entry as this is the only timer we support for this platform,
but the upstream imx6sx.dtsi is missing the entry for it (and all A9 CPUs
have it anyway).

Thanks to Jared McNeill for advices and review.

Also build dtb files for CONFIG_SOC_IMX6SX


experimental IMX6SX support:
- add options SOC_IMX6SX
- add imx6sxccm device
tested on a UDOO Neo Full board.

known to work:
- uart (console)
- sdmmc0
- ethernet (enet0)
known to not work:
- USB (device not detected).

needs a modified device tree at this time (add arm,cortex-a9-twd-timer entry
copied from the imx6qdl dtsi); for unkown reason the imx6sx.dtsi file lacks
an entry for the a9ptmr although it is present in the soc (and, from what I
understood, in all cortex A9 SoCs).

Add imx6sx dtb files

The i.mx6sx has 2 OTG and one host-only USB controller, while the 6q has
only one OTG.

Add a "uintptr_t data" argument to all sc_*_md_hook callbacks, which
gets the sc_md_hook_data value when called.

In imx6_usb.c use this to pass the number of OTG controllers to the callbacks.
imx6_usb_init() can then properly call init_otg() or init_h1() for unit 1.

In imx6_usb_attach(), test if there is a vbus-supply property in the fdt,
and enable the regulator if present.

Now the USB port of the UDOO Neo works.
 1.2 02-Oct-2025  skrll Trailing whitespace.
 1.1 07-Oct-2013  matt branches: 1.1.4; 1.1.6; 1.1.10;
iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 07-Oct-2013  tls file imx23_usbphy.c was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 07-Oct-2013  yamt file imx23_usbphy.c was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 07-Oct-2013  rmind file imx23_usbphy.c was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.1 07-Oct-2013  matt branches: 1.1.4; 1.1.6; 1.1.10;
iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 07-Oct-2013  tls file imx23_usbphyreg.h was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 07-Oct-2013  yamt file imx23_usbphyreg.h was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 07-Oct-2013  rmind file imx23_usbphyreg.h was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.1 09-Oct-2025  skrll Add the beginnings of a GENERIC_V5 kernel that targets armv5 boards and
uses FDT.

In this first iteration some support is added for OLinuXino boards.

Thanks to Yuri Honegger for doing the vast majority of the work.
 1.1 09-Oct-2025  skrll Add the beginnings of a GENERIC_V5 kernel that targets armv5 boards and
uses FDT.

In this first iteration some support is added for OLinuXino boards.

Thanks to Yuri Honegger for doing the vast majority of the work.
 1.3 09-Oct-2025  skrll Add the beginnings of a GENERIC_V5 kernel that targets armv5 boards and
uses FDT.

In this first iteration some support is added for OLinuXino boards.

Thanks to Yuri Honegger for doing the vast majority of the work.
 1.2 07-Oct-2013  matt iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.1 20-Nov-2012  jkunz branches: 1.1.2; 1.1.4; 1.1.6;
Add initial support for Freescale i.MX23 application processor.
Contributed by Petri Laakso.
 1.1.6.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 20-Nov-2012  tls file imx23var.h was added on branch tls-maxphys on 2013-02-25 00:28:29 +0000
 1.1.4.1 18-May-2014  rmind sync with head
 1.1.2.3 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.2.1 20-Nov-2012  yamt file imx23var.h was added on branch yamt-pagecache on 2013-01-16 05:32:48 +0000
 1.10 02-Oct-2025  skrll Trailing whitespace.
 1.9 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.8 24-Apr-2021  thorpej branches: 1.8.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.7 27-Jul-2019  skrll branches: 1.7.12;
Fix builds properly
 1.6 27-Oct-2012  chs branches: 1.6.38;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.5 01-Jul-2011  dyoung branches: 1.5.2; 1.5.12;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.4 13-Nov-2010  bsh rename imx31_bs_tag as imx_bs_tag to share it with imx51.
 1.3 02-May-2008  martin branches: 1.3.22;
Replace TNF licenses with standard 2 clause variant.
 1.2 27-Apr-2008  matt Merge kernel changes in matt-armv6 to HEAD.
 1.1 11-Sep-2007  matt branches: 1.1.2; 1.1.20; 1.1.22; 1.1.24;
file imx31_ahb.c was initially added on branch matt-armv6.
 1.1.24.1 16-May-2008  yamt sync with head.
 1.1.22.1 18-May-2008  yamt sync with head.
 1.1.20.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.2.3 12-Sep-2007  matt Improve/fix search code for critical devices that are needed before all
other devices.
 1.1.2.2 11-Sep-2007  matt Make the first member of the attach_args a const char * pointing to the
type name of the bus. (ahb, aips)
 1.1.2.1 11-Sep-2007  matt Initial support for Freescale i.MX31 (ARM1136).
 1.3.22.1 05-Mar-2011  rmind sync with head
 1.5.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.5.2.1 30-Oct-2012  yamt sync with head
 1.6.38.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.7.12.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.7.12.4 04-Apr-2021  thorpej CFARG_SUBMATCH -> CFARG_SEARCH for the indirect configuration uses.
 1.7.12.3 03-Apr-2021  thorpej Give config_attach() the tagged variadic argument treatment and
mechanically convert all call sites.
 1.7.12.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.7.12.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.8.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.8 02-Oct-2025  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 27-Oct-2012  chs branches: 1.5.52;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.4 01-Jul-2011  dyoung branches: 1.4.2; 1.4.12;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.3 02-May-2008  martin Replace TNF licenses with standard 2 clause variant.
 1.2 27-Apr-2008  matt Merge kernel changes in matt-armv6 to HEAD.
 1.1 11-Sep-2007  matt branches: 1.1.2; 1.1.20; 1.1.22; 1.1.24;
file imx31_aips.c was initially added on branch matt-armv6.
 1.1.24.1 16-May-2008  yamt sync with head.
 1.1.22.1 18-May-2008  yamt sync with head.
 1.1.20.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.2.2 11-Sep-2007  matt Make the first member of the attach_args a const char * pointing to the
type name of the bus. (ahb, aips)
 1.1.2.1 11-Sep-2007  matt Initial support for Freescale i.MX31 (ARM1136).
 1.4.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.4.2.1 30-Oct-2012  yamt sync with head
 1.5.52.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.52.4 04-Apr-2021  thorpej CFARG_SUBMATCH -> CFARG_SEARCH for the indirect configuration uses.
 1.5.52.3 03-Apr-2021  thorpej Give config_attach() the tagged variadic argument treatment and
mechanically convert all call sites.
 1.5.52.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.52.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.5 27-Oct-2012  chs split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.4 18-Apr-2012  bsh branches: 1.4.2;
adapt to imxclock.c rev 1.5.
 1.3 01-Jul-2011  dyoung branches: 1.3.2; 1.3.6;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.2 15-Nov-2010  bsh branches: 1.2.6;
EPIT support as system clock for i.MX31
 1.1 13-Nov-2010  bsh branches: 1.1.2;
driver to use EPIT as system clock for i.MX31 and i.MX51,
by Hashimoto Kenichi.
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imx31_clock.c was added on branch uebayasi-xip on 2010-11-15 14:38:21 +0000
 1.2.6.2 05-Mar-2011  rmind sync with head
 1.2.6.1 15-Nov-2010  rmind file imx31_clock.c was added on branch rmind-uvmplock on 2011-03-05 20:49:34 +0000
 1.3.6.1 29-Apr-2012  mrg sync to latest -current.
 1.3.2.2 30-Oct-2012  yamt sync with head
 1.3.2.1 23-May-2012  yamt sync with head.
 1.4.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.10 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.9 24-Apr-2021  thorpej branches: 1.9.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.8 22-Jul-2019  hkenken branches: 1.8.12;
Trailing whitespace
 1.7 27-Oct-2012  chs branches: 1.7.38;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.6 01-Jul-2011  dyoung branches: 1.6.2; 1.6.12;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.5 15-Nov-2010  bsh GPIO register definitions are now in imxgpioreg.h to share them with
imx51
 1.4 19-Nov-2008  matt branches: 1.4.8;
Use <sys/atomic.h>, not <machine/atomic.h>
 1.3 28-Apr-2008  martin branches: 1.3.6; 1.3.8;
Remove clause 3 and 4 from TNF licenses
 1.2 27-Apr-2008  matt Merge kernel changes in matt-armv6 to HEAD.
 1.1 29-Aug-2007  matt branches: 1.1.2; 1.1.20; 1.1.22; 1.1.24;
file imx31_gpio.c was initially added on branch matt-armv6.
 1.1.24.2 04-May-2009  yamt sync with head.
 1.1.24.1 16-May-2008  yamt sync with head.
 1.1.22.1 18-May-2008  yamt sync with head.
 1.1.20.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.20.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.2.4 29-Feb-2008  matt Rework establish_irq to take an intrsource.
Enable an interrupt after establishing it.
 1.1.2.3 12-Sep-2007  matt Cleanup attach routine.
 1.1.2.2 11-Sep-2007  matt Initial support for Freescale i.MX31 (ARM1136).
 1.1.2.1 29-Aug-2007  matt W-I-P initial support for Freescale i.MX31 ARM11 SoC.
 1.3.8.1 19-Jan-2009  skrll Sync with HEAD.
 1.3.6.1 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.4.8.1 05-Mar-2011  rmind sync with head
 1.6.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.6.2.1 30-Oct-2012  yamt sync with head
 1.7.38.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.8.12.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.9.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.9 02-Oct-2025  skrll Trailing whitespace.
 1.8 12-Feb-2022  riastradh sys: Fix various abuse of struct device internals.

Will help to make struct device opaque later.
 1.7 27-Oct-2012  chs split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.6 01-Jul-2011  dyoung branches: 1.6.2; 1.6.12;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.5 19-Nov-2008  matt Use <sys/atomic.h>, not <machine/atomic.h>
 1.4 13-Jun-2008  cegger branches: 1.4.2; 1.4.4;
use device_lookup_private to get softc
 1.3 28-Apr-2008  martin branches: 1.3.2; 1.3.4;
Remove clause 3 and 4 from TNF licenses
 1.2 27-Apr-2008  matt Merge kernel changes in matt-armv6 to HEAD.
 1.1 29-Aug-2007  matt branches: 1.1.2; 1.1.20; 1.1.22; 1.1.24;
file imx31_icu.c was initially added on branch matt-armv6.
 1.1.24.2 04-May-2009  yamt sync with head.
 1.1.24.1 16-May-2008  yamt sync with head.
 1.1.22.2 17-Jun-2008  yamt sync with head.
 1.1.22.1 18-May-2008  yamt sync with head.
 1.1.20.3 17-Jan-2009  mjf Sync with HEAD.
 1.1.20.2 29-Jun-2008  mjf Sync with HEAD.
 1.1.20.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.2.5 29-Feb-2008  matt Rework establish_irq to take an intrsource.
Enable an interrupt after establishing it.
 1.1.2.4 12-Sep-2007  matt Cleanup attach logic.
 1.1.2.3 11-Sep-2007  matt Initial support for Freescale i.MX31 (ARM1136).
 1.1.2.2 30-Aug-2007  matt This should be complete. (it at least compiles).
 1.1.2.1 29-Aug-2007  matt W-I-P initial support for Freescale i.MX31 ARM11 SoC.
 1.3.4.1 18-Jun-2008  simonb Sync with head.
 1.3.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.4.4.1 19-Jan-2009  skrll Sync with HEAD.
 1.4.2.1 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.6.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.6.2.1 30-Oct-2012  yamt sync with head
 1.6 25-Jun-2022  jmcneill Remove GIC_SPLFUNCS.
 1.5 27-Dec-2021  andvar fix few typos in comments.
 1.4 24-Sep-2021  skrll Catch up with spl changes.

It's 2021 and ugly is in (with apologies to PWEI)
 1.3 28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.2 27-Apr-2008  matt Merge kernel changes in matt-armv6 to HEAD.
 1.1 29-Aug-2007  matt branches: 1.1.2; 1.1.20; 1.1.22; 1.1.24;
file imx31_intr.h was initially added on branch matt-armv6.
 1.1.24.1 16-May-2008  yamt sync with head.
 1.1.22.1 18-May-2008  yamt sync with head.
 1.1.20.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.2.5 28-Jan-2008  matt Given the that there are only 4 IPLs (ignoring soft IPLs), a number of
cleanups can be done:
Remove _SPL_* aliases.
Don't store irqmasks in ci_cpl, just make it an ipl level.
Add fast softint switching support.
 1.1.2.4 06-Nov-2007  matt No need for imx31_icu_init
 1.1.2.3 12-Sep-2007  matt Config 288 sources (64 normal + 96 gpio + 128 soft)
 1.1.2.2 30-Aug-2007  matt Fix the name of pic's softintr.h
Add imx31_irq_handler and imx31_icu_init prototypes
 1.1.2.1 29-Aug-2007  matt W-I-P initial support for Freescale i.MX31 ARM11 SoC.
 1.3 28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.2 27-Apr-2008  matt Merge kernel changes in matt-armv6 to HEAD.
 1.1 29-Aug-2007  matt branches: 1.1.2; 1.1.20; 1.1.22; 1.1.24;
file imx31_intrreg.h was initially added on branch matt-armv6.
 1.1.24.1 16-May-2008  yamt sync with head.
 1.1.22.1 18-May-2008  yamt sync with head.
 1.1.20.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.2.1 29-Aug-2007  matt W-I-P initial support for Freescale i.MX31 ARM11 SoC.
 1.4 13-Nov-2010  bsh rename imx31_space.c as imx_space.c
 1.3 07-Nov-2009  cegger branches: 1.3.2; 1.3.4;
Add a flags argument to pmap_kenter_pa(9).
Patch showed on tech-kern@ http://mail-index.netbsd.org/tech-kern/2009/11/04/msg006434.html
No objections.
 1.2 27-Apr-2008  matt Merge kernel changes in matt-armv6 to HEAD.
 1.1 11-Sep-2007  matt branches: 1.1.2; 1.1.20; 1.1.22; 1.1.24;
file imx31_space.c was initially added on branch matt-armv6.
 1.1.24.2 11-Mar-2010  yamt sync with head
 1.1.24.1 16-May-2008  yamt sync with head.
 1.1.22.1 18-May-2008  yamt sync with head.
 1.1.20.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.2.1 11-Sep-2007  matt Initial support for Freescale i.MX31 (ARM1136).
 1.3.4.1 05-Mar-2011  rmind sync with head
 1.3.2.6 02-Nov-2010  uebayasi Drop the 'paddr_t avail_start' and 'paddr_t avail_end' arguments
from uvm_page_physload_device(9).

Those two arguments are used by uvm_page_physload(9) to specify a
range of physical memory available for general purpose pages (pages
which are linked to freelists). Totally irrelevant to device
segments.
 1.3.2.5 28-Jul-2010  uebayasi Correct bus_space_physload(9) arguments to take "int freelist".

A possible use case of bus_space_physload(9) would be some high-performance
device with huge local memory, like InfiniBand HCA. We can register
its local memory using bus_space_physload(..., VM_FREELIST_INFINIBAND0),
then later map it to userspace via cdev_mmap(9) -> bus_dmamem_mmap(9).

(bus_dma(9) needs changes too, of course.)
 1.3.2.4 26-Jul-2010  uebayasi After much consideration, rename bus_space_physload_direct(9) back to
bus_space_physload_device(9).

The latter registers a segment as "device pages". "Device pages" are
managed, but not used for general purpose memory. Most typically XIP
pages.
 1.3.2.3 31-May-2010  uebayasi Re-define the definition of "device page"; device pages are pages of
device memory. Pages which don't have vm_page (== can't be used for
generic use), but whose PV are tracked, are called "direct pages" from
now.
 1.3.2.2 29-Apr-2010  uebayasi Adapt to the new uvm_page_physload_device(9).
 1.3.2.1 28-Apr-2010  uebayasi Initial implemention of bus_space_physload(9) for NetBSD/arm (only i.MX31
for now).
 1.3 08-Sep-2017  hkenken - Move CFATTACH_DECL_NEW() from common uart driver.
- Rename : imxuart_cons_attach() -> imxuart_cnattach()
 1.2 27-Nov-2010  bsh branches: 1.2.6; 1.2.20;
use device_t correctly for imxuart.
 1.1 13-Nov-2010  bsh branches: 1.1.2;
UART driver for i.MX31 and 51.
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imx31_uart.c was added on branch uebayasi-xip on 2010-11-15 14:38:21 +0000
 1.2.20.1 03-Dec-2017  jdolecek update from HEAD
 1.2.6.2 05-Mar-2011  rmind sync with head
 1.2.6.1 27-Nov-2010  rmind file imx31_uart.c was added on branch rmind-uvmplock on 2011-03-05 20:49:34 +0000
 1.5 15-Nov-2010  bsh EPIT support as system clock for i.MX31
 1.4 13-Nov-2010  bsh extract GPIO register definitions from imx31reg.h to share them with
i.MX51
 1.3 28-Apr-2008  martin branches: 1.3.22;
Remove clause 3 and 4 from TNF licenses
 1.2 27-Apr-2008  matt Merge kernel changes in matt-armv6 to HEAD.
 1.1 29-Aug-2007  matt branches: 1.1.2; 1.1.20; 1.1.22; 1.1.24;
file imx31reg.h was initially added on branch matt-armv6.
 1.1.24.1 16-May-2008  yamt sync with head.
 1.1.22.1 18-May-2008  yamt sync with head.
 1.1.20.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.2.2 11-Sep-2007  matt Initial support for Freescale i.MX31 (ARM1136).
 1.1.2.1 29-Aug-2007  matt W-I-P initial support for Freescale i.MX31 ARM11 SoC.
 1.3.22.1 05-Mar-2011  rmind sync with head
 1.3 13-Nov-2010  bsh rename imx31_bs_tag as imx_bs_tag to share it with imx51.
 1.2 27-Apr-2008  matt branches: 1.2.22;
Merge kernel changes in matt-armv6 to HEAD.
 1.1 11-Sep-2007  matt branches: 1.1.2; 1.1.20; 1.1.22; 1.1.24;
file imx31var.h was initially added on branch matt-armv6.
 1.1.24.1 16-May-2008  yamt sync with head.
 1.1.22.1 18-May-2008  yamt sync with head.
 1.1.20.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.2.2 11-Sep-2007  matt Make the first member of the attach_args a const char * pointing to the
type name of the bus. (ahb, aips)
 1.1.2.1 11-Sep-2007  matt Initial support for Freescale i.MX31 (ARM1136).
 1.2.22.1 05-Mar-2011  rmind sync with head
 1.1 25-Jul-2014  hkenken branches: 1.1.2; 1.1.6;
Add support i.MX50x
* i.MX50 series is e-ink e-reader processor.
 1.1.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 25-Jul-2014  tls file imx50_iomuxreg.h was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.2.2 10-Aug-2014  tls Rebase.
 1.1.2.1 25-Jul-2014  tls file imx50_iomuxreg.h was added on branch tls-earlyentropy on 2014-08-10 06:53:51 +0000
 1.10 07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.9 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.8 24-Apr-2021  thorpej branches: 1.8.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.7 17-Mar-2018  ryo branches: 1.7.16;
move from sys/arch/arm/arm32/armv7_generic_dma.c to sys/arch/arm/arm/arm_generic_dma.c,
and change variable name from armv7_generic_dma_tag to arm_generic_dma_tag

no functional change. (preliminary changes for merging aarch64)
 1.6 17-Aug-2017  hkenken branches: 1.6.2;
Use armv7_generic_[dma|bs]_tag.
 1.5 07-May-2015  hkenken use armv7_generic_space
 1.4 10-Mar-2014  htodd branches: 1.4.6;
Delete unused variables for new gcc.
 1.3 17-Apr-2012  bsh branches: 1.3.2; 1.3.4;
driver for i.MX51 Clock Controller Module.
from Kenichi Hashimoto.

Currently used only to get peripheral clock frequencies.
 1.2 30-Nov-2010  bsh branches: 1.2.6; 1.2.10; 1.2.14;
Support GPIO, IOMUX, and USB on i.MX51.
 1.1 13-Nov-2010  bsh branches: 1.1.2;
i.MX51 support by SHIMIZU Ryo, Hashimoto Kenichi, and me.
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imx51_axi.c was added on branch uebayasi-xip on 2010-11-15 14:38:21 +0000
 1.2.14.1 29-Apr-2012  mrg sync to latest -current.
 1.2.10.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.2.10.1 23-May-2012  yamt sync with head.
 1.2.6.2 05-Mar-2011  rmind sync with head
 1.2.6.1 30-Nov-2010  rmind file imx51_axi.c was added on branch rmind-uvmplock on 2011-03-05 20:49:34 +0000
 1.3.4.1 18-May-2014  rmind sync with head
 1.3.2.2 03-Dec-2017  jdolecek update from HEAD
 1.3.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.6.2 28-Aug-2017  skrll Sync with HEAD
 1.4.6.1 06-Jun-2015  skrll Sync with HEAD
 1.6.2.1 22-Mar-2018  pgoyette Synch with HEAD, resolve conflicts
 1.7.16.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.7.16.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.7.16.4 04-Apr-2021  thorpej CFARG_SUBMATCH -> CFARG_SEARCH for the indirect configuration uses.
 1.7.16.3 03-Apr-2021  thorpej Give config_attach() the tagged variadic argument treatment and
mechanically convert all call sites.
 1.7.16.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.7.16.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.8.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.8 24-Jul-2021  andvar 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.7 03-Sep-2018  riastradh branches: 1.7.16;
Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.6 25-Jul-2014  hkenken branches: 1.6.26; 1.6.28;
Add support i.MX50x
* i.MX50 series is e-ink e-reader processor.
 1.5 22-Mar-2014  hkenken branches: 1.5.2;
Fix SDHC clocks.
 1.4 22-Mar-2014  hkenken Add SPI driver.
i.MX51 have two eCSPI, and one CSPI.
 1.3 19-Sep-2012  bsh branches: 1.3.2;
make Netwalker kernel compile again.
from Kenichi Hashimoto.
 1.2 01-Sep-2012  matt branches: 1.2.2;
Some initial iMX.6 support
 1.1 17-Apr-2012  bsh branches: 1.1.2; 1.1.4;
driver for i.MX51 Clock Controller Module.
from Kenichi Hashimoto.

Currently used only to get peripheral clock frequencies.
 1.1.4.4 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.3 30-Oct-2012  yamt sync with head
 1.1.4.2 23-May-2012  yamt sync with head.
 1.1.4.1 17-Apr-2012  yamt file imx51_ccm.c was added on branch yamt-pagecache on 2012-05-23 10:07:41 +0000
 1.1.2.2 29-Apr-2012  mrg sync to latest -current.
 1.1.2.1 17-Apr-2012  mrg file imx51_ccm.c was added on branch jmcneill-usbmp on 2012-04-29 23:04:38 +0000
 1.2.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.3.2.1 18-May-2014  rmind sync with head
 1.5.2.1 10-Aug-2014  tls Rebase.
 1.6.28.1 10-Jun-2019  christos Sync with HEAD
 1.6.26.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.7.16.1 01-Aug-2021  thorpej Sync with HEAD.
 1.6 24-Jul-2021  andvar 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.5 25-Jul-2014  hkenken branches: 1.5.44;
Add support i.MX50x
* i.MX50 series is e-ink e-reader processor.
 1.4 22-Mar-2014  hkenken branches: 1.4.2;
Fix SDHC clocks.
 1.3 22-Mar-2014  hkenken Add SPI driver.
i.MX51 have two eCSPI, and one CSPI.
 1.2 01-Sep-2012  matt branches: 1.2.2; 1.2.4;
Some initial iMX.6 support
 1.1 17-Apr-2012  bsh branches: 1.1.2; 1.1.4;
driver for i.MX51 Clock Controller Module.
from Kenichi Hashimoto.

Currently used only to get peripheral clock frequencies.
 1.1.4.4 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.3 30-Oct-2012  yamt sync with head
 1.1.4.2 23-May-2012  yamt sync with head.
 1.1.4.1 17-Apr-2012  yamt file imx51_ccmreg.h was added on branch yamt-pagecache on 2012-05-23 10:07:41 +0000
 1.1.2.2 29-Apr-2012  mrg sync to latest -current.
 1.1.2.1 17-Apr-2012  mrg file imx51_ccmreg.h was added on branch jmcneill-usbmp on 2012-04-29 23:04:38 +0000
 1.2.4.1 18-May-2014  rmind sync with head
 1.2.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.2.1 10-Aug-2014  tls Rebase.
 1.5.44.1 01-Aug-2021  thorpej Sync with HEAD.
 1.3 25-Jul-2014  hkenken Add support i.MX50x
* i.MX50 series is e-ink e-reader processor.
 1.2 22-Mar-2014  hkenken branches: 1.2.2;
Fix SDHC clocks.
 1.1 17-Apr-2012  bsh branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8;
driver for i.MX51 Clock Controller Module.
from Kenichi Hashimoto.

Currently used only to get peripheral clock frequencies.
 1.1.8.1 18-May-2014  rmind sync with head
 1.1.6.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.4.3 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.2 23-May-2012  yamt sync with head.
 1.1.4.1 17-Apr-2012  yamt file imx51_ccmvar.h was added on branch yamt-pagecache on 2012-05-23 10:07:41 +0000
 1.1.2.2 29-Apr-2012  mrg sync to latest -current.
 1.1.2.1 17-Apr-2012  mrg file imx51_ccmvar.h was added on branch jmcneill-usbmp on 2012-04-29 23:04:38 +0000
 1.2.2.1 10-Aug-2014  tls Rebase.
 1.5 25-Jul-2014  hkenken Add support i.MX50x
* i.MX50 series is e-ink e-reader processor.
 1.4 27-Oct-2012  chs branches: 1.4.10;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.3 17-Apr-2012  bsh branches: 1.3.2;
driver for i.MX51 Clock Controller Module.
from Kenichi Hashimoto.

Currently used only to get peripheral clock frequencies.
 1.2 01-Jul-2011  dyoung branches: 1.2.2; 1.2.6;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.1 13-Nov-2010  bsh branches: 1.1.2; 1.1.8;
driver to use EPIT as system clock for i.MX31 and i.MX51,
by Hashimoto Kenichi.
 1.1.8.2 05-Mar-2011  rmind sync with head
 1.1.8.1 13-Nov-2010  rmind file imx51_clock.c was added on branch rmind-uvmplock on 2011-03-05 20:49:34 +0000
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imx51_clock.c was added on branch uebayasi-xip on 2010-11-15 14:38:21 +0000
 1.2.6.1 29-Apr-2012  mrg sync to latest -current.
 1.2.2.2 30-Oct-2012  yamt sync with head
 1.2.2.1 23-May-2012  yamt sync with head.
 1.3.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.4.10.1 10-Aug-2014  tls Rebase.
 1.2 25-Jul-2014  hkenken Add support i.MX50x
* i.MX50 series is e-ink e-reader processor.
 1.1 17-Apr-2012  bsh branches: 1.1.2; 1.1.4; 1.1.6; 1.1.16;
driver for i.MX51 Clock Controller Module.
from Kenichi Hashimoto.

Currently used only to get peripheral clock frequencies.
 1.1.16.1 10-Aug-2014  tls Rebase.
 1.1.6.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.4.2 23-May-2012  yamt sync with head.
 1.1.4.1 17-Apr-2012  yamt file imx51_dpllreg.h was added on branch yamt-pagecache on 2012-05-23 10:07:41 +0000
 1.1.2.2 29-Apr-2012  mrg sync to latest -current.
 1.1.2.1 17-Apr-2012  mrg file imx51_dpllreg.h was added on branch jmcneill-usbmp on 2012-04-29 23:04:38 +0000
 1.4 06-Jun-2018  maya Remove duplicate ;
 1.3 26-May-2015  hkenken branches: 1.3.16;
Add SDHC_FLAG_USE_DMA flag for internal DMA mode.
 1.2 22-Mar-2014  hkenken branches: 1.2.6;
Fix SDHC clocks.
 1.1 19-Apr-2012  bsh branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8;
support SD/MMC on Netwalker.
 1.1.8.1 18-May-2014  rmind sync with head
 1.1.6.2 03-Dec-2017  jdolecek update from HEAD
 1.1.6.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.4.3 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.2 23-May-2012  yamt sync with head.
 1.1.4.1 19-Apr-2012  yamt file imx51_esdhc.c was added on branch yamt-pagecache on 2012-05-23 10:07:41 +0000
 1.1.2.2 29-Apr-2012  mrg sync to latest -current.
 1.1.2.1 19-Apr-2012  mrg file imx51_esdhc.c was added on branch jmcneill-usbmp on 2012-04-29 23:04:38 +0000
 1.2.6.1 06-Jun-2015  skrll Sync with HEAD
 1.3.16.1 25-Jun-2018  pgoyette Sync with HEAD
 1.4 24-Jul-2019  hkenken Modified i.MX GPIO control module and PCIe module.

+ Add imxpcie.c
imx PCIe common driver
 1.3 25-Jul-2014  hkenken branches: 1.3.28;
Add support i.MX50x
* i.MX50 series is e-ink e-reader processor.
 1.2 01-Jul-2011  dyoung branches: 1.2.12; 1.2.26;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.1 30-Nov-2010  bsh branches: 1.1.6;
Support GPIO, IOMUX, and USB on i.MX51.
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 30-Nov-2010  rmind file imx51_gpio.c was added on branch rmind-uvmplock on 2011-03-05 20:49:34 +0000
 1.2.26.1 10-Aug-2014  tls Rebase.
 1.2.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.28.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.3 22-Jul-2022  thorpej Normalize how motoi2c controllers are attached.
 1.2 27-Mar-2015  hkenken Rewritten to take advantage of motoi2c code.
 1.1 25-Jul-2014  hkenken branches: 1.1.2; 1.1.6; 1.1.8;
Add i2c driver for i.MX.
 1.1.8.1 06-Apr-2015  skrll Sync with HEAD
 1.1.6.3 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 25-Jul-2014  tls file imx51_i2c.c was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.2.2 10-Aug-2014  tls Rebase.
 1.1.2.1 25-Jul-2014  tls file imx51_i2c.c was added on branch tls-earlyentropy on 2014-08-10 06:53:51 +0000
 1.4 07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.3 25-Jun-2022  jmcneill Remove GIC_SPLFUNCS.
 1.2 24-Sep-2021  skrll Catch up with spl changes.

It's 2021 and ugly is in (with apologies to PWEI)
 1.1 13-Nov-2010  bsh branches: 1.1.2; 1.1.8;
i.MX51 support by SHIMIZU Ryo, Hashimoto Kenichi, and me.
 1.1.8.2 05-Mar-2011  rmind sync with head
 1.1.8.1 13-Nov-2010  rmind file imx51_intr.h was added on branch rmind-uvmplock on 2011-03-05 20:49:34 +0000
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imx51_intr.h was added on branch uebayasi-xip on 2010-11-15 14:38:21 +0000
 1.4 27-Oct-2012  chs split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.3 15-Apr-2012  bsh branches: 1.3.2;
delete unused reference.
delete trailing whitespace, and NKF.
 1.2 01-Jul-2011  dyoung branches: 1.2.2; 1.2.6;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.1 30-Nov-2010  bsh branches: 1.1.6;
Support GPIO, IOMUX, and USB on i.MX51.
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 30-Nov-2010  rmind file imx51_iomux.c was added on branch rmind-uvmplock on 2011-03-05 20:49:34 +0000
 1.2.6.1 29-Apr-2012  mrg sync to latest -current.
 1.2.2.2 30-Oct-2012  yamt sync with head
 1.2.2.1 17-Apr-2012  yamt sync with head
 1.3.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.3 25-Jul-2014  hkenken Add support i.MX50x
* i.MX50 series is e-ink e-reader processor.
 1.2 15-Apr-2012  bsh branches: 1.2.2; 1.2.12;
delete many definitions like MUX_PIN_foo.
use MUX_PIN(foo) instead.
 1.1 13-Nov-2010  bsh branches: 1.1.2; 1.1.8; 1.1.12; 1.1.16;
i.MX51 support by SHIMIZU Ryo, Hashimoto Kenichi, and me.
 1.1.16.1 29-Apr-2012  mrg sync to latest -current.
 1.1.12.1 17-Apr-2012  yamt sync with head
 1.1.8.2 05-Mar-2011  rmind sync with head
 1.1.8.1 13-Nov-2010  rmind file imx51_iomuxreg.h was added on branch rmind-uvmplock on 2011-03-05 20:49:34 +0000
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imx51_iomuxreg.h was added on branch uebayasi-xip on 2010-11-15 14:38:22 +0000
 1.2.12.1 10-Aug-2014  tls Rebase.
 1.2.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.11 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.10 24-Apr-2021  thorpej branches: 1.10.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.9 20-Nov-2020  thorpej branches: 1.9.2;
malloc(9) -> kmem(9)
 1.8 10-Nov-2019  chs branches: 1.8.8;
in many device attach paths, allocate memory with M_WAITOK instead of M_NOWAIT
and remove code to handle failures that can no longer happen.
 1.7 17-Mar-2018  ryo branches: 1.7.2;
move from sys/arch/arm/arm32/armv7_generic_dma.c to sys/arch/arm/arm/arm_generic_dma.c,
and change variable name from armv7_generic_dma_tag to arm_generic_dma_tag

no functional change. (preliminary changes for merging aarch64)
 1.6 17-Aug-2017  hkenken branches: 1.6.2;
Use armv7_generic_[dma|bs]_tag.
 1.5 25-Jun-2017  maxv memory leak, found by Mootja
 1.4 21-Dec-2015  hkenken Rewritten to take advantage of genfb(4).
 1.3 07-Nov-2014  hkenken branches: 1.3.2;
- Use __SHIFTIN macro
- fix CM_DISP_GEN_DI1_COUNTER_RELEASE
 1.2 06-May-2014  hkenken Add support for LCD Backlight control on NetWalker.
+ use imxpwm driver (PWM control driver for i.MX)
 1.1 17-Apr-2012  bsh branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.16;
Support i.MX51's LCD framebuffer on Netwalker.
from Kenichi Hashimoto.
 1.1.16.1 10-Aug-2014  tls Rebase.
 1.1.8.1 18-May-2014  rmind sync with head
 1.1.6.2 03-Dec-2017  jdolecek update from HEAD
 1.1.6.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.4.3 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.2 23-May-2012  yamt sync with head.
 1.1.4.1 17-Apr-2012  yamt file imx51_ipuv3.c was added on branch yamt-pagecache on 2012-05-23 10:07:41 +0000
 1.1.2.2 29-Apr-2012  mrg sync to latest -current.
 1.1.2.1 17-Apr-2012  mrg file imx51_ipuv3.c was added on branch jmcneill-usbmp on 2012-04-29 23:04:38 +0000
 1.3.2.2 28-Aug-2017  skrll Sync with HEAD
 1.3.2.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.6.2.1 22-Mar-2018  pgoyette Synch with HEAD, resolve conflicts
 1.7.2.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.8.8.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.9.2.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.10.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.2 07-Nov-2014  hkenken - Use __SHIFTIN macro
- fix CM_DISP_GEN_DI1_COUNTER_RELEASE
 1.1 17-Apr-2012  bsh branches: 1.1.2; 1.1.4; 1.1.6;
Support i.MX51's LCD framebuffer on Netwalker.
from Kenichi Hashimoto.
 1.1.6.1 03-Dec-2017  jdolecek update from HEAD
 1.1.4.2 23-May-2012  yamt sync with head.
 1.1.4.1 17-Apr-2012  yamt file imx51_ipuv3reg.h was added on branch yamt-pagecache on 2012-05-23 10:07:41 +0000
 1.1.2.2 29-Apr-2012  mrg sync to latest -current.
 1.1.2.1 17-Apr-2012  mrg file imx51_ipuv3reg.h was added on branch jmcneill-usbmp on 2012-04-29 23:04:38 +0000
 1.3 21-Dec-2015  hkenken Rewritten to take advantage of genfb(4).
 1.2 06-May-2014  hkenken branches: 1.2.4;
Add support for LCD Backlight control on NetWalker.
+ use imxpwm driver (PWM control driver for i.MX)
 1.1 17-Apr-2012  bsh branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.16;
Support i.MX51's LCD framebuffer on Netwalker.
from Kenichi Hashimoto.
 1.1.16.1 10-Aug-2014  tls Rebase.
 1.1.8.1 18-May-2014  rmind sync with head
 1.1.6.2 03-Dec-2017  jdolecek update from HEAD
 1.1.6.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.4.3 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.2 23-May-2012  yamt sync with head.
 1.1.4.1 17-Apr-2012  yamt file imx51_ipuv3var.h was added on branch yamt-pagecache on 2012-05-23 10:07:41 +0000
 1.1.2.2 29-Apr-2012  mrg sync to latest -current.
 1.1.2.1 17-Apr-2012  mrg file imx51_ipuv3var.h was added on branch jmcneill-usbmp on 2012-04-29 23:04:38 +0000
 1.2.4.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2 20-May-2020  hkenken Use kernel API of PWM subsystems for i.MX PWM driver.
 1.1 06-May-2014  hkenken branches: 1.1.2; 1.1.4; 1.1.6; 1.1.10;
Add support for LCD Backlight control on NetWalker.
+ use imxpwm driver (PWM control driver for i.MX)
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 06-May-2014  tls file imx51_pwm.c was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 10-Aug-2014  tls Rebase.
 1.1.6.1 06-May-2014  tls file imx51_pwm.c was added on branch tls-earlyentropy on 2014-08-10 06:53:51 +0000
 1.1.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.1.4.1 06-May-2014  yamt file imx51_pwm.c was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.2.2 18-May-2014  rmind sync with head
 1.1.2.1 06-May-2014  rmind file imx51_pwm.c was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.3 27-Sep-2019  hkenken Add i.MX SPI device type.

IMX31_CSPI
IMX35_CSPI
IMX51_ECSPI
 1.2 19-Aug-2019  hkenken Add support SPI driver for i.MX6.
 1.1 22-Mar-2014  hkenken branches: 1.1.4; 1.1.6; 1.1.10; 1.1.36;
Add SPI driver.
i.MX51 have two eCSPI, and one CSPI.
 1.1.36.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 22-Mar-2014  tls file imx51_spi.c was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 22-Mar-2014  yamt file imx51_spi.c was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 22-Mar-2014  rmind file imx51_spi.c was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.9 07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.8 12-Feb-2022  riastradh sys: Fix various abuse of struct device internals.

Will help to make struct device opaque later.
 1.7 25-Jul-2014  hkenken Add support i.MX50x
* i.MX50 series is e-ink e-reader processor.
 1.6 10-Mar-2014  skrll branches: 1.6.2;
Assume reads from hardware do something even if the result isn't required.

Hi htodd@!
 1.5 10-Mar-2014  htodd Delete unused variables for new gcc.
 1.4 28-Jul-2011  uebayasi branches: 1.4.2; 1.4.12; 1.4.16;
machine/bus.h -> sys/bus.h
 1.3 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.2 20-Dec-2010  matt branches: 1.2.6;
Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.1 13-Nov-2010  bsh branches: 1.1.2;
i.MX51 support by SHIMIZU Ryo, Hashimoto Kenichi, and me.
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imx51_tzic.c was added on branch uebayasi-xip on 2010-11-15 14:38:22 +0000
 1.2.6.2 05-Mar-2011  rmind sync with head
 1.2.6.1 20-Dec-2010  rmind file imx51_tzic.c was added on branch rmind-uvmplock on 2011-03-05 20:49:34 +0000
 1.4.16.1 18-May-2014  rmind sync with head
 1.4.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.2.1 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.6.2.1 10-Aug-2014  tls Rebase.
 1.2 27-Feb-2014  hkenken fix typo.
 1.1 13-Nov-2010  bsh branches: 1.1.2; 1.1.8; 1.1.12; 1.1.22; 1.1.26;
i.MX51 support by SHIMIZU Ryo, Hashimoto Kenichi, and me.
 1.1.26.1 18-May-2014  rmind sync with head
 1.1.22.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.12.1 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.8.2 05-Mar-2011  rmind sync with head
 1.1.8.1 13-Nov-2010  rmind file imx51_tzicreg.h was added on branch rmind-uvmplock on 2011-03-05 20:49:34 +0000
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imx51_tzicreg.h was added on branch uebayasi-xip on 2010-11-15 14:38:22 +0000
 1.4 08-Sep-2017  hkenken - Move CFATTACH_DECL_NEW() from common uart driver.
- Rename : imxuart_cons_attach() -> imxuart_cnattach()
 1.3 25-Jul-2014  hkenken Add support i.MX50x
* i.MX50 series is e-ink e-reader processor.
 1.2 27-Nov-2010  bsh branches: 1.2.6; 1.2.20; 1.2.34;
use device_t correctly for imxuart.
 1.1 13-Nov-2010  bsh branches: 1.1.2;
UART driver for i.MX31 and 51.
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imx51_uart.c was added on branch uebayasi-xip on 2010-11-15 14:38:22 +0000
 1.2.34.1 10-Aug-2014  tls Rebase.
 1.2.20.2 03-Dec-2017  jdolecek update from HEAD
 1.2.20.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.6.2 05-Mar-2011  rmind sync with head
 1.2.6.1 27-Nov-2010  rmind file imx51_uart.c was added on branch rmind-uvmplock on 2011-03-05 20:49:34 +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 24-Jul-2019  hkenken branches: 1.5.12;
i.MX USB host code re-arrangement.
 1.4 17-Mar-2018  ryo branches: 1.4.2;
move from sys/arch/arm/arm32/armv7_generic_dma.c to sys/arch/arm/arm/arm_generic_dma.c,
and change variable name from armv7_generic_dma_tag to arm_generic_dma_tag

no functional change. (preliminary changes for merging aarch64)
 1.3 17-Aug-2017  hkenken branches: 1.3.2;
Use armv7_generic_[dma|bs]_tag.
 1.2 25-Jul-2014  hkenken branches: 1.2.4;
Add support i.MX50x
* i.MX50 series is e-ink e-reader processor.
 1.1 30-Nov-2010  bsh branches: 1.1.6; 1.1.20; 1.1.34;
Support GPIO, IOMUX, and USB on i.MX51.
 1.1.34.1 10-Aug-2014  tls Rebase.
 1.1.20.2 03-Dec-2017  jdolecek update from HEAD
 1.1.20.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 30-Nov-2010  rmind file imx51_usb.c was added on branch rmind-uvmplock on 2011-03-05 20:49:34 +0000
 1.2.4.1 28-Aug-2017  skrll Sync with HEAD
 1.3.2.1 22-Mar-2018  pgoyette Synch with HEAD, resolve conflicts
 1.4.2.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.5.12.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.12.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.12.4 04-Apr-2021  thorpej CFARG_SUBMATCH -> CFARG_SEARCH for the indirect configuration uses.
 1.5.12.3 03-Apr-2021  thorpej Give config_attach() the tagged variadic argument treatment and
mechanically convert all call sites.
 1.5.12.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.12.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.1 22-Mar-2014  hkenken branches: 1.1.4; 1.1.6; 1.1.10;
add Watchdog Timer support for i.MX51.
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 22-Mar-2014  tls file imx51_wdog.c was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 22-Mar-2014  yamt file imx51_wdog.c was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 22-Mar-2014  rmind file imx51_wdog.c was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.8 19-Aug-2019  hkenken Add support SPI driver for i.MX6.
 1.7 07-May-2015  hkenken branches: 1.7.18;
fixed register size
 1.6 27-Mar-2015  hkenken Rewritten to take advantage of motoi2c code.
 1.5 25-Jul-2014  hkenken branches: 1.5.4;
Add support i.MX50x
* i.MX50 series is e-ink e-reader processor.
 1.4 15-Apr-2012  bsh branches: 1.4.2; 1.4.12;
add base addresses for i.MX51 IPU registers.
from Kinichi Hashimoto.
 1.3 15-Apr-2012  bsh add HVE bit definition in iomux PAD_CTL register.
 1.2 30-Nov-2010  bsh branches: 1.2.6; 1.2.10; 1.2.14;
Support GPIO, IOMUX, and USB on i.MX51.
 1.1 13-Nov-2010  bsh branches: 1.1.2;
i.MX51 support by SHIMIZU Ryo, Hashimoto Kenichi, and me.
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imx51reg.h was added on branch uebayasi-xip on 2010-11-15 14:38:22 +0000
 1.2.14.1 29-Apr-2012  mrg sync to latest -current.
 1.2.10.1 17-Apr-2012  yamt sync with head
 1.2.6.2 05-Mar-2011  rmind sync with head
 1.2.6.1 30-Nov-2010  rmind file imx51reg.h was added on branch rmind-uvmplock on 2011-03-05 20:49:34 +0000
 1.4.12.1 10-Aug-2014  tls Rebase.
 1.4.2.2 03-Dec-2017  jdolecek update from HEAD
 1.4.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5.4.2 06-Jun-2015  skrll Sync with HEAD
 1.5.4.1 06-Apr-2015  skrll Sync with HEAD
 1.7.18.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.7 24-Jul-2019  hkenken Modified i.MX GPIO control module and PCIe module.

+ Add imxpcie.c
imx PCIe common driver
 1.6 17-Mar-2018  ryo branches: 1.6.2;
move from sys/arch/arm/arm32/armv7_generic_dma.c to sys/arch/arm/arm/arm_generic_dma.c,
and change variable name from armv7_generic_dma_tag to arm_generic_dma_tag

no functional change. (preliminary changes for merging aarch64)
 1.5 17-Aug-2017  hkenken branches: 1.5.2;
Use armv7_generic_[dma|bs]_tag.
 1.4 21-Dec-2015  hkenken Rewritten to take advantage of genfb(4).
 1.3 07-May-2015  hkenken use armv7_generic_space
 1.2 30-Nov-2010  bsh branches: 1.2.6; 1.2.20; 1.2.38;
Support GPIO, IOMUX, and USB on i.MX51.
 1.1 13-Nov-2010  bsh branches: 1.1.2;
i.MX51 support by SHIMIZU Ryo, Hashimoto Kenichi, and me.
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imx51var.h was added on branch uebayasi-xip on 2010-11-15 14:38:22 +0000
 1.2.38.3 28-Aug-2017  skrll Sync with HEAD
 1.2.38.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.38.1 06-Jun-2015  skrll Sync with HEAD
 1.2.20.1 03-Dec-2017  jdolecek update from HEAD
 1.2.6.2 05-Mar-2011  rmind sync with head
 1.2.6.1 30-Nov-2010  rmind file imx51var.h was added on branch rmind-uvmplock on 2011-03-05 20:49:34 +0000
 1.5.2.1 22-Mar-2018  pgoyette Synch with HEAD, resolve conflicts
 1.6.2.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.11 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.10 22-Jul-2019  hkenken branches: 1.10.10;
Change register assignments.
 1.9 20-Jun-2019  hkenken Add support for clk subsystem in imx6 CCM driver.
 1.8 20-Jun-2018  hkenken branches: 1.8.2;
Fix typo.
 1.7 23-May-2018  hkenken Modified CCM register defines.
 1.6 09-Nov-2017  hkenken branches: 1.6.2; 1.6.4;
- Add imxusbphy driver for i.MX6.
- Clean up CCM (Clock driver).
Add imx6_ccm_analog_read/write() functions.
 1.5 09-Jun-2017  ryo add support for i.MX6UltraLite, and
ConnectCore for iMX6UL Starter Board.
 1.4 24-Nov-2016  hkenken Modified imx6_pll_power() arguments.
 1.3 25-Feb-2016  ryo branches: 1.3.2;
fix always false comparison.

pointed out by joerg@
 1.2 06-Oct-2014  ryo branches: 1.2.2;
* resolve arm root clock from CCM to attach a9tmr
* don't match/attach imx6_ahcisata on iMX6 Solo/SoloLite/DualLite
 1.1 25-Sep-2014  ryo add support i.MX6 and NITROGEN6X evaluation board
 1.2.2.3 28-Aug-2017  skrll Sync with HEAD
 1.2.2.2 05-Dec-2016  skrll Sync with HEAD
 1.2.2.1 19-Mar-2016  skrll Sync with HEAD
 1.3.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.6.4.1 25-Jun-2018  pgoyette Sync with HEAD
 1.6.2.2 03-Dec-2017  jdolecek update from HEAD
 1.6.2.1 09-Nov-2017  jdolecek file imx6_ahcisata.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.8.2.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.10.10.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 25-Sep-2014  ryo branches: 1.1.18; 1.1.34;
add support i.MX6 and NITROGEN6X evaluation board
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 25-Sep-2014  jdolecek file imx6_ahcisatareg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.6 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.5 17-Mar-2018  ryo branches: 1.5.14;
move from sys/arch/arm/arm32/armv7_generic_dma.c to sys/arch/arm/arm/arm_generic_dma.c,
and change variable name from armv7_generic_dma_tag to arm_generic_dma_tag

no functional change. (preliminary changes for merging aarch64)
 1.4 09-Nov-2017  hkenken branches: 1.4.2; 1.4.4;
- Add imxusbphy driver for i.MX6.
- Clean up CCM (Clock driver).
Add imx6_ccm_analog_read/write() functions.
 1.3 17-Aug-2017  hkenken Use armv7_generic_[dma|bs]_tag.
 1.2 31-Dec-2015  ryo use armv7_generic_space
 1.1 25-Sep-2014  ryo branches: 1.1.2;
add support i.MX6 and NITROGEN6X evaluation board
 1.1.2.2 28-Aug-2017  skrll Sync with HEAD
 1.1.2.1 19-Mar-2016  skrll Sync with HEAD
 1.4.4.1 22-Mar-2018  pgoyette Synch with HEAD, resolve conflicts
 1.4.2.2 03-Dec-2017  jdolecek update from HEAD
 1.4.2.1 09-Nov-2017  jdolecek file imx6_axi.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.5.14.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.17 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.16 29-Sep-2020  jmcneill branches: 1.16.2;
Collapse all CPU_CORTEXA<n> options into CPU_CORTEX and do runtime
detection instead of ifdefs where required.
 1.15 15-Jan-2020  jmcneill Add support for NXP i.MX 8M Dual/8M QuadLite/8M Quad family SoCs.
 1.14 27-Jul-2019  skrll branches: 1.14.4;
Fix builds properly
 1.13 24-Jul-2019  hkenken Modified imx6 Clock Controller Module (CCM).

+ Add imx6_get_clock_by_id().
 1.12 18-Oct-2018  skrll Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively
 1.11 15-Aug-2018  skrll sort #include "opt_..." entries
 1.10 20-Jun-2018  hkenken branches: 1.10.2;
Rename a9tmr to arma9tmr.
 1.9 09-Nov-2017  hkenken branches: 1.9.2; 1.9.4;
- Add imxusbphy driver for i.MX6.
- Clean up CCM (Clock driver).
Add imx6_ccm_analog_read/write() functions.
 1.8 09-Jun-2017  ryo add support for i.MX6UltraLite, and
ConnectCore for iMX6UL Starter Board.
 1.7 24-Nov-2016  hkenken Move to common function.
sdhc_set_gpio_cd() -> imx6_set_gpio()
 1.6 20-Oct-2016  skrll Fix regisers typo
 1.5 31-Dec-2015  ryo branches: 1.5.2;
use armv7_generic_space
 1.4 01-Jun-2015  ryo Limit the maximum size of memory to 3840Mbyte for 4G memory board (NITROGEN6MAX)
constrained by memory layout of i.MX6 SoC.
 1.3 09-Jan-2015  ryo - add some clock source about IPU
- fix a9tmr frequency when changing clock of machdep.imx6.frequency.arm
 1.2 06-Oct-2014  ryo branches: 1.2.2;
* resolve arm root clock from CCM to attach a9tmr
* don't match/attach imx6_ahcisata on iMX6 Solo/SoloLite/DualLite
 1.1 25-Sep-2014  ryo add support i.MX6 and NITROGEN6X evaluation board
 1.2.2.5 28-Aug-2017  skrll Sync with HEAD
 1.2.2.4 05-Dec-2016  skrll Sync with HEAD
 1.2.2.3 19-Mar-2016  skrll Sync with HEAD
 1.2.2.2 06-Jun-2015  skrll Sync with HEAD
 1.2.2.1 06-Apr-2015  skrll Sync with HEAD
 1.5.2.2 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.5.2.1 04-Nov-2016  pgoyette Sync with HEAD
 1.9.4.3 20-Oct-2018  pgoyette Sync with head
 1.9.4.2 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.9.4.1 25-Jun-2018  pgoyette Sync with HEAD
 1.9.2.2 03-Dec-2017  jdolecek update from HEAD
 1.9.2.1 09-Nov-2017  jdolecek file imx6_board.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.10.2.3 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.10.2.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.10.2.1 10-Jun-2019  christos Sync with HEAD
 1.14.4.1 17-Jan-2020  ad Sync with head.
 1.16.2.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.20 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.19 19-Jun-2020  skrll branches: 1.19.2;
Spell GENERIC correctly. NFCI.
 1.18 08-Jun-2020  hkenken Fix wrong divider setting.
 1.17 05-Jun-2020  hkenken Fix indent.
 1.16 05-Jun-2020  hkenken Fix KASSERT
 1.15 12-Nov-2019  hkenken Add imxccm_clk_set_rate_div().

+ Fixed BUG in imxccm_clk_get_rate_div().
 1.14 02-Sep-2019  hkenken Add support for imx6qp-pcie.

+ Add vpcie-supply support
+ Add ext_osc support

Tested on SABRESD i.MX 6QP.
 1.13 30-Jul-2019  hkenken Fix overflow to calculate frequencies.
 1.12 26-Jul-2019  skrll Fix builds
 1.11 24-Jul-2019  hkenken Modified imx6 Clock Controller Module (CCM).

+ Add imx6_get_clock_by_id().
 1.10 20-Jun-2019  hkenken Add support for clk subsystem in imx6 CCM driver.
 1.9 20-Jun-2018  hkenken branches: 1.9.2;
Modified CCM register defines.
 1.8 23-May-2018  hkenken Modified CCM register defines.
 1.7 09-Nov-2017  hkenken branches: 1.7.2; 1.7.4;
- Add imxusbphy driver for i.MX6.
- Clean up CCM (Clock driver).
Add imx6_ccm_analog_read/write() functions.
 1.6 09-Jun-2017  ryo add support for i.MX6UltraLite, and
ConnectCore for iMX6UL Starter Board.
 1.5 24-Nov-2016  hkenken Modified imx6_pll_power() arguments.
 1.4 09-Jan-2015  ryo branches: 1.4.2;
- add some clock source about IPU
- fix a9tmr frequency when changing clock of machdep.imx6.frequency.arm
 1.3 07-Oct-2014  ryo branches: 1.3.2;
add support imx6 I2C Controller
 1.2 06-Oct-2014  ryo * resolve arm root clock from CCM to attach a9tmr
* don't match/attach imx6_ahcisata on iMX6 Solo/SoloLite/DualLite
 1.1 25-Sep-2014  ryo add support i.MX6 and NITROGEN6X evaluation board
 1.3.2.3 28-Aug-2017  skrll Sync with HEAD
 1.3.2.2 05-Dec-2016  skrll Sync with HEAD
 1.3.2.1 06-Apr-2015  skrll Sync with HEAD
 1.4.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.7.4.1 25-Jun-2018  pgoyette Sync with HEAD
 1.7.2.2 03-Dec-2017  jdolecek update from HEAD
 1.7.2.1 09-Nov-2017  jdolecek file imx6_ccm.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.9.2.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.19.2.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.12 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.11 24-Jul-2019  hkenken branches: 1.11.10;
Modified imx6 Clock Controller Module (CCM).

+ Add imx6_get_clock_by_id().
 1.10 20-Jun-2019  hkenken Add support for clk subsystem in imx6 CCM driver.
 1.9 16-Sep-2018  skrll interrupt has two 'r's

fix another typo while I'm here (flsah)
 1.8 20-Jun-2018  hkenken branches: 1.8.2;
Modified CCM register defines.
 1.7 23-May-2018  hkenken Modified CCM register defines.
 1.6 09-Nov-2017  hkenken branches: 1.6.2; 1.6.4;
- Add imxusbphy driver for i.MX6.
- Clean up CCM (Clock driver).
Add imx6_ccm_analog_read/write() functions.
 1.5 09-Jun-2017  ryo add support for i.MX6UltraLite, and
ConnectCore for iMX6UL Starter Board.
 1.4 24-Nov-2016  hkenken Modified imx6_pll_power() arguments.
 1.3 09-Jan-2015  ryo branches: 1.3.2;
- add some clock source about IPU
- fix a9tmr frequency when changing clock of machdep.imx6.frequency.arm
 1.2 06-Oct-2014  ryo branches: 1.2.2;
* resolve arm root clock from CCM to attach a9tmr
* don't match/attach imx6_ahcisata on iMX6 Solo/SoloLite/DualLite
 1.1 25-Sep-2014  ryo add support i.MX6 and NITROGEN6X evaluation board
 1.2.2.3 28-Aug-2017  skrll Sync with HEAD
 1.2.2.2 05-Dec-2016  skrll Sync with HEAD
 1.2.2.1 06-Apr-2015  skrll Sync with HEAD
 1.3.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.6.4.2 30-Sep-2018  pgoyette Ssync with HEAD
 1.6.4.1 25-Jun-2018  pgoyette Sync with HEAD
 1.6.2.2 03-Dec-2017  jdolecek update from HEAD
 1.6.2.1 09-Nov-2017  jdolecek file imx6_ccmreg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.8.2.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.8.2.1 10-Jun-2019  christos Sync with HEAD
 1.11.10.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.9 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.8 19-Jun-2020  skrll branches: 1.8.2;
Spell GENERIC correctly. NFCI.
 1.7 24-Jul-2019  hkenken Modified imx6 Clock Controller Module (CCM).

+ Add imx6_get_clock_by_id().
 1.6 20-Jun-2019  hkenken Add support for clk subsystem in imx6 CCM driver.
 1.5 09-Nov-2017  hkenken branches: 1.5.2; 1.5.6;
- Add imxusbphy driver for i.MX6.
- Clean up CCM (Clock driver).
Add imx6_ccm_analog_read/write() functions.
 1.4 24-Nov-2016  hkenken Modified imx6_pll_power() arguments.
 1.3 09-Jan-2015  ryo branches: 1.3.2;
- add some clock source about IPU
- fix a9tmr frequency when changing clock of machdep.imx6.frequency.arm
 1.2 07-Oct-2014  ryo branches: 1.2.2;
add support imx6 I2C Controller
 1.1 25-Sep-2014  ryo add support i.MX6 and NITROGEN6X evaluation board
 1.2.2.2 05-Dec-2016  skrll Sync with HEAD
 1.2.2.1 06-Apr-2015  skrll Sync with HEAD
 1.3.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.5.6.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.5.2.2 03-Dec-2017  jdolecek update from HEAD
 1.5.2.1 09-Nov-2017  jdolecek file imx6_ccmvar.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.8.2.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 24-Jul-2019  hkenken branches: 1.1.10; 1.1.12;
Modified imx6 Clock Controller Module (CCM).

+ Add imx6_get_clock_by_id().
 1.1.12.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.10.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.1 24-Jul-2019  martin file imx6_clk.c was added on branch phil-wifi on 2020-04-13 08:03:35 +0000
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 25-Sep-2014  ryo branches: 1.1.18; 1.1.34;
add support i.MX6 and NITROGEN6X evaluation board
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 25-Sep-2014  jdolecek file imx6_clock.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 24-Jul-2019  hkenken branches: 1.1.10; 1.1.12;
Add support for device tree.

+ CCM (clk)
+ COM (uart)
+ GPIO
+ IOMUX (pin control)
+ PCIe
+ SDHC
+ USB Host
+ USB phy
 1.1.12.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.10.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.1 24-Jul-2019  martin file imx6_gpcreg.h was added on branch phil-wifi on 2020-04-13 08:03:35 +0000
 1.4 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.3 24-Jul-2019  hkenken branches: 1.3.10;
Modified i.MX GPIO control module and PCIe module.

+ Add imxpcie.c
imx PCIe common driver
 1.2 09-Jun-2017  ryo branches: 1.2.4; 1.2.8;
add support for i.MX6UltraLite, and
ConnectCore for iMX6UL Starter Board.
 1.1 25-Sep-2014  ryo branches: 1.1.2;
add support i.MX6 and NITROGEN6X evaluation board
 1.1.2.1 28-Aug-2017  skrll Sync with HEAD
 1.2.8.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.2.4.2 03-Dec-2017  jdolecek update from HEAD
 1.2.4.1 09-Jun-2017  jdolecek file imx6_gpio.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.3.10.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.4 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.3 20-Jun-2019  hkenken branches: 1.3.10;
Add support for clk subsystem in imx6 CCM driver.
 1.2 27-Mar-2015  hkenken branches: 1.2.16; 1.2.20;
Rewritten to take advantage of motoi2c code.
 1.1 07-Oct-2014  ryo branches: 1.1.2;
add support imx6 I2C Controller
 1.1.2.1 06-Apr-2015  skrll Sync with HEAD
 1.2.20.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.2.16.2 03-Dec-2017  jdolecek update from HEAD
 1.2.16.1 27-Mar-2015  jdolecek file imx6_i2c.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.3.10.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.5 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.4 09-Jun-2017  ryo branches: 1.4.18;
add support for i.MX6UltraLite, and
ConnectCore for iMX6UL Starter Board.
 1.3 01-Jun-2015  ryo add #define __HAVE_PIC_PENDING_INTRS because imxgpio use pic_mark_pending()
 1.2 25-Sep-2014  ryo branches: 1.2.2;
add support i.MX6 and NITROGEN6X evaluation board
 1.1 01-Sep-2012  matt branches: 1.1.2; 1.1.4;
Some initial iMX.6 support
 1.1.4.2 30-Oct-2012  yamt sync with head
 1.1.4.1 01-Sep-2012  yamt file imx6_intr.h was added on branch yamt-pagecache on 2012-10-30 17:19:03 +0000
 1.1.2.1 03-Dec-2017  jdolecek update from HEAD
 1.2.2.2 28-Aug-2017  skrll Sync with HEAD
 1.2.2.1 06-Jun-2015  skrll Sync with HEAD
 1.4.18.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 25-Sep-2014  ryo branches: 1.1.18; 1.1.34;
add support i.MX6 and NITROGEN6X evaluation board
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 25-Sep-2014  jdolecek file imx6_iomux.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.7 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.6 02-Sep-2019  hkenken branches: 1.6.8;
Add support for imx6qp-pcie.

+ Add vpcie-supply support
+ Add ext_osc support

Tested on SABRESD i.MX 6QP.
 1.5 22-Jul-2019  hkenken Change register assignments.
 1.4 09-Jun-2017  ryo branches: 1.4.4; 1.4.8;
add support for i.MX6UltraLite, and
ConnectCore for iMX6UL Starter Board.
 1.3 31-Dec-2015  ryo add support iMX6 uSDHC
- some UHS-I/SDR104 card are not stable
- eMMC doesn't work yet
 1.2 30-Jul-2015  ryo - setup iomux before attach console
- define EVBARM_BOARDTYPE in each config file
- add iomux settings for UART1
- add some iomux definitions
 1.1 25-Sep-2014  ryo branches: 1.1.2;
add support i.MX6 and NITROGEN6X evaluation board
 1.1.2.3 28-Aug-2017  skrll Sync with HEAD
 1.1.2.2 19-Mar-2016  skrll Sync with HEAD
 1.1.2.1 22-Sep-2015  skrll Sync with HEAD
 1.4.8.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.4.4.2 03-Dec-2017  jdolecek update from HEAD
 1.4.4.1 09-Jun-2017  jdolecek file imx6_iomuxreg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.6.8.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 25-Sep-2014  ryo branches: 1.1.18; 1.1.34;
add support i.MX6 and NITROGEN6X evaluation board
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 25-Sep-2014  jdolecek file imx6_mmdcreg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 25-Sep-2014  ryo branches: 1.1.18; 1.1.34;
add support i.MX6 and NITROGEN6X evaluation board
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 25-Sep-2014  jdolecek file imx6_ocotp.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 25-Sep-2014  ryo branches: 1.1.18; 1.1.34;
add support i.MX6 and NITROGEN6X evaluation board
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 25-Sep-2014  jdolecek file imx6_ocotpreg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 25-Sep-2014  ryo branches: 1.1.18; 1.1.34;
add support i.MX6 and NITROGEN6X evaluation board
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 25-Sep-2014  jdolecek file imx6_ocotpvar.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.18 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.17 07-Jul-2020  thorpej branches: 1.17.2;
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.16 14-Jun-2020  chs replace EX_NOWAIT with EX_WAITOK in device attach methods.
remove checks for failures that can no longer occur.
 1.15 15-Jan-2020  jmcneill Add support for NXP i.MX 8M Dual/8M QuadLite/8M Quad family SoCs.
 1.14 16-Oct-2019  hkenken branches: 1.14.2;
Fixed bug when using PCIe external clock.
 1.13 27-Jul-2019  skrll Fix builds properly
 1.12 27-Jul-2019  skrll sort some #includes
 1.11 26-Jul-2019  skrll Fix builds
 1.10 24-Jul-2019  hkenken Modified i.MX GPIO control module and PCIe module.

+ Add imxpcie.c
imx PCIe common driver
 1.9 20-Jun-2019  hkenken Add support for clk subsystem in imx6 CCM driver.
 1.8 01-Mar-2019  msaitoh - Almost all ppbreg.h's definitions are also in pcireg.h. Remove duplicated
definitions from ppbreg.h and move some definitions from ppbreg.h to
pcireg.h.
- Change fast back-to-back "capable" to "enable" in pci_subr.c.
- Print Primary Discard Timer, Secondary Discard Timer, Discard Timer Status
and Discard Timer SERR# Enable bit in pci_subr.c.
- PCI_BRIDGE_PREFETCHBASE32_REG and PCI_BRIDGE_PREFETCHLIMIT32_REG are
"upper" 32bit registers, rename to *UP32_REG to avoid confusion.
- Use macro.
 1.7 16-Dec-2018  skrll Fix build
 1.6 23-May-2018  hkenken branches: 1.6.2;
Modified CCM register defines.
 1.5 09-Nov-2017  hkenken branches: 1.5.2; 1.5.4;
- Add imxusbphy driver for i.MX6.
- Clean up CCM (Clock driver).
Add imx6_ccm_analog_read/write() functions.
 1.4 24-Oct-2017  hkenken Added link up status check for valid pci device confirm.
 1.3 09-Jun-2017  ryo add support for i.MX6UltraLite, and
ConnectCore for iMX6UL Starter Board.
 1.2 25-Nov-2016  hkenken branches: 1.2.2; 1.2.4;
* Fix compile error.
* typo
 1.1 24-Nov-2016  hkenken Add support imx6 PCIe controller.
 1.2.4.2 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.2.4.1 25-Nov-2016  pgoyette file imx6_pcie.c was added on branch pgoyette-localcount on 2017-01-07 08:56:11 +0000
 1.2.2.3 28-Aug-2017  skrll Sync with HEAD
 1.2.2.2 05-Dec-2016  skrll Sync with HEAD
 1.2.2.1 25-Nov-2016  skrll file imx6_pcie.c was added on branch nick-nhusb on 2016-12-05 10:54:50 +0000
 1.5.4.2 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.5.4.1 25-Jun-2018  pgoyette Sync with HEAD
 1.5.2.2 03-Dec-2017  jdolecek update from HEAD
 1.5.2.1 09-Nov-2017  jdolecek file imx6_pcie.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.6.2.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.6.2.1 10-Jun-2019  christos Sync with HEAD
 1.14.2.1 17-Jan-2020  ad Sync with head.
 1.17.2.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 24-Nov-2016  hkenken branches: 1.1.2; 1.1.4; 1.1.18; 1.1.34;
Add support imx6 PCIe controller.
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Nov-2016  jdolecek file imx6_pciereg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.4.2 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.1.4.1 24-Nov-2016  pgoyette file imx6_pciereg.h was added on branch pgoyette-localcount on 2017-01-07 08:56:11 +0000
 1.1.2.2 05-Dec-2016  skrll Sync with HEAD
 1.1.2.1 24-Nov-2016  skrll file imx6_pciereg.h was added on branch nick-nhusb on 2016-12-05 10:54:50 +0000
 1.11 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.10 24-Jul-2019  hkenken branches: 1.10.10;
Modified imx6 Clock Controller Module (CCM).

+ Add imx6_get_clock_by_id().
 1.9 24-Jul-2019  hkenken i.MX USB host code re-arrangement.
 1.8 20-Jun-2018  hkenken branches: 1.8.2;
Modified CCM register defines.
 1.7 09-Nov-2017  hkenken branches: 1.7.2;
- Add imxusbphy driver for i.MX6.
- Clean up CCM (Clock driver).
Add imx6_ccm_analog_read/write() functions.
 1.6 09-Jun-2017  ryo add support for i.MX6UltraLite, and
ConnectCore for iMX6UL Starter Board.
 1.5 17-May-2016  ryo Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.4 27-Mar-2015  hkenken Rewritten to take advantage of motoi2c code.
 1.3 06-Oct-2014  ryo branches: 1.3.2;
add support imx6 Secure Non-Volatile Storage (SNVS) real-time clock
 1.2 25-Sep-2014  ryo add support i.MX6 and NITROGEN6X evaluation board
 1.1 01-Sep-2012  matt branches: 1.1.2; 1.1.4;
Some initial iMX.6 support
 1.1.4.2 30-Oct-2012  yamt sync with head
 1.1.4.1 01-Sep-2012  yamt file imx6_reg.h was added on branch yamt-pagecache on 2012-10-30 17:19:03 +0000
 1.1.2.1 03-Dec-2017  jdolecek update from HEAD
 1.3.2.3 28-Aug-2017  skrll Sync with HEAD
 1.3.2.2 29-May-2016  skrll Sync with HEAD
 1.3.2.1 06-Apr-2015  skrll Sync with HEAD
 1.7.2.1 25-Jun-2018  pgoyette Sync with HEAD
 1.8.2.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.10.10.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.3 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.2 17-May-2016  ryo branches: 1.2.16; 1.2.32;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1 06-Oct-2014  ryo branches: 1.1.2;
add support imx6 Secure Non-Volatile Storage (SNVS) real-time clock
 1.1.2.1 29-May-2016  skrll Sync with HEAD
 1.2.32.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.2.16.2 03-Dec-2017  jdolecek update from HEAD
 1.2.16.1 17-May-2016  jdolecek file imx6_snvs.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 06-Oct-2014  ryo branches: 1.1.18; 1.1.34;
add support imx6 Secure Non-Volatile Storage (SNVS) real-time clock
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 06-Oct-2014  jdolecek file imx6_snvsreg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.3 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.2 18-Oct-2018  skrll branches: 1.2.12;
Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively
 1.1 25-Sep-2014  ryo branches: 1.1.18; 1.1.20; 1.1.22;
add support i.MX6 and NITROGEN6X evaluation board
 1.1.22.1 10-Jun-2019  christos Sync with HEAD
 1.1.20.1 20-Oct-2018  pgoyette Sync with head
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 25-Sep-2014  jdolecek file imx6_srcreg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.2.12.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.4 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.3 08-Sep-2017  hkenken branches: 1.3.2; 1.3.18;
- Move CFATTACH_DECL_NEW() from common uart driver.
- Rename : imxuart_cons_attach() -> imxuart_cnattach()
 1.2 09-Jun-2017  ryo add support for i.MX6UltraLite, and
ConnectCore for iMX6UL Starter Board.
 1.1 25-Sep-2014  ryo branches: 1.1.2;
add support i.MX6 and NITROGEN6X evaluation board
 1.1.2.1 28-Aug-2017  skrll Sync with HEAD
 1.3.18.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.3.2.2 03-Dec-2017  jdolecek update from HEAD
 1.3.2.1 08-Sep-2017  jdolecek file imx6_uart.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.7 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.6 24-Jul-2019  hkenken branches: 1.6.10;
i.MX USB host code re-arrangement.
 1.5 20-Jun-2019  hkenken Add support for clk subsystem in imx6 CCM driver.
 1.4 23-May-2018  hkenken branches: 1.4.2;
Modified CCM register defines.
 1.3 17-Mar-2018  ryo move from sys/arch/arm/arm32/armv7_generic_dma.c to sys/arch/arm/arm/arm_generic_dma.c,
and change variable name from armv7_generic_dma_tag to arm_generic_dma_tag

no functional change. (preliminary changes for merging aarch64)
 1.2 17-Aug-2017  hkenken branches: 1.2.2; 1.2.4;
Use armv7_generic_[dma|bs]_tag.
 1.1 25-Sep-2014  ryo branches: 1.1.2;
add support i.MX6 and NITROGEN6X evaluation board
 1.1.2.1 28-Aug-2017  skrll Sync with HEAD
 1.2.4.2 25-Jun-2018  pgoyette Sync with HEAD
 1.2.4.1 22-Mar-2018  pgoyette Synch with HEAD, resolve conflicts
 1.2.2.2 03-Dec-2017  jdolecek update from HEAD
 1.2.2.1 17-Aug-2017  jdolecek file imx6_usb.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.4.2.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.6.10.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.4 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.3 24-Nov-2019  skrll branches: 1.3.8;
Use PRIxBUSADDR
 1.2 20-Jun-2019  hkenken Add support for clk subsystem in imx6 CCM driver.
 1.1 09-Nov-2017  hkenken branches: 1.1.2; 1.1.6;
- Add imxusbphy driver for i.MX6.
- Clean up CCM (Clock driver).
Add imx6_ccm_analog_read/write() functions.
 1.1.6.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.6.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.1.2.2 03-Dec-2017  jdolecek update from HEAD
 1.1.2.1 09-Nov-2017  jdolecek file imx6_usbphy.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.3.8.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 09-Nov-2017  hkenken branches: 1.1.2; 1.1.18;
- Add imxusbphy driver for i.MX6.
- Clean up CCM (Clock driver).
Add imx6_ccm_analog_read/write() functions.
 1.1.18.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.2 03-Dec-2017  jdolecek update from HEAD
 1.1.2.1 09-Nov-2017  jdolecek file imx6_usbphyreg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.3 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.2 24-Jul-2019  hkenken branches: 1.2.10;
i.MX USB host code re-arrangement.
 1.1 25-Sep-2014  ryo branches: 1.1.18; 1.1.22;
add support i.MX6 and NITROGEN6X evaluation board
 1.1.22.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 25-Sep-2014  jdolecek file imx6_usbreg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.2.10.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.10 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.9 15-Jan-2020  jmcneill branches: 1.9.6;
Add support for NXP i.MX 8M Dual/8M QuadLite/8M Quad family SoCs.
 1.8 24-Jul-2019  hkenken branches: 1.8.4;
Modified i.MX GPIO control module and PCIe module.

+ Add imxpcie.c
imx PCIe common driver
 1.7 20-Jun-2019  hkenken Add support for clk subsystem in imx6 CCM driver.
 1.6 23-May-2018  hkenken branches: 1.6.2;
Modified CCM register defines.
 1.5 26-Oct-2017  ryo branches: 1.5.2; 1.5.4;
fix typo
 1.4 09-Jun-2017  ryo add support for i.MX6UltraLite, and
ConnectCore for iMX6UL Starter Board.
 1.3 24-Nov-2016  hkenken Move to common function.
sdhc_set_gpio_cd() -> imx6_set_gpio()
 1.2 31-Dec-2015  ryo branches: 1.2.2;
add support iMX6 uSDHC
- some UHS-I/SDR104 card are not stable
- eMMC doesn't work yet
 1.1 25-Sep-2014  ryo branches: 1.1.2;
add support i.MX6 and NITROGEN6X evaluation board
 1.1.2.3 28-Aug-2017  skrll Sync with HEAD
 1.1.2.2 05-Dec-2016  skrll Sync with HEAD
 1.1.2.1 19-Mar-2016  skrll Sync with HEAD
 1.2.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.5.4.1 25-Jun-2018  pgoyette Sync with HEAD
 1.5.2.2 03-Dec-2017  jdolecek update from HEAD
 1.5.2.1 26-Oct-2017  jdolecek file imx6_usdhc.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.6.2.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.8.4.1 17-Jan-2020  ad Sync with head.
 1.9.6.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.3 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.2 09-Jun-2017  ryo branches: 1.2.4; 1.2.20;
add support for i.MX6UltraLite, and
ConnectCore for iMX6UL Starter Board.
 1.1 25-Sep-2014  ryo branches: 1.1.2;
add support i.MX6 and NITROGEN6X evaluation board
 1.1.2.1 28-Aug-2017  skrll Sync with HEAD
 1.2.20.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.2.4.2 03-Dec-2017  jdolecek update from HEAD
 1.2.4.1 09-Jun-2017  jdolecek file imx6_wdog.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.10 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.9 18-Oct-2018  skrll branches: 1.9.12;
Provide generic start code that assumes the MMU is off and caches are
disabled as per the linux booting protocol for ARMv6 and ARMv7 boards.
u-boot image type should be changed to 'linux' for correct behaviour.

The new start code builds a minimal "bootstrap" L1PT with cached access
disabled and uses the same table for all processors. AP startup is
performed in less steps and more code is written in C.

The bootstrap tables and stack are placed into an (orphaned) section
"_init_memory" which is given to uvm when it is no longer used.

Various kernels have been converted to use this code and tested. Some
boards were provided by TNF. Thanks!

The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS
kernels. The GENERIC kernel will also work on RPI2 using u-boot.

Thanks to martin@ and aymeric@ for testing on parallella and nanosoc
respectively
 1.8 17-Mar-2018  ryo branches: 1.8.2;
move from sys/arch/arm/arm32/armv7_generic_dma.c to sys/arch/arm/arm/arm_generic_dma.c,
and change variable name from armv7_generic_dma_tag to arm_generic_dma_tag

no functional change. (preliminary changes for merging aarch64)
 1.7 17-Aug-2017  hkenken branches: 1.7.2; 1.7.4;
Use armv7_generic_[dma|bs]_tag.
 1.6 09-Jun-2017  ryo add support for i.MX6UltraLite, and
ConnectCore for iMX6UL Starter Board.
 1.5 24-Nov-2016  hkenken Move to common function.
sdhc_set_gpio_cd() -> imx6_set_gpio()
 1.4 31-Dec-2015  ryo branches: 1.4.2;
use armv7_generic_space
 1.3 30-Jul-2015  ryo - setup iomux before attach console
- define EVBARM_BOARDTYPE in each config file
- add iomux settings for UART1
- add some iomux definitions
 1.2 07-Oct-2014  ryo branches: 1.2.2;
forgot to commit about changes of ccm
 1.1 25-Sep-2014  ryo add support i.MX6 and NITROGEN6X evaluation board
 1.2.2.4 28-Aug-2017  skrll Sync with HEAD
 1.2.2.3 05-Dec-2016  skrll Sync with HEAD
 1.2.2.2 19-Mar-2016  skrll Sync with HEAD
 1.2.2.1 22-Sep-2015  skrll Sync with HEAD
 1.4.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.7.4.2 20-Oct-2018  pgoyette Sync with head
 1.7.4.1 22-Mar-2018  pgoyette Synch with HEAD, resolve conflicts
 1.7.2.2 03-Dec-2017  jdolecek update from HEAD
 1.7.2.1 17-Aug-2017  jdolecek file imx6var.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.8.2.1 10-Jun-2019  christos Sync with HEAD
 1.9.12.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.4 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.3 17-Mar-2018  ryo branches: 1.3.14;
move from sys/arch/arm/arm32/armv7_generic_dma.c to sys/arch/arm/arm/arm_generic_dma.c,
and change variable name from armv7_generic_dma_tag to arm_generic_dma_tag

no functional change. (preliminary changes for merging aarch64)
 1.2 17-Aug-2017  hkenken branches: 1.2.2; 1.2.4;
Use armv7_generic_[dma|bs]_tag.
 1.1 17-May-2016  ryo branches: 1.1.2;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.2.3 28-Aug-2017  skrll Sync with HEAD
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_axi.c was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2.4.1 22-Mar-2018  pgoyette Synch with HEAD, resolve conflicts
 1.2.2.2 03-Dec-2017  jdolecek update from HEAD
 1.2.2.1 17-Aug-2017  jdolecek file imx7_axi.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.3.14.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.4 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.3 17-Aug-2017  hkenken branches: 1.3.2; 1.3.18;
Use armv7_generic_[dma|bs]_tag.
 1.2 20-Oct-2016  skrll Fix regisers typo
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.4;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.4.1 04-Nov-2016  pgoyette Sync with HEAD
 1.1.2.4 28-Aug-2017  skrll Sync with HEAD
 1.1.2.3 05-Dec-2016  skrll Sync with HEAD
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_board.c was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.3.18.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.3.2.2 03-Dec-2017  jdolecek update from HEAD
 1.3.2.1 17-Aug-2017  jdolecek file imx7_board.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.3 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.2 20-Oct-2016  ryo branches: 1.2.14; 1.2.30;
make "machdep.imx7.frequency.arm_a7" and "machdep.imx7.frequency.arm_m4" sysctl node changeable.
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.4;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.4.1 04-Nov-2016  pgoyette Sync with HEAD
 1.1.2.3 05-Dec-2016  skrll Sync with HEAD
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_ccm.c was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2.30.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.2.14.2 03-Dec-2017  jdolecek update from HEAD
 1.2.14.1 20-Oct-2016  jdolecek file imx7_ccm.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.3 26-Dec-2020  skrll G/C
 1.2 17-Oct-2016  ryo branches: 1.2.14; 1.2.30;
add more register definitions.
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.4;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.4.1 04-Nov-2016  pgoyette Sync with HEAD
 1.1.2.3 05-Dec-2016  skrll Sync with HEAD
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_ccmreg.h was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2.30.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.2.14.2 03-Dec-2017  jdolecek update from HEAD
 1.2.14.1 17-Oct-2016  jdolecek file imx7_ccmreg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.2 26-Dec-2020  skrll G/C
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.18; 1.1.34;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 17-May-2016  jdolecek file imx7_ccmvar.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_ccmvar.h was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.3 26-Dec-2020  skrll G/C
 1.2 17-Oct-2016  ryo branches: 1.2.14; 1.2.30;
add more register definitions.
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.4;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.4.1 04-Nov-2016  pgoyette Sync with HEAD
 1.1.2.3 05-Dec-2016  skrll Sync with HEAD
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_gpcreg.h was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2.30.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.2.14.2 03-Dec-2017  jdolecek update from HEAD
 1.2.14.1 17-Oct-2016  jdolecek file imx7_gpcreg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.3 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.2 24-Jul-2019  hkenken branches: 1.2.10;
Modified i.MX GPIO control module and PCIe module.

+ Add imxpcie.c
imx PCIe common driver
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.18; 1.1.22;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.22.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 17-May-2016  jdolecek file imx7_gpio.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_gpio.c was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2.10.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.18; 1.1.34;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 17-May-2016  jdolecek file imx7_intr.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_intr.h was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.18; 1.1.34;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 17-May-2016  jdolecek file imx7_iomux.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_iomux.c was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2 26-Dec-2020  skrll G/C
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.18; 1.1.34;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 17-May-2016  jdolecek file imx7_iomuxreg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_iomuxreg.h was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.18; 1.1.34;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 17-May-2016  jdolecek file imx7_ocotp.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_ocotp.c was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2 26-Dec-2020  skrll G/C
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.18; 1.1.34;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 17-May-2016  jdolecek file imx7_ocotpreg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_ocotpreg.h was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.18; 1.1.34;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 17-May-2016  jdolecek file imx7_ocotpvar.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_ocotpvar.h was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 17-Oct-2016  ryo branches: 1.1.2; 1.1.4; 1.1.18; 1.1.34;
add more register definitions.
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 17-Oct-2016  jdolecek file imx7_rdcreg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.4.2 05-Dec-2016  skrll Sync with HEAD
 1.1.4.1 17-Oct-2016  skrll file imx7_rdcreg.h was added on branch nick-nhusb on 2016-12-05 10:54:50 +0000
 1.1.2.2 04-Nov-2016  pgoyette Sync with HEAD
 1.1.2.1 17-Oct-2016  pgoyette file imx7_rdcreg.h was added on branch pgoyette-localcount on 2016-11-04 14:48:58 +0000
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.18; 1.1.34;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 17-May-2016  jdolecek file imx7_snvs.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_snvs.c was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.3 26-Dec-2020  skrll G/C
 1.2 17-Oct-2016  ryo branches: 1.2.14; 1.2.30;
add more register definitions.
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.4;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.4.1 04-Nov-2016  pgoyette Sync with HEAD
 1.1.2.3 05-Dec-2016  skrll Sync with HEAD
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_srcreg.h was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2.30.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.2.14.2 03-Dec-2017  jdolecek update from HEAD
 1.2.14.1 17-Oct-2016  jdolecek file imx7_srcreg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.3 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.2 08-Sep-2017  hkenken branches: 1.2.2; 1.2.18;
- Move CFATTACH_DECL_NEW() from common uart driver.
- Rename : imxuart_cons_attach() -> imxuart_cnattach()
 1.1 17-May-2016  ryo branches: 1.1.2;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_uart.c was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2.18.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.2.2.2 03-Dec-2017  jdolecek update from HEAD
 1.2.2.1 08-Sep-2017  jdolecek file imx7_uart.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.6 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.5 14-May-2020  msaitoh branches: 1.5.2;
Remove extra semicolon.
 1.4 24-Jul-2019  hkenken i.MX USB host code re-arrangement.
 1.3 17-Mar-2018  ryo branches: 1.3.2;
move from sys/arch/arm/arm32/armv7_generic_dma.c to sys/arch/arm/arm/arm_generic_dma.c,
and change variable name from armv7_generic_dma_tag to arm_generic_dma_tag

no functional change. (preliminary changes for merging aarch64)
 1.2 17-Aug-2017  hkenken branches: 1.2.2; 1.2.4;
Use armv7_generic_[dma|bs]_tag.
 1.1 17-May-2016  ryo branches: 1.1.2;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.2.3 28-Aug-2017  skrll Sync with HEAD
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_usb.c was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2.4.1 22-Mar-2018  pgoyette Synch with HEAD, resolve conflicts
 1.2.2.2 03-Dec-2017  jdolecek update from HEAD
 1.2.2.1 17-Aug-2017  jdolecek file imx7_usb.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.3.2.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.5.2.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.3 26-Dec-2020  skrll G/C
 1.2 24-Jul-2019  hkenken branches: 1.2.10;
i.MX USB host code re-arrangement.
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.18; 1.1.22;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.22.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 17-May-2016  jdolecek file imx7_usbreg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_usbreg.h was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2.10.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.5 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.4 15-Jan-2020  jmcneill branches: 1.4.6;
Add support for NXP i.MX 8M Dual/8M QuadLite/8M Quad family SoCs.
 1.3 24-Jul-2019  hkenken branches: 1.3.4;
Modified i.MX GPIO control module and PCIe module.

+ Add imxpcie.c
imx PCIe common driver
 1.2 26-Oct-2017  ryo branches: 1.2.2; 1.2.6;
fix typo
 1.1 17-May-2016  ryo branches: 1.1.2;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_usdhc.c was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2.6.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.2.2.2 03-Dec-2017  jdolecek update from HEAD
 1.2.2.1 26-Oct-2017  jdolecek file imx7_usdhc.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.3.4.1 17-Jan-2020  ad Sync with head.
 1.4.6.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.18; 1.1.34;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 17-May-2016  jdolecek file imx7_wdog.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7_wdog.c was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.18; 1.1.34;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.34.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 17-May-2016  jdolecek file imx7reg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7reg.h was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.4 26-Dec-2020  skrll G/C
 1.3 17-Mar-2018  ryo branches: 1.3.14;
move from sys/arch/arm/arm32/armv7_generic_dma.c to sys/arch/arm/arm/arm_generic_dma.c,
and change variable name from armv7_generic_dma_tag to arm_generic_dma_tag

no functional change. (preliminary changes for merging aarch64)
 1.2 17-Aug-2017  hkenken branches: 1.2.2; 1.2.4;
Use armv7_generic_[dma|bs]_tag.
 1.1 17-May-2016  ryo branches: 1.1.2;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.2.3 28-Aug-2017  skrll Sync with HEAD
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imx7var.h was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2.4.1 22-Mar-2018  pgoyette Synch with HEAD, resolve conflicts
 1.2.2.2 03-Dec-2017  jdolecek update from HEAD
 1.2.2.1 17-Aug-2017  jdolecek file imx7var.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.3.14.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.4 27-Sep-2022  skrll Remove unnecessary sys/malloc.h include
 1.3 18-Sep-2012  matt Add bounce buffer support for ARM bus_dma(9). Add macros to help initialize
bus_dma_tag structures.
 1.2 01-Jul-2011  dyoung branches: 1.2.2; 1.2.12;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.1 13-Nov-2010  bsh branches: 1.1.2; 1.1.8;
i.MX51 support by SHIMIZU Ryo, Hashimoto Kenichi, and me.
 1.1.8.2 05-Mar-2011  rmind sync with head
 1.1.8.1 13-Nov-2010  rmind file imx_dma.c was added on branch rmind-uvmplock on 2011-03-05 20:49:35 +0000
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imx_dma.c was added on branch uebayasi-xip on 2010-11-15 14:38:22 +0000
 1.2.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.2.2.1 30-Oct-2012  yamt sync with head
 1.1 21-Dec-2015  hkenken branches: 1.1.2; 1.1.18;
Rewritten to take advantage of genfb(4).
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 21-Dec-2015  jdolecek file imx_genfb.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.2.1 21-Dec-2015  skrll file imx_genfb.c was added on branch nick-nhusb on 2015-12-27 12:09:30 +0000
 1.10 02-Oct-2025  skrll Trailing whitespace.
 1.9 27-Sep-2022  skrll Remove unnecessary sys/malloc.h include
 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 27-Oct-2012  chs branches: 1.6.52;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.5 26-Jul-2011  dyoung branches: 1.5.2; 1.5.12;
Don't set the iobase and iosize members of pcmciabus_attach_args because
they're not used in any meaningful way.
 1.4 01-Jul-2011  dyoung #include <sys/bus.h> instead of <machine/bus.h>.
 1.3 30-Jun-2008  perry __FUNCTION__ -> __func__
 1.2 27-Apr-2008  matt branches: 1.2.2; 1.2.4;
Merge kernel changes in matt-armv6 to HEAD.
 1.1 11-Sep-2007  matt branches: 1.1.2; 1.1.20; 1.1.22; 1.1.24;
file imx_pcic.c was initially added on branch matt-armv6.
 1.1.24.2 04-May-2009  yamt sync with head.
 1.1.24.1 16-May-2008  yamt sync with head.
 1.1.22.1 18-May-2008  yamt sync with head.
 1.1.20.2 02-Jul-2008  mjf Sync with HEAD.
 1.1.20.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.2.1 11-Sep-2007  matt Initial support for Freescale i.MX31 (ARM1136).
 1.2.4.1 03-Jul-2008  simonb Sync with head.
 1.2.2.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.5.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.5.2.1 30-Oct-2012  yamt sync with head
 1.6.52.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.7.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.3 27-Oct-2012  chs split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.2 27-Apr-2008  matt branches: 1.2.34; 1.2.44;
Merge kernel changes in matt-armv6 to HEAD.
 1.1 11-Sep-2007  matt branches: 1.1.2; 1.1.20; 1.1.22; 1.1.24;
file imx_pcic.h was initially added on branch matt-armv6.
 1.1.24.1 16-May-2008  yamt sync with head.
 1.1.22.1 18-May-2008  yamt sync with head.
 1.1.20.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.2.1 11-Sep-2007  matt Initial support for Freescale i.MX31 (ARM1136).
 1.2.44.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.2.34.1 30-Oct-2012  yamt sync with head
 1.7 21-Apr-2023  skrll Trailing whitespace
 1.6 16-Mar-2018  ryo use designated initializer to make adaptability and flexibility for changing struct bus_space.
no functional change.
 1.5 01-Sep-2012  matt branches: 1.5.38;
Use PMAP_NOCACHE
 1.4 01-Sep-2012  matt Use PMAP_NOCACHE, add stream methods.
 1.3 01-Jul-2011  dyoung branches: 1.3.2;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.2 13-Nov-2010  bsh branches: 1.2.2; 1.2.8;
rename imx31_bs_tag as imx_bs_tag to share it with imx51.
 1.1 13-Nov-2010  bsh rename imx31_space.c as imx_space.c
 1.2.8.2 05-Mar-2011  rmind sync with head
 1.2.8.1 13-Nov-2010  rmind file imx_space.c was added on branch rmind-uvmplock on 2011-03-05 20:49:35 +0000
 1.2.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.2.2.1 13-Nov-2010  uebayasi file imx_space.c was added on branch uebayasi-xip on 2010-11-15 14:38:22 +0000
 1.3.2.1 30-Oct-2012  yamt sync with head
 1.5.38.1 22-Mar-2018  pgoyette Synch with HEAD, resolve conflicts
 1.9 29-May-2020  rin For struct timecounter, use C99 initializers.
Compile tested. No functional changes intended.
 1.8 24-Jul-2019  hkenken No functional change.
 1.7 25-Jul-2014  hkenken branches: 1.7.28;
Add support i.MX50x
* i.MX50 series is e-ink e-reader processor.
 1.6 20-May-2012  matt branches: 1.6.2; 1.6.12;
Fix call of imxclock. Patch from PR/45359.
 1.5 17-Apr-2012  bsh driver for i.MX51 Clock Controller Module.
from Kenichi Hashimoto.

Currently used only to get peripheral clock frequencies.
 1.4 01-Jul-2011  dyoung branches: 1.4.2; 1.4.6;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.3 13-Nov-2010  bsh driver to use EPIT as system clock for i.MX31 and i.MX51,
by Hashimoto Kenichi.
 1.2 27-Apr-2008  matt branches: 1.2.22;
Merge kernel changes in matt-armv6 to HEAD.
 1.1 11-Sep-2007  matt branches: 1.1.2; 1.1.20; 1.1.22; 1.1.24;
file imxclock.c was initially added on branch matt-armv6.
 1.1.24.1 16-May-2008  yamt sync with head.
 1.1.22.1 18-May-2008  yamt sync with head.
 1.1.20.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.2.2 16-Apr-2008  cliff #ifdef out microtime (is in kern_tc.c now) to allow compiling
support for timer/counters is still TBD
 1.1.2.1 11-Sep-2007  matt Initial support for Freescale i.MX31 (ARM1136).
 1.2.22.1 05-Mar-2011  rmind sync with head
 1.4.6.2 02-Jun-2012  mrg sync to latest -current.
 1.4.6.1 29-Apr-2012  mrg sync to latest -current.
 1.4.2.1 23-May-2012  yamt sync with head.
 1.6.12.1 10-Aug-2014  tls Rebase.
 1.6.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.7.28.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.2 17-Apr-2012  bsh driver for i.MX51 Clock Controller Module.
from Kenichi Hashimoto.

Currently used only to get peripheral clock frequencies.
 1.1 13-Nov-2010  bsh branches: 1.1.2; 1.1.8; 1.1.12; 1.1.16;
driver to use EPIT as system clock for i.MX31 and i.MX51,
by Hashimoto Kenichi.
 1.1.16.1 29-Apr-2012  mrg sync to latest -current.
 1.1.12.1 23-May-2012  yamt sync with head.
 1.1.8.2 05-Mar-2011  rmind sync with head
 1.1.8.1 13-Nov-2010  rmind file imxclockvar.h was added on branch rmind-uvmplock on 2011-03-05 20:49:35 +0000
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imxclockvar.h was added on branch uebayasi-xip on 2010-11-15 14:38:22 +0000
 1.3 01-Aug-2023  andvar fix various typos in comments.
 1.2 27-Sep-2019  hkenken Add i.MX SPI device type.

IMX31_CSPI
IMX35_CSPI
IMX51_ECSPI
 1.1 22-Mar-2014  hkenken branches: 1.1.4; 1.1.6; 1.1.10; 1.1.36;
Add SPI driver.
i.MX51 have two eCSPI, and one CSPI.
 1.1.36.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 22-Mar-2014  tls file imxcspireg.h was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 22-Mar-2014  yamt file imxcspireg.h was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 22-Mar-2014  rmind file imxcspireg.h was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.4 01-Aug-2023  andvar fix various typos in comments.
 1.3 26-Dec-2019  msaitoh s/lenght/length/
 1.2 27-Sep-2019  hkenken Add i.MX SPI device type.

IMX31_CSPI
IMX35_CSPI
IMX51_ECSPI
 1.1 22-Mar-2014  hkenken branches: 1.1.4; 1.1.6; 1.1.10; 1.1.36;
Add SPI driver.
i.MX51 have two eCSPI, and one CSPI.
 1.1.36.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.36.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 22-Mar-2014  tls file imxecspireg.h was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 22-Mar-2014  yamt file imxecspireg.h was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 22-Mar-2014  rmind file imxecspireg.h was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.2 17-Apr-2012  bsh add bit definitions for i.MX51 EPIT
 1.1 13-Nov-2010  bsh branches: 1.1.2; 1.1.8; 1.1.12; 1.1.16;
driver to use EPIT as system clock for i.MX31 and i.MX51,
by Hashimoto Kenichi.
 1.1.16.1 29-Apr-2012  mrg sync to latest -current.
 1.1.12.1 23-May-2012  yamt sync with head.
 1.1.8.2 05-Mar-2011  rmind sync with head
 1.1.8.1 13-Nov-2010  rmind file imxepitreg.h was added on branch rmind-uvmplock on 2011-03-05 20:49:35 +0000
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imxepitreg.h was added on branch uebayasi-xip on 2010-11-15 14:38:22 +0000
 1.11 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.10 24-Apr-2021  thorpej branches: 1.10.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.9 15-Jun-2020  ad branches: 1.9.4;
Use sys/cpu.h so that curcpu defined in terms of curlwp->l_cpu works too.
 1.8 15-Jan-2020  jmcneill Add support for NXP i.MX 8M Dual/8M QuadLite/8M Quad family SoCs.
 1.7 27-Nov-2019  hkenken branches: 1.7.2;
Remove GPIO driver attach defer.
 1.6 24-Jul-2019  hkenken Modified i.MX GPIO control module and PCIe module.

+ Add imxpcie.c
imx PCIe common driver
 1.5 25-Sep-2014  ryo branches: 1.5.20;
add support i.MX6 and NITROGEN6X evaluation board
 1.4 22-Mar-2014  hkenken * GPIO interrupts of i.MX5 are divided into two groups.
add IMX_GPIO_INTR_SPLIT option
* Support GPIO both edge trigger interrupt.
 1.3 27-Oct-2012  chs branches: 1.3.2;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.2 01-Jul-2011  dyoung branches: 1.2.2; 1.2.12;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.1 30-Nov-2010  bsh branches: 1.1.6;
Support GPIO, IOMUX, and USB on i.MX51.
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 30-Nov-2010  rmind file imxgpio.c was added on branch rmind-uvmplock on 2011-03-05 20:49:35 +0000
 1.2.12.3 03-Dec-2017  jdolecek update from HEAD
 1.2.12.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.2.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.2.2.1 30-Oct-2012  yamt sync with head
 1.3.2.1 18-May-2014  rmind sync with head
 1.5.20.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.7.2.1 17-Jan-2020  ad Sync with head.
 1.9.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.10.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.2 30-Nov-2010  bsh branches: 1.2.6;
Support GPIO, IOMUX, and USB on i.MX51.
 1.1 13-Nov-2010  bsh branches: 1.1.2;
extract GPIO register definitions from imx31reg.h to share them with
i.MX51
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imxgpioreg.h was added on branch uebayasi-xip on 2010-11-15 14:38:22 +0000
 1.2.6.2 05-Mar-2011  rmind sync with head
 1.2.6.1 30-Nov-2010  rmind file imxgpioreg.h was added on branch rmind-uvmplock on 2011-03-05 20:49:35 +0000
 1.3 15-Jan-2020  jmcneill Add support for NXP i.MX 8M Dual/8M QuadLite/8M Quad family SoCs.
 1.2 24-Jul-2019  hkenken branches: 1.2.4;
Modified i.MX GPIO control module and PCIe module.

+ Add imxpcie.c
imx PCIe common driver
 1.1 30-Nov-2010  bsh branches: 1.1.6; 1.1.62;
Support GPIO, IOMUX, and USB on i.MX51.
 1.1.62.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 30-Nov-2010  rmind file imxgpiovar.h was added on branch rmind-uvmplock on 2011-03-05 20:49:35 +0000
 1.2.4.1 17-Jan-2020  ad Sync with head.
 1.4 22-Jul-2022  thorpej Normalize how motoi2c controllers are attached.
 1.3 30-Jul-2019  hkenken Add IIC support.
 1.2 27-Mar-2015  hkenken branches: 1.2.18;
Rewritten to take advantage of motoi2c code.
 1.1 25-Jul-2014  hkenken branches: 1.1.2; 1.1.6; 1.1.8;
Add i2c driver for i.MX.
 1.1.8.1 06-Apr-2015  skrll Sync with HEAD
 1.1.6.3 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 25-Jul-2014  tls file imxi2c.c was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.2.2 10-Aug-2014  tls Rebase.
 1.1.2.1 25-Jul-2014  tls file imxi2c.c was added on branch tls-earlyentropy on 2014-08-10 06:53:51 +0000
 1.2.18.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.3 27-Mar-2015  hkenken Rewritten to take advantage of motoi2c code.
 1.2 25-Jul-2014  hkenken branches: 1.2.4;
Add i2c driver for i.MX.
 1.1 13-Nov-2010  bsh branches: 1.1.2; 1.1.8; 1.1.22; 1.1.36;
i.MX51 support by SHIMIZU Ryo, Hashimoto Kenichi, and me.
 1.1.36.1 10-Aug-2014  tls Rebase.
 1.1.22.2 03-Dec-2017  jdolecek update from HEAD
 1.1.22.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.8.2 05-Mar-2011  rmind sync with head
 1.1.8.1 13-Nov-2010  rmind file imxi2creg.h was added on branch rmind-uvmplock on 2011-03-05 20:49:35 +0000
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imxi2creg.h was added on branch uebayasi-xip on 2010-11-15 14:38:22 +0000
 1.2.4.1 06-Apr-2015  skrll Sync with HEAD
 1.4 22-Jul-2022  thorpej Normalize how motoi2c controllers are attached.
 1.3 20-Jun-2019  hkenken Add support for clk subsystem in imx6 CCM driver.
 1.2 27-Mar-2015  hkenken branches: 1.2.18;
Rewritten to take advantage of motoi2c code.
 1.1 25-Jul-2014  hkenken branches: 1.1.2; 1.1.6; 1.1.8;
Add i2c driver for i.MX.
 1.1.8.1 06-Apr-2015  skrll Sync with HEAD
 1.1.6.3 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 25-Jul-2014  tls file imxi2cvar.h was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.2.2 10-Aug-2014  tls Rebase.
 1.1.2.1 25-Jul-2014  tls file imxi2cvar.h was added on branch tls-earlyentropy on 2014-08-10 06:53:51 +0000
 1.2.18.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.2 30-Nov-2010  bsh branches: 1.2.6;
Support GPIO, IOMUX, and USB on i.MX51.
 1.1 13-Nov-2010  bsh branches: 1.1.2;
i.MX51 support by SHIMIZU Ryo, Hashimoto Kenichi, and me.
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imxkppreg.h was added on branch uebayasi-xip on 2010-11-15 14:38:22 +0000
 1.2.6.2 05-Mar-2011  rmind sync with head
 1.2.6.1 30-Nov-2010  rmind file imxkppreg.h was added on branch rmind-uvmplock on 2011-03-05 20:49:35 +0000
 1.4 23-Dec-2020  skrll Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.3 16-Oct-2019  hkenken branches: 1.3.8; 1.3.10;
Fixed bug when using PCIe external clock.
 1.2 02-Sep-2019  hkenken Add support for imx6qp-pcie.

+ Add vpcie-supply support
+ Add ext_osc support

Tested on SABRESD i.MX 6QP.
 1.1 24-Jul-2019  hkenken Modified i.MX GPIO control module and PCIe module.

+ Add imxpcie.c
imx PCIe common driver
 1.3.10.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.3.8.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.3.8.1 16-Oct-2019  martin file imxpcie.c was added on branch phil-wifi on 2020-04-13 08:03:35 +0000
 1.4 07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.3 16-Oct-2019  hkenken branches: 1.3.8;
Fixed bug when using PCIe external clock.
 1.2 02-Sep-2019  hkenken Add support for imx6qp-pcie.

+ Add vpcie-supply support
+ Add ext_osc support

Tested on SABRESD i.MX 6QP.
 1.1 24-Jul-2019  hkenken Modified i.MX GPIO control module and PCIe module.

+ Add imxpcie.c
imx PCIe common driver
 1.3.8.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.3.8.1 16-Oct-2019  martin file imxpciereg.h was added on branch phil-wifi on 2020-04-13 08:03:35 +0000
 1.3 16-Oct-2019  hkenken branches: 1.3.8;
Fixed bug when using PCIe external clock.
 1.2 02-Sep-2019  hkenken Add support for imx6qp-pcie.

+ Add vpcie-supply support
+ Add ext_osc support

Tested on SABRESD i.MX 6QP.
 1.1 24-Jul-2019  hkenken Modified i.MX GPIO control module and PCIe module.

+ Add imxpcie.c
imx PCIe common driver
 1.3.8.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.3.8.1 16-Oct-2019  martin file imxpcievar.h was added on branch phil-wifi on 2020-04-13 08:03:35 +0000
 1.2 20-May-2020  hkenken Use kernel API of PWM subsystems for i.MX PWM driver.
 1.1 06-May-2014  hkenken branches: 1.1.2; 1.1.4; 1.1.6; 1.1.10;
Add support for LCD Backlight control on NetWalker.
+ use imxpwm driver (PWM control driver for i.MX)
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 06-May-2014  tls file imxpwm.c was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 10-Aug-2014  tls Rebase.
 1.1.6.1 06-May-2014  tls file imxpwm.c was added on branch tls-earlyentropy on 2014-08-10 06:53:51 +0000
 1.1.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.1.4.1 06-May-2014  yamt file imxpwm.c was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.2.2 18-May-2014  rmind sync with head
 1.1.2.1 06-May-2014  rmind file imxpwm.c was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.2 20-May-2020  hkenken Use kernel API of PWM subsystems for i.MX PWM driver.
 1.1 06-May-2014  hkenken branches: 1.1.2; 1.1.4; 1.1.6; 1.1.10;
Add support for LCD Backlight control on NetWalker.
+ use imxpwm driver (PWM control driver for i.MX)
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 06-May-2014  tls file imxpwmreg.h was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 10-Aug-2014  tls Rebase.
 1.1.6.1 06-May-2014  tls file imxpwmreg.h was added on branch tls-earlyentropy on 2014-08-10 06:53:51 +0000
 1.1.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.1.4.1 06-May-2014  yamt file imxpwmreg.h was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.2.2 18-May-2014  rmind sync with head
 1.1.2.1 06-May-2014  rmind file imxpwmreg.h was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.2 20-May-2020  hkenken Use kernel API of PWM subsystems for i.MX PWM driver.
 1.1 06-May-2014  hkenken branches: 1.1.2; 1.1.4; 1.1.6; 1.1.10;
Add support for LCD Backlight control on NetWalker.
+ use imxpwm driver (PWM control driver for i.MX)
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 06-May-2014  tls file imxpwmvar.h was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 10-Aug-2014  tls Rebase.
 1.1.6.1 06-May-2014  tls file imxpwmvar.h was added on branch tls-earlyentropy on 2014-08-10 06:53:51 +0000
 1.1.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.1.4.1 06-May-2014  yamt file imxpwmvar.h was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.2.2 18-May-2014  rmind sync with head
 1.1.2.1 06-May-2014  rmind file imxpwmvar.h was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.3 07-Oct-2024  andvar s/periperal/peripheral/ in comments.
 1.2 25-Jul-2014  hkenken branches: 1.2.64;
Add support i.MX50x
* i.MX50 series is e-ink e-reader processor.
 1.1 13-Nov-2010  bsh branches: 1.1.2; 1.1.8; 1.1.22; 1.1.36;
i.MX51 support by SHIMIZU Ryo, Hashimoto Kenichi, and me.
 1.1.36.1 10-Aug-2014  tls Rebase.
 1.1.22.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.8.2 05-Mar-2011  rmind sync with head
 1.1.8.1 13-Nov-2010  rmind file imxsdmareg.h was added on branch rmind-uvmplock on 2011-03-05 20:49:35 +0000
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imxsdmareg.h was added on branch uebayasi-xip on 2010-11-15 14:38:22 +0000
 1.2.64.1 02-Aug-2025  perseant Sync with HEAD
 1.3 07-Sep-2025  thorpej Change todr_chip_handle::cookie -> todr_chip_handle::todr_dev, and
make it a device_t. Upcoming functional changes will require the
device_t associated with a TODR device.

Change todr_chip_handle::bus_cookie -> todr_chip_handle::todr_devaux.
Nothing was using the old field, but I decided to keep it around just
in cause something needs it in the future.

And with these largely mechanical yet semantically meaningful changes,
thus spake the Oracle: "Welcome to NetBSD 11.99.2."
 1.2 07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.18;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 17-May-2016  jdolecek file imxsnvs.c was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imxsnvs.c was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.2 07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.18;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 17-May-2016  jdolecek file imxsnvsreg.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imxsnvsreg.h was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.1 17-May-2016  ryo branches: 1.1.2; 1.1.18;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 17-May-2016  jdolecek file imxsnvsvar.h was added on branch tls-maxphys on 2017-12-03 11:35:53 +0000
 1.1.2.2 29-May-2016  skrll Sync with HEAD
 1.1.2.1 17-May-2016  skrll file imxsnvsvar.h was added on branch nick-nhusb on 2016-05-29 08:44:16 +0000
 1.15 10-Sep-2025  thorpej Garbage-collect fdtbus_attach_spibus(). spibus_attach() does everything
now.
 1.14 10-Sep-2025  thorpej Register the SPI controller with FDT in spi_attach(), not in each
driver.
 1.13 10-Sep-2025  thorpej It is not necessary to pass the phandle separately to fdtbus_spi_*(); it
can be retrieved from the device_t.
 1.12 10-Sep-2025  thorpej Don't bother registering a function that returns a SPI controller; just
register the controller directly.
 1.11 10-Sep-2025  thorpej Encapsulate what's needed to attach a SPI bus into a spibus_attach()
inline.
 1.10 17-Aug-2021  andvar fix multiplei repetitive typos in comments, messages and documentation. mainly because copy paste code big amount of files are affected.
 1.9 07-Aug-2021  thorpej branches: 1.9.2;
Merge thorpej-cfargs2.
 1.8 24-Apr-2021  thorpej branches: 1.8.2; 1.8.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.7 15-Nov-2019  hkenken branches: 1.7.10;
Keep SCLK high in the inactive state. (SPI modes 2 and 3 only)
 1.6 27-Sep-2019  hkenken Add i.MX SPI device type.

IMX31_CSPI
IMX35_CSPI
IMX51_ECSPI
 1.5 19-Aug-2019  hkenken Add support SPI driver for i.MX6.
 1.4 13-Aug-2019  tnn ensure spibus_attach_args is zero'ed
 1.3 07-Aug-2017  hkenken branches: 1.3.4;
Add support Microchip SST25VF016B.
- Fixed imxspi send and receive bugs.
 1.2 29-Mar-2014  hkenken branches: 1.2.4; 1.2.6; 1.2.10; 1.2.12;
Add optical joystick support for NetWalker.
+ OJ6SH-T25 (Sharp "Optical TOUCH CRUISER" sensor)
+ 2 Mouse buttons (GPIO)
 1.1 22-Mar-2014  hkenken Add SPI driver.
i.MX51 have two eCSPI, and one CSPI.
 1.2.12.1 28-Aug-2017  skrll Sync with HEAD
 1.2.10.3 03-Dec-2017  jdolecek update from HEAD
 1.2.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.10.1 29-Mar-2014  tls file imxspi.c was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.2.6.2 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.6.1 29-Mar-2014  yamt file imxspi.c was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.2.4.2 18-May-2014  rmind sync with head
 1.2.4.1 29-Mar-2014  rmind file imxspi.c was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.3.4.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.7.10.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.8.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.8.2.2 19-May-2021  thorpej - As with i2c, just register the spi_controller directly.
- fdtbus_attach_spibus() is no longer anything other than a wrapper
around config_found(); just get rid of it and make its callers
look like all of the other SPI controller drivers.
 1.8.2.1 18-May-2021  thorpej Pass the controller devhandle along to the "spi" instance.
 1.9.2.2 18-Jan-2022  thorpej G/C fdtbus_register_spi_controller(); it serves no purpose in the new
universe.
 1.9.2.1 09-Aug-2021  thorpej Port over the changes from thorpej-i2c-spi-conf to thorpej-i2c-spi-conf2,
which is based on a newer HEAD revision.
 1.1 22-Mar-2014  hkenken branches: 1.1.4; 1.1.6; 1.1.10;
Add SPI driver.
i.MX51 have two eCSPI, and one CSPI.
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 22-Mar-2014  tls file imxspireg.h was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 22-Mar-2014  yamt file imxspireg.h was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 22-Mar-2014  rmind file imxspireg.h was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.4 10-Sep-2025  thorpej It is not necessary to pass the phandle separately to fdtbus_spi_*(); it
can be retrieved from the device_t.
 1.3 27-Sep-2019  hkenken Add i.MX SPI device type.

IMX31_CSPI
IMX35_CSPI
IMX51_ECSPI
 1.2 19-Aug-2019  hkenken Add support SPI driver for i.MX6.
 1.1 22-Mar-2014  hkenken branches: 1.1.4; 1.1.6; 1.1.10; 1.1.36;
Add SPI driver.
i.MX51 have two eCSPI, and one CSPI.
 1.1.36.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 22-Mar-2014  tls file imxspivar.h was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 22-Mar-2014  yamt file imxspivar.h was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 22-Mar-2014  rmind file imxspivar.h was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.1 13-Nov-2010  bsh branches: 1.1.2; 1.1.8;
i.MX51 support by SHIMIZU Ryo, Hashimoto Kenichi, and me.
 1.1.8.2 05-Mar-2011  rmind sync with head
 1.1.8.1 13-Nov-2010  rmind file imxssireg.h was added on branch rmind-uvmplock on 2011-03-05 20:49:35 +0000
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imxssireg.h was added on branch uebayasi-xip on 2010-11-15 14:38:22 +0000
 1.30 26-Oct-2022  riastradh ddb/db_active.h: New home for extern db_active.

This can be included unconditionally, and db_active can then be
queried unconditionally; if DDB is not in the kernel, then db_active
is a constant zero. Reduces need for #include opt_ddb.h, #ifdef DDB.
 1.29 20-May-2022  skrll Add the character read in as part of imxuart_common_putc into the
readahead buffer

port-arm/45354: no character is put in the read-ahead buffer in a console code of arch/arm/imx/imxuart.c
 1.28 20-May-2022  skrll Use a macro. Part of

port-arm/45354: no character is put in the read-ahead buffer in a console code of arch/arm/imx/imxuart.c
 1.27 08-Mar-2021  mlelstv always re-read status register in the loop.
 1.26 20-Nov-2020  thorpej malloc(9) -> kmem(9)
 1.25 20-May-2020  hkenken branches: 1.25.2;
i.MX support merged into GENERIC kernel.
 1.24 15-Jan-2020  jmcneill Add support for NXP i.MX 8M Dual/8M QuadLite/8M Quad family SoCs.
 1.23 12-Jan-2020  jmcneill Support imxuart_freq=0 (use existing settings)
 1.22 10-Nov-2019  chs branches: 1.22.2;
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.21 20-Jun-2018  hkenken branches: 1.21.2;
Move intr_establish() before imxuart_attach_subr().
 1.20 08-Sep-2017  hkenken branches: 1.20.2;
- Move CFATTACH_DECL_NEW() from common uart driver.
- Rename : imxuart_cons_attach() -> imxuart_cnattach()
 1.19 30-Jul-2015  ryo fix to compile unless defined IMXUARTCONSOLE
 1.18 29-Jul-2015  ryo initialize uart register when it is not a console.
 1.17 13-Apr-2015  riastradh MD rnd.h cleanups. Please let me know if I broke anything!
 1.16 15-Nov-2014  christos branches: 1.16.2;
centralize the call unit / dialout macros
 1.15 25-Sep-2014  ryo add support i.MX6 and NITROGEN6X evaluation board
 1.14 10-Aug-2014  tls Merge tls-earlyentropy branch into HEAD.
 1.13 25-Jul-2014  dholland Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.
 1.12 25-Jul-2014  hkenken Delete unused variables for new gcc.
 1.11 16-Mar-2014  dholland branches: 1.11.2;
Change (mostly mechanically) every cdevsw/bdevsw I can find to use
designated initializers.

I have not built every extant kernel so I have probably broken at
least one build; however I've also found and fixed some wrong
cdevsw/bdevsw entries so even if so I think we come out ahead.
 1.10 01-May-2013  mlelstv branches: 1.10.4;
For a polled console incoming characters are buffered on output.
The buffer is never passed to the regular tty routines and can
survive from early boot to halt where it is read by the "press
any continue to reboot" loops.
As a workaround, just kill the read-ahead buffer when switching
from and to polled mode.
 1.9 02-Feb-2012  tls branches: 1.9.6;
Entropy-pool implementation move and cleanup.

1) Move core entropy-pool code and source/sink/sample management code
to sys/kern from sys/dev.

2) Remove use of NRND as test for presence of entropy-pool code throughout
source tree.

3) Remove use of RND_ENABLED in device drivers as microoptimization to
avoid expensive operations on disabled entropy sources; make the
rnd_add calls do this directly so all callers benefit.

4) Fix bug in recent rnd_add_data()/rnd_add_uint32() changes that might
have lead to slight entropy overestimation for some sources.

5) Add new source types for environmental sensors, power sensors, VM
system events, and skew between clocks, with a sample implementation
for each.

ok releng to go in before the branch due to the difficulty of later
pullup (widespread #ifdef removal and moved files). Tested with release
builds on amd64 and evbarm and live testing on amd64.
 1.8 24-Apr-2011  rmind branches: 1.8.4; 1.8.8;
Rename ttymalloc() to tty_alloc(), and ttyfree() to tty_free() for
consistency. Remove some unnecessary malloc.h inclusions as well.
 1.7 14-Jan-2011  rmind branches: 1.7.2;
Retire struct user, remove sys/user.h inclusions. Note sys/user.h header
as obsolete. Remove USER_TO_UAREA/UAREA_TO_USER macros.

Various #include fixes and review by matt@.
 1.6 27-Nov-2010  bsh use device_t correctly for imxuart.
 1.5 13-Nov-2010  bsh UART driver for i.MX31 and 51.
 1.4 13-Nov-2010  bsh rename imx31_bs_tag as imx_bs_tag to share it with imx51.
 1.3 30-Jun-2008  perry branches: 1.3.18;
__FUNCTION__ -> __func__
 1.2 27-Apr-2008  matt branches: 1.2.2; 1.2.4;
Merge kernel changes in matt-armv6 to HEAD.
 1.1 11-Sep-2007  matt branches: 1.1.2; 1.1.20; 1.1.22; 1.1.24;
file imxuart.c was initially added on branch matt-armv6.
 1.1.24.2 04-May-2009  yamt sync with head.
 1.1.24.1 16-May-2008  yamt sync with head.
 1.1.22.1 18-May-2008  yamt sync with head.
 1.1.20.2 02-Jul-2008  mjf Sync with HEAD.
 1.1.20.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.2.2 12-Sep-2007  matt Minor cleanup. Actually match addr in match routine.
 1.1.2.1 11-Sep-2007  matt Initial support for Freescale i.MX31 (ARM1136).
 1.2.4.1 03-Jul-2008  simonb Sync with head.
 1.2.2.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.3.18.2 31-May-2011  rmind sync with head
 1.3.18.1 05-Mar-2011  rmind sync with head
 1.7.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.8.8.1 18-Feb-2012  mrg merge to -current.
 1.8.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.8.4.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 23-Jun-2013  tls resync from head
 1.10.4.1 18-May-2014  rmind sync with head
 1.11.2.2 10-Aug-2014  tls Rebase.
 1.11.2.1 07-Apr-2014  tls Be a little more clear and consistent about harvesting entropy from devices:

1) deprecate RND_FLAG_NO_ESTIMATE

2) define RND_FLAG_COLLECT_TIME, RND_FLAG_COLLECT_VALUE

3) define RND_FLAG_ESTIMATE_TIME, RND_FLAG_ESTIMATE_VALUE

4) define RND_FLAG_DEFAULT: RND_FLAG_COLLECT_TIME|
RND_FLAG_COLLECT_VALUE|RND_FLAG_ESTIMATE_TIME

5) Make entropy harvesting from environmental sensors a little more generic
and remove it from individual sensor drivers.

6) Remove individual open-coded delta-estimators for values from a few
places in the tree (uvm, environmental drivers).

7) 0 -> RND_FLAG_DEFAULT, actually gather entropy from various drivers
that had stubbed out code, other minor cleanups.
 1.16.2.2 22-Sep-2015  skrll Sync with HEAD
 1.16.2.1 06-Jun-2015  skrll Sync with HEAD
 1.20.2.1 25-Jun-2018  pgoyette Sync with HEAD
 1.21.2.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.21.2.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.22.2.1 17-Jan-2020  ad Sync with head.
 1.25.2.2 03-Apr-2021  thorpej Sync with HEAD.
 1.25.2.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.5 01-Sep-2012  matt Add __BITS to asm.h (remove from imxuartreg.h)
Add L1_S_AP_KR to genassym.h
Use L1_S_AP_* in omap_start.S and don't include pmap.h
 1.4 13-Nov-2010  bsh branches: 1.4.8;
UART driver for i.MX31 and 51.
 1.3 17-Sep-2009  bsh branches: 1.3.4;
fix a typo of register bit name.
 1.2 27-Apr-2008  matt Merge kernel changes in matt-armv6 to HEAD.
 1.1 11-Sep-2007  matt branches: 1.1.2; 1.1.20; 1.1.22; 1.1.24;
file imxuartreg.h was initially added on branch matt-armv6.
 1.1.24.2 11-Mar-2010  yamt sync with head
 1.1.24.1 16-May-2008  yamt sync with head.
 1.1.22.1 18-May-2008  yamt sync with head.
 1.1.20.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.2.1 11-Sep-2007  matt Initial support for Freescale i.MX31 (ARM1136).
 1.3.4.1 05-Mar-2011  rmind sync with head
 1.4.8.1 30-Oct-2012  yamt sync with head
 1.6 08-Sep-2017  hkenken - Move CFATTACH_DECL_NEW() from common uart driver.
- Rename : imxuart_cons_attach() -> imxuart_cnattach()
 1.5 27-Oct-2012  chs split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.4 27-Nov-2010  bsh branches: 1.4.8; 1.4.18;
use device_t correctly for imxuart.
 1.3 13-Nov-2010  bsh UART driver for i.MX31 and 51.
 1.2 27-Apr-2008  matt branches: 1.2.22;
Merge kernel changes in matt-armv6 to HEAD.
 1.1 11-Sep-2007  matt branches: 1.1.2; 1.1.20; 1.1.22; 1.1.24;
file imxuartvar.h was initially added on branch matt-armv6.
 1.1.24.1 16-May-2008  yamt sync with head.
 1.1.22.1 18-May-2008  yamt sync with head.
 1.1.20.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.2.1 11-Sep-2007  matt Initial support for Freescale i.MX31 (ARM1136).
 1.2.22.1 05-Mar-2011  rmind sync with head
 1.4.18.2 03-Dec-2017  jdolecek update from HEAD
 1.4.18.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.4.8.1 30-Oct-2012  yamt sync with head
 1.19 04-May-2023  bouyer The i.mx6sx has 2 OTG and one host-only USB controller, while the 6q has
only one OTG.
Add a "uintptr_t data" argument to all sc_*_md_hook callbacks, which
gets the sc_md_hook_data value when called.
In imx6_usb.c use this to pass the number of OTG controllers to the callbacks.
imx6_usb_init() can then properly call init_otg() or init_h1() for unit 1.

In imx6_usb_attach(), test if there is a vbus-supply property in the fdt,
and enable the regulator if present.

Now the USB port of the UDOO Neo works.
 1.18 07-Aug-2021  thorpej branches: 1.18.6;
Merge thorpej-cfargs2.
 1.17 24-Apr-2021  thorpej branches: 1.17.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.16 23-Dec-2020  skrll branches: 1.16.2;
Tidyup the i.MX SoC support by

- Moving the FDTised code to sys/arch/arm/nxp to match the
sys/arch/{cpu}/{vendor} convention
- FDTise some more drivers
- Secure Non-Volatile Storage
- watchdog driver
- On chip OTP
- Match fsl,imx6dl
- Add some more drivers to GENERIC that will be supported by i.MX 6
boards
 1.15 26-Jul-2019  skrll branches: 1.15.10;
Fix builds
 1.14 24-Jul-2019  hkenken i.MX USB host code re-arrangement.
 1.13 09-Apr-2018  jakllsch branches: 1.13.2;
Stop potential misuse of vendor names and USB vendor IDs in root hub
device and string descriptors.

Firstly: Few vendors have identical PCI-SIG vendor IDs and USB-IF vendor
IDs. As such, using the PCI vendor ID as a USB vendor ID may trample
on whomever is allocated that USB vendor ID.

Secondly: The vendor of the host controller hardware implementation has
little to nothing to do with our usbroothub implementation. Thus we
should not potentially associate any problems therewith to such third
party.

This change will result in root hubs being identified by USB Vendor ID
0x0000. Root hub vendor string will now be "NetBSD" (or, specifically:
ostype). Product ID (0x0000) and product strings remain unchanged.
 1.12 17-May-2016  ryo branches: 1.12.16;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.11 23-Apr-2016  skrll 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.10 10-Sep-2015  skrll Trailing whitespace.
 1.9 10-Sep-2015  hkenken USBMODE register's initialization should be done in sc_vendor_init() after sending EHCI_CMD_HCRESET command.
 1.8 04-Sep-2015  skrll Correct a register name
 1.7 25-Sep-2014  ryo branches: 1.7.2;
add support i.MX6 and NITROGEN6X evaluation board
 1.6 25-Jul-2014  hkenken branches: 1.6.2; 1.6.6;
Add support i.MX50x
* i.MX50 series is e-ink e-reader processor.
 1.5 07-Oct-2013  matt branches: 1.5.2;
iMX233/OLinuXino changes from Petri Laskso.
See http://mail-index.netbsd.org/port-arm/2013/10/07/msg002042.html
 1.4 23-Nov-2012  matt branches: 1.4.2;
Enable ETTF.
 1.3 12-Nov-2012  skrll C99 types
 1.2 20-Jul-2012  matt branches: 1.2.2;
EHCI_USBINTR is 4 bytes long so use EOWRITE4
 1.1 30-Nov-2010  bsh branches: 1.1.6; 1.1.10;
Support GPIO, IOMUX, and USB on i.MX51.
 1.1.10.3 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.10.2 16-Jan-2013  yamt sync with (a bit old) head
 1.1.10.1 30-Oct-2012  yamt sync with head
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 30-Nov-2010  rmind file imxusb.c was added on branch rmind-uvmplock on 2011-03-05 20:49:35 +0000
 1.2.2.4 03-Dec-2017  jdolecek update from HEAD
 1.2.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.2.2 25-Feb-2013  tls resync with head
 1.2.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.4.2.1 18-May-2014  rmind sync with head
 1.5.2.1 10-Aug-2014  tls Rebase.
 1.6.6.1 06-Sep-2016  skrll First pass at netbsd-7 updated with USB code from HEAD
 1.6.2.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.7.2.5 29-May-2016  skrll Sync with HEAD
 1.7.2.4 22-Sep-2015  skrll Sync with HEAD
 1.7.2.3 05-Dec-2014  skrll Use int for return type for [eou]chi_init and motg_init.
 1.7.2.2 03-Dec-2014  skrll The grand renaming of structure members.

No functional change.
 1.7.2.1 03-Dec-2014  skrll Trailing whitespace.
 1.12.16.1 16-Apr-2018  pgoyette Sync with HEAD, resolve some conflicts
 1.13.2.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.15.10.1 03-Jan-2021  thorpej Sync w/ HEAD.
 1.16.2.1 21-Mar-2021  thorpej Give config_found() the same variadic arguments treatment as
config_search(). This commit only adds the CFARG_EOL sentinel
to the existing config_found() calls. Conversion of config_found_sm_loc()
and config_found_ia() call sites will be in subsequent commits.
 1.17.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.18.6.1 28-May-2023  martin Pull up following revision(s) (requested by bouyer in ticket #182):

sys/arch/arm/nxp/imx6_platform.c: revision 1.8 (via patch)
sys/arch/arm/nxp/imx6_platform.c: revision 1.9 (via patch)
sys/arch/arm/nxp/imx6_ccmvar.h: revision 1.2
sys/arch/arm/nxp/imx6_ccmvar.h: revision 1.3
distrib/sets/lists/dtb/ad.earmv7hf: revision 1.10
sys/arch/arm/nxp/imx6sx_clk.c: revision 1.1
sys/arch/arm/nxp/imx6_ccm.c: revision 1.3
sys/arch/arm/nxp/imx6sx_clk.c: revision 1.2
sys/arch/arm/nxp/imx6_ccm.c: revision 1.4
sys/arch/arm/nxp/imx6sx_clk.c: revision 1.3
sys/arch/arm/nxp/imx6_spi.c: revision 1.8
sys/arch/arm/nxp/imx_sdhc.c: revision 1.8
sys/arch/arm/imx/imxusb.c: revision 1.19
sys/arch/arm/nxp/imx6_usb.c: revision 1.7
sys/arch/arm/nxp/imx6_usb.c: revision 1.8
sys/arch/arm/nxp/files.imx: revision 1.3
sys/arch/arm/nxp/imx6_clk.c: revision 1.5
sys/arch/arm/nxp/imx6_clk.c: revision 1.6
sys/arch/arm/nxp/imx6_reg.h: revision 1.2
sys/arch/arm/nxp/imx6_gpc.c: revision 1.4
sys/arch/arm/imx/imx23_usb.c: revision 1.6
sys/dtb/arm/Makefile: revision 1.6
sys/arch/arm/imx/imxusbvar.h: revision 1.7
sys/arch/evbarm/conf/GENERIC: revision 1.119
sys/arch/arm/nxp/imx6_ccmreg.h: revision 1.2
sys/arch/arm/nxp/imx6_iomux.c: revision 1.3
sys/arch/arm/nxp/imx6_usbphy.c: revision 1.3
sys/arch/arm/nxp/imx6_pcie.c: revision 1.7

In preparation of imx6sx support, move imx6q-specific definitions from
imx6_ccm.c to imx6_clk.c, and prefix with IMX6Q/imx6q:
- Clock IDs and related struct imx_clock_id
- Clock Parents and Divider Tables
- struct imx6_clk
and related static functions

Add a pointer to struct imx6_clk, and it's size to imx6ccm_softc

Pass a pointer to imx6ccm_softc to all functions from imx6_ccm.c
NFCI

i.mx6sx CPU support in the CCM module: the clock tree si different from
the i.mx6q
- move i.mx6q-specific functions and data to imx6_clk.c
- add i.mx6sx specific imx6sx_clk.c
- add a imx6sxccm device
i.mx6sx platform support:
- the i.mx6sx has a third AIPS, so KERNEL_IO_IOREG map has to be larger
- the uart clock is at 24Mhz instead of 80.

Add i.mx6sx compatible entries to drivers that should work as is.

Fix typo, preventing i2c4 from attaching
remove commented out entries, leftover from the imx6q ccm code.
introduce imx6sx_platform_bootstrap(), which calls imx_platform_bootstrap()
and then checks for an "arm,cortex-a9-twd-timer" compatible entry in the
fdt. If not present, create one so that a9ptmr will attach.
We need this entry as this is the only timer we support for this platform,
but the upstream imx6sx.dtsi is missing the entry for it (and all A9 CPUs
have it anyway).

Thanks to Jared McNeill for advices and review.

Also build dtb files for CONFIG_SOC_IMX6SX


experimental IMX6SX support:
- add options SOC_IMX6SX
- add imx6sxccm device
tested on a UDOO Neo Full board.

known to work:
- uart (console)
- sdmmc0
- ethernet (enet0)
known to not work:
- USB (device not detected).

needs a modified device tree at this time (add arm,cortex-a9-twd-timer entry
copied from the imx6qdl dtsi); for unkown reason the imx6sx.dtsi file lacks
an entry for the a9ptmr although it is present in the soc (and, from what I
understood, in all cortex A9 SoCs).

Add imx6sx dtb files

The i.mx6sx has 2 OTG and one host-only USB controller, while the 6q has
only one OTG.

Add a "uintptr_t data" argument to all sc_*_md_hook callbacks, which
gets the sc_md_hook_data value when called.

In imx6_usb.c use this to pass the number of OTG controllers to the callbacks.
imx6_usb_init() can then properly call init_otg() or init_h1() for unit 1.

In imx6_usb_attach(), test if there is a vbus-supply property in the fdt,
and enable the regulator if present.

Now the USB port of the UDOO Neo works.
 1.6 08-Feb-2024  andvar s/transeiver/transceiver/ in comments.
 1.5 17-May-2016  ryo Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.4 04-Sep-2015  skrll Add some more USBMODE defines
 1.3 04-Sep-2015  skrll Correct a register name
 1.2 25-Jul-2014  hkenken branches: 1.2.2; 1.2.4; 1.2.8;
Add support i.MX50x
* i.MX50 series is e-ink e-reader processor.
 1.1 30-Nov-2010  bsh branches: 1.1.6; 1.1.20; 1.1.34;
Support GPIO, IOMUX, and USB on i.MX51.
 1.1.34.1 10-Aug-2014  tls Rebase.
 1.1.20.2 03-Dec-2017  jdolecek update from HEAD
 1.1.20.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 30-Nov-2010  rmind file imxusbreg.h was added on branch rmind-uvmplock on 2011-03-05 20:49:35 +0000
 1.2.8.1 06-Sep-2016  skrll First pass at netbsd-7 updated with USB code from HEAD
 1.2.4.2 29-May-2016  skrll Sync with HEAD
 1.2.4.1 22-Sep-2015  skrll Sync with HEAD
 1.2.2.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.7 04-May-2023  bouyer The i.mx6sx has 2 OTG and one host-only USB controller, while the 6q has
only one OTG.
Add a "uintptr_t data" argument to all sc_*_md_hook callbacks, which
gets the sc_md_hook_data value when called.
In imx6_usb.c use this to pass the number of OTG controllers to the callbacks.
imx6_usb_init() can then properly call init_otg() or init_h1() for unit 1.

In imx6_usb_attach(), test if there is a vbus-supply property in the fdt,
and enable the regulator if present.

Now the USB port of the UDOO Neo works.
 1.6 24-Jul-2019  hkenken branches: 1.6.28;
i.MX USB host code re-arrangement.
 1.5 20-Jun-2019  hkenken Add support for clk subsystem in imx6 CCM driver.
 1.4 17-May-2016  ryo branches: 1.4.18;
Add initial support for Freescale i.MX7 SoC and
Atmark Techno Armadillo-IoT G3 boards.

Contributed by Internet Initiative Japan Inc.
 1.3 10-Sep-2015  hkenken USBMODE register's initialization should be done in sc_vendor_init() after sending EHCI_CMD_HCRESET command.
 1.2 25-Jul-2014  hkenken branches: 1.2.4;
Add support i.MX50x
* i.MX50 series is e-ink e-reader processor.
 1.1 30-Nov-2010  bsh branches: 1.1.6; 1.1.20; 1.1.34;
Support GPIO, IOMUX, and USB on i.MX51.
 1.1.34.1 10-Aug-2014  tls Rebase.
 1.1.20.2 03-Dec-2017  jdolecek update from HEAD
 1.1.20.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 30-Nov-2010  rmind file imxusbvar.h was added on branch rmind-uvmplock on 2011-03-05 20:49:35 +0000
 1.2.4.2 29-May-2016  skrll Sync with HEAD
 1.2.4.1 22-Sep-2015  skrll Sync with HEAD
 1.4.18.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.6.28.1 28-May-2023  martin Pull up following revision(s) (requested by bouyer in ticket #182):

sys/arch/arm/nxp/imx6_platform.c: revision 1.8 (via patch)
sys/arch/arm/nxp/imx6_platform.c: revision 1.9 (via patch)
sys/arch/arm/nxp/imx6_ccmvar.h: revision 1.2
sys/arch/arm/nxp/imx6_ccmvar.h: revision 1.3
distrib/sets/lists/dtb/ad.earmv7hf: revision 1.10
sys/arch/arm/nxp/imx6sx_clk.c: revision 1.1
sys/arch/arm/nxp/imx6_ccm.c: revision 1.3
sys/arch/arm/nxp/imx6sx_clk.c: revision 1.2
sys/arch/arm/nxp/imx6_ccm.c: revision 1.4
sys/arch/arm/nxp/imx6sx_clk.c: revision 1.3
sys/arch/arm/nxp/imx6_spi.c: revision 1.8
sys/arch/arm/nxp/imx_sdhc.c: revision 1.8
sys/arch/arm/imx/imxusb.c: revision 1.19
sys/arch/arm/nxp/imx6_usb.c: revision 1.7
sys/arch/arm/nxp/imx6_usb.c: revision 1.8
sys/arch/arm/nxp/files.imx: revision 1.3
sys/arch/arm/nxp/imx6_clk.c: revision 1.5
sys/arch/arm/nxp/imx6_clk.c: revision 1.6
sys/arch/arm/nxp/imx6_reg.h: revision 1.2
sys/arch/arm/nxp/imx6_gpc.c: revision 1.4
sys/arch/arm/imx/imx23_usb.c: revision 1.6
sys/dtb/arm/Makefile: revision 1.6
sys/arch/arm/imx/imxusbvar.h: revision 1.7
sys/arch/evbarm/conf/GENERIC: revision 1.119
sys/arch/arm/nxp/imx6_ccmreg.h: revision 1.2
sys/arch/arm/nxp/imx6_iomux.c: revision 1.3
sys/arch/arm/nxp/imx6_usbphy.c: revision 1.3
sys/arch/arm/nxp/imx6_pcie.c: revision 1.7

In preparation of imx6sx support, move imx6q-specific definitions from
imx6_ccm.c to imx6_clk.c, and prefix with IMX6Q/imx6q:
- Clock IDs and related struct imx_clock_id
- Clock Parents and Divider Tables
- struct imx6_clk
and related static functions

Add a pointer to struct imx6_clk, and it's size to imx6ccm_softc

Pass a pointer to imx6ccm_softc to all functions from imx6_ccm.c
NFCI

i.mx6sx CPU support in the CCM module: the clock tree si different from
the i.mx6q
- move i.mx6q-specific functions and data to imx6_clk.c
- add i.mx6sx specific imx6sx_clk.c
- add a imx6sxccm device
i.mx6sx platform support:
- the i.mx6sx has a third AIPS, so KERNEL_IO_IOREG map has to be larger
- the uart clock is at 24Mhz instead of 80.

Add i.mx6sx compatible entries to drivers that should work as is.

Fix typo, preventing i2c4 from attaching
remove commented out entries, leftover from the imx6q ccm code.
introduce imx6sx_platform_bootstrap(), which calls imx_platform_bootstrap()
and then checks for an "arm,cortex-a9-twd-timer" compatible entry in the
fdt. If not present, create one so that a9ptmr will attach.
We need this entry as this is the only timer we support for this platform,
but the upstream imx6sx.dtsi is missing the entry for it (and all A9 CPUs
have it anyway).

Thanks to Jared McNeill for advices and review.

Also build dtb files for CONFIG_SOC_IMX6SX


experimental IMX6SX support:
- add options SOC_IMX6SX
- add imx6sxccm device
tested on a UDOO Neo Full board.

known to work:
- uart (console)
- sdmmc0
- ethernet (enet0)
known to not work:
- USB (device not detected).

needs a modified device tree at this time (add arm,cortex-a9-twd-timer entry
copied from the imx6qdl dtsi); for unkown reason the imx6sx.dtsi file lacks
an entry for the a9ptmr although it is present in the soc (and, from what I
understood, in all cortex A9 SoCs).

Add imx6sx dtb files

The i.mx6sx has 2 OTG and one host-only USB controller, while the 6q has
only one OTG.

Add a "uintptr_t data" argument to all sc_*_md_hook callbacks, which
gets the sc_md_hook_data value when called.

In imx6_usb.c use this to pass the number of OTG controllers to the callbacks.
imx6_usb_init() can then properly call init_otg() or init_h1() for unit 1.

In imx6_usb_attach(), test if there is a vbus-supply property in the fdt,
and enable the regulator if present.

Now the USB port of the UDOO Neo works.
 1.3 25-Sep-2014  ryo add support i.MX6 and NITROGEN6X evaluation board
 1.2 02-May-2014  hkenken branches: 1.2.2; 1.2.4; 1.2.8;
struct device * -> device_t
 1.1 22-Mar-2014  hkenken branches: 1.1.2;
add Watchdog Timer support for i.MX51.
 1.1.2.1 10-Aug-2014  tls Rebase.
 1.2.8.3 03-Dec-2017  jdolecek update from HEAD
 1.2.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.8.1 02-May-2014  tls file imxwdog.c was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.2.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.2.4.1 02-May-2014  yamt file imxwdog.c was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.2.2.2 18-May-2014  rmind sync with head
 1.2.2.1 02-May-2014  rmind file imxwdog.c was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000
 1.3 25-Sep-2014  ryo add support i.MX6 and NITROGEN6X evaluation board
 1.2 22-Mar-2014  hkenken add Watchdog Timer support for i.MX51.
 1.1 13-Nov-2010  bsh branches: 1.1.2; 1.1.8; 1.1.12; 1.1.22; 1.1.26;
i.MX51 support by SHIMIZU Ryo, Hashimoto Kenichi, and me.
 1.1.26.1 18-May-2014  rmind sync with head
 1.1.22.2 03-Dec-2017  jdolecek update from HEAD
 1.1.22.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.12.1 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.8.2 05-Mar-2011  rmind sync with head
 1.1.8.1 13-Nov-2010  rmind file imxwdogreg.h was added on branch rmind-uvmplock on 2011-03-05 20:49:35 +0000
 1.1.2.2 15-Nov-2010  uebayasi Sync with HEAD.
 1.1.2.1 13-Nov-2010  uebayasi file imxwdogreg.h was added on branch uebayasi-xip on 2010-11-15 14:38:22 +0000
 1.1 22-Mar-2014  hkenken branches: 1.1.4; 1.1.6; 1.1.10;
add Watchdog Timer support for i.MX51.
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 22-Mar-2014  tls file imxwdogvar.h was added on branch tls-maxphys on 2014-08-20 00:02:46 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

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

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 22-Mar-2014  yamt file imxwdogvar.h was added on branch yamt-pagecache on 2014-05-22 11:39:32 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 22-Mar-2014  rmind file imxwdogvar.h was added on branch rmind-smpnet on 2014-05-18 17:44:58 +0000

RSS XML Feed