Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • reform/reform-boundary-uboot
  • josch/reform-boundary-uboot
  • jacqueline/reform-boundary-uboot
  • cinap_lenrek/reform-boundary-uboot
  • jackhumbert/reform-boundary-uboot
  • sevan/reform-boundary-uboot
  • khm/reform-boundary-uboot
7 results
Show changes
Commits on Source (1093)
Showing
with 5036 additions and 55 deletions
image: debian:bullseye-slim
build:
script: |
apt-get update
apt-get --yes install --no-install-recommends gcc-aarch64-linux-gnu build-essential bison flex device-tree-compiler git
cp mntreform-config .config
./build.sh
if git describe >/dev/null 2>&1; then
grep --quiet --fixed-strings "EXTRAVERSION = \\ MNT\\ Reform\\ $(git describe --always --tags --abbrev=0)" Makefile
fi
mv flash.bin imx8mq-mnt-reform2-flash.bin
cp imx8mq-mnt-reform2-flash.bin imx8mq-mnt-reform2-hdmi-flash.bin
artifacts:
paths:
- "imx8mq-mnt-reform2-flash.bin"
- "imx8mq-mnt-reform2-hdmi-flash.bin"
......@@ -104,6 +104,12 @@ config ENV_VARS_UBOOT_CONFIG
- CONFIG_SYS_VENDOR
- CONFIG_SYS_SOC
config NR_DRAM_BANKS
int "Number of DRAM banks"
default 4
help
This defines the number of DRAM banks.
config SYS_BOOT_GET_CMDLINE
bool "Enable kernel command line setup"
help
......
......@@ -3,7 +3,7 @@
VERSION = 2018
PATCHLEVEL = 07
SUBLEVEL =
EXTRAVERSION =
EXTRAVERSION = \ MNT\ Reform\ 2024-07-19
NAME =
# *DOCUMENTATION*
......@@ -607,14 +607,18 @@ endif
KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks)
# change __FILE__ to the relative path from the srctree
KBUILD_CFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=)
# change __FILE__ and debugging symbols to the relative path from the
# srctree
KBUILD_CFLAGS += $(call cc-option,-ffile-prefix-map=$(srctree)/=)
KBUILD_CFLAGS += -g
# $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format>
# option to the assembler.
KBUILD_AFLAGS += -g
# Use relative paths in debugging symbols
KBUILD_AFLAGS += --debug-prefix-map=$(srctree)/=
# Report stack usage if supported
# ARC tools based on GCC 7.1 has an issue with stack usage
# with naked functions, see commit message for more details
......@@ -1065,8 +1069,27 @@ U_BOOT_ITS = $(subst ",,$(CONFIG_SPL_FIT_SOURCE))
else
ifneq ($(CONFIG_SPL_FIT_GENERATOR),"")
U_BOOT_ITS := u-boot.its
$(U_BOOT_ITS): FORCE
$(srctree)/$(CONFIG_SPL_FIT_GENERATOR) \
ifeq ($(CONFIG_SPL_FIT_GENERATOR),"arch/arm/mach-imx/mkimage_fit_atf.sh")
U_BOOT_ITS_DEPS += u-boot-nodtb.bin
endif
ifdef CONFIG_IMX8MM
SOC_CPU = iMX8MM
TEE_LOAD_ADDR = 0xbe000000
ATF_LOAD_ADDR = 0x00920000
endif
ifdef CONFIG_IMX8MN
SOC_CPU = iMX8MN
TEE_LOAD_ADDR = 0xbe000000
ATF_LOAD_ADDR = 0x00960000
endif
ifdef CONFIG_IMX8MQ
SOC_CPU = iMX8MQ
TEE_LOAD_ADDR = 0xfe000000
ATF_LOAD_ADDR = 0x00910000
endif
$(U_BOOT_ITS): $(U_BOOT_ITS_DEPS) FORCE
TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) BL31=bl31-${SOC_CPU}.bin $(srctree)/$(CONFIG_SPL_FIT_GENERATOR) \
$(patsubst %,arch/$(ARCH)/dts/%.dtb,$(subst ",,$(CONFIG_OF_LIST))) > $@
endif
endif
......@@ -1155,6 +1178,11 @@ tpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin FORCE
SPL: spl/u-boot-spl.bin FORCE
$(Q)$(MAKE) $(build)=arch/arm/mach-imx $@
ifeq ($(CONFIG_ARCH_IMX8M), y)
flash.bin: spl/u-boot-spl.bin u-boot.itb FORCE
$(Q)$(MAKE) $(build)=arch/arm/mach-imx $@
endif
u-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE
$(Q)$(MAKE) $(build)=arch/arm/mach-imx $@
......
......@@ -2525,9 +2525,6 @@ FIT uImage format:
When defined, the linker checks that the actual size does
not exceed it.
CONFIG_SPL_TEXT_BASE
TEXT_BASE for linking the SPL binary.
CONFIG_SPL_RELOC_TEXT_BASE
Address to relocate to. If unspecified, this is equal to
CONFIG_SPL_TEXT_BASE (i.e. no relocation is done).
......
......@@ -126,6 +126,7 @@ config X86
imply CMD_SF_TEST
imply CMD_ZBOOT
imply USB_HOST_ETHER
imply SPL_SYSRESET
imply USB_ETHER_ASIX
imply USB_ETHER_SMSC95XX
......
......@@ -645,7 +645,7 @@ config ARCH_MESON
targeted at media players and tablet computers. We currently
support the S905 (GXBaby) 64-bit SoC.
config ARCH_MX8M
config ARCH_IMX8M
bool "NXP i.MX8M platform"
select ARM64
select DM
......@@ -1254,6 +1254,7 @@ config ARCH_STM32MP
select SYSCON
select SYSRESET
select SYS_THUMB_BUILD
imply SPL_SYSRESET
help
Support for STM32MP SoC family developed by STMicroelectronics,
MPUs based on ARM cortex A core
......@@ -1347,7 +1348,7 @@ source "arch/arm/mach-imx/mx7/Kconfig"
source "arch/arm/mach-imx/mx7ulp/Kconfig"
source "arch/arm/mach-imx/mx8m/Kconfig"
source "arch/arm/mach-imx/imx8m/Kconfig"
source "arch/arm/mach-imx/mxs/Kconfig"
......
......@@ -98,11 +98,11 @@ libs-y += arch/arm/cpu/
libs-y += arch/arm/lib/
ifeq ($(CONFIG_SPL_BUILD),y)
ifneq (,$(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_MX35)$(filter $(SOC), mx25 mx5 mx6 mx7 mx35 mx8m))
ifneq (,$(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_MX35)$(filter $(SOC), mx25 mx5 mx6 mx7 mx35 imx8m))
libs-y += arch/arm/mach-imx/
endif
else
ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx7 mx7ulp mx31 mx35 mxs mx8m vf610))
ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx7 mx7ulp mx31 mx35 mxs imx8m vf610))
libs-y += arch/arm/mach-imx/
endif
endif
......
......@@ -65,8 +65,8 @@ endif
checkgcc6:
@if test "$(call cc-name)" = "gcc" -a \
"$(call cc-version)" -lt "0600"; then \
echo '*** Your GCC is older than 6.0 and is not supported'; \
false; \
echo -n '*** Your GCC is older than 6.0 and will not be '; \
echo 'supported starting in v2018.01.'; \
fi
......@@ -134,11 +134,11 @@ endif
ifdef CONFIG_ARM64
OBJCOPYFLAGS += -j .text -j .secure_text -j .secure_data -j .rodata -j .data \
-j .u_boot_list -j .rela.dyn -j .got -j .got.plt \
-j .binman_sym_table
-j .binman_sym_table -j .text_rest
else
OBJCOPYFLAGS += -j .text -j .secure_text -j .secure_data -j .rodata -j .hash \
-j .data -j .got -j .got.plt -j .u_boot_list -j .rel.dyn \
-j .binman_sym_table
-j .binman_sym_table -j .text_rest
endif
# if a dtb section exists we always have to include it
......
......@@ -14,8 +14,8 @@
#include <asm/arch/crm_regs.h>
#include <asm/arch/clock.h>
#include <asm/arch/sys_proto.h>
#ifdef CONFIG_FSL_ESDHC
#include <fsl_esdhc.h>
#ifdef CONFIG_FSL_ESDHC_IMX
#include <fsl_esdhc_imx.h>
#endif
#include <netdev.h>
#include <spl.h>
......@@ -27,7 +27,7 @@
#define CCM_GET_DIVIDER(x, m, o) (((x) & (m)) >> (o))
#ifdef CONFIG_FSL_ESDHC
#ifdef CONFIG_FSL_ESDHC_IMX
DECLARE_GLOBAL_DATA_PTR;
#endif
......@@ -446,7 +446,7 @@ int cpu_eth_init(bd_t *bis)
return rc;
}
#ifdef CONFIG_FSL_ESDHC
#ifdef CONFIG_FSL_ESDHC_IMX
/*
* Initializes on-chip MMC controllers.
* to override, implement board_mmc_init()
......@@ -459,7 +459,7 @@ int cpu_mmc_init(bd_t *bis)
int get_clocks(void)
{
#ifdef CONFIG_FSL_ESDHC
#ifdef CONFIG_FSL_ESDHC_IMX
#if CONFIG_SYS_FSL_ESDHC_ADDR == MMC_SDHC2_BASE_ADDR
gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
#elif CONFIG_SYS_FSL_ESDHC_ADDR == MMC_SDHC3_BASE_ADDR
......
......@@ -16,8 +16,8 @@
#include <asm/arch/imx-regs.h>
#include <asm/arch/clock.h>
#ifdef CONFIG_FSL_ESDHC
#include <fsl_esdhc.h>
#ifdef CONFIG_FSL_ESDHC_IMX
#include <fsl_esdhc_imx.h>
DECLARE_GLOBAL_DATA_PTR;
#endif
......@@ -241,7 +241,7 @@ int cpu_eth_init(bd_t *bis)
int get_clocks(void)
{
#ifdef CONFIG_FSL_ESDHC
#ifdef CONFIG_FSL_ESDHC_IMX
#if CONFIG_SYS_FSL_ESDHC_ADDR == IMX_MMC_SDHC2_BASE
gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
#else
......@@ -251,7 +251,7 @@ int get_clocks(void)
return 0;
}
#ifdef CONFIG_FSL_ESDHC
#ifdef CONFIG_FSL_ESDHC_IMX
/*
* Initializes on-chip MMC controllers.
* to override, implement board_mmc_init()
......
......@@ -10,11 +10,11 @@
#include <asm/arch/crm_regs.h>
#include <asm/mach-imx/sys_proto.h>
#include <netdev.h>
#ifdef CONFIG_FSL_ESDHC
#include <fsl_esdhc.h>
#ifdef CONFIG_FSL_ESDHC_IMX
#include <fsl_esdhc_imx.h>
#endif
#ifdef CONFIG_FSL_ESDHC
#ifdef CONFIG_FSL_ESDHC_IMX
DECLARE_GLOBAL_DATA_PTR;
#endif
......@@ -345,7 +345,7 @@ int cpu_eth_init(bd_t *bis)
return rc;
}
#ifdef CONFIG_FSL_ESDHC
#ifdef CONFIG_FSL_ESDHC_IMX
int cpu_mmc_init(bd_t *bis)
{
return fsl_esdhc_mmc_init(bis);
......@@ -354,7 +354,7 @@ int cpu_mmc_init(bd_t *bis)
int get_clocks(void)
{
#ifdef CONFIG_FSL_ESDHC
#ifdef CONFIG_FSL_ESDHC_IMX
gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
#endif
return 0;
......
......@@ -342,7 +342,7 @@ int cpu_eth_init(bd_t * bis)
int get_clocks(void)
{
#ifdef CONFIG_FSL_ESDHC
#ifdef CONFIG_FSL_ESDHC_IMX
gd->arch.sdhc_clk = mxc_get_clock(MXC_USDHC_CLK);
#endif
return 0;
......
......@@ -25,6 +25,19 @@ SECTIONS
{
*(.__image_copy_start)
CPUDIR/start.o (.text*)
}
/* This needs to come before *(.text*) */
.efi_runtime : {
__efi_runtime_start = .;
*(.text.efi_runtime*)
*(.rodata.efi_runtime*)
*(.data.efi_runtime*)
__efi_runtime_stop = .;
}
.text_rest :
{
*(.text*)
}
......@@ -98,17 +111,10 @@ SECTIONS
. = ALIGN(8);
.efi_runtime : {
__efi_runtime_start = .;
*(efi_runtime_text)
*(efi_runtime_data)
__efi_runtime_stop = .;
}
.efi_runtime_rel : {
__efi_runtime_rel_start = .;
*(.relaefi_runtime_text)
*(.relaefi_runtime_data)
*(.rel*.efi_runtime)
*(.rel*.efi_runtime.*)
__efi_runtime_rel_stop = .;
}
......
......@@ -43,6 +43,25 @@ SECTIONS
*(.__image_copy_start)
*(.vectors)
CPUDIR/start.o (.text*)
}
/* This needs to come before *(.text*) */
.__efi_runtime_start : {
*(.__efi_runtime_start)
}
.efi_runtime : {
*(.text.efi_runtime*)
*(.rodata.efi_runtime*)
*(.data.efi_runtime*)
}
.__efi_runtime_stop : {
*(.__efi_runtime_stop)
}
.text_rest :
{
*(.text*)
}
......@@ -136,27 +155,14 @@ SECTIONS
. = ALIGN(4);
.__efi_runtime_start : {
*(.__efi_runtime_start)
}
.efi_runtime : {
*(efi_runtime_text)
*(efi_runtime_data)
}
.__efi_runtime_stop : {
*(.__efi_runtime_stop)
}
.efi_runtime_rel_start :
{
*(.__efi_runtime_rel_start)
}
.efi_runtime_rel : {
*(.relefi_runtime_text)
*(.relefi_runtime_data)
*(.rel*.efi_runtime)
*(.rel*.efi_runtime.*)
}
.efi_runtime_rel_stop :
......
......@@ -438,6 +438,10 @@ dtb-$(CONFIG_MX7) += imx7-colibri.dtb \
dtb-$(CONFIG_ARCH_MX7ULP) += imx7ulp-evk.dtb
dtb-$(CONFIG_ARCH_IMX8M) += imx8mn-ddr4-evk.dtb \
imx8mq-nitrogen8m.dtb \
imx8mq-bio.dtb
dtb-$(CONFIG_RCAR_GEN3) += \
r8a7795-h3ulcb.dtb \
r8a7795-salvator-x.dtb \
......
/*
* Copyright 2018 NXP
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
/dts-v1/;
#include "fsl-imx8mm.dtsi"
/ {
model = "FSL i.MX8MM EVK board";
compatible = "fsl,imx8mm-evk", "fsl,imx8mm";
chosen {
bootargs = "console=ttymxc1,115200 earlycon=ec_imx6q,0x30890000,115200";
stdout-patch = &uart2;
};
reg_usdhc2_vmmc: regulator-usdhc2 {
compatible = "regulator-fixed";
regulator-name = "VSD_3V3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
enable-active-high;
startup-delay-us = <100>;
off-on-delay-us = <12000>;
};
};
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog_1>;
imx8mm-evk {
pinctrl_hog_1: hoggrp-1 {
fsl,pins = <
MX8MM_IOMUXC_GPIO1_IO08_GPIO1_IO8 0x19
>;
};
pinctrl_fec1: fec1grp {
fsl,pins = <
MX8MM_IOMUXC_ENET_MDC_ENET1_MDC 0x3
MX8MM_IOMUXC_ENET_MDIO_ENET1_MDIO 0x3
MX8MM_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x1f
MX8MM_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x1f
MX8MM_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x1f
MX8MM_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x1f
MX8MM_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0x91
MX8MM_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x91
MX8MM_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x91
MX8MM_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x91
MX8MM_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x1f
MX8MM_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x91
MX8MM_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x91
MX8MM_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x1f
MX8MM_IOMUXC_SAI2_RXC_GPIO4_IO22 0x19
>;
};
pinctrl_flexspi0: flexspi0grp {
fsl,pins = <
MX8MM_IOMUXC_NAND_ALE_QSPI_A_SCLK 0x1c4
MX8MM_IOMUXC_NAND_CE0_B_QSPI_A_SS0_B 0x84
MX8MM_IOMUXC_NAND_DATA00_QSPI_A_DATA0 0x84
MX8MM_IOMUXC_NAND_DATA01_QSPI_A_DATA1 0x84
MX8MM_IOMUXC_NAND_DATA02_QSPI_A_DATA2 0x84
MX8MM_IOMUXC_NAND_DATA03_QSPI_A_DATA3 0x84
>;
};
pinctrl_i2c1: i2c1grp {
fsl,pins = <
MX8MM_IOMUXC_I2C1_SCL_I2C1_SCL 0x400001c3
MX8MM_IOMUXC_I2C1_SDA_I2C1_SDA 0x400001c3
>;
};
pinctrl_i2c2: i2c2grp {
fsl,pins = <
MX8MM_IOMUXC_I2C2_SCL_I2C2_SCL 0x400001c3
MX8MM_IOMUXC_I2C2_SDA_I2C2_SDA 0x400001c3
>;
};
pinctrl_i2c3: i2c3grp {
fsl,pins = <
MX8MM_IOMUXC_I2C3_SCL_I2C3_SCL 0x400001c3
MX8MM_IOMUXC_I2C3_SDA_I2C3_SDA 0x400001c3
>;
};
pinctrl_pmic: pmicirq {
fsl,pins = <
MX8MM_IOMUXC_GPIO1_IO03_GPIO1_IO3 0x41
>;
};
pinctrl_uart2: uart1grp {
fsl,pins = <
MX8MM_IOMUXC_UART2_RXD_UART2_DCE_RX 0x49
MX8MM_IOMUXC_UART2_TXD_UART2_DCE_TX 0x49
>;
};
pinctrl_usdhc1_gpio: usdhc1grpgpio {
fsl,pins = <
MX8MM_IOMUXC_SD1_RESET_B_GPIO2_IO10 0x41
>;
};
pinctrl_usdhc1: usdhc1grp {
fsl,pins = <
MX8MM_IOMUXC_SD1_CLK_USDHC1_CLK 0x190
MX8MM_IOMUXC_SD1_CMD_USDHC1_CMD 0x1d0
MX8MM_IOMUXC_SD1_DATA0_USDHC1_DATA0 0x1d0
MX8MM_IOMUXC_SD1_DATA1_USDHC1_DATA1 0x1d0
MX8MM_IOMUXC_SD1_DATA2_USDHC1_DATA2 0x1d0
MX8MM_IOMUXC_SD1_DATA3_USDHC1_DATA3 0x1d0
MX8MM_IOMUXC_SD1_DATA4_USDHC1_DATA4 0x1d0
MX8MM_IOMUXC_SD1_DATA5_USDHC1_DATA5 0x1d0
MX8MM_IOMUXC_SD1_DATA6_USDHC1_DATA6 0x1d0
MX8MM_IOMUXC_SD1_DATA7_USDHC1_DATA7 0x1d0
>;
};
pinctrl_usdhc1_100mhz: usdhc1grp100mhz {
fsl,pins = <
MX8MM_IOMUXC_SD1_CLK_USDHC1_CLK 0x194
MX8MM_IOMUXC_SD1_CMD_USDHC1_CMD 0x1d4
MX8MM_IOMUXC_SD1_DATA0_USDHC1_DATA0 0x1d4
MX8MM_IOMUXC_SD1_DATA1_USDHC1_DATA1 0x1d4
MX8MM_IOMUXC_SD1_DATA2_USDHC1_DATA2 0x1d4
MX8MM_IOMUXC_SD1_DATA3_USDHC1_DATA3 0x1d4
MX8MM_IOMUXC_SD1_DATA4_USDHC1_DATA4 0x1d4
MX8MM_IOMUXC_SD1_DATA5_USDHC1_DATA5 0x1d4
MX8MM_IOMUXC_SD1_DATA6_USDHC1_DATA6 0x1d4
MX8MM_IOMUXC_SD1_DATA7_USDHC1_DATA7 0x1d4
>;
};
pinctrl_usdhc1_200mhz: usdhc1grp200mhz {
fsl,pins = <
MX8MM_IOMUXC_SD1_CLK_USDHC1_CLK 0x196
MX8MM_IOMUXC_SD1_CMD_USDHC1_CMD 0x1d6
MX8MM_IOMUXC_SD1_DATA0_USDHC1_DATA0 0x1d6
MX8MM_IOMUXC_SD1_DATA1_USDHC1_DATA1 0x1d6
MX8MM_IOMUXC_SD1_DATA2_USDHC1_DATA2 0x1d6
MX8MM_IOMUXC_SD1_DATA3_USDHC1_DATA3 0x1d6
MX8MM_IOMUXC_SD1_DATA4_USDHC1_DATA4 0x1d6
MX8MM_IOMUXC_SD1_DATA5_USDHC1_DATA5 0x1d6
MX8MM_IOMUXC_SD1_DATA6_USDHC1_DATA6 0x1d6
MX8MM_IOMUXC_SD1_DATA7_USDHC1_DATA7 0x1d6
>;
};
pinctrl_usdhc2_gpio: usdhc2grpgpio {
fsl,pins = <
MX8MM_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x41
>;
};
pinctrl_usdhc2: usdhc2grp {
fsl,pins = <
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x190
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d0
MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d0
MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d0
MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d0
MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d0
MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
>;
};
pinctrl_usdhc2_100mhz: usdhc2grp100mhz {
fsl,pins = <
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x194
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d4
MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4
MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4
MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4
MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4
MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
>;
};
pinctrl_usdhc2_200mhz: usdhc2grp200mhz {
fsl,pins = <
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x196
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d6
MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d6
MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d6
MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d6
MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d6
MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
>;
};
pinctrl_usdhc3: usdhc3grp {
fsl,pins = <
MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK 0x40000190
MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d0
MX8MM_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d0
MX8MM_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d0
MX8MM_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d0
MX8MM_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d0
MX8MM_IOMUXC_NAND_RE_B_USDHC3_DATA4 0x1d0
MX8MM_IOMUXC_NAND_CE2_B_USDHC3_DATA5 0x1d0
MX8MM_IOMUXC_NAND_CE3_B_USDHC3_DATA6 0x1d0
MX8MM_IOMUXC_NAND_CLE_USDHC3_DATA7 0x1d0
MX8MM_IOMUXC_NAND_CE1_B_USDHC3_STROBE 0x190
>;
};
pinctrl_usdhc3_100mhz: usdhc3grp100mhz {
fsl,pins = <
MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK 0x40000194
MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d4
MX8MM_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d4
MX8MM_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d4
MX8MM_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d4
MX8MM_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d4
MX8MM_IOMUXC_NAND_RE_B_USDHC3_DATA4 0x1d4
MX8MM_IOMUXC_NAND_CE2_B_USDHC3_DATA5 0x1d4
MX8MM_IOMUXC_NAND_CE3_B_USDHC3_DATA6 0x1d4
MX8MM_IOMUXC_NAND_CLE_USDHC3_DATA7 0x1d4
MX8MM_IOMUXC_NAND_CE1_B_USDHC3_STROBE 0x194
>;
};
pinctrl_usdhc3_200mhz: usdhc3grp200mhz {
fsl,pins = <
MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK 0x40000196
MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d6
MX8MM_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d6
MX8MM_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d6
MX8MM_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d6
MX8MM_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d6
MX8MM_IOMUXC_NAND_RE_B_USDHC3_DATA4 0x1d6
MX8MM_IOMUXC_NAND_CE2_B_USDHC3_DATA5 0x1d6
MX8MM_IOMUXC_NAND_CE3_B_USDHC3_DATA6 0x1d6
MX8MM_IOMUXC_NAND_CLE_USDHC3_DATA7 0x1d6
MX8MM_IOMUXC_NAND_CE1_B_USDHC3_STROBE 0x196
>;
};
pinctrl_wdog: wdoggrp {
fsl,pins = <
MX8MM_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B 0xc6
>;
};
};
};
&i2c1 {
clock-frequency = <400000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c1>;
status = "okay";
pmic: bd71837@4b {
reg = <0x4b>;
compatible = "rohm,bd71837";
/* PMIC BD71837 PMIC_nINT GPIO1_IO3 */
pinctrl-0 = <&pinctrl_pmic>;
gpio_intr = <&gpio1 3 GPIO_ACTIVE_LOW>;
gpo {
rohm,drv = <0x0C>; /* 0b0000_1100 all gpos with cmos output mode */
};
regulators {
#address-cells = <1>;
#size-cells = <0>;
bd71837,pmic-buck2-uses-i2c-dvs;
bd71837,pmic-buck2-dvs-voltage = <1000000>, <900000>, <0>; /* VDD_ARM: Run-Idle */
buck1_reg: regulator@0 {
reg = <0>;
regulator-compatible = "buck1";
regulator-min-microvolt = <700000>;
regulator-max-microvolt = <1300000>;
regulator-boot-on;
regulator-always-on;
regulator-ramp-delay = <1250>;
};
buck2_reg: regulator@1 {
reg = <1>;
regulator-compatible = "buck2";
regulator-min-microvolt = <700000>;
regulator-max-microvolt = <1300000>;
regulator-boot-on;
regulator-always-on;
regulator-ramp-delay = <1250>;
};
buck3_reg: regulator@2 {
reg = <2>;
regulator-compatible = "buck3";
regulator-min-microvolt = <700000>;
regulator-max-microvolt = <1300000>;
};
buck4_reg: regulator@3 {
reg = <3>;
regulator-compatible = "buck4";
regulator-min-microvolt = <700000>;
regulator-max-microvolt = <1300000>;
};
buck5_reg: regulator@4 {
reg = <4>;
regulator-compatible = "buck5";
regulator-min-microvolt = <700000>;
regulator-max-microvolt = <1350000>;
regulator-boot-on;
regulator-always-on;
};
buck6_reg: regulator@5 {
reg = <5>;
regulator-compatible = "buck6";
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3300000>;
regulator-boot-on;
regulator-always-on;
};
buck7_reg: regulator@6 {
reg = <6>;
regulator-compatible = "buck7";
regulator-min-microvolt = <1605000>;
regulator-max-microvolt = <1995000>;
regulator-boot-on;
regulator-always-on;
};
buck8_reg: regulator@7 {
reg = <7>;
regulator-compatible = "buck8";
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <1400000>;
regulator-boot-on;
regulator-always-on;
};
ldo1_reg: regulator@8 {
reg = <8>;
regulator-compatible = "ldo1";
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3300000>;
regulator-boot-on;
regulator-always-on;
};
ldo2_reg: regulator@9 {
reg = <9>;
regulator-compatible = "ldo2";
regulator-min-microvolt = <900000>;
regulator-max-microvolt = <900000>;
regulator-boot-on;
regulator-always-on;
};
ldo3_reg: regulator@10 {
reg = <10>;
regulator-compatible = "ldo3";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-boot-on;
regulator-always-on;
};
ldo4_reg: regulator@11 {
reg = <11>;
regulator-compatible = "ldo4";
regulator-min-microvolt = <900000>;
regulator-max-microvolt = <1800000>;
regulator-boot-on;
regulator-always-on;
};
ldo5_reg: regulator@12 {
reg = <12>;
regulator-compatible = "ldo5";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
};
ldo6_reg: regulator@13 {
reg = <13>;
regulator-compatible = "ldo6";
regulator-min-microvolt = <900000>;
regulator-max-microvolt = <1800000>;
regulator-boot-on;
regulator-always-on;
};
ldo7_reg: regulator@14 {
reg = <14>;
regulator-compatible = "ldo7";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
};
};
};
};
&i2c2 {
clock-frequency = <400000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2>;
status = "okay";
typec_ptn5110_1: ptn5110@50 {
compatible = "usb,tcpci";
reg = <0x50>;
src-pdos = <0x380190c8>;
snk-pdos = <0x380190c8 0x3802d0c8>;
max-snk-mv = <9000>;
max-snk-ma = <2000>;
op-snk-mw = <9000>;
max-snk-mw = <18000>;
port-type = "drp";
default-role = "sink";
};
typec_ptn5110_2: ptn5110@52 {
compatible = "usb,tcpci";
reg = <0x52>;
src-pdos = <0x380190c8>;
snk-pdos = <0x380190c8 0x3802d0c8>;
max-snk-mv = <9000>;
max-snk-ma = <2000>;
op-snk-mw = <9000>;
max-snk-mw = <18000>;
port-type = "drp";
default-role = "sink";
};
};
&i2c3 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3>;
status = "okay";
};
&flexspi0 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_flexspi0>;
status = "okay";
flash0: n25q256a@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <1>;
compatible = "spi-flash";
spi-max-frequency = <29000000>;
spi-nor,ddr-quad-read-dummy = <8>;
};
};
&fec1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_fec1>;
phy-mode = "rgmii-id";
phy-handle = <&ethphy0>;
fsl,magic-packet;
status = "okay";
mdio {
#address-cells = <1>;
#size-cells = <0>;
ethphy0: ethernet-phy@0 {
compatible = "ethernet-phy-ieee802.3-c22";
reg = <0>;
at803x,led-act-blind-workaround;
at803x,eee-okay;
at803x,vddio-1p8v;
};
};
};
&uart2 { /* console */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart2>;
status = "okay";
};
&usdhc1 {
#if 0
pinctrl-names = "default", "state_100mhz", "state_200mhz";
#else
pinctrl-names = "default";
#endif
pinctrl-0 = <&pinctrl_usdhc1>, <&pinctrl_usdhc1_gpio>;
pinctrl-1 = <&pinctrl_usdhc1_100mhz>, <&pinctrl_usdhc1_gpio>;
pinctrl-2 = <&pinctrl_usdhc1_200mhz>, <&pinctrl_usdhc1_gpio>;
bus-width = <8>;
non-removable;
status = "okay";
};
&usdhc2 {
#if 0
pinctrl-names = "default", "state_100mhz", "state_200mhz";
#else
pinctrl-names = "default";
#endif
pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
bus-width = <4>;
non-removable;
vmmc-supply = <&reg_usdhc2_vmmc>;
status = "okay";
};
&usdhc3 {
#if 0
pinctrl-names = "default", "state_100mhz", "state_200mhz";
#else
pinctrl-names = "default";
#endif
pinctrl-0 = <&pinctrl_usdhc3>;
pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
bus-width = <8>;
non-removable;
status = "okay";
};
&wdog1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_wdog>;
fsl,ext-reset-output;
status = "okay";
};
&A53_0 {
arm-supply = <&buck2_reg>;
};
&usbotg1 {
status = "okay";
extcon = <&typec_ptn5110_1>;
};
&usbotg2 {
status = "okay";
extcon = <&typec_ptn5110_2>;
};
/*
* Copyright 2017-2018 NXP
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include "fsl-imx8-ca53.dtsi"
#include <dt-bindings/clock/imx8mm-clock.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/pinctrl/pins-imx8mm.h>
#include <dt-bindings/thermal/thermal.h>
/ {
compatible = "fsl,imx8mm";
interrupt-parent = <&gpc>;
#address-cells = <2>;
#size-cells = <2>;
aliases {
ethernet0 = &fec1;
i2c0 = &i2c1;
i2c1 = &i2c2;
i2c2 = &i2c3;
i2c3 = &i2c4;
serial0 = &uart1;
serial1 = &uart2;
serial2 = &uart3;
mmc0 = &usdhc1;
mmc1 = &usdhc2;
mmc2 = &usdhc3;
gpio0 = &gpio1;
gpio1 = &gpio2;
gpio2 = &gpio3;
gpio3 = &gpio4;
gpio4 = &gpio5;
spi0 = &flexspi0;
usb0 = &usbotg1;
usb1 = &usbotg2;
};
cpus {
idle-states {
entry-method = "psci";
CPU_SLEEP: cpu-sleep {
compatible = "arm,idle-state";
arm,psci-suspend-param = <0x0010033>;
local-timer-stop;
entry-latency-us = <1000>;
exit-latency-us = <700>;
min-residency-us = <2700>;
wakeup-latency-us = <1500>;
};
};
};
memory@40000000 {
device_type = "memory";
reg = <0x0 0x40000000 0 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
/* global autoconfigured region for contiguous allocations */
linux,cma {
compatible = "shared-dma-pool";
reusable;
size = <0 0x28000000>;
alloc-ranges = <0 0x40000000 0 0x80000000>;
linux,cma-default;
};
};
gic: interrupt-controller@38800000 {
compatible = "arm,gic-v3";
reg = <0x0 0x38800000 0 0x10000>, /* GIC Dist */
<0x0 0x38880000 0 0xC0000>; /* GICR (RD_base + SGI_base) */
#interrupt-cells = <3>;
interrupt-controller;
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&gic>;
};
timer {
compatible = "arm,armv8-timer";
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>, /* Physical Secure */
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>, /* Physical Non-Secure */
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>, /* Virtual */
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>; /* Hypervisor */
clock-frequency = <8000000>;
interrupt-parent = <&gic>;
};
clocks {
#address-cells = <1>;
#size-cells = <0>;
osc_32k: clock@0 {
compatible = "fixed-clock";
reg = <0>;
#clock-cells = <0>;
clock-frequency = <32768>;
clock-output-names = "osc_32k";
};
osc_24m: clock@1 {
compatible = "fixed-clock";
reg = <1>;
#clock-cells = <0>;
clock-frequency = <24000000>;
clock-output-names = "osc_24m";
};
clk_ext1: clock@2 {
compatible = "fixed-clock";
reg = <3>;
#clock-cells = <0>;
clock-frequency = <133000000>;
clock-output-names = "clk_ext1";
};
clk_ext2: clock@3 {
compatible = "fixed-clock";
reg = <4>;
#clock-cells = <0>;
clock-frequency = <133000000>;
clock-output-names = "clk_ext2";
};
clk_ext3: clock@4 {
compatible = "fixed-clock";
reg = <5>;
#clock-cells = <0>;
clock-frequency = <133000000>;
clock-output-names = "clk_ext3";
};
clk_ext4: clock@5 {
compatible = "fixed-clock";
reg = <6>;
#clock-cells = <0>;
clock-frequency= <133000000>;
clock-output-names = "clk_ext4";
};
};
mipi_pd: gpc_power_domain@0 {
compatible = "fsl,imx8mm-pm-domain";
#power-domain-cells = <0>;
domain-id = <0>;
domain-name = "MIPI_PD";
};
pcie0_pd: gpc_power_domain@1 {
compatible = "fsl,imx8mm-pm-domain";
#power-domain-cells = <0>;
domain-id = <1>;
domain-name = "PCIE0_PD";
};
usb_otg1_pd: gpc_power_domain@2 {
compatible = "fsl,imx8mm-pm-domain";
#power-domain-cells = <0>;
domain-id = <2>;
domain-name = "USB_OTG1_PD";
};
usb_otg2_pd: gpc_power_domain@3 {
compatible = "fsl,imx8mm-pm-domain";
#power-domain-cells = <0>;
domain-id = <3>;
domain-name = "USB_OTG2_PD";
};
gpu_2d_pd: gpc_power_domain@4 {
compatible = "fsl,imx8mm-pm-domain";
#power-domain-cells = <0>;
domain-id = <4>;
domain-name = "GPU_2D_PD";
};
gpu_mix_pd: gpc_power_domain@5 {
compatible = "fsl,imx8mm-pm-domain";
#power-domain-cells = <0>;
domain-id = <5>;
domain-name = "GPU_MIX_PD";
};
vpu_mix_pd: gpc_power_domain@6 {
compatible = "fsl,imx8mm-pm-domain";
#power-domain-cells = <0>;
domain-id = <6>;
domain-name = "VPU_MIX_PD";
};
disp_mix_pd: gpc_power_domain@7 {
compatible = "fsl,imx8mm-pm-domain";
#power-domain-cells = <0>;
domain-id = <7>;
domain-name = "DISP_MIX_PD";
};
vpu_g1_pd: gpc_power_domain@8 {
compatible = "fsl,imx8mm-pm-domain";
#power-domain-cells = <0>;
domain-id = <8>;
domain-name = "VPU_G1_PD";
};
vpu_g2_pd: gpc_power_domain@9 {
compatible = "fsl,imx8mm-pm-domain";
#power-domain-cells = <0>;
domain-id = <9>;
domain-name = "VPU_G2_PD";
};
vpu_h1_pd: gpc_power_domain@10 {
compatible = "fsl,imx8mm-pm-domain";
#power-domain-cells = <0>;
domain-id = <10>;
domain-name = "VPU_H1_PD";
};
gpio1: gpio@30200000 {
compatible = "fsl,imx8mm-gpio", "fsl,imx35-gpio";
reg = <0x0 0x30200000 0x0 0x10000>;
interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio2: gpio@30210000 {
compatible = "fsl,imx8mm-gpio", "fsl,imx35-gpio";
reg = <0x0 0x30210000 0x0 0x10000>;
interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio3: gpio@30220000 {
compatible = "fsl,imx8mm-gpio", "fsl,imx35-gpio";
reg = <0x0 0x30220000 0x0 0x10000>;
interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio4: gpio@30230000 {
compatible = "fsl,imx8mm-gpio", "fsl,imx35-gpio";
reg = <0x0 0x30230000 0x0 0x10000>;
interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio5: gpio@30240000 {
compatible = "fsl,imx8mm-gpio", "fsl,imx35-gpio";
reg = <0x0 0x30240000 0x0 0x10000>;
interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
tmu: tmu@30260000 {
compatible = "fsl,imx8mm-tmu";
reg = <0x0 0x30260000 0x0 0x10000>;
interrupt = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
little-endian;
u-boot,dm-pre-reloc;
#thermal-sensor-cells = <0>;
};
thermal-zones {
/* cpu thermal */
cpu-thermal {
polling-delay-passive = <250>;
polling-delay = <2000>;
thermal-sensors = <&tmu>;
trips {
cpu_alert0: trip0 {
temperature = <85000>;
hysteresis = <2000>;
type = "passive";
};
cpu_crit0: trip1 {
temperature = <95000>;
hysteresis = <2000>;
type = "critical";
};
};
cooling-maps {
map0 {
trip = <&cpu_alert0>;
cooling-device =
<&A53_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
};
};
};
};
iomuxc: pinctrl@30330000 {
compatible = "fsl,imx8mm-iomuxc";
reg = <0x0 0x30330000 0x0 0x10000>;
};
gpr: iomuxc-gpr@30340000 {
compatible = "fsl,imx8mm-iomuxc-gpr", "fsl,imx7d-iomuxc-gpr", "syscon";
reg = <0x0 0x30340000 0x0 0x10000>;
};
anatop: anatop@30360000 {
compatible = "fsl,imx8mm-anatop", "syscon", "simple-bus";
reg = <0x0 0x30360000 0x0 0x10000>;
};
snvs: snvs@30370000 {
compatible = "fsl,sec-v4.0-mon","syscon", "simple-mfd";
reg = <0x0 0x30370000 0x0 0x10000>;
snvs_rtc: snvs-rtc-lp{
compatible = "fsl,sec-v4.0-mon-rtc-lp";
regmap =<&snvs>;
offset = <0x34>;
interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
};
snvs_pwrkey: snvs-powerkey {
compatible = "fsl,sec-v4.0-pwrkey";
regmap = <&snvs>;
interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
linux,keycode = <KEY_POWER>;
wakeup-source;
};
};
clk: clock-controller@30380000 {
compatible = "fsl,imx8mm-ccm";
reg = <0x0 0x30380000 0x0 0x10000>;
#clock-cells = <1>;
clocks = <&osc_32k>, <&osc_24m>, <&clk_ext1>, <&clk_ext2>,
<&clk_ext3>, <&clk_ext4>;
clock-names = "osc_32k", "osc_24m", "clk_ext1", "clk_ext2",
"clk_ext3", "clk_ext4";
};
src: src@30390000 {
compatible = "fsl,imx8mm-src", "fsl,imx8mq-src", "syscon";
reg = <0x0 0x30390000 0x0 0x10000>;
interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
#reset-cells = <1>;
};
gpc: gpc@303a0000 {
compatible = "fsl,imx8mm-gpc", "fsl,imx8mq-gpc", "syscon";
reg = <0x0 0x303a0000 0x0 0x10000>;
interrupt-controller;
interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
#interrupt-cells = <3>;
interrupt-parent = <&gic>;
};
system_counter: timer@306a0000 {
compatible = "nxp,sysctr-timer";
reg = <0x0 0x306a0000 0x0 0x10000>, /* system-counter-rd base */
<0x0 0x306b0000 0x0 0x10000>, /* system-counter-cmp base */
<0x0 0x306c0000 0x0 0x10000>; /* system-counter-ctrl base */
clock-frequency = <8000000>;
interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
};
uart1: serial@30860000 {
compatible = "fsl,imx8mm-uart",
"fsl,imx6q-uart", "fsl,imx21-uart";
reg = <0x0 0x30860000 0x0 0x10000>;
interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&gpc>;
clocks = <&clk IMX8MM_CLK_UART1_ROOT>,
<&clk IMX8MM_CLK_UART1_ROOT>;
clock-names = "ipg", "per";
status = "disabled";
};
uart3: serial@30880000 {
compatible = "fsl,imx8mm-uart",
"fsl,imx6q-uart", "fsl,imx21-uart";
reg = <0x0 0x30880000 0x0 0x10000>;
interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&gpc>;
clocks = <&clk IMX8MM_CLK_UART3_ROOT>,
<&clk IMX8MM_CLK_UART3_ROOT>;
clock-names = "ipg", "per";
status = "disabled";
};
uart2: serial@30890000 {
compatible = "fsl,imx8mm-uart",
"fsl,imx6q-uart", "fsl,imx21-uart";
reg = <0x0 0x30890000 0x0 0x10000>;
interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&gpc>;
clocks = <&clk IMX8MM_CLK_UART2_ROOT>,
<&clk IMX8MM_CLK_UART2_ROOT>;
clock-names = "ipg", "per";
status = "disabled";
};
i2c1: i2c@30a20000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,imx8mm-i2c", "fsl,imx21-i2c";
reg = <0x0 0x30a20000 0x0 0x10000>;
interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_I2C1_ROOT>;
status = "disabled";
};
i2c2: i2c@30a30000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,imx8mm-i2c", "fsl,imx21-i2c";
reg = <0x0 0x30a30000 0x0 0x10000>;
interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_I2C2_ROOT>;
status = "disabled";
};
i2c3: i2c@30a40000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,imx8mm-i2c", "fsl,imx21-i2c";
reg = <0x0 0x30a40000 0x0 0x10000>;
interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_I2C3_ROOT>;
status = "disabled";
};
i2c4: i2c@30a50000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,imx8mm-i2c", "fsl,imx21-i2c";
reg = <0x0 0x30a50000 0x0 0x10000>;
interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_I2C4_ROOT>;
status = "disabled";
};
usbotg1: usb@32e40000 {
compatible = "fsl,imx7d-usb", "fsl,imx27-usb";
reg = <0x0 0x32e40000 0x0 0x200>;
interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_USB1_CTRL_ROOT>;
clock-names = "usb1_ctrl_root_clk";
assigned-clocks = <&clk IMX8MM_CLK_USB_BUS_SRC>,
<&clk IMX8MM_CLK_USB_CORE_REF_SRC>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_500M>,
<&clk IMX8MM_SYS_PLL1_100M>;
fsl,usbphy = <&usbphynop1>;
fsl,usbmisc = <&usbmisc1 0>;
status = "disabled";
};
usbphynop1: usbphynop1 {
compatible = "usb-nop-xceiv";
clocks = <&clk IMX8MM_CLK_USB_PHY_REF_SRC>;
assigned-clocks = <&clk IMX8MM_CLK_USB_PHY_REF_SRC>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_100M>;
clock-names = "main_clk";
};
usbmisc1: usbmisc@32e40200 {
#index-cells = <1>;
compatible = "fsl,imx7d-usbmisc", "fsl,imx6q-usbmisc";
reg = <0x0 0x32e40200 0x0 0x200>;
};
usbotg2: usb@32e50000 {
compatible = "fsl,imx7d-usb", "fsl,imx27-usb";
reg = <0x0 0x32e50000 0x0 0x200>;
interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_USB1_CTRL_ROOT>;
clock-names = "usb1_ctrl_root_clk";
assigned-clocks = <&clk IMX8MM_CLK_USB_BUS_SRC>,
<&clk IMX8MM_CLK_USB_CORE_REF_SRC>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_500M>,
<&clk IMX8MM_SYS_PLL1_100M>;
fsl,usbphy = <&usbphynop2>;
fsl,usbmisc = <&usbmisc2 0>;
status = "disabled";
};
usbphynop2: usbphynop2 {
compatible = "usb-nop-xceiv";
clocks = <&clk IMX8MM_CLK_USB_PHY_REF_SRC>;
assigned-clocks = <&clk IMX8MM_CLK_USB_PHY_REF_SRC>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_100M>;
clock-names = "main_clk";
};
usbmisc2: usbmisc@32e50200 {
#index-cells = <1>;
compatible = "fsl,imx7d-usbmisc", "fsl,imx6q-usbmisc";
reg = <0x0 0x32e50200 0x0 0x200>;
};
usdhc1: mmc@30b40000 {
compatible = "fsl,imx8mq-usdhc", "fsl,imx7d-usdhc";
reg = <0x0 0x30b40000 0x0 0x10000>;
interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_DUMMY>,
<&clk IMX8MM_CLK_NAND_USDHC_BUS_DIV>,
<&clk IMX8MM_CLK_USDHC1_ROOT>;
clock-names = "ipg", "ahb", "per";
assigned-clocks = <&clk IMX8MM_CLK_USDHC1_DIV>;
assigned-clock-rates = <400000000>;
fsl,tuning-start-tap = <20>;
fsl,tuning-step= <2>;
bus-width = <4>;
status = "disabled";
};
usdhc2: mmc@30b50000 {
compatible = "fsl,imx8mq-usdhc", "fsl,imx7d-usdhc";
reg = <0x0 0x30b50000 0x0 0x10000>;
interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_DUMMY>,
<&clk IMX8MM_CLK_NAND_USDHC_BUS_DIV>,
<&clk IMX8MM_CLK_USDHC2_ROOT>;
clock-names = "ipg", "ahb", "per";
fsl,tuning-start-tap = <20>;
fsl,tuning-step= <2>;
bus-width = <4>;
status = "disabled";
};
usdhc3: mmc@30b60000 {
compatible = "fsl,imx8mq-usdhc", "fsl,imx7d-usdhc";
reg = <0x0 0x30b60000 0x0 0x10000>;
interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_DUMMY>,
<&clk IMX8MM_CLK_NAND_USDHC_BUS_DIV>,
<&clk IMX8MM_CLK_USDHC3_ROOT>;
clock-names = "ipg", "ahb", "per";
assigned-clocks = <&clk IMX8MM_CLK_USDHC3_ROOT>;
assigned-clock-rates = <400000000>;
fsl,tuning-start-tap = <20>;
fsl,tuning-step= <2>;
bus-width = <4>;
status = "disabled";
};
sai1: sai@30010000 {
compatible = "fsl,imx8mq-sai",
"fsl,imx6sx-sai";
reg = <0x0 0x30010000 0x0 0x10000>;
interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_SAI1_IPG>,
<&clk IMX8MM_CLK_DUMMY>,
<&clk IMX8MM_CLK_SAI1_ROOT>,
<&clk IMX8MM_CLK_DUMMY>, <&clk IMX8MM_CLK_DUMMY>;
clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
dmas = <&sdma2 0 24 0>, <&sdma2 1 24 0>;
dma-names = "rx", "tx";
fsl,dataline = <0xff 0xff>;
status = "disabled";
};
sai2: sai@30020000 {
compatible = "fsl,imx8mq-sai",
"fsl,imx6sx-sai";
reg = <0x0 0x30020000 0x0 0x10000>;
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_SAI2_IPG>,
<&clk IMX8MM_CLK_DUMMY>,
<&clk IMX8MM_CLK_SAI2_ROOT>,
<&clk IMX8MM_CLK_DUMMY>, <&clk IMX8MM_CLK_DUMMY>;
clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
dmas = <&sdma2 2 24 0>, <&sdma2 3 24 0>;
dma-names = "rx", "tx";
status = "disabled";
};
sai3: sai@30030000 {
compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai", "fsl,imx6sx-sai";
reg = <0x0 0x30030000 0x0 0x10000>;
interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_SAI3_IPG>,
<&clk IMX8MM_CLK_DUMMY>,
<&clk IMX8MM_CLK_SAI3_ROOT>,
<&clk IMX8MM_CLK_DUMMY>, <&clk IMX8MM_CLK_DUMMY>;
clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
dmas = <&sdma2 4 24 0>, <&sdma2 5 24 0>;
dma-names = "rx", "tx";
status = "disabled";
};
sai5: sai@30050000 {
compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai", "fsl,imx6sx-sai";
reg = <0x0 0x30050000 0x0 0x10000>;
interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_SAI5_IPG>,
<&clk IMX8MM_CLK_DUMMY>,
<&clk IMX8MM_CLK_SAI5_ROOT>,
<&clk IMX8MM_CLK_DUMMY>, <&clk IMX8MM_CLK_DUMMY>;
clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
dmas = <&sdma2 8 24 0>, <&sdma2 9 24 0>;
dma-names = "rx", "tx";
fsl,shared-interrupt;
fsl,dataline = <0xf 0xf>;
status = "disabled";
};
sai6: sai@30060000 {
compatible = "fsl,imx8mq-sai",
"fsl,imx6sx-sai";
reg = <0x0 0x30060000 0x0 0x10000>;
interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_SAI6_IPG>,
<&clk IMX8MM_CLK_DUMMY>,
<&clk IMX8MM_CLK_SAI6_ROOT>,
<&clk IMX8MM_CLK_DUMMY>, <&clk IMX8MM_CLK_DUMMY>;
clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
dmas = <&sdma2 10 24 0>, <&sdma2 11 24 0>;
dma-names = "rx", "tx";
fsl,shared-interrupt;
status = "disabled";
};
micfil: micfil@30080000 {
compatible = "fsl,imx9mq-micfil";
reg = <0x0 0x30080000 0x0 0x10000>;
interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_PDM_IPG>,
<&clk IMX8MM_CLK_PDM_ROOT>;
clock-names = "ipg_clk", "ipg_clk_app";
dmas = <&sdma2 24 24 0>;
dma-names = "rx";
status = "disabled";
};
spdif1: spdif@30090000 {
compatible = "fsl,imx8mm-spdif", "fsl,imx8mq-spdif", "fsl,imx35-spdif";
reg = <0x0 0x30090000 0x0 0x10000>;
interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_IPG_AUDIO_ROOT>, /* core */
<&clk IMX8MM_CLK_24M>, /* rxtx0 */
<&clk IMX8MM_CLK_SPDIF1_DIV>, /* rxtx1 */
<&clk IMX8MM_CLK_DUMMY>, /* rxtx2 */
<&clk IMX8MM_CLK_DUMMY>, /* rxtx3 */
<&clk IMX8MM_CLK_DUMMY>, /* rxtx4 */
<&clk IMX8MM_CLK_IPG_AUDIO_ROOT>, /* rxtx5 */
<&clk IMX8MM_CLK_DUMMY>, /* rxtx6 */
<&clk IMX8MM_CLK_DUMMY>, /* rxtx7 */
<&clk IMX8MM_CLK_DUMMY>; /* spba */
clock-names = "core", "rxtx0",
"rxtx1", "rxtx2",
"rxtx3", "rxtx4",
"rxtx5", "rxtx6",
"rxtx7", "spba";
dmas = <&sdma2 28 18 0>, <&sdma2 29 18 0>;
dma-names = "rx", "tx";
status = "disabled";
};
sdma1: dma-controller@30bd0000 {
compatible = "fsl,imx8mm-sdma", "fsl,imx8mq-sdma", "fsl,imx7d-sdma";
reg = <0x0 0x30bd0000 0x0 0x10000>;
interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_SDMA1_ROOT>,
<&clk IMX8MM_CLK_SDMA1_ROOT>;
clock-names = "ipg", "ahb";
#dma-cells = <3>;
fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
status = "okay";
};
sdma2: dma-controller@302c0000 {
compatible = "fsl,imx8mm-sdma", "fsl,imx8mq-sdma", "fsl,imx7d-sdma";
reg = <0x0 0x302c0000 0x0 0x10000>;
interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_SDMA2_ROOT>,
<&clk IMX8MM_CLK_SDMA2_ROOT>;
clock-names = "ipg", "ahb";
#dma-cells = <3>;
fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
fsl,ratio-1-1;
status = "okay";
};
sdma3: dma-controller@302b0000 {
compatible = "fsl,imx8mm-sdma", "fsl,imx8mq-sdma", "fsl,imx7d-sdma";
reg = <0x0 0x302b0000 0x0 0x10000>;
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_SDMA3_ROOT>,
<&clk IMX8MM_CLK_SDMA3_ROOT>;
clock-names = "ipg", "ahb";
#dma-cells = <3>;
fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
fsl,ratio-1-1;
status = "okay";
};
wdog1: wdog@30280000 {
compatible = "fsl,imx21-wdt";
reg = <0 0x30280000 0 0x10000>;
interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_WDOG1_ROOT>;
status = "disabled";
};
wdog2: wdog@30290000 {
compatible = "fsl,imx21-wdt";
reg = <0 0x30290000 0 0x10000>;
interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_WDOG2_ROOT>;
status = "disabled";
};
wdog3: wdog@302a0000 {
compatible = "fsl,imx21-wdt";
reg = <0 0x302a0000 0 0x10000>;
interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_WDOG3_ROOT>;
status = "disabled";
};
fec1: ethernet@30be0000 {
compatible = "fsl,imx8mm-fec", "fsl,imx8mq-fec", "fsl,imx6sx-fec";
reg = <0x0 0x30be0000 0x0 0x10000>;
interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_ENET1_ROOT>,
<&clk IMX8MM_CLK_ENET1_ROOT>,
<&clk IMX8MM_CLK_ENET_TIMER_DIV>,
<&clk IMX8MM_CLK_ENET_REF_DIV>,
<&clk IMX8MM_CLK_ENET_PHY_REF_DIV>;
clock-names = "ipg", "ahb", "ptp",
"enet_clk_ref", "enet_out";
assigned-clocks = <&clk IMX8MM_CLK_ENET_AXI_SRC>,
<&clk IMX8MM_CLK_ENET_TIMER_SRC>,
<&clk IMX8MM_CLK_ENET_REF_SRC>,
<&clk IMX8MM_CLK_ENET_TIMER_DIV>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_266M>,
<&clk IMX8MM_SYS_PLL2_100M>,
<&clk IMX8MM_SYS_PLL2_125M>;
assigned-clock-rates = <0>, <0>, <125000000>, <100000000>;
stop-mode = <&gpr 0x10 3>;
fsl,num-tx-queues=<3>;
fsl,num-rx-queues=<3>;
fsl,wakeup_irq = <2>;
status = "disabled";
};
flexspi0: flexspi@30bb0000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,imx8qm-flexspi";
reg = <0x0 0x30bb0000 0x0 0x10000>,
<0x0 0x08000000 0x0 0x19ffffff>;
reg-names = "FlexSPI", "FlexSPI-memory";
interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_QSPI_ROOT>,
<&clk IMX8MM_CLK_QSPI_ROOT>;
clock-names = "qspi_en", "qspi";
status = "disabled";
};
dma_cap: dma_cap {
compatible = "dma-capability";
only-dma-mask32 = <1>;
};
imx_ion {
compatible = "fsl,mxc-ion";
fsl,heap-id = <0>;
};
lcdif: lcdif@32E00000 {
compatible = "fsl,imx8mm-lcdif", "fsl,imx28-lcdif";
reg = <0x0 0x32e00000 0x0 0x10000>;
clocks = <&clk IMX8MM_CLK_LCDIF_PIXEL_DIV>;
clock-names = "pix";
assigned-clocks = <&clk IMX8MM_CLK_LCDIF_PIXEL_SRC>;
assigned-clock-parents = <&clk IMX8MM_VIDEO_PLL1_OUT>;
assigned-clock-rate = <594000000>;
interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
max-res = <1920>, <1080>;
status = "disabled";
port@0 {
lcdif_mipi_dsi: mipi-dsi-endpoint {
remote-endpoint = <&mipi_dsi_in>;
};
};
};
mipi_dsi_phy: dsi_phy@32e10300 {
compatible = "mixel,imx8mm-mipi-dsi-phy",
"mixel,imx8mq-mipi-dsi-phy";
reg = <0x0 0x32e10300 0x0 0x100>;
#phy-cells = <0>;
status = "disabled";
};
mipi_dsi_bridge: mipi_dsi_bridge@32E10000 {
compatible = "nwl,mipi-dsi";
reg = <0x0 0x32e10000 0x0 0x400>;
interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_DSI_PHY_REF_DIV>,
<&clk IMX8MM_CLK_DSI_ESC_RX_DIV>,
<&clk IMX8MM_CLK_IPG_DSI_ESC_RX_ROOT>;
clock-names = "phy_ref", "rx_esc", "tx_esc";
assigned-clocks = <&clk IMX8MM_CLK_DSI_ESC_RX_SRC>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_80M>;
assigned-clock-rates = <80000000>;
phys = <&mipi_dsi_phy>;
phy-names = "dphy";
status = "disabled";
port@0 {
mipi_dsi_bridge_in: endpoint {
remote-endpoint = <&mipi_dsi_out>;
};
};
};
mipi_dsi: mipi_dsi@32E10000 {
compatible = "fsl,imx8mm-mipi-dsi_drm", "fsl,imx8mq-mipi-dsi_drm";
clocks = <&clk IMX8MM_CLK_DSI_CORE_DIV>,
<&clk IMX8MM_CLK_DSI_PHY_REF_DIV>;
clock-names = "core", "phy_ref";
assigned-clocks = <&clk IMX8MM_CLK_DSI_CORE_SRC>,
<&clk IMX8MM_CLK_DSI_PHY_REF_SRC>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_266M>,
<&clk IMX8MM_VIDEO_PLL1_OUT>;
assigned-clock-rates = <266000000>, <594000000>;
src = <&src>;
mux-sel = <&gpr>;
phys = <&mipi_dsi_phy>;
phys-names = "dphy";
status = "disabled";
port@0 {
mipi_dsi_out: endpoint {
remote-endpoint = <&mipi_dsi_bridge_in>;
};
};
port@1 {
mipi_dsi_in: endpoint {
remote-endpoint = <&lcdif_mipi_dsi>;
};
};
};
vpu_h1: vpu_h1@38320000 {
compatible = "nxp,imx8mq-hantro-h1";
reg = <0x0 0x38320000 0x0 0x10000>;
reg-names = "regs_hantro_h1";
interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "irq_hantro_h1";
clocks = <&clk IMX8MM_CLK_VPU_H1_ROOT>;
clock-names = "clk_hantro_h1";
power-domains = <&vpu_h1_pd>;
assigned-clocks = <&clk IMX8MM_CLK_VPU_H1_SRC>;
assigned-clock-parents = <&clk IMX8MM_VPU_PLL_OUT>;
assigned-clock-rates = <600000000>;
status = "disabled";
};
vpu_g1: vpu_g1@38300000 {
compatible = "nxp,imx8mq-hantro";
reg = <0x0 0x38300000 0x0 0x100000>;
reg-names = "regs_hantro";
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "irq_hantro";
clocks = <&clk IMX8MM_CLK_VPU_G1_ROOT>, <&clk IMX8MM_CLK_VPU_DEC_ROOT>;
clock-names = "clk_hantro", "clk_hantro_bus";
assigned-clocks = <&clk IMX8MM_CLK_VPU_G1_SRC>, <&clk IMX8MM_CLK_VPU_BUS_SRC>;
assigned-clock-parents = <&clk IMX8MM_VPU_PLL_OUT>, <&clk IMX8MM_SYS_PLL1_800M>;
assigned-clock-rates = <600000000>, <800000000>;
power-domains = <&vpu_g1_pd>;
status = "disabled";
};
vpu_g2: vpu_g2@38310000 {
compatible = "nxp,imx8mq-hantro";
reg = <0x0 0x38310000 0x0 0x100000>;
reg-names = "regs_hantro";
interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "irq_hantro";
clocks = <&clk IMX8MM_CLK_VPU_G2_ROOT>, <&clk IMX8MM_CLK_VPU_DEC_ROOT>;
clock-names = "clk_hantro", "clk_hantro_bus";
assigned-clocks = <&clk IMX8MM_CLK_VPU_G2_SRC>, <&clk IMX8MM_CLK_VPU_BUS_SRC>;
assigned-clock-parents = <&clk IMX8MM_VPU_PLL_OUT>, <&clk IMX8MM_SYS_PLL1_800M>;
assigned-clock-rates = <600000000>, <800000000>;
power-domains = <&vpu_g2_pd>;
status = "disabled";
};
};
&A53_0 {
operating-points = <
/* kHz uV */
1800000 1000000
1600000 900000
1200000 800000
>;
clocks = <&clk IMX8MM_CLK_A53_DIV>, <&clk IMX8MM_CLK_A53_SRC>,
<&clk IMX8MM_ARM_PLL>, <&clk IMX8MM_ARM_PLL_OUT>,
<&clk IMX8MM_SYS_PLL1_800M>;
clock-names = "a53", "arm_a53_src", "arm_pll",
"arm_pll_out", "sys1_pll_800m";
clock-latency = <61036>;
#cooling-cells = <2>;
};
/*
* Copyright 2018 Boundary Devices
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
/dts-v1/;
#include "fsl-imx8mm.dtsi"
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog>;
pinctrl_bt_rfkill: bt-rfkillgrp {
fsl,pins = <
#define GP_BT_RFKILL_RESET <&gpio3 14 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_NAND_DQS_GPIO3_IO14 0x119
>;
};
pinctrl_fec1: fec1grp {
fsl,pins = <
/* PAD_CTL_ODE is screwy on 8mm mini, avoid it */
#define GP_MII_MDC <&gpio1 16 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_ENET_MDC_GPIO1_IO16 0x00
#define GP_MII_MDIO <&gpio1 17 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_ENET_MDIO_GPIO1_IO17 0x00
MX8MM_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x91
MX8MM_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x91
MX8MM_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x91
MX8MM_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0x91
MX8MM_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x91
MX8MM_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x91
MX8MM_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x1f
MX8MM_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x1f
MX8MM_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x1f
MX8MM_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x1f
MX8MM_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x1f
MX8MM_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x1f
#define GP_FEC1_RESET <&gpio3 15 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_NAND_RE_B_GPIO3_IO15 0x159
#define GPIRQ_FEC1_PHY <&gpio3 16 IRQ_TYPE_LEVEL_LOW>
MX8MM_IOMUXC_NAND_READY_B_GPIO3_IO16 0x159
>;
};
pinctrl_hog: hoggrp {
fsl,pins = <
MX8MM_IOMUXC_SAI5_RXD3_GPIO3_IO24 0x1c0 /* rtc_reset_b of processor */
/* Silex */
MX8MM_IOMUXC_SD1_STROBE_GPIO2_IO11 0x100 /* J12, pin 2 */
MX8MM_IOMUXC_SAI2_RXFS_GPIO4_IO21 0x100 /* J12, pin 4 */
MX8MM_IOMUXC_SAI5_RXD0_GPIO3_IO21 0x100 /* J12, pin 41: clkreq */
MX8MM_IOMUXC_SAI2_MCLK_GPIO4_IO27 0x1c0 /* J12, pin 42: BT_WAKE_DEV */
MX8MM_IOMUXC_GPIO1_IO05_GPIO1_IO5 0x1c0 /* J33, pin 1 */
MX8MM_IOMUXC_GPIO1_IO01_GPIO1_IO1 0x1c0 /* J33, pin 2 */
MX8MM_IOMUXC_GPIO1_IO04_GPIO1_IO4 0x1c0 /* J33, pin 3 */
MX8MM_IOMUXC_GPIO1_IO06_GPIO1_IO6 0x1c0 /* J33, pin 4 */
MX8MM_IOMUXC_GPIO1_IO10_GPIO1_IO10 0x1c0 /* J33, pin 5 */
MX8MM_IOMUXC_GPIO1_IO15_GPIO1_IO15 0x1c0 /* J33, pin 6 */
MX8MM_IOMUXC_GPIO1_IO11_GPIO1_IO11 0x100 /* J35, pin 1: On/Off connector */
MX8MM_IOMUXC_GPIO1_IO08_GPIO1_IO8 0x1c0 /* J6, pin 19: LVDS backlight en */
/* test points */
MX8MM_IOMUXC_SD2_WP_GPIO2_IO20 0x1c0 /* tp2 */
MX8MM_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x1c0 /* tp7 */
MX8MM_IOMUXC_ECSPI2_SCLK_GPIO5_IO10 0x1c0 /* tp29 */
MX8MM_IOMUXC_ECSPI2_MOSI_GPIO5_IO11 0x1c0 /* tp30 */
MX8MM_IOMUXC_GPIO1_IO14_GPIO1_IO14 0x1c0 /* tp33 */
>;
};
pinctrl_i2c1: i2c1grp {
fsl,pins = <
MX8MM_IOMUXC_I2C1_SCL_I2C1_SCL 0x400001c3
MX8MM_IOMUXC_I2C1_SDA_I2C1_SDA 0x400001c3
>;
};
pinctrl_i2c1_1: i2c1_1grp {
fsl,pins = <
#define GP_I2C1_SCL <&gpio5 14 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C1_SCL_GPIO5_IO14 0x400001c3
#define GP_I2C1_SDA <&gpio5 15 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C1_SDA_GPIO5_IO15 0x400001c3
>;
};
pinctrl_i2c1_pf8100: i2c1-pf8100grp {
fsl,pins = <
#define GP_I2C1_PF8100_EWARN <&gpio3 3 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_NAND_CE2_B_GPIO3_IO3 0x149
#define GP_I2C1_PF8100_FAULT <&gpio3 4 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_NAND_CE3_B_GPIO3_IO4 0x149
>;
};
pinctrl_i2c2: i2c2grp {
fsl,pins = <
MX8MM_IOMUXC_I2C2_SCL_I2C2_SCL 0x400001c3
MX8MM_IOMUXC_I2C2_SDA_I2C2_SDA 0x400001c3
>;
};
pinctrl_i2c2_1: i2c2_1grp {
fsl,pins = <
#define GP_I2C2_SCL <&gpio5 16 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C2_SCL_GPIO5_IO16 0x400001c3
#define GP_I2C2_SDA <&gpio5 17 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C2_SDA_GPIO5_IO17 0x400001c3
>;
};
pinctrl_i2c2_rv4162: i2c2-rv4162grp {
fsl,pins = <
#define GPIRQ_RV4162 <&gpio1 3 IRQ_TYPE_LEVEL_LOW>
MX8MM_IOMUXC_GPIO1_IO03_GPIO1_IO3 0x1c0
>;
};
pinctrl_i2c3: i2c3grp {
fsl,pins = <
MX8MM_IOMUXC_I2C3_SCL_I2C3_SCL 0x400001c3
MX8MM_IOMUXC_I2C3_SDA_I2C3_SDA 0x400001c3
>;
};
pinctrl_i2c3_1: i2c3_1grp {
fsl,pins = <
#define GP_I2C3_SCL <&gpio5 18 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C3_SCL_GPIO5_IO18 0x400001c3
#define GP_I2C3_SDA <&gpio5 19 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C3_SDA_GPIO5_IO19 0x400001c3
>;
};
pinctrl_i2c3_pca9546: i2c3-pca9546grp {
fsl,pins = <
#define GP_I2C3_PCA9546_RESET <&gpio5 18 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_ECSPI2_MISO_GPIO5_IO12 0x1c0
>;
};
pinctrl_i2c3a_lt8912: i2c3a-lt8912grp {
fsl,pins = <
#define GPIRQ_LT8912 <&gpio3 19 IRQ_TYPE_LEVEL_LOW>
MX8MM_IOMUXC_SAI5_RXFS_GPIO3_IO19 0x1c0
#define GP_LT8912_RESET <&gpio3 22 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_SAI5_RXD1_GPIO3_IO22 0x1c0
>;
};
pinctrl_i2c3b_ov5640_mipi: i2c3b-ov5640-mipigrp {
fsl,pins = <
#define GP_OV5640_MIPI_POWER_DOWN <&gpio3 9 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_NAND_DATA03_GPIO3_IO9 0x141
#define GP_OV5640_MIPI_RESET <&gpio3 5 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_NAND_CLE_GPIO3_IO5 0x101
>;
};
pinctrl_i2c4: i2c4grp {
fsl,pins = <
MX8MM_IOMUXC_I2C4_SCL_I2C4_SCL 0x400001c3
MX8MM_IOMUXC_I2C4_SDA_I2C4_SDA 0x400001c3
>;
};
pinctrl_i2c4_1: i2c4_1grp {
fsl,pins = <
#define GP_I2C4_SCL <&gpio5 20 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C4_SCL_GPIO5_IO20 0x400001c3
#define GP_I2C4_SDA <&gpio5 21 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C4_SDA_GPIO5_IO21 0x400001c3
>;
};
pinctrl_i2c4_ft5x06: i2c4-ft5x06grp {
fsl,pins = <
#define GPIRQ_I2C4_FT5X06 <&gpio1 9 IRQ_TYPE_EDGE_FALLING>
#define GP_I2C4_FT5X06_WAKE <&gpio1 9 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_GPIO1_IO09_GPIO1_IO9 0x149 /* J8, pin 4: touch int */
>;
};
pinctrl_pwm1: pwm1grp {
fsl,pins = <
MX8MM_IOMUXC_SPDIF_EXT_CLK_PWM1_OUT 0x16 /* J8 Pin 3, NS */
>;
};
pinctrl_pwm2: pwm2grp {
fsl,pins = <
MX8MM_IOMUXC_SPDIF_RX_PWM2_OUT 0x16 /* camera xclk */
>;
};
pinctrl_pwm4: pwm4grp {
fsl,pins = <
MX8MM_IOMUXC_SAI3_MCLK_PWM4_OUT 0x16
>;
};
pinctrl_reg_usdhc2_vqmmc: reg_usdhc2_vqmmcgrp {
fsl,pins = <
#define GP_USDHC2_VSEL <&gpio3 2 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_NAND_CE1_B_GPIO3_IO2 0x16
>;
};
pinctrl_reg_wlan_vmmc: reg-wlan-vmmcgrp {
fsl,pins = <
#define GP_REG_WLAN_VMMC <&gpio3 20 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SAI5_RXC_GPIO3_IO20 0x16
>;
};
pinctrl_sai2: sai2grp {
fsl,pins = <
/* Bluetooth PCM */
MX8MM_IOMUXC_SAI2_TXFS_SAI2_TX_SYNC 0xd6
MX8MM_IOMUXC_SAI2_TXC_SAI2_TX_BCLK 0xd6
MX8MM_IOMUXC_SAI2_TXD0_SAI2_TX_DATA0 0xd6
MX8MM_IOMUXC_SAI2_RXD0_SAI2_RX_DATA0 0xd6
>;
};
pinctrl_uart1: uart1grp {
fsl,pins = <
MX8MM_IOMUXC_UART1_RXD_UART1_DCE_RX 0x140
MX8MM_IOMUXC_UART1_TXD_UART1_DCE_TX 0x140
MX8MM_IOMUXC_UART3_RXD_UART1_DCE_CTS_B 0x140
MX8MM_IOMUXC_UART3_TXD_UART1_DCE_RTS_B 0x140
>;
};
pinctrl_uart2: uart2grp {
fsl,pins = <
MX8MM_IOMUXC_UART2_RXD_UART2_DCE_RX 0x140
MX8MM_IOMUXC_UART2_TXD_UART2_DCE_TX 0x140
>;
};
pinctrl_uart3: uart3grp {
fsl,pins = <
MX8MM_IOMUXC_ECSPI1_SCLK_UART3_DCE_RX 0x140
MX8MM_IOMUXC_ECSPI1_MOSI_UART3_DCE_TX 0x140
>;
};
pinctrl_uart4: uart4grp {
fsl,pins = <
MX8MM_IOMUXC_UART4_RXD_UART4_DCE_RX 0x140
MX8MM_IOMUXC_UART4_TXD_UART4_DCE_TX 0x140
>;
};
pinctrl_usbotg1: usbotg1grp {
fsl,pins = <
MX8MM_IOMUXC_GPIO1_IO12_USB1_OTG_PWR 0x16
MX8MM_IOMUXC_GPIO1_IO13_USB1_OTG_OC 0x16
>;
};
pinctrl_usbotg2: usbotg2grp {
fsl,pins = <
#define GP_OTG2_HUB_RESET <&gpio1 7 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_GPIO1_IO07_GPIO1_IO7 0x180
>;
};
pinctrl_usdhc1: usdhc1grp {
fsl,pins = <
MX8MM_IOMUXC_SD1_CLK_USDHC1_CLK 0x190
MX8MM_IOMUXC_SD1_CMD_USDHC1_CMD 0x1d0
MX8MM_IOMUXC_SD1_DATA0_USDHC1_DATA0 0x1d0
MX8MM_IOMUXC_SD1_DATA1_USDHC1_DATA1 0x1d0
MX8MM_IOMUXC_SD1_DATA2_USDHC1_DATA2 0x1d0
MX8MM_IOMUXC_SD1_DATA3_USDHC1_DATA3 0x1d0
MX8MM_IOMUXC_SD1_DATA4_USDHC1_DATA4 0x1d0
MX8MM_IOMUXC_SD1_DATA5_USDHC1_DATA5 0x1d0
MX8MM_IOMUXC_SD1_DATA6_USDHC1_DATA6 0x1d0
MX8MM_IOMUXC_SD1_DATA7_USDHC1_DATA7 0x1d0
#define GP_EMMC_RESET <&gpio2 10 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_SD1_RESET_B_GPIO2_IO10 0x141
>;
};
pinctrl_usdhc1_100mhz: usdhc1grp100mhz {
fsl,pins = <
MX8MM_IOMUXC_SD1_CLK_USDHC1_CLK 0x194
MX8MM_IOMUXC_SD1_CMD_USDHC1_CMD 0x1d4
MX8MM_IOMUXC_SD1_DATA0_USDHC1_DATA0 0x1d4
MX8MM_IOMUXC_SD1_DATA1_USDHC1_DATA1 0x1d4
MX8MM_IOMUXC_SD1_DATA2_USDHC1_DATA2 0x1d4
MX8MM_IOMUXC_SD1_DATA3_USDHC1_DATA3 0x1d4
MX8MM_IOMUXC_SD1_DATA4_USDHC1_DATA4 0x1d4
MX8MM_IOMUXC_SD1_DATA5_USDHC1_DATA5 0x1d4
MX8MM_IOMUXC_SD1_DATA6_USDHC1_DATA6 0x1d4
MX8MM_IOMUXC_SD1_DATA7_USDHC1_DATA7 0x1d4
>;
};
pinctrl_usdhc1_200mhz: usdhc1grp200mhz {
fsl,pins = <
MX8MM_IOMUXC_SD1_CLK_USDHC1_CLK 0x196
MX8MM_IOMUXC_SD1_CMD_USDHC1_CMD 0x1d6
MX8MM_IOMUXC_SD1_DATA0_USDHC1_DATA0 0x1d6
MX8MM_IOMUXC_SD1_DATA1_USDHC1_DATA1 0x1d6
MX8MM_IOMUXC_SD1_DATA2_USDHC1_DATA2 0x1d6
MX8MM_IOMUXC_SD1_DATA3_USDHC1_DATA3 0x1d6
MX8MM_IOMUXC_SD1_DATA4_USDHC1_DATA4 0x1d6
MX8MM_IOMUXC_SD1_DATA5_USDHC1_DATA5 0x1d6
MX8MM_IOMUXC_SD1_DATA6_USDHC1_DATA6 0x1d6
MX8MM_IOMUXC_SD1_DATA7_USDHC1_DATA7 0x1d6
>;
};
pinctrl_usdhc2: usdhc2grp {
fsl,pins = <
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x190
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d0
MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d0
MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d0
MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d0
MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d0
#define GP_USDHC2_CD <&gpio2 12 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12 0x1c4
>;
};
pinctrl_usdhc2_100mhz: usdhc2grp100mhz {
fsl,pins = <
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x194
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d4
MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4
MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4
MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4
MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4
>;
};
pinctrl_usdhc2_200mhz: usdhc2grp200mhz {
fsl,pins = <
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x196
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d6
MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d6
MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d6
MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d6
MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d6
>;
};
pinctrl_usdhc3: usdhc3grp {
fsl,pins = <
MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK 0x190
MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d0
MX8MM_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d0
MX8MM_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d0
MX8MM_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d0
MX8MM_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d0
/* Bluetooth slow clock */
MX8MM_IOMUXC_GPIO1_IO00_ANAMIX_REF_CLK_32K 0x03
>;
};
pinctrl_usdhc3_100mhz: usdhc3grp100mhz {
fsl,pins = <
MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK 0x194
MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d4
MX8MM_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d4
MX8MM_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d4
MX8MM_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d4
MX8MM_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d4
>;
};
pinctrl_usdhc3_200mhz: usdhc3grp200mhz {
fsl,pins = <
MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK 0x196
MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d6
MX8MM_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d6
MX8MM_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d6
MX8MM_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d6
MX8MM_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d6
>;
};
pinctrl_wdog: wdoggrp {
fsl,pins = <
MX8MM_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B 0x140
>;
};
};
/ {
model = "Boundary Devices i.MX8MMini HL8MM";
compatible = "boundary,imx8mm-hl8mm", "fsl,imx8mm";
chosen {
bootargs = "console=ttymxc1,115200 earlycon=ec_imx6q,0x30890000,115200";
stdout-patch = &uart2;
};
#if 0
backlight_mipi: backlight-mipi {
brightness-levels = <0 1 2 3 4 5 6 7 8 9 10>;
compatible = "pwm-backlight";
default-brightness-level = <8>;
display = <&display_subsystem>;
pwms = <&pwm4 0 30000>; /* 33.3 Khz */
status = "okay";
};
bt-rfkill {
compatible = "net,rfkill-gpio";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_bt_rfkill>;
name = "bt-rfkill";
type = <2>; /* Bluetooth */
reset-gpios = GP_BT_RFKILL_RESET;
status = "okay";
};
csi_mclk: csi-mclk {
compatible = "pwm-clock";
#clock-cells = <0>;
clock-frequency = <20000000>;
clock-output-names = "csi_mclk";
pwms = <&pwm2 0 50>; /* 1 / 50 ns = 20 MHz */
};
#endif
reg_usdhc2_vqmmc: regulator-usdhc2-vqmmc {
compatible = "regulator-gpio";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_reg_usdhc2_vqmmc>;
regulator-name = "reg_sd2_vsel";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-type = "voltage";
regulator-boot-on;
regulator-always-on;
gpios = GP_USDHC2_VSEL;
states = <1800000 0x1
3300000 0x0>;
};
reg_vref_1v8: regulator-vref-1v8 {
compatible = "regulator-fixed";
regulator-name = "vref-1v8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
reg_vref_2v5: regulator-vref-2v5 {
compatible = "regulator-fixed";
regulator-name = "vref-2v5";
regulator-min-microvolt = <2500000>;
regulator-max-microvolt = <2500000>;
};
reg_vref_3v3: regulator-vref-3v3 {
compatible = "regulator-fixed";
regulator-name = "vref-3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
reg_vref_5v: regulator-vref-5v {
compatible = "regulator-fixed";
regulator-name = "vref-5v";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
};
reg_wlan_vmmc: regulator-wlan-vmmc {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_reg_wlan_vmmc>;
regulator-name = "reg_wlan_vmmc";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = GP_REG_WLAN_VMMC;
startup-delay-us = <70000>;
enable-active-high;
};
};
#if 0
&A53_0 {
arm-supply = <&reg_sw4>;
};
&clk {
assigned-clocks = <&clk IMX8MM_AUDIO_PLL1>, <&clk IMX8MM_AUDIO_PLL2>;
assigned-clock-rates = <786432000>, <722534400>;
};
&csi1_bridge {
fsl,mipi-mode;
status = "okay";
port {
csi1_ep: endpoint {
remote-endpoint = <&csi1_mipi_ep>;
};
};
};
#endif
&fec1 {
mdc-gpios = GP_MII_MDC;
mdio-gpios = GP_MII_MDIO;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_fec1>;
#if 0
phy-reset-gpios = GP_FEC1_RESET;
#endif
phy-mode = "rgmii-id";
phy-handle = <&ethphy0>;
fsl,magic-packet;
status = "okay";
mdio {
#address-cells = <1>;
#size-cells = <0>;
ethphy0: ethernet-phy@4 {
compatible = "ethernet-phy-ieee802.3-c22";
reg = <4>;
interrupts-extended = GPIRQ_FEC1_PHY;
};
};
};
#if 0
&gpu {
status = "okay";
};
#endif
&i2c1 {
clock-frequency = <400000>;
pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_i2c1>;
pinctrl-1 = <&pinctrl_i2c1_1>;
scl-gpios = GP_I2C1_SCL;
sda-gpios = GP_I2C1_SDA;
status = "okay";
#if 0
pf8100@08 {
compatible = "nxp,pf8x00";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c1_pf8100>;
reg = <0x08>;
regulators {
reg_ldo1: ldo1 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <5000000>;
regulator-min-microvolt = <1500000>;
};
reg_ldo2: ldo2 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <5000000>;
regulator-min-microvolt = <1500000>;
#if 0
/* vselect low is 3.3V, high is 1.8V */
vselect-en;
#endif
};
reg_ldo3: ldo3 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <5000000>;
regulator-min-microvolt = <1500000>;
};
reg_ldo4: ldo4 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <5000000>;
regulator-min-microvolt = <1500000>;
};
reg_sw1: sw1 {
phase = <0>;
ilim-ma = <4500>;
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <1800000>;
regulator-min-microvolt = <400000>;
};
reg_sw2: sw2 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <1800000>;
regulator-min-microvolt = <400000>;
};
reg_sw3: sw3 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <1800000>;
regulator-min-microvolt = <400000>;
};
reg_sw4: sw4 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <1800000>;
regulator-min-microvolt = <400000>;
};
reg_sw5: sw5 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <1800000>;
regulator-min-microvolt = <400000>;
};
reg_sw6: sw6 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <1800000>;
regulator-min-microvolt = <400000>;
};
reg_sw7: sw7 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <4100000>;
regulator-min-microvolt = <1000000>;
};
reg_vsnvs: vsnvs {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <3300000>;
regulator-min-microvolt = <1800000>;
};
};
};
#endif
};
&i2c2 {
clock-frequency = <100000>;
pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_i2c2>;
pinctrl-1 = <&pinctrl_i2c2_1>;
scl-gpios = GP_I2C2_SCL;
sda-gpios = GP_I2C2_SDA;
status = "okay";
rtc@68 {
compatible = "microcrystal,rv4162";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2_rv4162>;
reg = <0x68>;
interrupts-extended = GPIRQ_RV4162;
wakeup-source;
};
};
&i2c3 {
clock-frequency = <100000>;
pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_i2c3>;
pinctrl-1 = <&pinctrl_i2c3_1>;
scl-gpios = GP_I2C3_SCL;
sda-gpios = GP_I2C3_SDA;
status = "okay";
i2cmux@70 {
compatible = "pca9546";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3_pca9546>;
reg = <0x70>;
reset-gpios = GP_I2C3_PCA9546_RESET;
#address-cells = <1>;
#size-cells = <0>;
i2c3a: i2c3@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
};
i2c3b: i2c3@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
};
i2c3c: i2c3@2 {
reg = <2>;
#address-cells = <1>;
#size-cells = <0>;
};
i2c3d: i2c3@3 {
reg = <3>;
#address-cells = <1>;
#size-cells = <0>;
/* edid @50 */
};
};
};
#if 0
&i2c3a {
lt8912@48 {
compatible = "lontium,lt8912" ;
ddc-i2c-bus = <&i2c3d>;
display-dsi = <&fb_mipi>;
interrupts-extended = GPIRQ_LT8912;
reg = <0x48> ;
reset-gpios = GP_LT8912_RESET;
};
};
&i2c3b {
ov5640-mipi1@3c {
AVDD-supply = <&reg_vref_2v5>;
DOVDD-supply = <&reg_vref_1v8>;
DVDD-supply = <&reg_vref_3v3>;
clocks = <&csi_mclk>;
clock-names = "csi_mclk";
compatible = "ov5640_mipisubdev";
csi_id = <0>;
mclk = <20000000>;
mipi_csi;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3b_ov5640_mipi>;
pwn-gpios = GP_OV5640_MIPI_POWER_DOWN;
reg = <0x3c>;
rst-gpios = GP_OV5640_MIPI_RESET;
status = "okay";
port {
ov5640_mipi1_ep: endpoint {
remote-endpoint = <&mipi1_ov5640_ep>;
};
};
};
};
#endif
&i2c4 {
clock-frequency = <100000>;
pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_i2c4>;
pinctrl-1 = <&pinctrl_i2c4_1>;
scl-gpios = GP_I2C4_SCL;
sda-gpios = GP_I2C4_SDA;
status = "okay";
touchscreen@38 {
compatible = "ft5x06-ts";
interrupts-extended = GPIRQ_I2C4_FT5X06;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c4_ft5x06>;
reg = <0x38>;
wakeup-gpios = GP_I2C4_FT5X06_WAKE;
};
};
#if 0
&lcdif {
status = "okay";
};
&mipi_csi_1 {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
port {
mipi1_ov5640_ep: endpoint1 {
remote-endpoint = <&ov5640_mipi1_ep>;
data-lanes = <2>;
csis-hs-settle = <13>;
csis-clk-settle = <2>;
csis-wclk;
};
csi1_mipi_ep: endpoint2 {
remote-endpoint = <&csi1_ep>;
};
};
};
&mipi_dsi {
assigned-clocks = <&clk IMX8MM_CLK_DSI_CORE>,
<&clk IMX8MM_CLK_DSI_PHY_REF>,
<&clk IMX8MM_VIDEO_PLL1_REF_SEL>,
<&clk IMX8MM_CLK_LCDIF_PIXEL>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_266M>,
<&clk IMX8MM_VIDEO_PLL1_OUT>,
<&clk IMX8MM_CLK_24M>;
assigned-clock-rates = <266000000>, <0>, <0>, <66000000>;
clocks = <&clk IMX8MM_CLK_DSI_CORE>,
<&clk IMX8MM_CLK_DSI_PHY_REF>,
<&clk IMX8MM_CLK_LCDIF_PIXEL>;
clock-names = "cfg", "pll-ref", "pixel_clock";
status = "okay";
fb_mipi: panel@0 {
bits-per-color = <8>;
bridge-de-active = <0>;
bus-format = "rgb888";
compatible = "panel,simple";
dsi-format = "rgb888";
dsi-lanes = <4>;
mode-skip-eot;
mode-video;
#if 1
mode-video-burst;
#else
mode-video-sync-pulse;
#endif
panel-height-mm = <136>;
panel-width-mm = <217>;
power-supply = <&reg_vref_5v>;
reg = <0>;
spwg;
display-timings {
t_mipi: t-dsi-default {
/* m101nwwb by default */
clock-frequency = <66000000>;
hactive = <1280>;
vactive = <800>;
hback-porch = <5>;
hfront-porch = <123>;
vback-porch = <3>;
vfront-porch = <24>;
hsync-len = <1>;
vsync-len = <1>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <1>;
};
};
};
};
&mu {
status = "okay";
};
&pwm1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pwm1>;
status = "okay";
};
&pwm2 {
assigned-clocks = <&clk IMX8MM_CLK_PWM2>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_40M>;
assigned-clock-rates = <40000000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pwm2>;
status = "okay";
};
&pwm4 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pwm4>;
status = "okay";
};
&resmem {
limit3g@0x100000000 {
no-map;
reg = <1 0x00000000 0 0x40000000>;
};
};
&sai2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sai2>;
status = "okay";
};
&uart1 { /* BT */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart1>;
assigned-clocks = <&clk IMX8MM_CLK_UART1>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_80M>;
fsl,uart-has-rtscts;
status = "okay";
};
#endif
&uart2 { /* console */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart2>;
assigned-clocks = <&clk IMX8MM_CLK_UART2_SRC>;
assigned-clock-parents = <&clk IMX8MM_CLK_24M>;
status = "okay";
};
#if 0
&uart3 { /* J15 */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart3>;
assigned-clocks = <&clk IMX8MM_CLK_UART3>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_80M>;
status = "okay";
};
&uart4 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart4>;
assigned-clocks = <&clk IMX8MM_CLK_UART4>;
assigned-clock-parents = <&clk IMX8MM_CLK_24M>;
status = "okay";
};
#endif
&usbotg1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usbotg1>;
power-polarity-active-high;
dr_mode = "otg";
status = "okay";
};
&usbotg2 {
dr_mode = "host";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usbotg2>;
power-polarity-active-high;
reset-gpios = GP_OTG2_HUB_RESET;
status = "okay";
};
&usdhc1 {
cap-mmc-highspeed;
bus-width = <8>;
mmc-ddr-1_8v;
mmc-hs200-1_8v;
no-mmc-hs400;
non-removable;
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc1>;
pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
reset-gpios = GP_EMMC_RESET;
status = "okay";
vmmc-supply = <&reg_vref_3v3>;
vqmmc-1-8-v;
vqmmc-supply = <&reg_vref_1v8>;
};
&usdhc2 {
bus-width = <4>;
cap-sd-highspeed;
cd-gpios = GP_USDHC2_CD;
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc2>;
pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
sd-uhs-ddr50;
sd-uhs-sdr104;
sd-uhs-sdr12;
sd-uhs-sdr25;
status = "okay";
#if 1
vqmmc-supply = <&reg_usdhc2_vqmmc>;
#else
vqmmc-supply = <&reg_ldo2>;
#endif
};
#if 0
&usdhc3 {
bus-width = <4>;
no-sd-uhs-sdr104;
non-removable;
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc3>;
pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
status = "okay";
vmmc-supply = <&reg_wlan_vmmc>;
vqmmc-1-8-v;
};
&vpu_g1 {
status = "okay";
};
&vpu_g2 {
status = "okay";
};
&vpu_h1 {
status = "okay";
};
#endif
&wdog1 {
pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_wdog>;
fsl,ext-reset-output;
status = "okay";
};
/*
* Copyright 2018 NXP
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
/dts-v1/;
#include "fsl-imx8mm.dtsi"
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog>;
pinctrl_bt_rfkill: bt-rfkillgrp {
fsl,pins = <
#define GP_BT_RFKILL_RESET <&gpio4 27 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_SAI2_MCLK_GPIO4_IO27 0x100
>;
};
pinctrl_ecspi1: ecspi1grp {
fsl,pins = <
/* J57 */
#define GP_ECSPI1_CS0 <&gpio5 9 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_ECSPI1_SS0_GPIO5_IO9 0x140
MX8MM_IOMUXC_ECSPI1_MISO_ECSPI1_MISO 0x19
MX8MM_IOMUXC_ECSPI1_SCLK_ECSPI1_SCLK 0x19
MX8MM_IOMUXC_ECSPI1_MOSI_ECSPI1_MOSI 0x19
>;
};
pinctrl_ecspi2: ecspi2grp {
fsl,pins = <
/* U7 can controller */
#define GP_ECSPI2_CS0 <&gpio5 13 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_ECSPI2_SS0_GPIO5_IO13 0x140
MX8MM_IOMUXC_ECSPI2_MISO_ECSPI2_MISO 0x19
MX8MM_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK 0x19
MX8MM_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI 0x19
>;
};
/* U7 can controller */
pinctrl_ecspi2_mcp2515t: ecspi2-mcp2515tgrp {
fsl,pins = <
#define GP_CAN_EN <&gpio4 0 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SAI1_RXFS_GPIO4_IO0 0x100
#define GP_CAN_ERR <&gpio4 15 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SAI1_TXD3_GPIO4_IO15 0x80
#define GPIRQ_MCP2515T <&gpio4 14 IRQ_TYPE_LEVEL_LOW>
MX8MM_IOMUXC_SAI1_TXD2_GPIO4_IO14 0x80
#define GP_MCP_RESET <&gpio4 1 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_SAI1_RXC_GPIO4_IO1 0x100
>;
};
pinctrl_fec1: fec1grp {
fsl,pins = <
MX8MM_IOMUXC_ENET_MDC_ENET1_MDC 0x00
/* PAD_CTL_ODE is screwy on 8mm mini, avoid it */
MX8MM_IOMUXC_ENET_MDIO_ENET1_MDIO 0x00
MX8MM_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x91
MX8MM_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x91
MX8MM_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x91
MX8MM_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0x91
MX8MM_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x91
MX8MM_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x91
MX8MM_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x1f
MX8MM_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x1f
MX8MM_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x1f
MX8MM_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x1f
MX8MM_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x1f
MX8MM_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x1f
#define GP_FEC1_RESET <&gpio3 15 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_NAND_RE_B_GPIO3_IO15 0x100
#define GPIRQ_FEC1_PHY <&gpio3 16 IRQ_TYPE_LEVEL_LOW>
MX8MM_IOMUXC_NAND_READY_B_GPIO3_IO16 0x1c0
>;
};
pinctrl_flexspi: flexspigrp {
fsl,pins = <
MX8MM_IOMUXC_NAND_ALE_QSPI_A_SCLK 0x1c2
MX8MM_IOMUXC_NAND_CE0_B_QSPI_A_SS0_B 0x82
MX8MM_IOMUXC_NAND_DATA00_QSPI_A_DATA0 0x82
MX8MM_IOMUXC_NAND_DATA01_QSPI_A_DATA1 0x82
MX8MM_IOMUXC_NAND_DATA02_QSPI_A_DATA2 0x82
MX8MM_IOMUXC_NAND_DATA03_QSPI_A_DATA3 0x82
>;
};
pinctrl_gpio_leds: gpio-ledsgrp {
fsl,pins = <
#define GP_GPIOLEDS_1 <&gpio3 25 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SAI5_MCLK_GPIO3_IO25 0x100
#define GP_GPIOLEDS_2 <&gpio3 19 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SAI5_RXFS_GPIO3_IO19 0x100
#define GP_GPIOLEDS_3 <&gpio5 0 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SAI3_TXC_GPIO5_IO0 0x100
#define GP_GPIOLEDS_4 <&gpio5 3 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SPDIF_TX_GPIO5_IO3 0x100
#define GP_GPIOLEDS_5 <&gpio5 4 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SPDIF_RX_GPIO5_IO4 0x100
#define GP_GPIOLEDS_6 <&gpio5 5 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SPDIF_EXT_CLK_GPIO5_IO5 0x100
#define GP_GPIOLEDS_7 <&gpio4 13 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SAI1_TXD1_GPIO4_IO13 0x100
#define GP_GPIOLEDS_8 <&gpio4 4 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SAI1_RXD2_GPIO4_IO4 0x100
#define GP_GPIOLEDS_9 <&gpio4 22 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SAI2_RXC_GPIO4_IO22 0x100
#define GP_GPIOLEDS_10 <&gpio1 3 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_GPIO1_IO03_GPIO1_IO3 0x100
#define GP_GPIOLEDS_11 <&gpio1 5 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_GPIO1_IO05_GPIO1_IO5 0x100
#define GP_GPIOLEDS_12 <&gpio1 15 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_GPIO1_IO15_GPIO1_IO15 0x100
#define GP_GPIOLEDS_D8 <&gpio3 24 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_SAI5_RXD3_GPIO3_IO24 0x140
>;
};
pinctrl_hog: hoggrp {
fsl,pins = <
/* Silex, J12 pin 2 */
MX8MM_IOMUXC_SD1_STROBE_GPIO2_IO11 0x100
/* Silex, J12 pin 4 */
MX8MM_IOMUXC_SAI2_RXFS_GPIO4_IO21 0x100
/* 451-00002 - wake */
MX8MM_IOMUXC_GPIO1_IO11_GPIO1_IO11 0x100
/* J56 ignition sense */
MX8MM_IOMUXC_GPIO1_IO14_GPIO1_IO14 0x180
/* test points */
MX8MM_IOMUXC_SAI3_TXD_SAI3_TX_DATA0 0x180 /* tp179 */
MX8MM_IOMUXC_SAI1_TXD6_GPIO4_IO18 0x180 /* tp180 */
MX8MM_IOMUXC_GPIO1_IO04_GPIO1_IO4 0x180 /* tp181 */
MX8MM_IOMUXC_GPIO1_IO06_GPIO1_IO6 0x180 /* tp182 */
>;
};
pinctrl_i2c1: i2c1grp {
fsl,pins = <
MX8MM_IOMUXC_I2C1_SCL_I2C1_SCL 0x400001c3
MX8MM_IOMUXC_I2C1_SDA_I2C1_SDA 0x400001c3
>;
};
pinctrl_i2c1_1: i2c1-1grp {
fsl,pins = <
#define GP_I2C1_SCL <&gpio5 14 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C1_SCL_GPIO5_IO14 0x400001c3
#define GP_I2C1_SDA <&gpio5 15 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C1_SDA_GPIO5_IO15 0x400001c3
>;
};
pinctrl_i2c1_pf8100: i2c1-pf8100grp {
fsl,pins = <
#define GP_I2C1_PF8100_EWARN <&gpio3 3 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_NAND_CE2_B_GPIO3_IO3 0x1c0
#define GP_I2C1_PF8100_FAULT <&gpio3 4 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_NAND_CE3_B_GPIO3_IO4 0x1c0
>;
};
pinctrl_i2c2: i2c2grp {
fsl,pins = <
MX8MM_IOMUXC_I2C2_SCL_I2C2_SCL 0x400001c3
MX8MM_IOMUXC_I2C2_SDA_I2C2_SDA 0x400001c3
>;
};
pinctrl_i2c2_1: i2c2-1grp {
fsl,pins = <
#define GP_I2C2_SCL <&gpio5 16 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C2_SCL_GPIO5_IO16 0x400001c3
#define GP_I2C2_SDA <&gpio5 17 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C2_SDA_GPIO5_IO17 0x400001c3
>;
};
pinctrl_i2c3: i2c3grp {
fsl,pins = <
MX8MM_IOMUXC_I2C3_SCL_I2C3_SCL 0x400001c3
MX8MM_IOMUXC_I2C3_SDA_I2C3_SDA 0x400001c3
>;
};
pinctrl_i2c3_1: i2c3-1grp {
fsl,pins = <
#define GP_I2C3_SCL <&gpio5 18 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C3_SCL_GPIO5_IO18 0x400001c3
#define GP_I2C3_SDA <&gpio5 19 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C3_SDA_GPIO5_IO19 0x400001c3
>;
};
pinctrl_i2c3a_rv4162: i2c3a-rv4162grp {
fsl,pins = <
#define GPIRQ_RV4162 <&gpio3 23 IRQ_TYPE_LEVEL_LOW>
MX8MM_IOMUXC_SAI5_RXD2_GPIO3_IO23 0x1c0
>;
};
pinctrl_i2c3b_sc16is7xx: i2c3b-sc16is7xxgrp {
fsl,pins = <
#define GPIRQ_SC16IS7XX <&gpio4 3 IRQ_TYPE_LEVEL_LOW>
MX8MM_IOMUXC_SAI1_RXD1_GPIO4_IO3 0x1c0
#define GP_SC16IS7XX_RESET <&gpio4 5 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_SAI1_RXD3_GPIO4_IO5 0x100
>;
};
pinctrl_i2c4: i2c4grp {
fsl,pins = <
MX8MM_IOMUXC_I2C4_SCL_I2C4_SCL 0x400001c3
MX8MM_IOMUXC_I2C4_SDA_I2C4_SDA 0x400001c3
>;
};
pinctrl_i2c4_1: i2c4-1grp {
fsl,pins = <
#define GP_I2C4_SCL <&gpio5 20 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C4_SCL_GPIO5_IO20 0x400001c3
#define GP_I2C4_SDA <&gpio5 21 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C4_SDA_GPIO5_IO21 0x400001c3
>;
};
pinctrl_i2c4a_gyro: i2c4a-gyrogrp {
fsl,pins = <
#define GPIRQ_GYRO <&gpio4 6 IRQ_TYPE_LEVEL_LOW>
MX8MM_IOMUXC_SAI1_RXD4_GPIO4_IO6 0x1c0
>;
};
pinctrl_reg_usdhc2_vqmmc: reg_usdhc2_vqmmcgrp {
fsl,pins = <
#define GP_USDHC2_VSEL <&gpio3 2 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_NAND_CE1_B_GPIO3_IO2 0x100
>;
};
pinctrl_reg_wlan_vmmc: reg-wlan-vmmcgrp {
fsl,pins = <
#define GP_REG_WLAN_VMMC <&gpio3 20 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SAI5_RXC_GPIO3_IO20 0x100
>;
};
pinctrl_reg_3v7: reg-3v7grp {
fsl,pins = <
#define GP_REG_3V7_EN <&gpio4 16 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SAI1_TXD4_GPIO4_IO16 0x100
#define GP_REG_3V7_BYPASS_EN <&gpio4 17 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_SAI1_TXD5_GPIO4_IO17 0x140
>;
};
pinctrl_reg_12v: reg-12vgrp {
fsl,pins = <
#define GP_REG_12V_EN <&gpio4 7 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SAI1_RXD5_GPIO4_IO7 0x100
>;
};
pinctrl_sai1: sai1grp {
fsl,pins = <
/* wm8960 */
MX8MM_IOMUXC_SAI1_MCLK_SAI1_MCLK 0xd6
MX8MM_IOMUXC_SAI1_TXFS_SAI1_TX_SYNC 0xd6
MX8MM_IOMUXC_SAI1_TXC_SAI1_TX_BCLK 0xd6
MX8MM_IOMUXC_SAI1_TXD0_SAI1_TX_DATA0 0xd6
MX8MM_IOMUXC_SAI1_RXD0_SAI1_RX_DATA0 0xd6
>;
};
pinctrl_sai2: sai2grp {
fsl,pins = <
/* Bluetooth PCM */
MX8MM_IOMUXC_SAI2_TXFS_SAI2_TX_SYNC 0xd6
MX8MM_IOMUXC_SAI2_TXC_SAI2_TX_BCLK 0xd6
MX8MM_IOMUXC_SAI2_TXD0_SAI2_TX_DATA0 0xd6
MX8MM_IOMUXC_SAI2_RXD0_SAI2_RX_DATA0 0xd6
>;
};
pinctrl_sound_wm8960: sound-wm8960grp {
fsl,pins = <
#define GP_WM8960_AMP_STDBY <&gpio3 22 GPIO_ACTIVE_LOW> /* Low is standby */
MX8MM_IOMUXC_SAI5_RXD1_GPIO3_IO22 0x100
#define GP_WM8960_AMP_MUTE <&gpio3 21 GPIO_ACTIVE_LOW> /* Low is muted */
MX8MM_IOMUXC_SAI5_RXD0_GPIO3_IO21 0x100
#define GP_WM8960_AMP_G0 <&gpio4 8 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SAI1_RXD6_GPIO4_IO8 0x100
#define GP_WM8960_AMP_G1 <&gpio4 9 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SAI1_RXD7_GPIO4_IO9 0x100
/* NC */
#define GP_WM8960_MIC_DET <&gpio1 10 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_GPIO1_IO10_GPIO1_IO10 0x1c0
/* NC */
#define GP_WM8960_HP_DET <&gpio4 28 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SAI3_RXFS_GPIO4_IO28 0x1c0
>;
};
pinctrl_swd: swdgrp {
fsl,pins = <
#define GP_SWD_CLK <&gpio5 2 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SAI3_MCLK_GPIO5_IO2 0x100
#define GP_SWD_IO <&gpio4 31 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SAI3_TXFS_GPIO4_IO31 0x140
>;
};
pinctrl_uart1: uart1grp {
fsl,pins = <
MX8MM_IOMUXC_UART1_RXD_UART1_DCE_RX 0x140
MX8MM_IOMUXC_UART1_TXD_UART1_DCE_TX 0x140
>;
};
pinctrl_uart2: uart2grp {
fsl,pins = <
MX8MM_IOMUXC_UART2_RXD_UART2_DCE_RX 0x140
MX8MM_IOMUXC_UART2_TXD_UART2_DCE_TX 0x140
MX8MM_IOMUXC_SAI3_RXC_UART2_DCE_CTS_B 0x140
MX8MM_IOMUXC_SAI3_RXD_UART2_DCE_RTS_B 0x140
>;
};
pinctrl_uart3: uart3grp {
fsl,pins = <
MX8MM_IOMUXC_UART3_RXD_UART3_DCE_RX 0x140
MX8MM_IOMUXC_UART3_TXD_UART3_DCE_TX 0x140
#define GP_GPS_RESET <&gpio1 7 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_GPIO1_IO07_GPIO1_IO7 0x140
#define GP_GPS_TIMEPULSE <&gpio1 9 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_GPIO1_IO09_GPIO1_IO9 0x1c0
#define GPIRQ_GPS_EXT <&gpio1 8 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_GPIO1_IO08_GPIO1_IO8 0x1c0
>;
};
pinctrl_uart4: uart4grp {
fsl,pins = <
MX8MM_IOMUXC_UART4_RXD_UART4_DCE_RX 0x140
MX8MM_IOMUXC_UART4_TXD_UART4_DCE_TX 0x140
>;
};
pinctrl_usbotg1: usbotg1grp {
fsl,pins = <
MX8MM_IOMUXC_GPIO1_IO12_USB1_OTG_PWR 0x16
MX8MM_IOMUXC_GPIO1_IO13_USB1_OTG_OC 0x16
>;
};
pinctrl_usbotg2: usbotg2grp {
fsl,pins = <
#define GP_OTG2_HUB_RESET <&gpio4 19 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_SAI1_TXD7_GPIO4_IO19 0x100
#define GP_MODEM_ON <&gpio3 5 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_NAND_CLE_GPIO3_IO5 0x140
#define GP_MODEM_RESET <&gpio3 14 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_NAND_DQS_GPIO3_IO14 0x100
/* 451-00002 - reset */
#define GP_BT_RESET <&gpio1 1 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_GPIO1_IO01_GPIO1_IO1 0x100
>;
};
pinctrl_usdhc1: usdhc1grp {
fsl,pins = <
MX8MM_IOMUXC_SD1_CLK_USDHC1_CLK 0x190
MX8MM_IOMUXC_SD1_CMD_USDHC1_CMD 0x1d0
MX8MM_IOMUXC_SD1_DATA0_USDHC1_DATA0 0x1d0
MX8MM_IOMUXC_SD1_DATA1_USDHC1_DATA1 0x1d0
MX8MM_IOMUXC_SD1_DATA2_USDHC1_DATA2 0x1d0
MX8MM_IOMUXC_SD1_DATA3_USDHC1_DATA3 0x1d0
MX8MM_IOMUXC_SD1_DATA4_USDHC1_DATA4 0x1d0
MX8MM_IOMUXC_SD1_DATA5_USDHC1_DATA5 0x1d0
MX8MM_IOMUXC_SD1_DATA6_USDHC1_DATA6 0x1d0
MX8MM_IOMUXC_SD1_DATA7_USDHC1_DATA7 0x1d0
#define GP_EMMC_RESET <&gpio2 10 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_SD1_RESET_B_GPIO2_IO10 0x100
>;
};
pinctrl_usdhc1_100mhz: usdhc1grp100mhz {
fsl,pins = <
MX8MM_IOMUXC_SD1_CLK_USDHC1_CLK 0x194
MX8MM_IOMUXC_SD1_CMD_USDHC1_CMD 0x1d4
MX8MM_IOMUXC_SD1_DATA0_USDHC1_DATA0 0x1d4
MX8MM_IOMUXC_SD1_DATA1_USDHC1_DATA1 0x1d4
MX8MM_IOMUXC_SD1_DATA2_USDHC1_DATA2 0x1d4
MX8MM_IOMUXC_SD1_DATA3_USDHC1_DATA3 0x1d4
MX8MM_IOMUXC_SD1_DATA4_USDHC1_DATA4 0x1d4
MX8MM_IOMUXC_SD1_DATA5_USDHC1_DATA5 0x1d4
MX8MM_IOMUXC_SD1_DATA6_USDHC1_DATA6 0x1d4
MX8MM_IOMUXC_SD1_DATA7_USDHC1_DATA7 0x1d4
>;
};
pinctrl_usdhc1_200mhz: usdhc1grp200mhz {
fsl,pins = <
MX8MM_IOMUXC_SD1_CLK_USDHC1_CLK 0x196
MX8MM_IOMUXC_SD1_CMD_USDHC1_CMD 0x1d6
MX8MM_IOMUXC_SD1_DATA0_USDHC1_DATA0 0x1d6
MX8MM_IOMUXC_SD1_DATA1_USDHC1_DATA1 0x1d6
MX8MM_IOMUXC_SD1_DATA2_USDHC1_DATA2 0x1d6
MX8MM_IOMUXC_SD1_DATA3_USDHC1_DATA3 0x1d6
MX8MM_IOMUXC_SD1_DATA4_USDHC1_DATA4 0x1d6
MX8MM_IOMUXC_SD1_DATA5_USDHC1_DATA5 0x1d6
MX8MM_IOMUXC_SD1_DATA6_USDHC1_DATA6 0x1d6
MX8MM_IOMUXC_SD1_DATA7_USDHC1_DATA7 0x1d6
>;
};
pinctrl_usdhc2: usdhc2grp {
fsl,pins = <
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x190
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d0
MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d0
MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d0
MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d0
MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d0
#define GP_USDHC2_CD <&gpio2 12 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12 0x1c0
MX8MM_IOMUXC_SD2_WP_GPIO2_IO20 0x1c0
>;
};
pinctrl_usdhc2_100mhz: usdhc2grp100mhz {
fsl,pins = <
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x194
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d4
MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4
MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4
MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4
MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4
>;
};
pinctrl_usdhc2_200mhz: usdhc2grp200mhz {
fsl,pins = <
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x196
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d6
MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d6
MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d6
MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d6
MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d6
>;
};
pinctrl_usdhc3: usdhc3grp {
fsl,pins = <
MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK 0x190
MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d0
MX8MM_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d0
MX8MM_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d0
MX8MM_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d0
MX8MM_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d0
/* Bluetooth slow clock */
MX8MM_IOMUXC_GPIO1_IO00_ANAMIX_REF_CLK_32K 0x03
>;
};
pinctrl_usdhc3_100mhz: usdhc3grp100mhz {
fsl,pins = <
MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK 0x194
MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d4
MX8MM_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d4
MX8MM_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d4
MX8MM_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d4
MX8MM_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d4
>;
};
pinctrl_usdhc3_200mhz: usdhc3grp200mhz {
fsl,pins = <
MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK 0x196
MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d6
MX8MM_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d6
MX8MM_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d6
MX8MM_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d6
MX8MM_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d6
>;
};
pinctrl_wdog: wdoggrp {
fsl,pins = <
MX8MM_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B 0x140
>;
};
};
/ {
model = "Boundary Devices i.MX8MMini MOO";
compatible = "boundary,imx8mm-moo", "fsl,imx8mm";
chosen {
bootargs = "console=ttymxc0,115200 earlycon=ec_imx6q,0x30860000,115200";
stdout-patch = &uart2;
};
#if 0
bt-rfkill {
compatible = "net,rfkill-gpio";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_bt_rfkill>;
name = "bt-rfkill";
type = <2>; /* Bluetooth */
reset-gpios = GP_BT_RFKILL_RESET;
status = "okay";
};
#endif
gpio_leds: leds {
compatible = "gpio-leds";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio_leds>;
led1 {
default-state = "off";
gpios = GP_GPIOLEDS_1;
retain-state-suspended;
};
led2 {
default-state = "off";
gpios = GP_GPIOLEDS_2;
retain-state-suspended;
};
led3 {
default-state = "off";
gpios = GP_GPIOLEDS_3;
retain-state-suspended;
};
led4 {
default-state = "off";
gpios = GP_GPIOLEDS_4;
retain-state-suspended;
};
led5 {
default-state = "off";
gpios = GP_GPIOLEDS_5;
retain-state-suspended;
};
led6 {
default-state = "off";
gpios = GP_GPIOLEDS_6;
retain-state-suspended;
};
led7 {
default-state = "off";
gpios = GP_GPIOLEDS_7;
retain-state-suspended;
};
led8 {
default-state = "off";
gpios = GP_GPIOLEDS_8;
retain-state-suspended;
};
led9 {
default-state = "off";
gpios = GP_GPIOLEDS_9;
retain-state-suspended;
};
led10 {
default-state = "off";
gpios = GP_GPIOLEDS_10;
retain-state-suspended;
};
led11 {
default-state = "off";
gpios = GP_GPIOLEDS_11;
retain-state-suspended;
};
led12 {
default-state = "off";
gpios = GP_GPIOLEDS_12;
retain-state-suspended;
};
led-d8 {
default-state = "off";
gpios = GP_GPIOLEDS_D8;
retain-state-suspended;
};
};
reg_usdhc2_vqmmc: regulator-usdhc2-vqmmc {
compatible = "regulator-gpio";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_reg_usdhc2_vqmmc>;
regulator-name = "reg_sd2_vsel";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-type = "voltage";
regulator-boot-on;
regulator-always-on;
gpios = GP_USDHC2_VSEL;
states = <1800000 0x1
3300000 0x0>;
};
reg_vref_1v8: regulator-vref-1v8 {
compatible = "regulator-fixed";
regulator-name = "vref-1v8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
reg_vref_2v5: regulator-vref-2v5 {
compatible = "regulator-fixed";
regulator-name = "vref-2v5";
regulator-min-microvolt = <2500000>;
regulator-max-microvolt = <2500000>;
};
reg_vref_3v3: regulator-vref-3v3 {
compatible = "regulator-fixed";
regulator-name = "vref-3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
reg_vref_3v7: regulator-vref-3v7 {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_reg_3v7>;
regulator-name = "vref-3v7";
regulator-min-microvolt = <3700000>;
regulator-max-microvolt = <3700000>;
gpio = GP_REG_3V7_EN;
startup-delay-us = <70000>;
enable-active-high;
};
reg_vref_5v: regulator-vref-5v {
compatible = "regulator-fixed";
regulator-name = "vref-5v";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
};
reg_wlan_vmmc: regulator-wlan-vmmc {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_reg_wlan_vmmc>;
regulator-name = "reg_wlan_vmmc";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = GP_REG_WLAN_VMMC;
startup-delay-us = <70000>;
enable-active-high;
};
#if 0
sound-wm8960 {
amp-gain-gpios = GP_WM8960_AMP_G0, GP_WM8960_AMP_G1;
/* amp-gain-seq = /bits/ 8 <0 1 2 3>; */ /* default */
amp-mute-gpios = GP_WM8960_AMP_MUTE;
/* delay between mute and standby enter */
amp-standby-enter-wait-ms = <50>;
/* delay between standby exit and unmute */
amp-standby-exit-delay-ms = <100>;
amp-standby-gpios = GP_WM8960_AMP_STDBY;
audio-codec = <&wm8960>;
audio-routing =
"Ext Spk", "HP_L",
"Ext Spk", "HP_R",
"LINPUT1", "Main MIC",
"Main MIC", "MICB";
codec-master;
compatible = "fsl,imx-audio-wm8960";
cpu-dai = <&sai1>;
model = "wm8960-audio";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sound_wm8960>;
};
#endif
};
#if 0
&A53_0 {
arm-supply = <&reg_sw4>;
};
&clk {
assigned-clocks = <&clk IMX8MM_AUDIO_PLL1>, <&clk IMX8MM_AUDIO_PLL2>;
assigned-clock-rates = <786432000>, <722534400>;
};
&ecspi1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi1>;
fsl,spi-num-chipselects = <1>;
cs-gpios = GP_ECSPI1_CS0;
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
spidev@0 {
compatible = "spidev";
spi-max-frequency = <2000000>;
reg = <0>;
};
};
&ecspi2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi2>;
fsl,spi-num-chipselects = <1>;
cs-gpios = GP_ECSPI2_CS0;
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
spidev@0 {
compatible = "spidev";
spi-max-frequency = <2000000>;
reg = <0>;
};
};
#endif
&fec1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_fec1>;
#if 0
phy-reset-gpios = GP_FEC1_RESET;
#endif
phy-mode = "rgmii-id";
phy-handle = <&ethphy0>;
fsl,magic-packet;
status = "okay";
mdio {
#address-cells = <1>;
#size-cells = <0>;
ethphy0: ethernet-phy@4 {
compatible = "ethernet-phy-ieee802.3-c22";
reg = <4>;
interrupts-extended = GPIRQ_FEC1_PHY;
};
};
};
&flexspi0 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_flexspi>;
status = "okay";
};
#if 0
&gpu {
status = "okay";
};
#endif
&i2c1 {
clock-frequency = <400000>;
pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_i2c1>;
pinctrl-1 = <&pinctrl_i2c1_1>;
scl-gpios = GP_I2C1_SCL;
sda-gpios = GP_I2C1_SDA;
status = "okay";
#if 0
pf8100@08 {
compatible = "nxp,pf8x00";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c1_pf8100>;
reg = <0x08>;
regulators {
reg_ldo1: ldo1 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <5000000>;
regulator-min-microvolt = <1500000>;
};
reg_ldo2: ldo2 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <5000000>;
regulator-min-microvolt = <1500000>;
#if 0
/* vselect low is 3.3V, high is 1.8V */
vselect-en;
#endif
};
reg_ldo3: ldo3 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <5000000>;
regulator-min-microvolt = <1500000>;
};
reg_ldo4: ldo4 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <5000000>;
regulator-min-microvolt = <1500000>;
};
reg_sw1: sw1 {
phase = <0>;
ilim-ma = <4500>;
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <1800000>;
regulator-min-microvolt = <400000>;
};
reg_sw2: sw2 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <1800000>;
regulator-min-microvolt = <400000>;
};
reg_sw3: sw3 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <1800000>;
regulator-min-microvolt = <400000>;
};
reg_sw4: sw4 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <1800000>;
regulator-min-microvolt = <400000>;
dual-phase;
};
reg_sw5: sw5 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <1800000>;
regulator-min-microvolt = <400000>;
};
reg_sw6: sw6 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <1800000>;
regulator-min-microvolt = <400000>;
};
reg_sw7: sw7 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <4100000>;
regulator-min-microvolt = <1000000>;
};
reg_vsnvs: vsnvs {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <3300000>;
regulator-min-microvolt = <1800000>;
};
};
};
#endif
};
&i2c2 {
clock-frequency = <100000>;
pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_i2c2>;
pinctrl-1 = <&pinctrl_i2c2_1>;
scl-gpios = GP_I2C2_SCL;
sda-gpios = GP_I2C2_SDA;
status = "okay";
};
&i2c3 {
clock-frequency = <100000>;
pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_i2c3>;
pinctrl-1 = <&pinctrl_i2c3_1>;
scl-gpios = GP_I2C3_SCL;
sda-gpios = GP_I2C3_SDA;
status = "okay";
i2cmux@70 {
compatible = "nxp,pca9540";
reg = <0x70>;
#address-cells = <1>;
#size-cells = <0>;
i2c3a: i2c3@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
};
i2c3b: i2c3@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
};
};
};
#if 0
&i2c3a {
rtc@68 {
compatible = "microcrystal,rv4162";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3a_rv4162>;
reg = <0x68>;
interrupts-extended = GPIRQ_RV4162;
wakeup-source;
};
};
&i2c3b {
sc16is7xx-uart@49 {
compatible = "nxp,sc16is7xx-uart";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3b_sc16is7xx>;
reg = <0x49>;
interrupts-extended = GPIRQ_SC16IS7XX;
};
};
#endif
&i2c4 {
clock-frequency = <100000>;
pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_i2c4>;
pinctrl-1 = <&pinctrl_i2c4_1>;
scl-gpios = GP_I2C4_SCL;
sda-gpios = GP_I2C4_SDA;
status = "okay";
i2cmux@70 {
compatible = "nxp,pca9540";
reg = <0x70>;
#address-cells = <1>;
#size-cells = <0>;
i2c4a: i2c3@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
};
i2c4b: i2c3@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
};
};
};
&i2c4a {
/* Gyro */
};
&i2c4b {
wm8960: codec@1a {
compatible = "wlf,wm8960";
reg = <0x1a>;
clocks = <&clk IMX8MM_CLK_SAI1_ROOT>;
clock-names = "mclk";
wlf,shared-lrclk;
};
};
#if 0
&mu {
status = "okay";
};
&sai1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sai1>;
assigned-clocks = <&clk IMX8MM_CLK_SAI1_SRC>,
<&clk IMX8MM_CLK_SAI1_DIV>;
assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>;
assigned-clock-rates = <0>, <12288000>;
status = "okay";
};
&sai2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sai2>;
status = "okay";
};
#endif
&uart1 { /* J56 - console also */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart1>;
assigned-clocks = <&clk IMX8MM_CLK_UART1_SRC>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_80M>;
fsl,uart-has-rtscts;
status = "okay";
};
#if 0
&uart2 { /* Silex */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart2>;
assigned-clocks = <&clk IMX8MM_CLK_UART2_SRC>;
assigned-clock-parents = <&clk IMX8MM_CLK_24M>;
status = "okay";
};
&uart3 { /* GPS */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart3>;
assigned-clocks = <&clk IMX8MM_CLK_UART3_SRC>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_80M>;
fsl,uart-has-rtscts;
status = "okay";
};
&uart4 { /* J56 - RS485*/
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart4>;
assigned-clocks = <&clk IMX8MM_CLK_UART4_SRC>;
assigned-clock-parents = <&clk IMX8MM_CLK_24M>;
status = "okay";
};
#endif
&usbotg1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usbotg1>;
power-polarity-active-high;
dr_mode = "otg";
status = "okay";
};
&usbotg2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usbotg2>;
power-polarity-active-high;
reset-gpios = GP_OTG2_HUB_RESET, GP_MODEM_ON, GP_MODEM_RESET, GP_BT_RESET;
vbus-supply = <&reg_vref_3v7>;
dr_mode = "host";
status = "okay";
};
&usdhc1 {
cap-mmc-highspeed;
bus-width = <8>;
mmc-ddr-1_8v;
mmc-hs200-1_8v;
no-mmc-hs400;
non-removable;
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc1>;
pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
reset-gpios = GP_EMMC_RESET;
status = "okay";
vmmc-supply = <&reg_vref_3v3>;
vqmmc-1-8-v;
vqmmc-supply = <&reg_vref_1v8>;
};
&usdhc2 {
bus-width = <4>;
cap-sd-highspeed;
cd-gpios = GP_USDHC2_CD;
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc2>;
pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
sd-uhs-ddr50;
sd-uhs-sdr104;
sd-uhs-sdr12;
sd-uhs-sdr25;
status = "okay";
#if 1
vqmmc-supply = <&reg_usdhc2_vqmmc>;
#else
vqmmc-supply = <&reg_ldo2>;
#endif
};
#if 0
&usdhc3 {
bus-width = <4>;
no-sd-uhs-sdr104;
non-removable;
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc3>;
pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
status = "okay";
vmmc-supply = <&reg_wlan_vmmc>;
vqmmc-1-8-v;
};
&vpu_g1 {
status = "okay";
};
&vpu_g2 {
status = "okay";
};
&vpu_h1 {
status = "okay";
};
#endif
&wdog1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_wdog>;
fsl,ext-reset-output;
status = "okay";
};
/*
* Copyright 2018 NXP
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
/dts-v1/;
#include "fsl-imx8mm.dtsi"
&iomuxc {
iomuxc_pinctrl: iomuxc-pinctrlgrp {
};
};
&iomuxc_pinctrl {
pinctrl_bt_rfkill: bt-rfkillgrp {
fsl,pins = <
#define GP_BT_RFKILL_RESET <&gpio3 14 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_NAND_DQS_GPIO3_IO14 0x119
>;
};
pinctrl_ecspi2: ecspi2grp {
fsl,pins = <
/* J15 */
#define GP_ECSPI2_CS0 <&gpio5 13 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_ECSPI2_SS0_GPIO5_IO13 0x19 /* Pin 39 */
MX8MM_IOMUXC_ECSPI2_MISO_ECSPI2_MISO 0x19 /* Pin 41 */
MX8MM_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK 0x19 /* Pin 43 */
MX8MM_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI 0x19 /* Pin 45 */
>;
};
pinctrl_fec1: fec1grp {
fsl,pins = <
MX8MM_IOMUXC_ENET_MDC_ENET1_MDC 0x00
/* PAD_CTL_ODE is screwy on 8mm mini, avoid it */
MX8MM_IOMUXC_ENET_MDIO_ENET1_MDIO 0x00
MX8MM_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x91
MX8MM_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x91
MX8MM_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x91
MX8MM_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0x91
MX8MM_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x91
MX8MM_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x91
MX8MM_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x1f
MX8MM_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x1f
MX8MM_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x1f
MX8MM_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x1f
MX8MM_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x1f
MX8MM_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x1f
#define GP_FEC1_RESET <&gpio3 15 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_NAND_RE_B_GPIO3_IO15 0x159
#define GPIRQ_FEC1_PHY <&gpio3 16 IRQ_TYPE_LEVEL_LOW>
MX8MM_IOMUXC_NAND_READY_B_GPIO3_IO16 0x159
>;
};
pinctrl_flexspi: flexspigrp {
fsl,pins = <
MX8MM_IOMUXC_NAND_ALE_QSPI_A_SCLK 0x1c2
MX8MM_IOMUXC_NAND_CE0_B_QSPI_A_SS0_B 0x82
MX8MM_IOMUXC_NAND_DATA00_QSPI_A_DATA0 0x82
MX8MM_IOMUXC_NAND_DATA01_QSPI_A_DATA1 0x82
MX8MM_IOMUXC_NAND_DATA02_QSPI_A_DATA2 0x82
MX8MM_IOMUXC_NAND_DATA03_QSPI_A_DATA3 0x82
>;
};
pinctrl_i2c1: i2c1grp {
fsl,pins = <
MX8MM_IOMUXC_I2C1_SCL_I2C1_SCL 0x400001c3
MX8MM_IOMUXC_I2C1_SDA_I2C1_SDA 0x400001c3
>;
};
pinctrl_i2c1_1: i2c1_1grp {
fsl,pins = <
#define GP_I2C1_SCL <&gpio5 14 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C1_SCL_GPIO5_IO14 0x400001c3
#define GP_I2C1_SDA <&gpio5 15 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C1_SDA_GPIO5_IO15 0x400001c3
>;
};
pinctrl_i2c1_pf8100: i2c1-pf8100grp {
fsl,pins = <
#define GP_I2C1_PF8100_EWARN <&gpio3 3 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_NAND_CE2_B_GPIO3_IO3 0x149
#define GP_I2C1_PF8100_FAULT <&gpio3 4 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_NAND_CE3_B_GPIO3_IO4 0x149
>;
};
pinctrl_i2c2: i2c2grp {
fsl,pins = <
MX8MM_IOMUXC_I2C2_SCL_I2C2_SCL 0x400001c3
MX8MM_IOMUXC_I2C2_SDA_I2C2_SDA 0x400001c3
>;
};
pinctrl_i2c2_1: i2c2_1grp {
fsl,pins = <
#define GP_I2C2_SCL <&gpio5 16 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C2_SCL_GPIO5_IO16 0x400001c3
#define GP_I2C2_SDA <&gpio5 17 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C2_SDA_GPIO5_IO17 0x400001c3
>;
};
pinctrl_i2c2_gt911: i2c2-gt911grp {
fsl,pins = <
#define GPIRQ_GT911 <&gpio1 6 IRQ_TYPE_LEVEL_HIGH>
#define GP_GT911_IRQ <&gpio1 6 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_GPIO1_IO06_GPIO1_IO6 0x1d6
/* driver writes levels, instead of active/inactive */
#define GP_GT911_RESET <&gpio1 7 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_GPIO1_IO07_GPIO1_IO7 0x149
>;
};
pinctrl_i2c2_ft5x06: i2c2-ft5x06grp {
fsl,pins = <
#define GPIRQ_I2C2_FT5X06 <&gpio1 6 IRQ_TYPE_EDGE_FALLING>
#define GP_I2C2_FT5X06_WAKE <&gpio1 6 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_GPIO1_IO06_GPIO1_IO6 0x149
#define GP_I2C2_FT5X06_RESET <&gpio1 7 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_GPIO1_IO07_GPIO1_IO7 0x109
>;
};
pinctrl_i2c2_sn65dsi83: i2c2-sn65dsi83grp {
fsl,pins = <
#define GPIRQ_I2C2_SN65DSI83 <&gpio1 1 IRQ_TYPE_LEVEL_HIGH>
MX8MM_IOMUXC_GPIO1_IO01_GPIO1_IO1 0x04
#define GP_I2C2_SN65DSI83_EN <&gpio1 9 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_GPIO1_IO09_GPIO1_IO9 0x106
>;
};
pinctrl_i2c3: i2c3grp {
fsl,pins = <
MX8MM_IOMUXC_I2C3_SCL_I2C3_SCL 0x400001c3
MX8MM_IOMUXC_I2C3_SDA_I2C3_SDA 0x400001c3
>;
};
pinctrl_i2c3_1: i2c3_1grp {
fsl,pins = <
#define GP_I2C3_SCL <&gpio5 18 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C3_SCL_GPIO5_IO18 0x400001c3
#define GP_I2C3_SDA <&gpio5 19 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C3_SDA_GPIO5_IO19 0x400001c3
>;
};
pinctrl_i2c3a_rv4162: i2c3a-rv4162grp {
fsl,pins = <
#define GPIRQ_RV4162 <&gpio4 22 IRQ_TYPE_LEVEL_LOW>
MX8MM_IOMUXC_SAI2_RXC_GPIO4_IO22 0x1c0
>;
};
pinctrl_i2c3b_csi1: i2c3b-csi1grp {
fsl,pins = <
#define GP_CSI1_MIPI_PWDN <&gpio1 8 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_GPIO1_IO08_GPIO1_IO8 0x141
#define GP_CSI1_MIPI_RESET <&gpio3 5 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_NAND_CLE_GPIO3_IO5 0x101
>;
};
pinctrl_i2c4: i2c4grp {
fsl,pins = <
MX8MM_IOMUXC_I2C4_SCL_I2C4_SCL 0x400001c3
MX8MM_IOMUXC_I2C4_SDA_I2C4_SDA 0x400001c3
>;
};
pinctrl_i2c4_1: i2c4_1grp {
fsl,pins = <
#define GP_I2C4_SCL <&gpio5 20 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C4_SCL_GPIO5_IO20 0x400001c3
#define GP_I2C4_SDA <&gpio5 21 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_I2C4_SDA_GPIO5_IO21 0x400001c3
>;
};
pinctrl_mipi_com50h5n03ulc: mipi-com50h5n03ulcgrp {
fsl,pins = <
#define GP_MIPI_RESET <&gpio1 9 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_GPIO1_IO09_GPIO1_IO9 0x16
>;
};
pinctrl_mipi_lcm_jm430: mipi-lcm-jm430grp {
fsl,pins = <
#define GP_TC358762_EN <&gpio1 9 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_GPIO1_IO09_GPIO1_IO9 0x16
>;
};
pinctrl_mipi_ltk0680ytmdb: mipi-ltk0680ytmdbgrp {
fsl,pins = <
#define GP_MIPI_RESET <&gpio1 9 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_GPIO1_IO09_GPIO1_IO9 0x16
>;
};
pinctrl_mipi_ltk080a60a004t: mipi-ltk080a60a004tgrp {
fsl,pins = <
#define GP_LTK08_MIPI_EN <&gpio1 1 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_GPIO1_IO01_GPIO1_IO1 0x116
>;
};
pinctrl_pcie0: pcie0grp {
fsl,pins = <
#define GP_PCIE0_RESET <&gpio4 31 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_SAI3_TXFS_GPIO4_IO31 0x100
#define GP_PCIE0_DISABLE <&gpio1 5 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_GPIO1_IO05_GPIO1_IO5 0x100
>;
};
pinctrl_pwm1: pwm1grp {
fsl,pins = <
MX8MM_IOMUXC_SPDIF_EXT_CLK_PWM1_OUT 0x16
>;
};
pinctrl_pwm2: pwm2grp {
fsl,pins = <
MX8MM_IOMUXC_SPDIF_RX_PWM2_OUT 0x16
>;
};
pinctrl_pwm3: pwm3grp {
fsl,pins = <
MX8MM_IOMUXC_SPDIF_TX_PWM3_OUT 0x16
>;
};
pinctrl_pwm4: pwm4grp {
fsl,pins = <
MX8MM_IOMUXC_SAI3_MCLK_PWM4_OUT 0x16
>;
};
pinctrl_reg_usdhc2_vqmmc: reg_usdhc2_vqmmcgrp {
fsl,pins = <
#define GP_USDHC2_VSEL <&gpio3 2 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_NAND_CE1_B_GPIO3_IO2 0x16
>;
};
pinctrl_reg_wlan_vmmc: reg-wlan-vmmcgrp {
fsl,pins = <
#define GP_REG_WLAN_VMMC <&gpio3 20 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SAI5_RXC_GPIO3_IO20 0x16
>;
};
pinctrl_sai1: sai1grp {
fsl,pins = <
/* wm8960 */
MX8MM_IOMUXC_SAI1_MCLK_SAI1_MCLK 0xd6
MX8MM_IOMUXC_SAI1_TXFS_SAI1_TX_SYNC 0xd6
MX8MM_IOMUXC_SAI1_TXC_SAI1_TX_BCLK 0xd6
MX8MM_IOMUXC_SAI1_TXD0_SAI1_TX_DATA0 0xd6
MX8MM_IOMUXC_SAI1_RXD0_SAI1_RX_DATA0 0xd6
>;
};
pinctrl_sai2: sai2grp {
fsl,pins = <
/* Bluetooth PCM */
MX8MM_IOMUXC_SAI2_TXFS_SAI2_TX_SYNC 0xd6
MX8MM_IOMUXC_SAI2_TXC_SAI2_TX_BCLK 0xd6
MX8MM_IOMUXC_SAI2_TXD0_SAI2_TX_DATA0 0xd6
MX8MM_IOMUXC_SAI2_RXD0_SAI2_RX_DATA0 0xd6
>;
};
pinctrl_sai3: sai3grp {
fsl,pins = <
/* J16 */
MX8MM_IOMUXC_SAI3_MCLK_SAI3_MCLK 0xd6 /* Pin 22 */
MX8MM_IOMUXC_SAI3_TXC_SAI3_TX_BCLK 0xd6 /* Pin 26 */
MX8MM_IOMUXC_SAI3_TXD_SAI3_TX_DATA0 0xd6 /* Pin 28 */
MX8MM_IOMUXC_SAI3_RXD_SAI3_RX_DATA0 0xd6 /* Pin 30 */
>;
};
pinctrl_sai5: sai5grp {
fsl,pins = <
MX8MM_IOMUXC_SAI5_MCLK_SAI5_MCLK 0xd6
MX8MM_IOMUXC_SAI5_RXFS_SAI5_RX_SYNC 0xd6
MX8MM_IOMUXC_SAI5_RXD0_SAI5_RX_DATA0 0xd6
MX8MM_IOMUXC_SAI5_RXD1_SAI5_RX_DATA1 0xd6
MX8MM_IOMUXC_SAI5_RXD2_SAI5_RX_DATA2 0xd6
MX8MM_IOMUXC_SAI5_RXD3_SAI5_RX_DATA3 0xd6
>;
};
pinctrl_sound_wm8960: sound-wm8960grp {
fsl,pins = <
#define GP_WM8960_MIC_DET <&gpio1 10 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_GPIO1_IO10_GPIO1_IO10 0x80
#define GP_WM8960_HP_DET <&gpio4 28 GPIO_ACTIVE_HIGH>
MX8MM_IOMUXC_SAI3_RXFS_GPIO4_IO28 0x80
>;
};
pinctrl_uart1: uart1grp {
fsl,pins = <
MX8MM_IOMUXC_UART1_RXD_UART1_DCE_RX 0x140
MX8MM_IOMUXC_UART1_TXD_UART1_DCE_TX 0x140
MX8MM_IOMUXC_UART3_RXD_UART1_DCE_CTS_B 0x140
MX8MM_IOMUXC_UART3_TXD_UART1_DCE_RTS_B 0x140
>;
};
pinctrl_uart2: uart2grp {
fsl,pins = <
MX8MM_IOMUXC_UART2_RXD_UART2_DCE_RX 0x140
MX8MM_IOMUXC_UART2_TXD_UART2_DCE_TX 0x140
>;
};
pinctrl_uart3: uart3grp {
fsl,pins = <
MX8MM_IOMUXC_ECSPI1_SCLK_UART3_DCE_RX 0x140
MX8MM_IOMUXC_ECSPI1_MOSI_UART3_DCE_TX 0x140
MX8MM_IOMUXC_ECSPI1_SS0_UART3_DCE_RTS_B 0x140
MX8MM_IOMUXC_ECSPI1_MISO_UART3_DCE_CTS_B 0x140
>;
};
pinctrl_uart4: uart4grp {
fsl,pins = <
MX8MM_IOMUXC_UART4_RXD_UART4_DCE_RX 0x140
MX8MM_IOMUXC_UART4_TXD_UART4_DCE_TX 0x140
>;
};
pinctrl_usbotg1: usbotg1grp {
fsl,pins = <
MX8MM_IOMUXC_GPIO1_IO12_USB1_OTG_PWR 0x16
MX8MM_IOMUXC_GPIO1_IO13_USB1_OTG_OC 0x16
>;
};
pinctrl_usbotg2: usbotg2grp {
fsl,pins = <
MX8MM_IOMUXC_GPIO1_IO14_USB2_OTG_PWR 0x16
MX8MM_IOMUXC_GPIO1_IO15_USB2_OTG_OC 0x16
>;
};
pinctrl_usdhc1: usdhc1grp {
fsl,pins = <
MX8MM_IOMUXC_SD1_CLK_USDHC1_CLK 0x190
MX8MM_IOMUXC_SD1_CMD_USDHC1_CMD 0x1d0
MX8MM_IOMUXC_SD1_DATA0_USDHC1_DATA0 0x1d0
MX8MM_IOMUXC_SD1_DATA1_USDHC1_DATA1 0x1d0
MX8MM_IOMUXC_SD1_DATA2_USDHC1_DATA2 0x1d0
MX8MM_IOMUXC_SD1_DATA3_USDHC1_DATA3 0x1d0
MX8MM_IOMUXC_SD1_DATA4_USDHC1_DATA4 0x1d0
MX8MM_IOMUXC_SD1_DATA5_USDHC1_DATA5 0x1d0
MX8MM_IOMUXC_SD1_DATA6_USDHC1_DATA6 0x1d0
MX8MM_IOMUXC_SD1_DATA7_USDHC1_DATA7 0x1d0
#define GP_EMMC_RESET <&gpio2 10 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_SD1_RESET_B_GPIO2_IO10 0x141
>;
};
pinctrl_usdhc1_100mhz: usdhc1grp100mhz {
fsl,pins = <
MX8MM_IOMUXC_SD1_CLK_USDHC1_CLK 0x194
MX8MM_IOMUXC_SD1_CMD_USDHC1_CMD 0x1d4
MX8MM_IOMUXC_SD1_DATA0_USDHC1_DATA0 0x1d4
MX8MM_IOMUXC_SD1_DATA1_USDHC1_DATA1 0x1d4
MX8MM_IOMUXC_SD1_DATA2_USDHC1_DATA2 0x1d4
MX8MM_IOMUXC_SD1_DATA3_USDHC1_DATA3 0x1d4
MX8MM_IOMUXC_SD1_DATA4_USDHC1_DATA4 0x1d4
MX8MM_IOMUXC_SD1_DATA5_USDHC1_DATA5 0x1d4
MX8MM_IOMUXC_SD1_DATA6_USDHC1_DATA6 0x1d4
MX8MM_IOMUXC_SD1_DATA7_USDHC1_DATA7 0x1d4
>;
};
pinctrl_usdhc1_200mhz: usdhc1grp200mhz {
fsl,pins = <
MX8MM_IOMUXC_SD1_CLK_USDHC1_CLK 0x196
MX8MM_IOMUXC_SD1_CMD_USDHC1_CMD 0x1d6
MX8MM_IOMUXC_SD1_DATA0_USDHC1_DATA0 0x1d6
MX8MM_IOMUXC_SD1_DATA1_USDHC1_DATA1 0x1d6
MX8MM_IOMUXC_SD1_DATA2_USDHC1_DATA2 0x1d6
MX8MM_IOMUXC_SD1_DATA3_USDHC1_DATA3 0x1d6
MX8MM_IOMUXC_SD1_DATA4_USDHC1_DATA4 0x1d6
MX8MM_IOMUXC_SD1_DATA5_USDHC1_DATA5 0x1d6
MX8MM_IOMUXC_SD1_DATA6_USDHC1_DATA6 0x1d6
MX8MM_IOMUXC_SD1_DATA7_USDHC1_DATA7 0x1d6
>;
};
pinctrl_usdhc2: usdhc2grp {
fsl,pins = <
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x190
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d0
MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d0
MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d0
MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d0
MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d0
#define GP_USDHC2_CD <&gpio2 12 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12 0x1c4
>;
};
pinctrl_usdhc2_100mhz: usdhc2grp100mhz {
fsl,pins = <
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x194
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d4
MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4
MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4
MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4
MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4
>;
};
pinctrl_usdhc2_200mhz: usdhc2grp200mhz {
fsl,pins = <
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x196
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d6
MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d6
MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d6
MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d6
MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d6
>;
};
pinctrl_usdhc3: usdhc3grp {
fsl,pins = <
MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK 0x190
MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d0
MX8MM_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d0
MX8MM_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d0
MX8MM_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d0
MX8MM_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d0
/* Bluetooth slow clock */
MX8MM_IOMUXC_GPIO1_IO00_ANAMIX_REF_CLK_32K 0x03
>;
};
pinctrl_usdhc3_100mhz: usdhc3grp100mhz {
fsl,pins = <
MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK 0x194
MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d4
MX8MM_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d4
MX8MM_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d4
MX8MM_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d4
MX8MM_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d4
>;
};
pinctrl_usdhc3_200mhz: usdhc3grp200mhz {
fsl,pins = <
MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK 0x196
MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d6
MX8MM_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d6
MX8MM_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d6
MX8MM_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d6
MX8MM_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d6
>;
};
pinctrl_wdog: wdoggrp {
fsl,pins = <
MX8MM_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B 0x140
>;
};
pinctrl_wdog_gpio: wdog-gpiogrp {
fsl,pins = <
#define GP_WDOG_RESET <&gpio1 2 GPIO_ACTIVE_LOW>
MX8MM_IOMUXC_GPIO1_IO02_GPIO1_IO2 0x140
>;
};
};
/ {
model = "Boundary Devices i.MX8MMini Nitrogen8MM";
compatible = "boundary,imx8mm-nitrogen8mm", "fsl,imx8mm";
chosen {
bootargs = "console=ttymxc1,115200 earlycon=ec_imx6q,0x30890000,115200";
stdout-patch = &uart2;
};
#if 0
backlight_mipi: backlight-mipi {
brightness-levels = <0 1 2 3 4 5 6 7 8 9 10>;
compatible = "pwm-backlight";
default-brightness-level = <8>;
display = <&display_subsystem>;
pwms = <&pwm3 0 30000>; /* 33.3 Khz */
status = "okay";
};
bt-rfkill {
compatible = "net,rfkill-gpio";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_bt_rfkill>;
name = "bt-rfkill";
type = <2>; /* Bluetooth */
reset-gpios = GP_BT_RFKILL_RESET;
status = "okay";
};
csi_mclk: csi-mclk {
compatible = "pwm-clock";
#clock-cells = <0>;
clock-frequency = <20000000>;
clock-output-names = "csi_mclk";
pwms = <&pwm2 0 50>; /* 1 / 50 ns = 20 MHz */
};
#endif
reg_usdhc2_vqmmc: regulator-usdhc2-vqmmc {
compatible = "regulator-gpio";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_reg_usdhc2_vqmmc>;
regulator-name = "reg_sd2_vsel";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-type = "voltage";
regulator-boot-on;
regulator-always-on;
gpios = GP_USDHC2_VSEL;
states = <1800000 0x1
3300000 0x0>;
};
reg_vref_1v8: regulator-vref-1v8 {
compatible = "regulator-fixed";
regulator-name = "vref-1v8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
reg_vref_2v5: regulator-vref-2v5 {
compatible = "regulator-fixed";
regulator-name = "vref-2v5";
regulator-min-microvolt = <2500000>;
regulator-max-microvolt = <2500000>;
};
reg_vref_3v3: regulator-vref-3v3 {
compatible = "regulator-fixed";
regulator-name = "vref-3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
reg_vref_5v: regulator-vref-5v {
compatible = "regulator-fixed";
regulator-name = "vref-5v";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
};
reg_wlan_vmmc: regulator-wlan-vmmc {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_reg_wlan_vmmc>;
regulator-name = "reg_wlan_vmmc";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = GP_REG_WLAN_VMMC;
startup-delay-us = <70000>;
enable-active-high;
};
#if 0
sound-wm8960 {
compatible = "fsl,imx-audio-wm8960";
model = "wm8960-audio";
cpu-dai = <&sai1>;
codec-master;
audio-codec = <&wm8960>;
audio-routing =
"Headphone Jack", "HP_L",
"Headphone Jack", "HP_R",
"Ext Spk", "SPK_LP",
"Ext Spk", "SPK_LN",
"Ext Spk", "SPK_RP",
"Ext Spk", "SPK_RN",
"LINPUT1", "Main MIC",
"Main MIC", "MICB",
"RINPUT1", "Mic Jack",
"Mic Jack", "MICB";
/* JD2: hp detect high for headphone*/
hp-det = <2 0>;
hp-det-gpios = GP_WM8960_HP_DET;
#if 0 /* Jack is not stuffed */
mic-det-gpios = GP_WM8960_MIC_DET;
#endif
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sound_wm8960>;
};
#endif
};
#if 0
&A53_0 {
arm-supply = <&reg_sw4>;
};
&clk {
assigned-clocks = <&clk IMX8MM_AUDIO_PLL1>, <&clk IMX8MM_AUDIO_PLL2>;
assigned-clock-rates = <786432000>, <722534400>;
};
&csi1_bridge {
fsl,mipi-mode;
status = "okay";
port {
csi1_ep: endpoint {
remote-endpoint = <&csi1_mipi_ep>;
};
};
};
&ecspi2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi2>;
fsl,spi-num-chipselects = <1>;
cs-gpios = GP_ECSPI2_CS0;
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
spidev@0 {
compatible = "spidev";
spi-max-frequency = <2000000>;
reg = <0>;
};
};
#endif
&fec1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_fec1>;
#if 0
phy-reset-gpios = GP_FEC1_RESET;
#endif
phy-mode = "rgmii-id";
phy-handle = <&ethphy0>;
fsl,magic-packet;
status = "okay";
mdio {
#address-cells = <1>;
#size-cells = <0>;
ethphy0: ethernet-phy@4 {
compatible = "ethernet-phy-ieee802.3-c22";
reg = <4>;
interrupts-extended = GPIRQ_FEC1_PHY;
};
};
};
&flexspi0 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_flexspi>;
status = "okay";
};
#if 0
&gpu {
status = "okay";
};
#endif
&i2c1 {
clock-frequency = <400000>;
pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_i2c1>;
pinctrl-1 = <&pinctrl_i2c1_1>;
scl-gpios = GP_I2C1_SCL;
sda-gpios = GP_I2C1_SDA;
status = "okay";
#if 0
pf8100@08 {
compatible = "nxp,pf8x00";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c1_pf8100>;
reg = <0x08>;
regulators {
reg_ldo1: ldo1 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <5000000>;
regulator-min-microvolt = <1500000>;
};
reg_ldo2: ldo2 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <5000000>;
regulator-min-microvolt = <1500000>;
#if 0
/* vselect low is 3.3V, high is 1.8V */
vselect-en;
#endif
};
reg_ldo3: ldo3 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <5000000>;
regulator-min-microvolt = <1500000>;
};
reg_ldo4: ldo4 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <5000000>;
regulator-min-microvolt = <1500000>;
};
reg_sw1: sw1 {
phase = <0>;
ilim-ma = <4500>;
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <1800000>;
regulator-min-microvolt = <400000>;
};
reg_sw2: sw2 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <1800000>;
regulator-min-microvolt = <400000>;
};
reg_sw3: sw3 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <1800000>;
regulator-min-microvolt = <400000>;
};
reg_sw4: sw4 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <1800000>;
regulator-min-microvolt = <400000>;
dual-phase;
};
reg_sw5: sw5 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <1800000>;
regulator-min-microvolt = <400000>;
};
reg_sw6: sw6 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <1800000>;
regulator-min-microvolt = <400000>;
};
reg_sw7: sw7 {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <4100000>;
regulator-min-microvolt = <1000000>;
};
reg_vsnvs: vsnvs {
regulator-always-on;
regulator-boot-on;
regulator-max-microvolt = <3300000>;
regulator-min-microvolt = <1800000>;
};
};
};
#endif
};
&i2c2 {
clock-frequency = <100000>;
pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_i2c2>;
pinctrl-1 = <&pinctrl_i2c2_1>;
scl-gpios = GP_I2C2_SCL;
sda-gpios = GP_I2C2_SDA;
status = "okay";
#if 0
mipi_to_lvds: mipi-to-lvds@2c {
clocks = <&mipi_dsi 0>,
<&clk IMX8MM_CLK_LCDIF_PIXEL_DIV>;
clock-names = "mipi_clk", "pixel_clock";
compatible = "ti,sn65dsi83";
display = <&display_subsystem>;
display-dsi = <&fb_mipi>;
enable-gpios = GP_I2C2_SN65DSI83_EN;
interrupts-extended = GPIRQ_I2C2_SN65DSI83;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2_sn65dsi83>;
reg = <0x2c>;
status = "okay";
};
touchscreen@38 {
compatible = "ft5x06-ts";
interrupts-extended = GPIRQ_I2C2_FT5X06;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2_ft5x06>;
reg = <0x38>;
wakeup-gpios = GP_I2C2_FT5X06_WAKE;
reset-gpios = GP_I2C2_FT5X06_RESET;
};
touchscreen@5d {
compatible = "goodix,gt9271";
display = <&display_subsystem>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2_gt911>;
reg = <0x5d>;
esd-recovery-timeout-ms = <2000>;
interrupts-extended = GPIRQ_GT911;
irq-gpios = GP_GT911_IRQ;
reset-gpios = GP_GT911_RESET;
};
#endif
};
&i2c3 {
clock-frequency = <100000>;
pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_i2c3>;
pinctrl-1 = <&pinctrl_i2c3_1>;
scl-gpios = GP_I2C3_SCL;
sda-gpios = GP_I2C3_SDA;
status = "okay";
i2cmux@70 {
compatible = "nxp,pca9540";
reg = <0x70>;
#address-cells = <1>;
#size-cells = <0>;
i2c3a: i2c3@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
};
i2c3b: i2c3@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
};
};
};
#if 0
&i2c3a {
rtc@68 {
compatible = "microcrystal,rv4162";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3a_rv4162>;
reg = <0x68>;
interrupts-extended = GPIRQ_RV4162;
wakeup-source;
};
};
&i2c3b {
ov5640-mipi1@3c {
compatible = "ov5640_mipisubdev";
reg = <0x3c>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3b_csi1>;
clocks = <&csi_mclk>;
clock-names = "csi_mclk";
csi_id = <0>;
AVDD-supply = <&reg_vref_2v5>;
DVDD-supply = <&reg_vref_3v3>;
DOVDD-supply = <&reg_vref_1v8>;
pwn-gpios = GP_CSI1_MIPI_PWDN;
rst-gpios = GP_CSI1_MIPI_RESET;
mclk = <20000000>;
mipi_csi;
port {
ov5640_mipi1_ep: endpoint {
remote-endpoint = <&mipi1_sensor_ep>;
};
};
};
};
#endif
&i2c4 {
clock-frequency = <100000>;
pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_i2c4>;
pinctrl-1 = <&pinctrl_i2c4_1>;
scl-gpios = GP_I2C4_SCL;
sda-gpios = GP_I2C4_SDA;
status = "okay";
wm8960: codec@1a {
compatible = "wlf,wm8960";
reg = <0x1a>;
clocks = <&clk IMX8MM_CLK_SAI1_ROOT>;
clock-names = "mclk";
wlf,shared-lrclk;
};
};
#if 0
&lcdif {
status = "okay";
};
&mipi_csi_1 {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
port {
mipi1_sensor_ep: endpoint1 {
remote-endpoint = <&ov5640_mipi1_ep>;
data-lanes = <2>;
csis-hs-settle = <13>;
csis-clk-settle = <2>;
csis-wclk;
};
csi1_mipi_ep: endpoint2 {
remote-endpoint = <&csi1_ep>;
};
};
};
&mipi_dsi {
assigned-clocks = <&clk IMX8MM_CLK_DSI_CORE_SRC>,
<&clk IMX8MM_CLK_DSI_PHY_REF_SRC>,
<&clk IMX8MM_VIDEO_PLL1_REF_SEL>,
<&clk IMX8MM_CLK_LCDIF_PIXEL_DIV>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_266M>,
<&clk IMX8MM_VIDEO_PLL1_OUT>,
<&clk IMX8MM_CLK_24M>;
assigned-clock-rates = <266000000>, <0>, <0>, <66000000>;
clocks = <&clk IMX8MM_CLK_DSI_CORE_DIV>,
<&clk IMX8MM_CLK_DSI_PHY_REF_DIV>,
<&clk IMX8MM_CLK_LCDIF_PIXEL_DIV>;
clock-names = "cfg", "pll-ref", "pixel_clock";
status = "okay";
fb_mipi: panel@0 {
bits-per-color = <8>;
bridge-de-active = <0>;
bus-format = "rgb888";
compatible = "panel,simple";
dsi-format = "rgb888";
dsi-lanes = <4>;
#if 0
/* u-boot will set this where appropriate */
enable-gpios = GP_LTK08_MIPI_EN;
mipi-cmds = <&mipi_cmds_ltk080a60a004t>;
#endif
mode-skip-eot;
mode-video;
#if 1
mode-video-burst;
#else
mode-video-sync-pulse;
#endif
min-hs-clock-multiple = <8>;
panel-height-mm = <136>;
panel-width-mm = <217>;
power-supply = <&reg_vref_5v>;
reg = <0>;
spwg;
display-timings {
t_mipi: t-dsi-default {
/* m101nwwb by default */
clock-frequency = <66000000>;
hactive = <1280>;
vactive = <800>;
hback-porch = <5>;
hfront-porch = <123>;
vback-porch = <3>;
vfront-porch = <24>;
hsync-len = <1>;
vsync-len = <1>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <1>;
};
};
};
};
&mu {
status = "okay";
};
&pcie0 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pcie0>;
disable-gpio = GP_PCIE0_DISABLE;
reset-gpio = GP_PCIE0_RESET;
ext_osc = <0>;
status = "okay";
};
&pwm1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pwm1>;
status = "okay";
};
&pwm2 {
assigned-clocks = <&clk IMX8MM_CLK_PWM2_SRC>,
<&clk IMX8MM_CLK_PWM2_DIV>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_40M>;
assigned-clock-rates = <0>, <40000000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pwm2>;
status = "okay";
};
&pwm3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pwm3>;
status = "okay";
};
&pwm4 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pwm4>;
status = "okay";
};
&sai1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sai1>;
assigned-clocks = <&clk IMX8MM_CLK_SAI1_SRC>,
<&clk IMX8MM_CLK_SAI1_DIV>;
assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>;
assigned-clock-rates = <0>, <12288000>;
status = "okay";
};
&sai2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sai2>;
status = "okay";
};
&sai3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sai3>;
status = "disabled";
};
&sai5 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sai5>;
status = "disabled";
};
&uart1 { /* BT */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart1>;
assigned-clocks = <&clk IMX8MM_CLK_UART1_SRC>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_80M>;
fsl,uart-has-rtscts;
status = "okay";
};
#endif
&uart2 { /* console */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart2>;
assigned-clocks = <&clk IMX8MM_CLK_UART2_SRC>;
assigned-clock-parents = <&clk IMX8MM_CLK_24M>;
status = "okay";
};
#if 0
&uart3 { /* J15 */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart3>;
assigned-clocks = <&clk IMX8MM_CLK_UART3_SRC>;
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_80M>;
fsl,uart-has-rtscts;
status = "okay";
};
&uart4 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart4>;
assigned-clocks = <&clk IMX8MM_CLK_UART4_SRC>;
assigned-clock-parents = <&clk IMX8MM_CLK_24M>;
status = "okay";
};
#endif
&usbotg1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usbotg1>;
power-polarity-active-high;
dr_mode = "otg";
status = "okay";
};
&usbotg2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usbotg2>;
power-polarity-active-high;
dr_mode = "host";
status = "okay";
};
&usdhc1 {
cap-mmc-highspeed;
bus-width = <8>;
mmc-ddr-1_8v;
mmc-hs200-1_8v;
no-mmc-hs400;
non-removable;
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc1>;
pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
reset-gpios = GP_EMMC_RESET;
status = "okay";
vmmc-supply = <&reg_vref_3v3>;
vqmmc-1-8-v;
vqmmc-supply = <&reg_vref_1v8>;
};
&usdhc2 {
bus-width = <4>;
cap-sd-highspeed;
cd-gpios = GP_USDHC2_CD;
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc2>;
pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
sd-uhs-ddr50;
sd-uhs-sdr104;
sd-uhs-sdr12;
sd-uhs-sdr25;
status = "okay";
#if 1
vqmmc-supply = <&reg_usdhc2_vqmmc>;
#else
vqmmc-supply = <&reg_ldo2>;
#endif
};
#if 0
&usdhc3 {
bus-width = <4>;
no-sd-uhs-sdr104;
non-removable;
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc3>;
pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
status = "okay";
vmmc-supply = <&reg_wlan_vmmc>;
vqmmc-1-8-v;
};
&vpu_g1 {
status = "okay";
};
&vpu_g2 {
status = "okay";
};
&vpu_h1 {
status = "okay";
};
#endif
&wdog1 {
pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_wdog>;
pinctrl-1 = <&pinctrl_wdog_gpio>;
reset-gpios = GP_WDOG_RESET;
fsl,ext-reset-output;
status = "okay";
};