Home | History | Annotate | only in /src/sys/arch/arm/nxp
History log of /src/sys/arch/arm/nxp
RevisionDateAuthorComments
 1.4 06-Sep-2025  thorpej Step towards modularizing the Flattened Device Tree code.

Define attributes for each of the specific device bindings: clock,
dai, dma, gpio, i2c, iommu, mbox, mmc_pwrseq, phy, power, power domain,
pwm, regulator, reset controller, spi, system controller, pin
controller. Include these support files only if either a provider
or consumer with one of these attributes is present in the kernel
config.

Add the necessary attributes to the device / attach declarations for
each provider and consumer.

There are some bindings that are consumed by generic code (iommu, pinctrl,
power, power domain). Provide weak stubs for these routines to handle
situations where there is no provider.

No actual code changed; NFCI.
 1.3 04-May-2023  bouyer 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
 1.2 20-Jul-2022  riastradh branches: 1.2.4;
drm: Use CPPFLAGS.drmkms in all local drm drivers too.

This way we don't pollute the NetBSD kernel namespace with all the
Linux compat shim definitions needed to build drm, except for the
local drm drivers that need the API.
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file files.imx was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.2.4.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.8 04-Oct-2025  thorpej Use device_{get,set}prop_bool() for rgmii-related properties.
 1.7 27-Dec-2022  mrg don't use uninitialised data. should fix PR#57135's crash.

XXX: pullup-10
 1.6 27-Jan-2021  thorpej branches: 1.6.18;
Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.5 27-Jan-2021  thorpej Use DEVICE_COMPAT_EOL.
 1.4 25-Jan-2021  thorpej Since we're using designated initialisers for compat data, we should
use a completely empty initializer for the sentinel.
 1.3 18-Jan-2021  thorpej Remove "struct of_compat_data" and replace its usage with
"struct device_compatible_entry"; they are ABI-compatible.

Fix several "loses const qualifier" bugs encountered during
this conversion.
 1.2 15-Jan-2021  jmcneill use fdtbus_intr_establish_xname
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file if_enet_imx.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.6.18.1 29-Dec-2022  martin Pull up following revision(s) (requested by mrg in ticket #29):

sys/arch/arm/nxp/if_enet_imx.c: revision 1.7

don't use uninitialised data. should fix PR#57135's crash.
 1.5 01-Sep-2024  skrll Trailing whitespace
 1.4 04-May-2023  bouyer branches: 1.4.6;
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
 1.3 14-Apr-2023  bouyer 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
 1.2 27-Sep-2022  skrll branches: 1.2.4;
Remove unnecessary sys/malloc.h include
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_ccm.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.2.4.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.4.6.1 02-Aug-2025  perseant Sync with HEAD
 1.3 07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.2 04-May-2023  bouyer 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
 1.1 23-Dec-2020  skrll branches: 1.1.2; 1.1.20;
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.20.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_ccmreg.h was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.3 04-May-2023  bouyer 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
 1.2 14-Apr-2023  bouyer 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
 1.1 23-Dec-2020  skrll branches: 1.1.2; 1.1.20;
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.20.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_ccmvar.h was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.8 01-Sep-2024  skrll Catch up with latest DTS and other fixes from Rui-Xiang Guo on port-arm.
 1.7 01-Sep-2024  skrll Trailing whitespace
 1.6 04-May-2023  bouyer branches: 1.6.6;
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
 1.5 14-Apr-2023  bouyer 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
 1.4 27-Sep-2022  skrll branches: 1.4.4;
Remove unnecessary sys/malloc.h include
 1.3 30-Jan-2021  skrll Pretty print
 1.2 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_clk.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.4.4.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.6.1 02-Aug-2025  perseant Sync with HEAD
 1.4 19-Dec-2021  riastradh catch up with newer drm_encoder_init prototype


Author: Maya Rashish <maya@NetBSD.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>
 1.3 19-Dec-2021  riastradh drmP.h is no more


Author: Maya Rashish <maya@NetBSD.org>
Committer: Taylor R Campbell <riastradh@NetBSD.org>
 1.2 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_dwhdmi.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.4 04-May-2023  bouyer Add i.mx6sx compatible entries to drivers that should work as is.
 1.3 27-Jan-2021  thorpej branches: 1.3.18;
Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.2 15-Jan-2021  jmcneill Add 'const char *xname' arg to fdtbus_interrupt_controller_func .establish
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_gpc.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.3.18.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.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_gpcreg.h was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.4 19-Jan-2025  skrll Match fsl,imx6dl-iomuxc for the RIoTboard i.MX6S

From Rui-Xiang Guo on port-arm
 1.3 04-May-2023  bouyer branches: 1.3.6;
Add i.mx6sx compatible entries to drivers that should work as is.
 1.2 27-Jan-2021  thorpej branches: 1.2.18;
Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_iomux.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.2.18.2 02-Feb-2025  martin Pull up following revision(s) (requested by skrll in ticket #1042):

sys/arch/arm/nxp/imx6_iomux.c: revision 1.4

Match fsl,imx6dl-iomuxc for the RIoTboard i.MX6S

From Rui-Xiang Guo on port-arm
 1.2.18.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.6.1 02-Aug-2025  perseant Sync with HEAD
 1.2 07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_iomuxreg.h was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.3 07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.2 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_ocotp.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.2 07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_ocotpreg.h was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.2 07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_ocotpvar.h was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.7 04-May-2023  bouyer Add i.mx6sx compatible entries to drivers that should work as is.
 1.6 27-Jan-2021  thorpej branches: 1.6.18;
Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.5 27-Jan-2021  thorpej Use DEVICE_COMPAT_EOL.
 1.4 25-Jan-2021  thorpej Since we're using designated initialisers for compat data, we should
use a completely empty initializer for the sentinel.
 1.3 18-Jan-2021  thorpej Remove "struct of_compat_data" and replace its usage with
"struct device_compatible_entry"; they are ABI-compatible.

Fix several "loses const qualifier" bugs encountered during
this conversion.
 1.2 15-Jan-2021  jmcneill use fdtbus_intr_establish_xname
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_pcie.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.6.18.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.10 06-Sep-2025  thorpej Refactor the "platform" defitions into fdt_platform.h
 1.9 24-May-2023  bouyer 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.
 1.8 04-May-2023  bouyer 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.
 1.7 07-Apr-2023  skrll Rename ARM_PLATFORM to FDT_PLATFORM and make it available outside arm.
 1.6 24-Apr-2021  thorpej branches: 1.6.16;
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 05-Feb-2021  skrll branches: 1.5.2;
Fix build
 1.4 04-Feb-2021  thorpej Call acpi_device_register() / fdtbus_device_register() as approrpriate.
 1.3 29-Jan-2021  rin Fix build without MULTIPROCESSOR.
 1.2 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_platform.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.5.2.1 03-Apr-2021  thorpej - FDT device enumeration now sets the device handle using CFARG_DEVHANDLE.
- fdtbus_device_register() is now obsolete, so G/C it.
- of_device_register() is now obsolete, so G/C it.
 1.6.16.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.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_platform.h was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.3 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.2 15-Jan-2021  jmcneill use fdtbus_intr_establish_xname
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_pwm.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.2 04-May-2023  bouyer 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.
 1.1 23-Dec-2020  skrll branches: 1.1.2; 1.1.20;
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.20.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_reg.h was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.9 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.8 04-May-2023  bouyer Add i.mx6sx compatible entries to drivers that should work as is.
 1.7 27-Jan-2021  thorpej branches: 1.7.18;
Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.6 27-Jan-2021  thorpej Use DEVICE_COMPAT_EOL.
 1.5 25-Jan-2021  thorpej Since we're using designated initialisers for compat data, we should
use a completely empty initializer for the sentinel.
 1.4 18-Jan-2021  thorpej Remove "struct of_compat_data" and replace its usage with
"struct device_compatible_entry"; they are ABI-compatible.

Fix several "loses const qualifier" bugs encountered during
this conversion.
 1.3 15-Jan-2021  jmcneill use fdtbus_intr_establish_xname
 1.2 23-Dec-2020  skrll branches: 1.2.2;
Attachment pretty print
 1.1 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.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.2.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.2.2.1 23-Dec-2020  thorpej file imx6_spi.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.7.18.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 07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_srcreg.h was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.8 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.7 04-May-2023  bouyer Add i.mx6sx compatible entries to drivers that should work as is.
 1.6 07-Aug-2021  thorpej branches: 1.6.6;
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 30-Jan-2021  skrll branches: 1.4.2;
Don't print undefined interrupt value
 1.3 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.2 15-Jan-2021  jmcneill use fdtbus_intr_establish_xname
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_usb.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.4.2.2 22-Mar-2021  thorpej Audit CFARG_IATTR in config_found() calls, and remove it in situations
where the interface attribute is not ambiguous.
 1.4.2.1 22-Mar-2021  thorpej Mechanical conversion of config_found_sm_loc() -> config_found().
CFARG_IATTR usage needs to be audited.
 1.5.8.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.6.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.3 04-May-2023  bouyer Add i.mx6sx compatible entries to drivers that should work as is.
 1.2 27-Jan-2021  thorpej branches: 1.2.18;
Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_usbphy.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.2.18.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.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_usbphyreg.h was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.2 07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6_usbreg.h was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.4 01-Sep-2024  skrll Trailing whitespace
 1.3 05-May-2023  bouyer branches: 1.3.2; 1.3.8;
remove commented out entries, leftover from the imx6q ccm code.
 1.2 05-May-2023  bouyer Fix typo, preventing i2c4 from attaching
 1.1 04-May-2023  bouyer 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
 1.3.8.1 02-Aug-2025  perseant Sync with HEAD
 1.3.2.2 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.2.1 05-May-2023  martin file imx6sx_clk.c was added on branch netbsd-10 on 2023-05-28 10:14:35 +0000
 1.2 07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx6var.h was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.3 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.2 15-Jan-2021  jmcneill Add 'const char *xname' arg to fdtbus_interrupt_controller_func .establish
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx7_gpc.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.2 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx7d_ccm.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx7d_ccm.h was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.2 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx8mq_ccm.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx8mq_ccm.h was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.5 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.4 27-Jan-2021  thorpej Use DEVICE_COMPAT_EOL.
 1.3 25-Jan-2021  thorpej Since we're using designated initialisers for compat data, we should
use a completely empty initializer for the sentinel.
 1.2 18-Jan-2021  thorpej Remove "struct of_compat_data" and replace its usage with
"struct device_compatible_entry"; they are ABI-compatible.

Fix several "loses const qualifier" bugs encountered during
this conversion.
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx8mq_usbphy.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.4 06-Feb-2022  andvar fix various typos in comments, log messages and documentation.
mainly s/aparently/apparently/ and s/implmented/implemented/.
 1.3 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.2 15-Jan-2021  jmcneill use fdtbus_intr_establish_xname
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx_ahcisata.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.2 07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx_ahcisatareg.h was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx_ccm.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx_ccm.h was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx_ccm_composite.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx_ccm_div.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx_ccm_extclk.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx_ccm_fixed.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx_ccm_fixed_factor.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx_ccm_gate.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx_ccm_mux.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx_ccm_pll.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.4 06-Sep-2025  thorpej Re-factor the console-related code into fdt_console.[ch]
 1.3 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.2 15-Jan-2021  jmcneill use fdtbus_intr_establish_xname
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx_com.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.4 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.3 15-Jan-2021  jmcneill use fdtbus_intr_establish_xname
 1.2 15-Jan-2021  jmcneill Add 'const char *xname' arg to fdtbus_interrupt_controller_func .establish
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx_gpio.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.4 16-Sep-2025  thorpej As with ACPI, perform the fdtbus_register_i2c_controller() in a centralized
location.
 1.3 22-Jul-2022  thorpej Normalize how motoi2c controllers are attached.
 1.2 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx_i2c.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.8 04-May-2023  bouyer Add i.mx6sx compatible entries to drivers that should work as is.
 1.7 06-Feb-2022  jmcneill branches: 1.7.4;
sdhc: Retire SDHC_FLAG_USE_ADMA2 flag.

ADMA2 support in sdhc is mature now, so no need for it to be opt-in.
 1.6 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.5 27-Jan-2021  thorpej Use DEVICE_COMPAT_EOL.
 1.4 25-Jan-2021  thorpej Since we're using designated initialisers for compat data, we should
use a completely empty initializer for the sentinel.
 1.3 18-Jan-2021  thorpej Remove "struct of_compat_data" and replace its usage with
"struct device_compatible_entry"; they are ABI-compatible.

Fix several "loses const qualifier" bugs encountered during
this conversion.
 1.2 15-Jan-2021  jmcneill use fdtbus_intr_establish_xname
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx_sdhc.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.7.4.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 07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.2 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imx_snvs.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.5 02-Jun-2024  andvar fix various typos in word `interrupt', mainly in comments.
 1.4 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.3 12-May-2021  thorpej branches: 1.3.4;
Pass along our device handle to the PCI bus instance we attach.
 1.2 24-Apr-2021  thorpej branches: 1.2.2; 1.2.4;
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 23-Dec-2020  skrll branches: 1.1.2; 1.1.4;
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.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.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imxpcie.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000
 1.2.4.1 31-May-2021  cjep sync with head
 1.2.2.1 13-May-2021  thorpej Sync with HEAD.
 1.3.4.1 04-Aug-2021  thorpej Adapt to CFARGS().
 1.3 27-Jan-2021  thorpej Rename of_match_compat_data() to of_compatible_match(). Similarly,
rename of_search_compatible() to of_compatible_lookup().

Standardize on of_compatible_match() for driver matching, and adapt
all call sites.
 1.2 15-Jan-2021  jmcneill use fdtbus_intr_establish_xname
 1.1 23-Dec-2020  skrll branches: 1.1.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.1.2.3 03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2 03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1 23-Dec-2020  thorpej file imxwdog.c was added on branch thorpej-futex on 2021-01-03 16:34:52 +0000

RSS XML Feed