Merge tag 'u-boot-imx-20200107' of https://gitlab.denx.de/u-boot/custodians/u-boot-imx
authorTom Rini <trini@konsulko.com>
Tue, 7 Jan 2020 13:45:43 +0000 (08:45 -0500)
committerTom Rini <trini@konsulko.com>
Tue, 7 Jan 2020 13:45:43 +0000 (08:45 -0500)
New for 2020.04
---------------

- New boards
Embedded Artists COM board
Xea Board
- Switch to DM:
Aristainetos boards
Toradex colibri (DM_ETH)
iCubox
GE bx50v3
mx7dsabre (DM_ETH)
cx9020
- New features:
Bootaux with elf files
Default SYS_THUMB_BUILD for i.MX6/7
- Fixes:
DHCOM i.MX6 PDK
Engicam
i.MX8M tools (imx8m_image)

Travis: https://travis-ci.org/sbabic/u-boot-imx/builds/633679664

208 files changed:
arch/arm/Kconfig
arch/arm/cpu/arm926ejs/mxs/mxs.c
arch/arm/cpu/arm926ejs/mxs/spl_boot.c
arch/arm/dts/Makefile
arch/arm/dts/imx28-xea-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/imx28-xea.dts [new file with mode: 0644]
arch/arm/dts/imx53-cx9020.dts
arch/arm/dts/imx53-ppd-uboot.dtsi [new file with mode: 0644]
arch/arm/dts/imx53-ppd.dts
arch/arm/dts/imx6-apalis.dts
arch/arm/dts/imx6-colibri.dts
arch/arm/dts/imx6dl-aristainetos2_4-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/imx6dl-aristainetos2_4.dts [new file with mode: 0644]
arch/arm/dts/imx6dl-aristainetos2_4.dtsi [new file with mode: 0644]
arch/arm/dts/imx6dl-aristainetos2_7-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/imx6dl-aristainetos2_7.dts [new file with mode: 0644]
arch/arm/dts/imx6dl-aristainetos2_7.dtsi [new file with mode: 0644]
arch/arm/dts/imx6dl-aristainetos2b_4-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/imx6dl-aristainetos2b_4.dts [new file with mode: 0644]
arch/arm/dts/imx6dl-aristainetos2b_7-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/imx6dl-aristainetos2b_7.dts [new file with mode: 0644]
arch/arm/dts/imx6dl-aristainetos2b_csl_4-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/imx6dl-aristainetos2b_csl_4.dts [new file with mode: 0644]
arch/arm/dts/imx6dl-aristainetos2b_csl_7-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/imx6dl-aristainetos2b_csl_7.dts [new file with mode: 0644]
arch/arm/dts/imx6dl-aristainetos2c_4-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/imx6dl-aristainetos2c_4.dts [new file with mode: 0644]
arch/arm/dts/imx6dl-aristainetos2c_7-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/imx6dl-aristainetos2c_7.dts [new file with mode: 0644]
arch/arm/dts/imx6dl-cubox-i-emmc-som-v15.dts [new file with mode: 0644]
arch/arm/dts/imx6dl-cubox-i-som-v15.dts [new file with mode: 0644]
arch/arm/dts/imx6dl-cubox-i.dts [new file with mode: 0644]
arch/arm/dts/imx6dl-hummingboard-emmc-som-v15.dts [new file with mode: 0644]
arch/arm/dts/imx6dl-hummingboard-som-v15.dts [new file with mode: 0644]
arch/arm/dts/imx6dl-hummingboard.dts [new file with mode: 0644]
arch/arm/dts/imx6dl-hummingboard2-emmc-som-v15-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/imx6dl-hummingboard2-emmc-som-v15.dts [new file with mode: 0644]
arch/arm/dts/imx6dl-hummingboard2-som-v15.dts [new file with mode: 0644]
arch/arm/dts/imx6dl-hummingboard2.dts [new file with mode: 0644]
arch/arm/dts/imx6dl-icore-mipi.dts
arch/arm/dts/imx6dl-icore-rqs.dts
arch/arm/dts/imx6dl-icore.dts
arch/arm/dts/imx6q-b450v3.dts [new file with mode: 0644]
arch/arm/dts/imx6q-b650v3.dts [new file with mode: 0644]
arch/arm/dts/imx6q-b850v3.dts [new file with mode: 0644]
arch/arm/dts/imx6q-ba16.dtsi [new file with mode: 0644]
arch/arm/dts/imx6q-bx50v3-uboot.dtsi [new file with mode: 0644]
arch/arm/dts/imx6q-bx50v3.dts
arch/arm/dts/imx6q-bx50v3.dtsi [new file with mode: 0644]
arch/arm/dts/imx6q-cubox-i-emmc-som-v15.dts [new file with mode: 0644]
arch/arm/dts/imx6q-cubox-i-som-v15.dts [new file with mode: 0644]
arch/arm/dts/imx6q-cubox-i.dts [new file with mode: 0644]
arch/arm/dts/imx6q-dhcom-pdk2-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/imx6q-hummingboard-emmc-som-v15.dts [new file with mode: 0644]
arch/arm/dts/imx6q-hummingboard-som-v15.dts [new file with mode: 0644]
arch/arm/dts/imx6q-hummingboard.dts [new file with mode: 0644]
arch/arm/dts/imx6q-hummingboard2-emmc-som-v15-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/imx6q-hummingboard2-emmc-som-v15.dts [new file with mode: 0644]
arch/arm/dts/imx6q-hummingboard2-som-v15.dts [new file with mode: 0644]
arch/arm/dts/imx6q-hummingboard2.dts [new file with mode: 0644]
arch/arm/dts/imx6q-icore-mipi.dts
arch/arm/dts/imx6q-icore-ofcap10.dts [new file with mode: 0644]
arch/arm/dts/imx6q-icore-ofcap12.dts [new file with mode: 0644]
arch/arm/dts/imx6q-icore-rqs.dts
arch/arm/dts/imx6q-icore.dts
arch/arm/dts/imx6qdl-aristainetos2-common.dtsi [new file with mode: 0644]
arch/arm/dts/imx6qdl-aristainetos2-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/imx6qdl-aristainetos2.dtsi [new file with mode: 0644]
arch/arm/dts/imx6qdl-aristainetos2b-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/imx6qdl-aristainetos2b.dtsi [new file with mode: 0644]
arch/arm/dts/imx6qdl-aristainetos2b_csl-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/imx6qdl-aristainetos2b_csl.dtsi [new file with mode: 0644]
arch/arm/dts/imx6qdl-aristainetos2c-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/imx6qdl-aristainetos2c.dtsi [new file with mode: 0644]
arch/arm/dts/imx6qdl-cubox-i.dtsi [new file with mode: 0644]
arch/arm/dts/imx6qdl-hummingboard.dtsi [new file with mode: 0644]
arch/arm/dts/imx6qdl-hummingboard2-emmc-som-v15-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/imx6qdl-hummingboard2-emmc.dtsi [new file with mode: 0644]
arch/arm/dts/imx6qdl-hummingboard2.dtsi [new file with mode: 0644]
arch/arm/dts/imx6qdl-icore-1.5.dtsi [new file with mode: 0644]
arch/arm/dts/imx6qdl-icore-rqs.dtsi
arch/arm/dts/imx6qdl-icore.dtsi
arch/arm/dts/imx6qdl-sr-som-brcm.dtsi [new file with mode: 0644]
arch/arm/dts/imx6qdl-sr-som-emmc.dtsi [new file with mode: 0644]
arch/arm/dts/imx6qdl-sr-som-ti.dtsi [new file with mode: 0644]
arch/arm/dts/imx6qdl-sr-som.dtsi [new file with mode: 0644]
arch/arm/dts/imx6ul-phycore-segin.dts [deleted file]
arch/arm/dts/imx6ul-phytec-phycore-som.dtsi [new file with mode: 0644]
arch/arm/dts/imx6ul-phytec-segin-ff-rdk-nand.dts [new file with mode: 0644]
arch/arm/dts/imx6ul-phytec-segin-peb-eval-01.dtsi [new file with mode: 0644]
arch/arm/dts/imx6ul-phytec-segin.dtsi [new file with mode: 0644]
arch/arm/dts/imx6ull-phycore-segin.dts [deleted file]
arch/arm/dts/imx6ull-phytec-phycore-som.dtsi [new file with mode: 0644]
arch/arm/dts/imx6ull-phytec-segin-ff-rdk-emmc.dts [new file with mode: 0644]
arch/arm/dts/imx6ull-phytec-segin-peb-eval-01.dtsi [new file with mode: 0644]
arch/arm/dts/imx6ull-phytec-segin.dtsi [new file with mode: 0644]
arch/arm/dts/imx7-colibri.dtsi
arch/arm/dts/imx7d-sdb-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/imx7d-sdb.dts
arch/arm/dts/imx7d.dtsi
arch/arm/dts/imx7s.dtsi
arch/arm/dts/imx7ulp-com.dts [new file with mode: 0644]
arch/arm/dts/pcl063-common.dtsi [deleted file]
arch/arm/include/asm/arch-imx8m/ddr.h
arch/arm/include/asm/arch-mxs/regs-clkctrl-mx23.h
arch/arm/include/asm/arch-mxs/regs-clkctrl-mx28.h
arch/arm/include/asm/mach-imx/sys_proto.h
arch/arm/mach-imx/cmd_nandbcb.c
arch/arm/mach-imx/imx_bootaux.c
arch/arm/mach-imx/mx6/Kconfig
arch/arm/mach-imx/mx6/ddr.c
arch/arm/mach-imx/mx7/soc.c
arch/arm/mach-imx/mx7ulp/Kconfig
arch/arm/mach-imx/mxs/Kconfig
board/aristainetos/Kconfig
board/aristainetos/MAINTAINERS
board/aristainetos/aristainetos-v1.c [deleted file]
board/aristainetos/aristainetos-v2.c [deleted file]
board/aristainetos/aristainetos.c
board/aristainetos/aristainetos.cfg [deleted file]
board/aristainetos/aristainetos2.cfg
board/aristainetos/clocks.cfg [deleted file]
board/aristainetos/common/Kconfig [new file with mode: 0644]
board/aristainetos/ddr-setup.cfg [deleted file]
board/aristainetos/mt41j128M.cfg [deleted file]
board/beckhoff/mx53cx9020/mx53cx9020.c
board/compulab/cm_fx6/cm_fx6.c
board/ea/mx7ulp_com/Kconfig [new file with mode: 0644]
board/ea/mx7ulp_com/MAINTAINERS [new file with mode: 0644]
board/ea/mx7ulp_com/Makefile [new file with mode: 0644]
board/ea/mx7ulp_com/imximage.cfg [new file with mode: 0644]
board/ea/mx7ulp_com/mx7ulp_com.c [new file with mode: 0644]
board/engicam/common/board.c
board/freescale/imx8mm_evk/README
board/freescale/imx8mq_evk/README
board/freescale/mx6slevk/mx6slevk.c
board/freescale/mx6sllevk/mx6sllevk.c
board/freescale/mx7dsabresd/mx7dsabresd.c
board/ge/bx50v3/bx50v3.c
board/ge/common/ge_common.c
board/ge/mx53ppd/mx53ppd.c
board/liebherr/xea/Kconfig [new file with mode: 0644]
board/liebherr/xea/MAINTAINERS [new file with mode: 0644]
board/liebherr/xea/Makefile [new file with mode: 0644]
board/liebherr/xea/README [new file with mode: 0644]
board/liebherr/xea/spl_xea.c [new file with mode: 0644]
board/liebherr/xea/xea.c [new file with mode: 0644]
board/phytec/pcl063/MAINTAINERS
board/solidrun/mx6cuboxi/mx6cuboxi.c
board/toradex/apalis_imx6/MAINTAINERS
board/toradex/apalis_imx6/apalis_imx6.c
board/toradex/colibri-imx6ull/MAINTAINERS
board/toradex/colibri_imx6/MAINTAINERS
board/toradex/colibri_imx6/colibri_imx6.c
board/toradex/colibri_imx7/MAINTAINERS
board/toradex/colibri_imx7/colibri_imx7.c
board/toradex/colibri_t30/MAINTAINERS
board/toradex/colibri_vf/MAINTAINERS
configs/apalis_imx6_defconfig
configs/aristainetos2_defconfig
configs/aristainetos2b_defconfig
configs/aristainetos2bcsl_defconfig [new file with mode: 0644]
configs/aristainetos2c_defconfig [new file with mode: 0644]
configs/aristainetos_defconfig [deleted file]
configs/cm_fx6_defconfig
configs/colibri_imx6_defconfig
configs/colibri_imx7_defconfig
configs/colibri_imx7_emmc_defconfig
configs/dh_imx6_defconfig
configs/ge_bx50v3_defconfig
configs/imx28_xea_defconfig [new file with mode: 0644]
configs/imx8mm_evk_defconfig
configs/mx53cx9020_defconfig
configs/mx53ppd_defconfig
configs/mx6cuboxi_defconfig
configs/mx7dsabresd_defconfig
configs/mx7dsabresd_qspi_defconfig
configs/mx7ulp_com_defconfig [new file with mode: 0644]
configs/phycore_pcl063_defconfig
configs/phycore_pcl063_ull_defconfig
drivers/ddr/imx/imx8m/ddr_init.c
drivers/ddr/imx/imx8m/ddrphy_train.c
drivers/ddr/imx/imx8m/ddrphy_utils.c
drivers/pci/pcie_imx.c
drivers/video/lg4573.c
include/configs/apalis_imx6.h
include/configs/aristainetos-common.h [deleted file]
include/configs/aristainetos.h [deleted file]
include/configs/aristainetos2.h
include/configs/aristainetos2b.h [deleted file]
include/configs/cm_fx6.h
include/configs/colibri-imx6ull.h
include/configs/colibri_imx6.h
include/configs/colibri_imx7.h
include/configs/colibri_vf.h
include/configs/dh_imx6.h
include/configs/ge_bx50v3.h
include/configs/imx6-engicam.h
include/configs/imx8mm_evk.h
include/configs/mx53cx9020.h
include/configs/mx53ppd.h
include/configs/mx6cuboxi.h
include/configs/mx7dsabresd.h
include/configs/mx7ulp_com.h [new file with mode: 0644]
include/configs/xea.h [new file with mode: 0644]
include/dt-bindings/sound/fsl-imx-audmux.h [new file with mode: 0644]
scripts/config_whitelist.txt
tools/imx8m_image.sh

index 36c9c2fecd01599e176198879b77f0d07ab532e6..0bc4322c51b7ede4634833902056e0f05a598d93 100644 (file)
@@ -823,6 +823,7 @@ config ARCH_MX7ULP
        select CPU_V7A
        select ROM_UNIFIED_SECTIONS
        imply MXC_GPIO
+       imply SYS_THUMB_BUILD
 
 config ARCH_MX7
        bool "Freescale MX7"
@@ -833,6 +834,7 @@ config ARCH_MX7
        select SYS_FSL_SEC_COMPAT_4
        select SYS_FSL_SEC_LE
        imply MXC_GPIO
+       imply SYS_THUMB_BUILD
 
 config ARCH_MX6
        bool "Freescale MX6"
@@ -840,8 +842,8 @@ config ARCH_MX6
        select SYS_FSL_HAS_SEC if IMX_HAB
        select SYS_FSL_SEC_COMPAT_4
        select SYS_FSL_SEC_LE
-       select SYS_THUMB_BUILD if SPL
        imply MXC_GPIO
+       imply SYS_THUMB_BUILD
 
 if ARCH_MX6
 config SPL_LDSCRIPT
index 85c65dcb449de077beba7f9fa5a56f7d2217b0fb..183aa40b6d1d30daa05b3e109ba800728ea422e4 100644 (file)
@@ -98,13 +98,16 @@ int arch_cpu_init(void)
        /*
         * Enable NAND clock
         */
-       /* Clear bypass bit */
+       /* Set bypass bit */
        writel(CLKCTRL_CLKSEQ_BYPASS_GPMI,
                &clkctrl_regs->hw_clkctrl_clkseq_set);
 
-       /* Set GPMI clock to ref_gpmi / 12 */
+       /* Set GPMI clock to ref_xtal / 1 */
+       clrbits_le32(&clkctrl_regs->hw_clkctrl_gpmi, CLKCTRL_GPMI_CLKGATE);
+       while (readl(&clkctrl_regs->hw_clkctrl_gpmi) & CLKCTRL_GPMI_CLKGATE)
+               ;
        clrsetbits_le32(&clkctrl_regs->hw_clkctrl_gpmi,
-               CLKCTRL_GPMI_CLKGATE | CLKCTRL_GPMI_DIV_MASK, 1);
+               CLKCTRL_GPMI_DIV_MASK, 1);
 
        udelay(1000);
 
index 5b3b51ce15f73204a72a9e5f8d83ffd5fe08cd65..9168b91f27af1ae10dbb5c6b7cab6aba383d7a32 100644 (file)
@@ -25,9 +25,7 @@ static bd_t bdata __section(".data");
 
 /*
  * This delay function is intended to be used only in early stage of boot, where
- * clock are not set up yet. The timer used here is reset on every boot and
- * takes a few seconds to roll. The boot doesn't take that long, so to keep the
- * code simple, it doesn't take rolling into consideration.
+ * clock are not set up yet.
  */
 void early_delay(int delay)
 {
@@ -35,8 +33,7 @@ void early_delay(int delay)
                (struct mxs_digctl_regs *)MXS_DIGCTL_BASE;
 
        uint32_t st = readl(&digctl_regs->hw_digctl_microseconds);
-       st += delay;
-       while (st > readl(&digctl_regs->hw_digctl_microseconds))
+       while (readl(&digctl_regs->hw_digctl_microseconds) - st <= delay)
                ;
 }
 
index 0127a91a820387a1bb0d7d4ab9f6b5d3f0257980..afe38e10b1367c707f5963d89ad42fe280e12b21 100644 (file)
@@ -570,14 +570,34 @@ dtb-$(CONFIG_VF610) += vf500-colibri.dtb \
        vf610-pcm052.dtb \
        vf610-bk4r1.dtb
 
+dtb-$(CONFIG_MX28) += \
+       imx28-xea.dtb
+
 dtb-$(CONFIG_MX53) += imx53-cx9020.dtb \
        imx53-kp.dtb \
        imx53-m53menlo.dtb
 
 ifneq ($(CONFIG_MX6DL)$(CONFIG_MX6QDL)$(CONFIG_MX6S),)
 dtb-y += \
+       imx6dl-aristainetos2_4.dtb \
+       imx6dl-aristainetos2_7.dtb \
+       imx6dl-aristainetos2b_4.dtb \
+       imx6dl-aristainetos2b_7.dtb \
+       imx6dl-aristainetos2b_csl_4.dtb \
+       imx6dl-aristainetos2b_csl_7.dtb \
+       imx6dl-aristainetos2c_4.dtb \
+       imx6dl-aristainetos2c_7.dtb \
        imx6dl-brppt2.dtb \
+       imx6dl-cubox-i.dtb \
+       imx6dl-cubox-i-emmc-som-v15.dtb \
+       imx6dl-cubox-i-som-v15.dtb \
        imx6dl-dhcom-pdk2.dtb \
+       imx6dl-hummingboard2.dtb \
+       imx6dl-hummingboard2-emmc-som-v15.dtb \
+       imx6dl-hummingboard2-som-v15.dtb \
+       imx6dl-hummingboard.dtb \
+       imx6dl-hummingboard-emmc-som-v15.dtb \
+       imx6dl-hummingboard-som-v15.dtb \
        imx6dl-icore.dtb \
        imx6dl-icore-mipi.dtb \
        imx6dl-icore-rqs.dtb \
@@ -594,8 +614,17 @@ ifneq ($(CONFIG_MX6Q)$(CONFIG_MX6QDL),)
 dtb-y += \
        imx6-apalis.dtb \
        imx6q-cm-fx6.dtb \
+       imx6q-cubox-i.dtb \
+       imx6q-cubox-i-emmc-som-v15.dtb \
+       imx6q-cubox-i-som-v15.dtb \
        imx6q-dhcom-pdk2.dtb \
        imx6q-display5.dtb \
+       imx6q-hummingboard2.dtb \
+       imx6q-hummingboard2-emmc-som-v15.dtb \
+       imx6q-hummingboard2-som-v15.dtb \
+       imx6q-hummingboard.dtb \
+       imx6q-hummingboard-emmc-som-v15.dtb \
+       imx6q-hummingboard-som-v15.dtb \
        imx6q-icore.dtb \
        imx6q-icore-mipi.dtb \
        imx6q-icore-rqs.dtb \
@@ -634,14 +663,14 @@ dtb-$(CONFIG_MX6UL) += \
        imx6ul-9x9-evk.dtb \
        imx6ul-9x9-evk.dtb \
        imx6ul-liteboard.dtb \
-       imx6ul-phycore-segin.dtb \
+       imx6ul-phytec-segin-ff-rdk-nand.dtb \
        imx6ul-pico-hobbit.dtb \
        imx6ul-pico-pi.dtb
 
 dtb-$(CONFIG_MX6ULL) += \
        imx6ull-14x14-evk.dtb \
        imx6ull-colibri.dtb \
-       imx6ull-phycore-segin.dtb \
+       imx6ull-phytec-segin-ff-rdk-emmc.dtb \
        imx6ull-dart-6ul.dtb \
        imx6ulz-14x14-evk.dtb
 
@@ -659,7 +688,8 @@ dtb-$(CONFIG_MX7) += imx7d-sdb.dtb \
        imx7d-pico-hobbit.dtb
 
 
-dtb-$(CONFIG_ARCH_MX7ULP) += imx7ulp-evk.dtb
+dtb-$(CONFIG_ARCH_MX7ULP) += imx7ulp-com.dtb \
+       imx7ulp-evk.dtb
 
 dtb-$(CONFIG_ARCH_IMX8) += \
        fsl-imx8qm-apalis.dtb \
@@ -840,7 +870,12 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
        mt8516-pumpkin.dtb \
        mt8518-ap1-emmc.dtb
 
-dtb-$(CONFIG_TARGET_GE_BX50V3) += imx6q-bx50v3.dtb
+dtb-$(CONFIG_TARGET_GE_BX50V3) += \
+       imx6q-bx50v3.dtb \
+       imx6q-b850v3.dtb \
+       imx6q-b650v3.dtb \
+       imx6q-b450v3.dtb
+
 dtb-$(CONFIG_TARGET_MX53PPD) += imx53-ppd.dtb
 
 dtb-$(CONFIG_TARGET_VEXPRESS_CA5X2) += vexpress-v2p-ca5s.dtb
diff --git a/arch/arm/dts/imx28-xea-u-boot.dtsi b/arch/arm/dts/imx28-xea-u-boot.dtsi
new file mode 100644 (file)
index 0000000..cc2ced5
--- /dev/null
@@ -0,0 +1,46 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2019
+ * Lukasz Majewski, DENX Software Engineering, lukma@denx.de
+ *
+ * SPDX-License-Identifier:     GPL-2.0+ or X11
+ */
+
+/*
+ * The minimal augmentation DTS U-Boot file to allow eMMC driver
+ * configuration in SPL for falcon boot.
+ */
+#include "imx28-u-boot.dtsi"
+/ {
+       apb@80000000 {
+               u-boot,dm-spl;
+
+               apbh@80000000 {
+                       u-boot,dm-spl;
+               };
+
+               apbx@80040000 {
+                       u-boot,dm-spl;
+               };
+       };
+};
+
+&clks {
+       u-boot,dm-spl;
+};
+
+&gpio0 {
+       u-boot,dm-spl;
+};
+
+&pinctrl {
+       u-boot,dm-spl;
+};
+
+&ssp0 {
+       u-boot,dm-spl;
+};
+
+&ssp3 {
+       u-boot,dm-spl;
+};
diff --git a/arch/arm/dts/imx28-xea.dts b/arch/arm/dts/imx28-xea.dts
new file mode 100644 (file)
index 0000000..5de6774
--- /dev/null
@@ -0,0 +1,110 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2019
+ * Lukasz Majewski, DENX Software Engineering, lukma@denx.de
+ *
+ * SPDX-License-Identifier:     GPL-2.0+ or X11
+ *
+ */
+
+/dts-v1/;
+
+#include "imx28.dtsi"
+
+/ {
+       model = "Liebherr (LWE) XEA i.MX28 Board";
+       compatible = "lwe,xea", "fsl,imx28";
+
+       aliases {
+               spi3 = &ssp3;
+       };
+
+       memory@40000000 {
+               device_type = "memory";
+               reg = <0x40000000 0x10000000>;
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "3P3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       reg_fec_3v3: regulator-fec-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "fec-3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio0 0 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&mac0 {
+       phy-mode = "rmii";
+       pinctrl-names = "default";
+       pinctrl-0 = <&mac0_pins_a>;
+       phy-supply = <&reg_fec_3v3>;
+       phy-reset-gpios = <&gpio2 13 GPIO_ACTIVE_LOW>;
+       phy-reset-duration = <1>;
+       phy-reset-post-delay = <1>;
+       status = "okay";
+
+       fixed-link {
+             speed = <100>;
+             full-duplex;
+       };
+};
+
+&ssp0 {
+       compatible = "fsl,imx28-mmc";
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc0_8bit_pins_a>;
+       bus-width = <8>;
+       vmmc-supply = <&reg_3p3v>;
+       non-removable;
+       status = "okay";
+};
+
+&ssp3 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       compatible = "fsl,imx28-spi";
+       pinctrl-names = "default";
+       pinctrl-0 = <&spi3_pins_b>;
+       status = "okay";
+       spi-max-frequency = <40000000>;
+       num-cs = <2>;
+
+       flash0: s25fl256s@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "jedec,spi-nor";
+               spi-max-frequency = <40000000>;
+               reg = <0>;
+
+               partition@0 {
+                       label = "SPL (spi)";
+                       reg = <0x0 0x10000>;
+                       read-only;
+               };
+               partition@1 {
+                       label = "u-boot (spi)";
+                       reg = <0x10000 0x70000>;
+                       read-only;
+               };
+               partition@2 {
+                       label = "uboot-env (spi)";
+                       reg = <0x80000 0x20000>;
+               };
+               partition@3 {
+                       label = "kernel (spi)";
+                       reg = <0x100000 0x400000>;
+               };
+               partition@4 {
+                       label = "swupdate (spi)";
+                       reg = <0x50000 0x800000>;
+               };
+       };
+};
index 36ceae36aa9091558a33ab27c81884ad92eb3868..e08850999b1b02a46833384eb54ee0587e89f378 100644 (file)
@@ -36,7 +36,6 @@
                                MX53_PAD_GPIO_1__GPIO1_1          0x80000000
                                MX53_PAD_GPIO_4__GPIO1_4          0x80000000
                                MX53_PAD_PATA_DA_0__GPIO7_6       0x80000000
-                               MX53_PAD_PATA_DA_2__GPIO7_8       0x80000000
                                MX53_PAD_GPIO_16__GPIO7_11        0x80000000
 
                                MX53_PAD_EIM_OE__EMI_WEIM_OE            0x80000000
                                MX53_PAD_KEY_COL1__AUDMUX_AUD5_TXFS     0x80000000
                                MX53_PAD_KEY_ROW1__AUDMUX_AUD5_RXD      0x80000000
 
-                               MX53_PAD_FEC_MDC__FEC_MDC               0x4
-                               MX53_PAD_FEC_MDIO__FEC_MDIO             0x1fc
-                               MX53_PAD_FEC_REF_CLK__FEC_TX_CLK        0x180
-                               MX53_PAD_FEC_RX_ER__FEC_RX_ER           0x180
-                               MX53_PAD_FEC_CRS_DV__FEC_RX_DV          0x180
-                               MX53_PAD_FEC_RXD1__FEC_RDATA_1          0x180
-                               MX53_PAD_FEC_RXD0__FEC_RDATA_0          0x180
-                               MX53_PAD_FEC_TX_EN__FEC_TX_EN           0x4
-                               MX53_PAD_FEC_TXD1__FEC_TDATA_1          0x4
-                               MX53_PAD_FEC_TXD0__FEC_TDATA_0          0x4
-
                                MX53_PAD_CSI0_DAT8__I2C1_SDA            0x400001ec
                                MX53_PAD_CSI0_DAT9__I2C1_SCL            0x400001ec
 
                        >;
                };
 
+               pinctrl_fec0: fec0grp {
+                       fsl,pins = <
+                               MX53_PAD_FEC_MDC__FEC_MDC               0x4
+                               MX53_PAD_FEC_MDIO__FEC_MDIO             0x1fc
+                               MX53_PAD_FEC_REF_CLK__FEC_TX_CLK        0x180
+                               MX53_PAD_FEC_RX_ER__FEC_RX_ER           0x180
+                               MX53_PAD_FEC_CRS_DV__FEC_RX_DV          0x180
+                               MX53_PAD_FEC_RXD1__FEC_RDATA_1          0x180
+                               MX53_PAD_FEC_RXD0__FEC_RDATA_0          0x180
+                               MX53_PAD_FEC_TX_EN__FEC_TX_EN           0x4
+                               MX53_PAD_FEC_TXD1__FEC_TDATA_1          0x4
+                               MX53_PAD_FEC_TXD0__FEC_TDATA_0          0x4
+                       >;
+               };
+
                pinctrl_esdhc1: esdhc1grp {
                        fsl,pins = <
                                MX53_PAD_SD1_DATA0__ESDHC1_DAT0         0x1d5
        pinctrl-names = "default";
        phy-mode = "rmii";
        phy-reset-gpios = <&gpio7 6 0>;
+       pinctrl-0 = <&pinctrl_fec0>;
+       status = "okay";
+       fixed-link { /* RMII fixed link to KZ8863 */
+               speed = <100>;
+               full-duplex;
+       };
+};
+
+&usbh1 {
+       phy_type = "utmi";
+       status = "okay";
+};
+
+&usbotg {
+       dr_mode = "host";
        status = "okay";
 };
diff --git a/arch/arm/dts/imx53-ppd-uboot.dtsi b/arch/arm/dts/imx53-ppd-uboot.dtsi
new file mode 100644 (file)
index 0000000..88dd7e2
--- /dev/null
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: GPL-2.0+ OR X11
+/*
+ * Copyright 2019 Collabora Ltd
+ * Copyright 2019 General Electric Company
+ */
+
+/ {
+       wdt-reboot {
+               compatible = "wdt-reboot";
+               wdt = <&wdog1>;
+       };
+};
index f89d6f4672b9fb75117be57fa0d1a1fb1b6ab54f..ae98361f9abefe716eeedee2f2d1cddf29878921 100644 (file)
-/* SPDX-License-Identifier: GPL-2.0+ OR X11 */
+// SPDX-License-Identifier: GPL-2.0+
 /*
- * Copyright 2018 General Electric Company
- * Based on imx53-ppd.dts from kernel 4.20.5.
+ * Copyright 2014 General Electric Company
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
 
 #include "imx53.dtsi"
+#include "imx53-ppd-uboot.dtsi"
+#include <dt-bindings/input/input.h>
 
 / {
        model = "General Electric CS ONE";
        compatible = "ge,imx53-cpuvo", "fsl,imx53";
+
+       aliases {
+               spi0 = &cspi;
+               spi1 = &ecspi1;
+               spi2 = &ecspi2;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@70000000 {
+               device_type = "memory";
+               reg = <0x70000000 0x20000000>,
+                     <0xb0000000 0x20000000>;
+       };
+
+       cko2_11M: sgtl-clock-cko2 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <11289600>;
+       };
+
+       sgtlsound: sound {
+               compatible = "fsl,imx53-cpuvo-sgtl5000",
+                            "fsl,imx-audio-sgtl5000";
+               model = "imx53-cpuvo-sgtl5000";
+               ssi-controller = <&ssi2>;
+               audio-codec = <&sgtl5000>;
+               audio-routing =
+                       "MIC_IN", "Mic Jack",
+                       "Mic Jack", "Mic Bias",
+                       "Headphone Jack", "HP_OUT";
+               mux-int-port = <2>;
+               mux-ext-port = <6>;
+       };
+
+       reg_sgtl5k: regulator-sgtl5k {
+               compatible = "regulator-fixed";
+               regulator-name = "regulator-sgtl5k";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       reg_usb_otg_vbus: regulator-usb-otg-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usbotg_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               pinctrl-0 = <&pinctrl_usb_otg_vbus>;
+               gpio = <&gpio4 15 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_usb_vbus: regulator-usb-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usbh1_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+       };
+
+       reg_usbh2_vbus: regulator-usbh2-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usbh2_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usbh2_vbus>;
+               gpio = <&gpio3 31 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_usbh3_vbus: regulator-usbh3-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usbh3_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usbh3_vbus>;
+               gpio = <&gpio5 27 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_tsiref: regulator-tsiref {
+               compatible = "regulator-fixed";
+               regulator-name = "tsiref";
+               regulator-min-microvolt = <2500000>;
+               regulator-max-microvolt = <2500000>;
+               regulator-always-on;
+       };
+
+       reg_3v3: regulator-3v3 {
+               /* TPS54320 */
+               compatible = "regulator-fixed";
+               regulator-name = "3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       reg_3v3_lcd: regulator-3v3-lcd {
+               /* MIC2009 */
+               compatible = "regulator-fixed";
+               regulator-name = "LCD_3V3";
+               vin-supply = <&reg_3v3>;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       pwm_bl: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm2 0 50000>;
+               brightness-levels = <0 2 5 7 10 12 15 17 20 22 25 28 30 33 35
+                                    38 40 43 45 48 51 53 56 58 61 63 66 68 71
+                                    73 76 79 81 84 86 89 91 94 96 99 102 104
+                                    107 109 112 114 117 119 122 124 127 130
+                                    132 135 137 140 142 145 147 150 153 155
+                                    158 160 163 165 168 170 173 175 178 181
+                                    183 186 188 191 193 196 198 201 204 206
+                                    209 211 214 216 219 221 224 226 229 232
+                                    234 237 239 242 244 247 249 252 255>;
+               default-brightness-level = <0>;
+               enable-gpios = <&gpio5 29 GPIO_ACTIVE_HIGH>;
+               power-supply = <&reg_3v3_lcd>;
+       };
+
+       leds {
+               compatible = "pwm-leds";
+
+               alarm-brightness {
+                       pwms = <&pwm1 0 100000>;
+                       max-brightness = <255>;
+               };
+       };
+
+       gpio-poweroff {
+               compatible = "gpio-poweroff";
+               gpios = <&gpio3 9 GPIO_ACTIVE_HIGH>;
+       };
+
+       gpio-restart {
+               compatible = "gpio-restart";
+               gpios = <&gpio3 8 GPIO_ACTIVE_HIGH>;
+               active-delay = <100>;
+               inactive-delay = <10>;
+               wait-delay = <100>;
+       };
+
+       power-gpio-keys {
+               compatible = "gpio-keys";
+
+               power-button {
+                       label = "Power button";
+                       gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
+                       linux,code = <KEY_POWER>;
+               };
+       };
+
+       touch-lock-key {
+               compatible = "gpio-keys";
+
+               touch-lock-button {
+                       label = "Touch lock button";
+                       gpios = <&gpio5 2 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_F12>;
+               };
+       };
+
+       usbphy2: usbphy-2 {
+               compatible = "usb-nop-xceiv";
+               vcc-supply = <&reg_3v3>;
+               reset-gpios = <&gpio4 4 GPIO_ACTIVE_LOW>;
+               clock-names = "main_clk";
+               clock-frequency = <24000000>;
+               clocks = <&clks IMX5_CLK_CKO2>;
+               assigned-clocks = <&clks IMX5_CLK_CKO2_SEL>, <&clks IMX5_CLK_OSC>;
+               assigned-clock-parents = <&clks IMX5_CLK_OSC>;
+       };
+
+       usbphy3: usbphy-3 {
+               compatible = "usb-nop-xceiv";
+               vcc-supply = <&reg_3v3>;
+               reset-gpios = <&gpio2 19 GPIO_ACTIVE_LOW>;
+               clock-names = "main_clk";
+
+               clock-frequency = <24000000>;
+               clocks = <&clks IMX5_CLK_CKO2>;
+               assigned-clocks = <&clks IMX5_CLK_CKO2_SEL>, <&clks IMX5_CLK_OSC>;
+               assigned-clock-parents = <&clks IMX5_CLK_OSC>;
+       };
+
+       panel-lvds0 {
+               compatible = "nvd,9128";
+               power-supply = <&reg_3v3_lcd>;
+
+               port {
+                       panel_in_lvds0: endpoint {
+                               remote-endpoint = <&lvds0_out>;
+                       };
+               };
+       };
 };
 
-&iomuxc {
+&usbphy0 {
+       vcc-supply = <&reg_3v3>;
+};
+
+&usbphy1 {
+       vcc-supply = <&reg_3v3>;
+};
+
+&audmux {
        pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_audmux>;
+       status = "okay";
+};
 
-       pinctrl_esdhc3: esdhc3grp {
-               fsl,pins = <
-                       MX53_PAD_PATA_DATA8__ESDHC3_DAT0        0x1d5
-                       MX53_PAD_PATA_DATA9__ESDHC3_DAT1        0x1d5
-                       MX53_PAD_PATA_DATA10__ESDHC3_DAT2       0x1d5
-                       MX53_PAD_PATA_DATA11__ESDHC3_DAT3       0x1d5
-                       MX53_PAD_PATA_DATA0__ESDHC3_DAT4        0x1d5
-                       MX53_PAD_PATA_DATA1__ESDHC3_DAT5        0x1d5
-                       MX53_PAD_PATA_DATA2__ESDHC3_DAT6        0x1d5
-                       MX53_PAD_PATA_DATA3__ESDHC3_DAT7        0x1d5
-                       MX53_PAD_PATA_RESET_B__ESDHC3_CMD       0x1d5
-                       MX53_PAD_PATA_IORDY__ESDHC3_CLK         0x1d5
-               >;
+&cpu0 {
+       /* CPU rated to 1GHz, not 1.2GHz as per the default settings */
+       operating-points = <
+               /* kHz   uV */
+               166666  850000
+               400000  900000
+               800000  1050000
+               1000000 1200000
+       >;
+};
+
+&ecspi1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       cs-gpios = <&gpio5 17 GPIO_ACTIVE_LOW
+                   &gpio4 10 GPIO_ACTIVE_LOW
+                   &gpio4 11 GPIO_ACTIVE_LOW
+                   &gpio4 12 GPIO_ACTIVE_LOW>;
+       status = "okay";
+
+       spidev0: spi@0 {
+               compatible = "ge,achc";
+               reg = <0>;
+               spi-max-frequency = <1000000>;
+       };
+
+       spidev1: spi@1 {
+               compatible = "ge,achc";
+               reg = <1>;
+               spi-max-frequency = <1000000>;
+       };
+
+       gpioxra0: gpio@2 {
+               compatible = "exar,xra1403";
+               reg = <2>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               spi-max-frequency = <1000000>;
+       };
+
+       gpioxra1: gpio@3 {
+               compatible = "exar,xra1403";
+               reg = <3>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               spi-max-frequency = <1000000>;
+       };
+};
+
+&ecspi2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi2>;
+       cs-gpios = <&gpio2 26 GPIO_ACTIVE_LOW>;
+       status = "okay";
+
+       da9053@0 {
+               compatible = "dlg,da9053-aa";
+               reg = <0>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <12 IRQ_TYPE_LEVEL_LOW>;
+               spi-max-frequency = <1000000>;
+               dlg,tsi-as-adc;
+               tsiref-supply = <&reg_tsiref>;
+
+               regulators {
+                       buck1_reg: buck1 {
+                               regulator-name = "BUCKCORE";
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <2075000>;
+                               regulator-always-on;
+                       };
+
+                       buck2_reg: buck2 {
+                               regulator-name = "BUCKPRO";
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <2075000>;
+                               regulator-always-on;
+                       };
+
+                       buck3_reg: buck3 {
+                               regulator-name = "BUCKMEM";
+                               regulator-min-microvolt = <925000>;
+                               regulator-max-microvolt = <2500000>;
+                               regulator-always-on;
+                       };
+
+                       buck4_reg: buck4 {
+                               regulator-name = "BUCKPERI";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3600000>;
+                               regulator-always-on;
+                       };
+
+                       ldo1_reg: ldo1 {
+                               regulator-name = "ldo1_1v3";
+                               regulator-min-microvolt = <600000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-always-on;
+                       };
+
+                       ldo2_reg: ldo2 {
+                               regulator-name = "ldo2_1v3";
+                               regulator-min-microvolt = <600000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-always-on;
+                       };
+
+                       ldo3_reg: ldo3 {
+                               regulator-name = "ldo3_3v3";
+                               regulator-min-microvolt = <1725000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                       };
+
+                       ldo4_reg: ldo4 {
+                               regulator-name = "ldo4_2v775";
+                               regulator-min-microvolt = <1725000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                       };
+
+                       ldo5_reg: ldo5 {
+                               regulator-name = "ldo5_3v3";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <3600000>;
+                               regulator-always-on;
+                       };
+
+                       ldo6_reg: ldo6 {
+                               regulator-name = "ldo6_1v3";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <3600000>;
+                               regulator-always-on;
+                       };
+
+                       ldo7_reg: ldo7 {
+                               regulator-name = "ldo7_2v75";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <3600000>;
+                               regulator-always-on;
+                       };
+
+                       ldo8_reg: ldo8 {
+                               regulator-name = "ldo8_1v8";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <3600000>;
+                               regulator-always-on;
+                       };
+
+                       ldo9_reg: ldo9 {
+                               regulator-name = "ldo9_1v5";
+                               regulator-min-microvolt = <1250000>;
+                               regulator-max-microvolt = <3650000>;
+                               regulator-always-on;
+                       };
+
+                       ldo10_reg: ldo10 {
+                               regulator-name = "ldo10_1v3";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <3600000>;
+                               regulator-always-on;
+                       };
+               };
        };
+
 };
 
-/* eMMC */
 &esdhc3 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_esdhc3>;
-       compatible = "fsl,esdhc";
        bus-width = <8>;
        non-removable;
        status = "okay";
 };
+
+&fec {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_fec>;
+       phy-supply = <&reg_3v3>;
+       phy-mode = "rmii";
+       phy-reset-gpios = <&gpio2 16 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&i2c1 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       sda-gpios = <&gpio3 28 GPIO_ACTIVE_HIGH>;
+       scl-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
+       status = "okay";
+
+       i2c-switch@70 {
+               compatible = "nxp,pca9547";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x70>;
+               reset-gpios = <&gpio2 18 GPIO_ACTIVE_LOW>;
+
+               i2c4: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+
+                       sgtl5000: codec@a {
+                               compatible = "fsl,sgtl5000";
+                               reg = <0xa>;
+                               #sound-dai-cells = <0>;
+                               VDDA-supply = <&reg_sgtl5k>;
+                               VDDIO-supply = <&reg_sgtl5k>;
+                               clocks = <&cko2_11M>;
+                               status = "okay";
+                       };
+               };
+
+               i2c5: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+
+                       rtc@30 {
+                              compatible = "sii,s35390a";
+                              reg = <0x30>;
+                       };
+
+                       temp@48 {
+                               compatible = "ti,tmp112";
+                               reg = <0x48>;
+                       };
+
+                       mma8453q: accelerometer@1c {
+                               compatible = "fsl,mma8453";
+                               reg = <0x1c>;
+                               interrupt-parent = <&gpio1>;
+                               interrupts = <6 IRQ_TYPE_NONE>;
+                               interrupt-names = "INT1";
+                       };
+
+                       mpl3115: pressure-sensor@60 {
+                               compatible = "fsl,mpl3115";
+                               reg = <0x60>;
+                       };
+
+                       eeprom: eeprom@50 {
+                               compatible = "atmel,24c08";
+                               reg = <0x50>;
+                       };
+               };
+
+               i2c6: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+               };
+
+               i2c7: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+               };
+
+               i2c8: i2c@4 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <4>;
+               };
+
+               i2c9: i2c@5 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+               };
+
+               i2c10: i2c@6 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <6>;
+               };
+
+               i2c11: i2c@7 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+               };
+       };
+};
+
+&i2c2 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c2>;
+       pinctrl-1 = <&pinctrl_i2c2_gpio>;
+       sda-gpios = <&gpio3 16 GPIO_ACTIVE_HIGH>;
+       scl-gpios = <&gpio2 30 GPIO_ACTIVE_HIGH>;
+       status = "okay";
+
+       touchscreen@4b {
+               compatible = "atmel,maxtouch";
+               reset-gpio = <&gpio5 19 GPIO_ACTIVE_HIGH>;
+               reg = <0x4b>;
+               interrupt-parent = <&gpio5>;
+               interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
+       };
+};
+
+&i2c3 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c3>;
+       pinctrl-1 = <&pinctrl_i2c3_gpio>;
+       sda-gpios = <&gpio3 18 GPIO_ACTIVE_HIGH>;
+       scl-gpios = <&gpio3 17 GPIO_ACTIVE_HIGH>;
+       status = "okay";
+};
+
+&ldb {
+       status = "okay";
+
+       lvds0: lvds-channel@0 {
+               status = "okay";
+
+               port@2 {
+                       lvds0_out: endpoint {
+                               remote-endpoint = <&panel_in_lvds0>;
+                       };
+               };
+       };
+};
+
+&pmu {
+       secure-reg-access;
+};
+
+&pwm1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm1>;
+       status = "okay";
+};
+
+&pwm2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm2>;
+       status = "okay";
+};
+
+&ssi2 {
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2>;
+       status = "okay";
+};
+
+&uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart3>;
+       uart-has-rtscts;
+       status = "okay";
+};
+
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart4>;
+       status = "okay";
+};
+
+&uart5 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart5>;
+       status = "okay";
+};
+
+&usbotg {
+       dr_mode = "otg";
+       phy_type = "utmi";
+       vbus-supply = <&reg_usb_otg_vbus>;
+       pinctrl-0 = <&pinctrl_usb_otg>;
+       status = "okay";
+};
+
+&usbh1 {
+       vbus-supply = <&reg_usb_vbus>;
+       phy_type = "utmi";
+       dr_mode = "host";
+       status = "okay";
+};
+
+&usbh2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbh2>;
+       phy_type = "ulpi";
+       dr_mode = "host";
+       fsl,usbphy = <&usbphy2>;
+       vbus-supply = <&reg_usbh2_vbus>;
+       status = "okay";
+};
+
+&usbh3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbh3>;
+       phy_type = "ulpi";
+       dr_mode = "host";
+       vbus-supply = <&reg_usbh3_vbus>;
+       fsl,usbphy = <&usbphy3>;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hog_rev6>;
+
+       pinctrl_audmux: audmuxgrp {
+               fsl,pins = <
+                       MX53_PAD_DISP0_DAT19__AUDMUX_AUD5_RXD   0x400
+                       MX53_PAD_DISP0_DAT17__AUDMUX_AUD5_TXD   0x400
+                       MX53_PAD_DISP0_DAT16__AUDMUX_AUD5_TXC   0x400
+                       MX53_PAD_DISP0_DAT18__AUDMUX_AUD5_TXFS  0x400
+                       MX53_PAD_DI0_PIN15__AUDMUX_AUD6_TXC     0x400
+                       MX53_PAD_DI0_PIN3__AUDMUX_AUD6_TXFS     0x400
+                       MX53_PAD_DI0_PIN4__AUDMUX_AUD6_RXD      0x400
+                       MX53_PAD_DI0_PIN2__AUDMUX_AUD6_TXD      0x400
+               >;
+       };
+
+       pinctrl_ecspi1: ecspi1grp {
+               fsl,pins = <
+                       MX53_PAD_DISP0_DAT21__ECSPI1_MOSI       0x400
+                       MX53_PAD_DISP0_DAT22__ECSPI1_MISO       0x400
+                       MX53_PAD_DISP0_DAT20__ECSPI1_SCLK       0x400
+                       /* ECSPI1_SS0, must treat as GPIO for EzPort */
+                       MX53_PAD_DISP0_DAT23__GPIO5_17          0x400
+                       MX53_PAD_KEY_COL2__GPIO4_10             0x0
+                       MX53_PAD_KEY_ROW2__GPIO4_11             0x0
+                       MX53_PAD_KEY_COL3__GPIO4_12             0x0
+               >;
+       };
+
+       pinctrl_ecspi2: ecspi2grp {
+               fsl,pins = <
+                       MX53_PAD_EIM_CS1__ECSPI2_MOSI           0x0
+                       MX53_PAD_EIM_OE__ECSPI2_MISO            0x0
+                       MX53_PAD_EIM_CS0__ECSPI2_SCLK           0x0
+                       MX53_PAD_EIM_RW__GPIO2_26               0x0
+               >;
+       };
+
+       pinctrl_esdhc1: esdhc1grp {
+               fsl,pins = <
+                       MX53_PAD_SD1_DATA0__ESDHC1_DAT0         0x1d5
+                       MX53_PAD_SD1_DATA1__ESDHC1_DAT1         0x1d5
+                       MX53_PAD_SD1_DATA2__ESDHC1_DAT2         0x1d5
+                       MX53_PAD_SD1_DATA3__ESDHC1_DAT3         0x1d5
+                       MX53_PAD_SD1_CMD__ESDHC1_CMD            0x1d5
+                       MX53_PAD_SD1_CLK__ESDHC1_CLK            0x1d5
+               >;
+       };
+
+       pinctrl_esdhc3: esdhc3grp {
+               fsl,pins = <
+                       MX53_PAD_PATA_DATA8__ESDHC3_DAT0        0x1d5
+                       MX53_PAD_PATA_DATA9__ESDHC3_DAT1        0x1d5
+                       MX53_PAD_PATA_DATA10__ESDHC3_DAT2       0x1d5
+                       MX53_PAD_PATA_DATA11__ESDHC3_DAT3       0x1d5
+                       MX53_PAD_PATA_DATA0__ESDHC3_DAT4        0x1d5
+                       MX53_PAD_PATA_DATA1__ESDHC3_DAT5        0x1d5
+                       MX53_PAD_PATA_DATA2__ESDHC3_DAT6        0x1d5
+                       MX53_PAD_PATA_DATA3__ESDHC3_DAT7        0x1d5
+                       MX53_PAD_PATA_RESET_B__ESDHC3_CMD       0x1d5
+                       MX53_PAD_PATA_IORDY__ESDHC3_CLK         0x1d5
+               >;
+       };
+
+       pinctrl_fec: fecgrp {
+               fsl,pins = <
+                       MX53_PAD_FEC_MDC__FEC_MDC               0x0
+                       MX53_PAD_FEC_MDIO__FEC_MDIO             0x0
+                       MX53_PAD_FEC_REF_CLK__FEC_TX_CLK        0x0
+                       MX53_PAD_FEC_RX_ER__FEC_RX_ER           0x0
+                       MX53_PAD_FEC_CRS_DV__FEC_RX_DV          0x0
+                       MX53_PAD_FEC_RXD1__FEC_RDATA_1          0x0
+                       MX53_PAD_FEC_RXD0__FEC_RDATA_0          0x0
+                       MX53_PAD_FEC_TX_EN__FEC_TX_EN           0x0
+                       MX53_PAD_FEC_TXD1__FEC_TDATA_1          0x0
+                       MX53_PAD_FEC_TXD0__FEC_TDATA_0          0x0
+               >;
+       };
+
+       pinctrl_hog_rev6: hoggrp {
+               fsl,pins = <
+                       /* CKO2 */
+                       MX53_PAD_GPIO_3__CCM_CLKO2              0x4
+                       /* DEFIB_SYNC_MARKER_IN_IRQ */
+                       MX53_PAD_GPIO_5__GPIO1_5                0x0
+                       /* ACCELEROMETER_DATA_RDY_N */
+                       MX53_PAD_GPIO_6__GPIO1_6                0x0
+                       /* TEMPERATURE_ALERT_N */
+                       MX53_PAD_GPIO_7__GPIO1_7                0x0
+                       /* BAROMETRIC_PRESSURE_DATA_RDY_N */
+                       MX53_PAD_GPIO_8__GPIO1_8                0x0
+                       /* DOCKING_I2C_INTERFACE_IRQ_N */
+                       MX53_PAD_PATA_DATA4__GPIO2_4            0x0
+                       /* PWR_OUT_TO_DOCK_FAULT_N */
+                       MX53_PAD_PATA_DATA5__GPIO2_5            0x0
+                       /* ENABLE_PWR_TO_DOCK_N */
+                       MX53_PAD_PATA_DATA6__GPIO2_6            0x0
+                       /* HOST_CONTROLLED_RESET_TO_DOCKING_CONNECTOR_N */
+                       MX53_PAD_PATA_DATA7__GPIO2_7            0x0
+                       /* REMOTE_ON_REQUEST_FROM_DOCKING_CONNECTOR_IS_ACTIVE_N */
+                       MX53_PAD_PATA_DATA12__GPIO2_12          0x0
+                       /* DOCK_PRESENT_N */
+                       MX53_PAD_PATA_DATA13__GPIO2_13          0x0
+                       /* ECG_MARKER_IN_FROM_DOCKING_CONNECTOR_IRQ */
+                       MX53_PAD_PATA_DATA14__GPIO2_14          0x0
+                       /* ENABLE_ECG_MARKER_INTERFACE_TO_DOCKING_CONNECTOR */
+                       MX53_PAD_PATA_DATA15__GPIO2_15          0x0
+                       /* RESET_IMX535_ETHERNET_PHY_N */
+                       MX53_PAD_EIM_A22__GPIO2_16              0x0
+                       /* ENABLE_PWR_TO_LCD_AND_UI_INTERFACE */
+                       MX53_PAD_EIM_A21__GPIO2_17              0x0
+                       /* RESET_I2C1_BUS_SEGMENT_MUX_N */
+                       MX53_PAD_EIM_A20__GPIO2_18              0x0
+                       /* RESET_IMX535_USB_HOST3_PHY_N */
+                       MX53_PAD_EIM_A19__GPIO2_19              0x0
+                       /* ESDHC3_EMMC_NAND_RST_N */
+                       MX53_PAD_EIM_A18__GPIO2_20              0x0
+                       /* LCD_AND_UI_INTERFACE_PWR_FAULT_N */
+                       MX53_PAD_EIM_A17__GPIO2_21              0x0
+                       /* POWER_DOWN_LVDS0_DESERIALIZER_N */
+                       MX53_PAD_EIM_A16__GPIO2_22              0x0
+                       /* POWER_DOWN_LVDS1_DESERIALIZER_N */
+                       MX53_PAD_EIM_LBA__GPIO2_27              0x0
+                       /* RESET_DP0_TRANSMITTER_N */
+                       MX53_PAD_EIM_EB0__GPIO2_28              0x0
+                       /* RESET_DP1_TRANSMITTER_N */
+                       MX53_PAD_EIM_EB1__GPIO2_29              0x0
+                       /* ENABLE_SPDIF_AUDIO_TO_DP0 */
+                       MX53_PAD_EIM_DA0__GPIO3_0               0x0
+                       /* ENABLE_SPDIF_AUDIO_TO_DP1 */
+                       MX53_PAD_EIM_DA1__GPIO3_1               0x0
+                       /* LVDS1_MUX_CTRL */
+                       MX53_PAD_EIM_DA2__GPIO3_2               0x0
+                       /* LVDS0_MUX_CTRL */
+                       MX53_PAD_EIM_DA3__GPIO3_3               0x0
+                       /* DP1_TRANSMITTER_IRQ */
+                       MX53_PAD_EIM_DA4__GPIO3_4               0x0
+                       /* DP0_TRANSMITTER_IRQ */
+                       MX53_PAD_EIM_DA5__GPIO3_5               0x0
+                       /* USB_RESET_N */
+                       MX53_PAD_EIM_DA6__GPIO3_6               0x0
+                       /* ENABLE_BATTERY_CHARGER */
+                       MX53_PAD_EIM_DA7__GPIO3_7               0x0
+                       /* SOFTWARE_CONTROLLED_PWR_CYCLE */
+                       MX53_PAD_EIM_DA8__GPIO3_8               0x0
+                       /* SOFTWARE_CONTROLLED_POWERDOWN */
+                       MX53_PAD_EIM_DA9__GPIO3_9               0x0
+                       /* DC_PWR_IN_OK */
+                       MX53_PAD_EIM_DA10__GPIO3_10             0x0
+                       /* BATT_PRESENT_N */
+                       MX53_PAD_EIM_DA11__GPIO3_11             0xe4
+                       /* PMIC_IRQ_N */
+                       MX53_PAD_EIM_DA12__GPIO3_12             0x0
+                       /* PMIC_VDD_FAULT_STATUS_N */
+                       MX53_PAD_EIM_DA13__GPIO3_13             0x0
+                       /* IMX535_ETHERNET_PHY_STATUS_IRQ_N */
+                       MX53_PAD_EIM_DA14__GPIO3_14             0x0
+                       /* NOT USED - AVAILABLE 3.3V GPIO */
+                       MX53_PAD_EIM_DA15__GPIO3_15             0x0
+                       /* NOT USED - AVAILABLE 3.3V GPIO */
+                       MX53_PAD_EIM_D22__GPIO3_22              0x0
+                       /* NOT USED - AVAILABLE 3.3V GPIO */
+                       MX53_PAD_EIM_D24__GPIO3_24              0x0
+                       /* NBP_PUMP_VALVE_PWR_ENABLE */
+                       MX53_PAD_EIM_D25__GPIO3_25              0x0
+                       /* NIBP_RESET_N */
+                       MX53_PAD_EIM_D26__GPIO3_26              0x0
+                       /* LATCHED_OVERPRESSURE_N */
+                       MX53_PAD_EIM_D27__GPIO3_27              0x0
+                       /* NBP_SBWTCLK */
+                       MX53_PAD_EIM_D29__GPIO3_29              0x0
+                       /* ENABLE_WIFI_MODULE */
+                       MX53_PAD_GPIO_11__GPIO4_1               0x400
+                       /* WIFI_MODULE_IRQ_N */
+                       MX53_PAD_GPIO_12__GPIO4_2               0x400
+                       /* ENABLE_BLUETOOTH_MODULE */
+                       MX53_PAD_GPIO_13__GPIO4_3               0x400
+                       /* RESET_IMX535_USB_HOST2_PHY_N */
+                       MX53_PAD_GPIO_14__GPIO4_4               0x400
+                       /* ONKEY_IS_DEPRESSED */
+                       MX53_PAD_KEY_ROW3__GPIO4_13             0x0
+                       /* UNUSED_GPIO_TO_ALARM_LIGHT_BOARD */
+                       MX53_PAD_EIM_WAIT__GPIO5_0              0x0
+                       /* DISPLAY_LOCK_BUTTON_IS_DEPRESSED_N */
+                       MX53_PAD_EIM_A25__GPIO5_2               0x0
+                       /* I2C_PCAP_TOUCHSCREEN_IRQ_N */
+                       MX53_PAD_EIM_A24__GPIO5_4               0x0
+                       /* NOT USED - AVAILABLE 1.8V GPIO */
+                       MX53_PAD_DISP0_DAT13__GPIO5_7           0x400
+                       /* NOT USED - AVAILABLE 1.8V GPIO */
+                       MX53_PAD_DISP0_DAT14__GPIO5_8           0x400
+                       /* NOT USED - AVAILABLE 1.8V GPIO */
+                       MX53_PAD_DISP0_DAT15__GPIO5_9           0x400
+                       /* HOST_CONTROLLED_RESET_TO_LCD_N */
+                       MX53_PAD_CSI0_PIXCLK__GPIO5_18          0x0
+                       /* HOST_CONTROLLED_RESET_TO_PCAP_N */
+                       MX53_PAD_CSI0_MCLK__GPIO5_19            0x0
+                       /* LR_SCAN_CTRL */
+                       MX53_PAD_CSI0_DATA_EN__GPIO5_20         0x0
+                       /* UD_SCAN_CTRL */
+                       MX53_PAD_CSI0_VSYNC__GPIO5_21           0x0
+                       /* DATA_WIDTH_CTRL */
+                       MX53_PAD_CSI0_DAT10__GPIO5_28           0x0
+                       /* BACKLIGHT_ENABLE */
+                       MX53_PAD_CSI0_DAT11__GPIO5_29           0x0
+                       /* MED_USB_PORT_1_HOST_SELECT */
+                       MX53_PAD_EIM_A23__GPIO6_6               0x0
+                       /* MED_USB_PORT_2_HOST_SELECT */
+                       MX53_PAD_NANDF_CLE__GPIO6_7             0x0
+                       /* MED_USB_PORT_3_HOST_SELECT */
+                       MX53_PAD_NANDF_ALE__GPIO6_8             0x0
+                       /* MED_USB_PORT_4_HOST_SELECT */
+                       MX53_PAD_NANDF_WP_B__GPIO6_9            0x0
+                       /* MED_USB_PORT_5_HOST_SELECT */
+                       MX53_PAD_NANDF_RB0__GPIO6_10            0x0
+                       /* MED_USB_PORT_6_HOST_SELECT */
+                       MX53_PAD_NANDF_CS0__GPIO6_11            0x0
+                       /* MED_USB_PORT_7_HOST_SELECT */
+                       MX53_PAD_NANDF_WE_B__GPIO6_12           0x0
+                       /* MED_USB_PORT_8_HOST_SELECT */
+                       MX53_PAD_NANDF_RE_B__GPIO6_13           0x0
+                       /* MED_USB_PORT_TO_IMX_SELECT_0 */
+                       MX53_PAD_NANDF_CS1__GPIO6_14            0x0
+                       /* MED_USB_PORT_TO_IMX_SELECT_1 */
+                       MX53_PAD_NANDF_CS2__GPIO6_15            0x0
+                       /* MED_USB_PORT_TO_IMX_SELECT_2 */
+                       MX53_PAD_NANDF_CS3__GPIO6_16            0x0
+                       /* POWER_AND_BOOT_STATUS_INDICATOR */
+                       MX53_PAD_PATA_INTRQ__GPIO7_2            0x1e4
+                       /* ACTIVATE_ALARM_LIGHT_RED */
+                       MX53_PAD_PATA_DIOR__GPIO7_3             0x0
+                       /* ACTIVATE_ALARM_LIGHT_YELLOW */
+                       MX53_PAD_PATA_DA_1__GPIO7_7             0x0
+                       /* ACTIVATE_ALARM_LIGHT_CYAN */
+                       MX53_PAD_PATA_DA_2__GPIO7_8             0x0
+                       /* RUNNING_ON_BATTERY_INDICATOR_GREEN */
+                       MX53_PAD_GPIO_16__GPIO7_11              0x0
+                       /* BATTERY_STATUS_INDICATOR_AMBER */
+                       MX53_PAD_GPIO_17__GPIO7_12              0x0
+                       /* AUDIO_ALARMS_SILENCED_INDICATOR */
+                       MX53_PAD_GPIO_18__GPIO7_13              0x0
+               >;
+       };
+
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX53_PAD_EIM_D21__I2C1_SCL              0x400001e4
+                       MX53_PAD_EIM_D28__I2C1_SDA              0x400001e4
+               >;
+       };
+
+       pinctrl_i2c1_gpio: i2c1gpiogrp {
+               fsl,pins = <
+                       MX53_PAD_EIM_D28__GPIO3_28              0x1e4
+                       MX53_PAD_EIM_D21__GPIO3_21              0x1e4
+               >;
+       };
+
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       MX53_PAD_EIM_EB2__I2C2_SCL              0x400001e4
+                       MX53_PAD_EIM_D16__I2C2_SDA              0x400001e4
+               >;
+       };
+
+       pinctrl_i2c2_gpio: i2c2gpiogrp {
+               fsl,pins = <
+                       MX53_PAD_EIM_D16__GPIO3_16              0x1e4
+                       MX53_PAD_EIM_EB2__GPIO2_30              0x1e4
+               >;
+       };
+
+       pinctrl_i2c3: i2c3grp {
+               fsl,pins = <
+                       MX53_PAD_EIM_D17__I2C3_SCL              0x400001e4
+                       MX53_PAD_EIM_D18__I2C3_SDA              0x400001e4
+               >;
+       };
+
+       pinctrl_i2c3_gpio: i2c3gpiogrp {
+               fsl,pins = <
+                       MX53_PAD_EIM_D18__GPIO3_18              0x1e4
+                       MX53_PAD_EIM_D17__GPIO3_17              0x1e4
+               >;
+       };
+
+       pinctrl_pwm1: pwm1grp {
+               fsl,pins = <
+                       MX53_PAD_GPIO_9__PWM1_PWMO              0x5
+               >;
+       };
+
+       pinctrl_pwm2: pwm2grp {
+               fsl,pins = <
+                       MX53_PAD_DISP0_DAT9__PWM2_PWMO          0x5
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX53_PAD_PATA_DIOW__UART1_TXD_MUX       0x1e4
+                       MX53_PAD_PATA_DMACK__UART1_RXD_MUX      0x1e4
+               >;
+       };
+
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       MX53_PAD_PATA_DMARQ__UART2_TXD_MUX      0x1e4
+                       MX53_PAD_PATA_BUFFER_EN__UART2_RXD_MUX  0x1e4
+               >;
+       };
+
+       pinctrl_uart3: uart3grp {
+               fsl,pins = <
+                       MX53_PAD_PATA_CS_0__UART3_TXD_MUX       0x1e4
+                       MX53_PAD_PATA_CS_1__UART3_RXD_MUX       0x1e4
+                       MX53_PAD_EIM_D23__UART3_CTS             0x1e4
+                       MX53_PAD_EIM_EB3__UART3_RTS             0x1e4
+               >;
+       };
+
+       pinctrl_uart4: uart4grp {
+               fsl,pins = <
+                       MX53_PAD_KEY_COL0__UART4_TXD_MUX        0x1e4
+                       MX53_PAD_KEY_ROW0__UART4_RXD_MUX        0x1e4
+               >;
+       };
+
+       pinctrl_uart5: uart5grp {
+               fsl,pins = <
+                       MX53_PAD_KEY_COL1__UART5_TXD_MUX        0x1e4
+                       MX53_PAD_KEY_ROW1__UART5_RXD_MUX        0x1e4
+               >;
+       };
+
+       pinctrl_usb_otg_vbus: usb-otg-vbusgrp {
+               fsl,pins = <
+                       /* USB_HS_OTG_VBUS_ENABLE */
+                       MX53_PAD_KEY_ROW4__GPIO4_15             0x1c4
+               >;
+       };
+
+       pinctrl_usbh2: usbh2grp {
+               fsl,pins = <
+                       /* USB H2 */
+                       MX53_PAD_DISP0_DAT0__USBOH3_USBH2_DATA_0 0x180
+                       MX53_PAD_DISP0_DAT1__USBOH3_USBH2_DATA_1 0x180
+                       MX53_PAD_DISP0_DAT2__USBOH3_USBH2_DATA_2 0x180
+                       MX53_PAD_DISP0_DAT3__USBOH3_USBH2_DATA_3 0x180
+                       MX53_PAD_DISP0_DAT4__USBOH3_USBH2_DATA_4 0x180
+                       MX53_PAD_DISP0_DAT5__USBOH3_USBH2_DATA_5 0x180
+                       MX53_PAD_DISP0_DAT6__USBOH3_USBH2_DATA_6 0x180
+                       MX53_PAD_DISP0_DAT7__USBOH3_USBH2_DATA_7 0x180
+                       MX53_PAD_DISP0_DAT10__USBOH3_USBH2_STP   0x180
+                       MX53_PAD_DISP0_DAT11__USBOH3_USBH2_NXT   0x180
+                       MX53_PAD_DISP0_DAT12__USBOH3_USBH2_CLK   0x180
+                       MX53_PAD_DI0_DISP_CLK__USBOH3_USBH2_DIR  0x5
+                       MX53_PAD_EIM_D30__USBOH3_USBH2_OC        0x180
+               >;
+       };
+
+       pinctrl_usbh2_vbus: usbh2-vbusgrp {
+               fsl,pins = <
+                       /* USB_HS_HOST2_VBUS_ENABLE */
+                       MX53_PAD_EIM_D31__GPIO3_31              0x0
+               >;
+       };
+
+       pinctrl_usbh3_vbus: usbh3-vbusgrp {
+               fsl,pins = <
+                       /* USB_HS_HOST3_VBUS_ENABLE */
+                       MX53_PAD_CSI0_DAT9__GPIO5_27            0x0
+               >;
+       };
+
+       pinctrl_usbh3: usbh3grp {
+               fsl,pins = <
+                       /* USB H3 */
+                       MX53_PAD_CSI0_DAT12__USBOH3_USBH3_DATA_0 0x180
+                       MX53_PAD_CSI0_DAT13__USBOH3_USBH3_DATA_1 0x180
+                       MX53_PAD_CSI0_DAT14__USBOH3_USBH3_DATA_2 0x180
+                       MX53_PAD_CSI0_DAT15__USBOH3_USBH3_DATA_3 0x180
+                       MX53_PAD_CSI0_DAT16__USBOH3_USBH3_DATA_4 0x180
+                       MX53_PAD_CSI0_DAT17__USBOH3_USBH3_DATA_5 0x180
+                       MX53_PAD_CSI0_DAT18__USBOH3_USBH3_DATA_6 0x180
+                       MX53_PAD_CSI0_DAT19__USBOH3_USBH3_DATA_7 0x180
+                       MX53_PAD_CSI0_DAT7__USBOH3_USBH3_DIR     0x5
+                       MX53_PAD_CSI0_DAT6__USBOH3_USBH3_CLK     0x180
+                       MX53_PAD_CSI0_DAT5__USBOH3_USBH3_NXT     0x180
+                       MX53_PAD_CSI0_DAT4__USBOH3_USBH3_STP     0x180
+                       MX53_PAD_CSI0_DAT8__USBOH3_USBH3_OC      0x180
+               >;
+       };
+
+       pinctrl_usb_otg: usbotggrp {
+               fsl,pins = <
+                       /* USB_OTG_FAULT_N */
+                       MX53_PAD_KEY_COL4__USBOH3_USBOTG_OC     0x180
+               >;
+       };
+};
index b2fdfa1af427d94c0151d7367dd6ecf10427b7f3..72f7439aed2e9840fcf83f1a282ec09d3e92f9ca 100644 (file)
@@ -22,6 +22,7 @@
                mmc1 = &usdhc1;
                mmc2 = &usdhc2;
                usb0 = &usbotg; /* required for ums */
+               ethernet0 = &fec;
        };
 
        chosen {
        status = "okay";
 };
 
+&fec {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet>;
+       phy-mode = "rgmii";
+       phy-handle = <&ethphy>;
+       phy-reset-duration = <10>;
+       phy-reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy: ethernet-phy@7 {
+                       interrupt-parent = <&gpio1>;
+                       interrupts = <30 IRQ_TYPE_LEVEL_LOW>;
+                       reg = <7>;
+               };
+       };
+};
+
 /* Apalis Serial ATA */
 &sata {
        status = "okay";
index 5c9f1f0d2be215c77b0cdc07e00b38b619617303..387d6d5ca7e1cfc2b44c12a04ed3692283cb3b6c 100644 (file)
@@ -21,6 +21,7 @@
                mmc0 = &usdhc3;
                mmc1 = &usdhc1;
                usb0 = &usbotg; /* required for ums */
+               ethernet0 = &fec;
        };
 
        chosen {
        };
 };
 
+&fec {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet>;
+       phy-mode = "rmii";
+       phy-handle = <&ethphy>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy: ethernet-phy@0 {
+                       reg = <0>;
+                       micrel,led-mode = <0>;
+                       status = "okay";
+               };
+       };
+};
+
 /*
  * PWR_I2C: power I2C to audio codec, PMIC, temperature sensor and
  * touch screen controller
diff --git a/arch/arm/dts/imx6dl-aristainetos2_4-u-boot.dtsi b/arch/arm/dts/imx6dl-aristainetos2_4-u-boot.dtsi
new file mode 100644 (file)
index 0000000..ac7052c
--- /dev/null
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ */
+
+#include <imx6qdl-aristainetos2-u-boot.dtsi>
+
+&lcd_panel {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ipu_disp>;
+       enable-gpios = <&gpio6 15 GPIO_ACTIVE_HIGH>;
+       backlight = <&backlight>;
+};
diff --git a/arch/arm/dts/imx6dl-aristainetos2_4.dts b/arch/arm/dts/imx6dl-aristainetos2_4.dts
new file mode 100644 (file)
index 0000000..0157e24
--- /dev/null
@@ -0,0 +1,51 @@
+// SPDX-License-Identifier: (GPL-2.0)
+/*
+ * support for the imx6 based aristainetos2 board
+ * parts for 4.3 inch LG display on spi1 port0
+ *
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ * Copyright (C) 2015 Heiko Schocher <hs@denx.de>
+ *
+ */
+/dts-v1/;
+
+#include "imx6dl-aristainetos2_4.dtsi"
+#include "imx6qdl-aristainetos2.dtsi"
+
+/ {
+       model = "aristainetos2 i.MX6 Dual Lite Board 4";
+       compatible = "fsl,imx6dl";
+
+};
+
+&ecspi1 {
+       lcd_panel: display@0 {
+               compatible = "lg,lg4573";
+               spi-max-frequency = <10000000>;
+               reg = <0>;
+               power-on-delay = <10>;
+
+               display-timings {
+                       480x800p57 {
+                               native-mode;
+                               clock-frequency = <27000027>;
+                               hactive = <480>;
+                               vactive = <800>;
+                               hfront-porch = <10>;
+                               hback-porch = <59>;
+                               hsync-len = <10>;
+                               vback-porch = <15>;
+                               vfront-porch = <15>;
+                               vsync-len = <15>;
+                               hsync-active = <1>;
+                               vsync-active = <1>;
+                       };
+               };
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&display_out>;
+                       };
+               };
+       };
+};
diff --git a/arch/arm/dts/imx6dl-aristainetos2_4.dtsi b/arch/arm/dts/imx6dl-aristainetos2_4.dtsi
new file mode 100644 (file)
index 0000000..be4601b
--- /dev/null
@@ -0,0 +1,84 @@
+// SPDX-License-Identifier: (GPL-2.0)
+/*
+ * support for the imx6 based aristainetos2 board
+ * parts for 4.3 inch LG display on the parallel port and atmel maxtouch
+ *
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ * Copyright (C) 2015 Heiko Schocher <hs@denx.de>
+ *
+ */
+/dts-v1/;
+#include "imx6dl.dtsi"
+
+/ {
+       display0: disp0 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "fsl,imx-parallel-display";
+               interface-pix-fmt = "rgb24";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_ipu_disp>;
+
+               port@0 {
+                       reg = <0>;
+                       display0_in: endpoint {
+                               remote-endpoint = <&ipu1_di0_disp0>;
+                       };
+               };
+
+               port@1 {
+                       reg = <1>;
+                       display_out: endpoint {
+                               remote-endpoint = <&panel_in>;
+                       };
+               };
+       };
+};
+
+&i2c3 {
+       touch: touch@4b {
+               compatible = "atmel,maxtouch";
+               reg = <0x4b>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <9 8>;
+       };
+};
+
+&ipu1_di0_disp0 {
+       remote-endpoint = <&display0_in>;
+};
+
+&iomuxc {
+       pinctrl_ipu_disp: ipudisp1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x31
+                       MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15       0xE1
+                       MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02        0x10
+                       MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03        0x10
+                       MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00   0xE1
+                       MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01   0xE1
+                       MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02   0xE1
+                       MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03   0xE1
+                       MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04   0xE1
+                       MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05   0xE1
+                       MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06   0xE1
+                       MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07   0xE1
+                       MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08   0xE1
+                       MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09   0xE1
+                       MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10  0xE1
+                       MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11  0xE1
+                       MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12  0xE1
+                       MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13  0xE1
+                       MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14  0xe1
+                       MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15  0xE1
+                       MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16  0xE1
+                       MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17  0xE1
+                       MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18  0xE1
+                       MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19  0xE1
+                       MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20  0xE1
+                       MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21  0xE1
+                       MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22  0xE1
+                       MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23  0xE1
+               >;
+       };
+};
diff --git a/arch/arm/dts/imx6dl-aristainetos2_7-u-boot.dtsi b/arch/arm/dts/imx6dl-aristainetos2_7-u-boot.dtsi
new file mode 100644 (file)
index 0000000..25bc562
--- /dev/null
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ */
+
+#include <imx6qdl-aristainetos2-u-boot.dtsi>
+/ {
+       vdd_panel_reg: regulator-panel {
+               compatible = "regulator-fixed";
+               regulator-name = "panel_regulator";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+};
+
+&panel0 {
+       power-supply = <&vdd_panel_reg>;
+};
diff --git a/arch/arm/dts/imx6dl-aristainetos2_7.dts b/arch/arm/dts/imx6dl-aristainetos2_7.dts
new file mode 100644 (file)
index 0000000..0d1e83c
--- /dev/null
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: (GPL-2.0)
+/*
+ * support for the imx6 based aristainetos2 board
+ *
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ * Copyright (C) 2015 Heiko Schocher <hs@denx.de>
+ *
+ */
+/dts-v1/;
+#include "imx6dl-aristainetos2_7.dtsi"
+#include "imx6qdl-aristainetos2.dtsi"
+
+/ {
+       model = "aristainetos2 i.MX6 Dual Lite Board 7";
+       compatible = "fsl,imx6dl";
+};
diff --git a/arch/arm/dts/imx6dl-aristainetos2_7.dtsi b/arch/arm/dts/imx6dl-aristainetos2_7.dtsi
new file mode 100644 (file)
index 0000000..52d6a51
--- /dev/null
@@ -0,0 +1,58 @@
+// SPDX-License-Identifier: (GPL-2.0)
+/*
+ * support for the imx6 based aristainetos2 board
+ * parts for 7 inch LG display connected to the LVDS port and atmel maxtouch
+ *
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ * Copyright (C) 2015 Heiko Schocher <hs@denx.de>
+ *
+ */
+/dts-v1/;
+#include <dt-bindings/gpio/gpio.h>
+
+#include "imx6dl.dtsi"
+
+/ {
+       panel0: panel_lg {
+               compatible = "lg,lb070wv8";
+               backlight = <&backlight>;
+               enable-gpios = <&gpio6 15 GPIO_ACTIVE_HIGH>;
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&lvds0_out>;
+                       };
+               };
+       };
+};
+
+&i2c3 {
+       touch: touch@4d {
+               compatible = "atmel,maxtouch";
+               reg = <0x4d>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <9 8>;
+       };
+};
+
+&ldb {
+       status = "okay";
+
+       lvds-channel@0 {
+               status = "okay";
+
+               port@0 {
+                       reg = <0>;
+                       lvds0_in: endpoint {
+                               remote-endpoint = <&ipu1_di0_lvds0>;
+                       };
+               };
+
+               port@4 {
+                       reg = <4>;
+                       lvds0_out: endpoint {
+                               remote-endpoint = <&panel_in>;
+                       };
+               };
+       };
+};
diff --git a/arch/arm/dts/imx6dl-aristainetos2b_4-u-boot.dtsi b/arch/arm/dts/imx6dl-aristainetos2b_4-u-boot.dtsi
new file mode 100644 (file)
index 0000000..ee02df3
--- /dev/null
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: GPL-2.0+ or X11
+/*
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ */
+
+#include <imx6qdl-aristainetos2b-u-boot.dtsi>
+
+&lcd_panel {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ipu_disp>;
+       enable-gpios = <&gpio6 15 GPIO_ACTIVE_HIGH>;
+       backlight = <&backlight>;
+};
diff --git a/arch/arm/dts/imx6dl-aristainetos2b_4.dts b/arch/arm/dts/imx6dl-aristainetos2b_4.dts
new file mode 100644 (file)
index 0000000..a48a25c
--- /dev/null
@@ -0,0 +1,50 @@
+// SPDX-License-Identifier: (GPL-2.0)
+/*
+ * support for the imx6 based aristainetos2b board
+ * parts for 4.3 inch LG display on spi1 port1
+ *
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ *
+ */
+/dts-v1/;
+
+#include "imx6dl-aristainetos2_4.dtsi"
+#include "imx6qdl-aristainetos2b.dtsi"
+
+/ {
+       model = "aristainetos2b i.MX6 Dual Lite Board 4";
+       compatible = "fsl,imx6dl";
+
+};
+
+&ecspi1 {
+       lcd_panel: display@0 {
+               compatible = "lg,lg4573";
+               spi-max-frequency = <10000000>;
+               reg = <1>;
+               power-on-delay = <10>;
+
+               display-timings {
+                       480x800p57 {
+                               native-mode;
+                               clock-frequency = <27000027>;
+                               hactive = <480>;
+                               vactive = <800>;
+                               hfront-porch = <10>;
+                               hback-porch = <59>;
+                               hsync-len = <10>;
+                               vback-porch = <15>;
+                               vfront-porch = <15>;
+                               vsync-len = <15>;
+                               hsync-active = <1>;
+                               vsync-active = <1>;
+                       };
+               };
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&display_out>;
+                       };
+               };
+       };
+};
diff --git a/arch/arm/dts/imx6dl-aristainetos2b_7-u-boot.dtsi b/arch/arm/dts/imx6dl-aristainetos2b_7-u-boot.dtsi
new file mode 100644 (file)
index 0000000..0cb4f19
--- /dev/null
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: GPL-2.0+ or X11
+/*
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ */
+
+#include <imx6qdl-aristainetos2b-u-boot.dtsi>
+/ {
+       vdd_panel_reg: regulator-panel {
+               compatible = "regulator-fixed";
+               regulator-name = "panel_regulator";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+};
+
+&panel0 {
+       power-supply = <&vdd_panel_reg>;
+};
diff --git a/arch/arm/dts/imx6dl-aristainetos2b_7.dts b/arch/arm/dts/imx6dl-aristainetos2b_7.dts
new file mode 100644 (file)
index 0000000..f1496cb
--- /dev/null
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: (GPL-2.0)
+/*
+ * support for the imx6 based aristainetos2 board
+ *
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ * Copyright (C) 2015 Heiko Schocher <hs@denx.de>
+ *
+ */
+/dts-v1/;
+#include "imx6dl-aristainetos2_7.dtsi"
+#include "imx6qdl-aristainetos2b.dtsi"
+
+/ {
+       model = "aristainetos2b i.MX6 Dual Lite Board 7";
+       compatible = "fsl,imx6dl";
+};
diff --git a/arch/arm/dts/imx6dl-aristainetos2b_csl_4-u-boot.dtsi b/arch/arm/dts/imx6dl-aristainetos2b_csl_4-u-boot.dtsi
new file mode 100644 (file)
index 0000000..654ac12
--- /dev/null
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: GPL-2.0+ or X11
+/*
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ */
+
+#include <imx6qdl-aristainetos2b_csl-u-boot.dtsi>
+
+&lcd_panel {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ipu_disp>;
+       enable-gpios = <&gpio6 15 GPIO_ACTIVE_HIGH>;
+       backlight = <&backlight>;
+};
diff --git a/arch/arm/dts/imx6dl-aristainetos2b_csl_4.dts b/arch/arm/dts/imx6dl-aristainetos2b_csl_4.dts
new file mode 100644 (file)
index 0000000..bfbb799
--- /dev/null
@@ -0,0 +1,50 @@
+// SPDX-License-Identifier: (GPL-2.0)
+/*
+ * support for the imx6 based aristainetos2b csl board
+ * parts for 4.3 inch LG display on spi1 port1
+ *
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ *
+ */
+/dts-v1/;
+
+#include "imx6dl-aristainetos2_4.dtsi"
+#include "imx6qdl-aristainetos2b_csl.dtsi"
+
+/ {
+       model = "aristainetos2b csl i.MX6 Dual Lite Board 4";
+       compatible = "fsl,imx6dl";
+
+};
+
+&ecspi1 {
+       lcd_panel: display@0 {
+               compatible = "lg,lg4573";
+               spi-max-frequency = <10000000>;
+               reg = <1>;
+               power-on-delay = <10>;
+
+               display-timings {
+                       480x800p57 {
+                               native-mode;
+                               clock-frequency = <27000027>;
+                               hactive = <480>;
+                               vactive = <800>;
+                               hfront-porch = <10>;
+                               hback-porch = <59>;
+                               hsync-len = <10>;
+                               vback-porch = <15>;
+                               vfront-porch = <15>;
+                               vsync-len = <15>;
+                               hsync-active = <1>;
+                               vsync-active = <1>;
+                       };
+               };
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&display_out>;
+                       };
+               };
+       };
+};
diff --git a/arch/arm/dts/imx6dl-aristainetos2b_csl_7-u-boot.dtsi b/arch/arm/dts/imx6dl-aristainetos2b_csl_7-u-boot.dtsi
new file mode 100644 (file)
index 0000000..70d195e
--- /dev/null
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: GPL-2.0+ or X11
+/*
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ */
+
+#include <imx6qdl-aristainetos2b_csl-u-boot.dtsi>
+/ {
+       vdd_panel_reg: regulator-panel {
+               compatible = "regulator-fixed";
+               regulator-name = "panel_regulator";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+};
+
+&panel0 {
+       power-supply = <&vdd_panel_reg>;
+};
diff --git a/arch/arm/dts/imx6dl-aristainetos2b_csl_7.dts b/arch/arm/dts/imx6dl-aristainetos2b_csl_7.dts
new file mode 100644 (file)
index 0000000..ecf767d
--- /dev/null
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: (GPL-2.0)
+/*
+ * support for the imx6 based aristainetos2 board
+ *
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ * Copyright (C) 2015 Heiko Schocher <hs@denx.de>
+ *
+ */
+/dts-v1/;
+#include "imx6dl-aristainetos2_7.dtsi"
+#include "imx6qdl-aristainetos2b_csl.dtsi"
+
+/ {
+       model = "aristainetos2b csl i.MX6 Dual Lite Board 7";
+       compatible = "fsl,imx6dl";
+};
diff --git a/arch/arm/dts/imx6dl-aristainetos2c_4-u-boot.dtsi b/arch/arm/dts/imx6dl-aristainetos2c_4-u-boot.dtsi
new file mode 100644 (file)
index 0000000..052d518
--- /dev/null
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: GPL-2.0+ or X11
+/*
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ */
+
+#include <imx6qdl-aristainetos2c-u-boot.dtsi>
+
+&lcd_panel {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ipu_disp>;
+       enable-gpios = <&gpio6 15 GPIO_ACTIVE_HIGH>;
+       backlight = <&backlight>;
+};
diff --git a/arch/arm/dts/imx6dl-aristainetos2c_4.dts b/arch/arm/dts/imx6dl-aristainetos2c_4.dts
new file mode 100644 (file)
index 0000000..142b108
--- /dev/null
@@ -0,0 +1,50 @@
+// SPDX-License-Identifier: (GPL-2.0)
+/*
+ * support for the imx6 based aristainetos2c board
+ * parts for 4.3 inch LG display on spi1 port1
+ *
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ *
+ */
+/dts-v1/;
+
+#include "imx6dl-aristainetos2_4.dtsi"
+#include "imx6qdl-aristainetos2c.dtsi"
+
+/ {
+       model = "aristainetos2c i.MX6 Dual Lite Board 4";
+       compatible = "fsl,imx6dl";
+
+};
+
+&ecspi1 {
+       lcd_panel: display@0 {
+               compatible = "lg,lg4573";
+               spi-max-frequency = <10000000>;
+               reg = <1>;
+               power-on-delay = <10>;
+
+               display-timings {
+                       480x800p57 {
+                               native-mode;
+                               clock-frequency = <27000027>;
+                               hactive = <480>;
+                               vactive = <800>;
+                               hfront-porch = <10>;
+                               hback-porch = <59>;
+                               hsync-len = <10>;
+                               vback-porch = <15>;
+                               vfront-porch = <15>;
+                               vsync-len = <15>;
+                               hsync-active = <1>;
+                               vsync-active = <1>;
+                       };
+               };
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&display_out>;
+                       };
+               };
+       };
+};
diff --git a/arch/arm/dts/imx6dl-aristainetos2c_7-u-boot.dtsi b/arch/arm/dts/imx6dl-aristainetos2c_7-u-boot.dtsi
new file mode 100644 (file)
index 0000000..cb2181d
--- /dev/null
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: GPL-2.0+ or X11
+/*
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ */
+
+#include <imx6qdl-aristainetos2c-u-boot.dtsi>
+/ {
+       vdd_panel_reg: regulator-panel {
+               compatible = "regulator-fixed";
+               regulator-name = "panel_regulator";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+};
+
+&panel0 {
+       power-supply = <&vdd_panel_reg>;
+};
diff --git a/arch/arm/dts/imx6dl-aristainetos2c_7.dts b/arch/arm/dts/imx6dl-aristainetos2c_7.dts
new file mode 100644 (file)
index 0000000..35435e1
--- /dev/null
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: (GPL-2.0)
+/*
+ * support for the imx6 based aristainetos2c board
+ *
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ * Copyright (C) 2015 Heiko Schocher <hs@denx.de>
+ *
+ */
+/dts-v1/;
+#include "imx6dl-aristainetos2_7.dtsi"
+#include "imx6qdl-aristainetos2c.dtsi"
+
+/ {
+       model = "aristainetos2c i.MX6 Dual Lite Board 7";
+       compatible = "fsl,imx6dl";
+};
diff --git a/arch/arm/dts/imx6dl-cubox-i-emmc-som-v15.dts b/arch/arm/dts/imx6dl-cubox-i-emmc-som-v15.dts
new file mode 100644 (file)
index 0000000..2b2fc36
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2014 Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6dl.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-ti.dtsi"
+#include "imx6qdl-sr-som-emmc.dtsi"
+#include "imx6qdl-cubox-i.dtsi"
+
+/ {
+       model = "SolidRun Cubox-i Solo/DualLite (1.5som+emmc)";
+       compatible = "solidrun,cubox-i/dl", "fsl,imx6dl";
+};
diff --git a/arch/arm/dts/imx6dl-cubox-i-som-v15.dts b/arch/arm/dts/imx6dl-cubox-i-som-v15.dts
new file mode 100644 (file)
index 0000000..e09c565
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2014 Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6dl.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-ti.dtsi"
+#include "imx6qdl-cubox-i.dtsi"
+
+/ {
+       model = "SolidRun Cubox-i Solo/DualLite (1.5som)";
+       compatible = "solidrun,cubox-i/dl", "fsl,imx6dl";
+};
diff --git a/arch/arm/dts/imx6dl-cubox-i.dts b/arch/arm/dts/imx6dl-cubox-i.dts
new file mode 100644 (file)
index 0000000..2b1b3e1
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2014 Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6dl.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-brcm.dtsi"
+#include "imx6qdl-cubox-i.dtsi"
+
+/ {
+       model = "SolidRun Cubox-i Solo/DualLite";
+       compatible = "solidrun,cubox-i/dl", "fsl,imx6dl";
+};
diff --git a/arch/arm/dts/imx6dl-hummingboard-emmc-som-v15.dts b/arch/arm/dts/imx6dl-hummingboard-emmc-som-v15.dts
new file mode 100644 (file)
index 0000000..a63f742
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2014 Rabeeh Khoury (rabeeh@solid-run.com)
+ * Based on dt work by Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6dl.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-ti.dtsi"
+#include "imx6qdl-sr-som-emmc.dtsi"
+#include "imx6qdl-hummingboard.dtsi"
+
+/ {
+       model = "SolidRun HummingBoard Solo/DualLite (1.5som+emmc)";
+       compatible = "solidrun,hummingboard/dl", "fsl,imx6dl";
+};
diff --git a/arch/arm/dts/imx6dl-hummingboard-som-v15.dts b/arch/arm/dts/imx6dl-hummingboard-som-v15.dts
new file mode 100644 (file)
index 0000000..66a06cf
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2014 Rabeeh Khoury (rabeeh@solid-run.com)
+ * Based on dt work by Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6dl.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-ti.dtsi"
+#include "imx6qdl-hummingboard.dtsi"
+
+/ {
+       model = "SolidRun HummingBoard Solo/DualLite (1.5som)";
+       compatible = "solidrun,hummingboard/dl", "fsl,imx6dl";
+};
diff --git a/arch/arm/dts/imx6dl-hummingboard.dts b/arch/arm/dts/imx6dl-hummingboard.dts
new file mode 100644 (file)
index 0000000..cbd02eb
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2014 Rabeeh Khoury (rabeeh@solid-run.com)
+ * Based on dt work by Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6dl.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-brcm.dtsi"
+#include "imx6qdl-hummingboard.dtsi"
+
+/ {
+       model = "SolidRun HummingBoard Solo/DualLite";
+       compatible = "solidrun,hummingboard/dl", "fsl,imx6dl";
+};
diff --git a/arch/arm/dts/imx6dl-hummingboard2-emmc-som-v15-u-boot.dtsi b/arch/arm/dts/imx6dl-hummingboard2-emmc-som-v15-u-boot.dtsi
new file mode 100644 (file)
index 0000000..89fbec4
--- /dev/null
@@ -0,0 +1 @@
+#include "imx6qdl-hummingboard2-emmc-som-v15-u-boot.dtsi"
diff --git a/arch/arm/dts/imx6dl-hummingboard2-emmc-som-v15.dts b/arch/arm/dts/imx6dl-hummingboard2-emmc-som-v15.dts
new file mode 100644 (file)
index 0000000..80313c1
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Device Tree file for SolidRun HummingBoard2
+ * Copyright (C) 2015 Rabeeh Khoury <rabeeh@solid-run.com>
+ * Based on work by Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file 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.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6dl.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-emmc.dtsi"
+#include "imx6qdl-sr-som-ti.dtsi"
+#include "imx6qdl-hummingboard2.dtsi"
+
+/ {
+       model = "SolidRun HummingBoard2 Solo/DualLite (1.5som+emmc)";
+       compatible = "solidrun,hummingboard2/dl", "fsl,imx6dl";
+};
diff --git a/arch/arm/dts/imx6dl-hummingboard2-som-v15.dts b/arch/arm/dts/imx6dl-hummingboard2-som-v15.dts
new file mode 100644 (file)
index 0000000..e61ef11
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Device Tree file for SolidRun HummingBoard2
+ * Copyright (C) 2015 Rabeeh Khoury <rabeeh@solid-run.com>
+ * Based on work by Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file 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.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6dl.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-ti.dtsi"
+#include "imx6qdl-hummingboard2.dtsi"
+
+/ {
+       model = "SolidRun HummingBoard2 Solo/DualLite (1.5som)";
+       compatible = "solidrun,hummingboard2/dl", "fsl,imx6dl";
+};
diff --git a/arch/arm/dts/imx6dl-hummingboard2.dts b/arch/arm/dts/imx6dl-hummingboard2.dts
new file mode 100644 (file)
index 0000000..b12cd87
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2015 Rabeeh Khoury <rabeeh@solid-run.com>
+ * Based on dt work by Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6dl.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-brcm.dtsi"
+#include "imx6qdl-hummingboard2.dtsi"
+#include "imx6qdl-hummingboard2-emmc.dtsi"
+
+/ {
+       model = "SolidRun HummingBoard2 Solo/DualLite";
+       compatible = "solidrun,hummingboard2/dl", "fsl,imx6dl";
+};
index 39bdf2d55b31d0ea1a831f86571180978479a941..d8f3821a0ffdc33069769942c660866efd824759 100644 (file)
@@ -1,20 +1,25 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+// SPDX-License-Identifier: GPL-2.0 OR X11
 /*
- * Copyright (C) 2017 Engicam S.r.l.
- * Copyright (C) 2017 Amarula Solutions B.V.
+ * Copyright (C) 2018 Engicam S.r.l.
+ * Copyright (C) 2018 Amarula Solutions B.V.
  * Author: Jagan Teki <jagan@amarulasolutions.com>
  */
 
 /dts-v1/;
 
 #include "imx6dl.dtsi"
-#include "imx6qdl-icore.dtsi"
+#include "imx6qdl-icore-1.5.dtsi"
 
 / {
        model = "Engicam i.CoreM6 DualLite/Solo MIPI Starter Kit";
        compatible = "engicam,imx6-icore", "fsl,imx6dl";
 };
 
+&hdmi {
+       ddc-i2c-bus = <&i2c2>;
+       status = "okay";
+};
+
 &usdhc3 {
        status = "okay";
 };
index 820e66c7249f7d83004bbb3b6d28aadbe69f4f8a..73d710d34b9d51d18f41d653be9e9f0fe08a7eeb 100644 (file)
@@ -1,42 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0 OR X11
 /*
- * Copyright (C) 2015 Amarula Solutions B.V.
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file 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.
- *
- * Or, alternatively
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
+ * Copyright (C) 2016 Amarula Solutions B.V.
+ * Copyright (C) 2016 Engicam S.r.l.
  */
 
 /dts-v1/;
@@ -46,5 +11,5 @@
 
 / {
        model = "Engicam i.CoreM6 DualLite/Solo RQS Starter Kit";
-       compatible = "engicam,imx6-icore-rqs", "fsl,imx6q";
+       compatible = "engicam,imx6-icore-rqs", "fsl,imx6dl";
 };
index aec332c14af1b770ff9bff7dda0d44b0eaf81a58..80fa60607ab1631e1ef55fe37ca3474a94e7c724 100644 (file)
@@ -1,43 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0 OR X11
 /*
  * Copyright (C) 2016 Amarula Solutions B.V.
  * Copyright (C) 2016 Engicam S.r.l.
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file 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.
- *
- * Or, alternatively
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
 &can2 {
        status = "okay";
 };
+
+&i2c1 {
+       max11801: touchscreen@48 {
+               compatible = "maxim,max11801";
+               reg = <0x48>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <31 IRQ_TYPE_EDGE_FALLING>;
+       };
+};
diff --git a/arch/arm/dts/imx6q-b450v3.dts b/arch/arm/dts/imx6q-b450v3.dts
new file mode 100644 (file)
index 0000000..7fca833
--- /dev/null
@@ -0,0 +1,160 @@
+// SPDX-License-Identifier: GPL-2.0+ OR X11
+/*
+ * Copyright 2015 Timesys Corporation.
+ * Copyright 2015 General Electric Company
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+
+#include "imx6q-bx50v3.dtsi"
+
+/ {
+       model = "General Electric B450v3";
+       compatible = "ge,imx6q-b450v3", "advantech,imx6q-ba16", "fsl,imx6q";
+
+       chosen {
+               stdout-path = &uart3;
+       };
+
+       panel-lvds0 {
+               compatible = "innolux,g121x1-l03";
+               backlight = <&backlight_lvds>;
+               power-supply = <&reg_lvds>;
+
+               port {
+                       panel_in_lvds0: endpoint {
+                               remote-endpoint = <&lvds0_out>;
+                       };
+               };
+       };
+};
+
+&clks {
+       assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>,
+                         <&clks IMX6QDL_CLK_LDB_DI1_SEL>;
+       assigned-clock-parents = <&clks IMX6QDL_CLK_PLL3_USB_OTG>,
+                                <&clks IMX6QDL_CLK_PLL3_USB_OTG>;
+};
+
+&ldb {
+       status = "okay";
+
+       lvds0: lvds-channel@0 {
+               fsl,data-mapping = "spwg";
+               fsl,data-width = <24>;
+               status = "okay";
+
+               port@4 {
+                       reg = <4>;
+
+                       lvds0_out: endpoint {
+                               remote-endpoint = <&panel_in_lvds0>;
+                       };
+               };
+       };
+};
+
+&pca9539 {
+       P04 {
+               gpio-hog;
+               gpios = <4 0>;
+               output-low;
+               line-name = "PCA9539-P04";
+       };
+
+       P07 {
+               gpio-hog;
+               gpios = <7 0>;
+               output-low;
+               line-name = "PCA9539-P07";
+       };
+};
+
+&pci_root {
+       /* Intel Corporation I210 Gigabit Network Connection */
+       switch_nic: ethernet@3,0 {
+               compatible = "pci8086,1533";
+               reg = <0x00010000 0 0 0 0>;
+       };
+};
+
+&switch_ports {
+       port@0 {
+               reg = <0>;
+               label = "enacq";
+               phy-handle = <&switchphy0>;
+       };
+
+       port@1 {
+               reg = <1>;
+               label = "eneport1";
+               phy-handle = <&switchphy1>;
+       };
+
+       port@2 {
+               reg = <2>;
+               label = "enix";
+               phy-handle = <&switchphy2>;
+       };
+
+       port@3 {
+               reg = <3>;
+               label = "enid";
+               phy-handle = <&switchphy3>;
+       };
+
+       port@4 {
+               reg = <4>;
+               label = "cpu";
+               ethernet = <&switch_nic>;
+               phy-handle = <&switchphy4>;
+       };
+
+       port@5 {
+               reg = <5>;
+               label = "enembc";
+
+               /* connected to Ethernet MAC of AT91RM9200 in MII mode */
+               fixed-link {
+                       speed = <100>;
+                       full-duplex;
+               };
+       };
+};
diff --git a/arch/arm/dts/imx6q-b650v3.dts b/arch/arm/dts/imx6q-b650v3.dts
new file mode 100644 (file)
index 0000000..ba12e9b
--- /dev/null
@@ -0,0 +1,159 @@
+// SPDX-License-Identifier: GPL-2.0+ OR X11
+/*
+ * Copyright 2015 Timesys Corporation.
+ * Copyright 2015 General Electric Company
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+
+#include "imx6q-bx50v3.dtsi"
+
+/ {
+       model = "General Electric B650v3";
+       compatible = "ge,imx6q-b650v3", "advantech,imx6q-ba16", "fsl,imx6q";
+
+       chosen {
+               stdout-path = &uart3;
+       };
+
+       panel-lvds0 {
+               compatible = "innolux,g121x1-l03";
+               backlight = <&backlight_lvds>;
+               power-supply = <&reg_lvds>;
+
+               port {
+                       panel_in_lvds0: endpoint {
+                               remote-endpoint = <&lvds0_out>;
+                       };
+               };
+       };
+};
+
+&clks {
+       assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>,
+                         <&clks IMX6QDL_CLK_LDB_DI1_SEL>;
+       assigned-clock-parents = <&clks IMX6QDL_CLK_PLL3_USB_OTG>,
+                                <&clks IMX6QDL_CLK_PLL3_USB_OTG>;
+};
+
+&ldb {
+       status = "okay";
+
+       lvds0: lvds-channel@0 {
+               fsl,data-mapping = "spwg";
+               fsl,data-width = <24>;
+               status = "okay";
+
+               port@4 {
+                       reg = <4>;
+
+                       lvds0_out: endpoint {
+                               remote-endpoint = <&panel_in_lvds0>;
+                       };
+               };
+       };
+};
+
+&pca9539 {
+       P07 {
+               gpio-hog;
+               gpios = <7 0>;
+               output-low;
+               line-name = "PCA9539-P07";
+       };
+};
+
+&usbphy1 {
+       fsl,tx-cal-45-dn-ohms = <55>;
+       fsl,tx-cal-45-dp-ohms = <55>;
+       fsl,tx-d-cal = <100>;
+};
+
+&pci_root {
+       /* Intel Corporation I210 Gigabit Network Connection */
+       switch_nic: ethernet@3,0 {
+               compatible = "pci8086,1533";
+               reg = <0x00010000 0 0 0 0>;
+       };
+};
+
+&switch_ports {
+       port@0 {
+               reg = <0>;
+               label = "enacq";
+               phy-handle = <&switchphy0>;
+       };
+
+       port@1 {
+               reg = <1>;
+               label = "eneport1";
+               phy-handle = <&switchphy1>;
+       };
+
+       port@2 {
+               reg = <2>;
+               label = "enix";
+               phy-handle = <&switchphy2>;
+       };
+
+       port@3 {
+               reg = <3>;
+               label = "enid";
+               phy-handle = <&switchphy3>;
+       };
+
+       port@4 {
+               reg = <4>;
+               label = "cpu";
+               ethernet = <&switch_nic>;
+               phy-handle = <&switchphy4>;
+       };
+
+       port@5 {
+               reg = <5>;
+               label = "enembc";
+
+               /* connected to Ethernet MAC of AT91RM9200 in MII mode */
+               fixed-link {
+                       speed = <100>;
+                       full-duplex;
+               };
+       };
+};
diff --git a/arch/arm/dts/imx6q-b850v3.dts b/arch/arm/dts/imx6q-b850v3.dts
new file mode 100644 (file)
index 0000000..0a98552
--- /dev/null
@@ -0,0 +1,302 @@
+// SPDX-License-Identifier: GPL-2.0+ OR X11
+/*
+ * Copyright 2015 Timesys Corporation.
+ * Copyright 2015 General Electric Company
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+
+#include "imx6q-bx50v3.dtsi"
+
+/ {
+       model = "General Electric B850v3";
+       compatible = "ge,imx6q-b850v3", "advantech,imx6q-ba16", "fsl,imx6q";
+
+       chosen {
+               stdout-path = &uart3;
+       };
+};
+
+&clks {
+       assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>,
+                         <&clks IMX6QDL_CLK_LDB_DI1_SEL>,
+                         <&clks IMX6QDL_CLK_IPU1_DI0_PRE_SEL>,
+                         <&clks IMX6QDL_CLK_IPU2_DI0_PRE_SEL>;
+       assigned-clock-parents = <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>,
+                                <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>,
+                                <&clks IMX6QDL_CLK_PLL2_PFD2_396M>,
+                                <&clks IMX6QDL_CLK_PLL2_PFD2_396M>;
+};
+
+&ldb {
+       fsl,dual-channel;
+       status = "okay";
+
+       lvds0: lvds-channel@0 {
+               fsl,data-mapping = "spwg";
+               fsl,data-width = <24>;
+               status = "okay";
+
+               port@4 {
+                       reg = <4>;
+
+                       lvds0_out: endpoint {
+                               remote-endpoint = <&stdp4028_in>;
+                       };
+               };
+       };
+};
+
+&i2c2 {
+       pca9547_ddc: mux@70 {
+               compatible = "nxp,pca9547";
+               reg = <0x70>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               mux2_i2c1: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x0>;
+               };
+
+               mux2_i2c2: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x1>;
+               };
+
+               mux2_i2c3: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x2>;
+               };
+
+               mux2_i2c4: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x3>;
+               };
+
+               mux2_i2c5: i2c@4 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x4>;
+               };
+
+               mux2_i2c6: i2c@5 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x5>;
+               };
+
+               mux2_i2c7: i2c@6 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x6>;
+               };
+
+               mux2_i2c8: i2c@7 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x7>;
+               };
+       };
+};
+
+&hdmi {
+       ddc-i2c-bus = <&mux2_i2c1>;
+};
+
+&mux1_i2c1 {
+       ads7830@4a {
+               compatible = "ti,ads7830";
+               reg = <0x4a>;
+       };
+};
+
+&mux2_i2c2 {
+       clock-frequency = <100000>;
+
+       stdp2690@72 {
+               compatible = "megachips,stdp2690-ge-b850v3-fw";
+               reg = <0x72>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               stdp2690_in: endpoint {
+                                       remote-endpoint = <&stdp4028_out>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               stdp2690_out: endpoint {
+                                       /* Connector for external display */
+                               };
+                       };
+               };
+       };
+
+       stdp4028@73 {
+               compatible = "megachips,stdp4028-ge-b850v3-fw";
+               reg = <0x73>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               stdp4028_in: endpoint {
+                                       remote-endpoint = <&lvds0_out>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               stdp4028_out: endpoint {
+                                       remote-endpoint = <&stdp2690_in>;
+                               };
+                       };
+               };
+       };
+};
+
+&pca9539 {
+       P10 {
+               gpio-hog;
+               gpios = <8 0>;
+               output-low;
+               line-name = "PCA9539-P10";
+       };
+
+       P11 {
+               gpio-hog;
+               gpios = <9 0>;
+               output-low;
+               line-name = "PCA9539-P11";
+       };
+};
+
+&pci_root {
+       /* PLX Technology, Inc. PEX 8605 PCI Express 4-port Gen2 Switch */
+       bridge@1,0 {
+               compatible = "pci10b5,8605";
+               reg = <0x00010000 0 0 0 0>;
+
+               #address-cells = <3>;
+               #size-cells = <2>;
+               #interrupt-cells = <1>;
+
+               bridge@2,1 {
+                       compatible = "pci10b5,8605";
+                       reg = <0x00020800 0 0 0 0>;
+
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       #interrupt-cells = <1>;
+
+                       /* Intel Corporation I210 Gigabit Network Connection */
+                       ethernet@3,0 {
+                               compatible = "pci8086,1533";
+                               reg = <0x00030000 0 0 0 0>;
+                       };
+               };
+
+               bridge@2,2 {
+                       compatible = "pci10b5,8605";
+                       reg = <0x00021000 0 0 0 0>;
+
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       #interrupt-cells = <1>;
+
+                       /* Intel Corporation I210 Gigabit Network Connection */
+                       switch_nic: ethernet@4,0 {
+                               compatible = "pci8086,1533";
+                               reg = <0x00040000 0 0 0 0>;
+                       };
+               };
+       };
+};
+
+&switch_ports {
+       port@0 {
+               reg = <0>;
+               label = "eneport1";
+               phy-handle = <&switchphy0>;
+       };
+
+       port@1 {
+               reg = <1>;
+               label = "eneport2";
+               phy-handle = <&switchphy1>;
+       };
+
+       port@2 {
+               reg = <2>;
+               label = "enix";
+               phy-handle = <&switchphy2>;
+       };
+
+       port@3 {
+               reg = <3>;
+               label = "enid";
+               phy-handle = <&switchphy3>;
+       };
+
+       port@4 {
+               reg = <4>;
+               label = "cpu";
+               ethernet = <&switch_nic>;
+               phy-handle = <&switchphy4>;
+       };
+};
diff --git a/arch/arm/dts/imx6q-ba16.dtsi b/arch/arm/dts/imx6q-ba16.dtsi
new file mode 100644 (file)
index 0000000..7d8f61f
--- /dev/null
@@ -0,0 +1,640 @@
+// SPDX-License-Identifier: GPL-2.0+ OR X11
+/*
+ * Support for imx6 based Advantech DMS-BA16 Qseven module
+ *
+ * Copyright 2015 Timesys Corporation.
+ * Copyright 2015 General Electric Company
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "imx6q.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       memory@10000000 {
+               device_type = "memory";
+               reg = <0x10000000 0x40000000>;
+       };
+
+       backlight_lvds: backlight {
+               compatible = "pwm-backlight";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_display>;
+               pwms = <&pwm1 0 5000000>;
+               brightness-levels = <  0   1   2   3   4   5   6   7   8   9
+                                     10  11  12  13  14  15  16  17  18  19
+                                     20  21  22  23  24  25  26  27  28  29
+                                     30  31  32  33  34  35  36  37  38  39
+                                     40  41  42  43  44  45  46  47  48  49
+                                     50  51  52  53  54  55  56  57  58  59
+                                     60  61  62  63  64  65  66  67  68  69
+                                     70  71  72  73  74  75  76  77  78  79
+                                     80  81  82  83  84  85  86  87  88  89
+                                     90  91  92  93  94  95  96  97  98  99
+                                    100 101 102 103 104 105 106 107 108 109
+                                    110 111 112 113 114 115 116 117 118 119
+                                    120 121 122 123 124 125 126 127 128 129
+                                    130 131 132 133 134 135 136 137 138 139
+                                    140 141 142 143 144 145 146 147 148 149
+                                    150 151 152 153 154 155 156 157 158 159
+                                    160 161 162 163 164 165 166 167 168 169
+                                    170 171 172 173 174 175 176 177 178 179
+                                    180 181 182 183 184 185 186 187 188 189
+                                    190 191 192 193 194 195 196 197 198 199
+                                    200 201 202 203 204 205 206 207 208 209
+                                    210 211 212 213 214 215 216 217 218 219
+                                    220 221 222 223 224 225 226 227 228 229
+                                    230 231 232 233 234 235 236 237 238 239
+                                    240 241 242 243 244 245 246 247 248 249
+                                    250 251 252 253 254 255>;
+               default-brightness-level = <255>;
+               enable-gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "1P8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "3P3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       reg_lvds: regulator-lvds {
+               compatible = "regulator-fixed";
+               regulator-name = "lvds_ppen";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_usb_h1_vbus: regulator-usbh1vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_h1_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       reg_usb_otg_vbus: regulator-usbotgvbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_otg_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+};
+
+&audmux {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_audmux>;
+       status = "okay";
+};
+
+&ecspi1 {
+       cs-gpios = <&gpio2 30 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       status = "okay";
+
+       flash: n25q032@0 {
+               compatible = "jedec,spi-nor";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               spi-max-frequency = <20000000>;
+               reg = <0>;
+
+               partition@0 {
+                       label = "U-Boot";
+                       reg = <0x0 0xc0000>;
+               };
+
+               partition@c0000 {
+                       label = "env";
+                       reg = <0xc0000 0x10000>;
+               };
+
+               partition@d0000 {
+                       label = "spare";
+                       reg = <0xd0000 0x320000>;
+               };
+
+               partition@3f0000 {
+                       label = "mfg";
+                       reg = <0x3f0000 0x10000>;
+               };
+       };
+};
+
+&fec {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet>;
+       phy-mode = "rgmii-id";
+       status = "okay";
+};
+
+&hdmi {
+       ddc-i2c-bus = <&i2c2>;
+       status = "okay";
+};
+
+&i2c1 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       status = "okay";
+};
+
+&i2c2 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c2>;
+       status = "okay";
+};
+
+&i2c3 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c3>;
+       status = "okay";
+
+       pmic@58 {
+               compatible = "dlg,da9063";
+               reg = <0x58>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_pmic>;
+               interrupt-parent = <&gpio7>;
+               interrupts = <13 IRQ_TYPE_LEVEL_LOW>;
+
+               onkey {
+                       compatible = "dlg,da9063-onkey";
+               };
+
+               regulators {
+                       vdd_bcore1: bcore1 {
+                               regulator-min-microvolt = <1420000>;
+                               regulator-max-microvolt = <1420000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                       };
+
+                       vdd_bcore2: bcore2 {
+                               regulator-min-microvolt = <1420000>;
+                               regulator-max-microvolt = <1420000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                       };
+
+                       vdd_bpro: bpro {
+                               regulator-min-microvolt = <1500000>;
+                               regulator-max-microvolt = <1500000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                       };
+
+                       vdd_bmem: bmem {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                       };
+
+                       vdd_bio: bio {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                       };
+
+                       vdd_bperi: bperi {
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                       };
+
+                       vdd_ldo1: ldo1 {
+                               regulator-min-microvolt = <600000>;
+                               regulator-max-microvolt = <1860000>;
+                       };
+
+                       vdd_ldo2: ldo2 {
+                               regulator-min-microvolt = <600000>;
+                               regulator-max-microvolt = <1860000>;
+                       };
+
+                       vdd_ldo3: ldo3 {
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <3440000>;
+                       };
+
+                       vdd_ldo4: ldo4 {
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <3440000>;
+                       };
+
+                       vdd_ldo5: ldo5 {
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <3600000>;
+                       };
+
+                       vdd_ldo6: ldo6 {
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <3600000>;
+                       };
+
+                       vdd_ldo7: ldo7 {
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <3600000>;
+                       };
+
+                       vdd_ldo8: ldo8 {
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <3600000>;
+                       };
+
+                       vdd_ldo9: ldo9 {
+                               regulator-min-microvolt = <950000>;
+                               regulator-max-microvolt = <3600000>;
+                       };
+
+                       vdd_ldo10: ldo10 {
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <3600000>;
+                       };
+
+                       vdd_ldo11: ldo11 {
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <3600000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                       };
+               };
+       };
+
+       rtc@32 {
+               compatible = "epson,rx8010";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_rtc>;
+               reg = <0x32>;
+               interrupt-parent = <&gpio4>;
+               interrupts = <10 IRQ_TYPE_LEVEL_HIGH>;
+       };
+};
+
+&pcie {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcie>;
+       reset-gpio = <&gpio7 12 GPIO_ACTIVE_LOW>;
+       fsl,tx-swing-full = <103>;
+       fsl,tx-swing-low = <103>;
+       status = "okay";
+};
+
+&pwm1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm1>;
+       status = "okay";
+};
+
+&pwm2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm2>;
+       status = "disabled";
+};
+
+&sata {
+       status = "okay";
+};
+
+&ssi1 {
+       status = "okay";
+};
+
+&uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart3>;
+       uart-has-rtscts;
+       status = "okay";
+};
+
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart4>;
+       status = "okay";
+};
+
+&usbh1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbhub>;
+       vbus-supply = <&reg_usb_h1_vbus>;
+       reset-gpios = <&gpio7 11 GPIO_ACTIVE_HIGH>;
+       status = "okay";
+};
+
+&usbotg {
+       vbus-supply = <&reg_usb_otg_vbus>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbotg>;
+       disable-over-current;
+       status = "okay";
+};
+
+&usdhc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
+       no-1-8-v;
+       keep-power-in-suspend;
+       wakeup-source;
+       status = "okay";
+};
+
+&usdhc3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc3 &pinctrl_usdhc3_reset>;
+       bus-width = <8>;
+       vmmc-supply = <&vdd_bperi>;
+       non-removable;
+       keep-power-in-suspend;
+       status = "okay";
+};
+
+&wdog1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_wdog>;
+       fsl,ext-reset-output;
+};
+
+&iomuxc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hog>;
+
+       pinctrl_audmux: audmuxgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0
+                       MX6QDL_PAD_DISP0_DAT21__AUD4_TXD  0x130b0
+                       MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
+                       MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0
+               >;
+       };
+
+       pinctrl_display: dispgrp {
+               fsl,pins = <
+                       /* BLEN_OUT */
+                       MX6QDL_PAD_GPIO_0__GPIO1_IO00    0x1b0b0
+                       /* LVDS_PPEN_OUT */
+                       MX6QDL_PAD_EIM_D22__GPIO3_IO22   0x1b0b0
+               >;
+       };
+
+       pinctrl_ecspi1: ecspi1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1
+                       MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0x100b1
+                       MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0x100b1
+                       /* SPI1 CS */
+                       MX6QDL_PAD_EIM_EB2__GPIO2_IO30  0x1b0b0
+               >;
+       };
+
+       pinctrl_ecspi5: ecspi5grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD1_DAT0__ECSPI5_MISO        0x1b0b0
+                       MX6QDL_PAD_SD1_CMD__ECSPI5_MOSI         0x1b0b0
+                       MX6QDL_PAD_SD1_CLK__ECSPI5_SCLK         0x1b0b0
+                       MX6QDL_PAD_SD1_DAT1__GPIO1_IO17         0x1b0b0
+               >;
+       };
+
+       pinctrl_enet: enetgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_ENET_MDIO__ENET_MDIO       0x100b0
+                       MX6QDL_PAD_ENET_MDC__ENET_MDC         0x100b0
+                       MX6QDL_PAD_RGMII_TXC__RGMII_TXC       0x10030
+                       MX6QDL_PAD_RGMII_TD0__RGMII_TD0       0x10030
+                       MX6QDL_PAD_RGMII_TD1__RGMII_TD1       0x10030
+                       MX6QDL_PAD_RGMII_TD2__RGMII_TD2       0x10030
+                       MX6QDL_PAD_RGMII_TD3__RGMII_TD3       0x10030
+                       MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x10030
+                       MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK  0x100b0
+                       MX6QDL_PAD_RGMII_RXC__RGMII_RXC       0x1b030
+                       MX6QDL_PAD_RGMII_RD0__RGMII_RD0       0x1b030
+                       MX6QDL_PAD_RGMII_RD1__RGMII_RD1       0x1b030
+                       MX6QDL_PAD_RGMII_RD2__RGMII_RD2       0x1b030
+                       MX6QDL_PAD_RGMII_RD3__RGMII_RD3       0x1b030
+                       MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b030
+                       /* FEC Reset */
+                       MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28     0x1b0b0
+                       /* AR8033 Interrupt */
+                       MX6QDL_PAD_GPIO_19__GPIO4_IO05        0x1b0b0
+               >;
+       };
+
+       pinctrl_hog: hoggrp {
+               fsl,pins = <
+                       /* GPIO 0-7 */
+                       MX6QDL_PAD_NANDF_D0__GPIO2_IO00  0x1b0b0
+                       MX6QDL_PAD_NANDF_D1__GPIO2_IO01  0x1b0b0
+                       MX6QDL_PAD_NANDF_D2__GPIO2_IO02  0x1b0b0
+                       MX6QDL_PAD_NANDF_D3__GPIO2_IO03  0x1b0b0
+                       MX6QDL_PAD_NANDF_D4__GPIO2_IO04  0x1b0b0
+                       MX6QDL_PAD_NANDF_D5__GPIO2_IO05  0x1b0b0
+                       MX6QDL_PAD_NANDF_D6__GPIO2_IO06  0x1b0b0
+                       MX6QDL_PAD_NANDF_D7__GPIO2_IO07  0x1b0b0
+                       /* SUS_S3_OUT to CPLD */
+                       MX6QDL_PAD_KEY_ROW2__GPIO4_IO11  0x1b0b0
+               >;
+       };
+
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_CSI0_DAT8__I2C1_SDA  0x4001b8b1
+                       MX6QDL_PAD_CSI0_DAT9__I2C1_SCL  0x4001b8b1
+               >;
+       };
+
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL3__I2C2_SCL   0x4001b8b1
+                       MX6QDL_PAD_KEY_ROW3__I2C2_SDA   0x4001b8b1
+               >;
+       };
+
+       pinctrl_i2c3: i2c3grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_3__I2C3_SCL     0x4001b8b1
+                       MX6QDL_PAD_GPIO_6__I2C3_SDA     0x4001b8b1
+               >;
+       };
+
+       pinctrl_pcie: pciegrp {
+               fsl,pins = <
+                       /* PCIe Reset */
+                       MX6QDL_PAD_GPIO_17__GPIO7_IO12  0x1b0b0
+                       /* PCIe Wake */
+                       MX6QDL_PAD_GPIO_5__GPIO1_IO05   0x1b0b0
+               >;
+       };
+
+       pinctrl_pmic: pmicgrp {
+               fsl,pins = <
+                       /* PMIC Interrupt */
+                       MX6QDL_PAD_GPIO_18__GPIO7_IO13  0x1b0b0
+               >;
+       };
+
+       pinctrl_pwm1: pwm1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD1_DAT3__PWM1_OUT   0x1b0b1
+               >;
+       };
+
+       pinctrl_pwm2: pwm2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_1__PWM2_OUT     0x1b0b1
+               >;
+       };
+
+       pinctrl_rtc: rtcgrp {
+               fsl,pins = <
+                       /* RTC_INT */
+                       MX6QDL_PAD_KEY_COL2__GPIO4_IO10 0x1b0b0
+               >;
+       };
+
+       pinctrl_uart3: uart3grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1
+                       MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b1
+                       MX6QDL_PAD_EIM_D23__UART3_CTS_B   0x1b0b1
+                       MX6QDL_PAD_EIM_D31__UART3_RTS_B   0x1b0b1
+               >;
+       };
+
+       pinctrl_uart4: uart4grp {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
+                       MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
+               >;
+       };
+
+       pinctrl_usbhub: usbhubgrp {
+               fsl,pins = <
+                       /* HUB_RESET */
+                       MX6QDL_PAD_GPIO_16__GPIO7_IO11  0x1b0b0
+               >;
+       };
+
+       pinctrl_usbotg: usbotggrp {
+               fsl,pins = <
+                       MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD2_CMD__SD2_CMD     0x17059
+                       MX6QDL_PAD_SD2_CLK__SD2_CLK     0x10059
+                       MX6QDL_PAD_SD2_DAT0__SD2_DATA0  0x17059
+                       MX6QDL_PAD_SD2_DAT1__SD2_DATA1  0x17059
+                       MX6QDL_PAD_SD2_DAT2__SD2_DATA2  0x17059
+                       MX6QDL_PAD_SD2_DAT3__SD2_DATA3  0x17059
+                       /* uSDHC2 CD */
+                       MX6QDL_PAD_GPIO_4__GPIO1_IO04   0x1b0b0
+               >;
+       };
+
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_CMD__SD3_CMD     0x17059
+                       MX6QDL_PAD_SD3_CLK__SD3_CLK     0x10059
+                       MX6QDL_PAD_SD3_DAT0__SD3_DATA0  0x17059
+                       MX6QDL_PAD_SD3_DAT1__SD3_DATA1  0x17059
+                       MX6QDL_PAD_SD3_DAT2__SD3_DATA2  0x17059
+                       MX6QDL_PAD_SD3_DAT3__SD3_DATA3  0x17059
+                       MX6QDL_PAD_SD3_DAT4__SD3_DATA4  0x17059
+                       MX6QDL_PAD_SD3_DAT5__SD3_DATA5  0x17059
+                       MX6QDL_PAD_SD3_DAT6__SD3_DATA6  0x17059
+                       MX6QDL_PAD_SD3_DAT7__SD3_DATA7  0x17059
+               >;
+       };
+
+       pinctrl_usdhc3_reset: usdhc3grp-reset {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_RST__SD3_RESET   0x170F9
+               >;
+       };
+
+       pinctrl_usdhc4: usdhc4grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD4_CMD__SD4_CMD     0x17059
+                       MX6QDL_PAD_SD4_CLK__SD4_CLK     0x17059
+                       MX6QDL_PAD_SD4_DAT0__SD4_DATA0  0x17059
+                       MX6QDL_PAD_SD4_DAT1__SD4_DATA1  0x17059
+                       MX6QDL_PAD_SD4_DAT2__SD4_DATA2  0x17059
+                       MX6QDL_PAD_SD4_DAT3__SD4_DATA3  0x17059
+                       MX6QDL_PAD_SD4_DAT4__SD4_DATA4  0x17059
+                       MX6QDL_PAD_SD4_DAT5__SD4_DATA5  0x17059
+                       MX6QDL_PAD_SD4_DAT6__SD4_DATA6  0x17059
+                       MX6QDL_PAD_SD4_DAT7__SD4_DATA7  0x17059
+                       /* uSDHC4 CD */
+                       MX6QDL_PAD_NANDF_CS0__GPIO6_IO11 0x1b0b0
+                       /* uSDHC4 SDIO PWR */
+                       MX6QDL_PAD_NANDF_CS1__GPIO6_IO14 0x1b0b0
+                       /* uSDHC4 SDIO WP */
+                       MX6QDL_PAD_NANDF_CS2__GPIO6_IO15 0x1b0b0
+                       /* uSDHC4 SDIO LED */
+                       MX6QDL_PAD_NANDF_CS3__GPIO6_IO16 0x1b0b0
+               >;
+       };
+
+       pinctrl_wdog: wdoggrp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_9__WDOG1_B      0x1b0b0
+               >;
+       };
+};
diff --git a/arch/arm/dts/imx6q-bx50v3-uboot.dtsi b/arch/arm/dts/imx6q-bx50v3-uboot.dtsi
new file mode 100644 (file)
index 0000000..88dd7e2
--- /dev/null
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: GPL-2.0+ OR X11
+/*
+ * Copyright 2019 Collabora Ltd
+ * Copyright 2019 General Electric Company
+ */
+
+/ {
+       wdt-reboot {
+               compatible = "wdt-reboot";
+               wdt = <&wdog1>;
+       };
+};
index deaec635093778f4d0aeeb584c7d7dd726d9461e..a44d7004cbe3957f809b0f93684a363a5499469d 100644 (file)
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ OR X11 */
+// SPDX-License-Identifier: GPL-2.0+ OR X11
 /*
  * Copyright 2015 Timesys Corporation.
  * Copyright 2018 General Electric Company
@@ -7,83 +7,13 @@
 
 /dts-v1/;
 
-#include "imx6q.dtsi"
-#include <dt-bindings/gpio/gpio.h>
+#include "imx6q-bx50v3.dtsi"
 
 / {
        model = "General Electric Bx50v3";
        compatible = "ge,imx6q-bx50v3", "advantech,imx6q-ba16", "fsl,imx6q";
-};
-
-&iomuxc {
-       pinctrl-names = "default";
-
-       pinctrl_ecspi1: ecspi1grp {
-               fsl,pins = <
-                       MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1
-                       MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0x100b1
-                       MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0x100b1
-                       /* SPI1 CS */
-                       MX6QDL_PAD_EIM_EB2__GPIO2_IO30  0x1b0b0
-               >;
-       };
-
-       pinctrl_usdhc3: usdhc3grp {
-               fsl,pins = <
-                       MX6QDL_PAD_SD3_CMD__SD3_CMD     0x17059
-                       MX6QDL_PAD_SD3_CLK__SD3_CLK     0x10059
-                       MX6QDL_PAD_SD3_DAT0__SD3_DATA0  0x17059
-                       MX6QDL_PAD_SD3_DAT1__SD3_DATA1  0x17059
-                       MX6QDL_PAD_SD3_DAT2__SD3_DATA2  0x17059
-                       MX6QDL_PAD_SD3_DAT3__SD3_DATA3  0x17059
-                       MX6QDL_PAD_SD3_DAT4__SD3_DATA4  0x17059
-                       MX6QDL_PAD_SD3_DAT5__SD3_DATA5  0x17059
-                       MX6QDL_PAD_SD3_DAT6__SD3_DATA6  0x17059
-                       MX6QDL_PAD_SD3_DAT7__SD3_DATA7  0x17059
-               >;
-       };
-
-       pinctrl_usdhc3_reset: usdhc3grp-reset {
-               fsl,pins = <
-                       MX6QDL_PAD_SD3_RST__SD3_RESET   0x170F9
-               >;
-       };
-};
-
-&usdhc1 {
-       status = "disabled";
-};
-
-&usdhc2 {
-       status = "disabled";
-};
-
-/* eMMC */
-&usdhc3 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_usdhc3 &pinctrl_usdhc3_reset>;
-       bus-width = <8>;
-       non-removable;
-       keep-power-in-suspend;
-       status = "okay";
-};
-
-&usdhc4 {
-       status = "disabled";
-};
-
-/* SPI NOR */
-&ecspi1 {
-       cs-gpios = <&gpio2 30 GPIO_ACTIVE_LOW>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_ecspi1>;
-       status = "okay";
 
-       flash: n25q032@0 {
-               compatible = "jedec,spi-nor";
-               #address-cells = <1>;
-               #size-cells = <1>;
-               spi-max-frequency = <20000000>;
-               reg = <0>;
+       chosen {
+               stdout-path = &uart3;
        };
 };
diff --git a/arch/arm/dts/imx6q-bx50v3.dtsi b/arch/arm/dts/imx6q-bx50v3.dtsi
new file mode 100644 (file)
index 0000000..bb8f562
--- /dev/null
@@ -0,0 +1,381 @@
+// SPDX-License-Identifier: GPL-2.0+ OR X11
+/*
+ * Copyright 2015 Timesys Corporation.
+ * Copyright 2015 General Electric Company
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "imx6q-ba16.dtsi"
+#include "imx6q-bx50v3-uboot.dtsi"
+
+/ {
+       mclk: clock-mclk {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <22000000>;
+       };
+
+       gpio-poweroff {
+               compatible = "gpio-poweroff";
+               gpios = <&gpio4 11 GPIO_ACTIVE_LOW>;
+               status = "okay";
+       };
+
+       reg_wl18xx_vmmc: regulator-wl18xx {
+               compatible = "regulator-fixed";
+               regulator-name = "vwl1807";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&pca9539 3 GPIO_ACTIVE_HIGH>;
+               startup-delay-us = <70000>;
+               enable-active-high;
+       };
+
+       reg_wlan: regulator-wlan {
+               compatible = "regulator-fixed";
+               regulator-name = "3P3V_wlan";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+               gpio = <&gpio6 14 GPIO_ACTIVE_HIGH>;
+       };
+
+       sound {
+               compatible = "fsl,imx6q-ba16-sgtl5000",
+                            "fsl,imx-audio-sgtl5000";
+               model = "imx6q-ba16-sgtl5000";
+               ssi-controller = <&ssi1>;
+               audio-codec = <&sgtl5000>;
+               audio-routing =
+                       "MIC_IN", "Mic Jack",
+                       "Mic Jack", "Mic Bias",
+                       "LINE_IN", "Line In Jack",
+                       "Headphone Jack", "HP_OUT";
+               mux-int-port = <1>;
+               mux-ext-port = <4>;
+       };
+
+       aliases {
+               mdio-gpio0 = &mdio0;
+       };
+
+       mdio0: mdio-gpio {
+               compatible = "virtual,mdio-gpio";
+               gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>, /* mdc */
+                       <&gpio2 7 GPIO_ACTIVE_HIGH>; /* mdio */
+
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               switch@0 {
+                       compatible = "marvell,mv88e6085"; /* 88e6240*/
+                       reg = <0>;
+
+                       switch_ports: ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+
+                       mdio {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               switchphy0: switchphy@0 {
+                                       reg = <0>;
+                               };
+
+                               switchphy1: switchphy@1 {
+                                       reg = <1>;
+                               };
+
+                               switchphy2: switchphy@2 {
+                                       reg = <2>;
+                               };
+
+                               switchphy3: switchphy@3 {
+                                       reg = <3>;
+                               };
+
+                               switchphy4: switchphy@4 {
+                                       reg = <4>;
+                               };
+                       };
+               };
+       };
+};
+
+&ecspi5 {
+       cs-gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi5>;
+       status = "okay";
+
+       m25_eeprom: m25p80@0 {
+               compatible = "atmel,at25";
+               spi-max-frequency = <10000000>;
+               size = <0x8000>;
+               pagesize = <64>;
+               reg = <0>;
+               address-width = <16>;
+       };
+};
+
+&i2c1 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       sda-gpios = <&gpio5 26 GPIO_ACTIVE_HIGH>;
+       scl-gpios = <&gpio5 27 GPIO_ACTIVE_HIGH>;
+
+       pca9547: mux@70 {
+               compatible = "nxp,pca9547";
+               reg = <0x70>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               mux1_i2c1: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x0>;
+
+                       ads7830: ads7830@48 {
+                               compatible = "ti,ads7830";
+                               reg = <0x48>;
+                       };
+
+                       mma8453: mma8453@1c {
+                               compatible = "fsl,mma8453";
+                               reg = <0x1c>;
+                       };
+               };
+
+               mux1_i2c2: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x1>;
+
+                       eeprom: eeprom@50 {
+                               compatible = "atmel,24c08";
+                               reg = <0x50>;
+                       };
+
+                       mpl3115: mpl3115@60 {
+                               compatible = "fsl,mpl3115";
+                               reg = <0x60>;
+                       };
+               };
+
+               mux1_i2c3: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x2>;
+               };
+
+               mux1_i2c4: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x3>;
+
+                       sgtl5000: codec@a {
+                               compatible = "fsl,sgtl5000";
+                               reg = <0x0a>;
+                               clocks = <&mclk>;
+                               VDDA-supply = <&reg_1p8v>;
+                               VDDIO-supply = <&reg_3p3v>;
+                       };
+               };
+
+               mux1_i2c5: i2c@4 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x4>;
+
+                       pca9539: pca9539@74 {
+                               compatible = "nxp,pca9539";
+                               reg = <0x74>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               interrupt-parent = <&gpio2>;
+                               interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
+
+                               P12 {
+                                       gpio-hog;
+                                       gpios = <10 0>;
+                                       output-low;
+                                       line-name = "PCA9539-P12";
+                               };
+
+                               P13 {
+                                       gpio-hog;
+                                       gpios = <11 0>;
+                                       output-low;
+                                       line-name = "PCA9539-P13";
+                               };
+
+                               P14 {
+                                       gpio-hog;
+                                       gpios = <12 0>;
+                                       output-low;
+                                       line-name = "PCA9539-P14";
+                               };
+
+                               P15 {
+                                       gpio-hog;
+                                       gpios = <13 0>;
+                                       output-low;
+                                       line-name = "PCA9539-P15";
+                               };
+
+                               P16 {
+                                       gpio-hog;
+                                       gpios = <14 0>;
+                                       output-low;
+                                       line-name = "PCA9539-P16";
+                               };
+
+                               P17 {
+                                       gpio-hog;
+                                       gpios = <15 0>;
+                                       output-low;
+                                       line-name = "PCA9539-P17";
+                               };
+                       };
+               };
+
+               mux1_i2c6: i2c@5 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x5>;
+               };
+
+               mux1_i2c7: i2c@6 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x6>;
+               };
+
+               mux1_i2c8: i2c@7 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x7>;
+               };
+       };
+};
+
+&i2c2 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-1 = <&pinctrl_i2c2_gpio>;
+       sda-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
+       scl-gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>;
+};
+
+&i2c3 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-1 = <&pinctrl_i2c3_gpio>;
+       sda-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
+       scl-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
+};
+
+&iomuxc {
+       pinctrl_i2c1_gpio: i2c1gpiogrp {
+               fsl,pins = <
+                       MX6QDL_PAD_CSI0_DAT8__GPIO5_IO26        0x1b0b0
+                       MX6QDL_PAD_CSI0_DAT9__GPIO5_IO27        0x1b0b0
+               >;
+       };
+
+       pinctrl_i2c2_gpio: i2c2gpiogrp {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL3__GPIO4_IO12 0x1b0b0
+                       MX6QDL_PAD_KEY_ROW3__GPIO4_IO13 0x1b0b0
+               >;
+       };
+
+       pinctrl_i2c3_gpio: i2c3gpiogrp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_3__GPIO1_IO03   0x1b0b0
+                       MX6QDL_PAD_GPIO_6__GPIO1_IO06   0x1b0b0
+               >;
+       };
+};
+
+&pmu {
+       secure-reg-access;
+};
+
+&usdhc2 {
+       status = "disabled";
+};
+
+&usdhc4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc4>;
+       bus-width = <4>;
+       vmmc-supply = <&reg_wl18xx_vmmc>;
+       no-1-8-v;
+       non-removable;
+       wakeup-source;
+       keep-power-in-suspend;
+       cap-power-off-card;
+       max-frequency = <25000000>;
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       wlcore: wlcore@2 {
+               compatible = "ti,wl1837";
+               reg = <2>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <6 IRQ_TYPE_LEVEL_HIGH>;
+               tcxo-clock-frequency = <26000000>;
+       };
+};
+
+&pcie {
+       /* Synopsys, Inc. Device */
+       pci_root: root@0,0 {
+               compatible = "pci16c3,abcd";
+               reg = <0x00000000 0 0 0 0>;
+
+               #address-cells = <3>;
+               #size-cells = <2>;
+               #interrupt-cells = <1>;
+       };
+};
diff --git a/arch/arm/dts/imx6q-cubox-i-emmc-som-v15.dts b/arch/arm/dts/imx6q-cubox-i-emmc-som-v15.dts
new file mode 100644 (file)
index 0000000..3e59ebb
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2014 Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-ti.dtsi"
+#include "imx6qdl-sr-som-emmc.dtsi"
+#include "imx6qdl-cubox-i.dtsi"
+
+/ {
+       model = "SolidRun Cubox-i Dual/Quad (1.5som+emmc)";
+       compatible = "solidrun,cubox-i/q", "fsl,imx6q";
+};
+
+&sata {
+       status = "okay";
+       fsl,transmit-level-mV = <1104>;
+       fsl,transmit-boost-mdB = <0>;
+       fsl,transmit-atten-16ths = <9>;
+       fsl,no-spread-spectrum;
+};
diff --git a/arch/arm/dts/imx6q-cubox-i-som-v15.dts b/arch/arm/dts/imx6q-cubox-i-som-v15.dts
new file mode 100644 (file)
index 0000000..dab70d1
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2014 Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-ti.dtsi"
+#include "imx6qdl-cubox-i.dtsi"
+
+/ {
+       model = "SolidRun Cubox-i Dual/Quad (1.5som)";
+       compatible = "solidrun,cubox-i/q", "fsl,imx6q";
+};
+
+&sata {
+       status = "okay";
+       fsl,transmit-level-mV = <1104>;
+       fsl,transmit-boost-mdB = <0>;
+       fsl,transmit-atten-16ths = <9>;
+       fsl,no-spread-spectrum;
+};
diff --git a/arch/arm/dts/imx6q-cubox-i.dts b/arch/arm/dts/imx6q-cubox-i.dts
new file mode 100644 (file)
index 0000000..1c7b262
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2014 Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-brcm.dtsi"
+#include "imx6qdl-cubox-i.dtsi"
+
+/ {
+       model = "SolidRun Cubox-i Dual/Quad";
+       compatible = "solidrun,cubox-i/q", "fsl,imx6q";
+};
+
+&sata {
+       status = "okay";
+       fsl,transmit-level-mV = <1104>;
+       fsl,transmit-boost-mdB = <0>;
+       fsl,transmit-atten-16ths = <9>;
+       fsl,no-spread-spectrum;
+};
diff --git a/arch/arm/dts/imx6q-dhcom-pdk2-u-boot.dtsi b/arch/arm/dts/imx6q-dhcom-pdk2-u-boot.dtsi
new file mode 100644 (file)
index 0000000..b94231e
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: (GPL-2.0+)
+/*
+ * Copyright (C) 2019 Claudius Heine <ch@denx.de>
+ */
+
+/ {
+       wdt-reboot {
+               compatible = "wdt-reboot";
+               wdt = <&wdog1>;
+       };
+};
diff --git a/arch/arm/dts/imx6q-hummingboard-emmc-som-v15.dts b/arch/arm/dts/imx6q-hummingboard-emmc-som-v15.dts
new file mode 100644 (file)
index 0000000..c51b4e4
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2014 Rabeeh Khoury (rabeeh@solid-run.com)
+ * Based on dt work by Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-ti.dtsi"
+#include "imx6qdl-sr-som-emmc.dtsi"
+#include "imx6qdl-hummingboard.dtsi"
+
+/ {
+       model = "SolidRun HummingBoard Dual/Quad (1.5som+emmc)";
+       compatible = "solidrun,hummingboard/q", "fsl,imx6q";
+};
+
+&sata {
+       status = "okay";
+       fsl,transmit-level-mV = <1025>;
+       fsl,transmit-boost-mdB = <3330>;
+       fsl,transmit-atten-16ths = <9>;
+       fsl,receive-eq-mdB = <3000>;
+};
diff --git a/arch/arm/dts/imx6q-hummingboard-som-v15.dts b/arch/arm/dts/imx6q-hummingboard-som-v15.dts
new file mode 100644 (file)
index 0000000..e4132d6
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2014 Rabeeh Khoury (rabeeh@solid-run.com)
+ * Based on dt work by Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-ti.dtsi"
+#include "imx6qdl-hummingboard.dtsi"
+
+/ {
+       model = "SolidRun HummingBoard Dual/Quad (1.5som)";
+       compatible = "solidrun,hummingboard/q", "fsl,imx6q";
+};
+
+&sata {
+       status = "okay";
+       fsl,transmit-level-mV = <1025>;
+       fsl,transmit-boost-mdB = <3330>;
+       fsl,transmit-atten-16ths = <9>;
+       fsl,receive-eq-mdB = <3000>;
+};
diff --git a/arch/arm/dts/imx6q-hummingboard.dts b/arch/arm/dts/imx6q-hummingboard.dts
new file mode 100644 (file)
index 0000000..8c9e94e
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2014 Rabeeh Khoury (rabeeh@solid-run.com)
+ * Based on dt work by Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-brcm.dtsi"
+#include "imx6qdl-hummingboard.dtsi"
+
+/ {
+       model = "SolidRun HummingBoard Dual/Quad";
+       compatible = "solidrun,hummingboard/q", "fsl,imx6q";
+};
+
+&sata {
+       status = "okay";
+       fsl,transmit-level-mV = <1025>;
+       fsl,transmit-boost-mdB = <3330>;
+       fsl,transmit-atten-16ths = <9>;
+       fsl,receive-eq-mdB = <3000>;
+};
diff --git a/arch/arm/dts/imx6q-hummingboard2-emmc-som-v15-u-boot.dtsi b/arch/arm/dts/imx6q-hummingboard2-emmc-som-v15-u-boot.dtsi
new file mode 100644 (file)
index 0000000..89fbec4
--- /dev/null
@@ -0,0 +1 @@
+#include "imx6qdl-hummingboard2-emmc-som-v15-u-boot.dtsi"
diff --git a/arch/arm/dts/imx6q-hummingboard2-emmc-som-v15.dts b/arch/arm/dts/imx6q-hummingboard2-emmc-som-v15.dts
new file mode 100644 (file)
index 0000000..1998ebf
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Device Tree file for SolidRun HummingBoard2
+ * Copyright (C) 2015 Rabeeh Khoury <rabeeh@solid-run.com>
+ * Based on work by Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file 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.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-emmc.dtsi"
+#include "imx6qdl-sr-som-ti.dtsi"
+#include "imx6qdl-hummingboard2.dtsi"
+
+/ {
+       model = "SolidRun HummingBoard2 Dual/Quad (1.5som+emmc)";
+       compatible = "solidrun,hummingboard2/q", "fsl,imx6q";
+};
+
+&sata {
+       status = "okay";
+       fsl,transmit-level-mV = <1104>;
+       fsl,transmit-boost-mdB = <0>;
+       fsl,transmit-atten-16ths = <9>;
+       fsl,no-spread-spectrum;
+};
diff --git a/arch/arm/dts/imx6q-hummingboard2-som-v15.dts b/arch/arm/dts/imx6q-hummingboard2-som-v15.dts
new file mode 100644 (file)
index 0000000..d3ad732
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Device Tree file for SolidRun HummingBoard2
+ * Copyright (C) 2015 Rabeeh Khoury <rabeeh@solid-run.com>
+ * Based on work by Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file 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.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-ti.dtsi"
+#include "imx6qdl-hummingboard2.dtsi"
+
+/ {
+       model = "SolidRun HummingBoard2 Dual/Quad (1.5som)";
+       compatible = "solidrun,hummingboard2/q", "fsl,imx6q";
+};
+
+&sata {
+       status = "okay";
+       fsl,transmit-level-mV = <1104>;
+       fsl,transmit-boost-mdB = <0>;
+       fsl,transmit-atten-16ths = <9>;
+       fsl,no-spread-spectrum;
+};
diff --git a/arch/arm/dts/imx6q-hummingboard2.dts b/arch/arm/dts/imx6q-hummingboard2.dts
new file mode 100644 (file)
index 0000000..5249f53
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2015 Rabeeh Khoury <rabeeh@solid-run.com>
+ * Based on dt work by Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-brcm.dtsi"
+#include "imx6qdl-hummingboard2.dtsi"
+#include "imx6qdl-hummingboard2-emmc.dtsi"
+
+/ {
+       model = "SolidRun HummingBoard2 Dual/Quad";
+       compatible = "solidrun,hummingboard2/q", "fsl,imx6q";
+};
+
+&sata {
+       status = "okay";
+       fsl,transmit-level-mV = <1104>;
+       fsl,transmit-boost-mdB = <0>;
+       fsl,transmit-atten-16ths = <9>;
+       fsl,no-spread-spectrum;
+};
index e7c5616a631f4eb7b88beee84716de494e13639e..d51745268dbf256b190deef2660194b80e4bfd01 100644 (file)
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+// SPDX-License-Identifier: GPL-2.0 OR X11
 /*
  * Copyright (C) 2017 Engicam S.r.l.
  * Copyright (C) 2017 Amarula Solutions B.V.
@@ -8,13 +8,26 @@
 /dts-v1/;
 
 #include "imx6q.dtsi"
-#include "imx6qdl-icore.dtsi"
+#include "imx6qdl-icore-1.5.dtsi"
 
 / {
-       model = "Engicam i.CoreM6 Quad/Dual MIPI Starter Kit";
+       model = "Engicam i.CoreM6 1.5 Quad/Dual MIPI Starter Kit";
        compatible = "engicam,imx6-icore", "fsl,imx6q";
 };
 
+&hdmi {
+       ddc-i2c-bus = <&i2c2>;
+       status = "okay";
+};
+
+&mipi_csi {
+       status = "okay";
+};
+
+&ov5640 {
+       status = "okay";
+};
+
 &usdhc3 {
        status = "okay";
 };
diff --git a/arch/arm/dts/imx6q-icore-ofcap10.dts b/arch/arm/dts/imx6q-icore-ofcap10.dts
new file mode 100644 (file)
index 0000000..81cc346
--- /dev/null
@@ -0,0 +1,40 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2016 Amarula Solutions B.V.
+ * Copyright (C) 2016 Engicam S.r.l.
+ */
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-icore.dtsi"
+
+/ {
+       model = "Engicam i.CoreM6 Quad/Dual OpenFrame Capacitive touch 10.1 Kit";
+       compatible = "engicam,imx6-icore", "fsl,imx6q";
+};
+
+&ldb {
+       status = "okay";
+
+       lvds-channel@0 {
+               fsl,data-mapping = "spwg";
+               fsl,data-width = <24>;
+               status = "okay";
+
+               display-timings {
+                       native-mode = <&timing0>;
+                       timing0: timing0 {
+                               clock-frequency = <60000000>;
+                               hactive = <1280>;
+                               vactive = <800>;
+                               hback-porch = <40>;
+                               hfront-porch = <40>;
+                               vback-porch = <10>;
+                               vfront-porch = <3>;
+                               hsync-len = <80>;
+                               vsync-len = <10>;
+                       };
+               };
+       };
+};
diff --git a/arch/arm/dts/imx6q-icore-ofcap12.dts b/arch/arm/dts/imx6q-icore-ofcap12.dts
new file mode 100644 (file)
index 0000000..241811c
--- /dev/null
@@ -0,0 +1,43 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2016 Amarula Solutions B.V.
+ * Copyright (C) 2016 Engicam S.r.l.
+ */
+
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-icore.dtsi"
+
+/ {
+       model = "Engicam i.CoreM6 Quad/Dual OpenFrame Capacitive touch 12 Kit";
+       compatible = "engicam,imx6-icore", "fsl,imx6q";
+
+       panel {
+               compatible = "koe,tx31d200vm0baa";
+               backlight = <&backlight_lvds>;
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&lvds0_out>;
+                       };
+               };
+       };
+};
+
+&ldb {
+       status = "okay";
+
+       lvds-channel@0 {
+               reg = <0>;
+               status = "okay";
+
+               port@4 {
+                       reg = <4>;
+
+                       lvds0_out: endpoint {
+                               remote-endpoint = <&panel_in>;
+                       };
+               };
+       };
+};
index 9fa6ba097d445af62e04541431b3e3bca53e9ad4..cf6ba724f4979a37255a2586422a34d02137889b 100644 (file)
@@ -1,42 +1,7 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
 /*
  * Copyright (C) 2015 Amarula Solutions B.V.
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file 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.
- *
- * Or, alternatively
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
+ * Copyright (C) 2015 Engicam S.r.l.
  */
 
 /dts-v1/;
@@ -48,3 +13,7 @@
        model = "Engicam i.CoreM6 Quad/Dual RQS Starter Kit";
        compatible = "engicam,imx6-icore-rqs", "fsl,imx6q";
 };
+
+&sata {
+       status = "okay";
+};
index 025f54350c28409e6e8db01896720d76c7190634..fe28c3cf54c0377227dc23e7ff9d5710f0dbca70 100644 (file)
@@ -1,43 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0 OR X11
 /*
  * Copyright (C) 2016 Amarula Solutions B.V.
  * Copyright (C) 2016 Engicam S.r.l.
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file 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.
- *
- * Or, alternatively
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 /dts-v1/;
 &can2 {
        status = "okay";
 };
+
+&i2c1 {
+       max11801: touchscreen@48 {
+               compatible = "maxim,max11801";
+               reg = <0x48>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <31 IRQ_TYPE_EDGE_FALLING>;
+       };
+};
+
+&ldb {
+       status = "okay";
+
+       lvds-channel@0 {
+               fsl,data-mapping = "spwg";
+               fsl,data-width = <18>;
+               status = "okay";
+
+               display-timings {
+                       native-mode = <&timing0>;
+                       timing0: timing0 {
+                               clock-frequency = <60000000>;
+                               hactive = <800>;
+                               vactive = <480>;
+                               hback-porch = <30>;
+                               hfront-porch = <30>;
+                               vback-porch = <5>;
+                               vfront-porch = <5>;
+                               hsync-len = <64>;
+                               vsync-len = <20>;
+                       };
+               };
+       };
+};
diff --git a/arch/arm/dts/imx6qdl-aristainetos2-common.dtsi b/arch/arm/dts/imx6qdl-aristainetos2-common.dtsi
new file mode 100644 (file)
index 0000000..2aa531b
--- /dev/null
@@ -0,0 +1,492 @@
+// SPDX-License-Identifier: (GPL-2.0)
+/*
+ * support for the imx6 based aristainetos2 board
+ * parts common to all versions
+ *
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ * Copyright (C) 2015 Heiko Schocher <hs@denx.de>
+ *
+ */
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+
+/ {
+       aliases {
+               eeprom0 = &i2c_eeprom0;
+               pmic0 = &i2c_pmic0;
+       };
+
+       memory@10000000 {
+               device_type = "memory";
+               reg = <0x10000000 0x40000000>;
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm1 0 5000000>;
+               brightness-levels = <0 4 8 16 32 64 128 255>;
+               default-brightness-level = <7>;
+               enable-gpios = <&gpio6 31 GPIO_ACTIVE_HIGH>;
+       };
+
+       reg_2p5v: regulator-2p5v {
+               compatible = "regulator-fixed";
+               regulator-name = "2P5V";
+               regulator-min-microvolt = <2500000>;
+               regulator-max-microvolt = <2500000>;
+               regulator-always-on;
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "3P3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       reg_usbh1_vbus: regulator-usbh1-vbus {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio1 0 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_aristainetos2_usbh1_vbus>;
+               regulator-name = "usb_h1_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       reg_usbotg_vbus: regulator-usbotg-vbus {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio4 15 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_aristainetos2_usbotg_vbus>;
+               regulator-name = "usb_otg_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+};
+
+&audmux {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_audmux>;
+       status = "okay";
+};
+
+&ecspi2 {
+       cs-gpios = <&gpio2 26 GPIO_ACTIVE_HIGH &gpio2 27 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi2>;
+       status = "okay";
+};
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       status = "okay";
+
+       i2c_pmic0: pmic@58 {
+               compatible = "dlg,da9063";
+               /* the pmic uses addr 0x58 and 0x59 */
+               reg = <0x58>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <04 0x8>;
+
+               regulators {
+                       bcore1 {
+                               regulator-name = "bcore1";
+                               regulator-always-on = <1>;
+                               regulator-min-microvolt = <300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       bcore2 {
+                               regulator-name = "bcore2";
+                               regulator-always-on = <1>;
+                               regulator-min-microvolt = <300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       bpro {
+                               regulator-name = "bpro";
+                               regulator-always-on = <1>;
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                       };
+
+                       bprob {
+                               regulator-name = "bprob";
+                               regulator-always-on = <1>;
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                       };
+
+                       bperi {
+                               regulator-name = "bperi";
+                               regulator-always-on = <1>;
+                               regulator-min-microvolt = <300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       bmem {
+                               regulator-name = "bmem";
+                               regulator-always-on = <1>;
+                               regulator-min-microvolt = <300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       ldo2 {
+                               regulator-name = "ldo2";
+                               regulator-always-on = <1>;
+                               regulator-min-microvolt = <300000>;
+                               regulator-max-microvolt = <1800000>;
+                       };
+
+                       ldo3 {
+                               regulator-name = "ldo3";
+                               regulator-always-on = <1>;
+                               regulator-min-microvolt = <300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       ldo4 {
+                               regulator-name = "ldo4";
+                               regulator-always-on = <1>;
+                               regulator-min-microvolt = <300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       ldo5 {
+                               regulator-name = "ldo5";
+                               regulator-always-on = <1>;
+                               regulator-min-microvolt = <300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       ldo6 {
+                               regulator-name = "ldo6";
+                               regulator-always-on = <1>;
+                               regulator-min-microvolt = <300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       ldo7 {
+                               regulator-name = "ldo7";
+                               regulator-always-on = <1>;
+                               regulator-min-microvolt = <300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       ldo8 {
+                               regulator-name = "ldo8";
+                               regulator-always-on = <1>;
+                               regulator-min-microvolt = <300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       ldo9 {
+                               regulator-name = "ldo9";
+                               regulator-always-on = <1>;
+                               regulator-min-microvolt = <300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       ldo10 {
+                               regulator-name = "ldo10";
+                               regulator-always-on = <1>;
+                               regulator-min-microvolt = <300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       ldo11 {
+                               regulator-name = "ldo11";
+                               regulator-always-on = <1>;
+                               regulator-min-microvolt = <300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       bio {
+                               regulator-name = "bio";
+                               regulator-always-on = <1>;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                       };
+               };
+       };
+
+       tmp103: tmp103@71 {
+               compatible = "ti,tmp103";
+               reg = <0x71>;
+       };
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c2>;
+       status = "okay";
+};
+
+&i2c3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c3>;
+       status = "okay";
+
+       expander: tca6416@20 {
+               compatible = "ti,tca6416";
+               reg = <0x20>;
+               #gpio-cells = <2>;
+               gpio-controller;
+
+               env_reset {
+                       gpio-hog;
+                       input;
+                       gpios = <6 GPIO_ACTIVE_LOW>;
+               };
+               boot_rescue {
+                       gpio-hog;
+                       input;
+                       gpios = <7 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       rtc@68 {
+               compatible = "st,m41t11";
+               reg = <0x68>;
+       };
+};
+
+&i2c4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c4>;
+       status = "okay";
+
+       i2c_eeprom0: eeprom@50{
+               compatible = "atmel,24c64";
+               reg = <0x50>;
+               pagesize = <32>;
+       };
+
+       i2c_eeprom1: eeprom@57{
+               compatible = "atmel,24c64";
+               reg = <0x57>;
+               pagesize = <32>;
+       };
+};
+
+&gpio6 {
+       spi_bus_ena {
+               gpio-hog;
+               output-high;
+               gpios = <6 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&gpio7 {
+       bootsel0 {
+               gpio-hog;
+               input;
+               gpios = <6 GPIO_ACTIVE_HIGH>;
+       };
+       bootsel1 {
+               gpio-hog;
+               input;
+               gpios = <7 GPIO_ACTIVE_HIGH>;
+       };
+       bootsel2 {
+               gpio-hog;
+               input;
+               gpios = <1 GPIO_ACTIVE_HIGH>;
+       };
+
+       soft_reset {
+               gpio-hog;
+               output-high;
+               gpios = <13 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&fec {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet>;
+       phy-mode = "rgmii";
+       txd0-skew-ps = <0>;
+       txd1-skew-ps = <0>;
+       txd2-skew-ps = <0>;
+       txd3-skew-ps = <0>;
+       status = "okay";
+};
+
+&pcie {
+       reset-gpio = <&gpio2 16 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&pwm1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm1>;
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>;
+       uart-has-rtscts;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2>;
+       status = "okay";
+};
+
+&uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart3>;
+       uart-has-rtscts;
+       status = "okay";
+};
+
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart4>;
+       status = "okay";
+};
+
+&usbh1 {
+       vbus-supply = <&reg_usbh1_vbus>;
+       dr_mode = "host";
+       status = "okay";
+};
+
+&usbotg {
+       vbus-supply = <&reg_usbotg_vbus>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbotg>;
+       disable-over-current;
+       dr_mode = "host";   /* fixed configuration, ID pin not checked */
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio>;
+
+       pinctrl_audmux: audmux {
+               fsl,pins = <
+                       MX6QDL_PAD_CSI0_DAT7__AUD3_RXD  0x1b0b0
+                       MX6QDL_PAD_CSI0_DAT4__AUD3_TXC  0x1b0b0
+                       MX6QDL_PAD_CSI0_DAT5__AUD3_TXD  0x1b0b0
+                       MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS 0x1b0b0
+               >;
+       };
+
+       pinctrl_ecspi2: ecspi2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_OE__ECSPI2_MISO  0x100b1
+                       MX6QDL_PAD_EIM_CS0__ECSPI2_SCLK 0x100b1
+                       MX6QDL_PAD_EIM_CS1__ECSPI2_MOSI 0x100b1
+                       MX6QDL_PAD_EIM_RW__GPIO2_IO26   0x100b1 /* SS0# */
+                       MX6QDL_PAD_EIM_LBA__GPIO2_IO27  0x100b1 /* SS1# */
+               >;
+       };
+
+       pinctrl_enet: enetgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_ENET_MDIO__ENET_MDIO         0x1b0b0
+                       MX6QDL_PAD_ENET_MDC__ENET_MDC           0x1b0b0
+                       MX6QDL_PAD_RGMII_TXC__RGMII_TXC         0x1b0b0
+                       MX6QDL_PAD_RGMII_TD0__RGMII_TD0         0x1b0b0
+                       MX6QDL_PAD_RGMII_TD1__RGMII_TD1         0x1b0b0
+                       MX6QDL_PAD_RGMII_TD2__RGMII_TD2         0x1b0b0
+                       MX6QDL_PAD_RGMII_TD3__RGMII_TD3         0x1b0b0
+                       MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL   0x1b0b0
+                       MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK    0x400100b0
+                       MX6QDL_PAD_RGMII_RXC__RGMII_RXC         0x1b0b0
+                       MX6QDL_PAD_RGMII_RD0__RGMII_RD0         0x1b0b0
+                       MX6QDL_PAD_RGMII_RD1__RGMII_RD1         0x1b0b0
+                       MX6QDL_PAD_RGMII_RD2__RGMII_RD2         0x1b0b0
+                       MX6QDL_PAD_RGMII_RD3__RGMII_RD3         0x1b0b0
+                       MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL   0x1b0b0
+                       /* make sure pin is GPIO and not ENET_REF_CLK */
+                       MX6QDL_PAD_GPIO_16__GPIO7_IO11  0x1a0b0
+               >;
+       };
+
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_CSI0_DAT8__I2C1_SDA 0x4001b8b1
+                       MX6QDL_PAD_CSI0_DAT9__I2C1_SCL 0x4001b8b1
+               >;
+       };
+
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
+                       MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
+               >;
+       };
+
+       pinctrl_i2c3: i2c3grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_5__I2C3_SCL 0x4001b8b1
+                       MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1
+               >;
+       };
+
+       pinctrl_i2c4: i2c4grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_7__I2C4_SCL 0x4001b8b1
+                       MX6QDL_PAD_GPIO_8__I2C4_SDA 0x4001b8b1
+               >;
+       };
+
+       pinctrl_pwm1: pwm1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_9__PWM1_OUT     0x1b0b0
+                       /* backlight enable */
+                       MX6QDL_PAD_EIM_BCLK__GPIO6_IO31 0x1b0b0
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_CSI0_DAT10__UART1_TX_DATA    0x1b0b1
+                       MX6QDL_PAD_CSI0_DAT11__UART1_RX_DATA    0x1b0b1
+                       MX6QDL_PAD_EIM_D20__UART1_RTS_B         0x1b0b1
+                       MX6QDL_PAD_EIM_D19__UART1_CTS_B         0x1b0b1
+               >;
+       };
+
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D26__UART2_TX_DATA 0x1b0b1
+                       MX6QDL_PAD_EIM_D27__UART2_RX_DATA 0x1b0b1
+               >;
+       };
+
+       pinctrl_uart3: uart3grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b1
+                       MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1
+                       MX6QDL_PAD_EIM_D31__UART3_RTS_B   0x1b0b1
+                       MX6QDL_PAD_EIM_D23__UART3_CTS_B   0x1b0b1
+               >;
+       };
+
+       pinctrl_uart4: uart4grp {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
+                       MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
+               >;
+       };
+
+       pinctrl_aristainetos2_usbh1_vbus: aristainetos-usbh1-vbus {
+               fsl,pins = <MX6QDL_PAD_GPIO_0__GPIO1_IO00 0x400130b0>;
+       };
+
+       pinctrl_aristainetos2_usbotg_vbus: aristainetos-usbotg-vbus {
+               fsl,pins = <MX6QDL_PAD_KEY_ROW4__GPIO4_IO15 0x400130b0>;
+       };
+};
diff --git a/arch/arm/dts/imx6qdl-aristainetos2-u-boot.dtsi b/arch/arm/dts/imx6qdl-aristainetos2-u-boot.dtsi
new file mode 100644 (file)
index 0000000..c713efd
--- /dev/null
@@ -0,0 +1,101 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ */
+
+/ {
+       chosen {
+               u-boot,dm-pre-reloc;
+               stdout-path = &uart2;
+       };
+
+       wdt-reboot {
+               compatible = "wdt-reboot";
+               wdt = <&wdog1>;
+       };
+};
+
+&uart2 {
+       u-boot,dm-pre-reloc;
+};
+
+&pinctrl_gpio {
+       u-boot,dm-pre-reloc;
+};
+
+&pinctrl_uart2 {
+       u-boot,dm-pre-reloc;
+};
+
+&aips2 {
+       u-boot,dm-pre-reloc;
+};
+
+&backlight {
+       pwms = <&pwm1 0 300000>;
+       default-brightness-level = <2>;
+};
+
+/*
+ * allow switching write protect pin by gpio,
+ * because "pinctrl-assert-gpios" from &ecspi1 isn't handled by u-boot
+ */
+&gpio2 {
+       u-boot,dm-pre-reloc;
+
+       wp_spi_nor {
+               gpio-hog;
+               output-high;
+               gpios = <15 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&iomuxc {
+       pinctrl-0 = <&pinctrl_gpio &pinctrl_gpio_fix>;
+       u-boot,dm-pre-reloc;
+
+       pinctrl_gpio_fix: gpiofixgrp {
+               /*
+                * usdhc2 has a levelshifter on the carrier board Rev. DV1,
+                * that will automatically detect the driving direction.
+                * During initialisation this isn't working correctly,
+                * which causes DAT3 to be driven low towards the SD-card.
+                * This causes a SD-card enetring the SPI-Mode
+                * and therefore getting inaccessible until next power cycle.
+                * As workaround we drive the DAT3 line as GPIO and set it high.
+                * This makes usdhc2 unusable in u-boot, but works for the
+                * initialisation in Linux
+                */
+               fsl,pins = <
+                       MX6QDL_PAD_SD2_DAT3__GPIO1_IO12 0x20000
+               >;
+       };
+};
+
+&gpio1 {
+       usdhc_fix {
+               gpio-hog;
+               output-high;
+               gpios = <12 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&gpio3 {
+       u-boot,dm-pre-reloc;
+};
+
+&gpio5 {
+       u-boot,dm-pre-reloc;
+};
+
+&ecspi4 {
+       u-boot,dm-pre-reloc;
+};
+
+&flash {
+       u-boot,dm-pre-reloc;
+};
+
+&pinctrl_ecspi4 {
+       u-boot,dm-pre-reloc;
+};
diff --git a/arch/arm/dts/imx6qdl-aristainetos2.dtsi b/arch/arm/dts/imx6qdl-aristainetos2.dtsi
new file mode 100644 (file)
index 0000000..788e13e
--- /dev/null
@@ -0,0 +1,244 @@
+// SPDX-License-Identifier: (GPL-2.0)
+/*
+ * support for the imx6 based aristainetos2 board
+ *
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ * Copyright (C) 2015 Heiko Schocher <hs@denx.de>
+ *
+ */
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+
+#include "imx6qdl-aristainetos2-common.dtsi"
+
+/ {
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio>;
+
+               LED_blue {
+                       label = "led_blue";
+                       gpios = <&gpio2 29 GPIO_ACTIVE_LOW>;
+               };
+
+               LED_green {
+                       label = "led_green";
+                       gpios = <&gpio5 4 GPIO_ACTIVE_LOW>;
+               };
+
+               LED_red {
+                       label = "led_red";
+                       gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
+               };
+
+               LED_yellow {
+                       label = "led_yellow";
+                       gpios = <&gpio6 16 GPIO_ACTIVE_LOW>;
+               };
+
+               LED_ena {
+                       label = "led_ena";
+                       gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&ecspi1 {
+       fsl,spi-num-chipselects = <3>;
+       cs-gpios = <&gpio4 9 GPIO_ACTIVE_HIGH
+                   &gpio4 10 GPIO_ACTIVE_HIGH
+                   &gpio4 11 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       status = "okay";
+};
+
+&ecspi4 {
+       fsl,spi-num-chipselects = <2>;
+       cs-gpios = <&gpio3 29 GPIO_ACTIVE_HIGH &gpio5 2 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi4>;
+       status = "okay";
+       pinctrl-assert-gpios = <&gpio2 15 GPIO_ACTIVE_HIGH>;
+
+       flash: m25p80@1 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "micron,n25q128a11", "jedec,spi-nor";
+               spi-max-frequency = <20000000>;
+               reg = <1>;
+       };
+};
+
+&gpio7 {
+       sd2_driver_ena {
+               gpio-hog;
+               output-high;
+               gpios = <8 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&gpmi {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpmi_nand>;
+       status = "okay";
+};
+
+&can1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan1>;
+       status = "okay";
+};
+
+&can2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan2>;
+       status = "okay";
+};
+
+&usdhc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       cd-gpios = <&gpio1 27 GPIO_ACTIVE_LOW>;
+       no-1-8-v;
+       status = "okay";
+};
+
+&usdhc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       cd-gpios = <&gpio4 5 GPIO_ACTIVE_LOW>;
+       wp-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>;
+       no-1-8-v;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_ecspi1: ecspi1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1
+                       MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0x100b1
+                       MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0x100b1
+                       MX6QDL_PAD_KEY_ROW1__GPIO4_IO09 0x100b1 /* SS0# */
+                       MX6QDL_PAD_KEY_COL2__GPIO4_IO10 0x100b1 /* SS1# */
+                       MX6QDL_PAD_KEY_ROW2__GPIO4_IO11 0x100b1 /* SS2# */
+               >;
+       };
+
+       pinctrl_ecspi4: ecspi4grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D21__ECSPI4_SCLK 0x100b1
+                       MX6QDL_PAD_EIM_D22__ECSPI4_MISO 0x100b1
+                       MX6QDL_PAD_EIM_D28__ECSPI4_MOSI 0x100b1
+                       MX6QDL_PAD_EIM_D29__GPIO3_IO29  0x100b1 /* SS0# */
+                       MX6QDL_PAD_EIM_A25__GPIO5_IO02  0x100b1 /* SS1# */
+                       MX6QDL_PAD_SD4_DAT7__GPIO2_IO15 0x4001b0b0 /* WP pin */
+               >;
+       };
+
+       pinctrl_gpio: gpiogrp {
+               fsl,pins = <
+                       /* led enable */
+                       MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25      0x4001b0b0
+                       /* LCD power enable */
+                       MX6QDL_PAD_NANDF_CS2__GPIO6_IO15        0x4001b0b0
+                       /* led yellow */
+                       MX6QDL_PAD_NANDF_CS3__GPIO6_IO16        0x4001b0b0
+                       /* led red */
+                       MX6QDL_PAD_EIM_EB0__GPIO2_IO28          0x4001b0b0
+                       /* led green */
+                       MX6QDL_PAD_EIM_A24__GPIO5_IO04          0x4001b0b0
+                       /* led blue */
+                       MX6QDL_PAD_EIM_EB1__GPIO2_IO29          0x4001b0b0
+                       /* Profibus IRQ */
+                       MX6QDL_PAD_SD3_DAT5__GPIO7_IO00         0x1b0b0
+                       /* FPGA IRQ currently unused*/
+                       MX6QDL_PAD_SD3_DAT6__GPIO6_IO18         0x1b0b0
+                       /* Display reset because of clock failure */
+                       MX6QDL_PAD_SD4_DAT3__GPIO2_IO11         0x4001b0b0
+                       /* spi bus #2 SS driver enable */
+                       MX6QDL_PAD_EIM_A23__GPIO6_IO06          0x4001b0b0
+                       /* RST_LOC# PHY reset input (has pull-down!)*/
+                       MX6QDL_PAD_GPIO_18__GPIO7_IO13          0x4001b0b0
+                       /* USB_OTG_ID = GPIO1_24*/
+                       MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID       0x4001b0b0
+                       /* Touchscreen IRQ */
+                       MX6QDL_PAD_SD4_DAT1__GPIO2_IO09         0x1b0b0
+                       /* PCIe reset */
+                       MX6QDL_PAD_EIM_A22__GPIO2_IO16          0x4001b0b0
+               >;
+       };
+
+       pinctrl_gpmi_nand: gpmi-nand {
+               fsl,pins = <
+                       MX6QDL_PAD_NANDF_CLE__NAND_CLE     0xb0b1
+                       MX6QDL_PAD_NANDF_ALE__NAND_ALE     0xb0b1
+                       MX6QDL_PAD_NANDF_WP_B__NAND_WP_B   0xb0b1
+                       MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0xb000
+                       MX6QDL_PAD_NANDF_CS0__NAND_CE0_B   0xb0b1
+                       MX6QDL_PAD_SD4_CMD__NAND_RE_B      0xb0b1
+                       MX6QDL_PAD_SD4_CLK__NAND_WE_B      0xb0b1
+                       MX6QDL_PAD_NANDF_D0__NAND_DATA00   0xb0b1
+                       MX6QDL_PAD_NANDF_D1__NAND_DATA01   0xb0b1
+                       MX6QDL_PAD_NANDF_D2__NAND_DATA02   0xb0b1
+                       MX6QDL_PAD_NANDF_D3__NAND_DATA03   0xb0b1
+                       MX6QDL_PAD_NANDF_D4__NAND_DATA04   0xb0b1
+                       MX6QDL_PAD_NANDF_D5__NAND_DATA05   0xb0b1
+                       MX6QDL_PAD_NANDF_D6__NAND_DATA06   0xb0b1
+                       MX6QDL_PAD_NANDF_D7__NAND_DATA07   0xb0b1
+               >;
+       };
+
+       pinctrl_flexcan1: flexcan1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_CLK__FLEXCAN1_RX 0x1b0b0
+                       MX6QDL_PAD_SD3_CMD__FLEXCAN1_TX 0x1b0b0
+               >;
+       };
+
+       pinctrl_flexcan2: flexcan2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_DAT0__FLEXCAN2_TX 0x1b0b0
+                       MX6QDL_PAD_SD3_DAT1__FLEXCAN2_RX 0x1b0b0
+               >;
+       };
+
+       pinctrl_usbotg: usbotggrp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x17059
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17059
+                       MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10059
+                       MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17059
+                       MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17059
+                       MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17059
+                       MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17059
+                       /* SD1 card detect input */
+                       MX6QDL_PAD_ENET_RXD0__GPIO1_IO27        0x1b0b0
+                       /* SD1 write protect input */
+                       MX6QDL_PAD_DI0_PIN4__GPIO4_IO20         0x1b0b0
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD2_CMD__SD2_CMD    0x71
+                       MX6QDL_PAD_SD2_CLK__SD2_CLK    0x71
+                       MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x71
+                       MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x71
+                       MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x71
+                       MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x71
+                       /* SD2 level shifter output enable */
+                       MX6QDL_PAD_SD3_RST__GPIO7_IO08          0x4001b0b0
+                       /* SD2 card detect input */
+                       MX6QDL_PAD_GPIO_19__GPIO4_IO05          0x1b0b0
+                       /* SD2 write protect input */
+                       MX6QDL_PAD_SD4_DAT2__GPIO2_IO10         0x1b0b0
+               >;
+       };
+};
diff --git a/arch/arm/dts/imx6qdl-aristainetos2b-u-boot.dtsi b/arch/arm/dts/imx6qdl-aristainetos2b-u-boot.dtsi
new file mode 100644 (file)
index 0000000..88826a2
--- /dev/null
@@ -0,0 +1,77 @@
+// SPDX-License-Identifier: GPL-2.0+ or X11
+/*
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ */
+
+/ {
+       chosen {
+               u-boot,dm-pre-reloc;
+               stdout-path = &uart2;
+       };
+
+       wdt-reboot {
+               compatible = "wdt-reboot";
+               wdt = <&wdog1>;
+       };
+};
+
+&uart2 {
+       u-boot,dm-pre-reloc;
+};
+
+&pinctrl_gpio {
+       u-boot,dm-pre-reloc;
+};
+
+&pinctrl_uart2 {
+       u-boot,dm-pre-reloc;
+};
+
+&iomuxc {
+       u-boot,dm-pre-reloc;
+};
+
+&aips2 {
+       u-boot,dm-pre-reloc;
+};
+
+&backlight {
+       pwms = <&pwm1 0 300000>;
+       default-brightness-level = <2>;
+};
+
+/*
+ * allow switching write protect / reset pin by gpio,
+ * because "pinctrl-assert-gpios" from &ecspi1 isn't handled by u-boot
+ */
+&gpio2 {
+       u-boot,dm-pre-reloc;
+
+       wp_spi_nor {
+               gpio-hog;
+               output-high;
+               gpios = <15 GPIO_ACTIVE_HIGH>;
+       };
+
+       reset_spi_nor {
+               gpio-hog;
+               output-high;
+               gpios = <28 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&gpio4 {
+       u-boot,dm-pre-reloc;
+};
+
+&ecspi1 {
+       u-boot,dm-pre-reloc;
+};
+
+&flash {
+       u-boot,dm-pre-reloc;
+};
+
+&pinctrl_ecspi1 {
+       u-boot,dm-pre-reloc;
+};
diff --git a/arch/arm/dts/imx6qdl-aristainetos2b.dtsi b/arch/arm/dts/imx6qdl-aristainetos2b.dtsi
new file mode 100644 (file)
index 0000000..7d92ea2
--- /dev/null
@@ -0,0 +1,266 @@
+// SPDX-License-Identifier: (GPL-2.0)
+/*
+ * support for the imx6 based aristainetos2b board
+ *
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ * Copyright (C) 2015 Heiko Schocher <hs@denx.de>
+ *
+ */
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+
+#include "imx6qdl-aristainetos2-common.dtsi"
+
+/ {
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio>;
+
+               LED_blue {
+                       label = "led_blue";
+                       gpios = <&gpio2 29 GPIO_ACTIVE_HIGH>;
+               };
+
+               LED_green {
+                       label = "led_green";
+                       gpios = <&gpio5 4 GPIO_ACTIVE_HIGH>;
+               };
+
+               LED_red {
+                       label = "led_red";
+                       gpios = <&gpio5 0 GPIO_ACTIVE_HIGH>;
+               };
+
+               LED_yellow {
+                       label = "led_yellow";
+                       gpios = <&gpio6 16 GPIO_ACTIVE_HIGH>;
+               };
+
+               LED_ena {
+                       label = "led_ena";
+                       gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&ecspi1 {
+       fsl,spi-num-chipselects = <3>;
+       cs-gpios = <&gpio2 30 GPIO_ACTIVE_HIGH
+                   &gpio4 10 GPIO_ACTIVE_HIGH
+                   &gpio4 11 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       status = "okay";
+       pinctrl-assert-gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>;
+       pinctrl-assert-gpios = <&gpio2 15 GPIO_ACTIVE_HIGH>;
+
+       flash: m25p80@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "micron,n25q128a11", "jedec,spi-nor";
+               spi-max-frequency = <20000000>;
+               reg = <0>;
+       };
+};
+
+&ecspi4 {
+       fsl,spi-num-chipselects = <2>;
+       cs-gpios = <&gpio3 29 GPIO_ACTIVE_HIGH &gpio5 2 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi4>;
+       status = "okay";
+};
+
+&i2c1 {
+       tpm@20 {
+               compatible = "infineon,slb9645tt";
+               reg = <0x20>;
+       };
+};
+
+&gpio7 {
+       sd2_driver_ena {
+               gpio-hog;
+               output-high;
+               gpios = <8 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&gpmi {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpmi_nand>;
+       status = "okay";
+};
+
+&can1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan1>;
+       status = "okay";
+};
+
+&can2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan2>;
+       status = "okay";
+};
+
+&usdhc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       cd-gpios = <&gpio1 27 GPIO_ACTIVE_LOW>;
+       wp-gpios = <&gpio4 20 GPIO_ACTIVE_HIGH>;
+       no-1-8-v;
+       status = "okay";
+};
+
+&usdhc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       /*
+        * comment out this line to make the WiFi Eval-Module work in
+        * SD-Slot2, and add line:
+        * broken-cd;
+        * causes 6% CPU load if no WiFi module installed (polling)
+        */
+       cd-gpios = <&gpio4 5 GPIO_ACTIVE_LOW>;
+       wp-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>;
+       no-1-8-v;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_ecspi1: ecspi1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1
+                       MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0x100b1
+                       MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0x100b1
+                       /* SS0# */
+                       MX6QDL_PAD_EIM_EB2__GPIO2_IO30 0x100b1
+                       /* SS1# */
+                       MX6QDL_PAD_KEY_COL2__GPIO4_IO10 0x100b1
+                       /* SS2# */
+                       MX6QDL_PAD_KEY_ROW2__GPIO4_IO11 0x100b1
+                       /* WP pin NOR Flash */
+                       MX6QDL_PAD_SD4_DAT7__GPIO2_IO15 0x4001b0b0
+                       /* Flash nReset */
+                       MX6QDL_PAD_EIM_EB0__GPIO2_IO28  0x4001b0b0
+               >;
+       };
+
+       pinctrl_ecspi4: ecspi4grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D21__ECSPI4_SCLK 0x100b1
+                       MX6QDL_PAD_EIM_D22__ECSPI4_MISO 0x100b1
+                       MX6QDL_PAD_EIM_D28__ECSPI4_MOSI 0x100b1
+                       MX6QDL_PAD_EIM_D29__GPIO3_IO29  0x100b1 /* SS0# */
+                       MX6QDL_PAD_EIM_A25__GPIO5_IO02  0x100b1 /* SS1# */
+               >;
+       };
+
+       pinctrl_gpio: gpiogrp {
+               fsl,pins = <
+                       /* led enable */
+                       MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25      0x4001b0b0
+                       /* LCD power enable */
+                       MX6QDL_PAD_NANDF_CS2__GPIO6_IO15        0x4001b0b0
+                       /* led yellow */
+                       MX6QDL_PAD_NANDF_CS3__GPIO6_IO16        0x4001b0b0
+                       /* led red */
+                       MX6QDL_PAD_EIM_WAIT__GPIO5_IO00         0x4001b0b0
+                       /* led green */
+                       MX6QDL_PAD_EIM_A24__GPIO5_IO04          0x4001b0b0
+                       /* led blue */
+                       MX6QDL_PAD_EIM_EB1__GPIO2_IO29          0x4001b0b0
+                       /* Profibus IRQ */
+                       MX6QDL_PAD_SD3_DAT5__GPIO7_IO00         0x1b0b0
+                       /* FPGA IRQ currently unused*/
+                       MX6QDL_PAD_SD3_DAT6__GPIO6_IO18         0x1b0b0
+                       /* Display reset because of clock failure */
+                       MX6QDL_PAD_SD4_DAT3__GPIO2_IO11         0x4001b0b0
+                       /* spi bus #2 SS driver enable */
+                       MX6QDL_PAD_EIM_A23__GPIO6_IO06          0x4001b0b0
+                       /* RST_LOC# PHY reset input (has pull-down!)*/
+                       MX6QDL_PAD_GPIO_18__GPIO7_IO13          0x4001b0b0
+                       /* Touchscreen IRQ */
+                       MX6QDL_PAD_SD4_DAT1__GPIO2_IO09         0x1b0b0
+                       /* PCIe reset */
+                       MX6QDL_PAD_EIM_A22__GPIO2_IO16          0x4001b0b0
+                       /* make sure pin is GPIO and not ENET_REF_CLK */
+                       MX6QDL_PAD_GPIO_16__GPIO7_IO11          0x4001a0b0
+                       /* SD2 level shifter output enable / SD2 Reset# */
+                       MX6QDL_PAD_SD3_RST__GPIO7_IO08          0x4001b0b0
+               >;
+       };
+
+       pinctrl_gpmi_nand: gpmi-nand {
+               fsl,pins = <
+                       MX6QDL_PAD_NANDF_CLE__NAND_CLE     0xb0b1
+                       MX6QDL_PAD_NANDF_ALE__NAND_ALE     0xb0b1
+                       MX6QDL_PAD_NANDF_WP_B__NAND_WP_B   0xb0b1
+                       MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0xb000
+                       MX6QDL_PAD_NANDF_CS0__NAND_CE0_B   0xb0b1
+                       MX6QDL_PAD_SD4_CMD__NAND_RE_B      0xb0b1
+                       MX6QDL_PAD_SD4_CLK__NAND_WE_B      0xb0b1
+                       MX6QDL_PAD_NANDF_D0__NAND_DATA00   0xb0b1
+                       MX6QDL_PAD_NANDF_D1__NAND_DATA01   0xb0b1
+                       MX6QDL_PAD_NANDF_D2__NAND_DATA02   0xb0b1
+                       MX6QDL_PAD_NANDF_D3__NAND_DATA03   0xb0b1
+                       MX6QDL_PAD_NANDF_D4__NAND_DATA04   0xb0b1
+                       MX6QDL_PAD_NANDF_D5__NAND_DATA05   0xb0b1
+                       MX6QDL_PAD_NANDF_D6__NAND_DATA06   0xb0b1
+                       MX6QDL_PAD_NANDF_D7__NAND_DATA07   0xb0b1
+               >;
+       };
+
+       pinctrl_flexcan1: flexcan1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_CLK__FLEXCAN1_RX 0x1b0b0
+                       MX6QDL_PAD_SD3_CMD__FLEXCAN1_TX 0x1b0b0
+               >;
+       };
+
+       pinctrl_flexcan2: flexcan2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_DAT0__FLEXCAN2_TX 0x1b0b0
+                       MX6QDL_PAD_SD3_DAT1__FLEXCAN2_RX 0x1b0b0
+               >;
+       };
+
+       pinctrl_usbotg: usbotggrp {
+               fsl,pins = <
+                       MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID  0x17059
+                       MX6QDL_PAD_KEY_COL4__USB_OTG_OC    0x1b0b0
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17059
+                       MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10059
+                       MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17059
+                       MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17059
+                       MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17059
+                       MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17059
+                       /* SD1 card detect input */
+                       MX6QDL_PAD_ENET_RXD0__GPIO1_IO27        0x1b0b0
+                       /* SD1 write protect input */
+                       MX6QDL_PAD_DI0_PIN4__GPIO4_IO20         0x1b0b0
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD2_CMD__SD2_CMD    0x71
+                       MX6QDL_PAD_SD2_CLK__SD2_CLK    0x71
+                       MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x71
+                       MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x71
+                       MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x71
+                       MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x71
+                       /* SD2 card detect input */
+                       MX6QDL_PAD_GPIO_19__GPIO4_IO05          0x1b0b0
+                       /* SD2 write protect input */
+                       MX6QDL_PAD_SD4_DAT2__GPIO2_IO10         0x1b0b0
+               >;
+       };
+};
diff --git a/arch/arm/dts/imx6qdl-aristainetos2b_csl-u-boot.dtsi b/arch/arm/dts/imx6qdl-aristainetos2b_csl-u-boot.dtsi
new file mode 100644 (file)
index 0000000..8c2ed70
--- /dev/null
@@ -0,0 +1,77 @@
+// SPDX-License-Identifier: GPL-2.0+ or X11
+/*
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ */
+
+/ {
+       chosen {
+               u-boot,dm-pre-reloc;
+               stdout-path = &uart1;
+       };
+
+       wdt-reboot {
+               compatible = "wdt-reboot";
+               wdt = <&wdog1>;
+       };
+};
+
+&uart1 {
+       u-boot,dm-pre-reloc;
+};
+
+&pinctrl_gpio {
+       u-boot,dm-pre-reloc;
+};
+
+&pinctrl_uart1 {
+       u-boot,dm-pre-reloc;
+};
+
+&iomuxc {
+       u-boot,dm-pre-reloc;
+};
+
+&aips1 {
+       u-boot,dm-pre-reloc;
+};
+
+&backlight {
+       pwms = <&pwm1 0 300000>;
+       default-brightness-level = <2>;
+};
+
+/*
+ * allow switching write protect / reset pin by gpio,
+ * because "pinctrl-assert-gpios" from &ecspi1 isn't handled by u-boot
+ */
+&gpio2 {
+       u-boot,dm-pre-reloc;
+
+       wp_spi_nor {
+               gpio-hog;
+               output-high;
+               gpios = <15 GPIO_ACTIVE_HIGH>;
+       };
+
+       reset_spi_nor {
+               gpio-hog;
+               output-high;
+               gpios = <28 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&gpio4 {
+       u-boot,dm-pre-reloc;
+};
+
+&ecspi1 {
+       u-boot,dm-pre-reloc;
+};
+
+&flash {
+       u-boot,dm-pre-reloc;
+};
+
+&pinctrl_ecspi1 {
+       u-boot,dm-pre-reloc;
+};
diff --git a/arch/arm/dts/imx6qdl-aristainetos2b_csl.dtsi b/arch/arm/dts/imx6qdl-aristainetos2b_csl.dtsi
new file mode 100644 (file)
index 0000000..fa4dade
--- /dev/null
@@ -0,0 +1,248 @@
+// SPDX-License-Identifier: (GPL-2.0)
+/*
+ * support for the imx6 based aristainetos2b-csl board
+ *
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ * Copyright (C) 2015 Heiko Schocher <hs@denx.de>
+ *
+ */
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+
+#include "imx6qdl-aristainetos2-common.dtsi"
+
+/ {
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio>;
+
+               LED_blue {
+                       label = "led_blue";
+                       gpios = <&gpio2 29 GPIO_ACTIVE_HIGH>;
+               };
+
+               LED_green {
+                       label = "led_green";
+                       gpios = <&gpio5 4 GPIO_ACTIVE_HIGH>;
+               };
+
+               LED_red {
+                       label = "led_red";
+                       gpios = <&gpio5 0 GPIO_ACTIVE_HIGH>;
+               };
+
+               LED_yellow {
+                       label = "led_yellow";
+                       gpios = <&gpio6 16 GPIO_ACTIVE_HIGH>;
+               };
+
+               LED_blue_2 {
+                       label = "led_blue2";
+                       gpios = <&expander 15 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+
+               LED_green_2 {
+                       label = "led_green2";
+                       gpios = <&expander 14 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+
+               LED_red_2 {
+                       label = "led_red2";
+                       gpios = <&expander 12 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+
+               LED_yellow_2 {
+                       label = "led_yellow2";
+                       gpios = <&expander 13 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+
+               LED_ena {
+                       label = "led_ena";
+                       gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&ecspi1 {
+       fsl,spi-num-chipselects = <3>;
+       cs-gpios = <&gpio2 30 GPIO_ACTIVE_HIGH
+                   &gpio4 10 GPIO_ACTIVE_HIGH
+                   &gpio4 11 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       status = "okay";
+       pinctrl-assert-gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>;
+       pinctrl-assert-gpios = <&gpio2 15 GPIO_ACTIVE_HIGH>;
+
+       flash: m25p80@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "micron,n25q128a11", "jedec,spi-nor";
+               spi-max-frequency = <20000000>;
+               reg = <0>;
+       };
+};
+
+&ecspi4 {
+       fsl,spi-num-chipselects = <2>;
+       cs-gpios = <&gpio3 29 GPIO_ACTIVE_HIGH &gpio5 2 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi4>;
+       status = "okay";
+};
+
+&i2c1 {
+       tpm@20 {
+               compatible = "infineon,slb9645tt";
+               reg = <0x20>;
+       };
+};
+
+&gpio7 {
+       wlan_reset {
+               gpio-hog;
+               output-high;
+               gpios = <8 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&gpmi {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpmi_nand>;
+       status = "okay";
+};
+
+&usdhc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       cd-gpios = <&gpio1 27 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&usdhc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       no-1-8-v;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_ecspi1: ecspi1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1
+                       MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0x100b1
+                       MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0x100b1
+                       /* SS0# */
+                       MX6QDL_PAD_EIM_EB2__GPIO2_IO30 0x100b1
+                       /* SS1# */
+                       MX6QDL_PAD_KEY_COL2__GPIO4_IO10 0x100b1
+                       /* SS2# */
+                       MX6QDL_PAD_KEY_ROW2__GPIO4_IO11 0x100b1
+                       /* WP pin NOR Flash */
+                       MX6QDL_PAD_SD4_DAT7__GPIO2_IO15 0x4001b0b0
+                       /* Flash nReset */
+                       MX6QDL_PAD_EIM_EB0__GPIO2_IO28  0x4001b0b0
+               >;
+       };
+
+       pinctrl_ecspi4: ecspi4grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D21__ECSPI4_SCLK 0x100b1
+                       MX6QDL_PAD_EIM_D22__ECSPI4_MISO 0x100b1
+                       MX6QDL_PAD_EIM_D28__ECSPI4_MOSI 0x100b1
+                       MX6QDL_PAD_EIM_D29__GPIO3_IO29  0x100b1 /* SS0# */
+                       MX6QDL_PAD_EIM_A25__GPIO5_IO02  0x100b1 /* SS1# */
+               >;
+       };
+
+       pinctrl_gpio: gpiogrp {
+               fsl,pins = <
+                       /* led enable */
+                       MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25      0x4001b0b0
+                       /* LCD power enable */
+                       MX6QDL_PAD_NANDF_CS2__GPIO6_IO15        0x4001b0b0
+                       /* led yellow */
+                       MX6QDL_PAD_NANDF_CS3__GPIO6_IO16        0x4001b0b0
+                       /* led red */
+                       MX6QDL_PAD_EIM_WAIT__GPIO5_IO00         0x4001b0b0
+                       /* led green */
+                       MX6QDL_PAD_EIM_A24__GPIO5_IO04          0x4001b0b0
+                       /* led blue */
+                       MX6QDL_PAD_EIM_EB1__GPIO2_IO29          0x4001b0b0
+                       /* Profibus IRQ */
+                       MX6QDL_PAD_SD3_DAT5__GPIO7_IO00         0x1b0b0
+                       /* FPGA IRQ currently unused*/
+                       MX6QDL_PAD_SD3_DAT6__GPIO6_IO18         0x1b0b0
+                       /* Display reset because of clock failure */
+                       MX6QDL_PAD_SD4_DAT3__GPIO2_IO11         0x4001b0b0
+                       /* spi bus #2 SS driver enable */
+                       MX6QDL_PAD_EIM_A23__GPIO6_IO06          0x4001b0b0
+                       /* RST_LOC# PHY reset input (has pull-down!)*/
+                       MX6QDL_PAD_GPIO_18__GPIO7_IO13          0x4001b0b0
+                       /* Touchscreen IRQ */
+                       MX6QDL_PAD_SD4_DAT1__GPIO2_IO09         0x1b0b0
+                       /* PCIe reset */
+                       MX6QDL_PAD_EIM_A22__GPIO2_IO16          0x4001b0b0
+                       /* make sure pin is GPIO and not ENET_REF_CLK */
+                       MX6QDL_PAD_GPIO_16__GPIO7_IO11          0x4001a0b0
+                       /* WLAN Module Reset# */
+                       MX6QDL_PAD_SD3_RST__GPIO7_IO08          0x4001b0b0
+               >;
+       };
+
+       pinctrl_gpmi_nand: gpmi-nand {
+               fsl,pins = <
+                       MX6QDL_PAD_NANDF_CLE__NAND_CLE     0xb0b1
+                       MX6QDL_PAD_NANDF_ALE__NAND_ALE     0xb0b1
+                       MX6QDL_PAD_NANDF_WP_B__NAND_WP_B   0xb0b1
+                       MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0xb000
+                       MX6QDL_PAD_NANDF_CS0__NAND_CE0_B   0xb0b1
+                       MX6QDL_PAD_SD4_CMD__NAND_RE_B      0xb0b1
+                       MX6QDL_PAD_SD4_CLK__NAND_WE_B      0xb0b1
+                       MX6QDL_PAD_NANDF_D0__NAND_DATA00   0xb0b1
+                       MX6QDL_PAD_NANDF_D1__NAND_DATA01   0xb0b1
+                       MX6QDL_PAD_NANDF_D2__NAND_DATA02   0xb0b1
+                       MX6QDL_PAD_NANDF_D3__NAND_DATA03   0xb0b1
+                       MX6QDL_PAD_NANDF_D4__NAND_DATA04   0xb0b1
+                       MX6QDL_PAD_NANDF_D5__NAND_DATA05   0xb0b1
+                       MX6QDL_PAD_NANDF_D6__NAND_DATA06   0xb0b1
+                       MX6QDL_PAD_NANDF_D7__NAND_DATA07   0xb0b1
+               >;
+       };
+
+       pinctrl_usbotg: usbotggrp {
+               fsl,pins = <
+                       MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID  0x17059
+                       MX6QDL_PAD_KEY_COL4__USB_OTG_OC    0x1b0b0
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17059
+                       MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10059
+                       MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17059
+                       MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17059
+                       MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17059
+                       MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17059
+                       /* SD1 card detect input */
+                       MX6QDL_PAD_ENET_RXD0__GPIO1_IO27        0x1b0b0
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD2_CMD__SD2_CMD    0x71
+                       MX6QDL_PAD_SD2_CLK__SD2_CLK    0x71
+                       MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x71
+                       MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x71
+                       MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x71
+                       MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x71
+               >;
+       };
+};
diff --git a/arch/arm/dts/imx6qdl-aristainetos2c-u-boot.dtsi b/arch/arm/dts/imx6qdl-aristainetos2c-u-boot.dtsi
new file mode 100644 (file)
index 0000000..88826a2
--- /dev/null
@@ -0,0 +1,77 @@
+// SPDX-License-Identifier: GPL-2.0+ or X11
+/*
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ */
+
+/ {
+       chosen {
+               u-boot,dm-pre-reloc;
+               stdout-path = &uart2;
+       };
+
+       wdt-reboot {
+               compatible = "wdt-reboot";
+               wdt = <&wdog1>;
+       };
+};
+
+&uart2 {
+       u-boot,dm-pre-reloc;
+};
+
+&pinctrl_gpio {
+       u-boot,dm-pre-reloc;
+};
+
+&pinctrl_uart2 {
+       u-boot,dm-pre-reloc;
+};
+
+&iomuxc {
+       u-boot,dm-pre-reloc;
+};
+
+&aips2 {
+       u-boot,dm-pre-reloc;
+};
+
+&backlight {
+       pwms = <&pwm1 0 300000>;
+       default-brightness-level = <2>;
+};
+
+/*
+ * allow switching write protect / reset pin by gpio,
+ * because "pinctrl-assert-gpios" from &ecspi1 isn't handled by u-boot
+ */
+&gpio2 {
+       u-boot,dm-pre-reloc;
+
+       wp_spi_nor {
+               gpio-hog;
+               output-high;
+               gpios = <15 GPIO_ACTIVE_HIGH>;
+       };
+
+       reset_spi_nor {
+               gpio-hog;
+               output-high;
+               gpios = <28 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&gpio4 {
+       u-boot,dm-pre-reloc;
+};
+
+&ecspi1 {
+       u-boot,dm-pre-reloc;
+};
+
+&flash {
+       u-boot,dm-pre-reloc;
+};
+
+&pinctrl_ecspi1 {
+       u-boot,dm-pre-reloc;
+};
diff --git a/arch/arm/dts/imx6qdl-aristainetos2c.dtsi b/arch/arm/dts/imx6qdl-aristainetos2c.dtsi
new file mode 100644 (file)
index 0000000..ba13d55
--- /dev/null
@@ -0,0 +1,228 @@
+// SPDX-License-Identifier: (GPL-2.0)
+/*
+ * support for the imx6 based aristainetos2c board
+ *
+ * Copyright (C) 2019 Heiko Schocher <hs@denx.de>
+ * Copyright (C) 2015 Heiko Schocher <hs@denx.de>
+ *
+ */
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+
+#include "imx6qdl-aristainetos2-common.dtsi"
+
+/ {
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio>;
+
+               LED_blue {
+                       label = "led_blue";
+                       gpios = <&gpio2 29 GPIO_ACTIVE_HIGH>;
+               };
+
+               LED_green {
+                       label = "led_green";
+                       gpios = <&gpio5 4 GPIO_ACTIVE_HIGH>;
+               };
+
+               LED_red {
+                       label = "led_red";
+                       gpios = <&gpio5 0 GPIO_ACTIVE_HIGH>;
+               };
+
+               LED_yellow {
+                       label = "led_yellow";
+                       gpios = <&gpio6 16 GPIO_ACTIVE_HIGH>;
+               };
+
+               LED_ena {
+                       label = "led_ena";
+                       gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&ecspi1 {
+       fsl,spi-num-chipselects = <3>;
+       cs-gpios = <&gpio2 30 GPIO_ACTIVE_HIGH
+                   &gpio4 10 GPIO_ACTIVE_HIGH
+                   &gpio4 11 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       status = "okay";
+       pinctrl-assert-gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>;
+       pinctrl-assert-gpios = <&gpio2 15 GPIO_ACTIVE_HIGH>;
+
+       flash: m25p80@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "micron,n25q128a11", "jedec,spi-nor";
+               spi-max-frequency = <20000000>;
+               reg = <0>;
+       };
+};
+
+&ecspi4 {
+       fsl,spi-num-chipselects = <2>;
+       cs-gpios = <&gpio3 29 GPIO_ACTIVE_HIGH &gpio5 2 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi4>;
+       status = "okay";
+};
+
+&i2c1 {
+       tpm@20 {
+               compatible = "infineon,slb9645tt";
+               reg = <0x20>;
+       };
+};
+
+&can1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan1>;
+       status = "okay";
+};
+
+&can2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan2>;
+       status = "okay";
+};
+
+&usdhc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       cd-gpios = <&gpio1 27 GPIO_ACTIVE_LOW>;
+       wp-gpios = <&gpio4 20 GPIO_ACTIVE_HIGH>;
+       no-1-8-v;
+       status = "okay";
+};
+
+&usdhc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       bus-width = <8>;
+       no-1-8-v;
+       non-removable;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_ecspi1: ecspi1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1
+                       MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0x100b1
+                       MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0x100b1
+                       /* SS0# */
+                       MX6QDL_PAD_EIM_EB2__GPIO2_IO30 0x100b1
+                       /* SS1# */
+                       MX6QDL_PAD_KEY_COL2__GPIO4_IO10 0x100b1
+                       /* SS2# */
+                       MX6QDL_PAD_KEY_ROW2__GPIO4_IO11 0x100b1
+                       /* WP pin NOR Flash */
+                       MX6QDL_PAD_SD4_DAT7__GPIO2_IO15 0x4001b0b0
+                       /* Flash nReset */
+                       MX6QDL_PAD_EIM_EB0__GPIO2_IO28  0x4001b0b0
+               >;
+       };
+
+       pinctrl_ecspi4: ecspi4grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D21__ECSPI4_SCLK 0x100b1
+                       MX6QDL_PAD_EIM_D22__ECSPI4_MISO 0x100b1
+                       MX6QDL_PAD_EIM_D28__ECSPI4_MOSI 0x100b1
+                       MX6QDL_PAD_EIM_D29__GPIO3_IO29  0x100b1 /* SS0# */
+                       MX6QDL_PAD_EIM_A25__GPIO5_IO02  0x100b1 /* SS1# */
+               >;
+       };
+
+       pinctrl_gpio: gpiogrp {
+               fsl,pins = <
+                       /* led enable */
+                       MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25      0x4001b0b0
+                       /* LCD power enable */
+                       MX6QDL_PAD_NANDF_CS2__GPIO6_IO15        0x4001b0b0
+                       /* led yellow */
+                       MX6QDL_PAD_NANDF_CS3__GPIO6_IO16        0x4001b0b0
+                       /* led red */
+                       MX6QDL_PAD_EIM_WAIT__GPIO5_IO00         0x4001b0b0
+                       /* led green */
+                       MX6QDL_PAD_EIM_A24__GPIO5_IO04          0x4001b0b0
+                       /* led blue */
+                       MX6QDL_PAD_EIM_EB1__GPIO2_IO29          0x4001b0b0
+                       /* Profibus IRQ */
+                       MX6QDL_PAD_SD3_DAT5__GPIO7_IO00         0x1b0b0
+                       /* FPGA IRQ currently unused*/
+                       MX6QDL_PAD_SD3_DAT6__GPIO6_IO18         0x1b0b0
+                       /* Display reset because of clock failure */
+                       MX6QDL_PAD_SD4_DAT3__GPIO2_IO11         0x4001b0b0
+                       /* spi bus #2 SS driver enable */
+                       MX6QDL_PAD_EIM_A23__GPIO6_IO06          0x4001b0b0
+                       /* RST_LOC# PHY reset input (has pull-down!)*/
+                       MX6QDL_PAD_GPIO_18__GPIO7_IO13          0x4001b0b0
+                       /* Touchscreen IRQ */
+                       MX6QDL_PAD_SD4_DAT1__GPIO2_IO09         0x1b0b0
+                       /* PCIe reset */
+                       MX6QDL_PAD_EIM_A22__GPIO2_IO16          0x4001b0b0
+                       /* make sure pin is GPIO and not ENET_REF_CLK */
+                       MX6QDL_PAD_GPIO_16__GPIO7_IO11          0x4001a0b0
+                       /* TPM PP */
+                       MX6QDL_PAD_EIM_A21__GPIO2_IO17          0x4001b0b0
+                       /* TPM Reset */
+                       MX6QDL_PAD_EIM_A20__GPIO2_IO18          0x4001b0b0
+               >;
+       };
+
+       pinctrl_flexcan1: flexcan1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_CLK__FLEXCAN1_RX 0x1b0b0
+                       MX6QDL_PAD_SD3_CMD__FLEXCAN1_TX 0x1b0b0
+               >;
+       };
+
+       pinctrl_flexcan2: flexcan2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_DAT0__FLEXCAN2_TX 0x1b0b0
+                       MX6QDL_PAD_SD3_DAT1__FLEXCAN2_RX 0x1b0b0
+               >;
+       };
+
+       pinctrl_usbotg: usbotggrp {
+               fsl,pins = <
+                       MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID  0x17059
+                       MX6QDL_PAD_KEY_COL4__USB_OTG_OC    0x1b0b0
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17059
+                       MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10059
+                       MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17059
+                       MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17059
+                       MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17059
+                       MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17059
+                       /* SD1 card detect input */
+                       MX6QDL_PAD_ENET_RXD0__GPIO1_IO27        0x1b0b0
+                       /* SD1 write protect input */
+                       MX6QDL_PAD_DI0_PIN4__GPIO4_IO20         0x1b0b0
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD2_CMD__SD2_CMD             0x17059
+                       MX6QDL_PAD_SD2_CLK__SD2_CLK             0x10059
+                       MX6QDL_PAD_SD2_DAT0__SD2_DATA0          0x17059
+                       MX6QDL_PAD_SD2_DAT1__SD2_DATA1          0x17059
+                       MX6QDL_PAD_SD2_DAT2__SD2_DATA2          0x17059
+                       MX6QDL_PAD_SD2_DAT3__SD2_DATA3          0x17059
+                       MX6QDL_PAD_NANDF_D4__SD2_DATA4          0x17059
+                       MX6QDL_PAD_NANDF_D5__SD2_DATA5          0x17059
+                       MX6QDL_PAD_NANDF_D6__SD2_DATA6          0x17059
+                       MX6QDL_PAD_NANDF_D7__SD2_DATA7          0x17059
+               >;
+       };
+};
diff --git a/arch/arm/dts/imx6qdl-cubox-i.dtsi b/arch/arm/dts/imx6qdl-cubox-i.dtsi
new file mode 100644 (file)
index 0000000..e3be453
--- /dev/null
@@ -0,0 +1,269 @@
+/*
+ * Copyright (C) 2014 Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       /* Will be filled by the bootloader */
+       memory@10000000 {
+               device_type = "memory";
+               reg = <0x10000000 0>;
+       };
+
+       ir_recv: ir-receiver {
+               compatible = "gpio-ir-receiver";
+               gpios = <&gpio3 9 1>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_cubox_i_ir>;
+       };
+
+       pwmleds {
+               compatible = "pwm-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_cubox_i_pwm1>;
+
+               front {
+                       active-low;
+                       label = "imx6:red:front";
+                       max-brightness = <248>;
+                       pwms = <&pwm1 0 50000>;
+               };
+       };
+
+       v_5v0: regulator-v-5v0 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-max-microvolt = <5000000>;
+               regulator-min-microvolt = <5000000>;
+               regulator-name = "v_5v0";
+       };
+
+       v_usb2: regulator-v-usb2 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio1 0 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_cubox_i_usbh1_vbus>;
+               regulator-max-microvolt = <5000000>;
+               regulator-min-microvolt = <5000000>;
+               regulator-name = "v_usb2";
+               vin-supply = <&v_5v0>;
+       };
+
+       v_usb1: regulator-v-usb1 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_cubox_i_usbotg_vbus>;
+               regulator-max-microvolt = <5000000>;
+               regulator-min-microvolt = <5000000>;
+               regulator-name = "v_usb1";
+               vin-supply = <&v_5v0>;
+       };
+
+       sound-spdif {
+               compatible = "fsl,imx-audio-spdif";
+               model = "Integrated SPDIF";
+               /* IMX6 doesn't implement this yet */
+               spdif-controller = <&spdif>;
+               spdif-out;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-0 = <&pinctrl_gpio_key>;
+               pinctrl-names = "default";
+
+               button_0 {
+                       label = "Button 0";
+                       gpios = <&gpio3 8 GPIO_ACTIVE_LOW>;
+                       linux,code = <BTN_0>;
+               };
+       };
+};
+
+&hdmi {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_cubox_i_hdmi>;
+       ddc-i2c-bus = <&i2c2>;
+       status = "okay";
+};
+
+&i2c2 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_cubox_i_i2c2>;
+       status = "okay";
+};
+
+&i2c3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_cubox_i_i2c3>;
+
+       status = "okay";
+
+       rtc@68 {
+               compatible = "nxp,pcf8523";
+               reg = <0x68>;
+       };
+};
+
+&iomuxc {
+       cubox_i {
+               pinctrl_cubox_i_hdmi: cubox-i-hdmi {
+                       fsl,pins = <
+                               MX6QDL_PAD_KEY_ROW2__HDMI_TX_CEC_LINE 0x1f8b0
+                       >;
+               };
+
+               pinctrl_cubox_i_i2c2: cubox-i-i2c2 {
+                       fsl,pins = <
+                               MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
+                               MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
+                       >;
+               };
+
+               pinctrl_cubox_i_i2c3: cubox-i-i2c3 {
+                       fsl,pins = <
+                               MX6QDL_PAD_EIM_D17__I2C3_SCL 0x4001b8b1
+                               MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
+                       >;
+               };
+
+               pinctrl_cubox_i_ir: cubox-i-ir {
+                       fsl,pins = <
+                               MX6QDL_PAD_EIM_DA9__GPIO3_IO09 0x80000000
+                       >;
+               };
+
+               pinctrl_cubox_i_pwm1: cubox-i-pwm1-front-led {
+                       fsl,pins = <MX6QDL_PAD_DISP0_DAT8__PWM1_OUT 0x1b0b0>;
+               };
+
+               pinctrl_cubox_i_spdif: cubox-i-spdif {
+                       fsl,pins = <MX6QDL_PAD_GPIO_17__SPDIF_OUT 0x13091>;
+               };
+
+               pinctrl_cubox_i_usbh1: cubox-i-usbh1 {
+                       fsl,pins = <MX6QDL_PAD_GPIO_3__USB_H1_OC 0x1b0b0>;
+               };
+
+               pinctrl_cubox_i_usbh1_vbus: cubox-i-usbh1-vbus {
+                       fsl,pins = <MX6QDL_PAD_GPIO_0__GPIO1_IO00 0x4001b0b0>;
+               };
+
+               pinctrl_cubox_i_usbotg: cubox-i-usbotg {
+                       /*
+                        * The Cubox-i pulls ID low, but as it's pointless
+                        * leaving it as a pull-up, even if it is just 10uA.
+                        */
+                       fsl,pins = <
+                               MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x13059
+                               MX6QDL_PAD_KEY_COL4__USB_OTG_OC 0x1b0b0
+                       >;
+               };
+
+               pinctrl_cubox_i_usbotg_vbus: cubox-i-usbotg-vbus {
+                       fsl,pins = <MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x4001b0b0>;
+               };
+
+               pinctrl_cubox_i_usdhc2_aux: cubox-i-usdhc2-aux {
+                       fsl,pins = <
+                               MX6QDL_PAD_GPIO_4__GPIO1_IO04    0x1f071
+                               MX6QDL_PAD_KEY_ROW1__SD2_VSELECT 0x1b071
+                       >;
+               };
+
+               pinctrl_cubox_i_usdhc2: cubox-i-usdhc2 {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD2_CMD__SD2_CMD    0x17059
+                               MX6QDL_PAD_SD2_CLK__SD2_CLK    0x10059
+                               MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x17059
+                               MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x17059
+                               MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x17059
+                               MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x13059
+                       >;
+               };
+
+               pinctrl_gpio_key: gpio-key {
+                       fsl,pins = <
+                               MX6QDL_PAD_EIM_DA8__GPIO3_IO08  0x17059
+                       >;
+               };
+       };
+};
+
+&pwm1 {
+       status = "okay";
+};
+
+&spdif {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_cubox_i_spdif>;
+       status = "okay";
+};
+
+&usbh1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_cubox_i_usbh1>;
+       vbus-supply = <&v_usb2>;
+       status = "okay";
+};
+
+&usbotg {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_cubox_i_usbotg>;
+       vbus-supply = <&v_usb1>;
+       status = "okay";
+};
+
+&usdhc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_cubox_i_usdhc2_aux &pinctrl_cubox_i_usdhc2>;
+       vmmc-supply = <&vcc_3v3>;
+       cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&vcc_3v3 {
+       vin-supply = <&v_5v0>;
+};
diff --git a/arch/arm/dts/imx6qdl-hummingboard.dtsi b/arch/arm/dts/imx6qdl-hummingboard.dtsi
new file mode 100644 (file)
index 0000000..2ffb21d
--- /dev/null
@@ -0,0 +1,368 @@
+/*
+ * Copyright (C) 2013,2014 Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+#include <dt-bindings/sound/fsl-imx-audmux.h>
+
+/ {
+       /* Will be filled by the bootloader */
+       memory@10000000 {
+               device_type = "memory";
+               reg = <0x10000000 0>;
+       };
+
+       chosen {
+               stdout-path = &uart1;
+       };
+
+       ir_recv: ir-receiver {
+               compatible = "gpio-ir-receiver";
+               gpios = <&gpio3 5 GPIO_ACTIVE_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_hummingboard_gpio3_5>;
+       };
+
+       v_3v2: regulator-v-3v2 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "v_3v2";
+               vin-supply = <&v_5v0>;
+       };
+
+       v_5v0: regulator-v-5v0 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-max-microvolt = <5000000>;
+               regulator-min-microvolt = <5000000>;
+               regulator-name = "v_5v0";
+       };
+
+       v_sd: regulator-v-sd {
+               compatible = "regulator-fixed";
+               gpio = <&gpio4 30 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_hummingboard_vmmc>;
+               regulator-boot-on;
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "v_sd";
+               startup-delay-us = <1000>;
+               vin-supply = <&v_3v2>;
+       };
+
+       v_usb2: regulator-v-usb2 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio1 0 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_hummingboard_usbh1_vbus>;
+               regulator-max-microvolt = <5000000>;
+               regulator-min-microvolt = <5000000>;
+               regulator-name = "v_usb2";
+               vin-supply = <&v_5v0>;
+       };
+
+       v_usb1: regulator-v-usb1 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_hummingboard_usbotg_vbus>;
+               regulator-max-microvolt = <5000000>;
+               regulator-min-microvolt = <5000000>;
+               regulator-name = "v_usb1";
+               vin-supply = <&v_5v0>;
+       };
+
+       audio: sound-sgtl5000 {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "On-board Codec";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&sound_codec>;
+               simple-audio-card,frame-master = <&sound_codec>;
+               simple-audio-card,widgets =
+                       "Microphone", "Headphone Jack",
+                       "Headphone", "Headphone Jack";
+               simple-audio-card,routing =
+                       "MIC_IN", "Headphone Jack",
+                       "Headphone Jack", "Mic Bias",
+                       "Headphone Jack", "HP_OUT";
+
+               sound_cpu: simple-audio-card,cpu {
+                       sound-dai = <&ssi1>;
+               };
+
+               sound_codec: simple-audio-card,codec {
+                       sound-dai = <&sgtl5000>;
+               };
+       };
+
+       sound-spdif {
+               compatible = "fsl,imx-audio-spdif";
+               model = "On-board SPDIF";
+               /* IMX6 doesn't implement this yet */
+               spdif-controller = <&spdif>;
+               spdif-out;
+       };
+};
+
+&audmux {
+       status = "okay";
+
+       ssi1 {
+               fsl,audmux-port = <0>;
+               fsl,port-config = <
+                       (IMX_AUDMUX_V2_PTCR_SYN |
+                        IMX_AUDMUX_V2_PTCR_TFSEL(4) |
+                        IMX_AUDMUX_V2_PTCR_TCSEL(4) |
+                        IMX_AUDMUX_V2_PTCR_TFSDIR |
+                        IMX_AUDMUX_V2_PTCR_TCLKDIR)
+                        IMX_AUDMUX_V2_PDCR_RXDSEL(4)
+               >;
+       };
+
+       pins5 {
+               fsl,audmux-port = <4>;
+               fsl,port-config = <
+                       IMX_AUDMUX_V2_PTCR_SYN
+                       IMX_AUDMUX_V2_PDCR_RXDSEL(0)
+               >;
+       };
+};
+
+&can1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hummingboard_flexcan1>;
+       status = "okay";
+};
+
+&hdmi {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hummingboard_hdmi>;
+       ddc-i2c-bus = <&i2c2>;
+       status = "okay";
+};
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hummingboard_i2c1>;
+       status = "okay";
+
+       /* Pro baseboard model */
+       rtc@68 {
+               compatible = "nxp,pcf8523";
+               reg = <0x68>;
+       };
+
+       /* Pro baseboard model */
+       sgtl5000: codec@a {
+               clocks = <&clks IMX6QDL_CLK_CKO>;
+               compatible = "fsl,sgtl5000";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_hummingboard_sgtl5000>;
+               #sound-dai-cells = <0>;
+               reg = <0x0a>;
+               VDDA-supply = <&v_3v2>;
+               VDDIO-supply = <&v_3v2>;
+       };
+};
+
+&i2c2 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hummingboard_i2c2>;
+       status = "okay";
+};
+
+&iomuxc {
+       hummingboard {
+               pinctrl_hummingboard_flexcan1: hummingboard-flexcan1 {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD3_CLK__FLEXCAN1_RX 0x80000000
+                               MX6QDL_PAD_SD3_CMD__FLEXCAN1_TX 0x80000000
+                       >;
+               };
+
+               pinctrl_hummingboard_gpio3_5: hummingboard-gpio3_5 {
+                       fsl,pins = <
+                               MX6QDL_PAD_EIM_DA5__GPIO3_IO05 0x1b0b1
+                       >;
+               };
+
+               pinctrl_hummingboard_hdmi: hummingboard-hdmi {
+                       fsl,pins = <
+                               MX6QDL_PAD_KEY_ROW2__HDMI_TX_CEC_LINE 0x1f8b0
+                       >;
+               };
+
+               pinctrl_hummingboard_i2c1: hummingboard-i2c1 {
+                       fsl,pins = <
+                               MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
+                               MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
+                       >;
+               };
+
+               pinctrl_hummingboard_i2c2: hummingboard-i2c2 {
+                       fsl,pins = <
+                               MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
+                               MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
+                       >;
+               };
+
+               pinctrl_hummingboard_pcie_reset: hummingboard-pcie-reset {
+                       fsl,pins = <
+                               MX6QDL_PAD_EIM_DA4__GPIO3_IO04 0x1b0b1
+                       >;
+               };
+
+               pinctrl_hummingboard_pwm1: pwm1grp {
+                       fsl,pins = <MX6QDL_PAD_DISP0_DAT8__PWM1_OUT 0x1b0b1>;
+               };
+
+               pinctrl_hummingboard_sgtl5000: hummingboard-sgtl5000 {
+                       fsl,pins = <
+                               MX6QDL_PAD_DISP0_DAT19__AUD5_RXD 0x130b0
+                               MX6QDL_PAD_KEY_COL0__AUD5_TXC 0x130b0
+                               MX6QDL_PAD_KEY_ROW0__AUD5_TXD 0x110b0
+                               MX6QDL_PAD_KEY_COL1__AUD5_TXFS 0x130b0
+                               MX6QDL_PAD_GPIO_5__CCM_CLKO1 0x130b0
+                       >;
+               };
+
+               pinctrl_hummingboard_spdif: hummingboard-spdif {
+                       fsl,pins = <MX6QDL_PAD_GPIO_17__SPDIF_OUT 0x13091>;
+               };
+
+               pinctrl_hummingboard_usbh1_vbus: hummingboard-usbh1-vbus {
+                       fsl,pins = <MX6QDL_PAD_GPIO_0__GPIO1_IO00 0x1b0b0>;
+               };
+
+               pinctrl_hummingboard_usbotg_id: hummingboard-usbotg-id {
+                       /*
+                        * We want it pulled down for a fixed host connection.
+                        */
+                       fsl,pins = <MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x13059>;
+               };
+
+               pinctrl_hummingboard_usbotg_vbus: hummingboard-usbotg-vbus {
+                       fsl,pins = <MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x1b0b0>;
+               };
+
+               pinctrl_hummingboard_usdhc2_aux: hummingboard-usdhc2-aux {
+                       fsl,pins = <
+                               MX6QDL_PAD_GPIO_4__GPIO1_IO04    0x1f071
+                       >;
+               };
+
+               pinctrl_hummingboard_usdhc2: hummingboard-usdhc2 {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD2_CMD__SD2_CMD    0x17059
+                               MX6QDL_PAD_SD2_CLK__SD2_CLK    0x10059
+                               MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x17059
+                               MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x17059
+                               MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x17059
+                               MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x13059
+                       >;
+               };
+               pinctrl_hummingboard_vmmc: hummingboard-vmmc {
+                       fsl,pins = <
+                               MX6QDL_PAD_DISP0_DAT9__GPIO4_IO30 0x1b0b0
+                       >;
+               };
+       };
+};
+
+&pcie {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hummingboard_pcie_reset>;
+       reset-gpio = <&gpio3 4 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&pwm1 {
+        pinctrl-names = "default";
+        pinctrl-0 = <&pinctrl_hummingboard_pwm1>;
+        status = "okay";
+};
+
+&pwm2 {
+        pinctrl-names = "default";
+        status = "okay";
+};
+
+&spdif {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hummingboard_spdif>;
+       status = "okay";
+};
+
+&ssi1 {
+       status = "okay";
+};
+
+&usbh1 {
+       disable-over-current;
+       vbus-supply = <&v_usb2>;
+       status = "okay";
+};
+
+&usbotg {
+       disable-over-current;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hummingboard_usbotg_id>;
+       vbus-supply = <&v_usb1>;
+       status = "okay";
+};
+
+&usdhc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <
+               &pinctrl_hummingboard_usdhc2_aux
+               &pinctrl_hummingboard_usdhc2
+       >;
+       vmmc-supply = <&v_sd>;
+       cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&vcc_3v3 {
+       vin-supply = <&v_3v2>;
+};
diff --git a/arch/arm/dts/imx6qdl-hummingboard2-emmc-som-v15-u-boot.dtsi b/arch/arm/dts/imx6qdl-hummingboard2-emmc-som-v15-u-boot.dtsi
new file mode 100644 (file)
index 0000000..d302b2e
--- /dev/null
@@ -0,0 +1,36 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+#include "imx6qdl-u-boot.dtsi"
+
+/ {
+       board-detect {
+               compatible = "solidrun,hummingboard-detect";
+               detect-gpios = <
+                       &gpio2 8 0
+                       &gpio3 4 0
+                       &gpio4 9 0
+                       &gpio6 0 0
+                       &gpio6 4 0
+               >;
+       };
+};
+
+&gpio2 {
+       u-boot,dm-pre-reloc;
+};
+
+&gpio3 {
+       u-boot,dm-pre-reloc;
+};
+
+&gpio4 {
+       u-boot,dm-pre-reloc;
+};
+
+&gpio6 {
+       u-boot,dm-pre-reloc;
+};
+
+&usdhc1 {
+       status = "disabled";
+};
diff --git a/arch/arm/dts/imx6qdl-hummingboard2-emmc.dtsi b/arch/arm/dts/imx6qdl-hummingboard2-emmc.dtsi
new file mode 100644 (file)
index 0000000..f400405
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Device Tree file for SolidRun HummingBoard2
+ * Copyright (C) 2015 Rabeeh Khoury <rabeeh@solid-run.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file 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.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+&iomuxc {
+       hummingboard2 {
+               pinctrl_hummingboard2_usdhc3: hummingboard2-usdhc3 {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD3_CMD__SD3_CMD    0x17059
+                               MX6QDL_PAD_SD3_CLK__SD3_CLK    0x10059
+                               MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059
+                               MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059
+                               MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059
+                               MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059
+                               MX6QDL_PAD_SD3_DAT4__SD3_DATA4 0x17059
+                               MX6QDL_PAD_SD3_DAT5__SD3_DATA5 0x17059
+                               MX6QDL_PAD_SD3_DAT6__SD3_DATA6 0x17059
+                               MX6QDL_PAD_SD3_DAT7__SD3_DATA7 0x17059
+                               MX6QDL_PAD_SD3_RST__SD3_RESET  0x17059
+                       >;
+               };
+       };
+};
+
+&usdhc3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hummingboard2_usdhc3>;
+       vmmc-supply = <&v_3v2>;
+       vqmmc-supply = <&v_3v2>;
+       bus-width = <8>;
+       non-removable;
+       status = "okay";
+};
diff --git a/arch/arm/dts/imx6qdl-hummingboard2.dtsi b/arch/arm/dts/imx6qdl-hummingboard2.dtsi
new file mode 100644 (file)
index 0000000..e423133
--- /dev/null
@@ -0,0 +1,577 @@
+/*
+ * Copyright (C) 2015 Rabeeh Khoury <rabeeh@solid-run.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+#include <dt-bindings/sound/fsl-imx-audmux.h>
+
+/ {
+       /* Will be filled by the bootloader */
+       memory@10000000 {
+               device_type = "memory";
+               reg = <0x10000000 0>;
+       };
+
+       chosen {
+               stdout-path = &uart1;
+       };
+
+       ir_recv: ir-receiver {
+               compatible = "gpio-ir-receiver";
+               gpios = <&gpio7 9 GPIO_ACTIVE_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_hummingboard2_gpio7_9>;
+               linux,rc-map-name = "rc-rc6-mce";
+       };
+
+       v_3v2: regulator-v-3v2 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "v_3v2";
+       };
+
+       v_5v0: regulator-v-5v0 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-max-microvolt = <5000000>;
+               regulator-min-microvolt = <5000000>;
+               regulator-name = "v_5v0";
+       };
+
+       vcc_1p8: regulator-vcc-1p8 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-max-microvolt = <1800000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-name = "vcc_1p8";
+               vin-supply = <&v_3v2>;
+       };
+
+       v_sd: regulator-v-sd {
+               compatible = "regulator-fixed";
+               gpio = <&gpio4 30 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_hummingboard2_vmmc>;
+               regulator-boot-on;
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "v_sd";
+               startup-delay-us = <1000>;
+               vin-supply = <&v_3v2>;
+       };
+
+       v_usb1: regulator-v-usb1 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_hummingboard2_usbotg_vbus>;
+               regulator-always-on;
+               regulator-max-microvolt = <5000000>;
+               regulator-min-microvolt = <5000000>;
+               regulator-name = "v_usb1";
+               vin-supply = <&v_5v0>;
+       };
+
+       v_usb2: regulator-v-usb2 {
+               /* USB hub port 1 */
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio1 0 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_hummingboard2_usbh1_vbus>;
+               regulator-always-on;
+               regulator-max-microvolt = <5000000>;
+               regulator-min-microvolt = <5000000>;
+               regulator-name = "v_usb2";
+               vin-supply = <&v_5v0>;
+       };
+
+       v_usb3: regulator-v-usb3 {
+               /* USB hub port 3 */
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio2 13 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_hummingboard2_usbh2_vbus>;
+               regulator-always-on;
+               regulator-max-microvolt = <5000000>;
+               regulator-min-microvolt = <5000000>;
+               regulator-name = "v_usb3";
+               vin-supply = <&v_5v0>;
+       };
+
+       v_usb4: regulator-v-usb4 {
+               /* USB hub port 4 */
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio7 10 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_hummingboard2_usbh3_vbus>;
+               regulator-always-on;
+               regulator-max-microvolt = <5000000>;
+               regulator-min-microvolt = <5000000>;
+               regulator-name = "v_usb4";
+               vin-supply = <&v_5v0>;
+       };
+
+       audio: sound-sgtl5000 {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "On-board Codec";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&sound_codec>;
+               simple-audio-card,frame-master = <&sound_codec>;
+               simple-audio-card,widgets =
+                       "Microphone", "Mic Jack",
+                       "Headphone", "Headphone Jack";
+               simple-audio-card,routing =
+                       "MIC_IN", "Mic Jack",
+                       "Mic Jack", "Mic Bias",
+                       "Headphone Jack", "HP_OUT";
+
+               sound_cpu: simple-audio-card,cpu {
+                       sound-dai = <&ssi1>;
+               };
+
+               sound_codec: simple-audio-card,codec {
+                       sound-dai = <&sgtl5000>;
+               };
+       };
+};
+
+&audmux {
+       status = "okay";
+
+       ssi1 {
+               fsl,audmux-port = <0>;
+               fsl,port-config = <
+                       (IMX_AUDMUX_V2_PTCR_SYN |
+                        IMX_AUDMUX_V2_PTCR_TFSEL(4) |
+                        IMX_AUDMUX_V2_PTCR_TCSEL(4) |
+                        IMX_AUDMUX_V2_PTCR_TFSDIR |
+                        IMX_AUDMUX_V2_PTCR_TCLKDIR)
+                        IMX_AUDMUX_V2_PDCR_RXDSEL(4)
+               >;
+       };
+
+       pins5 {
+               fsl,audmux-port = <4>;
+               fsl,port-config = <
+                       IMX_AUDMUX_V2_PTCR_SYN
+                       IMX_AUDMUX_V2_PDCR_RXDSEL(0)
+               >;
+       };
+};
+
+&ecspi2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hummingboard2_ecspi2>;
+       cs-gpios = <&gpio2 26 0>;
+       status = "okay";
+};
+
+&hdmi {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hummingboard2_hdmi>;
+       ddc-i2c-bus = <&i2c2>;
+       status = "okay";
+};
+
+&i2c1 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hummingboard2_i2c1>;
+       status = "okay";
+
+       pcf8523: rtc@68 {
+               compatible = "nxp,pcf8523";
+               reg = <0x68>;
+       };
+
+       sgtl5000: codec@a {
+               clocks = <&clks IMX6QDL_CLK_CKO>;
+               compatible = "fsl,sgtl5000";
+               #sound-dai-cells = <0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_hummingboard2_sgtl5000>;
+               reg = <0x0a>;
+               VDDA-supply = <&v_3v2>;
+               VDDD-supply = <&vcc_1p8>;
+               VDDIO-supply = <&v_3v2>;
+       };
+};
+
+&i2c2 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hummingboard2_i2c2>;
+       status = "okay";
+};
+
+&i2c3 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hummingboard2_i2c3>;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hog>;
+
+       hummingboard2 {
+               pinctrl_hog: hoggrp {
+               fsl,pins = <
+                               /*
+                                * 36 pin headers GPIO description. The pins
+                                * numbering as following -
+                                *
+                                *      3.2v    5v      74      75
+                                *      73      72      71      70
+                                *      69      68      67      66
+                                *
+                                *      77      78      79      76
+                                *      65      64      61      60
+                                *      53      52      51      50
+                                *      49      48      166     132
+                                *      95      94      90      91
+                                *      GND     54      24      204
+                                *
+                                * The GPIO numbers can be extracted using
+                                * signal name from below.
+                                * Example -
+                                * MX6QDL_PAD_EIM_DA10__GPIO3_IO10 is
+                                * GPIO(3,10) which is (3-1)*32+10 = gpio 74
+                                *
+                                * i.e. The mapping of GPIO(X,Y) to Linux gpio
+                                * number is : gpio number = (X-1) * 32 + Y
+                                */
+                               /* DI1_PIN15 */
+                               MX6QDL_PAD_EIM_DA10__GPIO3_IO10 0x400130b1
+                               /* DI1_PIN02 */
+                               MX6QDL_PAD_EIM_DA11__GPIO3_IO11 0x400130b1
+                               /* DISP1_DATA00 */
+                               MX6QDL_PAD_EIM_DA9__GPIO3_IO09 0x400130b1
+                               /* DISP1_DATA01 */
+                               MX6QDL_PAD_EIM_DA8__GPIO3_IO08 0x400130b1
+                               /* DISP1_DATA02 */
+                               MX6QDL_PAD_EIM_DA7__GPIO3_IO07 0x400130b1
+                               /* DISP1_DATA03 */
+                               MX6QDL_PAD_EIM_DA6__GPIO3_IO06 0x400130b1
+                               /* DISP1_DATA04 */
+                               MX6QDL_PAD_EIM_DA5__GPIO3_IO05 0x400130b1
+                               /* DISP1_DATA05 */
+                               MX6QDL_PAD_EIM_DA4__GPIO3_IO04 0x400130b1
+                               /* DISP1_DATA06 */
+                               MX6QDL_PAD_EIM_DA3__GPIO3_IO03 0x400130b1
+                               /* DISP1_DATA07 */
+                               MX6QDL_PAD_EIM_DA2__GPIO3_IO02 0x400130b1
+                               /* DI1_D0_CS */
+                               MX6QDL_PAD_EIM_DA13__GPIO3_IO13 0x400130b1
+                               /* DI1_D1_CS */
+                               MX6QDL_PAD_EIM_DA14__GPIO3_IO14 0x400130b1
+                               /* DI1_PIN01 */
+                               MX6QDL_PAD_EIM_DA15__GPIO3_IO15 0x400130b1
+                               /* DI1_PIN03 */
+                               MX6QDL_PAD_EIM_DA12__GPIO3_IO12 0x400130b1
+                               /* DISP1_DATA08 */
+                               MX6QDL_PAD_EIM_DA1__GPIO3_IO01 0x400130b1
+                               /* DISP1_DATA09 */
+                               MX6QDL_PAD_EIM_DA0__GPIO3_IO00 0x400130b1
+                               /* DISP1_DATA10 */
+                               MX6QDL_PAD_EIM_EB1__GPIO2_IO29 0x400130b1
+                               /* DISP1_DATA11 */
+                               MX6QDL_PAD_EIM_EB0__GPIO2_IO28 0x400130b1
+                               /* DISP1_DATA12 */
+                               MX6QDL_PAD_EIM_A17__GPIO2_IO21 0x400130b1
+                               /* DISP1_DATA13 */
+                               MX6QDL_PAD_EIM_A18__GPIO2_IO20 0x400130b1
+                               /* DISP1_DATA14 */
+                               MX6QDL_PAD_EIM_A19__GPIO2_IO19 0x400130b1
+                               /* DISP1_DATA15 */
+                               MX6QDL_PAD_EIM_A20__GPIO2_IO18 0x400130b1
+                               /* DISP1_DATA16 */
+                               MX6QDL_PAD_EIM_A21__GPIO2_IO17 0x400130b1
+                               /* DISP1_DATA17 */
+                               MX6QDL_PAD_EIM_A22__GPIO2_IO16 0x400130b1
+                               /* DISP1_DATA18 */
+                               MX6QDL_PAD_EIM_A23__GPIO6_IO06 0x400130b1
+                               /* DISP1_DATA19 */
+                               MX6QDL_PAD_EIM_A24__GPIO5_IO04 0x400130b1
+                               /* DISP1_DATA20 */
+                               MX6QDL_PAD_EIM_D31__GPIO3_IO31 0x400130b1
+                               /* DISP1_DATA21 */
+                               MX6QDL_PAD_EIM_D30__GPIO3_IO30 0x400130b1
+                               /* DISP1_DATA22 */
+                               MX6QDL_PAD_EIM_D26__GPIO3_IO26 0x400130b1
+                               /* DISP1_DATA23 */
+                               MX6QDL_PAD_EIM_D27__GPIO3_IO27 0x400130b1
+                               /* DI1_DISP_CLK */
+                               MX6QDL_PAD_EIM_A16__GPIO2_IO22 0x400130b1
+                               /* SPDIF_IN */
+                               MX6QDL_PAD_ENET_RX_ER__GPIO1_IO24 0x400130b1
+                               /* SPDIF_OUT */
+                               MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x400130b1
+
+                               /* MikroBUS GPIO pin number 10 */
+                               MX6QDL_PAD_EIM_LBA__GPIO2_IO27 0x400130b1
+                       >;
+               };
+
+               pinctrl_hummingboard2_ecspi2: hummingboard2-ecspi2grp {
+                       fsl,pins = <
+                               MX6QDL_PAD_EIM_OE__ECSPI2_MISO  0x100b1
+                               MX6QDL_PAD_EIM_CS1__ECSPI2_MOSI 0x100b1
+                               MX6QDL_PAD_EIM_CS0__ECSPI2_SCLK 0x100b1
+                               MX6QDL_PAD_EIM_RW__GPIO2_IO26   0x000b1 /* CS */
+                       >;
+               };
+
+               pinctrl_hummingboard2_gpio7_9: hummingboard2-gpio7_9 {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD4_CMD__GPIO7_IO09 0x80000000
+                       >;
+               };
+
+               pinctrl_hummingboard2_hdmi: hummingboard2-hdmi {
+                       fsl,pins = <
+                               MX6QDL_PAD_KEY_ROW2__HDMI_TX_CEC_LINE 0x1f8b0
+                       >;
+               };
+
+               pinctrl_hummingboard2_i2c1: hummingboard2-i2c1 {
+                       fsl,pins = <
+                               MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
+                               MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
+                       >;
+               };
+
+               pinctrl_hummingboard2_i2c2: hummingboard2-i2c2 {
+                       fsl,pins = <
+                               MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
+                               MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
+                       >;
+               };
+
+               pinctrl_hummingboard2_i2c3: hummingboard2-i2c3 {
+                       fsl,pins = <
+                               MX6QDL_PAD_EIM_D17__I2C3_SCL 0x4001b8b1
+                               MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
+                       >;
+               };
+
+               pinctrl_hummingboard2_mipi: hummingboard2_mipi {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD4_DAT2__GPIO2_IO10 0x4001b8b1
+                               MX6QDL_PAD_KEY_COL4__GPIO4_IO14 0x4001b8b1
+                               MX6QDL_PAD_NANDF_CS2__CCM_CLKO2 0x130b0
+                       >;
+               };
+
+               pinctrl_hummingboard2_pcie_reset: hummingboard2-pcie-reset {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD4_DAT3__GPIO2_IO11 0x1b0b1
+                       >;
+               };
+
+               pinctrl_hummingboard2_pwm1: pwm1grp {
+                       fsl,pins = <
+                               MX6QDL_PAD_DISP0_DAT8__PWM1_OUT 0x1b0b1
+                       >;
+               };
+
+               pinctrl_hummingboard2_pwm3: pwm3grp {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD4_DAT1__PWM3_OUT 0x1b0b1
+                       >;
+               };
+
+               pinctrl_hummingboard2_sgtl5000: hummingboard2-sgtl5000 {
+                       fsl,pins = <
+                               MX6QDL_PAD_DISP0_DAT19__AUD5_RXD 0x130b0
+                               MX6QDL_PAD_KEY_COL0__AUD5_TXC 0x130b0
+                               MX6QDL_PAD_KEY_ROW0__AUD5_TXD 0x110b0
+                               MX6QDL_PAD_KEY_COL1__AUD5_TXFS 0x130b0
+                               MX6QDL_PAD_GPIO_5__CCM_CLKO1 0x130b0
+                       >;
+               };
+
+               pinctrl_hummingboard2_usbh1_vbus: hummingboard2-usbh1-vbus {
+                       fsl,pins = <MX6QDL_PAD_GPIO_0__GPIO1_IO00 0x1b0b0>;
+               };
+
+               pinctrl_hummingboard2_usbh2_vbus: hummingboard2-usbh2-vbus {
+                       fsl,pins = <MX6QDL_PAD_SD4_DAT5__GPIO2_IO13 0x1b0b0>;
+               };
+
+               pinctrl_hummingboard2_usbh3_vbus: hummingboard2-usbh3-vbus {
+                       fsl,pins = <MX6QDL_PAD_SD4_CLK__GPIO7_IO10 0x1b0b0>;
+               };
+
+               pinctrl_hummingboard2_usbotg_id: hummingboard2-usbotg-id {
+                       /*
+                        * We want it pulled down for a fixed host connection.
+                        */
+                       fsl,pins = <MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x13059>;
+               };
+
+               pinctrl_hummingboard2_usbotg_vbus: hummingboard2-usbotg-vbus {
+                       fsl,pins = <MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x1b0b0>;
+               };
+
+               pinctrl_hummingboard2_usdhc2_aux: hummingboard2-usdhc2-aux {
+                       fsl,pins = <
+                               MX6QDL_PAD_GPIO_4__GPIO1_IO04    0x1f071
+                               MX6QDL_PAD_KEY_ROW1__SD2_VSELECT 0x1b071
+                       >;
+               };
+
+               pinctrl_hummingboard2_usdhc2: hummingboard2-usdhc2 {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD2_CMD__SD2_CMD    0x17059
+                               MX6QDL_PAD_SD2_CLK__SD2_CLK    0x10059
+                               MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x17059
+                               MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x17059
+                               MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x17059
+                               MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x13059
+                       >;
+               };
+
+               pinctrl_hummingboard2_usdhc2_100mhz: hummingboard2-usdhc2-100mhz {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD2_CMD__SD2_CMD    0x170b9
+                               MX6QDL_PAD_SD2_CLK__SD2_CLK    0x100b9
+                               MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x170b9
+                               MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x170b9
+                               MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x170b9
+                               MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x130b9
+                       >;
+               };
+
+               pinctrl_hummingboard2_usdhc2_200mhz: hummingboard2-usdhc2-200mhz {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD2_CMD__SD2_CMD    0x170f9
+                               MX6QDL_PAD_SD2_CLK__SD2_CLK    0x100f9
+                               MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x170f9
+                               MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x170f9
+                               MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x170f9
+                               MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x130f9
+                       >;
+               };
+
+               pinctrl_hummingboard2_vmmc: hummingboard2-vmmc {
+                       fsl,pins = <
+                               MX6QDL_PAD_DISP0_DAT9__GPIO4_IO30 0x1b0b0
+                       >;
+               };
+
+               pinctrl_hummingboard2_uart3: hummingboard2-uart3 {
+                       fsl,pins = <
+                               MX6QDL_PAD_EIM_D25__UART3_TX_DATA       0x1b0b1
+                               MX6QDL_PAD_EIM_D24__UART3_RX_DATA       0x40013000
+                       >;
+               };
+       };
+};
+
+&pcie {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hummingboard2_pcie_reset>;
+       reset-gpio = <&gpio2 11 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&pwm1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hummingboard2_pwm1>;
+       status = "okay";
+};
+
+&pwm3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hummingboard2_pwm3>;
+       status = "okay";
+};
+
+&ssi1 {
+       status = "okay";
+};
+
+&usbh1 {
+       disable-over-current;
+       status = "okay";
+};
+
+&usbotg {
+       disable-over-current;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hummingboard2_usbotg_id>;
+       vbus-supply = <&v_usb1>;
+       status = "okay";
+};
+
+&usdhc2 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <
+               &pinctrl_hummingboard2_usdhc2_aux
+               &pinctrl_hummingboard2_usdhc2
+       >;
+       pinctrl-1 = <
+               &pinctrl_hummingboard2_usdhc2_aux
+               &pinctrl_hummingboard2_usdhc2_100mhz
+       >;
+       pinctrl-2 = <
+               &pinctrl_hummingboard2_usdhc2_aux
+               &pinctrl_hummingboard2_usdhc2_200mhz
+       >;
+       vmmc-supply = <&v_sd>;
+       cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hummingboard2_uart3>;
+       status = "okay";
+};
+
+&vcc_3v3 {
+       vin-supply = <&v_3v2>;
+};
diff --git a/arch/arm/dts/imx6qdl-icore-1.5.dtsi b/arch/arm/dts/imx6qdl-icore-1.5.dtsi
new file mode 100644 (file)
index 0000000..0fd7f2e
--- /dev/null
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2018 Jacopo Mondi <jacopo@jmondi.org>
+ */
+
+#include "imx6qdl-icore.dtsi"
+
+&iomuxc {
+       pinctrl_enet: enetgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_ENET_CRS_DV__ENET_RX_EN      0x1b0b0
+                       MX6QDL_PAD_GPIO_16__ENET_REF_CLK        0x4001b0b0
+                       MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN       0x1b0b0
+                       MX6QDL_PAD_ENET_RXD1__ENET_RX_DATA1     0x1b0b0
+                       MX6QDL_PAD_ENET_RXD0__ENET_RX_DATA0     0x1b0b0
+                       MX6QDL_PAD_ENET_TXD1__ENET_TX_DATA1     0x1b0b0
+                       MX6QDL_PAD_ENET_TXD0__ENET_TX_DATA0     0x1b0b0
+                       MX6QDL_PAD_ENET_MDC__ENET_MDC           0x1b0b0
+                       MX6QDL_PAD_ENET_MDIO__ENET_MDIO         0x1b0b0
+                       MX6QDL_PAD_GPIO_17__GPIO7_IO12          0x1b0b0
+               >;
+       };
+};
+
+&fec {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet>;
+       clocks = <&clks IMX6QDL_CLK_ENET>,
+                <&clks IMX6QDL_CLK_ENET>,
+                <&clks IMX6QDL_CLK_ENET_REF>;
+       status = "okay";
+};
index d797a034f760bd13e9ed4c38bb56c2e82804d213..a4217f564a5347a568830e2032dd3fac2ae1c80f 100644 (file)
+// SPDX-License-Identifier: GPL-2.0 OR X11
 /*
  * Copyright (C) 2015 Amarula Solutions B.V.
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file 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.
- *
- * Or, alternatively
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
+ * Copyright (C) 2015 Engicam S.r.l.
  */
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/clock/imx6qdl-clock.h>
+#include <dt-bindings/sound/fsl-imx-audmux.h>
 
 / {
-       aliases {
-               mmc1 = &usdhc3;
-               mmc2 = &usdhc4;
+       memory@10000000 {
+               device_type = "memory";
+               reg = <0x10000000 0x80000000>;
        };
 
-       memory {
-               reg = <0x10000000 0x80000000>;
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "1P8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_2p5v: regulator-2p5v {
+               compatible = "regulator-fixed";
+               regulator-name = "2P5V";
+               regulator-min-microvolt = <2500000>;
+               regulator-max-microvolt = <2500000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "3P3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_sd3_vmmc: regulator-sd3-vmmc {
+               compatible = "regulator-fixed";
+               regulator-name = "P3V3_SD3_SWITCHED";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;
+               enable-active-high;
+       };
+
+       reg_sd4_vmmc: regulator-sd4-vmmc {
+               compatible = "regulator-fixed";
+               regulator-name = "P3V3_SD4_SWITCHED";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_usb_h1_vbus: regulator-usb-h1-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_h1_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_usb_otg_vbus: regulator-usb-otg-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_otg_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       usb_hub: usb-hub {
+               compatible = "smsc,usb3503a";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usbhub>;
+               reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+               clocks = <&clks IMX6QDL_CLK_LVDS2_GATE>;
+               clock-names = "refclk";
+       };
+
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "imx6qdl-icore-rqs-sgtl5000";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&dailink_master>;
+               simple-audio-card,frame-master = <&dailink_master>;
+               simple-audio-card,widgets =
+                       "Microphone", "Mic Jack",
+                       "Headphone", "Headphone Jack",
+                       "Line", "Line In Jack",
+                       "Speaker", "Line Out Jack",
+                       "Speaker", "Ext Spk";
+               simple-audio-card,routing =
+                       "MIC_IN", "Mic Jack",
+                       "Mic Jack", "Mic Bias",
+                       "Headphone Jack", "HP_OUT";
+
+               simple-audio-card,cpu {
+                       sound-dai = <&ssi1>;
+               };
+
+               dailink_master: simple-audio-card,codec {
+                       sound-dai = <&sgtl5000>;
+               };
+       };
+};
+
+&audmux {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_audmux>;
+       status = "okay";
+
+       audmux_ssi1 {
+               fsl,audmux-port = <MX51_AUDMUX_PORT1_SSI0>;
+               fsl,port-config = <
+                       (IMX_AUDMUX_V2_PTCR_TFSDIR |
+                       IMX_AUDMUX_V2_PTCR_TFSEL(MX51_AUDMUX_PORT4) |
+                       IMX_AUDMUX_V2_PTCR_TCLKDIR |
+                       IMX_AUDMUX_V2_PTCR_TCSEL(MX51_AUDMUX_PORT4) |
+                       IMX_AUDMUX_V2_PTCR_SYN)
+                       IMX_AUDMUX_V2_PDCR_RXDSEL(MX51_AUDMUX_PORT4)
+               >;
        };
+
+       audmux_aud4 {
+               fsl,audmux-port = <MX51_AUDMUX_PORT4>;
+               fsl,port-config = <
+                       IMX_AUDMUX_V2_PTCR_SYN
+                       IMX_AUDMUX_V2_PDCR_RXDSEL(MX51_AUDMUX_PORT1_SSI0)
+               >;
+       };
+};
+
+&can1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can1>;
+       xceiver-supply = <&reg_3p3v>;
+       status = "okay";
+};
+
+&can2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can2>;
+       xceiver-supply = <&reg_3p3v>;
+       status = "okay";
+};
+
+&clks {
+       assigned-clocks = <&clks IMX6QDL_CLK_LVDS2_SEL>;
+       assigned-clock-parents = <&clks IMX6QDL_CLK_OSC>;
 };
 
 &fec {
        status = "okay";
 
        mdio {
-               eth_phy: ethernet-phy {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               eth_phy: ethernet-phy@0 {
+                       reg = <0x0>;
                        rxc-skew-ps = <1140>;
                        txc-skew-ps = <1140>;
                        txen-skew-ps = <600>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_i2c3>;
        status = "okay";
+
+       sgtl5000: codec@a {
+               #sound-dai-cells = <0>;
+               compatible = "fsl,sgtl5000";
+               reg = <0x0a>;
+               clocks = <&clks IMX6QDL_CLK_CKO>;
+               VDDA-supply = <&reg_2p5v>;
+               VDDIO-supply = <&reg_3p3v>;
+               VDDD-supply = <&reg_1p8v>;
+       };
+};
+
+&pcie {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcie>;
+       reset-gpio = <&gpio3 29 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&ssi1 {
+       fsl,mode = "i2s-slave";
+       status = "okay";
 };
 
 &uart4 {
        status = "okay";
 };
 
-&usdhc3 {
+&usbh1 {
+       vbus-supply = <&reg_usb_h1_vbus>;
+       disable-over-current;
+       clocks = <&clks IMX6QDL_CLK_USBOH3>;
+       status = "okay";
+};
+
+&usbotg {
+       vbus-supply = <&reg_usb_otg_vbus>;
        pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbotg>;
+       disable-over-current;
+       status = "okay";
+};
+
+&usdhc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       no-1-8-v;
+       status = "okay";
+};
+
+&usdhc3 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc3>;
+       pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       vmcc-supply = <&reg_sd3_vmmc>;
        cd-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
+       bus-width = <4>;
        no-1-8-v;
        status = "okay";
 };
        pinctrl-0 = <&pinctrl_usdhc4>;
        pinctrl-1 = <&pinctrl_usdhc4_100mhz>;
        pinctrl-2 = <&pinctrl_usdhc4_200mhz>;
-       bus-witdh = <8>;
+       vmcc-supply = <&reg_sd4_vmmc>;
+       bus-width = <8>;
        no-1-8-v;
        non-removable;
        status = "okay";
 };
 
 &iomuxc {
+       pinctrl_audmux: audmuxgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0
+                       MX6QDL_PAD_DISP0_DAT21__AUD4_TXD  0x110b0
+                       MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
+                       MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0
+               >;
+       };
+
        pinctrl_enet: enetgrp {
                fsl,pins = <
                        MX6QDL_PAD_ENET_MDIO__ENET_MDIO       0x1b0b0
                >;
        };
 
+       pinctrl_can1: can1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_ROW2__FLEXCAN1_RX 0x1b020
+                       MX6QDL_PAD_KEY_COL2__FLEXCAN1_TX 0x1b020
+               >;
+       };
+
+       pinctrl_can2: can2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL4__FLEXCAN2_TX 0x1b020
+                       MX6QDL_PAD_KEY_ROW4__FLEXCAN2_RX 0x1b020
+               >;
+       };
+
        pinctrl_i2c1: i2c1grp {
                fsl,pins = <
                        MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
                fsl,pins = <
                        MX6QDL_PAD_GPIO_5__I2C3_SCL  0x4001b8b1
                        MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
+                       MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x130b0
+               >;
+       };
+
+       pinctrl_pcie: pciegrp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x1f059  /* PCIe Reset */
                >;
        };
 
                >;
        };
 
+       pinctrl_usbhub: usbhubgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_6__GPIO1_IO06  0x1f059  /* HUB USB Reset */
+               >;
+       };
+
+       pinctrl_usbotg: usbotggrp {
+               fsl,pins = <
+                       MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17071
+                       MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10071
+                       MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071
+                       MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071
+                       MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071
+                       MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071
+               >;
+       };
+
        pinctrl_usdhc3: usdhc3grp {
                fsl,pins = <
                        MX6QDL_PAD_SD3_CMD__SD3_CMD    0x17070
                        MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17070
                        MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17070
                        MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17070
+                       MX6QDL_PAD_GPIO_1__GPIO1_IO01  0x1f059  /* CD */
+                       MX6QDL_PAD_GPIO_4__GPIO1_IO04  0x1f059  /* PWR */
+               >;
+       };
+
+       pinctrl_usdhc3_100mhz: usdhc3grp_100mhz {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170B1
+                       MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100B1
+                       MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170B1
+                       MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170B1
+                       MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170B1
+                       MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170B1
+               >;
+       };
+
+       pinctrl_usdhc3_200mhz: usdhc3grp_200mhz {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_CMD__SD3_CMD    0x170F9
+                       MX6QDL_PAD_SD3_CLK__SD3_CLK    0x100F9
+                       MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170F9
+                       MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170F9
+                       MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170F9
+                       MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170F9
                >;
        };
 
                        MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x170F9
                >;
        };
-
 };
index 5eccda800dab78dca980c9a182c8c8b241356c34..7814f1ef08043e67b2ad89dcf479365396e06ea3 100644 (file)
@@ -1,55 +1,46 @@
+// SPDX-License-Identifier: GPL-2.0 OR X11
 /*
  * Copyright (C) 2016 Amarula Solutions B.V.
  * Copyright (C) 2016 Engicam S.r.l.
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License
- *     version 2 as published by the Free Software Foundation.
- *
- *     This file 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.
- *
- * Or, alternatively
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
  */
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
+#include <dt-bindings/sound/fsl-imx-audmux.h>
 
 / {
-       aliases {
-               mmc1 = &usdhc3;
+       memory@10000000 {
+               device_type = "memory";
+               reg = <0x10000000 0x80000000>;
        };
 
-       memory {
-               reg = <0x10000000 0x80000000>;
+       chosen {
+               stdout-path = &uart4;
+       };
+
+       backlight_lvds: backlight-lvds {
+               compatible = "pwm-backlight";
+               pwms = <&pwm3 0 100000>;
+               brightness-levels = <0 4 8 16 32 64 128 255>;
+               default-brightness-level = <7>;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "1P8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_2p5v: regulator-2p5v {
+               compatible = "regulator-fixed";
+               regulator-name = "2P5V";
+               regulator-min-microvolt = <2500000>;
+               regulator-max-microvolt = <2500000>;
+               regulator-boot-on;
+               regulator-always-on;
        };
 
        reg_3p3v: regulator-3p3v {
                regulator-boot-on;
                regulator-always-on;
        };
+
+       reg_usb_h1_vbus: regulator-usb-h1-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_h1_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_usb_otg_vbus: regulator-usb-otg-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_otg_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       rmii_clk: clock-rmii-clk {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <25000000>;  /* 25MHz for example */
+       };
+
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "imx6qdl-icore-sgtl5000";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&dailink_master>;
+               simple-audio-card,frame-master = <&dailink_master>;
+               simple-audio-card,widgets =
+                       "Microphone", "Mic Jack",
+                       "Headphone", "Headphone Jack",
+                       "Line", "Line In Jack",
+                       "Speaker", "Line Out Jack",
+                       "Speaker", "Ext Spk";
+               simple-audio-card,routing =
+                       "MIC_IN", "Mic Jack",
+                       "Mic Jack", "Mic Bias",
+                       "Headphone Jack", "HP_OUT";
+
+               simple-audio-card,cpu {
+                       sound-dai = <&ssi1>;
+               };
+
+               dailink_master: simple-audio-card,codec {
+                       sound-dai = <&sgtl5000>;
+               };
+       };
+};
+
+&audmux {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_audmux>;
+       status = "okay";
+
+
+       audmux_ssi1 {
+               fsl,audmux-port = <MX51_AUDMUX_PORT1_SSI0>;
+               fsl,port-config = <
+                       (IMX_AUDMUX_V2_PTCR_TFSDIR |
+                       IMX_AUDMUX_V2_PTCR_TFSEL(MX51_AUDMUX_PORT4) |
+                       IMX_AUDMUX_V2_PTCR_TCLKDIR |
+                       IMX_AUDMUX_V2_PTCR_TCSEL(MX51_AUDMUX_PORT4) |
+                       IMX_AUDMUX_V2_PTCR_SYN)
+                       IMX_AUDMUX_V2_PDCR_RXDSEL(MX51_AUDMUX_PORT4)
+               >;
+       };
+
+       audmux_aud4 {
+               fsl,audmux-port = <MX51_AUDMUX_PORT4>;
+               fsl,port-config = <
+                       IMX_AUDMUX_V2_PTCR_SYN
+                       IMX_AUDMUX_V2_PDCR_RXDSEL(MX51_AUDMUX_PORT1_SSI0)
+               >;
+       };
 };
 
 &can1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_enet>;
        phy-reset-gpios = <&gpio7 12 GPIO_ACTIVE_LOW>;
+       clocks = <&clks IMX6QDL_CLK_ENET>, <&clks IMX6QDL_CLK_ENET>, <&rmii_clk>;
        phy-mode = "rmii";
        status = "okay";
 };
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_i2c3>;
        status = "okay";
+
+       ov5640: camera@3c {
+               compatible = "ovti,ov5640";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_ov5640>;
+               reg = <0x3c>;
+               clocks = <&clks IMX6QDL_CLK_CKO>;
+               clock-names = "xclk";
+               DOVDD-supply = <&reg_1p8v>;
+               AVDD-supply = <&reg_3p3v>;
+               DVDD-supply = <&reg_3p3v>;
+               powerdown-gpios = <&gpio5 30 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&gpio5 31 GPIO_ACTIVE_LOW>;
+               status = "disabled";
+
+               port {
+                       ov5640_to_mipi_csi2: endpoint {
+                               remote-endpoint = <&mipi_csi2_in>;
+                               clock-lanes = <0>;
+                               data-lanes = <1 2>;
+                       };
+               };
+       };
+
+       sgtl5000: codec@a {
+               #sound-dai-cells = <0>;
+               compatible = "fsl,sgtl5000";
+               reg = <0x0a>;
+               clocks = <&clks IMX6QDL_CLK_CKO>;
+               VDDA-supply = <&reg_2p5v>;
+               VDDIO-supply = <&reg_3p3v>;
+               VDDD-supply = <&reg_1p8v>;
+       };
+};
+
+&mipi_csi {
+       status = "disabled";
+
+       port@0 {
+               reg = <0>;
+
+               mipi_csi2_in: endpoint {
+                       remote-endpoint = <&ov5640_to_mipi_csi2>;
+                       clock-lanes = <0>;
+                       data-lanes = <1 2>;
+               };
+       };
+};
+
+&pwm3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm3>;
+       status = "okay";
+};
+
+&ssi1 {
+       fsl,mode = "i2s-slave";
+       status = "okay";
 };
 
 &uart4 {
        status = "okay";
 };
 
+&usbh1 {
+       vbus-supply = <&reg_usb_h1_vbus>;
+       disable-over-current;
+       status = "okay";
+};
+
+&usbotg {
+       vbus-supply = <&reg_usb_otg_vbus>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbotg>;
+       disable-over-current;
+       status = "okay";
+};
+
 &usdhc1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_usdhc1>;
 };
 
 &iomuxc {
+       pinctrl_audmux: audmuxgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0
+                       MX6QDL_PAD_DISP0_DAT21__AUD4_TXD  0x110b0
+                       MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
+                       MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0
+               >;
+       };
+
        pinctrl_enet: enetgrp {
                fsl,pins = <
                        MX6QDL_PAD_ENET_CRS_DV__ENET_RX_EN      0x1b0b0
                >;
        };
 
-       pinctrl_gpmi_nand: gpmi-nand {
+       pinctrl_gpmi_nand: gpminandgrp {
                fsl,pins = <
                        MX6QDL_PAD_NANDF_CLE__NAND_CLE     0xb0b1
                        MX6QDL_PAD_NANDF_ALE__NAND_ALE     0xb0b1
                fsl,pins = <
                        MX6QDL_PAD_GPIO_5__I2C3_SCL  0x4001b8b1
                        MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
-                       MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x130b0
+               >;
+       };
+
+       pinctrl_ov5640: ov5640grp {
+               fsl,pins = <
+                       MX6QDL_PAD_CSI0_DAT12__GPIO5_IO30 0x1b0b0
+                       MX6QDL_PAD_CSI0_DAT13__GPIO5_IO31 0x1b0b0
+                       MX6QDL_PAD_GPIO_0__CCM_CLKO1      0x130b0
                >;
        };
 
                >;
        };
 
+       pinctrl_pwm3: pwm3grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD4_DAT1__PWM3_OUT 0x1b0b1
+               >;
+       };
+
+       pinctrl_usbotg: usbotggrp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x17059
+               >;
+       };
+
        pinctrl_usdhc1: usdhc1grp {
                fsl,pins = <
                        MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17070
diff --git a/arch/arm/dts/imx6qdl-sr-som-brcm.dtsi b/arch/arm/dts/imx6qdl-sr-som-brcm.dtsi
new file mode 100644 (file)
index 0000000..b55af61
--- /dev/null
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2013,2014 Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+#include <dt-bindings/gpio/gpio.h>
+/ {
+       clk_brcm: brcm-clock {
+               compatible = "gpio-gate-clock";
+               #clock-cells = <0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_microsom_brcm_osc>;
+               enable-gpios = <&gpio5 5 GPIO_ACTIVE_HIGH>;
+       };
+
+       reg_brcm: brcm-reg {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio3 19 0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_microsom_brcm_reg>;
+               regulator-name = "brcm_reg";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               startup-delay-us = <200000>;
+       };
+
+       usdhc1_pwrseq: usdhc1_pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&gpio5 26 GPIO_ACTIVE_LOW>,
+                             <&gpio6 0 GPIO_ACTIVE_LOW>;
+               clocks = <&clk_brcm>;
+               clock-names = "ext_clock";
+       };
+};
+
+&iomuxc {
+       microsom {
+               pinctrl_microsom_brcm_bt: microsom-brcm-bt {
+                       fsl,pins = <
+                               MX6QDL_PAD_CSI0_DAT14__GPIO6_IO00       0x40013070
+                               MX6QDL_PAD_CSI0_DAT15__GPIO6_IO01       0x40013070
+                               MX6QDL_PAD_CSI0_DAT18__GPIO6_IO04       0x40013070
+                       >;
+               };
+
+               pinctrl_microsom_brcm_osc: microsom-brcm-osc {
+                       fsl,pins = <
+                               MX6QDL_PAD_DISP0_DAT11__GPIO5_IO05      0x40013070
+                       >;
+               };
+
+               pinctrl_microsom_brcm_reg: microsom-brcm-reg {
+                       fsl,pins = <
+                               MX6QDL_PAD_EIM_D19__GPIO3_IO19          0x40013070
+                       >;
+               };
+
+               pinctrl_microsom_brcm_wifi: microsom-brcm-wifi {
+                       fsl,pins = <
+                               MX6QDL_PAD_GPIO_8__XTALOSC_REF_CLK_32K  0x1b0b0
+                               MX6QDL_PAD_CSI0_DATA_EN__GPIO5_IO20     0x40013070
+                               MX6QDL_PAD_CSI0_DAT8__GPIO5_IO26        0x40013070
+                               MX6QDL_PAD_CSI0_DAT9__GPIO5_IO27        0x40013070
+                       >;
+               };
+
+               pinctrl_microsom_uart4: microsom-uart4 {
+                       fsl,pins = <
+                               MX6QDL_PAD_CSI0_DAT12__UART4_TX_DATA 0x1b0b1
+                               MX6QDL_PAD_CSI0_DAT13__UART4_RX_DATA 0x1b0b1
+                               MX6QDL_PAD_CSI0_DAT16__UART4_RTS_B 0x1b0b1
+                               MX6QDL_PAD_CSI0_DAT17__UART4_CTS_B 0x1b0b1
+                       >;
+               };
+
+               pinctrl_microsom_usdhc1: microsom-usdhc1 {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17059
+                               MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10059
+                               MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17059
+                               MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17059
+                               MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17059
+                               MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17059
+                       >;
+               };
+       };
+};
+
+/* UART4 - Connected to optional BRCM Wifi/BT/FM */
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_microsom_brcm_bt &pinctrl_microsom_uart4>;
+       uart-has-rtscts;
+       status = "okay";
+};
+
+/* USDHC1 - Connected to optional BRCM Wifi/BT/FM */
+&usdhc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_microsom_brcm_wifi &pinctrl_microsom_usdhc1>;
+       bus-width = <4>;
+       mmc-pwrseq = <&usdhc1_pwrseq>;
+       keep-power-in-suspend;
+       no-1-8-v;
+       non-removable;
+       vmmc-supply = <&reg_brcm>;
+       status = "okay";
+};
diff --git a/arch/arm/dts/imx6qdl-sr-som-emmc.dtsi b/arch/arm/dts/imx6qdl-sr-som-emmc.dtsi
new file mode 100644 (file)
index 0000000..5f3b8ba
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2013,2014 Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+&iomuxc {
+       microsom {
+               pinctrl_microsom_usdhc3: microsom-usdhc3 {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD3_CMD__SD3_CMD    0x17059
+                               MX6QDL_PAD_SD3_CLK__SD3_CLK    0x10059
+                               MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059
+                               MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059
+                               MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059
+                               MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059
+                               MX6QDL_PAD_SD3_DAT4__SD3_DATA4 0x17059
+                               MX6QDL_PAD_SD3_DAT5__SD3_DATA5 0x17059
+                               MX6QDL_PAD_SD3_DAT6__SD3_DATA6 0x17059
+                               MX6QDL_PAD_SD3_DAT7__SD3_DATA7 0x17059
+                               MX6QDL_PAD_SD3_RST__SD3_RESET  0x17059
+                       >;
+               };
+       };
+};
+
+/* USDHC3 - eMMC */
+&usdhc3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_microsom_usdhc3>;
+       bus-width = <8>;
+       non-removable;
+       vmmc-supply = <&vcc_3v3>;
+       status = "okay";
+};
diff --git a/arch/arm/dts/imx6qdl-sr-som-ti.dtsi b/arch/arm/dts/imx6qdl-sr-som-ti.dtsi
new file mode 100644 (file)
index 0000000..44a97ba
--- /dev/null
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2013,2014 Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       nvcc_sd1: regulator-nvcc-sd1 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-name = "nvcc_sd1";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vcc_3v3>;
+       };
+
+       clk_ti_wifi: ti-wifi-clock {
+               /* This is a hack around the kernel - using "fixed clock"
+                * results in the "pinctrl" properties being ignored, and
+                * the clock not being output.  Instead, use a gated clock
+                * and the unrouted WL_XTAL_PU gpio.
+                */
+               compatible = "gpio-gate-clock";
+               #clock-cells = <0>;
+               clock-frequency = <32768>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_microsom_ti_clk>;
+               enable-gpios = <&gpio5 5 GPIO_ACTIVE_HIGH>;
+       };
+
+       pwrseq_ti_wifi: ti-wifi-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_microsom_ti_wifi_en>;
+               reset-gpios = <&gpio5 26 GPIO_ACTIVE_LOW>;
+               post-power-on-delay-ms = <200>;
+               clocks = <&clk_ti_wifi>;
+               clock-names = "ext_clock";
+       };
+};
+
+&iomuxc {
+       microsom {
+               pinctrl_microsom_ti_bt: microsom-ti-bt {
+                       fsl,pins = <
+                               /* BT_EN_SOC */
+                               MX6QDL_PAD_CSI0_DAT14__GPIO6_IO00       0x40013070
+                       >;
+               };
+
+               pinctrl_microsom_ti_clk: microsom-ti-clk {
+                       fsl,pins = <
+                               /* EXT_32K */
+                               MX6QDL_PAD_GPIO_8__XTALOSC_REF_CLK_32K  0x1b0b0
+                               /* WL_XTAL_PU (unrouted) */
+                               MX6QDL_PAD_DISP0_DAT11__GPIO5_IO05 0x40013070
+                       >;
+               };
+
+               pinctrl_microsom_ti_wifi_en: microsom-ti-wifi-en {
+                       fsl,pins = <
+                               /* WLAN_EN_SOC */
+                               MX6QDL_PAD_CSI0_DAT8__GPIO5_IO26        0x40013070
+                       >;
+               };
+
+               pinctrl_microsom_ti_wifi_irq: microsom-ti-wifi-irq {
+                       fsl,pins = <
+                               /* WLAN_IRQ */
+                               MX6QDL_PAD_CSI0_DAT18__GPIO6_IO04       0x40013070
+                       >;
+               };
+
+               pinctrl_microsom_uart4: microsom-uart4 {
+                       fsl,pins = <
+                               MX6QDL_PAD_CSI0_DAT12__UART4_TX_DATA 0x1b0b1
+                               MX6QDL_PAD_CSI0_DAT13__UART4_RX_DATA 0x1b0b1
+                               MX6QDL_PAD_CSI0_DAT16__UART4_RTS_B 0x1b0b1
+                               MX6QDL_PAD_CSI0_DAT17__UART4_CTS_B 0x1b0b1
+                       >;
+               };
+
+               pinctrl_microsom_usdhc1: microsom-usdhc1 {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17059
+                               MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10059
+                               MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17059
+                               MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17059
+                               MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17059
+                               MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17059
+                       >;
+               };
+       };
+};
+
+/* UART4 - Connected to optional TI Wi-Fi/BT/FM */
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_microsom_uart4>;
+       uart-has-rtscts;
+       status = "okay";
+
+       bluetooth {
+               compatible = "ti,wl1837-st";
+               clocks = <&clk_ti_wifi>;
+               clock-names = "ext_clock";
+               enable-gpios = <&gpio6 0 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_microsom_ti_bt>;
+       };
+};
+
+/* USDHC1 - Connected to optional TI Wi-Fi/BT/FM */
+&usdhc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_microsom_usdhc1>;
+       bus-width = <4>;
+       keep-power-in-suspend;
+       mmc-pwrseq = <&pwrseq_ti_wifi>;
+       non-removable;
+       vmmc-supply = <&vcc_3v3>;
+       /* vqmmc-supply = <&nvcc_sd1>; - MMC layer doesn't like it! */
+       status = "okay";
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       wlcore@2 {
+               compatible = "ti,wl1837";
+               reg = <2>;
+               interrupts-extended = <&gpio6 4 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_microsom_ti_wifi_irq>;
+       };
+};
diff --git a/arch/arm/dts/imx6qdl-sr-som.dtsi b/arch/arm/dts/imx6qdl-sr-som.dtsi
new file mode 100644 (file)
index 0000000..6d7f6b9
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2013,2014 Russell King
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     This file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       vcc_3v3: regulator-vcc-3v3 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-name = "vcc_3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+};
+
+&fec {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_microsom_enet_ar8035>;
+       phy-mode = "rgmii-id";
+       phy-reset-duration = <2>;
+       phy-reset-gpios = <&gpio4 15 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&iomuxc {
+       microsom {
+               pinctrl_microsom_enet_ar8035: microsom-enet-ar8035 {
+                       fsl,pins = <
+                               MX6QDL_PAD_ENET_MDIO__ENET_MDIO         0x1b8b0
+                               MX6QDL_PAD_ENET_MDC__ENET_MDC           0x1b0b0
+                               /* AR8035 reset */
+                               MX6QDL_PAD_KEY_ROW4__GPIO4_IO15         0x130b0
+                               /* AR8035 interrupt */
+                               MX6QDL_PAD_DI0_PIN2__GPIO4_IO18         0x1b0b0
+                               /* GPIO16 -> AR8035 25MHz */
+                               MX6QDL_PAD_GPIO_16__ENET_REF_CLK        0x4001b0b0
+                               MX6QDL_PAD_RGMII_TXC__RGMII_TXC         0x13030
+                               MX6QDL_PAD_RGMII_TD0__RGMII_TD0         0x1b030
+                               MX6QDL_PAD_RGMII_TD1__RGMII_TD1         0x1b030
+                               MX6QDL_PAD_RGMII_TD2__RGMII_TD2         0x1b030
+                               MX6QDL_PAD_RGMII_TD3__RGMII_TD3         0x1b030
+                               MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL   0x1b030
+                               /* AR8035 CLK_25M --> ENET_REF_CLK (V22) */
+                               MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK    0x0a0b1
+                               /* AR8035 pin strapping: IO voltage: pull up */
+                               MX6QDL_PAD_RGMII_RXC__RGMII_RXC         0x1b030
+                               /* AR8035 pin strapping: PHYADDR#0: pull down */
+                               MX6QDL_PAD_RGMII_RD0__RGMII_RD0         0x13030
+                               /* AR8035 pin strapping: PHYADDR#1: pull down */
+                               MX6QDL_PAD_RGMII_RD1__RGMII_RD1         0x13030
+                               /* AR8035 pin strapping: MODE#1: pull up */
+                               MX6QDL_PAD_RGMII_RD2__RGMII_RD2         0x1b030
+                               /* AR8035 pin strapping: MODE#3: pull up */
+                               MX6QDL_PAD_RGMII_RD3__RGMII_RD3         0x1b030
+                               /* AR8035 pin strapping: MODE#0: pull down */
+                               MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL   0x13030
+
+                               /*
+                                * As the RMII pins are also connected to RGMII
+                                * so that an AR8030 can be placed, set these
+                                * to high-z with the same pulls as above.
+                                * Use the GPIO settings to avoid changing the
+                                * input select registers.
+                                */
+                               MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25      0x03000
+                               MX6QDL_PAD_ENET_RXD0__GPIO1_IO27        0x03000
+                               MX6QDL_PAD_ENET_RXD1__GPIO1_IO26        0x03000
+                       >;
+               };
+
+               pinctrl_microsom_uart1: microsom-uart1 {
+                       fsl,pins = <
+                               MX6QDL_PAD_CSI0_DAT10__UART1_TX_DATA    0x1b0b1
+                               MX6QDL_PAD_CSI0_DAT11__UART1_RX_DATA    0x1b0b1
+                       >;
+               };
+       };
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_microsom_uart1>;
+       status = "okay";
+};
diff --git a/arch/arm/dts/imx6ul-phycore-segin.dts b/arch/arm/dts/imx6ul-phycore-segin.dts
deleted file mode 100644 (file)
index 7d68bf8..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Copyright (C) 2018 Collabora Ltd.
- *
- * Based on dts[i] from Phytec barebox port:
- * Copyright (C) 2016 PHYTEC Messtechnik GmbH
- * Author: Christian Hemp <c.hemp@phytec.de>
- *
- * The code contained herein is licensed under the GNU General Public
- * License. You may obtain a copy of the GNU General Public License
- * Version 2 or later at the following locations:
- *
- * http://www.opensource.org/licenses/gpl-license.html
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-/dts-v1/;
-
-#include "imx6ul.dtsi"
-#include "pcl063-common.dtsi"
-
-/ {
-       model = "Phytec phyBOARD-i.MX6UL-Segin SBC";
-       compatible = "phytec,phyboard-imx6ul-segin", "phytec,imx6ul-pcl063",
-                    "fsl,imx6ul";
-};
-
-&gpmi {
-       status = "okay";
-};
-
-&i2c1 {
-       i2c_rtc: rtc@68 {
-               compatible = "microcrystal,rv4162";
-               reg = <0x68>;
-               status = "okay";
-       };
-};
-
-&uart5 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart5>;
-       uart-has-rtscts;
-       status = "okay";
-};
-
-&usbotg1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_usb_otg1_id>;
-       dr_mode = "otg";
-       srp-disable;
-       hnp-disable;
-       adp-disable;
-       status = "okay";
-};
-
-&usbotg2 {
-       dr_mode = "host";
-       disable-over-current;
-       status = "okay";
-};
-
-&iomuxc {
-       pinctrl-names = "default";
-
-       pinctrl_uart5: uart5grp {
-               fsl,pins = <
-                       MX6UL_PAD_UART5_TX_DATA__UART5_DCE_TX   0x1b0b1
-                       MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX   0x1b0b1
-                       MX6UL_PAD_GPIO1_IO08__UART5_DCE_RTS     0x1b0b1
-                       MX6UL_PAD_GPIO1_IO09__UART5_DCE_CTS     0x1b0b1
-               >;
-       };
-
-       pinctrl_usb_otg1_id: usbotg1idgrp {
-               fsl,pins = <
-                       MX6UL_PAD_GPIO1_IO00__ANATOP_OTG1_ID    0x17059
-               >;
-       };
-
-};
diff --git a/arch/arm/dts/imx6ul-phytec-phycore-som.dtsi b/arch/arm/dts/imx6ul-phytec-phycore-som.dtsi
new file mode 100644 (file)
index 0000000..c2a7c78
--- /dev/null
@@ -0,0 +1,167 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2016 PHYTEC Messtechnik GmbH
+ * Author: Christian Hemp <c.hemp@phytec.de>
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pwm/pwm.h>
+
+/ {
+       model = "PHYTEC phyCORE-i.MX6 UltraLite";
+       compatible = "phytec,imx6ul-pcl063", "fsl,imx6ul";
+
+       chosen {
+               stdout-path = &uart1;
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x20000000>;
+       };
+
+       gpio_leds_som: leds {
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpioleds_som>;
+               compatible = "gpio-leds";
+
+               phycore-green {
+                       gpios = <&gpio5 4 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+};
+
+&fec1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet1>;
+       phy-mode = "rmii";
+       phy-handle = <&ethphy1>;
+       status = "disabled";
+
+       mdio: mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy1: ethernet-phy@1 {
+                       reg = <1>;
+                       interrupt-parent = <&gpio1>;
+                       interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
+                       micrel,led-mode = <1>;
+                       clocks = <&clks IMX6UL_CLK_ENET_REF>;
+                       clock-names = "rmii-ref";
+                       status = "disabled";
+               };
+       };
+};
+
+&gpmi {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpmi_nand>;
+       nand-on-flash-bbt;
+       status = "disabled";
+};
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       clock-frequency = <100000>;
+       status = "okay";
+
+       eeprom@52 {
+               compatible = "catalyst,24c32", "atmel,24c32";
+               reg = <0x52>;
+       };
+};
+
+&snvs_poweroff {
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>;
+       status = "okay";
+};
+
+&usdhc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       bus-width = <8>;
+       no-1-8-v;
+       non-removable;
+       status = "disabled";
+};
+
+&iomuxc {
+       pinctrl_enet1: enet1grp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO07__ENET1_MDC         0x10010
+                       MX6UL_PAD_GPIO1_IO06__ENET1_MDIO        0x10010
+                       MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN      0x1b0b0
+                       MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER      0x1b0b0
+                       MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00 0x1b0b0
+                       MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x1b0b0
+                       MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN      0x1b010
+                       MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x1b010
+                       MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b010
+                       MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1  0x4001b010
+                       MX6UL_PAD_GPIO1_IO02__GPIO1_IO02        0x17059
+               >;
+       };
+
+       pinctrl_gpioleds_som: gpioledssomgrp {
+               fsl,pins = <MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04  0x0b0b0>;
+       };
+
+       pinctrl_gpmi_nand: gpminandgrp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_CLE__RAWNAND_CLE         0x0b0b1
+                       MX6UL_PAD_NAND_ALE__RAWNAND_ALE         0x0b0b1
+                       MX6UL_PAD_NAND_WP_B__RAWNAND_WP_B       0x0b0b1
+                       MX6UL_PAD_NAND_READY_B__RAWNAND_READY_B 0x0b000
+                       MX6UL_PAD_NAND_CE0_B__RAWNAND_CE0_B     0x0b0b1
+                       MX6UL_PAD_NAND_RE_B__RAWNAND_RE_B       0x0b0b1
+                       MX6UL_PAD_NAND_WE_B__RAWNAND_WE_B       0x0b0b1
+                       MX6UL_PAD_NAND_DATA00__RAWNAND_DATA00   0x0b0b1
+                       MX6UL_PAD_NAND_DATA01__RAWNAND_DATA01   0x0b0b1
+                       MX6UL_PAD_NAND_DATA02__RAWNAND_DATA02   0x0b0b1
+                       MX6UL_PAD_NAND_DATA03__RAWNAND_DATA03   0x0b0b1
+                       MX6UL_PAD_NAND_DATA04__RAWNAND_DATA04   0x0b0b1
+                       MX6UL_PAD_NAND_DATA05__RAWNAND_DATA05   0x0b0b1
+                       MX6UL_PAD_NAND_DATA06__RAWNAND_DATA06   0x0b0b1
+                       MX6UL_PAD_NAND_DATA07__RAWNAND_DATA07   0x0b0b1
+               >;
+       };
+
+       pinctrl_i2c1: i2cgrp {
+               fsl,pins = <
+                       MX6UL_PAD_UART4_TX_DATA__I2C1_SCL       0x4001b8b0
+                       MX6UL_PAD_UART4_RX_DATA__I2C1_SDA       0x4001b8b0
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX   0x1b0b1
+                       MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX   0x1b0b1
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_WE_B__USDHC2_CMD         0x170f9
+                       MX6UL_PAD_NAND_RE_B__USDHC2_CLK         0x100f9
+                       MX6UL_PAD_NAND_DATA00__USDHC2_DATA0     0x170f9
+                       MX6UL_PAD_NAND_DATA01__USDHC2_DATA1     0x170f9
+                       MX6UL_PAD_NAND_DATA02__USDHC2_DATA2     0x170f9
+                       MX6UL_PAD_NAND_DATA03__USDHC2_DATA3     0x170f9
+                       MX6UL_PAD_NAND_DATA04__USDHC2_DATA4     0x170f9
+                       MX6UL_PAD_NAND_DATA05__USDHC2_DATA5     0x170f9
+                       MX6UL_PAD_NAND_DATA06__USDHC2_DATA6     0x170f9
+                       MX6UL_PAD_NAND_DATA07__USDHC2_DATA7     0x170f9
+               >;
+       };
+
+};
diff --git a/arch/arm/dts/imx6ul-phytec-segin-ff-rdk-nand.dts b/arch/arm/dts/imx6ul-phytec-segin-ff-rdk-nand.dts
new file mode 100644 (file)
index 0000000..699dfcb
--- /dev/null
@@ -0,0 +1,93 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2016 PHYTEC Messtechnik GmbH
+ * Author: Christian Hemp <c.hemp@phytec.de>
+ */
+
+/dts-v1/;
+#include "imx6ul.dtsi"
+#include "imx6ul-phytec-phycore-som.dtsi"
+#include "imx6ul-phytec-segin.dtsi"
+#include "imx6ul-phytec-segin-peb-eval-01.dtsi"
+
+/ {
+       model = "PHYTEC phyBOARD-Segin i.MX6 UltraLite Full Featured with NAND";
+       compatible = "phytec,imx6ul-pbacd10-nand", "phytec,imx6ul-pbacd10",
+                    "phytec,imx6ul-pcl063", "fsl,imx6ul";
+};
+
+&adc1 {
+       status = "okay";
+};
+
+&can1 {
+       status = "okay";
+};
+
+&tlv320 {
+       status = "okay";
+};
+
+&ecspi3 {
+       status = "okay";
+};
+
+&ethphy1 {
+       status = "okay";
+};
+
+&ethphy2 {
+       status = "okay";
+};
+
+&fec1 {
+       status = "okay";
+};
+
+&fec2 {
+       status = "okay";
+};
+
+&gpmi {
+       status = "okay";
+};
+
+&i2c_rtc {
+       status = "okay";
+};
+
+&reg_can1_en {
+       status = "okay";
+};
+
+&reg_sound_1v8 {
+       status = "okay";
+};
+
+&reg_sound_3v3 {
+       status = "okay";
+};
+
+&sai2 {
+       status = "okay";
+};
+
+&sound {
+       status = "okay";
+};
+
+&uart5 {
+       status = "okay";
+};
+
+&usbotg1 {
+       status = "okay";
+};
+
+&usbotg2 {
+       status = "okay";
+};
+
+&usdhc1 {
+       status = "okay";
+};
diff --git a/arch/arm/dts/imx6ul-phytec-segin-peb-eval-01.dtsi b/arch/arm/dts/imx6ul-phytec-segin-peb-eval-01.dtsi
new file mode 100644 (file)
index 0000000..2f3fd32
--- /dev/null
@@ -0,0 +1,57 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2016 PHYTEC Messtechnik
+ * Author: Christian Hemp <c.hemp@phytec.de>
+ */
+
+#include <dt-bindings/input/input.h>
+
+/ {
+       gpio_keys: gpio-keys {
+               compatible = "gpio-key";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_keys>;
+               status = "disabled";
+
+               power {
+                       label = "Power Button";
+                       gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_POWER>;
+                       wakeup-source;
+               };
+       };
+
+       user_leds: user-leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_user_leds>;
+               status = "disabled";
+
+               user-led1 {
+                       gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "gpio";
+                       default-state = "on";
+               };
+
+               user-led2 {
+                       gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "gpio";
+                       default-state = "on";
+               };
+       };
+};
+
+&iomuxc {
+       pinctrl_gpio_keys: gpio_keysgrp {
+               fsl,pins = <
+                       MX6UL_PAD_SNVS_TAMPER0__GPIO5_IO00      0x79
+               >;
+       };
+
+       pinctrl_user_leds: user_ledsgrp {
+               fsl,pins = <
+                       MX6UL_PAD_JTAG_MOD__GPIO1_IO10          0x79
+                       MX6UL_PAD_GPIO1_IO01__GPIO1_IO01        0x79
+               >;
+       };
+};
diff --git a/arch/arm/dts/imx6ul-phytec-segin.dtsi b/arch/arm/dts/imx6ul-phytec-segin.dtsi
new file mode 100644 (file)
index 0000000..8d5f8dc
--- /dev/null
@@ -0,0 +1,346 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2016 PHYTEC Messtechnik GmbH
+ * Author: Christian Hemp <c.hemp@phytec.de>
+ */
+
+/ {
+       model = "PHYTEC phyBOARD-Segin i.MX6 UltraLite";
+       compatible = "phytec,imx6ul-pbacd-10", "phytec,imx6ul-pcl063", "fsl,imx6ul";
+
+       aliases {
+               rtc0 = &i2c_rtc;
+               rtc1 = &snvs_rtc;
+       };
+
+       reg_sound_1v8: regulator-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "i2s-audio-1v8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               status = "disabled";
+       };
+
+       reg_sound_3v3: regulator-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "i2s-audio-3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               status = "disabled";
+       };
+
+       reg_can1_en: regulator-can1 {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&princtrl_flexcan1_en>;
+               regulator-name = "Can";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio5 2 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               status = "disabled";
+       };
+
+       reg_adc1_vref_3v3: regulator-vref-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "vref-3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       sound: sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "phyBOARD-Segin-TLV320AIC3007";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&dailink_master>;
+               simple-audio-card,frame-master = <&dailink_master>;
+               simple-audio-card,widgets =
+                       "Line", "Line In",
+                       "Line", "Line Out",
+                       "Speaker", "Speaker";
+               simple-audio-card,routing =
+                       "Line Out", "LLOUT",
+                       "Line Out", "RLOUT",
+                       "Speaker", "SPOP",
+                       "Speaker", "SPOM",
+                       "LINE1L", "Line In",
+                       "LINE1R", "Line In";
+               status = "disabled";
+
+               simple-audio-card,cpu {
+                       sound-dai = <&sai2>;
+               };
+
+               dailink_master: simple-audio-card,codec {
+                       sound-dai = <&tlv320>;
+                       clocks = <&clks IMX6UL_CLK_SAI2>;
+               };
+       };
+
+};
+
+&adc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_adc1>;
+       vref-supply = <&reg_adc1_vref_3v3>;
+       /*
+        * driver can not separate a specific channel so we request 4 channels
+        * here - we need only the fourth channel
+        */
+       num-channels = <4>;
+       status = "disabled";
+};
+
+&can1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan1>;
+       xceiver-supply = <&reg_can1_en>;
+       status = "disabled";
+};
+
+&clks {
+       assigned-clocks = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
+       assigned-clock-rates = <786432000>;
+};
+
+&ecspi3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi3>;
+       cs-gpios = <&gpio1 20 GPIO_ACTIVE_HIGH>;
+       status = "disabled";
+};
+
+&fec2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet2>;
+       phy-mode = "rmii";
+       phy-handle = <&ethphy2>;
+       status = "disabled";
+};
+
+&i2c1 {
+       tlv320: codec@18 {
+               compatible = "ti,tlv320aic3007";
+               #sound-dai-cells = <0>;
+               reg = <0x18>;
+               AVDD-supply = <&reg_sound_3v3>;
+               IOVDD-supply = <&reg_sound_3v3>;
+               DRVDD-supply = <&reg_sound_3v3>;
+               DVDD-supply = <&reg_sound_1v8>;
+               status = "disabled";
+       };
+
+       stmpe: touchscreen@44 {
+               compatible = "st,stmpe811";
+               reg = <0x44>;
+               interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-parent = <&gpio5>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_stmpe>;
+               status = "disabled";
+
+               touchscreen {
+                       compatible = "st,stmpe-ts";
+                       st,sample-time = <4>;
+                       st,mod-12b = <1>;
+                       st,ref-sel = <0>;
+                       st,adc-freq = <1>;
+                       st,ave-ctrl = <1>;
+                       st,touch-det-delay = <2>;
+                       st,settling = <2>;
+                       st,fraction-z = <7>;
+                       st,i-drive = <1>;
+                       touchscreen-inverted-x = <1>;
+                       touchscreen-inverted-y = <1>;
+               };
+       };
+
+       i2c_rtc: rtc@68 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_rtc_int>;
+               compatible = "microcrystal,rv4162";
+               reg = <0x68>;
+               interrupt-parent = <&gpio5>;
+               interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
+               status = "disabled";
+       };
+};
+
+&mdio {
+       ethphy2: ethernet-phy@2 {
+               reg = <2>;
+               micrel,led-mode = <1>;
+               clocks = <&clks IMX6UL_CLK_ENET2_REF>;
+               clock-names = "rmii-ref";
+               status = "disabled";
+       };
+};
+
+&pwm3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm3>;
+       status = "disabled";
+};
+
+&sai2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai2>;
+       assigned-clocks = <&clks IMX6UL_CLK_SAI2_SEL>,
+                       <&clks IMX6UL_CLK_SAI2>;
+       assigned-clock-parents = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
+       assigned-clock-rates = <0>, <19200000>;
+       fsl,sai-mclk-direction-output;
+       status = "disabled";
+};
+
+&uart5 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart5>;
+       uart-has-rtscts;
+       status = "disabled";
+};
+
+&usbotg1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb_otg1_id>;
+       dr_mode = "otg";
+       status = "disabled";
+};
+
+&usbotg2 {
+       dr_mode = "host";
+       disable-over-current;
+       status = "disabled";
+};
+
+&usdhc1 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
+       cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
+       no-1-8-v;
+       keep-power-in-suspend;
+       wakeup-source;
+       status = "disabled";
+};
+
+&iomuxc {
+       pinctrl_adc1: adc1grp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO03__GPIO1_IO03        0xb0
+               >;
+       };
+
+       pinctrl_ecspi3: ecspi3grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART2_RTS_B__ECSPI3_MISO      0x10b0
+                       MX6UL_PAD_UART2_CTS_B__ECSPI3_MOSI      0x10b0
+                       MX6UL_PAD_UART2_RX_DATA__ECSPI3_SCLK    0x10b0
+                       MX6UL_PAD_UART2_TX_DATA__GPIO1_IO20     0x10b0
+               >;
+       };
+
+       pinctrl_enet2: enet2grp {
+               fsl,pins = <
+                       MX6UL_PAD_ENET2_RX_EN__ENET2_RX_EN      0x1b0b0
+                       MX6UL_PAD_ENET2_RX_ER__ENET2_RX_ER      0x1b0b0
+                       MX6UL_PAD_ENET2_RX_DATA0__ENET2_RDATA00 0x1b0b0
+                       MX6UL_PAD_ENET2_RX_DATA1__ENET2_RDATA01 0x1b0b0
+                       MX6UL_PAD_ENET2_TX_EN__ENET2_TX_EN      0x1b010
+                       MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00 0x1b010
+                       MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01 0x1b010
+                       MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2  0x4001b010
+               >;
+       };
+
+       pinctrl_flexcan1: flexcan1 {
+               fsl,pins = <
+                       MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX      0x0b0b0
+                       MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX      0x0b0b0
+               >;
+       };
+
+       princtrl_flexcan1_en: flexcan1engrp {
+               fsl,pins = <
+                       MX6UL_PAD_SNVS_TAMPER2__GPIO5_IO02      0x17059
+               >;
+       };
+
+       pinctrl_pwm3: pwm3grp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO04__PWM3_OUT  0x0b0b0
+               >;
+       };
+
+       pinctrl_rtc_int: rtcintgrp {
+               fsl,pins = <
+                       MX6UL_PAD_SNVS_TAMPER1__GPIO5_IO01      0x17059
+               >;
+       };
+
+       pinctrl_sai2: sai2grp {
+               fsl,pins = <
+                       MX6UL_PAD_JTAG_TDI__SAI2_TX_BCLK        0x17088
+                       MX6UL_PAD_JTAG_TDO__SAI2_TX_SYNC        0x17088
+                       MX6UL_PAD_JTAG_TRST_B__SAI2_TX_DATA     0x11088
+                       MX6UL_PAD_JTAG_TCK__SAI2_RX_DATA        0x11088
+                       MX6UL_PAD_JTAG_TMS__SAI2_MCLK           0x17088
+               >;
+       };
+
+       pinctrl_stmpe: stmpegrp {
+               fsl,pins = <
+                       MX6UL_PAD_SNVS_TAMPER3__GPIO5_IO03      0x17059
+               >;
+       };
+
+       pinctrl_uart5: uart5grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART5_TX_DATA__UART5_DCE_TX   0x1b0b1
+                       MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX   0x1b0b1
+                       MX6UL_PAD_GPIO1_IO08__UART5_DCE_RTS     0x1b0b1
+                       MX6UL_PAD_GPIO1_IO09__UART5_DCE_CTS     0x1b0b1
+               >;
+       };
+
+       pinctrl_usb_otg1_id: usbotg1idgrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO00__ANATOP_OTG1_ID    0x17059
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX6UL_PAD_SD1_CMD__USDHC1_CMD           0x17059
+                       MX6UL_PAD_SD1_CLK__USDHC1_CLK           0x10059
+                       MX6UL_PAD_SD1_DATA0__USDHC1_DATA0       0x17059
+                       MX6UL_PAD_SD1_DATA1__USDHC1_DATA1       0x17059
+                       MX6UL_PAD_SD1_DATA2__USDHC1_DATA2       0x17059
+                       MX6UL_PAD_SD1_DATA3__USDHC1_DATA3       0x17059
+                       MX6UL_PAD_UART1_RTS_B__GPIO1_IO19       0x17059
+               >;
+       };
+
+       pinctrl_usdhc1_100mhz: usdhc1grp100mhz {
+               fsl,pins = <
+                       MX6UL_PAD_SD1_CMD__USDHC1_CMD           0x170b9
+                       MX6UL_PAD_SD1_CLK__USDHC1_CLK           0x100b9
+                       MX6UL_PAD_SD1_DATA0__USDHC1_DATA0       0x170b9
+                       MX6UL_PAD_SD1_DATA1__USDHC1_DATA1       0x170b9
+                       MX6UL_PAD_SD1_DATA2__USDHC1_DATA2       0x170b9
+                       MX6UL_PAD_SD1_DATA3__USDHC1_DATA3       0x170b9
+               >;
+       };
+
+       pinctrl_usdhc1_200mhz: usdhc1grp200mhz {
+               fsl,pins = <
+                       MX6UL_PAD_SD1_CMD__USDHC1_CMD           0x170f9
+                       MX6UL_PAD_SD1_CLK__USDHC1_CLK           0x100f9
+                       MX6UL_PAD_SD1_DATA0__USDHC1_DATA0       0x170f9
+                       MX6UL_PAD_SD1_DATA1__USDHC1_DATA1       0x170f9
+                       MX6UL_PAD_SD1_DATA2__USDHC1_DATA2       0x170f9
+                       MX6UL_PAD_SD1_DATA3__USDHC1_DATA3       0x170f9
+               >;
+       };
+};
diff --git a/arch/arm/dts/imx6ull-phycore-segin.dts b/arch/arm/dts/imx6ull-phycore-segin.dts
deleted file mode 100644 (file)
index 6df3ad2..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Copyright (C) 2019 Parthiban Nallathambi <parthitce@gmail.com>
- */
-
-/dts-v1/;
-
-#include "imx6ull.dtsi"
-#include "pcl063-common.dtsi"
-
-/ {
-       model = "Phytec phyBOARD-i.MX6ULL-Segin SBC";
-       compatible = "phytec,phyboard-imx6ull-segin", "phytec,imx6ull-pcl063",
-                    "fsl,imx6ull";
-};
-
-&i2c1 {
-       i2c_rtc: rtc@68 {
-               compatible = "microcrystal,rv4162";
-               reg = <0x68>;
-               status = "okay";
-       };
-};
-
-&uart5 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart5>;
-       uart-has-rtscts;
-       status = "okay";
-};
-
-&usdhc2 {
-       status = "okay";
-};
-
-&usbotg1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_usb_otg1_id>;
-       dr_mode = "otg";
-       srp-disable;
-       hnp-disable;
-       adp-disable;
-       status = "okay";
-};
-
-&usbotg2 {
-       dr_mode = "host";
-       disable-over-current;
-       status = "okay";
-};
-
-&iomuxc {
-       pinctrl-names = "default";
-
-       pinctrl_uart5: uart5grp {
-               fsl,pins = <
-                       MX6UL_PAD_UART5_TX_DATA__UART5_DCE_TX   0x1b0b1
-                       MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX   0x1b0b1
-                       MX6UL_PAD_GPIO1_IO08__UART5_DCE_RTS     0x1b0b1
-                       MX6UL_PAD_GPIO1_IO09__UART5_DCE_CTS     0x1b0b1
-               >;
-       };
-
-       pinctrl_usb_otg1_id: usbotg1idgrp {
-               fsl,pins = <
-                       MX6UL_PAD_GPIO1_IO00__ANATOP_OTG1_ID    0x17059
-               >;
-       };
-
-};
diff --git a/arch/arm/dts/imx6ull-phytec-phycore-som.dtsi b/arch/arm/dts/imx6ull-phytec-phycore-som.dtsi
new file mode 100644 (file)
index 0000000..56cd16e
--- /dev/null
@@ -0,0 +1,24 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2019 PHYTEC Messtechnik GmbH
+ * Author: Stefan Riedmueller <s.riedmueller@phytec.de>
+ */
+
+#include "imx6ul-phytec-phycore-som.dtsi"
+
+/ {
+       model = "PHYTEC phyCORE-i.MX6 ULL";
+       compatible = "phytec,imx6ull-pcl063", "fsl,imx6ull";
+};
+
+&iomuxc {
+       /delete-node/ gpioledssomgrp;
+};
+
+&iomuxc_snvs {
+       pinctrl_gpioleds_som: gpioledssomgrp {
+               fsl,pins = <
+                       MX6ULL_PAD_SNVS_TAMPER4__GPIO5_IO04     0x0b0b0
+               >;
+       };
+};
diff --git a/arch/arm/dts/imx6ull-phytec-segin-ff-rdk-emmc.dts b/arch/arm/dts/imx6ull-phytec-segin-ff-rdk-emmc.dts
new file mode 100644 (file)
index 0000000..9648d4e
--- /dev/null
@@ -0,0 +1,93 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2019 PHYTEC Messtechnik GmbH
+ * Author: Stefan Riedmueller <s.riedmueller@phytec.de>
+ */
+
+/dts-v1/;
+#include "imx6ull.dtsi"
+#include "imx6ull-phytec-phycore-som.dtsi"
+#include "imx6ull-phytec-segin.dtsi"
+#include "imx6ull-phytec-segin-peb-eval-01.dtsi"
+
+/ {
+       model = "PHYTEC phyBOARD-Segin i.MX6 ULL Full Featured with eMMC";
+       compatible = "phytec,imx6ull-pbacd10-emmc", "phytec,imx6ull-pbacd10",
+                    "phytec,imx6ull-pcl063","fsl,imx6ull";
+};
+
+&adc1 {
+       status = "okay";
+};
+
+&can1 {
+       status = "okay";
+};
+
+&tlv320 {
+       status = "okay";
+};
+
+&ecspi3 {
+       status = "okay";
+};
+
+&ethphy1 {
+       status = "okay";
+};
+
+&ethphy2 {
+       status = "okay";
+};
+
+&fec1 {
+       status = "okay";
+};
+
+&fec2 {
+       status = "okay";
+};
+
+&i2c_rtc {
+       status = "okay";
+};
+
+&reg_can1_en {
+       status = "okay";
+};
+
+&reg_sound_1v8 {
+       status = "okay";
+};
+
+&reg_sound_3v3 {
+       status = "okay";
+};
+
+&sai2 {
+       status = "okay";
+};
+
+&sound {
+       status = "okay";
+};
+
+&uart5 {
+       status = "okay";
+};
+
+&usbotg1 {
+       status = "okay";
+};
+
+&usbotg2 {
+       status = "okay";
+};
+
+&usdhc1 {
+       status = "okay";
+};
+
+&usdhc2 {
+       status = "okay";
+};
diff --git a/arch/arm/dts/imx6ull-phytec-segin-peb-eval-01.dtsi b/arch/arm/dts/imx6ull-phytec-segin-peb-eval-01.dtsi
new file mode 100644 (file)
index 0000000..ff08d95
--- /dev/null
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2019 PHYTEC Messtechnik GmbH
+ * Author: Stefan Riedmueller <s.riedmueller@phytec.de>
+ */
+
+#include "imx6ul-phytec-segin-peb-eval-01.dtsi"
+
+&iomuxc {
+       /delete-node/ gpio_keysgrp;
+};
+
+&iomuxc_snvs {
+       pinctrl_gpio_keys: gpio_keysgrp {
+               fsl,pins = <
+                       MX6ULL_PAD_SNVS_TAMPER0__GPIO5_IO00     0x79
+               >;
+       };
+};
diff --git a/arch/arm/dts/imx6ull-phytec-segin.dtsi b/arch/arm/dts/imx6ull-phytec-segin.dtsi
new file mode 100644 (file)
index 0000000..c1595fc
--- /dev/null
@@ -0,0 +1,38 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2019 PHYTEC Messtechnik GmbH
+ * Author: Stefan Riedmueller <s.riedmueller@phytec.de>
+ */
+
+#include "imx6ul-phytec-segin.dtsi"
+
+/ {
+       model = "PHYTEC phyBOARD-Segin i.MX6 ULL";
+       compatible = "phytec,imx6ull-pbacd-10", "phytec,imx6ull-pcl063","fsl,imx6ull";
+};
+
+&iomuxc {
+       /delete-node/ flexcan1engrp;
+       /delete-node/ rtcintgrp;
+       /delete-node/ stmpegrp;
+};
+
+&iomuxc_snvs {
+       princtrl_flexcan1_en: flexcan1engrp {
+               fsl,pins = <
+                       MX6ULL_PAD_SNVS_TAMPER2__GPIO5_IO02     0x17059
+               >;
+       };
+
+       pinctrl_rtc_int: rtcintgrp {
+               fsl,pins = <
+                       MX6ULL_PAD_SNVS_TAMPER1__GPIO5_IO01     0x17059
+               >;
+       };
+
+       pinctrl_stmpe: stmpegrp {
+               fsl,pins = <
+                       MX6ULL_PAD_SNVS_TAMPER3__GPIO5_IO03     0x17059
+               >;
+       };
+};
index 308e0b2a63fa06001d7885573373352943a0574d..ec95f22a0c38b31a172ed6bf81a4580e6f12f8c8 100644 (file)
        rn5t567@33 {
                compatible = "ricoh,rn5t567";
                reg = <0x33>;
+
+               regulators {
+                       reg_DCDC1: DCDC1 {  /* V1.0_SOC */
+                               regulator-min-microvolt = <1000000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       reg_DCDC2: DCDC2 { /* V1.1_ARM */
+                               regulator-min-microvolt = <975000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       reg_DCDC3: DCDC3 { /* V1.8 */
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       reg_DCDC4: DCDC4 { /* V1.35_DRAM */
+                               regulator-min-microvolt = <1350000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       reg_LDO1: LDO1 { /* PWR_EN_+V3.3_ETH */
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-boot-on;
+                       };
+
+                       reg_LDO2: LDO2 { /* +V1.8_SD */
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       reg_LDO3: LDO3 { /* PWR_EN_+V3.3_LPSR */
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       reg_LDO4: LDO4 { /* V1.8_LPSR */
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       reg_LDO5: LDO5 { /* PWR_EN_+V3.3 */
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+               };
        };
 };
 
        status = "okay";
 };
 
+&fec1 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&pinctrl_enet1>;
+       pinctrl-1 = <&pinctrl_enet1_sleep>;
+       clocks = <&clks IMX7D_ENET_AXI_ROOT_CLK>,
+               <&clks IMX7D_ENET_AXI_ROOT_CLK>,
+               <&clks IMX7D_ENET1_TIME_ROOT_CLK>,
+               <&clks IMX7D_PLL_ENET_MAIN_50M_CLK>;
+       clock-names = "ipg", "ahb", "ptp", "enet_clk_ref";
+       assigned-clocks = <&clks IMX7D_ENET1_TIME_ROOT_SRC>,
+                         <&clks IMX7D_ENET1_TIME_ROOT_CLK>;
+       assigned-clock-parents = <&clks IMX7D_PLL_ENET_MAIN_100M_CLK>;
+       assigned-clock-rates = <0>, <100000000>;
+       phy-mode = "rmii";
+       phy-supply = <&reg_LDO1>;
+       fsl,magic-packet;
+       status = "okay";
+};
+
 &uart1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart1 &pinctrl_uart1_ctrl1>;
                        MX7D_PAD_SD1_DATA3__SD1_DATA3   0x59
                >;
        };
+
+       pinctrl_enet1: enet1grp {
+               fsl,pins = <
+                       MX7D_PAD_ENET1_CRS__GPIO7_IO14                  0x14
+                       MX7D_PAD_ENET1_RGMII_RX_CTL__ENET1_RGMII_RX_CTL 0x73
+                       MX7D_PAD_ENET1_RGMII_RD0__ENET1_RGMII_RD0       0x73
+                       MX7D_PAD_ENET1_RGMII_RD1__ENET1_RGMII_RD1       0x73
+                       MX7D_PAD_ENET1_RGMII_RXC__ENET1_RX_ER           0x73
+
+                       MX7D_PAD_ENET1_RGMII_TX_CTL__ENET1_RGMII_TX_CTL 0x73
+                       MX7D_PAD_ENET1_RGMII_TD0__ENET1_RGMII_TD0       0x73
+                       MX7D_PAD_ENET1_RGMII_TD1__ENET1_RGMII_TD1       0x73
+                       MX7D_PAD_GPIO1_IO12__CCM_ENET_REF_CLK1          0x73
+                       MX7D_PAD_SD2_CD_B__ENET1_MDIO                   0x3
+                       MX7D_PAD_SD2_WP__ENET1_MDC                      0x3
+               >;
+       };
+
+       pinctrl_enet1_sleep: enet1sleepgrp {
+               fsl,pins = <
+                       MX7D_PAD_ENET1_RGMII_RX_CTL__GPIO7_IO4          0x0
+                       MX7D_PAD_ENET1_RGMII_RD0__GPIO7_IO0             0x0
+                       MX7D_PAD_ENET1_RGMII_RD1__GPIO7_IO1             0x0
+                       MX7D_PAD_ENET1_RGMII_RXC__GPIO7_IO5             0x0
+
+                       MX7D_PAD_ENET1_RGMII_TX_CTL__GPIO7_IO10         0x0
+                       MX7D_PAD_ENET1_RGMII_TD0__GPIO7_IO6             0x0
+                       MX7D_PAD_ENET1_RGMII_TD1__GPIO7_IO7             0x0
+                       MX7D_PAD_GPIO1_IO12__GPIO1_IO12                 0x0
+                       MX7D_PAD_SD2_CD_B__GPIO5_IO9                    0x0
+                       MX7D_PAD_SD2_WP__GPIO5_IO10                     0x0
+               >;
+       };
 };
 
 &iomuxc_lpsr {
diff --git a/arch/arm/dts/imx7d-sdb-u-boot.dtsi b/arch/arm/dts/imx7d-sdb-u-boot.dtsi
new file mode 100644 (file)
index 0000000..05dd74e
--- /dev/null
@@ -0,0 +1,3 @@
+&fec2 {
+       status = "disable";
+};
index 76aa69a35b365e061a142ab382ddb88ad31d30e3..8191ac7c334e9dcdd414dde56812d6aa892c75a6 100644 (file)
        model = "Freescale i.MX7 SabreSD Board";
        compatible = "fsl,imx7d-sdb", "fsl,imx7d";
 
-       aliases {
-               spi5 = &soft_spi;
+       chosen {
+               stdout-path = &uart1;
        };
 
-       memory {
+       memory@80000000 {
+               device_type = "memory";
                reg = <0x80000000 0x80000000>;
        };
 
-       soft_spi: soft-spi {
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_keys>;
+
+               volume-up {
+                       label = "Volume Up";
+                       gpios = <&gpio5 11 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEUP>;
+                       wakeup-source;
+               };
+
+               volume-down {
+                       label = "Volume Down";
+                       gpios = <&gpio5 10 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       wakeup-source;
+               };
+       };
+
+       spi4 {
                compatible = "spi-gpio";
                pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_spi1>;
-               status = "okay";
-               gpio-sck = <&gpio1 13 0>;
-               gpio-mosi = <&gpio1 9 0>;
-               cs-gpios = <&gpio1 12 0>;
+               pinctrl-0 = <&pinctrl_spi4>;
+               gpio-sck = <&gpio1 13 GPIO_ACTIVE_LOW>;
+               gpio-mosi = <&gpio1 9 GPIO_ACTIVE_LOW>;
+               cs-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
                num-chipselects = <1>;
                #address-cells = <1>;
                #size-cells = <0>;
 
-               gpio_spi: gpio_spi@0 {
+               extended_io: gpio-expander@0 {
                        compatible = "fairchild,74hc595";
                        gpio-controller;
                        #gpio-cells = <2>;
                        reg = <0>;
                        registers-number = <1>;
-                       registers-default = /bits/ 8 <0x74>; /* Enable PERI_3V3, SENSOR_RST_B and HDMI_RST*/
                        spi-max-frequency = <100000>;
                };
        };
 
-       regulators {
-               compatible = "simple-bus";
-               #address-cells = <1>;
-               #size-cells = <0>;
+       reg_usb_otg1_vbus: regulator-usb-otg1-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_otg1_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
 
-               reg_usb_otg1_vbus: regulator@0 {
-                       compatible = "regulator-fixed";
-                       reg = <0>;
-                       regulator-name = "usb_otg1_vbus";
-                       regulator-min-microvolt = <5000000>;
-                       regulator-max-microvolt = <5000000>;
-                       gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>;
-                       enable-active-high;
-               };
+       reg_usb_otg2_vbus: regulator-usb-otg2-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_otg2_vbus";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usb_otg2_vbus_reg>;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpio1 7 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
 
-               reg_usb_otg2_vbus: regulator@1 {
-                       compatible = "regulator-fixed";
-                       reg = <1>;
-                       regulator-name = "usb_otg2_vbus";
-                       regulator-min-microvolt = <5000000>;
-                       regulator-max-microvolt = <5000000>;
-                       gpio = <&gpio1 7 GPIO_ACTIVE_HIGH>;
-                       enable-active-high;
-               };
-
-               reg_sd1_vmmc: regulator@3 {
-                       compatible = "regulator-fixed";
-                       regulator-name = "VDD_SD1";
-                       regulator-min-microvolt = <3300000>;
-                       regulator-max-microvolt = <3300000>;
-                       gpio = <&gpio5 2 GPIO_ACTIVE_HIGH>;
-                       startup-delay-us = <200000>;
-                       enable-active-high;
-               };
+       reg_vref_1v8: regulator-vref-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "vref-1v8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
        };
-};
 
-&iomuxc {
-       imx7d-sdb {
-               pinctrl_spi1: spi1grp {
-                       fsl,pins = <
-                               MX7D_PAD_GPIO1_IO09__GPIO1_IO9  0x59
-                               MX7D_PAD_GPIO1_IO12__GPIO1_IO12 0x59
-                               MX7D_PAD_GPIO1_IO13__GPIO1_IO13 0x59
-                       >;
-               };
+       reg_brcm: regulator-brcm {
+               compatible = "regulator-fixed";
+               gpio = <&gpio4 21 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-name = "brcm_reg";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_brcm_reg>;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               startup-delay-us = <200000>;
+       };
 
-               pinctrl_i2c1: i2c1grp {
-                       fsl,pins = <
-                               MX7D_PAD_I2C1_SDA__I2C1_SDA     0x4000007f
-                               MX7D_PAD_I2C1_SCL__I2C1_SCL     0x4000007f
-                       >;
-               };
+       reg_lcd_3v3: regulator-lcd-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "lcd-3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&extended_io 7 GPIO_ACTIVE_LOW>;
+       };
 
-               pinctrl_i2c2: i2c2grp {
-                       fsl,pins = <
-                               MX7D_PAD_I2C2_SDA__I2C2_SDA     0x4000007f
-                               MX7D_PAD_I2C2_SCL__I2C2_SCL     0x4000007f
-                       >;
-               };
+       reg_can2_3v3: regulator-can2-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "can2-3v3";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_flexcan2_reg>;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio2 14 GPIO_ACTIVE_LOW>;
+       };
 
-               pinctrl_i2c3: i2c3grp {
-                       fsl,pins = <
-                               MX7D_PAD_I2C3_SDA__I2C3_SDA     0x4000007f
-                               MX7D_PAD_I2C3_SCL__I2C3_SCL     0x4000007f
-                       >;
-               };
+       reg_fec2_3v3: regulator-fec2-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "fec2-3v3";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_enet2_reg>;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;
+       };
 
-               pinctrl_i2c4: i2c4grp {
-                       fsl,pins = <
-                               MX7D_PAD_SAI1_RX_BCLK__I2C4_SDA 0x4000007f
-                               MX7D_PAD_SAI1_RX_SYNC__I2C4_SCL 0x4000007f
-                       >;
-               };
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm1 0 5000000 0>;
+               brightness-levels = <0 4 8 16 32 64 128 255>;
+               default-brightness-level = <6>;
+               status = "okay";
+       };
 
-               pinctrl_usdhc1_gpio: usdhc1_gpiogrp {
-                       fsl,pins = <
-                               MX7D_PAD_SD1_CD_B__GPIO5_IO0            0x59 /* CD */
-                               MX7D_PAD_SD1_WP__GPIO5_IO1              0x59 /* WP */
-                               MX7D_PAD_SD1_RESET_B__GPIO5_IO2         0x59 /* vmmc */
-                               MX7D_PAD_GPIO1_IO08__SD1_VSELECT        0x59 /* VSELECT */
-                       >;
-               };
+       panel {
+               compatible = "innolux,at043tn24";
+               backlight = <&backlight>;
+               power-supply = <&reg_lcd_3v3>;
 
-               pinctrl_usdhc1: usdhc1grp {
-                       fsl,pins = <
-                               MX7D_PAD_SD1_CMD__SD1_CMD               0x59
-                               MX7D_PAD_SD1_CLK__SD1_CLK               0x19
-                               MX7D_PAD_SD1_DATA0__SD1_DATA0           0x59
-                               MX7D_PAD_SD1_DATA1__SD1_DATA1           0x59
-                               MX7D_PAD_SD1_DATA2__SD1_DATA2           0x59
-                               MX7D_PAD_SD1_DATA3__SD1_DATA3           0x59
-                       >;
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&display_out>;
+                       };
                };
+       };
+};
 
-               pinctrl_usdhc1_100mhz: usdhc1grp_100mhz {
-                       fsl,pins = <
-                               MX7D_PAD_SD1_CMD__SD1_CMD               0x5a
-                               MX7D_PAD_SD1_CLK__SD1_CLK               0x1a
-                               MX7D_PAD_SD1_DATA0__SD1_DATA0           0x5a
-                               MX7D_PAD_SD1_DATA1__SD1_DATA1           0x5a
-                               MX7D_PAD_SD1_DATA2__SD1_DATA2           0x5a
-                               MX7D_PAD_SD1_DATA3__SD1_DATA3           0x5a
-                       >;
-               };
+&adc1 {
+       vref-supply = <&reg_vref_1v8>;
+       status = "okay";
+};
 
-               pinctrl_usdhc1_200mhz: usdhc1grp_200mhz {
-                       fsl,pins = <
-                               MX7D_PAD_SD1_CMD__SD1_CMD               0x5b
-                               MX7D_PAD_SD1_CLK__SD1_CLK               0x1b
-                               MX7D_PAD_SD1_DATA0__SD1_DATA0           0x5b
-                               MX7D_PAD_SD1_DATA1__SD1_DATA1           0x5b
-                               MX7D_PAD_SD1_DATA2__SD1_DATA2           0x5b
-                               MX7D_PAD_SD1_DATA3__SD1_DATA3           0x5b
-                       >;
-               };
+&adc2 {
+       vref-supply = <&reg_vref_1v8>;
+       status = "okay";
+};
 
-               pinctrl_usdhc2: usdhc2grp {
-                       fsl,pins = <
-                               MX7D_PAD_SD2_CMD__SD2_CMD       0x59
-                               MX7D_PAD_SD2_CLK__SD2_CLK       0x19
-                               MX7D_PAD_SD2_DATA0__SD2_DATA0   0x59
-                               MX7D_PAD_SD2_DATA1__SD2_DATA1   0x59
-                               MX7D_PAD_SD2_DATA2__SD2_DATA2   0x59
-                               MX7D_PAD_SD2_DATA3__SD2_DATA3   0x59
-                               MX7D_PAD_ECSPI2_MOSI__GPIO4_IO21        0x19 /* WL_REG_ON */
-                               MX7D_PAD_ECSPI2_SCLK__GPIO4_IO20        0x19 /* WL_HOST_WAKE */
-                       >;
-               };
+&cpu0 {
+       cpu-supply = <&sw1a_reg>;
+};
 
-               pinctrl_usdhc2_100mhz: usdhc2grp_100mhz {
-                       fsl,pins = <
-                               MX7D_PAD_SD2_CMD__SD2_CMD               0x5a
-                               MX7D_PAD_SD2_CLK__SD2_CLK               0x1a
-                               MX7D_PAD_SD2_DATA0__SD2_DATA0           0x5a
-                               MX7D_PAD_SD2_DATA1__SD2_DATA1           0x5a
-                               MX7D_PAD_SD2_DATA2__SD2_DATA2           0x5a
-                               MX7D_PAD_SD2_DATA3__SD2_DATA3           0x5a
-                       >;
-               };
+&ecspi3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi3>;
+       cs-gpios = <&gpio5 9 GPIO_ACTIVE_HIGH>;
+       status = "okay";
 
-               pinctrl_usdhc2_200mhz: usdhc2grp_200mhz {
-                       fsl,pins = <
-                               MX7D_PAD_SD2_CMD__SD2_CMD               0x5b
-                               MX7D_PAD_SD2_CLK__SD2_CLK               0x1b
-                               MX7D_PAD_SD2_DATA0__SD2_DATA0           0x5b
-                               MX7D_PAD_SD2_DATA1__SD2_DATA1           0x5b
-                               MX7D_PAD_SD2_DATA2__SD2_DATA2           0x5b
-                               MX7D_PAD_SD2_DATA3__SD2_DATA3           0x5b
-                       >;
-               };
+       tsc2046@0 {
+               compatible = "ti,tsc2046";
+               reg = <0>;
+               spi-max-frequency = <1000000>;
+               pinctrl-names ="default";
+               pinctrl-0 = <&pinctrl_tsc2046_pendown>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <29 0>;
+               pendown-gpio = <&gpio2 29 GPIO_ACTIVE_HIGH>;
+               ti,x-min = /bits/ 16 <0>;
+               ti,x-max = /bits/ 16 <0>;
+               ti,y-min = /bits/ 16 <0>;
+               ti,y-max = /bits/ 16 <0>;
+               ti,pressure-max = /bits/ 16 <0>;
+               ti,x-plate-ohms = /bits/ 16 <400>;
+               wakeup-source;
+       };
+};
 
-               pinctrl_usdhc3: usdhc3grp {
-                       fsl,pins = <
-                               MX7D_PAD_SD3_CMD__SD3_CMD               0x59
-                               MX7D_PAD_SD3_CLK__SD3_CLK               0x19
-                               MX7D_PAD_SD3_DATA0__SD3_DATA0           0x59
-                               MX7D_PAD_SD3_DATA1__SD3_DATA1           0x59
-                               MX7D_PAD_SD3_DATA2__SD3_DATA2           0x59
-                               MX7D_PAD_SD3_DATA3__SD3_DATA3           0x59
-                               MX7D_PAD_SD3_DATA4__SD3_DATA4           0x59
-                               MX7D_PAD_SD3_DATA5__SD3_DATA5           0x59
-                               MX7D_PAD_SD3_DATA6__SD3_DATA6           0x59
-                               MX7D_PAD_SD3_DATA7__SD3_DATA7           0x59
-                               MX7D_PAD_SD3_STROBE__SD3_STROBE         0x19
-                       >;
-               };
+&fec1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet1>;
+       assigned-clocks = <&clks IMX7D_ENET1_TIME_ROOT_SRC>,
+                         <&clks IMX7D_ENET1_TIME_ROOT_CLK>;
+       assigned-clock-parents = <&clks IMX7D_PLL_ENET_MAIN_100M_CLK>;
+       assigned-clock-rates = <0>, <100000000>;
+       phy-mode = "rgmii";
+       phy-handle = <&ethphy0>;
+       fsl,magic-packet;
+       phy-reset-gpios = <&extended_io 5 GPIO_ACTIVE_LOW>;
+       status = "okay";
 
-               pinctrl_usdhc3_100mhz: usdhc3grp_100mhz {
-                       fsl,pins = <
-                               MX7D_PAD_SD3_CMD__SD3_CMD               0x5a
-                               MX7D_PAD_SD3_CLK__SD3_CLK               0x1a
-                               MX7D_PAD_SD3_DATA0__SD3_DATA0           0x5a
-                               MX7D_PAD_SD3_DATA1__SD3_DATA1           0x5a
-                               MX7D_PAD_SD3_DATA2__SD3_DATA2           0x5a
-                               MX7D_PAD_SD3_DATA3__SD3_DATA3           0x5a
-                               MX7D_PAD_SD3_DATA4__SD3_DATA4           0x5a
-                               MX7D_PAD_SD3_DATA5__SD3_DATA5           0x5a
-                               MX7D_PAD_SD3_DATA6__SD3_DATA6           0x5a
-                               MX7D_PAD_SD3_DATA7__SD3_DATA7           0x5a
-                               MX7D_PAD_SD3_STROBE__SD3_STROBE         0x1a
-                       >;
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy0: ethernet-phy@0 {
+                       reg = <0>;
                };
 
-               pinctrl_usdhc3_200mhz: usdhc3grp_200mhz {
-                       fsl,pins = <
-                               MX7D_PAD_SD3_CMD__SD3_CMD               0x5b
-                               MX7D_PAD_SD3_CLK__SD3_CLK               0x1b
-                               MX7D_PAD_SD3_DATA0__SD3_DATA0           0x5b
-                               MX7D_PAD_SD3_DATA1__SD3_DATA1           0x5b
-                               MX7D_PAD_SD3_DATA2__SD3_DATA2           0x5b
-                               MX7D_PAD_SD3_DATA3__SD3_DATA3           0x5b
-                               MX7D_PAD_SD3_DATA4__SD3_DATA4           0x5b
-                               MX7D_PAD_SD3_DATA5__SD3_DATA5           0x5b
-                               MX7D_PAD_SD3_DATA6__SD3_DATA6           0x5b
-                               MX7D_PAD_SD3_DATA7__SD3_DATA7           0x5b
-                               MX7D_PAD_SD3_STROBE__SD3_STROBE         0x1b
-                       >;
+               ethphy1: ethernet-phy@1 {
+                       reg = <1>;
                };
        };
 };
 
+&fec2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet2>;
+       assigned-clocks = <&clks IMX7D_ENET2_TIME_ROOT_SRC>,
+                         <&clks IMX7D_ENET2_TIME_ROOT_CLK>;
+       assigned-clock-parents = <&clks IMX7D_PLL_ENET_MAIN_100M_CLK>;
+       assigned-clock-rates = <0>, <100000000>;
+       phy-mode = "rgmii";
+       phy-handle = <&ethphy1>;
+       phy-supply = <&reg_fec2_3v3>;
+       fsl,magic-packet;
+       status = "okay";
+};
+
+&flexcan2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan2>;
+       xceiver-supply = <&reg_can2_3v3>;
+       status = "okay";
+};
+
 &i2c1 {
-       clock-frequency = <100000>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_i2c1>;
        status = "okay";
 
-       pmic: pfuze3000@08 {
+       pmic: pfuze3000@8 {
                compatible = "fsl,pfuze3000";
                reg = <0x08>;
 
                regulators {
                        sw1a_reg: sw1a {
                                regulator-min-microvolt = <700000>;
-                               regulator-max-microvolt = <3300000>;
+                               regulator-max-microvolt = <1475000>;
                                regulator-boot-on;
                                regulator-always-on;
                                regulator-ramp-delay = <6250>;
                        };
 
                        sw2_reg: sw2 {
-                               regulator-min-microvolt = <1500000>;
-                               regulator-max-microvolt = <1850000>;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
                                regulator-boot-on;
                                regulator-always-on;
                        };
                        vgen2_reg: vldo2 {
                                regulator-min-microvolt = <800000>;
                                regulator-max-microvolt = <1550000>;
-                               regulator-always-on;
                        };
 
                        vgen3_reg: vccsd {
                        };
 
                        vgen6_reg: vldo4 {
-                               regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <3300000>;
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
                                regulator-always-on;
                        };
                };
 };
 
 &i2c2 {
-       clock-frequency = <100000>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_i2c2>;
        status = "okay";
+
+       mpl3115@60 {
+               compatible = "fsl,mpl3115";
+               reg = <0x60>;
+       };
 };
 
 &i2c3 {
-       clock-frequency = <100000>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_i2c3>;
        status = "okay";
 };
 
 &i2c4 {
-       clock-frequency = <100000>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_i2c4>;
        status = "okay";
+
+       codec: wm8960@1a {
+               compatible = "wlf,wm8960";
+               reg = <0x1a>;
+               clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_CLK>;
+               clock-names = "mclk";
+               wlf,shared-lrclk;
+       };
+};
+
+&lcdif {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lcdif>;
+       status = "okay";
+
+       port {
+               display_out: endpoint {
+                       remote-endpoint = <&panel_in>;
+               };
+       };
+};
+
+&snvs_pwrkey {
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>;
+       assigned-clocks = <&clks IMX7D_UART1_ROOT_SRC>;
+       assigned-clock-parents = <&clks IMX7D_PLL_SYS_MAIN_240M_CLK>;
+       status = "okay";
+};
+
+&uart6 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart6>;
+       assigned-clocks = <&clks IMX7D_UART6_ROOT_SRC>;
+       assigned-clock-parents = <&clks IMX7D_PLL_SYS_MAIN_240M_CLK>;
+       uart-has-rtscts;
+       status = "okay";
+};
+
+&usbotg1 {
+       vbus-supply = <&reg_usb_otg1_vbus>;
+       status = "okay";
+};
+
+&usbotg2 {
+       vbus-supply = <&reg_usb_otg2_vbus>;
+       dr_mode = "host";
+       status = "okay";
 };
 
 &usdhc1 {
-       pinctrl-names = "default", "state_100mhz", "state_200mhz";
-       pinctrl-0 = <&pinctrl_usdhc1>, <&pinctrl_usdhc1_gpio>;
-       pinctrl-1 = <&pinctrl_usdhc1_100mhz>, <&pinctrl_usdhc1_gpio>;
-       pinctrl-2 = <&pinctrl_usdhc1_200mhz>, <&pinctrl_usdhc1_gpio>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc1>;
        cd-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
        wp-gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
-       vmmc-supply = <&reg_sd1_vmmc>;
-       fsl,tuning-start-tap = <20>;
-       fsl,tuning-step= <2>;
+       wakeup-source;
+       keep-power-in-suspend;
        status = "okay";
 };
 
        pinctrl-0 = <&pinctrl_usdhc2>;
        pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
        pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
+       wakeup-source;
+       keep-power-in-suspend;
        non-removable;
-       fsl,tuning-start-tap = <20>;
-       fsl,tuning-step= <2>;
+       vmmc-supply = <&reg_brcm>;
+       fsl,tuning-step = <2>;
        status = "okay";
 };
 
        pinctrl-0 = <&pinctrl_usdhc3>;
        pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
        pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       assigned-clocks = <&clks IMX7D_USDHC3_ROOT_CLK>;
+       assigned-clock-rates = <400000000>;
        bus-width = <8>;
+       fsl,tuning-step = <2>;
        non-removable;
-       fsl,tuning-start-tap = <20>;
-       fsl,tuning-step= <2>;
        status = "okay";
 };
+
+&wdog1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_wdog>;
+       fsl,ext-reset-output;
+};
+
+&iomuxc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hog>;
+
+       imx7d-sdb {
+               pinctrl_brcm_reg: brcmreggrp {
+                       fsl,pins = <
+                               MX7D_PAD_ECSPI2_MOSI__GPIO4_IO21        0x14
+                       >;
+               };
+
+               pinctrl_ecspi3: ecspi3grp {
+                       fsl,pins = <
+                               MX7D_PAD_SAI2_TX_SYNC__ECSPI3_MISO      0x2
+                               MX7D_PAD_SAI2_TX_BCLK__ECSPI3_MOSI      0x2
+                               MX7D_PAD_SAI2_RX_DATA__ECSPI3_SCLK      0x2
+                               MX7D_PAD_SD2_CD_B__GPIO5_IO9            0x59
+                       >;
+               };
+
+               pinctrl_enet1: enet1grp {
+                       fsl,pins = <
+                               MX7D_PAD_GPIO1_IO10__ENET1_MDIO                 0x3
+                               MX7D_PAD_GPIO1_IO11__ENET1_MDC                  0x3
+                               MX7D_PAD_ENET1_RGMII_TXC__ENET1_RGMII_TXC       0x1
+                               MX7D_PAD_ENET1_RGMII_TD0__ENET1_RGMII_TD0       0x1
+                               MX7D_PAD_ENET1_RGMII_TD1__ENET1_RGMII_TD1       0x1
+                               MX7D_PAD_ENET1_RGMII_TD2__ENET1_RGMII_TD2       0x1
+                               MX7D_PAD_ENET1_RGMII_TD3__ENET1_RGMII_TD3       0x1
+                               MX7D_PAD_ENET1_RGMII_TX_CTL__ENET1_RGMII_TX_CTL 0x1
+                               MX7D_PAD_ENET1_RGMII_RXC__ENET1_RGMII_RXC       0x1
+                               MX7D_PAD_ENET1_RGMII_RD0__ENET1_RGMII_RD0       0x1
+                               MX7D_PAD_ENET1_RGMII_RD1__ENET1_RGMII_RD1       0x1
+                               MX7D_PAD_ENET1_RGMII_RD2__ENET1_RGMII_RD2       0x1
+                               MX7D_PAD_ENET1_RGMII_RD3__ENET1_RGMII_RD3       0x1
+                               MX7D_PAD_ENET1_RGMII_RX_CTL__ENET1_RGMII_RX_CTL 0x1
+                       >;
+               };
+
+               pinctrl_enet2: enet2grp {
+                       fsl,pins = <
+                               MX7D_PAD_EPDC_GDSP__ENET2_RGMII_TXC             0x1
+                               MX7D_PAD_EPDC_SDCE2__ENET2_RGMII_TD0            0x1
+                               MX7D_PAD_EPDC_SDCE3__ENET2_RGMII_TD1            0x1
+                               MX7D_PAD_EPDC_GDCLK__ENET2_RGMII_TD2            0x1
+                               MX7D_PAD_EPDC_GDOE__ENET2_RGMII_TD3             0x1
+                               MX7D_PAD_EPDC_GDRL__ENET2_RGMII_TX_CTL          0x1
+                               MX7D_PAD_EPDC_SDCE1__ENET2_RGMII_RXC            0x1
+                               MX7D_PAD_EPDC_SDCLK__ENET2_RGMII_RD0            0x1
+                               MX7D_PAD_EPDC_SDLE__ENET2_RGMII_RD1             0x1
+                               MX7D_PAD_EPDC_SDOE__ENET2_RGMII_RD2             0x1
+                               MX7D_PAD_EPDC_SDSHR__ENET2_RGMII_RD3            0x1
+                               MX7D_PAD_EPDC_SDCE0__ENET2_RGMII_RX_CTL         0x1
+                       >;
+               };
+
+               pinctrl_enet2_reg: enet2reggrp {
+                       fsl,pins = <
+                               MX7D_PAD_LPSR_GPIO1_IO04__GPIO1_IO4     0x14
+                       >;
+               };
+
+               pinctrl_flexcan2: flexcan2grp {
+                       fsl,pins = <
+                               MX7D_PAD_GPIO1_IO14__FLEXCAN2_RX        0x59
+                               MX7D_PAD_GPIO1_IO15__FLEXCAN2_TX        0x59
+                       >;
+               };
+
+               pinctrl_flexcan2_reg: flexcan2reggrp {
+                       fsl,pins = <
+                               MX7D_PAD_EPDC_DATA14__GPIO2_IO14        0x59    /* CAN_STBY */
+                       >;
+               };
+
+               pinctrl_gpio_keys: gpio_keysgrp {
+                       fsl,pins = <
+                               MX7D_PAD_SD2_RESET_B__GPIO5_IO11        0x59
+                               MX7D_PAD_SD2_WP__GPIO5_IO10             0x59
+                       >;
+               };
+
+               pinctrl_hog: hoggrp {
+                       fsl,pins = <
+                               MX7D_PAD_ECSPI2_SS0__GPIO4_IO23         0x34  /* bt reg on */
+                       >;
+               };
+
+               pinctrl_i2c1: i2c1grp {
+                       fsl,pins = <
+                               MX7D_PAD_I2C1_SDA__I2C1_SDA             0x4000007f
+                               MX7D_PAD_I2C1_SCL__I2C1_SCL             0x4000007f
+                       >;
+               };
+
+               pinctrl_i2c2: i2c2grp {
+                       fsl,pins = <
+                               MX7D_PAD_I2C2_SDA__I2C2_SDA             0x4000007f
+                               MX7D_PAD_I2C2_SCL__I2C2_SCL             0x4000007f
+                       >;
+               };
+
+               pinctrl_i2c3: i2c3grp {
+                       fsl,pins = <
+                               MX7D_PAD_I2C3_SDA__I2C3_SDA             0x4000007f
+                               MX7D_PAD_I2C3_SCL__I2C3_SCL             0x4000007f
+                       >;
+               };
+
+               pinctrl_i2c4: i2c4grp {
+                       fsl,pins = <
+                               MX7D_PAD_SAI1_RX_BCLK__I2C4_SDA         0x4000007f
+                               MX7D_PAD_SAI1_RX_SYNC__I2C4_SCL         0x4000007f
+                       >;
+               };
+
+               pinctrl_lcdif: lcdifgrp {
+                       fsl,pins = <
+                               MX7D_PAD_LCD_DATA00__LCD_DATA0          0x79
+                               MX7D_PAD_LCD_DATA01__LCD_DATA1          0x79
+                               MX7D_PAD_LCD_DATA02__LCD_DATA2          0x79
+                               MX7D_PAD_LCD_DATA03__LCD_DATA3          0x79
+                               MX7D_PAD_LCD_DATA04__LCD_DATA4          0x79
+                               MX7D_PAD_LCD_DATA05__LCD_DATA5          0x79
+                               MX7D_PAD_LCD_DATA06__LCD_DATA6          0x79
+                               MX7D_PAD_LCD_DATA07__LCD_DATA7          0x79
+                               MX7D_PAD_LCD_DATA08__LCD_DATA8          0x79
+                               MX7D_PAD_LCD_DATA09__LCD_DATA9          0x79
+                               MX7D_PAD_LCD_DATA10__LCD_DATA10         0x79
+                               MX7D_PAD_LCD_DATA11__LCD_DATA11         0x79
+                               MX7D_PAD_LCD_DATA12__LCD_DATA12         0x79
+                               MX7D_PAD_LCD_DATA13__LCD_DATA13         0x79
+                               MX7D_PAD_LCD_DATA14__LCD_DATA14         0x79
+                               MX7D_PAD_LCD_DATA15__LCD_DATA15         0x79
+                               MX7D_PAD_LCD_DATA16__LCD_DATA16         0x79
+                               MX7D_PAD_LCD_DATA17__LCD_DATA17         0x79
+                               MX7D_PAD_LCD_DATA18__LCD_DATA18         0x79
+                               MX7D_PAD_LCD_DATA19__LCD_DATA19         0x79
+                               MX7D_PAD_LCD_DATA20__LCD_DATA20         0x79
+                               MX7D_PAD_LCD_DATA21__LCD_DATA21         0x79
+                               MX7D_PAD_LCD_DATA22__LCD_DATA22         0x79
+                               MX7D_PAD_LCD_DATA23__LCD_DATA23         0x79
+                               MX7D_PAD_LCD_CLK__LCD_CLK               0x79
+                               MX7D_PAD_LCD_ENABLE__LCD_ENABLE         0x79
+                               MX7D_PAD_LCD_VSYNC__LCD_VSYNC           0x79
+                               MX7D_PAD_LCD_HSYNC__LCD_HSYNC           0x79
+                               MX7D_PAD_LCD_RESET__LCD_RESET           0x79
+                       >;
+               };
+
+               pinctrl_spi4: spi4grp {
+                       fsl,pins = <
+                               MX7D_PAD_GPIO1_IO09__GPIO1_IO9  0x59
+                               MX7D_PAD_GPIO1_IO12__GPIO1_IO12 0x59
+                               MX7D_PAD_GPIO1_IO13__GPIO1_IO13 0x59
+                       >;
+               };
+
+               pinctrl_tsc2046_pendown: tsc2046_pendown {
+                       fsl,pins = <
+                               MX7D_PAD_EPDC_BDR1__GPIO2_IO29          0x59
+                       >;
+               };
+
+               pinctrl_uart1: uart1grp {
+                       fsl,pins = <
+                               MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX    0x79
+                               MX7D_PAD_UART1_RX_DATA__UART1_DCE_RX    0x79
+                       >;
+               };
+
+               pinctrl_uart5: uart5grp {
+                       fsl,pins = <
+                               MX7D_PAD_SAI1_TX_BCLK__UART5_DCE_TX     0x79
+                               MX7D_PAD_SAI1_RX_DATA__UART5_DCE_RX     0x79
+                               MX7D_PAD_SAI1_TX_SYNC__UART5_DCE_CTS    0x79
+                               MX7D_PAD_SAI1_TX_DATA__UART5_DCE_RTS    0x79
+                       >;
+               };
+
+               pinctrl_uart6: uart6grp {
+                       fsl,pins = <
+                               MX7D_PAD_ECSPI1_MOSI__UART6_DCE_TX      0x79
+                               MX7D_PAD_ECSPI1_SCLK__UART6_DCE_RX      0x79
+                               MX7D_PAD_ECSPI1_SS0__UART6_DCE_CTS      0x79
+                               MX7D_PAD_ECSPI1_MISO__UART6_DCE_RTS     0x79
+                       >;
+               };
+
+               pinctrl_usdhc1: usdhc1grp {
+                       fsl,pins = <
+                               MX7D_PAD_SD1_CMD__SD1_CMD               0x59
+                               MX7D_PAD_SD1_CLK__SD1_CLK               0x19
+                               MX7D_PAD_SD1_DATA0__SD1_DATA0           0x59
+                               MX7D_PAD_SD1_DATA1__SD1_DATA1           0x59
+                               MX7D_PAD_SD1_DATA2__SD1_DATA2           0x59
+                               MX7D_PAD_SD1_DATA3__SD1_DATA3           0x59
+                               MX7D_PAD_SD1_CD_B__GPIO5_IO0            0x59 /* CD */
+                               MX7D_PAD_SD1_WP__GPIO5_IO1              0x59 /* WP */
+                               MX7D_PAD_SD1_RESET_B__GPIO5_IO2         0x59 /* vmmc */
+                       >;
+               };
+
+               pinctrl_usdhc2: usdhc2grp {
+                       fsl,pins = <
+                               MX7D_PAD_SD2_CMD__SD2_CMD               0x59
+                               MX7D_PAD_SD2_CLK__SD2_CLK               0x19
+                               MX7D_PAD_SD2_DATA0__SD2_DATA0           0x59
+                               MX7D_PAD_SD2_DATA1__SD2_DATA1           0x59
+                               MX7D_PAD_SD2_DATA2__SD2_DATA2           0x59
+                               MX7D_PAD_SD2_DATA3__SD2_DATA3           0x59
+                       >;
+               };
+
+               pinctrl_usdhc2_100mhz: usdhc2grp_100mhz {
+                       fsl,pins = <
+                               MX7D_PAD_SD2_CMD__SD2_CMD               0x5a
+                               MX7D_PAD_SD2_CLK__SD2_CLK               0x1a
+                               MX7D_PAD_SD2_DATA0__SD2_DATA0           0x5a
+                               MX7D_PAD_SD2_DATA1__SD2_DATA1           0x5a
+                               MX7D_PAD_SD2_DATA2__SD2_DATA2           0x5a
+                               MX7D_PAD_SD2_DATA3__SD2_DATA3           0x5a
+                       >;
+               };
+
+               pinctrl_usdhc2_200mhz: usdhc2grp_200mhz {
+                       fsl,pins = <
+                               MX7D_PAD_SD2_CMD__SD2_CMD               0x5b
+                               MX7D_PAD_SD2_CLK__SD2_CLK               0x1b
+                               MX7D_PAD_SD2_DATA0__SD2_DATA0           0x5b
+                               MX7D_PAD_SD2_DATA1__SD2_DATA1           0x5b
+                               MX7D_PAD_SD2_DATA2__SD2_DATA2           0x5b
+                               MX7D_PAD_SD2_DATA3__SD2_DATA3           0x5b
+                       >;
+               };
+
+
+               pinctrl_usdhc3: usdhc3grp {
+                       fsl,pins = <
+                               MX7D_PAD_SD3_CMD__SD3_CMD               0x59
+                               MX7D_PAD_SD3_CLK__SD3_CLK               0x19
+                               MX7D_PAD_SD3_DATA0__SD3_DATA0           0x59
+                               MX7D_PAD_SD3_DATA1__SD3_DATA1           0x59
+                               MX7D_PAD_SD3_DATA2__SD3_DATA2           0x59
+                               MX7D_PAD_SD3_DATA3__SD3_DATA3           0x59
+                               MX7D_PAD_SD3_DATA4__SD3_DATA4           0x59
+                               MX7D_PAD_SD3_DATA5__SD3_DATA5           0x59
+                               MX7D_PAD_SD3_DATA6__SD3_DATA6           0x59
+                               MX7D_PAD_SD3_DATA7__SD3_DATA7           0x59
+                               MX7D_PAD_SD3_STROBE__SD3_STROBE         0x19
+                       >;
+               };
+
+               pinctrl_usdhc3_100mhz: usdhc3grp_100mhz {
+                       fsl,pins = <
+                               MX7D_PAD_SD3_CMD__SD3_CMD               0x5a
+                               MX7D_PAD_SD3_CLK__SD3_CLK               0x1a
+                               MX7D_PAD_SD3_DATA0__SD3_DATA0           0x5a
+                               MX7D_PAD_SD3_DATA1__SD3_DATA1           0x5a
+                               MX7D_PAD_SD3_DATA2__SD3_DATA2           0x5a
+                               MX7D_PAD_SD3_DATA3__SD3_DATA3           0x5a
+                               MX7D_PAD_SD3_DATA4__SD3_DATA4           0x5a
+                               MX7D_PAD_SD3_DATA5__SD3_DATA5           0x5a
+                               MX7D_PAD_SD3_DATA6__SD3_DATA6           0x5a
+                               MX7D_PAD_SD3_DATA7__SD3_DATA7           0x5a
+                               MX7D_PAD_SD3_STROBE__SD3_STROBE         0x1a
+                       >;
+               };
+
+               pinctrl_usdhc3_200mhz: usdhc3grp_200mhz {
+                       fsl,pins = <
+                               MX7D_PAD_SD3_CMD__SD3_CMD               0x5b
+                               MX7D_PAD_SD3_CLK__SD3_CLK               0x1b
+                               MX7D_PAD_SD3_DATA0__SD3_DATA0           0x5b
+                               MX7D_PAD_SD3_DATA1__SD3_DATA1           0x5b
+                               MX7D_PAD_SD3_DATA2__SD3_DATA2           0x5b
+                               MX7D_PAD_SD3_DATA3__SD3_DATA3           0x5b
+                               MX7D_PAD_SD3_DATA4__SD3_DATA4           0x5b
+                               MX7D_PAD_SD3_DATA5__SD3_DATA5           0x5b
+                               MX7D_PAD_SD3_DATA6__SD3_DATA6           0x5b
+                               MX7D_PAD_SD3_DATA7__SD3_DATA7           0x5b
+                               MX7D_PAD_SD3_STROBE__SD3_STROBE         0x1b
+                       >;
+               };
+       };
+};
+
+&pwm1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm1>;
+       status = "okay";
+};
+
+&iomuxc_lpsr {
+       pinctrl_wdog: wdoggrp {
+               fsl,pins = <
+                       MX7D_PAD_LPSR_GPIO1_IO00__WDOG1_WDOG_B          0x74
+               >;
+       };
+
+       pinctrl_pwm1: pwm1grp {
+               fsl,pins = <
+                       MX7D_PAD_LPSR_GPIO1_IO01__PWM1_OUT              0x30
+               >;
+       };
+
+       pinctrl_usb_otg2_vbus_reg: usbotg2vbusreggrp {
+               fsl,pins = <
+                       MX7D_PAD_LPSR_GPIO1_IO07__GPIO1_IO7       0x14
+               >;
+       };
+};
index 30b058934bf93a3dce00d2da705dc8215ee5c2ef..75566c780a4dba567daeee5a6cbda8d9ee03a9dd 100644 (file)
@@ -44,6 +44,9 @@
 #include "imx7s.dtsi"
 
 / {
+       aliases {
+               ethernet1 = &fec2;
+       };
        cpus {
                cpu0: cpu@0 {
                        operating-points = <
index 5067b9f7e7ccda2621b5c6e7474a80aefa8e13a9..5c2e98be063004e3537aca95ebce2921a35e4a90 100644 (file)
@@ -87,6 +87,7 @@
                spi2 = &ecspi2;
                spi3 = &ecspi3;
                spi4 = &ecspi4;
+               ethernet0 = &fec1;
        };
 
        cpus {
diff --git a/arch/arm/dts/imx7ulp-com.dts b/arch/arm/dts/imx7ulp-com.dts
new file mode 100644 (file)
index 0000000..c01e03d
--- /dev/null
@@ -0,0 +1,90 @@
+// SPDX-License-Identifier: GPL-2.0
+//
+// Copyright 2019 NXP
+// Author: Fabio Estevam <fabio.estevam@nxp.com>
+
+/dts-v1/;
+
+#include "imx7ulp.dtsi"
+
+/ {
+       model = "Embedded Artists i.MX7ULP COM";
+       compatible = "ea,imx7ulp-com", "fsl,imx7ulp";
+
+       chosen {
+               stdout-path = &lpuart4;
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x60000000 0x8000000>;
+       };
+};
+
+&lpuart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpuart4>;
+       status = "okay";
+};
+
+&usbotg1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbotg1_id>;
+       srp-disable;
+       hnp-disable;
+       adp-disable;
+       status = "okay";
+};
+
+&usbphy1 {
+       fsl,tx-d-cal = <88>;
+};
+
+&usdhc0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc0>;
+       non-removable;
+       bus-width = <8>;
+       no-1-8-v;
+       status = "okay";
+};
+
+&iomuxc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hog_1>;
+
+       pinctrl_hog_1: hoggrp-1 {
+               fsl,pins = <
+                       IMX7ULP_PAD_PTC1__PTC1          0x20000
+               >;
+       };
+
+       pinctrl_lpuart4: lpuart4grp {
+               fsl,pins = <
+                       IMX7ULP_PAD_PTC3__LPUART4_RX    0x3
+                       IMX7ULP_PAD_PTC2__LPUART4_TX    0x3
+               >;
+       };
+
+       pinctrl_usdhc0: usdhc0grp {
+               fsl,pins = <
+                       IMX7ULP_PAD_PTD1__SDHC0_CMD     0x43
+                       IMX7ULP_PAD_PTD2__SDHC0_CLK     0x10042
+                       IMX7ULP_PAD_PTD3__SDHC0_D7      0x43
+                       IMX7ULP_PAD_PTD4__SDHC0_D6      0x43
+                       IMX7ULP_PAD_PTD5__SDHC0_D5      0x43
+                       IMX7ULP_PAD_PTD6__SDHC0_D4      0x43
+                       IMX7ULP_PAD_PTD7__SDHC0_D3      0x43
+                       IMX7ULP_PAD_PTD8__SDHC0_D2      0x43
+                       IMX7ULP_PAD_PTD9__SDHC0_D1      0x43
+                       IMX7ULP_PAD_PTD10__SDHC0_D0     0x43
+                       IMX7ULP_PAD_PTD11__SDHC0_DQS    0x42
+               >;
+       };
+
+       pinctrl_usbotg1_id: otg1idgrp {
+               fsl,pins = <
+                       IMX7ULP_PAD_PTC13__USB0_ID      0x10003
+               >;
+       };
+};
diff --git a/arch/arm/dts/pcl063-common.dtsi b/arch/arm/dts/pcl063-common.dtsi
deleted file mode 100644 (file)
index b88dde2..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Copyright (C) 2018 Collabora Ltd.
- *
- * Based on dts[i] from Phytec barebox port:
- * Copyright (C) 2016 PHYTEC Messtechnik GmbH
- * Author: Christian Hemp <c.hemp@phytec.de>
- */
-
-/ {
-       model = "Phytec phyCORE-i.MX6 Ultra Lite SOM";
-       compatible = "phytec,imx6ul-pcl063", "fsl,imx6ul";
-
-       memory {
-               reg = <0x80000000 0x20000000>;
-       };
-
-       chosen {
-               stdout-path = &uart1;
-       };
-};
-
-&fec1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_enet1>;
-       phy-mode = "rmii";
-       phy-handle = <&ethphy0>;
-       status = "okay";
-
-       mdio: mdio {
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               ethphy0: ethernet-phy@1 {
-                       reg = <1>;
-                       micrel,led-mode = <1>;
-               };
-       };
-};
-
-&gpmi {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_gpmi_nand>;
-       nand-on-flash-bbt;
-       fsl,no-blockmark-swap;
-       status = "disabled";
-
-       #address-cells = <1>;
-       #size-cells = <1>;
-
-       partition@0 {
-               label = "uboot";
-               reg = <0x0 0x400000>;
-       };
-
-       partition@400000 {
-               label = "uboot-env";
-               reg = <0x400000 0x100000>;
-       };
-
-       partition@500000 {
-               label = "root";
-               reg = <0x500000 0x0>;
-       };
-};
-
-&i2c1 {
-       clock-frequency = <100000>;
-       pinctrl-names = "default", "gpio";
-       pinctrl-0 = <&pinctrl_i2c1>;
-       pinctrl-1 = <&pinctrl_i2c1_gpio>;
-       scl-gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
-       sda-gpios = <&gpio1 29 GPIO_ACTIVE_HIGH>;
-       status = "okay";
-
-       eeprom@52 {
-               compatible = "cat,24c32";
-               reg = <0x52>;
-       };
-};
-
-&uart1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart1>;
-       status = "okay";
-};
-
-&usdhc1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_usdhc1>;
-       cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
-       bus-width = <0x4>;
-       pinctrl-0 = <&pinctrl_usdhc1>;
-       no-1-8-v;
-       status = "okay";
-};
-
-&usdhc2 {
-       u-boot,dm-spl;
-       u-boot,dm-pre-reloc;
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_usdhc2>;
-       bus-width = <8>;
-       no-1-8-v;
-       non-removable;
-       keep-power-in-suspend;
-       status = "disabled";
-};
-
-&iomuxc {
-       pinctrl-names = "default";
-
-       pinctrl_enet1: enet1grp {
-               fsl,pins = <
-                       MX6UL_PAD_GPIO1_IO06__ENET1_MDIO        0x1b0b0
-                       MX6UL_PAD_GPIO1_IO07__ENET1_MDC         0x1b0b0
-                       MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN      0x1b0b0
-                       MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER      0x1b0b0
-                       MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00 0x1b0b0
-                       MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x1b0b0
-                       MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN      0x1b0b0
-                       MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x1b0b0
-                       MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0
-                       MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1  0x4001b031
-               >;
-       };
-
-       pinctrl_gpmi_nand: gpminandgrp {
-               fsl,pins = <
-                       MX6UL_PAD_NAND_CLE__RAWNAND_CLE         0x0b0b1
-                       MX6UL_PAD_NAND_ALE__RAWNAND_ALE         0x0b0b1
-                       MX6UL_PAD_NAND_WP_B__RAWNAND_WP_B       0x0b0b1
-                       MX6UL_PAD_NAND_READY_B__RAWNAND_READY_B 0x0b000
-                       MX6UL_PAD_NAND_CE0_B__RAWNAND_CE0_B     0x0b0b1
-                       MX6UL_PAD_NAND_RE_B__RAWNAND_RE_B       0x0b0b1
-                       MX6UL_PAD_NAND_WE_B__RAWNAND_WE_B       0x0b0b1
-                       MX6UL_PAD_NAND_DATA00__RAWNAND_DATA00   0x0b0b1
-                       MX6UL_PAD_NAND_DATA01__RAWNAND_DATA01   0x0b0b1
-                       MX6UL_PAD_NAND_DATA02__RAWNAND_DATA02   0x0b0b1
-                       MX6UL_PAD_NAND_DATA03__RAWNAND_DATA03   0x0b0b1
-                       MX6UL_PAD_NAND_DATA04__RAWNAND_DATA04   0x0b0b1
-                       MX6UL_PAD_NAND_DATA05__RAWNAND_DATA05   0x0b0b1
-                       MX6UL_PAD_NAND_DATA06__RAWNAND_DATA06   0x0b0b1
-                       MX6UL_PAD_NAND_DATA07__RAWNAND_DATA07   0x0b0b1
-               >;
-       };
-
-       pinctrl_i2c1: i2cgrp {
-               fsl,pins = <
-                       MX6UL_PAD_UART4_TX_DATA__I2C1_SCL       0x4001b8b0
-                       MX6UL_PAD_UART4_RX_DATA__I2C1_SDA       0x4001b8b0
-               >;
-       };
-
-       pinctrl_i2c1_gpio: i2c1grp_gpio {
-               fsl,pins = <
-                       MX6UL_PAD_UART4_TX_DATA__GPIO1_IO28 0x1b8b0
-                       MX6UL_PAD_UART4_RX_DATA__GPIO1_IO29 0x1b8b0
-               >;
-       };
-
-       pinctrl_uart1: uart1grp {
-               fsl,pins = <
-                       MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX   0x1b0b1
-                       MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX   0x1b0b1
-               >;
-       };
-
-       pinctrl_usdhc1: usdhc1grp {
-               fsl,pins = <
-                       MX6UL_PAD_SD1_CMD__USDHC1_CMD           0x17059
-                       MX6UL_PAD_SD1_CLK__USDHC1_CLK           0x10059
-                       MX6UL_PAD_SD1_DATA0__USDHC1_DATA0       0x17059
-                       MX6UL_PAD_SD1_DATA1__USDHC1_DATA1       0x17059
-                       MX6UL_PAD_SD1_DATA2__USDHC1_DATA2       0x17059
-                       MX6UL_PAD_SD1_DATA3__USDHC1_DATA3       0x17059
-                       MX6UL_PAD_UART1_RTS_B__GPIO1_IO19       0x17059
-
-               >;
-       };
-
-       pinctrl_usdhc2: usdhc2grp {
-               fsl,pins = <
-                       MX6UL_PAD_NAND_WE_B__USDHC2_CMD         0x170f9
-                       MX6UL_PAD_NAND_RE_B__USDHC2_CLK         0x100f9
-                       MX6UL_PAD_NAND_DATA00__USDHC2_DATA0     0x170f9
-                       MX6UL_PAD_NAND_DATA01__USDHC2_DATA1     0x170f9
-                       MX6UL_PAD_NAND_DATA02__USDHC2_DATA2     0x170f9
-                       MX6UL_PAD_NAND_DATA03__USDHC2_DATA3     0x170f9
-                       MX6UL_PAD_NAND_DATA04__USDHC2_DATA4     0x170f9
-                       MX6UL_PAD_NAND_DATA05__USDHC2_DATA5     0x170f9
-                       MX6UL_PAD_NAND_DATA06__USDHC2_DATA6     0x170f9
-                       MX6UL_PAD_NAND_DATA07__USDHC2_DATA7     0x170f9
-                       MX6UL_PAD_NAND_ALE__USDHC2_RESET_B      0x170f9
-               >;
-       };
-};
index 53d46256d8baf4f5afd8d3d794b61d29c5917ddd..7a2a2d8edce094b36f59b793d86997db0ef19656 100644 (file)
@@ -703,14 +703,14 @@ struct dram_timing_info {
 extern struct dram_timing_info dram_timing;
 
 void ddr_load_train_firmware(enum fw_type type);
-void ddr_init(struct dram_timing_info *timing_info);
-void ddr_cfg_phy(struct dram_timing_info *timing_info);
+int ddr_init(struct dram_timing_info *timing_info);
+int ddr_cfg_phy(struct dram_timing_info *timing_info);
 void load_lpddr4_phy_pie(void);
 void ddrphy_trained_csr_save(struct dram_cfg_param *param, unsigned int num);
 void dram_config_save(struct dram_timing_info *info, unsigned long base);
 
 /* utils function for ddr phy training */
-void wait_ddrphy_training_complete(void);
+int wait_ddrphy_training_complete(void);
 void ddrphy_init_set_dfi_clk(unsigned int drate);
 void ddrphy_init_read_msg_block(enum fw_type type);
 
index 6e9ffeb6d56af650ede378302e5e17096e73f406..50fdc9cd032665c009159182858cb1986aa8f2b3 100644 (file)
@@ -24,8 +24,10 @@ struct mxs_clkctrl_regs {
        mxs_reg_32(hw_clkctrl_xbus)             /* 0x40 */
        mxs_reg_32(hw_clkctrl_xtal)             /* 0x50 */
        mxs_reg_32(hw_clkctrl_pix)              /* 0x60 */
-       mxs_reg_32(hw_clkctrl_ssp0)             /* 0x70 */
-       mxs_reg_32(hw_clkctrl_gpmi)             /* 0x80 */
+       uint32_t        hw_clkctrl_ssp0;        /* 0x70 */
+       uint32_t        reserved_ssp0[3];       /* 0x74-0x7c */
+       uint32_t        hw_clkctrl_gpmi;        /* 0x80 */
+       uint32_t        reserved_gpmi[3];       /* 0x84-0x8c */
        mxs_reg_32(hw_clkctrl_spdif)            /* 0x90 */
        mxs_reg_32(hw_clkctrl_emi)              /* 0xa0 */
 
index 01e0a7a0539cd5e98f71b05145ebdaaca120ddd0..caef9e4b1fc7cc313ada6496a93a41d88f32befd 100644 (file)
@@ -27,11 +27,16 @@ struct mxs_clkctrl_regs {
        mxs_reg_32(hw_clkctrl_hbus)             /* 0x60 */
        mxs_reg_32(hw_clkctrl_xbus)             /* 0x70 */
        mxs_reg_32(hw_clkctrl_xtal)             /* 0x80 */
-       mxs_reg_32(hw_clkctrl_ssp0)             /* 0x90 */
-       mxs_reg_32(hw_clkctrl_ssp1)             /* 0xa0 */
-       mxs_reg_32(hw_clkctrl_ssp2)             /* 0xb0 */
-       mxs_reg_32(hw_clkctrl_ssp3)             /* 0xc0 */
-       mxs_reg_32(hw_clkctrl_gpmi)             /* 0xd0 */
+       uint32_t        hw_clkctrl_ssp0;        /* 0x90 */
+       uint32_t        reserved_ssp0[3];       /* 0x94-0x9c */
+       uint32_t        hw_clkctrl_ssp1;        /* 0xa0 */
+       uint32_t        reserved_ssp1[3];       /* 0xa4-0xac */
+       uint32_t        hw_clkctrl_ssp2;        /* 0xb0 */
+       uint32_t        reserved_ssp2[3];       /* 0xb4-0xbc */
+       uint32_t        hw_clkctrl_ssp3;        /* 0xc0 */
+       uint32_t        reserved_ssp3[3];       /* 0xc4-0xcc */
+       uint32_t        hw_clkctrl_gpmi;        /* 0xd0 */
+       uint32_t        reserved_gpmi[3];       /* 0xd4-0xdc */
        mxs_reg_32(hw_clkctrl_spdif)            /* 0xe0 */
        mxs_reg_32(hw_clkctrl_emi)              /* 0xf0 */
        mxs_reg_32(hw_clkctrl_saif0)            /* 0x100 */
index c9b509e6a7925bab6077c921956f62e43542b5e4..fff48008087a0abc007d27dc0b3800d71afe0f7f 100644 (file)
@@ -106,6 +106,13 @@ void gpr_init(void);
 
 #endif /* CONFIG_MX6 */
 
+/* address translation table */
+struct rproc_att {
+       u32 da; /* device address (From Cortex M4 view) */
+       u32 sa; /* system bus address */
+       u32 size; /* size of reg range */
+};
+
 #ifdef CONFIG_IMX8M
 struct rom_api {
        u16 ver;
index 9d3ed1aac3cae2fab2811aff9c7e43f31f9d7974..334cc0766eedef7280fddc042cb4d24c45f50f35 100644 (file)
@@ -590,11 +590,14 @@ static char nandbcb_help_text[] =
        "update addr off|partition len  - update 'len' bytes starting at\n"
        "       'off|part' to memory address 'addr', skipping  bad blocks\n"
        "bcbonly fw-size fw1-off [fw2-off] - write only BCB (FCB and DBBT)\n"
-       "       where `fw-size` is fw sizes in bytes, `fw1-off` and\n"
-       "       and `fw2-off` - firmware offsets                ";
+       "       where `fw-size` is fw sizes in bytes, `fw1-off`\n"
+       "       and `fw2-off` - firmware offsets\n"
+       "       FIY, BCB isn't erased automatically, so mtd erase should\n"
+       "       be called in advance before writing new BCB:\n"
+       "           > mtd erase mx7-bcb";
 #endif
 
 U_BOOT_CMD(nandbcb, 5, 1, do_nandbcb,
-          "i.MX6 Nand BCB",
+          "i.MX6/i.MX7 NAND Boot Control Blocks write",
           nandbcb_help_text
 );
index 3d9422d5a219e9e6592210dcb54af078f8903759..21e96f8c883c5cf86c9d0eff6e54188692110716 100644 (file)
 #include <asm/io.h>
 #include <asm/mach-imx/sys_proto.h>
 #include <command.h>
+#include <elf.h>
 #include <imx_sip.h>
 #include <linux/compiler.h>
+#include <cpu_func.h>
 
-int arch_auxiliary_core_up(u32 core_id, ulong boot_private_data)
+#ifndef CONFIG_IMX8M
+const __weak struct rproc_att hostmap[] = { };
+
+static const struct rproc_att *get_host_mapping(unsigned long auxcore)
+{
+       const struct rproc_att *mmap = hostmap;
+
+       while (mmap && mmap->size) {
+               if (mmap->da <= auxcore &&
+                   mmap->da + mmap->size > auxcore)
+                       return mmap;
+               mmap++;
+       }
+
+       return NULL;
+}
+
+/*
+ * A very simple elf loader, assumes the image is valid, returns the
+ * entry point address.
+ */
+static unsigned long load_elf_image_phdr(unsigned long addr)
+{
+       Elf32_Ehdr *ehdr; /* ELF header structure pointer */
+       Elf32_Phdr *phdr; /* Program header structure pointer */
+       int i;
+
+       ehdr = (Elf32_Ehdr *)addr;
+       phdr = (Elf32_Phdr *)(addr + ehdr->e_phoff);
+
+       /* Load each program header */
+       for (i = 0; i < ehdr->e_phnum; ++i, ++phdr) {
+               const struct rproc_att *mmap = get_host_mapping(phdr->p_paddr);
+               void *dst, *src;
+
+               if (phdr->p_type != PT_LOAD)
+                       continue;
+
+               if (!mmap) {
+                       printf("Invalid aux core address: %08x",
+                              phdr->p_paddr);
+                       return 0;
+               }
+
+               dst = (void *)(phdr->p_paddr - mmap->da) + mmap->sa;
+               src = (void *)addr + phdr->p_offset;
+
+               debug("Loading phdr %i to 0x%p (%i bytes)\n",
+                     i, dst, phdr->p_filesz);
+
+               if (phdr->p_filesz)
+                       memcpy(dst, src, phdr->p_filesz);
+               if (phdr->p_filesz != phdr->p_memsz)
+                       memset(dst + phdr->p_filesz, 0x00,
+                              phdr->p_memsz - phdr->p_filesz);
+               flush_cache((unsigned long)dst &
+                           ~(CONFIG_SYS_CACHELINE_SIZE - 1),
+                           ALIGN(phdr->p_filesz, CONFIG_SYS_CACHELINE_SIZE));
+       }
+
+       return ehdr->e_entry;
+}
+#endif
+
+int arch_auxiliary_core_up(u32 core_id, ulong addr)
 {
        ulong stack, pc;
 
-       if (!boot_private_data)
+       if (!addr)
                return -EINVAL;
 
-       stack = *(u32 *)boot_private_data;
-       pc = *(u32 *)(boot_private_data + 4);
+#ifdef CONFIG_IMX8M
+       stack = *(u32 *)addr;
+       pc = *(u32 *)(addr + 4);
+#else
+       /*
+        * handling ELF64 binaries
+        * isn't supported yet.
+        */
+       if (valid_elf_image(addr)) {
+               stack = 0x0;
+               pc = load_elf_image_phdr(addr);
+               if (!pc)
+                       return CMD_RET_FAILURE;
+
+       } else {
+               /*
+                * Assume binary file with vector table at the beginning.
+                * Cortex-M4 vector tables start with the stack pointer (SP)
+                * and reset vector (initial PC).
+                */
+               stack = *(u32 *)addr;
+               pc = *(u32 *)(addr + 4);
+       }
+#endif
+       printf("## Starting auxiliary core stack = 0x%08lX, pc = 0x%08lX...\n",
+              stack, pc);
 
        /* Set the stack and pc to M4 bootROM */
        writel(stack, M4_BOOTROM_BASE_ADDR);
        writel(pc, M4_BOOTROM_BASE_ADDR + 4);
 
+       flush_dcache_all();
+
        /* Enable M4 */
 #ifdef CONFIG_IMX8M
        call_imx_sip(IMX_SIP_SRC, IMX_SIP_SRC_M4_START, 0, 0, 0);
@@ -80,7 +172,8 @@ static int do_bootaux(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
        addr = simple_strtoul(argv[1], NULL, 16);
 
-       printf("## Starting auxiliary core at 0x%08lX ...\n", addr);
+       if (!addr)
+               return CMD_RET_FAILURE;
 
        ret = arch_auxiliary_core_up(0, addr);
        if (ret)
index 1e5df9ae44ae647d5c2c272ae9b1f639eb1c846e..f1a1021f10cd5db81634d461b271466ce0510b64 100644 (file)
@@ -125,16 +125,49 @@ config TARGET_APALIS_IMX6
        imply CMD_DM
        imply CMD_SATA
 
-config TARGET_ARISTAINETOS
-       bool "aristainetos"
-
 config TARGET_ARISTAINETOS2
        bool "aristainetos2"
        select BOARD_LATE_INIT
+       select MX6DL
+       select SYS_I2C_MXC
+       select MXC_UART
+       select FEC_MXC
+       select DM
+       imply CMD_SATA
+       imply CMD_DM
 
 config TARGET_ARISTAINETOS2B
        bool "Support aristainetos2-revB"
        select BOARD_LATE_INIT
+       select MX6DL
+       select SYS_I2C_MXC
+       select MXC_UART
+       select FEC_MXC
+       select DM
+       imply CMD_SATA
+       imply CMD_DM
+
+config TARGET_ARISTAINETOS2BCSL
+       bool "Support aristainetos2-revB CSL"
+       select BOARD_LATE_INIT
+       select MX6DL
+       select SYS_I2C_MXC
+       select MXC_UART
+       select FEC_MXC
+       select DM
+       imply CMD_SATA
+       imply CMD_DM
+
+config TARGET_ARISTAINETOS2C
+       bool "Support aristainetos2-revC"
+       select BOARD_LATE_INIT
+       select MX6DL
+       select SYS_I2C_MXC
+       select MXC_UART
+       select FEC_MXC
+       select DM
+       imply CMD_SATA
+       imply CMD_DM
 
 config TARGET_CGTQMX6EVAL
        bool "cgtqmx6eval"
index 84b92362495a6b540b1f3289afeda1d66b9c6c24..8ed8b79c8b7b2469fcceef2c7f22e956509d586e 100644 (file)
@@ -214,14 +214,14 @@ int mmdc_do_write_level_calibration(struct mx6_ddr_sysinfo const *sysinfo)
        writel(esdmisc_val, &mmdc0->mdref);
        writel(zq_val, &mmdc0->mpzqhwctrl);
 
-       debug("\tMMDC_MPWLDECTRL0 after write level cal: 0x%08X\n",
+       debug("\tMMDC_MPWLDECTRL0 after write level cal: 0x%08x\n",
              readl(&mmdc0->mpwldectrl0));
-       debug("\tMMDC_MPWLDECTRL1 after write level cal: 0x%08X\n",
+       debug("\tMMDC_MPWLDECTRL1 after write level cal: 0x%08x\n",
              readl(&mmdc0->mpwldectrl1));
        if (sysinfo->dsize == 2) {
-               debug("\tMMDC_MPWLDECTRL0 after write level cal: 0x%08X\n",
+               debug("\tMMDC_MPWLDECTRL0 after write level cal: 0x%08x\n",
                      readl(&mmdc1->mpwldectrl0));
-               debug("\tMMDC_MPWLDECTRL1 after write level cal: 0x%08X\n",
+               debug("\tMMDC_MPWLDECTRL1 after write level cal: 0x%08x\n",
                      readl(&mmdc1->mpwldectrl1));
        }
 
@@ -245,12 +245,35 @@ int mmdc_do_write_level_calibration(struct mx6_ddr_sysinfo const *sysinfo)
        return errors;
 }
 
+static void mmdc_set_sdqs(bool set)
+{
+       struct mx6dq_iomux_ddr_regs *mx6dq_ddr_iomux =
+               (struct mx6dq_iomux_ddr_regs *)MX6DQ_IOM_DDR_BASE;
+       struct mx6sx_iomux_ddr_regs *mx6sx_ddr_iomux =
+               (struct mx6sx_iomux_ddr_regs *)MX6SX_IOM_DDR_BASE;
+       int i, sdqs_cnt;
+       u32 sdqs;
+
+       if (is_mx6sx()) {
+               sdqs = (u32)(&mx6sx_ddr_iomux->dram_sdqs0);
+               sdqs_cnt = 2;
+       } else {        /* MX6DQ */
+               sdqs = (u32)(&mx6dq_ddr_iomux->dram_sdqs0);
+               sdqs_cnt = 8;
+       }
+
+       for (i = 0; i < sdqs_cnt; i++) {
+               if (set)
+                       setbits_le32(sdqs + (4 * i), 0x7000);
+               else
+                       clrbits_le32(sdqs + (4 * i), 0x7000);
+       }
+}
+
 int mmdc_do_dqs_calibration(struct mx6_ddr_sysinfo const *sysinfo)
 {
        struct mmdc_p_regs *mmdc0 = (struct mmdc_p_regs *)MMDC_P0_BASE_ADDR;
        struct mmdc_p_regs *mmdc1 = (struct mmdc_p_regs *)MMDC_P1_BASE_ADDR;
-       struct mx6dq_iomux_ddr_regs *mx6_ddr_iomux =
-               (struct mx6dq_iomux_ddr_regs *)MX6DQ_IOM_DDR_BASE;
        bool cs0_enable;
        bool cs1_enable;
        bool cs0_enable_initial;
@@ -272,14 +295,7 @@ int mmdc_do_dqs_calibration(struct mx6_ddr_sysinfo const *sysinfo)
        setbits_le32(&mmdc0->mapsr, 0x1);
 
        /* set DQS pull ups */
-       setbits_le32(&mx6_ddr_iomux->dram_sdqs0, 0x7000);
-       setbits_le32(&mx6_ddr_iomux->dram_sdqs1, 0x7000);
-       setbits_le32(&mx6_ddr_iomux->dram_sdqs2, 0x7000);
-       setbits_le32(&mx6_ddr_iomux->dram_sdqs3, 0x7000);
-       setbits_le32(&mx6_ddr_iomux->dram_sdqs4, 0x7000);
-       setbits_le32(&mx6_ddr_iomux->dram_sdqs5, 0x7000);
-       setbits_le32(&mx6_ddr_iomux->dram_sdqs6, 0x7000);
-       setbits_le32(&mx6_ddr_iomux->dram_sdqs7, 0x7000);
+       mmdc_set_sdqs(true);
 
        /* Save old RALAT and WALAT values */
        esdmisc_val = readl(&mmdc0->mdmisc);
@@ -524,14 +540,7 @@ int mmdc_do_dqs_calibration(struct mx6_ddr_sysinfo const *sysinfo)
        writel(esdmisc_val, &mmdc0->mdmisc);
 
        /* Clear DQS pull ups */
-       clrbits_le32(&mx6_ddr_iomux->dram_sdqs0, 0x7000);
-       clrbits_le32(&mx6_ddr_iomux->dram_sdqs1, 0x7000);
-       clrbits_le32(&mx6_ddr_iomux->dram_sdqs2, 0x7000);
-       clrbits_le32(&mx6_ddr_iomux->dram_sdqs3, 0x7000);
-       clrbits_le32(&mx6_ddr_iomux->dram_sdqs4, 0x7000);
-       clrbits_le32(&mx6_ddr_iomux->dram_sdqs5, 0x7000);
-       clrbits_le32(&mx6_ddr_iomux->dram_sdqs6, 0x7000);
-       clrbits_le32(&mx6_ddr_iomux->dram_sdqs7, 0x7000);
+       mmdc_set_sdqs(false);
 
        /* Re-enable SDE (chip selects) if they were set initially */
        if (cs1_enable_initial)
@@ -557,20 +566,20 @@ int mmdc_do_dqs_calibration(struct mx6_ddr_sysinfo const *sysinfo)
         */
        debug("MMDC registers updated from calibration\n");
        debug("Read DQS gating calibration:\n");
-       debug("\tMPDGCTRL0 PHY0 = 0x%08X\n", readl(&mmdc0->mpdgctrl0));
-       debug("\tMPDGCTRL1 PHY0 = 0x%08X\n", readl(&mmdc0->mpdgctrl1));
+       debug("\tMPDGCTRL0 PHY0 = 0x%08x\n", readl(&mmdc0->mpdgctrl0));
+       debug("\tMPDGCTRL1 PHY0 = 0x%08x\n", readl(&mmdc0->mpdgctrl1));
        if (sysinfo->dsize == 2) {
-               debug("\tMPDGCTRL0 PHY1 = 0x%08X\n", readl(&mmdc1->mpdgctrl0));
-               debug("\tMPDGCTRL1 PHY1 = 0x%08X\n", readl(&mmdc1->mpdgctrl1));
+               debug("\tMPDGCTRL0 PHY1 = 0x%08x\n", readl(&mmdc1->mpdgctrl0));
+               debug("\tMPDGCTRL1 PHY1 = 0x%08x\n", readl(&mmdc1->mpdgctrl1));
        }
        debug("Read calibration:\n");
-       debug("\tMPRDDLCTL PHY0 = 0x%08X\n", readl(&mmdc0->mprddlctl));
+       debug("\tMPRDDLCTL PHY0 = 0x%08x\n", readl(&mmdc0->mprddlctl));
        if (sysinfo->dsize == 2)
-               debug("\tMPRDDLCTL PHY1 = 0x%08X\n", readl(&mmdc1->mprddlctl));
+               debug("\tMPRDDLCTL PHY1 = 0x%08x\n", readl(&mmdc1->mprddlctl));
        debug("Write calibration:\n");
-       debug("\tMPWRDLCTL PHY0 = 0x%08X\n", readl(&mmdc0->mpwrdlctl));
+       debug("\tMPWRDLCTL PHY0 = 0x%08x\n", readl(&mmdc0->mpwrdlctl));
        if (sysinfo->dsize == 2)
-               debug("\tMPWRDLCTL PHY1 = 0x%08X\n", readl(&mmdc1->mpwrdlctl));
+               debug("\tMPWRDLCTL PHY1 = 0x%08x\n", readl(&mmdc1->mpwrdlctl));
 
        /*
         * Registers below are for debugging purposes.  These print out
index 35160f4b379ea23f4f787d3a62ec4e76a0cccbc9..4aafeed188101a6d6f90bc5450a985fba3ff6d8f 100644 (file)
@@ -193,6 +193,34 @@ static void init_cpu_basic(void)
 #endif
 }
 
+#ifdef CONFIG_IMX_BOOTAUX
+/*
+ * Table of mappings of physical mem regions in both
+ * Cortex-A7 and Cortex-M4 address spaces.
+ *
+ * For additional details check sections 2.1.2 and 2.1.3 in
+ * i.MX7Dual Applications Processor Reference Manual
+ *
+ */
+const struct rproc_att hostmap[] = {
+       /* aux core , host core,  size */
+       { 0x00000000, 0x00180000, 0x8000 }, /* OCRAM_S */
+       { 0x00180000, 0x00180000, 0x8000 }, /* OCRAM_S */
+       { 0x20180000, 0x00180000, 0x8000 }, /* OCRAM_S */
+       { 0x1fff8000, 0x007f8000, 0x8000 }, /* TCML */
+       { 0x20000000, 0x00800000, 0x8000 }, /* TCMU */
+       { 0x00900000, 0x00900000, 0x20000 }, /* OCRAM_128KB */
+       { 0x20200000, 0x00900000, 0x20000 }, /* OCRAM_128KB */
+       { 0x00920000, 0x00920000, 0x20000 }, /* OCRAM_EPDC */
+       { 0x20220000, 0x00920000, 0x20000 }, /* OCRAM_EPDC */
+       { 0x00940000, 0x00940000, 0x20000 }, /* OCRAM_PXP */
+       { 0x20240000, 0x00940000, 0x20000 }, /* OCRAM_PXP */
+       { 0x10000000, 0x80000000, 0x0fff0000 }, /* DDR Code alias */
+       { 0x80000000, 0x80000000, 0xe0000000 }, /* DDRC */
+       { /* sentinel */ }
+};
+#endif
+
 #ifndef CONFIG_SKIP_LOWLEVEL_INIT
 /* enable all periherial can be accessed in nosec mode */
 static void init_csu(void)
index 138c58363f53f7fcaea6157222531e051a3cdd43..6680f856c5bd5c49ce8c94cb877c95a33af14a78 100644 (file)
@@ -15,6 +15,11 @@ choice
        prompt "MX7ULP board select"
        optional
 
+config TARGET_MX7ULP_COM
+       bool "Support MX7ULP COM board"
+       select MX7ULP
+       select SYS_ARCH_TIMER
+
 config TARGET_MX7ULP_EVK
        bool "Support mx7ulp EVK board"
        select MX7ULP
@@ -22,6 +27,7 @@ config TARGET_MX7ULP_EVK
 
 endchoice
 
+source "board/ea/mx7ulp_com/Kconfig"
 source "board/freescale/mx7ulp_evk/Kconfig"
 
 endif
index 68072d5a1f29d04290763425c114de4bf1c94998..b90d7b6e4176c65358d6827f14a267dfa106d91c 100644 (file)
@@ -60,6 +60,9 @@ config TARGET_SC_SPS_1
 config TARGET_TS4600
        bool "Support TS4600"
 
+config TARGET_XEA
+       bool "Support XEA"
+
 endchoice
 
 config SYS_SOC
@@ -67,6 +70,7 @@ config SYS_SOC
 
 source "board/bluegiga/apx4devkit/Kconfig"
 source "board/freescale/mx28evk/Kconfig"
+source "board/liebherr/xea/Kconfig"
 source "board/ppcag/bg0900/Kconfig"
 source "board/schulercontrol/sc_sps_1/Kconfig"
 source "board/technologic/ts4600/Kconfig"
index e416c9ac0df0943687abdb9c11612ac815364502..2ad3dbd56cb1eca4d790c15bd4956551be4e2bd8 100644 (file)
@@ -1,29 +1,47 @@
-if TARGET_ARISTAINETOS
+if TARGET_ARISTAINETOS2
+
+source "board/aristainetos/common/Kconfig"
 
 config SYS_BOARD
        default "aristainetos"
 
-config SYS_CONFIG_NAME
+config SYS_BOARD_VERSION
+       default 2
+
+endif
+
+if TARGET_ARISTAINETOS2B
+
+source "board/aristainetos/common/Kconfig"
+
+config SYS_BOARD
        default "aristainetos"
 
+config SYS_BOARD_VERSION
+       default 3
+
 endif
 
-if TARGET_ARISTAINETOS2
+if TARGET_ARISTAINETOS2BCSL
+
+source "board/aristainetos/common/Kconfig"
 
 config SYS_BOARD
        default "aristainetos"
 
-config SYS_CONFIG_NAME
-       default "aristainetos2"
+config SYS_BOARD_VERSION
+       default 4
 
 endif
 
-if TARGET_ARISTAINETOS2B
+if TARGET_ARISTAINETOS2C
+
+source "board/aristainetos/common/Kconfig"
 
 config SYS_BOARD
        default "aristainetos"
 
-config SYS_CONFIG_NAME
-       default "aristainetos2b"
+config SYS_BOARD_VERSION
+       default 5
 
 endif
index b463f7b1763adb945fb0477441cb3cc3c6ed4e20..b4ca7abb9c6c95ff087dce70848a7e6702446db1 100644 (file)
@@ -2,8 +2,35 @@ ARISTAINETOS BOARD
 M:     Heiko Schocher <hs@denx.de>
 S:     Maintained
 F:     board/aristainetos/
-F:     include/configs/aristainetos.h
-F:     configs/aristainetos_defconfig
 F:     include/configs/aristainetos2.h
 F:     configs/aristainetos2_defconfig
 F:     configs/aristainetos2b_defconfig
+F:     configs/aristainetos2bcsl_defconfig
+F:     configs/aristainetos2c_defconfig
+F:     arch/arm/dts/imx6qdl-aristainetos2.dtsi
+F:     arch/arm/dts/imx6qdl-aristainetos2-common.dtsi
+F:     arch/arm/dts/imx6qdl-aristainetos2-u-boot.dtsi
+F:     arch/arm/dts/imx6dl-aristainetos2_7.dts
+F:     arch/arm/dts/imx6dl-aristainetos2_7.dtsi
+F:     arch/arm/dts/imx6dl-aristainetos2_7-u-boot.dtsi
+F:     arch/arm/dts/imx6dl-aristainetos2_4.dts
+F:     arch/arm/dts/imx6dl-aristainetos2_4.dtsi
+F:     arch/arm/dts/imx6dl-aristainetos2_4-u-boot.dtsi
+F:     arch/arm/dts/imx6dl-aristainetos2b_4.dts
+F:     arch/arm/dts/imx6dl-aristainetos2b_4-u-boot.dtsi
+F:     arch/arm/dts/imx6dl-aristainetos2b_7.dts
+F:     arch/arm/dts/imx6dl-aristainetos2b_7-u-boot.dtsi
+F:     arch/arm/dts/imx6qdl-aristainetos2b-u-boot.dtsi
+F:     arch/arm/dts/imx6qdl-aristainetos2b.dtsi
+F:     arch/arm/dts/imx6dl-aristainetos2b_csl_4.dts
+F:     arch/arm/dts/imx6dl-aristainetos2b_csl_4-u-boot.dtsi
+F:     arch/arm/dts/imx6dl-aristainetos2b_csl_7.dts
+F:     arch/arm/dts/imx6dl-aristainetos2b_csl_7-u-boot.dtsi
+F:     arch/arm/dts/imx6qdl-aristainetos2b_csl.dtsi
+F:     arch/arm/dts/imx6qdl-aristainetos2b_csl-u-boot.dtsi
+F:     arch/arm/dts/imx6dl-aristainetos2c_4.dts
+F:     arch/arm/dts/imx6dl-aristainetos2c_4-u-boot.dtsi
+F:     arch/arm/dts/imx6dl-aristainetos2c_7.dts
+F:     arch/arm/dts/imx6dl-aristainetos2c_7-u-boot.dtsi
+F:     arch/arm/dts/imx6qdl-aristainetos2c.dtsi
+F:     arch/arm/dts/imx6qdl-aristainetos2c-u-boot.dtsi
diff --git a/board/aristainetos/aristainetos-v1.c b/board/aristainetos/aristainetos-v1.c
deleted file mode 100644 (file)
index de1a018..0000000
+++ /dev/null
@@ -1,278 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * (C) Copyright 2015
- * Heiko Schocher, DENX Software Engineering, hs@denx.de.
- *
- * Based on:
- * Copyright (C) 2012 Freescale Semiconductor, Inc.
- *
- * Author: Fabio Estevam <fabio.estevam@freescale.com>
- */
-
-#include <asm/arch/clock.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/iomux.h>
-#include <asm/arch/mx6-pins.h>
-#include <linux/errno.h>
-#include <asm/gpio.h>
-#include <asm/mach-imx/iomux-v3.h>
-#include <asm/mach-imx/boot_mode.h>
-#include <asm/mach-imx/mxc_i2c.h>
-#include <asm/mach-imx/video.h>
-#include <mmc.h>
-#include <fsl_esdhc_imx.h>
-#include <miiphy.h>
-#include <netdev.h>
-#include <asm/arch/mxc_hdmi.h>
-#include <asm/arch/crm_regs.h>
-#include <linux/fb.h>
-#include <ipu_pixfmt.h>
-#include <asm/io.h>
-#include <asm/arch/sys_proto.h>
-#include <pwm.h>
-
-struct i2c_pads_info i2c_pad_info3 = {
-       .scl = {
-               .i2c_mode = MX6_PAD_EIM_D17__I2C3_SCL | PC,
-               .gpio_mode = MX6_PAD_EIM_D17__GPIO3_IO17 | PC,
-               .gp = IMX_GPIO_NR(3, 17)
-       },
-       .sda = {
-               .i2c_mode = MX6_PAD_EIM_D18__I2C3_SDA | PC,
-               .gpio_mode = MX6_PAD_EIM_D18__GPIO3_IO18 | PC,
-               .gp = IMX_GPIO_NR(3, 18)
-       }
-};
-
-iomux_v3_cfg_t const uart1_pads[] = {
-       MX6_PAD_CSI0_DAT10__UART1_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
-       MX6_PAD_CSI0_DAT11__UART1_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
-};
-
-iomux_v3_cfg_t const uart5_pads[] = {
-       MX6_PAD_CSI0_DAT14__UART5_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
-       MX6_PAD_CSI0_DAT15__UART5_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
-};
-
-iomux_v3_cfg_t const gpio_pads[] = {
-       /* LED enable */
-       MX6_PAD_SD4_DAT5__GPIO2_IO13 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* spi flash WP protect */
-       MX6_PAD_SD4_DAT7__GPIO2_IO15 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* backlight enable */
-       MX6_PAD_GPIO_2__GPIO1_IO02 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* LED yellow */
-       MX6_PAD_GPIO_3__GPIO1_IO03 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* LED red */
-       MX6_PAD_GPIO_4__GPIO1_IO04 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* LED green */
-       MX6_PAD_GPIO_5__GPIO1_IO05 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* LED blue */
-       MX6_PAD_GPIO_6__GPIO1_IO06 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* i2c4 scl */
-       MX6_PAD_GPIO_7__GPIO1_IO07 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* i2c4 sda */
-       MX6_PAD_GPIO_8__GPIO1_IO08 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* spi CS 1 */
-       MX6_PAD_EIM_A25__GPIO5_IO02 | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-
-static iomux_v3_cfg_t const misc_pads[] = {
-       MX6_PAD_GPIO_1__USB_OTG_ID              | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* OTG Power enable */
-       MX6_PAD_EIM_D31__GPIO3_IO31             | MUX_PAD_CTRL(NO_PAD_CTRL),
-       MX6_PAD_KEY_ROW4__GPIO4_IO15            | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-
-iomux_v3_cfg_t const enet_pads[] = {
-       MX6_PAD_GPIO_16__ENET_REF_CLK   | MUX_PAD_CTRL(0x4001b0a8),
-       MX6_PAD_ENET_MDIO__ENET_MDIO    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_MDC__ENET_MDC      | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_TXD0__ENET_TX_DATA0 | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_TXD1__ENET_TX_DATA1 | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_TX_EN__ENET_TX_EN  | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_RX_ER__ENET_RX_ER  | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_RXD0__ENET_RX_DATA0 | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_RXD1__ENET_RX_DATA1 | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_CRS_DV__ENET_RX_EN | MUX_PAD_CTRL(ENET_PAD_CTRL),
-};
-
-static void setup_iomux_enet(void)
-{
-       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
-
-       imx_iomux_v3_setup_multiple_pads(enet_pads, ARRAY_SIZE(enet_pads));
-
-       /* set GPIO_16 as ENET_REF_CLK_OUT */
-       setbits_le32(&iomux->gpr[1], IOMUXC_GPR1_ENET_CLK_SEL_MASK);
-}
-
-static iomux_v3_cfg_t const backlight_pads[] = {
-       MX6_PAD_GPIO_9__PWM1_OUT | MUX_PAD_CTRL(NO_PAD_CTRL),
-       MX6_PAD_SD4_DAT1__PWM3_OUT | MUX_PAD_CTRL(NO_PAD_CTRL),
-       MX6_PAD_GPIO_2__GPIO1_IO02 | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-
-iomux_v3_cfg_t const ecspi4_pads[] = {
-       MX6_PAD_EIM_D21__ECSPI4_SCLK | MUX_PAD_CTRL(NO_PAD_CTRL),
-       MX6_PAD_EIM_D22__ECSPI4_MISO | MUX_PAD_CTRL(NO_PAD_CTRL),
-       MX6_PAD_EIM_D28__ECSPI4_MOSI | MUX_PAD_CTRL(NO_PAD_CTRL),
-       MX6_PAD_EIM_D20__GPIO3_IO20 | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-
-static iomux_v3_cfg_t const display_pads[] = {
-       MX6_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK | MUX_PAD_CTRL(DISP_PAD_CTRL),
-       MX6_PAD_DI0_PIN15__IPU1_DI0_PIN15,
-       MX6_PAD_DI0_PIN2__IPU1_DI0_PIN02,
-       MX6_PAD_DI0_PIN3__IPU1_DI0_PIN03,
-       MX6_PAD_DI0_PIN4__GPIO4_IO20,
-       MX6_PAD_DISP0_DAT0__IPU1_DISP0_DATA00,
-       MX6_PAD_DISP0_DAT1__IPU1_DISP0_DATA01,
-       MX6_PAD_DISP0_DAT2__IPU1_DISP0_DATA02,
-       MX6_PAD_DISP0_DAT3__IPU1_DISP0_DATA03,
-       MX6_PAD_DISP0_DAT4__IPU1_DISP0_DATA04,
-       MX6_PAD_DISP0_DAT5__IPU1_DISP0_DATA05,
-       MX6_PAD_DISP0_DAT6__IPU1_DISP0_DATA06,
-       MX6_PAD_DISP0_DAT7__IPU1_DISP0_DATA07,
-       MX6_PAD_DISP0_DAT8__IPU1_DISP0_DATA08,
-       MX6_PAD_DISP0_DAT9__IPU1_DISP0_DATA09,
-       MX6_PAD_DISP0_DAT10__IPU1_DISP0_DATA10,
-       MX6_PAD_DISP0_DAT11__IPU1_DISP0_DATA11,
-       MX6_PAD_DISP0_DAT12__IPU1_DISP0_DATA12,
-       MX6_PAD_DISP0_DAT13__IPU1_DISP0_DATA13,
-       MX6_PAD_DISP0_DAT14__IPU1_DISP0_DATA14,
-       MX6_PAD_DISP0_DAT15__IPU1_DISP0_DATA15,
-       MX6_PAD_DISP0_DAT16__IPU1_DISP0_DATA16,
-       MX6_PAD_DISP0_DAT17__IPU1_DISP0_DATA17,
-       MX6_PAD_DISP0_DAT18__IPU1_DISP0_DATA18,
-       MX6_PAD_DISP0_DAT19__IPU1_DISP0_DATA19,
-       MX6_PAD_DISP0_DAT20__IPU1_DISP0_DATA20,
-       MX6_PAD_DISP0_DAT21__IPU1_DISP0_DATA21,
-       MX6_PAD_DISP0_DAT22__IPU1_DISP0_DATA22,
-       MX6_PAD_DISP0_DAT23__IPU1_DISP0_DATA23,
-};
-
-int board_spi_cs_gpio(unsigned bus, unsigned cs)
-{
-       return (bus == CONFIG_SF_DEFAULT_BUS && cs == CONFIG_SF_DEFAULT_CS)
-               ? (IMX_GPIO_NR(3, 20)) : -1;
-}
-
-static void setup_spi(void)
-{
-       int i;
-
-       imx_iomux_v3_setup_multiple_pads(ecspi4_pads, ARRAY_SIZE(ecspi4_pads));
-       for (i = 0; i < 3; i++)
-               enable_spi_clk(true, i);
-
-       /* set cs1 to high */
-       gpio_direction_output(ECSPI4_CS1, 1);
-}
-
-static void setup_iomux_uart(void)
-{
-       imx_iomux_v3_setup_multiple_pads(uart5_pads, ARRAY_SIZE(uart5_pads));
-}
-
-int board_eth_init(bd_t *bis)
-{
-       struct iomuxc *iomuxc_regs =
-                               (struct iomuxc *)IOMUXC_BASE_ADDR;
-       int ret;
-
-       /* clear gpr1[14], gpr1[18:17] to select anatop clock */
-       clrsetbits_le32(&iomuxc_regs->gpr[1], IOMUX_GPR1_FEC_MASK, 0);
-
-       ret = enable_fec_anatop_clock(0, ENET_50MHZ);
-       if (ret)
-               return ret;
-
-       setup_iomux_enet();
-       return cpu_eth_init(bis);
-}
-
-static void enable_lvds(struct display_info_t const *dev)
-{
-       imx_iomux_v3_setup_multiple_pads(
-               display_pads,
-                ARRAY_SIZE(display_pads));
-       imx_iomux_v3_setup_multiple_pads(
-               backlight_pads,
-                ARRAY_SIZE(backlight_pads));
-
-       /* enable backlight PWM 3 */
-       if (pwm_init(2, 0, 0))
-               goto error;
-       /* duty cycle 500ns, period: 3000ns */
-       if (pwm_config(2, 500, 3000))
-               goto error;
-       if (pwm_enable(2))
-               goto error;
-       return;
-
-error:
-       puts("error init pwm for backlight\n");
-       return;
-}
-
-static void setup_display(void)
-{
-       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-       int reg;
-
-       enable_ipu_clock();
-
-       reg = readl(&mxc_ccm->cs2cdr);
-       /* select pll 5 clock */
-       reg &= MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK;
-       reg &= MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK;
-       writel(reg, &mxc_ccm->cs2cdr);
-
-       imx_iomux_v3_setup_multiple_pads(backlight_pads,
-                                        ARRAY_SIZE(backlight_pads));
-}
-
-static void setup_iomux_gpio(void)
-{
-       imx_iomux_v3_setup_multiple_pads(gpio_pads, ARRAY_SIZE(gpio_pads));
-}
-
-int board_early_init_f(void)
-{
-       setup_iomux_uart();
-       setup_iomux_gpio();
-
-       setup_display();
-       return 0;
-}
-
-
-static void setup_i2c4(void)
-{
-       /* i2c4 not used, set it to gpio input */
-       gpio_request(IMX_GPIO_NR(1, 7), "i2c4_scl");
-       gpio_direction_input(IMX_GPIO_NR(1, 7));
-       gpio_request(IMX_GPIO_NR(1, 8), "i2c4_sda");
-       gpio_direction_input(IMX_GPIO_NR(1, 8));
-}
-
-static void setup_board_gpio(void)
-{
-       /* enable LED */
-       gpio_request(IMX_GPIO_NR(2, 13), "LED ena");
-       gpio_direction_output(IMX_GPIO_NR(2, 13), 0);
-
-       gpio_request(IMX_GPIO_NR(1, 3), "LED yellow");
-       gpio_direction_output(IMX_GPIO_NR(1, 3), 1);
-       gpio_request(IMX_GPIO_NR(1, 4), "LED red");
-       gpio_direction_output(IMX_GPIO_NR(1, 4), 1);
-       gpio_request(IMX_GPIO_NR(1, 5), "LED green");
-       gpio_direction_output(IMX_GPIO_NR(1, 5), 1);
-       gpio_request(IMX_GPIO_NR(1, 6), "LED blue");
-       gpio_direction_output(IMX_GPIO_NR(1, 6), 1);
-}
-
-static void setup_board_spi(void)
-{
-}
diff --git a/board/aristainetos/aristainetos-v2.c b/board/aristainetos/aristainetos-v2.c
deleted file mode 100644 (file)
index a12c063..0000000
+++ /dev/null
@@ -1,687 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * (C) Copyright 2015
- * Heiko Schocher, DENX Software Engineering, hs@denx.de.
- *
- * Based on:
- * Copyright (C) 2012 Freescale Semiconductor, Inc.
- *
- * Author: Fabio Estevam <fabio.estevam@freescale.com>
- */
-
-#include <init.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/iomux.h>
-#include <asm/arch/mx6-pins.h>
-#include <env.h>
-#include <linux/errno.h>
-#include <asm/gpio.h>
-#include <asm/mach-imx/iomux-v3.h>
-#include <asm/mach-imx/boot_mode.h>
-#include <asm/mach-imx/mxc_i2c.h>
-#include <asm/mach-imx/video.h>
-#include <mmc.h>
-#include <fsl_esdhc_imx.h>
-#include <miiphy.h>
-#include <netdev.h>
-#include <asm/arch/mxc_hdmi.h>
-#include <asm/arch/crm_regs.h>
-#include <linux/fb.h>
-#include <ipu_pixfmt.h>
-#include <asm/io.h>
-#include <asm/arch/sys_proto.h>
-#include <pwm.h>
-#include <micrel.h>
-#include <spi.h>
-#include <video.h>
-#include <../drivers/video/imx/ipu.h>
-#if defined(CONFIG_VIDEO_BMP_LOGO)
-       #include <bmp_logo.h>
-#endif
-
-#define USDHC2_PAD_CTRL (PAD_CTL_SPEED_LOW |                   \
-       PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST)
-
-#if (CONFIG_SYS_BOARD_VERSION == 2)
-       /* 4.3 display controller */
-       #define ECSPI1_CS0              IMX_GPIO_NR(4, 9)
-       #define ECSPI4_CS0              IMX_GPIO_NR(3, 29)
-#elif (CONFIG_SYS_BOARD_VERSION == 3)
-       #define ECSPI1_CS0              IMX_GPIO_NR(2, 30)   /* NOR flash */
-       /* 4.3 display controller */
-       #define ECSPI1_CS1              IMX_GPIO_NR(4, 10)
-#endif
-
-#define SOFT_RESET_GPIO                IMX_GPIO_NR(7, 13)
-#define SD2_DRIVER_ENABLE      IMX_GPIO_NR(7, 8)
-
-struct i2c_pads_info i2c_pad_info3 = {
-       .scl = {
-               .i2c_mode = MX6_PAD_GPIO_5__I2C3_SCL | PC,
-               .gpio_mode = MX6_PAD_GPIO_5__GPIO1_IO05 | PC,
-               .gp = IMX_GPIO_NR(1, 5)
-       },
-       .sda = {
-               .i2c_mode = MX6_PAD_GPIO_6__I2C3_SDA | PC,
-               .gpio_mode = MX6_PAD_GPIO_6__GPIO1_IO06 | PC,
-               .gp = IMX_GPIO_NR(1, 6)
-       }
-};
-
-struct i2c_pads_info i2c_pad_info4 = {
-       .scl = {
-               .i2c_mode = MX6_PAD_GPIO_7__I2C4_SCL | PC,
-               .gpio_mode = MX6_PAD_GPIO_7__GPIO1_IO07 | PC,
-               .gp = IMX_GPIO_NR(1, 7)
-       },
-       .sda = {
-               .i2c_mode = MX6_PAD_GPIO_8__I2C4_SDA | PC,
-               .gpio_mode = MX6_PAD_GPIO_8__GPIO1_IO08 | PC,
-               .gp = IMX_GPIO_NR(1, 8)
-       }
-};
-
-iomux_v3_cfg_t const uart1_pads[] = {
-       MX6_PAD_CSI0_DAT10__UART1_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
-       MX6_PAD_CSI0_DAT11__UART1_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
-       MX6_PAD_EIM_D19__UART1_CTS_B    | MUX_PAD_CTRL(UART_PAD_CTRL),
-       MX6_PAD_EIM_D20__UART1_RTS_B    | MUX_PAD_CTRL(UART_PAD_CTRL),
-};
-
-iomux_v3_cfg_t const uart2_pads[] = {
-       MX6_PAD_EIM_D26__UART2_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
-       MX6_PAD_EIM_D27__UART2_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
-};
-
-iomux_v3_cfg_t const uart3_pads[] = {
-       MX6_PAD_EIM_D24__UART3_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
-       MX6_PAD_EIM_D25__UART3_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
-       MX6_PAD_EIM_D31__UART3_RTS_B | MUX_PAD_CTRL(UART_PAD_CTRL),
-       MX6_PAD_EIM_D23__UART3_CTS_B | MUX_PAD_CTRL(UART_PAD_CTRL),
-};
-
-iomux_v3_cfg_t const uart4_pads[] = {
-       MX6_PAD_KEY_COL0__UART4_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
-       MX6_PAD_KEY_ROW0__UART4_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
-};
-
-iomux_v3_cfg_t const gpio_pads[] = {
-       /* LED enable*/
-       MX6_PAD_ENET_CRS_DV__GPIO1_IO25 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* LED yellow */
-       MX6_PAD_NANDF_CS3__GPIO6_IO16 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* LED red */
-#if (CONFIG_SYS_BOARD_VERSION == 2)
-       MX6_PAD_EIM_EB0__GPIO2_IO28 | MUX_PAD_CTRL(NO_PAD_CTRL),
-#elif (CONFIG_SYS_BOARD_VERSION == 3)
-       MX6_PAD_EIM_WAIT__GPIO5_IO00 | MUX_PAD_CTRL(NO_PAD_CTRL),
-#endif
-       /* LED green */
-       MX6_PAD_EIM_A24__GPIO5_IO04 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* LED blue */
-       MX6_PAD_EIM_EB1__GPIO2_IO29 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* spi flash WP protect */
-       MX6_PAD_SD4_DAT7__GPIO2_IO15 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* spi CS 0 */
-       MX6_PAD_EIM_D29__GPIO3_IO29 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* spi bus #2 SS driver enable */
-       MX6_PAD_EIM_A23__GPIO6_IO06 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* RST_LOC# PHY reset input (has pull-down!)*/
-       MX6_PAD_GPIO_18__GPIO7_IO13 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* SD 2 level shifter output enable */
-       MX6_PAD_SD3_RST__GPIO7_IO08 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* SD1 card detect input */
-       MX6_PAD_ENET_RXD0__GPIO1_IO27 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* SD1 write protect input */
-       MX6_PAD_DI0_PIN4__GPIO4_IO20 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* SD2 card detect input */
-       MX6_PAD_GPIO_19__GPIO4_IO05 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* SD2 write protect input */
-       MX6_PAD_SD4_DAT2__GPIO2_IO10 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* Touchscreen IRQ */
-       MX6_PAD_SD4_DAT1__GPIO2_IO09 | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-
-static iomux_v3_cfg_t const misc_pads[] = {
-       /* USB_OTG_ID = GPIO1_24*/
-       MX6_PAD_ENET_RX_ER__USB_OTG_ID          | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* H1 Power enable = GPIO1_0*/
-       MX6_PAD_GPIO_0__USB_H1_PWR              | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* OTG Power enable = GPIO4_15*/
-       MX6_PAD_KEY_ROW4__USB_OTG_PWR           | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-
-iomux_v3_cfg_t const enet_pads[] = {
-       MX6_PAD_ENET_MDIO__ENET_MDIO            | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_MDC__ENET_MDC              | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_TXC__RGMII_TXC    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_TD0__RGMII_TD0    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_TD1__RGMII_TD1    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_TD2__RGMII_TD2    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_TD3__RGMII_TD3    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_TX_CTL__RGMII_TX_CTL      | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_REF_CLK__ENET_TX_CLK       | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_RXC__RGMII_RXC    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_RD0__RGMII_RD0    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_RD1__RGMII_RD1    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_RD2__RGMII_RD2    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_RD3__RGMII_RD3    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_RX_CTL__RGMII_RX_CTL      | MUX_PAD_CTRL(ENET_PAD_CTRL),
-};
-
-static iomux_v3_cfg_t const backlight_pads[] = {
-       /* backlight PWM brightness control */
-       MX6_PAD_GPIO_9__PWM1_OUT | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* backlight enable */
-       MX6_PAD_EIM_BCLK__GPIO6_IO31 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       /* LCD power enable */
-       MX6_PAD_NANDF_CS2__GPIO6_IO15 | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-
-static iomux_v3_cfg_t const ecspi1_pads[] = {
-       MX6_PAD_EIM_D16__ECSPI1_SCLK | MUX_PAD_CTRL(SPI_PAD_CTRL),
-       MX6_PAD_EIM_D17__ECSPI1_MISO | MUX_PAD_CTRL(SPI_PAD_CTRL),
-       MX6_PAD_EIM_D18__ECSPI1_MOSI | MUX_PAD_CTRL(SPI_PAD_CTRL),
-#if (CONFIG_SYS_BOARD_VERSION == 2)
-       MX6_PAD_KEY_ROW1__GPIO4_IO09 | MUX_PAD_CTRL(SPI_PAD_CTRL),
-#elif (CONFIG_SYS_BOARD_VERSION == 3)
-       MX6_PAD_EIM_EB2__GPIO2_IO30  | MUX_PAD_CTRL(SPI_PAD_CTRL),
-       MX6_PAD_KEY_COL2__GPIO4_IO10 | MUX_PAD_CTRL(NO_PAD_CTRL),
-#endif
-};
-
-static void setup_iomux_enet(void)
-{
-       imx_iomux_v3_setup_multiple_pads(enet_pads, ARRAY_SIZE(enet_pads));
-}
-
-#if (CONFIG_SYS_BOARD_VERSION == 2)
-iomux_v3_cfg_t const ecspi4_pads[] = {
-       MX6_PAD_EIM_D21__ECSPI4_SCLK | MUX_PAD_CTRL(NO_PAD_CTRL),
-       MX6_PAD_EIM_D22__ECSPI4_MISO | MUX_PAD_CTRL(NO_PAD_CTRL),
-       MX6_PAD_EIM_D28__ECSPI4_MOSI | MUX_PAD_CTRL(NO_PAD_CTRL),
-       MX6_PAD_EIM_A25__GPIO5_IO02  | MUX_PAD_CTRL(NO_PAD_CTRL),
-       MX6_PAD_EIM_D29__GPIO3_IO29  | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-#endif
-
-static iomux_v3_cfg_t const display_pads[] = {
-       MX6_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK | MUX_PAD_CTRL(DISP_PAD_CTRL),
-       MX6_PAD_DI0_PIN15__IPU1_DI0_PIN15,
-       MX6_PAD_DI0_PIN2__IPU1_DI0_PIN02,
-       MX6_PAD_DI0_PIN3__IPU1_DI0_PIN03,
-       MX6_PAD_DISP0_DAT0__IPU1_DISP0_DATA00,
-       MX6_PAD_DISP0_DAT1__IPU1_DISP0_DATA01,
-       MX6_PAD_DISP0_DAT2__IPU1_DISP0_DATA02,
-       MX6_PAD_DISP0_DAT3__IPU1_DISP0_DATA03,
-       MX6_PAD_DISP0_DAT4__IPU1_DISP0_DATA04,
-       MX6_PAD_DISP0_DAT5__IPU1_DISP0_DATA05,
-       MX6_PAD_DISP0_DAT6__IPU1_DISP0_DATA06,
-       MX6_PAD_DISP0_DAT7__IPU1_DISP0_DATA07,
-       MX6_PAD_DISP0_DAT8__IPU1_DISP0_DATA08,
-       MX6_PAD_DISP0_DAT9__IPU1_DISP0_DATA09,
-       MX6_PAD_DISP0_DAT10__IPU1_DISP0_DATA10,
-       MX6_PAD_DISP0_DAT11__IPU1_DISP0_DATA11,
-       MX6_PAD_DISP0_DAT12__IPU1_DISP0_DATA12,
-       MX6_PAD_DISP0_DAT13__IPU1_DISP0_DATA13,
-       MX6_PAD_DISP0_DAT14__IPU1_DISP0_DATA14,
-       MX6_PAD_DISP0_DAT15__IPU1_DISP0_DATA15,
-       MX6_PAD_DISP0_DAT16__IPU1_DISP0_DATA16,
-       MX6_PAD_DISP0_DAT17__IPU1_DISP0_DATA17,
-       MX6_PAD_DISP0_DAT18__IPU1_DISP0_DATA18,
-       MX6_PAD_DISP0_DAT19__IPU1_DISP0_DATA19,
-       MX6_PAD_DISP0_DAT20__IPU1_DISP0_DATA20,
-       MX6_PAD_DISP0_DAT21__IPU1_DISP0_DATA21,
-       MX6_PAD_DISP0_DAT22__IPU1_DISP0_DATA22,
-       MX6_PAD_DISP0_DAT23__IPU1_DISP0_DATA23,
-};
-
-int board_spi_cs_gpio(unsigned bus, unsigned cs)
-{
-       if (bus == CONFIG_SF_DEFAULT_BUS && cs == CONFIG_SF_DEFAULT_CS)
-#if (CONFIG_SYS_BOARD_VERSION == 2)
-               return IMX_GPIO_NR(5, 2);
-
-       if (bus == 0 && cs == 0)
-               return IMX_GPIO_NR(4, 9);
-#elif (CONFIG_SYS_BOARD_VERSION == 3)
-               return ECSPI1_CS0;
-
-       if (bus == 0 && cs == 1)
-               return ECSPI1_CS1;
-#endif
-       return -1;
-}
-
-static void setup_spi(void)
-{
-       int i;
-
-       imx_iomux_v3_setup_multiple_pads(ecspi1_pads, ARRAY_SIZE(ecspi1_pads));
-
-#if (CONFIG_SYS_BOARD_VERSION == 2)
-       imx_iomux_v3_setup_multiple_pads(ecspi4_pads, ARRAY_SIZE(ecspi4_pads));
-#endif
-
-       for (i = 0; i < 4; i++)
-               enable_spi_clk(true, i);
-
-       gpio_direction_output(ECSPI1_CS0, 1);
-#if (CONFIG_SYS_BOARD_VERSION == 2)
-       gpio_direction_output(ECSPI4_CS1, 0);
-       /* set cs0 to high (second device on spi bus #4) */
-       gpio_direction_output(ECSPI4_CS0, 1);
-#elif (CONFIG_SYS_BOARD_VERSION == 3)
-       gpio_direction_output(ECSPI1_CS1, 1);
-#endif
-}
-
-static void setup_iomux_uart(void)
-{
-       switch (CONFIG_MXC_UART_BASE) {
-       case UART1_BASE:
-               imx_iomux_v3_setup_multiple_pads(uart1_pads,
-                                                ARRAY_SIZE(uart1_pads));
-               break;
-       case UART2_BASE:
-               imx_iomux_v3_setup_multiple_pads(uart2_pads,
-                                                ARRAY_SIZE(uart2_pads));
-               break;
-       case UART3_BASE:
-               imx_iomux_v3_setup_multiple_pads(uart3_pads,
-                                                ARRAY_SIZE(uart3_pads));
-               break;
-       case UART4_BASE:
-               imx_iomux_v3_setup_multiple_pads(uart4_pads,
-                                                ARRAY_SIZE(uart4_pads));
-               break;
-       }
-}
-
-int board_phy_config(struct phy_device *phydev)
-{
-       /* control data pad skew - devaddr = 0x02, register = 0x04 */
-       ksz9031_phy_extended_write(phydev, 0x02,
-                                  MII_KSZ9031_EXT_RGMII_CTRL_SIG_SKEW,
-                                  MII_KSZ9031_MOD_DATA_NO_POST_INC, 0x0000);
-       /* rx data pad skew - devaddr = 0x02, register = 0x05 */
-       ksz9031_phy_extended_write(phydev, 0x02,
-                                  MII_KSZ9031_EXT_RGMII_RX_DATA_SKEW,
-                                  MII_KSZ9031_MOD_DATA_NO_POST_INC, 0x0000);
-       /* tx data pad skew - devaddr = 0x02, register = 0x06 */
-       ksz9031_phy_extended_write(phydev, 0x02,
-                                  MII_KSZ9031_EXT_RGMII_TX_DATA_SKEW,
-                                  MII_KSZ9031_MOD_DATA_NO_POST_INC, 0x0000);
-       /* gtx and rx clock pad skew - devaddr = 0x02, register = 0x08 */
-       ksz9031_phy_extended_write(phydev, 0x02,
-                                  MII_KSZ9031_EXT_RGMII_CLOCK_SKEW,
-                                  MII_KSZ9031_MOD_DATA_NO_POST_INC, 0x03FF);
-
-       if (phydev->drv->config)
-               phydev->drv->config(phydev);
-
-       return 0;
-}
-
-int board_eth_init(bd_t *bis)
-{
-       setup_iomux_enet();
-       return cpu_eth_init(bis);
-}
-
-static int rotate_logo_one(unsigned char *out, unsigned char *in)
-{
-       int   i, j;
-
-       for (i = 0; i < BMP_LOGO_WIDTH; i++)
-               for (j = 0; j < BMP_LOGO_HEIGHT; j++)
-                       out[j * BMP_LOGO_WIDTH + BMP_LOGO_HEIGHT - 1 - i] =
-                       in[i * BMP_LOGO_WIDTH + j];
-       return 0;
-}
-
-/*
- * Rotate the BMP_LOGO (only)
- * Will only work, if the logo is square, as
- * BMP_LOGO_HEIGHT and BMP_LOGO_WIDTH are defines, not variables
- */
-void rotate_logo(int rotations)
-{
-       unsigned char out_logo[BMP_LOGO_WIDTH * BMP_LOGO_HEIGHT];
-       unsigned char *in_logo;
-       int   i, j;
-
-       if (BMP_LOGO_WIDTH != BMP_LOGO_HEIGHT)
-               return;
-
-       in_logo = bmp_logo_bitmap;
-
-       /* one 90 degree rotation */
-       if (rotations == 1  ||  rotations == 2  ||  rotations == 3)
-               rotate_logo_one(out_logo, in_logo);
-
-       /* second 90 degree rotation */
-       if (rotations == 2  ||  rotations == 3)
-               rotate_logo_one(in_logo, out_logo);
-
-       /* third 90 degree rotation */
-       if (rotations == 3)
-               rotate_logo_one(out_logo, in_logo);
-
-       /* copy result back to original array */
-       if (rotations == 1  ||  rotations == 3)
-               for (i = 0; i < BMP_LOGO_WIDTH; i++)
-                       for (j = 0; j < BMP_LOGO_HEIGHT; j++)
-                               in_logo[i * BMP_LOGO_WIDTH + j] =
-                               out_logo[i * BMP_LOGO_WIDTH + j];
-}
-
-static void enable_display_power(void)
-{
-       imx_iomux_v3_setup_multiple_pads(backlight_pads,
-                                        ARRAY_SIZE(backlight_pads));
-
-       /* backlight enable */
-       gpio_direction_output(IMX_GPIO_NR(6, 31), 1);
-       /* LCD power enable */
-       gpio_direction_output(IMX_GPIO_NR(6, 15), 1);
-
-       /* enable backlight PWM 1 */
-       if (pwm_init(0, 0, 0))
-               goto error;
-       /* duty cycle 500ns, period: 3000ns */
-       if (pwm_config(0, 50000, 300000))
-               goto error;
-       if (pwm_enable(0))
-               goto error;
-       return;
-
-error:
-       puts("error init pwm for backlight\n");
-       return;
-}
-
-static void enable_lvds(struct display_info_t const *dev)
-{
-       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
-       struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-       int reg;
-       s32 timeout = 100000;
-
-       /* set PLL5 clock */
-       reg = readl(&ccm->analog_pll_video);
-       reg |= BM_ANADIG_PLL_VIDEO_POWERDOWN;
-       writel(reg, &ccm->analog_pll_video);
-
-       /* set PLL5 to 232720000Hz */
-       reg &= ~BM_ANADIG_PLL_VIDEO_DIV_SELECT;
-       reg |= BF_ANADIG_PLL_VIDEO_DIV_SELECT(0x26);
-       reg &= ~BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT;
-       reg |= BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(0);
-       writel(reg, &ccm->analog_pll_video);
-
-       writel(BF_ANADIG_PLL_VIDEO_NUM_A(0xC0238),
-              &ccm->analog_pll_video_num);
-       writel(BF_ANADIG_PLL_VIDEO_DENOM_B(0xF4240),
-              &ccm->analog_pll_video_denom);
-
-       reg &= ~BM_ANADIG_PLL_VIDEO_POWERDOWN;
-       writel(reg, &ccm->analog_pll_video);
-
-       while (timeout--)
-               if (readl(&ccm->analog_pll_video) & BM_ANADIG_PLL_VIDEO_LOCK)
-                       break;
-       if (timeout < 0)
-               printf("Warning: video pll lock timeout!\n");
-
-       reg = readl(&ccm->analog_pll_video);
-       reg |= BM_ANADIG_PLL_VIDEO_ENABLE;
-       reg &= ~BM_ANADIG_PLL_VIDEO_BYPASS;
-       writel(reg, &ccm->analog_pll_video);
-
-       /* set LDB0, LDB1 clk select to 000/000 (PLL5 clock) */
-       reg = readl(&ccm->cs2cdr);
-       reg &= ~(MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK
-                | MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK);
-       reg |= (0 << MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET)
-               | (0 << MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET);
-       writel(reg, &ccm->cs2cdr);
-
-       reg = readl(&ccm->cscmr2);
-       reg |= MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV;
-       writel(reg, &ccm->cscmr2);
-
-       reg = readl(&ccm->chsccdr);
-       reg |= (CHSCCDR_CLK_SEL_LDB_DI0
-               << MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_OFFSET);
-       writel(reg, &ccm->chsccdr);
-
-       reg = IOMUXC_GPR2_BGREF_RRMODE_EXTERNAL_RES
-             | IOMUXC_GPR2_DI1_VS_POLARITY_ACTIVE_HIGH
-             | IOMUXC_GPR2_DI0_VS_POLARITY_ACTIVE_HIGH
-             | IOMUXC_GPR2_BIT_MAPPING_CH0_SPWG
-             | IOMUXC_GPR2_DATA_WIDTH_CH0_24BIT
-             | IOMUXC_GPR2_LVDS_CH1_MODE_DISABLED
-             | IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI0;
-       writel(reg, &iomux->gpr[2]);
-
-       reg = readl(&iomux->gpr[3]);
-       reg = (reg & ~IOMUXC_GPR3_LVDS0_MUX_CTL_MASK)
-              | (IOMUXC_GPR3_MUX_SRC_IPU1_DI0
-                 << IOMUXC_GPR3_LVDS0_MUX_CTL_OFFSET);
-       writel(reg, &iomux->gpr[3]);
-
-       return;
-}
-
-static void enable_spi_display(struct display_info_t const *dev)
-{
-       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
-       struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-       int reg;
-       s32 timeout = 100000;
-
-#if defined(CONFIG_VIDEO_BMP_LOGO)
-       rotate_logo(3);  /* portrait display in landscape mode */
-#endif
-
-       /*
-        * set ldb clock to 28341000 Hz calculated through the formula:
-        * (XRES + LEFT_M + RIGHT_M + HSYNC_LEN) *
-        * (YRES + UPPER_M + LOWER_M + VSYNC_LEN) * REFRESH)
-        * see:
-        * https://community.freescale.com/thread/308170
-        */
-       ipu_set_ldb_clock(28341000);
-
-       reg = readl(&ccm->cs2cdr);
-
-       /* select pll 5 clock */
-       reg &= ~(MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK
-               | MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK);
-       writel(reg, &ccm->cs2cdr);
-
-       /* set PLL5 to 197994996Hz */
-       reg &= ~BM_ANADIG_PLL_VIDEO_DIV_SELECT;
-       reg |= BF_ANADIG_PLL_VIDEO_DIV_SELECT(0x21);
-       reg &= ~BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT;
-       reg |= BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(0);
-       writel(reg, &ccm->analog_pll_video);
-
-       writel(BF_ANADIG_PLL_VIDEO_NUM_A(0xfbf4),
-              &ccm->analog_pll_video_num);
-       writel(BF_ANADIG_PLL_VIDEO_DENOM_B(0xf4240),
-              &ccm->analog_pll_video_denom);
-
-       reg &= ~BM_ANADIG_PLL_VIDEO_POWERDOWN;
-       writel(reg, &ccm->analog_pll_video);
-
-       while (timeout--)
-               if (readl(&ccm->analog_pll_video) & BM_ANADIG_PLL_VIDEO_LOCK)
-                       break;
-       if (timeout < 0)
-               printf("Warning: video pll lock timeout!\n");
-
-       reg = readl(&ccm->analog_pll_video);
-       reg |= BM_ANADIG_PLL_VIDEO_ENABLE;
-       reg &= ~BM_ANADIG_PLL_VIDEO_BYPASS;
-       writel(reg, &ccm->analog_pll_video);
-
-       /* set LDB0, LDB1 clk select to 000/000 (PLL5 clock) */
-       reg = readl(&ccm->cs2cdr);
-       reg &= ~(MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK
-                | MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK);
-       reg |= (0 << MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET)
-               | (0 << MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET);
-       writel(reg, &ccm->cs2cdr);
-
-       reg = readl(&ccm->cscmr2);
-       reg |= MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV;
-       writel(reg, &ccm->cscmr2);
-
-       reg = readl(&ccm->chsccdr);
-       reg |= (CHSCCDR_CLK_SEL_LDB_DI0
-               << MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_OFFSET);
-       reg &= ~MXC_CCM_CHSCCDR_IPU1_DI0_PODF_MASK;
-       reg |= (2 << MXC_CCM_CHSCCDR_IPU1_DI0_PODF_OFFSET);
-       reg &= ~MXC_CCM_CHSCCDR_IPU1_DI0_PRE_CLK_SEL_MASK;
-       reg |= (2 << MXC_CCM_CHSCCDR_IPU1_DI0_PRE_CLK_SEL_OFFSET);
-       writel(reg, &ccm->chsccdr);
-
-       reg = IOMUXC_GPR2_BGREF_RRMODE_EXTERNAL_RES
-             | IOMUXC_GPR2_DI1_VS_POLARITY_ACTIVE_HIGH
-             | IOMUXC_GPR2_DI0_VS_POLARITY_ACTIVE_HIGH
-             | IOMUXC_GPR2_BIT_MAPPING_CH0_SPWG
-             | IOMUXC_GPR2_DATA_WIDTH_CH0_24BIT
-             | IOMUXC_GPR2_LVDS_CH1_MODE_DISABLED
-             | IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI0;
-       writel(reg, &iomux->gpr[2]);
-
-       reg = readl(&iomux->gpr[3]);
-       reg = (reg & ~IOMUXC_GPR3_LVDS0_MUX_CTL_MASK)
-              | (IOMUXC_GPR3_MUX_SRC_IPU1_DI0
-                 << IOMUXC_GPR3_LVDS0_MUX_CTL_OFFSET);
-       writel(reg, &iomux->gpr[3]);
-
-       imx_iomux_v3_setup_multiple_pads(
-               display_pads,
-                ARRAY_SIZE(display_pads));
-
-       return;
-}
-static void setup_display(void)
-{
-       enable_ipu_clock();
-       enable_display_power();
-}
-
-static void setup_iomux_gpio(void)
-{
-       imx_iomux_v3_setup_multiple_pads(gpio_pads, ARRAY_SIZE(gpio_pads));
-}
-
-static void set_gpr_register(void)
-{
-       struct iomuxc *iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
-
-       writel(IOMUXC_GPR1_APP_CLK_REQ_N | IOMUXC_GPR1_PCIE_RDY_L23 |
-              IOMUXC_GPR1_EXC_MON_SLVE |
-              (2 << IOMUXC_GPR1_ADDRS0_OFFSET) |
-              IOMUXC_GPR1_ACT_CS0,
-              &iomuxc_regs->gpr[1]);
-       writel(0x0, &iomuxc_regs->gpr[8]);
-       writel(IOMUXC_GPR12_ARMP_IPG_CLK_EN | IOMUXC_GPR12_ARMP_AHB_CLK_EN |
-              IOMUXC_GPR12_ARMP_ATB_CLK_EN | IOMUXC_GPR12_ARMP_APB_CLK_EN,
-              &iomuxc_regs->gpr[12]);
-}
-
-int board_early_init_f(void)
-{
-       setup_iomux_uart();
-       setup_iomux_gpio();
-
-       gpio_direction_output(SOFT_RESET_GPIO, 1);
-       gpio_direction_output(SD2_DRIVER_ENABLE, 1);
-       setup_display();
-       set_gpr_register();
-       return 0;
-}
-
-static void setup_i2c4(void)
-{
-       setup_i2c(3, CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE,
-                 &i2c_pad_info4);
-}
-
-static void setup_board_gpio(void)
-{
-       /* enable all LEDs */
-       gpio_request(IMX_GPIO_NR(2, 13), "LED ena"); /* 25 */
-       gpio_direction_output(IMX_GPIO_NR(1, 25), 0);
-
-       /* switch off Status LEDs */
-#if (CONFIG_SYS_BOARD_VERSION == 2)
-       gpio_request(IMX_GPIO_NR(6, 16), "LED yellow"); /* 176 */
-       gpio_direction_output(IMX_GPIO_NR(6, 16), 1);
-       gpio_request(IMX_GPIO_NR(2, 28), "LED red"); /* 60 */
-       gpio_direction_output(IMX_GPIO_NR(2, 28), 1);
-       gpio_request(IMX_GPIO_NR(5, 4), "LED green"); /* 132 */
-       gpio_direction_output(IMX_GPIO_NR(5, 4), 1);
-       gpio_request(IMX_GPIO_NR(2, 29), "LED blue"); /* 61 */
-       gpio_direction_output(IMX_GPIO_NR(2, 29), 1);
-#elif (CONFIG_SYS_BOARD_VERSION == 3)
-       gpio_request(IMX_GPIO_NR(6, 16), "LED yellow"); /* 176 */
-       gpio_direction_output(IMX_GPIO_NR(6, 16), 0);
-       gpio_request(IMX_GPIO_NR(5, 0), "LED red"); /* 128 */
-       gpio_direction_output(IMX_GPIO_NR(5, 0), 0);
-       gpio_request(IMX_GPIO_NR(5, 4), "LED green"); /* 132 */
-       gpio_direction_output(IMX_GPIO_NR(5, 4), 0);
-       gpio_request(IMX_GPIO_NR(2, 29), "LED blue"); /* 61 */
-       gpio_direction_output(IMX_GPIO_NR(2, 29), 0);
-#endif
-}
-
-static void setup_board_spi(void)
-{
-       /* enable spi bus #2 SS drivers (and spi bus #4 SS1 for rev2b) */
-       gpio_direction_output(IMX_GPIO_NR(6, 6), 1);
-}
-
-int board_late_init(void)
-{
-       char *my_bootdelay;
-       char bootmode = 0;
-       char const *panel = env_get("panel");
-
-       /*
-        * Check the boot-source. If booting from NOR Flash,
-        * disable bootdelay
-        */
-       gpio_request(IMX_GPIO_NR(7, 6), "bootsel0");
-       gpio_direction_input(IMX_GPIO_NR(7, 6));
-       gpio_request(IMX_GPIO_NR(7, 7), "bootsel1");
-       gpio_direction_input(IMX_GPIO_NR(7, 7));
-       gpio_request(IMX_GPIO_NR(7, 1), "bootsel2");
-       gpio_direction_input(IMX_GPIO_NR(7, 1));
-       bootmode |= (gpio_get_value(IMX_GPIO_NR(7, 6)) ? 1 : 0) << 0;
-       bootmode |= (gpio_get_value(IMX_GPIO_NR(7, 7)) ? 1 : 0) << 1;
-       bootmode |= (gpio_get_value(IMX_GPIO_NR(7, 1)) ? 1 : 0) << 2;
-
-       if (bootmode == 7) {
-               my_bootdelay = env_get("nor_bootdelay");
-               if (my_bootdelay != NULL)
-                       env_set("bootdelay", my_bootdelay);
-               else
-                       env_set("bootdelay", "-2");
-       }
-
-       /* if we have the lg panel, we can initialze it now */
-       if (panel)
-               if (!strcmp(panel, displays[1].mode.name))
-                       lg4573_spi_startup(CONFIG_LG4573_BUS,
-                                          CONFIG_LG4573_CS,
-                                          10000000, SPI_MODE_0);
-
-       return 0;
-}
index 9f744b30b3ec0ae372d227e35714abc6889ac447..c79ac1d3391f09c47a068b75e9413b3bfff7cb4a 100644 (file)
 #include <asm/gpio.h>
 #include <asm/mach-imx/iomux-v3.h>
 #include <asm/mach-imx/boot_mode.h>
-#include <asm/mach-imx/mxc_i2c.h>
 #include <asm/mach-imx/video.h>
-#include <mmc.h>
-#include <fsl_esdhc_imx.h>
-#include <miiphy.h>
-#include <netdev.h>
-#include <asm/arch/mxc_hdmi.h>
 #include <asm/arch/crm_regs.h>
-#include <linux/fb.h>
-#include <ipu_pixfmt.h>
-#include <input.h>
 #include <asm/io.h>
 #include <asm/arch/sys_proto.h>
-#include <pwm.h>
+#include <bmp_logo.h>
+#include <dm/root.h>
+#include <env.h>
+#include <i2c_eeprom.h>
+#include <i2c.h>
+#include <micrel.h>
+#include <miiphy.h>
+#include <lcd.h>
+#include <led.h>
+#include <splash.h>
+#include <video_fb.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#define UART_PAD_CTRL  (PAD_CTL_PUS_100K_UP |                  \
-       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm |                 \
-       PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
+enum {
+       BOARD_TYPE_4 = 4,
+       BOARD_TYPE_7 = 7,
+};
 
-#define USDHC_PAD_CTRL (PAD_CTL_PUS_47K_UP |                   \
-       PAD_CTL_SPEED_LOW | PAD_CTL_DSE_80ohm |                 \
-       PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
+#define ARI_BT_4 "aristainetos2_4@2"
+#define ARI_BT_7 "aristainetos2_7@1"
 
-#define ENET_PAD_CTRL  (PAD_CTL_PUS_100K_UP |                  \
-       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
+int board_phy_config(struct phy_device *phydev)
+{
+       /* control data pad skew - devaddr = 0x02, register = 0x04 */
+       ksz9031_phy_extended_write(phydev, 0x02,
+                                  MII_KSZ9031_EXT_RGMII_CTRL_SIG_SKEW,
+                                  MII_KSZ9031_MOD_DATA_NO_POST_INC, 0x0000);
+       /* rx data pad skew - devaddr = 0x02, register = 0x05 */
+       ksz9031_phy_extended_write(phydev, 0x02,
+                                  MII_KSZ9031_EXT_RGMII_RX_DATA_SKEW,
+                                  MII_KSZ9031_MOD_DATA_NO_POST_INC, 0x0000);
+       /* tx data pad skew - devaddr = 0x02, register = 0x06 */
+       ksz9031_phy_extended_write(phydev, 0x02,
+                                  MII_KSZ9031_EXT_RGMII_TX_DATA_SKEW,
+                                  MII_KSZ9031_MOD_DATA_NO_POST_INC, 0x0000);
+       /* gtx and rx clock pad skew - devaddr = 0x02, register = 0x08 */
+       ksz9031_phy_extended_write(phydev, 0x02,
+                                  MII_KSZ9031_EXT_RGMII_CLOCK_SKEW,
+                                  MII_KSZ9031_MOD_DATA_NO_POST_INC, 0x03FF);
+
+       if (phydev->drv->config)
+               phydev->drv->config(phydev);
+
+       return 0;
+}
 
-#define SPI_PAD_CTRL (PAD_CTL_HYS | PAD_CTL_SPEED_MED | \
-                     PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST)
+static int rotate_logo_one(unsigned char *out, unsigned char *in)
+{
+       int   i, j;
 
-#define I2C_PAD_CTRL   (PAD_CTL_PUS_100K_UP |                  \
-       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS |   \
-       PAD_CTL_ODE | PAD_CTL_SRE_FAST)
+       for (i = 0; i < BMP_LOGO_WIDTH; i++)
+               for (j = 0; j < BMP_LOGO_HEIGHT; j++)
+                       out[j * BMP_LOGO_WIDTH + BMP_LOGO_HEIGHT - 1 - i] =
+                       in[i * BMP_LOGO_WIDTH + j];
+       return 0;
+}
 
-#define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
+/*
+ * Rotate the BMP_LOGO (only)
+ * Will only work, if the logo is square, as
+ * BMP_LOGO_HEIGHT and BMP_LOGO_WIDTH are defines, not variables
+ */
+void rotate_logo(int rotations)
+{
+       unsigned char out_logo[BMP_LOGO_WIDTH * BMP_LOGO_HEIGHT];
+       struct bmp_header *header;
+       unsigned char *in_logo;
+       int   i, j;
+
+       if (BMP_LOGO_WIDTH != BMP_LOGO_HEIGHT)
+               return;
+
+       header = (struct bmp_header *)bmp_logo_bitmap;
+       in_logo = bmp_logo_bitmap + header->data_offset;
+
+       /* one 90 degree rotation */
+       if (rotations == 1  ||  rotations == 2  ||  rotations == 3)
+               rotate_logo_one(out_logo, in_logo);
+
+       /* second 90 degree rotation */
+       if (rotations == 2  ||  rotations == 3)
+               rotate_logo_one(in_logo, out_logo);
+
+       /* third 90 degree rotation */
+       if (rotations == 3)
+               rotate_logo_one(out_logo, in_logo);
+
+       /* copy result back to original array */
+       if (rotations == 1  ||  rotations == 3)
+               for (i = 0; i < BMP_LOGO_WIDTH; i++)
+                       for (j = 0; j < BMP_LOGO_HEIGHT; j++)
+                               in_logo[i * BMP_LOGO_WIDTH + j] =
+                               out_logo[i * BMP_LOGO_WIDTH + j];
+}
 
-#define DISP_PAD_CTRL  (0x10)
+static void enable_lvds(struct display_info_t const *dev)
+{
+       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
+       struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       int reg;
+       s32 timeout = 100000;
+
+       /* set PLL5 clock */
+       reg = readl(&ccm->analog_pll_video);
+       reg |= BM_ANADIG_PLL_VIDEO_POWERDOWN;
+       writel(reg, &ccm->analog_pll_video);
+
+       /* set PLL5 to 232720000Hz */
+       reg &= ~BM_ANADIG_PLL_VIDEO_DIV_SELECT;
+       reg |= BF_ANADIG_PLL_VIDEO_DIV_SELECT(0x26);
+       reg &= ~BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT;
+       reg |= BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(0);
+       writel(reg, &ccm->analog_pll_video);
+
+       writel(BF_ANADIG_PLL_VIDEO_NUM_A(0xC0238),
+              &ccm->analog_pll_video_num);
+       writel(BF_ANADIG_PLL_VIDEO_DENOM_B(0xF4240),
+              &ccm->analog_pll_video_denom);
+
+       reg &= ~BM_ANADIG_PLL_VIDEO_POWERDOWN;
+       writel(reg, &ccm->analog_pll_video);
+
+       while (timeout--)
+               if (readl(&ccm->analog_pll_video) & BM_ANADIG_PLL_VIDEO_LOCK)
+                       break;
+       if (timeout < 0)
+               printf("Warning: video pll lock timeout!\n");
+
+       reg = readl(&ccm->analog_pll_video);
+       reg |= BM_ANADIG_PLL_VIDEO_ENABLE;
+       reg &= ~BM_ANADIG_PLL_VIDEO_BYPASS;
+       writel(reg, &ccm->analog_pll_video);
+
+       /* set LDB0, LDB1 clk select to 000/000 (PLL5 clock) */
+       reg = readl(&ccm->cs2cdr);
+       reg &= ~(MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK
+                | MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK);
+       reg |= (0 << MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET)
+               | (0 << MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET);
+       writel(reg, &ccm->cs2cdr);
+
+       reg = readl(&ccm->cscmr2);
+       reg |= MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV;
+       writel(reg, &ccm->cscmr2);
+
+       reg = readl(&ccm->chsccdr);
+       reg |= (CHSCCDR_CLK_SEL_LDB_DI0
+               << MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_OFFSET);
+       writel(reg, &ccm->chsccdr);
+
+       reg = IOMUXC_GPR2_BGREF_RRMODE_EXTERNAL_RES
+             | IOMUXC_GPR2_DI1_VS_POLARITY_ACTIVE_HIGH
+             | IOMUXC_GPR2_DI0_VS_POLARITY_ACTIVE_HIGH
+             | IOMUXC_GPR2_BIT_MAPPING_CH0_SPWG
+             | IOMUXC_GPR2_DATA_WIDTH_CH0_24BIT
+             | IOMUXC_GPR2_LVDS_CH1_MODE_DISABLED
+             | IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI0;
+       writel(reg, &iomux->gpr[2]);
+
+       reg = readl(&iomux->gpr[3]);
+       reg = (reg & ~IOMUXC_GPR3_LVDS0_MUX_CTL_MASK)
+              | (IOMUXC_GPR3_MUX_SRC_IPU1_DI0
+                 << IOMUXC_GPR3_LVDS0_MUX_CTL_OFFSET);
+       writel(reg, &iomux->gpr[3]);
+}
 
-#define ECSPI4_CS1             IMX_GPIO_NR(5, 2)
+static void enable_spi_display(struct display_info_t const *dev)
+{
+       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
+       struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       int reg;
+       s32 timeout = 100000;
 
-#if (CONFIG_SYS_BOARD_VERSION == 1)
-#include "./aristainetos-v1.c"
-#elif ((CONFIG_SYS_BOARD_VERSION == 2) || (CONFIG_SYS_BOARD_VERSION == 3))
-#include "./aristainetos-v2.c"
+#if defined(CONFIG_VIDEO_BMP_LOGO)
+       rotate_logo(3);  /* portrait display in landscape mode */
 #endif
 
+       reg = readl(&ccm->cs2cdr);
+
+       /* select pll 5 clock */
+       reg &= ~(MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK
+               | MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK);
+       writel(reg, &ccm->cs2cdr);
+
+       /* set PLL5 to 197994996Hz */
+       reg &= ~BM_ANADIG_PLL_VIDEO_DIV_SELECT;
+       reg |= BF_ANADIG_PLL_VIDEO_DIV_SELECT(0x21);
+       reg &= ~BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT;
+       reg |= BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(0);
+       writel(reg, &ccm->analog_pll_video);
+
+       writel(BF_ANADIG_PLL_VIDEO_NUM_A(0xfbf4),
+              &ccm->analog_pll_video_num);
+       writel(BF_ANADIG_PLL_VIDEO_DENOM_B(0xf4240),
+              &ccm->analog_pll_video_denom);
+
+       reg &= ~BM_ANADIG_PLL_VIDEO_POWERDOWN;
+       writel(reg, &ccm->analog_pll_video);
+
+       while (timeout--)
+               if (readl(&ccm->analog_pll_video) & BM_ANADIG_PLL_VIDEO_LOCK)
+                       break;
+       if (timeout < 0)
+               printf("Warning: video pll lock timeout!\n");
+
+       reg = readl(&ccm->analog_pll_video);
+       reg |= BM_ANADIG_PLL_VIDEO_ENABLE;
+       reg &= ~BM_ANADIG_PLL_VIDEO_BYPASS;
+       writel(reg, &ccm->analog_pll_video);
+
+       /* set LDB0, LDB1 clk select to 000/000 (PLL5 clock) */
+       reg = readl(&ccm->cs2cdr);
+       reg &= ~(MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK
+                | MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK);
+       reg |= (0 << MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET)
+               | (0 << MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET);
+       writel(reg, &ccm->cs2cdr);
+
+       reg = readl(&ccm->cscmr2);
+       reg |= MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV;
+       writel(reg, &ccm->cscmr2);
+
+       reg = readl(&ccm->chsccdr);
+       reg |= (CHSCCDR_CLK_SEL_LDB_DI0
+               << MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_OFFSET);
+       reg &= ~MXC_CCM_CHSCCDR_IPU1_DI0_PODF_MASK;
+       reg |= (2 << MXC_CCM_CHSCCDR_IPU1_DI0_PODF_OFFSET);
+       reg &= ~MXC_CCM_CHSCCDR_IPU1_DI0_PRE_CLK_SEL_MASK;
+       reg |= (2 << MXC_CCM_CHSCCDR_IPU1_DI0_PRE_CLK_SEL_OFFSET);
+       writel(reg, &ccm->chsccdr);
+
+       reg = IOMUXC_GPR2_BGREF_RRMODE_EXTERNAL_RES
+             | IOMUXC_GPR2_DI1_VS_POLARITY_ACTIVE_HIGH
+             | IOMUXC_GPR2_DI0_VS_POLARITY_ACTIVE_HIGH
+             | IOMUXC_GPR2_BIT_MAPPING_CH0_SPWG
+             | IOMUXC_GPR2_DATA_WIDTH_CH0_24BIT
+             | IOMUXC_GPR2_LVDS_CH1_MODE_DISABLED
+             | IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI0;
+       writel(reg, &iomux->gpr[2]);
+
+       reg = readl(&iomux->gpr[3]);
+       reg = (reg & ~IOMUXC_GPR3_LVDS0_MUX_CTL_MASK)
+              | (IOMUXC_GPR3_MUX_SRC_IPU1_DI0
+                 << IOMUXC_GPR3_LVDS0_MUX_CTL_OFFSET);
+       writel(reg, &iomux->gpr[3]);
+}
 
-struct i2c_pads_info i2c_pad_info1 = {
-       .scl = {
-               .i2c_mode = MX6_PAD_CSI0_DAT9__I2C1_SCL | PC,
-               .gpio_mode = MX6_PAD_CSI0_DAT9__GPIO5_IO27 | PC,
-               .gp = IMX_GPIO_NR(5, 27)
-       },
-       .sda = {
-               .i2c_mode = MX6_PAD_CSI0_DAT8__I2C1_SDA | PC,
-               .gpio_mode = MX6_PAD_CSI0_DAT8__GPIO5_IO26 | PC,
-               .gp = IMX_GPIO_NR(5, 26)
-       }
-};
-
-struct i2c_pads_info i2c_pad_info2 = {
-       .scl = {
-               .i2c_mode = MX6_PAD_KEY_COL3__I2C2_SCL | PC,
-               .gpio_mode = MX6_PAD_KEY_COL3__GPIO4_IO12 | PC,
-               .gp = IMX_GPIO_NR(4, 12)
-       },
-       .sda = {
-               .i2c_mode = MX6_PAD_KEY_ROW3__I2C2_SDA | PC,
-               .gpio_mode = MX6_PAD_KEY_ROW3__GPIO4_IO13 | PC,
-               .gp = IMX_GPIO_NR(4, 13)
-       }
-};
+static void setup_display(void)
+{
+       enable_ipu_clock();
+}
 
-iomux_v3_cfg_t const usdhc1_pads[] = {
-       MX6_PAD_SD1_CLK__SD1_CLK        | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD1_CMD__SD1_CMD        | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD1_DAT0__SD1_DATA0     | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD1_DAT1__SD1_DATA1     | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD1_DAT2__SD1_DATA2     | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD1_DAT3__SD1_DATA3     | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-};
+static void set_gpr_register(void)
+{
+       struct iomuxc *iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
+
+       writel(IOMUXC_GPR1_APP_CLK_REQ_N | IOMUXC_GPR1_PCIE_RDY_L23 |
+              IOMUXC_GPR1_EXC_MON_SLVE |
+              (2 << IOMUXC_GPR1_ADDRS0_OFFSET) |
+              IOMUXC_GPR1_ACT_CS0,
+              &iomuxc_regs->gpr[1]);
+       writel(0x0, &iomuxc_regs->gpr[8]);
+       writel(IOMUXC_GPR12_ARMP_IPG_CLK_EN | IOMUXC_GPR12_ARMP_AHB_CLK_EN |
+              IOMUXC_GPR12_ARMP_ATB_CLK_EN | IOMUXC_GPR12_ARMP_APB_CLK_EN,
+              &iomuxc_regs->gpr[12]);
+}
 
-int dram_init(void)
+extern char __bss_start[], __bss_end[];
+int board_early_init_f(void)
 {
-       gd->ram_size = imx_ddr_size();
+       select_ldb_di_clock_source(MXC_PLL5_CLK);
+       set_gpr_register();
+
+       /*
+        * clear bss here, so we can use spi driver
+        * before relocation and read Environment
+        * from spi flash.
+        */
+       memset(__bss_start, 0x00, __bss_end - __bss_start);
 
        return 0;
 }
 
-#ifdef CONFIG_FSL_ESDHC_IMX
-struct fsl_esdhc_cfg usdhc_cfg[2] = {
-       {USDHC1_BASE_ADDR},
-       {USDHC2_BASE_ADDR},
-};
+static void setup_one_led(char *label, int state)
+{
+       struct udevice *dev;
+       int ret;
+
+       ret = led_get_by_label(label, &dev);
+       if (ret == 0)
+               led_set_state(dev, state);
+}
+
+static void setup_board_gpio(void)
+{
+       setup_one_led("led_ena", LEDST_ON);
+       /* switch off Status LEDs */
+       setup_one_led("led_yellow", LEDST_OFF);
+       setup_one_led("led_red", LEDST_OFF);
+       setup_one_led("led_green", LEDST_OFF);
+       setup_one_led("led_blue", LEDST_OFF);
+}
+
+#define ARI_RESC_FMT "setenv rescue_reason setenv bootargs \\${bootargs}" \
+               " rescueReason=%d "
 
-int board_mmc_getcd(struct mmc *mmc)
+static void aristainetos_run_rescue_command(int reason)
 {
-       return 1;
+       char rescue_reason_command[80];
+
+       sprintf(rescue_reason_command, ARI_RESC_FMT, reason);
+       run_command(rescue_reason_command, 0);
 }
 
-int board_mmc_init(bd_t *bis)
+static int aristainetos_eeprom(void)
+{
+       struct udevice *dev;
+       int off;
+       int ret;
+       u8 data[0x10];
+       u8 rescue_reason;
+
+       off = fdt_path_offset(gd->fdt_blob, "eeprom0");
+       if (off < 0) {
+               printf("%s: No eeprom0 path offset\n", __func__);
+               return off;
+       }
+
+       ret = uclass_get_device_by_of_offset(UCLASS_I2C_EEPROM, off, &dev);
+       if (ret) {
+               printf("%s: Could not find EEPROM\n", __func__);
+               return ret;
+       }
+
+       ret = i2c_set_chip_offset_len(dev, 2);
+       if (ret)
+               return ret;
+
+       ret = i2c_eeprom_read(dev, 0x1ff0, (uint8_t *)data, 6);
+       if (ret) {
+               printf("%s: Could not read EEPROM\n", __func__);
+               return ret;
+       }
+
+       if (strncmp((char *)&data[3], "ReScUe", 6) == 0) {
+               rescue_reason = *(uint8_t *)&data[9];
+               memset(&data[3], 0xff, 7);
+               i2c_eeprom_write(dev, 0x1ff0, (uint8_t *)&data[3], 7);
+               printf("\nBooting into Rescue System (EEPROM)\n");
+               aristainetos_run_rescue_command(rescue_reason);
+               run_command("run rescue_load_fit rescueboot", 0);
+       } else if (strncmp((char *)data, "DeF", 3) == 0) {
+               memset(data, 0xff, 3);
+               i2c_eeprom_write(dev, 0x1ff0, (uint8_t *)data, 3);
+               printf("\nClear u-boot environment (set back to defaults)\n");
+               run_command("run default_env; saveenv; saveenv", 0);
+       }
+
+       return 0;
+};
+
+static void aristainetos_bootmode_settings(void)
 {
-       usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
-       imx_iomux_v3_setup_multiple_pads(usdhc1_pads, ARRAY_SIZE(usdhc1_pads));
-#if (CONFIG_SYS_BOARD_VERSION == 2)
+       struct gpio_desc *desc;
+       struct src *psrc = (struct src *)SRC_BASE_ADDR;
+       unsigned int sbmr1 = readl(&psrc->sbmr1);
+       char *my_bootdelay;
+       char bootmode = 0;
+       int ret;
+
        /*
-        * usdhc2 has a levelshifter on the carrier board Rev. DV1,
-        * that will automatically detect the driving direction.
-        * During initialisation this isn't working correctly,
-        * which causes DAT3 to be driven low towards the SD-card.
-        * This causes a SD-card enetring the SPI-Mode
-        * and therefore getting inaccessible until next power cycle.
-        * As workaround we drive the DAT3 line as GPIO and set it high.
-        * This makes usdhc2 unusable in u-boot, but works for the
-        * initialisation in Linux
+        * Check the boot-source. If booting from NOR Flash,
+        * disable bootdelay
         */
-       imx_iomux_v3_setup_pad(MX6_PAD_SD2_DAT3__GPIO1_IO12 |
-                              MUX_PAD_CTRL(NO_PAD_CTRL));
-       gpio_direction_output(IMX_GPIO_NR(1, 12) , 1);
-#endif
-       return fsl_esdhc_initialize(bis, &usdhc_cfg[0]);
+       ret = gpio_hog_lookup_name("bootsel0", &desc);
+       if (!ret)
+               bootmode |= (dm_gpio_get_value(desc) ? 1 : 0) << 0;
+       ret = gpio_hog_lookup_name("bootsel1", &desc);
+       if (!ret)
+               bootmode |= (dm_gpio_get_value(desc) ? 1 : 0) << 1;
+       ret = gpio_hog_lookup_name("bootsel2", &desc);
+       if (!ret)
+               bootmode |= (dm_gpio_get_value(desc) ? 1 : 0) << 2;
+
+       if (bootmode == 7) {
+               my_bootdelay = env_get("nor_bootdelay");
+               if (my_bootdelay)
+                       env_set("bootdelay", my_bootdelay);
+               else
+                       env_set("bootdelay", "-2");
+       }
+
+       if (sbmr1 & 0x40) {
+               env_set("bootmode", "1");
+               printf("SD bootmode jumper set!\n");
+       } else {
+               env_set("bootmode", "0");
+       }
+
+       /* read out some jumper values*/
+       ret = gpio_hog_lookup_name("env_reset", &desc);
+       if (!ret) {
+               if (dm_gpio_get_value(desc)) {
+                       printf("\nClear env (set back to defaults)\n");
+                       run_command("run default_env; saveenv; saveenv", 0);
+               }
+       }
+       ret = gpio_hog_lookup_name("boot_rescue", &desc);
+       if (!ret) {
+               if (dm_gpio_get_value(desc)) {
+                       aristainetos_run_rescue_command(16);
+                       run_command("run rescue_xload_boot", 0);
+               }
+       }
 }
-#endif
 
-/*
- * Do not overwrite the console
- * Use always serial for U-Boot console
- */
-int overwrite_console(void)
+int board_late_init(void)
+{
+       int x, y;
+
+       led_default_state();
+       splash_get_pos(&x, &y);
+       bmp_display((ulong)&bmp_logo_bitmap[0], x, y);
+
+       aristainetos_bootmode_settings();
+
+       /* eeprom work */
+       aristainetos_eeprom();
+
+       /* set board_type */
+       if (gd->board_type == BOARD_TYPE_4)
+               env_set("board_type", ARI_BT_4);
+       else
+               env_set("board_type", ARI_BT_7);
+
+       return 0;
+}
+
+int dram_init(void)
 {
-       return 1;
+       gd->ram_size = imx_ddr_size();
+
+       return 0;
 }
 
 struct display_info_t const displays[] = {
@@ -174,7 +490,10 @@ struct display_info_t const displays[] = {
                        .vmode          = FB_VMODE_NONINTERLACED
                }
        }
-#if ((CONFIG_SYS_BOARD_VERSION == 2) || (CONFIG_SYS_BOARD_VERSION == 3))
+#if ((CONFIG_SYS_BOARD_VERSION == 2) || \
+       (CONFIG_SYS_BOARD_VERSION == 3) || \
+       (CONFIG_SYS_BOARD_VERSION == 4) || \
+       (CONFIG_SYS_BOARD_VERSION == 5))
        , {
                .bus    = -1,
                .addr   = 0,
@@ -202,12 +521,7 @@ struct display_info_t const displays[] = {
 };
 size_t display_count = ARRAY_SIZE(displays);
 
-/* no console on this board */
-int board_cfb_skip(void)
-{
-       return 1;
-}
-
+#if defined(CONFIG_NAND)
 iomux_v3_cfg_t nfc_pads[] = {
        MX6_PAD_NANDF_CLE__NAND_CLE             | MUX_PAD_CTRL(NO_PAD_CTRL),
        MX6_PAD_NANDF_ALE__NAND_ALE             | MUX_PAD_CTRL(NO_PAD_CTRL),
@@ -261,6 +575,11 @@ static void setup_gpmi_nand(void)
        /* enable apbh clock gating */
        setbits_le32(&mxc_ccm->CCGR0, MXC_CCM_CCGR0_APBHDMA_MASK);
 }
+#else
+static void setup_gpmi_nand(void)
+{
+}
+#endif
 
 int board_init(void)
 {
@@ -269,57 +588,54 @@ int board_init(void)
        /* address of boot parameters */
        gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
 
-       setup_spi();
-
-       setup_i2c(0, CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE,
-                 &i2c_pad_info1);
-       setup_i2c(1, CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE,
-                 &i2c_pad_info2);
-       setup_i2c(2, CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE,
-                 &i2c_pad_info3);
-       setup_i2c4();
-
-       /* SPI NOR Flash read only */
-       gpio_request(CONFIG_GPIO_ENABLE_SPI_FLASH, "ena_spi_nor");
-       gpio_direction_output(CONFIG_GPIO_ENABLE_SPI_FLASH, 0);
-       gpio_free(CONFIG_GPIO_ENABLE_SPI_FLASH);
-
        setup_board_gpio();
        setup_gpmi_nand();
-       setup_board_spi();
+       setup_display();
 
        /* GPIO_1 for USB_OTG_ID */
        clrsetbits_le32(&iomux->gpr[1], IOMUXC_GPR1_USB_OTG_ID_SEL_MASK, 0);
-       imx_iomux_v3_setup_multiple_pads(misc_pads, ARRAY_SIZE(misc_pads));
        return 0;
 }
 
-int checkboard(void)
+int board_fit_config_name_match(const char *name)
 {
-       printf("Board: %s\n", CONFIG_BOARDNAME);
-       return 0;
+       if (gd->board_type == BOARD_TYPE_4 &&
+           strchr(name, 0x34))
+               return 0;
+
+       if (gd->board_type == BOARD_TYPE_7 &&
+           strchr(name, 0x37))
+               return 0;
+
+       return -1;
 }
 
-#ifdef CONFIG_USB_EHCI_MX6
-int board_ehci_hcd_init(int port)
+static void do_board_detect(void)
 {
        int ret;
+       char s[30];
 
-       ret = gpio_request(ARISTAINETOS_USB_H1_PWR, "usb-h1-pwr");
-       if (!ret)
-               gpio_direction_output(ARISTAINETOS_USB_H1_PWR, 1);
-       ret = gpio_request(ARISTAINETOS_USB_OTG_PWR, "usb-OTG-pwr");
-       if (!ret)
-               gpio_direction_output(ARISTAINETOS_USB_OTG_PWR, 1);
-       return 0;
+       /* default use board type 7 */
+       gd->board_type = BOARD_TYPE_7;
+       if (env_init())
+               return;
+
+       ret = env_get_f("panel", s, sizeof(s));
+       if (ret < 0)
+               return;
+
+       if (!strncmp("lg4573", s, 6))
+               gd->board_type = BOARD_TYPE_4;
 }
 
-int board_ehci_power(int port, int on)
+#ifdef CONFIG_DTB_RESELECT
+int embedded_dtb_select(void)
 {
-       if (port)
-               gpio_set_value(ARISTAINETOS_USB_OTG_PWR, on);
-       else
-               gpio_set_value(ARISTAINETOS_USB_H1_PWR, on);
+       int rescan;
+
+       do_board_detect();
+       fdtdec_resetup(&rescan);
+
        return 0;
 }
 #endif
diff --git a/board/aristainetos/aristainetos.cfg b/board/aristainetos/aristainetos.cfg
deleted file mode 100644 (file)
index fb74678..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * (C) Copyright 2014
- * Heiko Schocher, DENX Software Engineering, hs@denx.de.
- *
- * Based on:
- * Copyright (C) 2013 Boundary Devices
- *
- * Refer doc/README.imximage for more details about how-to configure
- * and create imximage boot image
- *
- * The syntax is taken as close as possible with the kwbimage
- */
-
-/* image version */
-IMAGE_VERSION 2
-
-/*
- * Boot Device : one of
- * spi, sd
- */
-BOOT_FROM      spi
-
-#define __ASSEMBLY__
-#include <config.h>
-#include "asm/arch/mx6-ddr.h"
-#include "asm/arch/iomux.h"
-#include "asm/arch/crm_regs.h"
-
-#include "ddr-setup.cfg"
-#include "mt41j128M.cfg"
-#include "clocks.cfg"
index fbbc2e5e6d70eaca02ff7bfc0fae0c805ad6e01e..965ad64b496a0380144f92f0edfd0417410438db 100644 (file)
@@ -23,6 +23,9 @@ BOOT_FROM      spi
 
 #define __ASSEMBLY__
 #include <config.h>
+#ifdef CONFIG_IMX_HAB
+CSF CONFIG_CSF_SIZE
+#endif
 #include "asm/arch/mx6-ddr.h"
 #include "asm/arch/iomux.h"
 #include "asm/arch/crm_regs.h"
diff --git a/board/aristainetos/clocks.cfg b/board/aristainetos/clocks.cfg
deleted file mode 100644 (file)
index 58976e7..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * Copyright (C) 2013 Boundary Devices
- *
- * Device Configuration Data (DCD)
- *
- * Each entry must have the format:
- * Addr-type           Address        Value
- *
- * where:
- *      Addr-type register length (1,2 or 4 bytes)
- *      Address   absolute address of the register
- *      value     value to be stored in the register
- */
-
-/* set the default clock gate to save power */
-DATA 4, CCM_CCGR0, 0x00c03f3f
-DATA 4, CCM_CCGR1, 0x0030fcff
-DATA 4, CCM_CCGR2, 0x0fffcfc0
-DATA 4, CCM_CCGR3, 0x3ff0300f
-DATA 4, CCM_CCGR4, 0xfffff30c /* enable NAND/GPMI/BCH clocks */
-DATA 4, CCM_CCGR5, 0x0f0000c3
-DATA 4, CCM_CCGR6, 0x000003ff
diff --git a/board/aristainetos/common/Kconfig b/board/aristainetos/common/Kconfig
new file mode 100644 (file)
index 0000000..e26de51
--- /dev/null
@@ -0,0 +1,35 @@
+config SYS_BOARD_VERSION
+       int "select version of aristainetos board"
+       help
+         version of aristainetos board version
+         2 version 2
+         3 version 2b
+         4 version 2bcsl
+         5 version 2c
+
+config SYS_I2C_MXC_I2C1
+       default y
+
+config SYS_I2C_MXC_I2C2
+       default y
+
+config SYS_I2C_MXC_I2C3
+       default y
+
+config SYS_I2C_MXC_I2C4
+       default y
+
+config SYS_MALLOC_LEN
+       default 0x4000000
+
+config ENV_SIZE
+       default 0x3000
+
+config ENV_SECT_SIZE
+       default 0x10000
+
+config ENV_OFFSET
+       default 0xd0000
+
+config SYS_CONFIG_NAME
+       default "aristainetos2"
diff --git a/board/aristainetos/ddr-setup.cfg b/board/aristainetos/ddr-setup.cfg
deleted file mode 100644 (file)
index d3ade35..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * Copyright (C) 2013 Boundary Devices
- *
- * Device Configuration Data (DCD)
- *
- * Each entry must have the format:
- * Addr-type           Address        Value
- *
- * where:
- *      Addr-type register length (1,2 or 4 bytes)
- *      Address   absolute address of the register
- *      value     value to be stored in the register
- */
-
-/* DDR IO TYPE */
-DATA 4, MX6_IOM_GRP_DDR_TYPE, 0x000C0000
-DATA 4, MX6_IOM_GRP_DDRPKE, 0x00000000
-/* Clock */
-DATA 4, MX6_IOM_DRAM_SDCLK_0, 0x00000030
-DATA 4, MX6_IOM_DRAM_SDCLK_1, 0x00000030
-/* Address */
-DATA 4, MX6_IOM_DRAM_CAS, 0x00000030
-DATA 4, MX6_IOM_DRAM_RAS, 0x00000030
-DATA 4, MX6_IOM_GRP_ADDDS, 0x00000030
-/* Control */
-DATA 4, MX6_IOM_DRAM_RESET, 0x00000030
-DATA 4, MX6_IOM_DRAM_SDCKE0, 0x00003000
-DATA 4, MX6_IOM_DRAM_SDCKE1, 0x00003000
-DATA 4, MX6_IOM_DRAM_SDBA2, 0x00000000
-DATA 4, MX6_IOM_DRAM_SDODT0, 0x00003030
-DATA 4, MX6_IOM_DRAM_SDODT1, 0x00003030
-DATA 4, MX6_IOM_GRP_CTLDS, 0x00000030
-/* Data Strobe */
-DATA 4, MX6_IOM_DDRMODE_CTL, 0x00020000
-DATA 4, MX6_IOM_DRAM_SDQS0, 0x00000030
-DATA 4, MX6_IOM_DRAM_SDQS1, 0x00000030
-DATA 4, MX6_IOM_DRAM_SDQS2, 0x00000030
-DATA 4, MX6_IOM_DRAM_SDQS3, 0x00000030
-DATA 4, MX6_IOM_DRAM_SDQS4, 0x00000030
-DATA 4, MX6_IOM_DRAM_SDQS5, 0x00000030
-DATA 4, MX6_IOM_DRAM_SDQS6, 0x00000030
-DATA 4, MX6_IOM_DRAM_SDQS7, 0x00000030
-DATA 4, MX6_IOM_GRP_DDRMODE, 0x00020000
-DATA 4, MX6_IOM_GRP_B0DS, 0x00000030
-DATA 4, MX6_IOM_GRP_B1DS, 0x00000030
-DATA 4, MX6_IOM_GRP_B2DS, 0x00000030
-DATA 4, MX6_IOM_GRP_B3DS, 0x00000030
-DATA 4, MX6_IOM_GRP_B4DS, 0x00000030
-DATA 4, MX6_IOM_GRP_B5DS, 0x00000030
-DATA 4, MX6_IOM_GRP_B6DS, 0x00000030
-DATA 4, MX6_IOM_GRP_B7DS, 0x00000030
-DATA 4, MX6_IOM_DRAM_DQM0, 0x00000030
-DATA 4, MX6_IOM_DRAM_DQM1, 0x00000030
-DATA 4, MX6_IOM_DRAM_DQM2, 0x00000030
-DATA 4, MX6_IOM_DRAM_DQM3, 0x00000030
-DATA 4, MX6_IOM_DRAM_DQM4, 0x00000030
-DATA 4, MX6_IOM_DRAM_DQM5, 0x00000030
-DATA 4, MX6_IOM_DRAM_DQM6, 0x00000030
-DATA 4, MX6_IOM_DRAM_DQM7, 0x00000030
diff --git a/board/aristainetos/mt41j128M.cfg b/board/aristainetos/mt41j128M.cfg
deleted file mode 100644 (file)
index bb2684b..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * Copyright (C) 2013 Boundary Devices
- */
-/* ZQ Calibration */
-DATA 4, MX6_MMDC_P0_MPZQHWCTRL, 0xa1390003
-DATA 4, MX6_MMDC_P1_MPZQHWCTRL, 0xa1390003
-DATA 4, MX6_MMDC_P0_MPWLDECTRL0, 0x001F001F
-DATA 4, MX6_MMDC_P0_MPWLDECTRL1, 0x001F001F
-DATA 4, MX6_MMDC_P1_MPWLDECTRL0, 0x001F001F
-DATA 4, MX6_MMDC_P1_MPWLDECTRL1, 0x001F001F
-/*
- * DQS gating, read delay, write delay calibration values
- * based on calibration compare of 0x00ffff00
- */
-DATA 4, MX6_MMDC_P0_MPDGCTRL0, 0x420E020E
-DATA 4, MX6_MMDC_P0_MPDGCTRL1, 0x02000200
-DATA 4, MX6_MMDC_P1_MPDGCTRL0, 0x42020202
-DATA 4, MX6_MMDC_P1_MPDGCTRL1, 0x01720172
-DATA 4, MX6_MMDC_P0_MPRDDLCTL, 0x494C4F4C
-DATA 4, MX6_MMDC_P1_MPRDDLCTL, 0x4A4C4C49
-DATA 4, MX6_MMDC_P0_MPWRDLCTL, 0x3F3F3133
-DATA 4, MX6_MMDC_P1_MPWRDLCTL, 0x39373F2E
-/* read data bit delay */
-DATA 4, MX6_MMDC_P0_MPRDDQBY0DL, 0x33333333
-DATA 4, MX6_MMDC_P0_MPRDDQBY1DL, 0x33333333
-DATA 4, MX6_MMDC_P0_MPRDDQBY2DL, 0x33333333
-DATA 4, MX6_MMDC_P0_MPRDDQBY3DL, 0x33333333
-DATA 4, MX6_MMDC_P1_MPRDDQBY0DL, 0x33333333
-DATA 4, MX6_MMDC_P1_MPRDDQBY1DL, 0x33333333
-DATA 4, MX6_MMDC_P1_MPRDDQBY2DL, 0x33333333
-DATA 4, MX6_MMDC_P1_MPRDDQBY3DL, 0x33333333
-/* Complete calibration by forced measurment */
-DATA 4, MX6_MMDC_P0_MPMUR0, 0x00000800
-DATA 4, MX6_MMDC_P1_MPMUR0, 0x00000800
-/* in DDR3, 64-bit mode, only MMDC0 is initiated */
-DATA 4, MX6_MMDC_P0_MDPDC, 0x0002002d
-DATA 4, MX6_MMDC_P0_MDOTC, 0x00333030
-DATA 4, MX6_MMDC_P0_MDCFG0, 0x40445323
-DATA 4, MX6_MMDC_P0_MDCFG1, 0xb66e8c63
-DATA 4, MX6_MMDC_P0_MDCFG2, 0x01ff00db
-DATA 4, MX6_MMDC_P0_MDMISC, 0x00081740
-DATA 4, MX6_MMDC_P0_MDSCR, 0x00008000
-DATA 4, MX6_MMDC_P0_MDRWD, 0x000026d2
-DATA 4, MX6_MMDC_P0_MDOR, 0x00440e21
-DATA 4, MX6_MMDC_P0_MDASP, 0x00000027
-DATA 4, MX6_MMDC_P0_MDCTL, 0x84190000
-/* MR2 */
-DATA 4, MX6_MMDC_P0_MDSCR, 0x04008032
-DATA 4, MX6_MMDC_P0_MDSCR, 0x0400803a
-/* MR3 */
-DATA 4, MX6_MMDC_P0_MDSCR, 0x00008033
-DATA 4, MX6_MMDC_P0_MDSCR, 0x0000803b
-/* MR1 */
-DATA 4, MX6_MMDC_P0_MDSCR, 0x00428031
-DATA 4, MX6_MMDC_P0_MDSCR, 0x00428039
-/* MR0 */
-DATA 4, MX6_MMDC_P0_MDSCR, 0x07208030
-DATA 4, MX6_MMDC_P0_MDSCR, 0x07208038
-/* ZQ calibration */
-DATA 4, MX6_MMDC_P0_MDSCR, 0x04008040
-DATA 4, MX6_MMDC_P0_MDSCR, 0x04008048
-/* final ddr setup */
-DATA 4, MX6_MMDC_P0_MDREF, 0x00005800
-DATA 4, MX6_MMDC_P0_MPODTCTRL, 0x00000007
-DATA 4, MX6_MMDC_P1_MPODTCTRL, 0x00000007
-DATA 4, MX6_MMDC_P0_MDPDC, 0x0002556d
-DATA 4, MX6_MMDC_P1_MAPSR, 0x00011006
-DATA 4, MX6_MMDC_P0_MDSCR, 0x00000000
index 63a54f59b88888529fb0fa2df07eb536ec5327b7..398e4ed72028319de2eedfa20eec78646399170b 100644 (file)
@@ -129,16 +129,6 @@ static void setup_gpio_leds(void)
        gpio_direction_output(GPIO_LED_PWR_G, 0);
 }
 
-#ifdef CONFIG_USB_EHCI_MX5
-int board_ehci_hcd_init(int port)
-{
-       /* request VBUS power enable pin, GPIO7_8 */
-       gpio_direction_output(IMX_GPIO_NR(7, 8), 1);
-       return 0;
-}
-#endif
-
-
 static int power_init(void)
 {
        /* nothing to do on CX9020 */
index b20ca168dfb63e5a64779f0d642a76248126f1f8..3e185ad82a29e31ebb895f91accecf8ccfe43c08 100644 (file)
@@ -147,6 +147,11 @@ int board_video_skip(void)
 static inline void cm_fx6_setup_display(void) {}
 #endif /* CONFIG_VIDEO_IPUV3 */
 
+int ipu_displays_init(void)
+{
+       return board_video_skip();
+}
+
 #ifdef CONFIG_DWC_AHSATA
 static int cm_fx6_issd_gpios[] = {
        /* The order of the GPIOs in the array is important! */
diff --git a/board/ea/mx7ulp_com/Kconfig b/board/ea/mx7ulp_com/Kconfig
new file mode 100644 (file)
index 0000000..90883ac
--- /dev/null
@@ -0,0 +1,12 @@
+if TARGET_MX7ULP_COM
+
+config SYS_BOARD
+       default "mx7ulp_com"
+
+config SYS_VENDOR
+       default "ea"
+
+config SYS_CONFIG_NAME
+       default "mx7ulp_com"
+
+endif
diff --git a/board/ea/mx7ulp_com/MAINTAINERS b/board/ea/mx7ulp_com/MAINTAINERS
new file mode 100644 (file)
index 0000000..3f69511
--- /dev/null
@@ -0,0 +1,6 @@
+MX7ULPCOM BOARD
+M:     Fabio Estevam <festevam@gmail.com>
+S:     Maintained
+F:     board/ea/mx7ulp_com/
+F:     include/configs/mx7ulp_com.h
+F:     configs/mx7ulp_com_defconfig
diff --git a/board/ea/mx7ulp_com/Makefile b/board/ea/mx7ulp_com/Makefile
new file mode 100644 (file)
index 0000000..b3b230b
--- /dev/null
@@ -0,0 +1,6 @@
+# (C) Copyright 2016 Freescale Semiconductor, Inc.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  := mx7ulp_com.o
diff --git a/board/ea/mx7ulp_com/imximage.cfg b/board/ea/mx7ulp_com/imximage.cfg
new file mode 100644 (file)
index 0000000..d298d17
--- /dev/null
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2016 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+ * Refer docs/README.imxmage for more details about how-to configure
+ * and create imximage boot image
+ *
+ * The syntax is taken as close as possible with the kwbimage
+ */
+
+#define __ASSEMBLY__
+#include <config.h>
+
+/* image version */
+
+IMAGE_VERSION 2
+
+/*
+ * Boot Device : one of
+ * spi/sd/nand/onenand, qspi/nor
+ */
+
+BOOT_FROM      sd
+
+#ifdef CONFIG_USE_IMXIMG_PLUGIN
+/*PLUGIN    plugin-binary-file    IRAM_FREE_START_ADDR*/
+PLUGIN board/freescale/mx7ulp_evk/plugin.bin 0x2F020000
+#else
+
+#ifdef CONFIG_SECURE_BOOT
+CSF CONFIG_CSF_SIZE
+#endif
+/*
+ * Device Configuration Data (DCD)
+ *
+ * Each entry must have the format:
+ * Addr-type           Address        Value
+ *
+ * where:
+ *     Addr-type register length (1,2 or 4 bytes)
+ *     Address   absolute address of the register
+ *     value     value to be stored in the register
+ */
+DATA 4   0x403f00dc 0x00000000
+DATA 4   0x403e0040 0x01000020
+DATA 4   0x403e0500 0x01000000
+DATA 4   0x403e050c 0x80808080
+DATA 4   0x403e0508 0x00160002
+DATA 4   0x403E0510 0x00000001
+DATA 4   0x403E0514 0x00000014
+DATA 4   0x403e0500 0x00000001
+CHECK_BITS_SET 4 0x403e0500 0x01000000
+/*
+ * Default PFD0 divide is 27, which generates:
+ * PFD0 Freq = A7 APLL (528MHz) * 18 / 27 = 352MHz
+ *
+ * i.MX7ULP COM board can not run DDR at 352MHz, so
+ * use a divider of 30 (0x1E), which gives:
+ *
+ * PFD0 Freq = A7 APLL (528MHz) * 18 / 30 = 316.8MHz
+ */
+DATA 4   0x403e050c 0x8080801E
+CHECK_BITS_SET 4 0x403e050c 0x00000040
+DATA 4   0x403E0030 0x00000001
+DATA 4   0x403e0040 0x11000020
+DATA 4   0x403f00dc 0x42000000
+
+DATA 4   0x40B300AC 0x40000000
+
+DATA 4   0x40AD0128 0x00040000
+DATA 4   0x40AD00F8 0x00000000
+DATA 4   0x40AD00D8 0x00000180
+DATA 4   0x40AD0104 0x00000180
+DATA 4   0x40AD0108 0x00000180
+DATA 4   0x40AD0124 0x00010000
+DATA 4   0x40AD0080 0x0000018C
+DATA 4   0x40AD0084 0x0000018C
+DATA 4   0x40AD0088 0x0000018C
+DATA 4   0x40AD008C 0x0000018C
+
+DATA 4   0x40AD0120 0x00010000
+DATA 4   0x40AD010C 0x00000180
+DATA 4   0x40AD0110 0x00000180
+DATA 4   0x40AD0114 0x00000180
+DATA 4   0x40AD0118 0x00000180
+DATA 4   0x40AD0090 0x00000180
+DATA 4   0x40AD0094 0x00000180
+DATA 4   0x40AD0098 0x00000180
+DATA 4   0x40AD009C 0x00000180
+
+DATA 4   0x40AD00E0 0x00040000
+DATA 4   0x40AD00E4 0x00040000
+
+DATA 4   0x40AB001C 0x00008000
+DATA 4   0x40AB085C 0x0D3900A0
+DATA 4   0x40AB0800 0xA1390003
+DATA 4   0x40AB0890 0x00400000
+DATA 4   0x40AB081C 0x33333333
+DATA 4   0x40AB0820 0x33333333
+DATA 4   0x40AB0824 0x33333333
+DATA 4   0x40AB0828 0x33333333
+DATA 4   0x40AB08C0 0x24922492
+DATA 4   0x40AB0848 0x3A3E3838
+DATA 4   0x40AB0850 0x28282C2A
+DATA 4   0x40AB083C 0x20000000
+DATA 4   0x40AB0840 0x00000000
+DATA 4   0x40AB08B8 0x00000800
+DATA 4   0x40AB000C 0x292C40F5
+DATA 4   0x40AB0004 0x00020064
+DATA 4   0x40AB0010 0xB6AD0A83
+DATA 4   0x40AB0014 0x00C70093
+DATA 4   0x40AB0018 0x00211708
+DATA 4   0x40AB002C 0x0F9F26D2
+DATA 4   0x40AB0030 0x009F0E10
+DATA 4   0x40AB0038 0x00130556
+DATA 4   0x40AB0008 0x12272000
+DATA 4   0x40AB0040 0x0000003F
+DATA 4   0x40AB0000 0xC3110000
+DATA 4   0x40AB001C 0x00008010
+DATA 4   0x40AB001C 0x00008018
+DATA 4   0x40AB001C 0x003F8030
+DATA 4   0x40AB001C 0xFF0A8030
+DATA 4   0x40AB001C 0x82018030
+DATA 4   0x40AB001C 0x06028030
+DATA 4   0x40AB001C 0x01038030
+DATA 4   0x40AB001C 0x003F8038
+DATA 4   0x40AB001C 0xFF0A8038
+DATA 4   0x40AB001C 0x82018038
+DATA 4   0x40AB001C 0x06028038
+DATA 4   0x40AB001C 0x01038038
+DATA 4   0x40AB083C 0xA0000000
+DATA 4   0x40AB083C 0xA0000000
+DATA 4   0x40AB0020 0x00001800
+DATA 4   0x40AB0800 0xA1310003
+DATA 4   0x40AB001C 0x00000000
+#endif
diff --git a/board/ea/mx7ulp_com/mx7ulp_com.c b/board/ea/mx7ulp_com/mx7ulp_com.c
new file mode 100644 (file)
index 0000000..6fc1631
--- /dev/null
@@ -0,0 +1,48 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2016 Freescale Semiconductor, Inc.
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/mx7ulp-pins.h>
+#include <asm/arch/iomux.h>
+#include <asm/gpio.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define UART_PAD_CTRL          (PAD_CTL_PUS_UP)
+
+int dram_init(void)
+{
+       gd->ram_size = imx_ddr_size();
+
+       return 0;
+}
+
+static iomux_cfg_t const lpuart4_pads[] = {
+       MX7ULP_PAD_PTC3__LPUART4_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
+       MX7ULP_PAD_PTC2__LPUART4_TX | MUX_PAD_CTRL(UART_PAD_CTRL),
+};
+
+static void setup_iomux_uart(void)
+{
+       mx7ulp_iomux_setup_multiple_pads(lpuart4_pads,
+                                        ARRAY_SIZE(lpuart4_pads));
+}
+
+int board_early_init_f(void)
+{
+       setup_iomux_uart();
+
+       return 0;
+}
+
+int board_init(void)
+{
+       /* address of boot parameters */
+       gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
+
+       return 0;
+}
index e5358b47f33ee056d95eaca92077b867e5972bdb..6472d382c93581c471ef6b4214cb5fa0811b9287 100644 (file)
@@ -10,6 +10,8 @@
 #include <env.h>
 #include <init.h>
 #include <mmc.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/imx-regs.h>
 #include <asm/arch/sys_proto.h>
 #include <watchdog.h>
 
@@ -35,35 +37,102 @@ static void mmc_late_init(void)
 }
 #endif
 
-static void setenv_fdt_file(void)
+enum engicam_boards {
+       IMX6Q_ICORE,
+       IMX6DL_ICORE,
+       IMX6Q_ICORE_MIPI,
+       IMX6DL_ICORE_MIPI,
+       IMX6Q_ICORE_RQS,
+       IMX6DL_ICORE_RQS,
+       IMX6UL_GEAM,
+       IMX6UL_ISIOT_EMMC,
+       IMX6UL_ISIOT_NAND,
+       ENGICAM_BOARDS,
+};
+
+static const char * const board_fdt_file[ENGICAM_BOARDS] = {
+       [IMX6Q_ICORE] = "imx6q-icore.dtb",
+       [IMX6DL_ICORE] = "imx6dl-icore.dtb",
+       [IMX6Q_ICORE_MIPI] = "imx6q-icore-mipi.dtb",
+       [IMX6DL_ICORE_MIPI] = "imx6dl-icore-mipi.dtb",
+       [IMX6Q_ICORE_RQS] = "imx6q-icore-rqs.dtb",
+       [IMX6DL_ICORE_RQS] = "imx6dl-icore-rqs.dtb",
+       [IMX6UL_GEAM] = "imx6ul-geam.dtb",
+       [IMX6UL_ISIOT_EMMC] = "imx6ul-isiot-emmc.dtb",
+       [IMX6UL_ISIOT_NAND] = "imx6ul-isiot-nand.dtb",
+};
+
+static int setenv_fdt_file(int board_detected)
+{
+       if (board_detected < 0 || board_detected >= ENGICAM_BOARDS)
+               return -EINVAL;
+
+       if (!board_fdt_file[board_detected])
+               return -ENODEV;
+
+       env_set("fdt_file", board_fdt_file[board_detected]);
+       return 0;
+}
+
+static enum engicam_boards engicam_board_detect(void)
 {
        const char *cmp_dtb = CONFIG_DEFAULT_DEVICE_TREE;
 
        if (!strcmp(cmp_dtb, "imx6q-icore")) {
                if (is_mx6dq())
-                       env_set("fdt_file", "imx6q-icore.dtb");
+                       return IMX6Q_ICORE;
                else if (is_mx6dl() || is_mx6solo())
-                       env_set("fdt_file", "imx6dl-icore.dtb");
+                       return IMX6DL_ICORE;
        } else if (!strcmp(cmp_dtb, "imx6q-icore-mipi")) {
                if (is_mx6dq())
-                       env_set("fdt_file", "imx6q-icore-mipi.dtb");
+                       return IMX6Q_ICORE_MIPI;
                else if (is_mx6dl() || is_mx6solo())
-                       env_set("fdt_file", "imx6dl-icore-mipi.dtb");
+                       return IMX6DL_ICORE_MIPI;
        } else if (!strcmp(cmp_dtb, "imx6q-icore-rqs")) {
                if (is_mx6dq())
-                       env_set("fdt_file", "imx6q-icore-rqs.dtb");
+                       return IMX6Q_ICORE_RQS;
                else if (is_mx6dl() || is_mx6solo())
-                       env_set("fdt_file", "imx6dl-icore-rqs.dtb");
+                       return IMX6DL_ICORE_RQS;
        } else if (!strcmp(cmp_dtb, "imx6ul-geam"))
-               env_set("fdt_file", "imx6ul-geam.dtb");
+                       return IMX6UL_GEAM;
        else if (!strcmp(cmp_dtb, "imx6ul-isiot-emmc"))
-               env_set("fdt_file", "imx6ul-isiot-emmc.dtb");
+                       return IMX6UL_ISIOT_EMMC;
        else if (!strcmp(cmp_dtb, "imx6ul-isiot-nand"))
-               env_set("fdt_file", "imx6ul-isiot-nand.dtb");
+                       return IMX6UL_ISIOT_NAND;
+
+       return -EINVAL;
+}
+
+static int fixup_enet_clock(enum engicam_boards board_detected)
+{
+       struct iomuxc *iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
+       int clk_internal = 0;
+
+       switch (board_detected) {
+       case IMX6Q_ICORE_MIPI:
+       case IMX6DL_ICORE_MIPI:
+               clk_internal = 1;
+               break;
+       default:
+               break;
+       }
+
+       /* set gpr1[21] to select anatop clock */
+       debug("fixup_enet_clock %d\n", clk_internal);
+       clrsetbits_le32(&iomuxc_regs->gpr[1], 0x1 << 21, clk_internal << 21);
+
+       if (!clk_internal) {
+               /* clock is external */
+               return 0;
+       }
+
+       return enable_fec_anatop_clock(0, ENET_50MHZ);
 }
 
 int board_late_init(void)
 {
+       enum engicam_boards board_detected = IMX6Q_ICORE;
+
        switch ((imx6_src_get_boot_mode() & IMX6_BMODE_MASK) >>
                        IMX6_BMODE_SHIFT) {
        case IMX6_BMODE_SD:
@@ -88,7 +157,12 @@ int board_late_init(void)
        else
                env_set("console", "ttymxc3");
 
-       setenv_fdt_file();
+       board_detected = engicam_board_detect();
+       if (board_detected < 0)
+               hang();
+
+       fixup_enet_clock(board_detected);
+       setenv_fdt_file(board_detected);
 
 #ifdef CONFIG_HW_WATCHDOG
        hw_watchdog_init();
index a885bc5c97d72f71e5cd7ad93c5ead7401dcc027..c908c0adc4d49b8411ed2086de29c8f9d9cb37c2 100644 (file)
@@ -9,18 +9,18 @@ Quick Start
 
 Get and Build the ARM Trusted firmware
 ======================================
-Note: srctree is U-Boot source directory
+Note: builddir is U-Boot build directory (source directory for in-tree builds)
 Get ATF from: https://source.codeaurora.org/external/imx/imx-atf
 branch: imx_4.19.35_1.0.0
 $ make PLAT=imx8mm bl31
-$ cp build/imx8mm/release/bl31.bin $(srctree)
+$ cp build/imx8mm/release/bl31.bin $(builddir)
 
 Get the ddr and hdmi firmware
 =============================
 $ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.0.bin
 $ chmod +x firmware-imx-8.0.bin
 $ ./firmware-imx-8.0
-$ cp firmware-imx-7.9/firmware/ddr/synopsys/lpddr4*.bin $(srctree)
+$ cp firmware-imx-7.9/firmware/ddr/synopsys/lpddr4*.bin $(builddir)
 
 Build U-Boot
 ============
index 4f671b069cb48daf066d43b65c1b7dbd14ff4929..859f852255eb8c20e0f3a0d29a972b7d6cfafdbd 100644 (file)
@@ -13,15 +13,15 @@ Note: srctree is U-Boot source directory
 Get ATF from: https://source.codeaurora.org/external/imx/imx-atf
 branch: imx_4.19.35_1.0.0
 $ make PLAT=imx8mq bl31
-$ cp build/imx8mq/release/bl31.bin $(srctree)
+$ cp build/imx8mq/release/bl31.bin $(builddir)
 
 Get the ddr and hdmi firmware
 =============================
 $ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-7.9.bin
 $ chmod +x firmware-imx-7.9.bin
 $ ./firmware-imx-7.9.bin
-$ cp firmware-imx-7.9/firmware/hdmi/cadence/signed_hdmi_imx8m.bin $(srctree)
-$ cp firmware-imx-7.9/firmware/ddr/synopsys/lpddr4*.bin $(srctree)
+$ cp firmware-imx-7.9/firmware/hdmi/cadence/signed_hdmi_imx8m.bin $(builddir)
+$ cp firmware-imx-7.9/firmware/ddr/synopsys/lpddr4*.bin $(builddir)
 
 Build U-Boot
 ============
index 33ae91c307456206d8fff1ac60956eeacbdf1996..453f281418d08040f7782d76396c6ee11afa264d 100644 (file)
@@ -145,7 +145,7 @@ int power_init_board(void)
        u32 switch_num = 6;
        u32 offset = PFUZE100_SW1CMODE;
 
-       ret = pmic_get("pfuze100", &dev);
+       ret = pmic_get("pfuze100@08", &dev);
        if (ret == -ENODEV)
                return 0;
 
index 227d178e076233bea226e5d7a25a26dc9128b3d7..0a36b46e9e8b1c22922ba5fa1279946656688013 100644 (file)
@@ -57,7 +57,7 @@ int power_init_board(void)
        u32 switch_num = 6;
        u32 offset = PFUZE100_SW1CMODE;
 
-       ret = pmic_get("pfuze100", &dev);
+       ret = pmic_get("pfuze100@08", &dev);
        if (ret == -ENODEV)
                return 0;
 
index f1120d67e37fe824ded4e07d77028c5b2aa6b068..835eed3316405dae9140f43d81357ec3304e22ba 100644 (file)
@@ -16,7 +16,6 @@
 #include <fsl_esdhc_imx.h>
 #include <mmc.h>
 #include <miiphy.h>
-#include <netdev.h>
 #include <power/pmic.h>
 #include <power/pfuze3000_pmic.h>
 #include "../common/pfuze.h"
@@ -29,11 +28,6 @@ DECLARE_GLOBAL_DATA_PTR;
 #define UART_PAD_CTRL  (PAD_CTL_DSE_3P3V_49OHM | \
        PAD_CTL_PUS_PU100KOHM | PAD_CTL_HYS)
 
-#define ENET_PAD_CTRL  (PAD_CTL_PUS_PU100KOHM | PAD_CTL_DSE_3P3V_49OHM)
-#define ENET_PAD_CTRL_MII  (PAD_CTL_DSE_3P3V_32OHM)
-
-#define ENET_RX_PAD_CTRL  (PAD_CTL_PUS_PU100KOHM | PAD_CTL_DSE_3P3V_49OHM)
-
 #define LCD_PAD_CTRL    (PAD_CTL_HYS | PAD_CTL_PUS_PU100KOHM | \
        PAD_CTL_DSE_3P3V_49OHM)
 
@@ -170,30 +164,6 @@ static int setup_lcd(void)
 }
 #endif
 
-#ifdef CONFIG_FEC_MXC
-static iomux_v3_cfg_t const fec1_pads[] = {
-       MX7D_PAD_ENET1_RGMII_RX_CTL__ENET1_RGMII_RX_CTL | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
-       MX7D_PAD_ENET1_RGMII_RD0__ENET1_RGMII_RD0 | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
-       MX7D_PAD_ENET1_RGMII_RD1__ENET1_RGMII_RD1 | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
-       MX7D_PAD_ENET1_RGMII_RD2__ENET1_RGMII_RD2 | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
-       MX7D_PAD_ENET1_RGMII_RD3__ENET1_RGMII_RD3 | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
-       MX7D_PAD_ENET1_RGMII_RXC__ENET1_RGMII_RXC | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
-       MX7D_PAD_ENET1_RGMII_TX_CTL__ENET1_RGMII_TX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX7D_PAD_ENET1_RGMII_TD0__ENET1_RGMII_TD0 | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX7D_PAD_ENET1_RGMII_TD1__ENET1_RGMII_TD1 | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX7D_PAD_ENET1_RGMII_TD2__ENET1_RGMII_TD2 | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX7D_PAD_ENET1_RGMII_TD3__ENET1_RGMII_TD3 | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX7D_PAD_ENET1_RGMII_TXC__ENET1_RGMII_TXC | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX7D_PAD_GPIO1_IO10__ENET1_MDIO | MUX_PAD_CTRL(ENET_PAD_CTRL_MII),
-       MX7D_PAD_GPIO1_IO11__ENET1_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL_MII),
-};
-
-static void setup_iomux_fec(void)
-{
-       imx_iomux_v3_setup_multiple_pads(fec1_pads, ARRAY_SIZE(fec1_pads));
-}
-#endif
-
 static void setup_iomux_uart(void)
 {
        imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads));
@@ -216,37 +186,6 @@ int mmc_map_to_kernel_blk(int dev_no)
 }
 
 #ifdef CONFIG_FEC_MXC
-int board_eth_init(bd_t *bis)
-{
-       int ret;
-       unsigned int gpio;
-
-       ret = gpio_lookup_name("gpio_spi@0_5", NULL, NULL, &gpio);
-       if (ret) {
-               printf("GPIO: 'gpio_spi@0_5' not found\n");
-               return -ENODEV;
-       }
-
-       ret = gpio_request(gpio, "fec_rst");
-       if (ret && ret != -EBUSY) {
-               printf("gpio: requesting pin %u failed\n", gpio);
-               return ret;
-       }
-
-       gpio_direction_output(gpio, 0);
-       udelay(500);
-       gpio_direction_output(gpio, 1);
-
-       setup_iomux_fec();
-
-       ret = fecmxc_initialize_multi(bis, 0,
-               CONFIG_FEC_MXC_PHYADDR, IMX_FEC_BASE);
-       if (ret)
-               printf("FEC1 MXC: %s:failed\n", __func__);
-
-       return ret;
-}
-
 static int setup_fec(void)
 {
        struct iomuxc_gpr_base_regs *const iomuxc_gpr_regs
@@ -260,7 +199,6 @@ static int setup_fec(void)
        return set_clk_enet(ENET_125MHZ);
 }
 
-
 int board_phy_config(struct phy_device *phydev)
 {
        /* enable rgmii rxc skew and phy mode select to RGMII copper */
@@ -326,7 +264,7 @@ int power_init_board(void)
        struct udevice *dev;
        int ret, dev_id, rev_id;
 
-       ret = pmic_get("pfuze3000", &dev);
+       ret = pmic_get("pfuze3000@08", &dev);
        if (ret == -ENODEV)
                return 0;
        if (ret != 0)
index 2f6747b70a35cf1b7741c941857815e29d5322f8..89607cf0568d4ab214afabca6c39e8de36b890e8 100644 (file)
 #include <pwm.h>
 #include <version.h>
 #include <stdlib.h>
+#include <dm/root.h>
 #include "../common/ge_common.h"
 #include "../common/vpd_reader.h"
 #include "../../../drivers/net/e1000.h"
+#include <pci.h>
+
 DECLARE_GLOBAL_DATA_PTR;
 
-static int confidx = 3;  /* Default to b850v3. */
+static int confidx;  /* Default to generic. */
 static struct vpd_cache vpd;
 
 #define NC_PAD_CTRL (PAD_CTL_PUS_100K_UP |     \
@@ -82,38 +85,6 @@ static iomux_v3_cfg_t const uart4_pads[] = {
        MX6_PAD_KEY_ROW0__UART4_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
 };
 
-static iomux_v3_cfg_t const enet_pads[] = {
-       MX6_PAD_ENET_MDIO__ENET_MDIO | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_MDC__ENET_MDC   | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_TXC__RGMII_TXC | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_TD0__RGMII_TD0 | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_TD1__RGMII_TD1 | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_TD2__RGMII_TD2 | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_TD3__RGMII_TD3 | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_TX_CTL__RGMII_TX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_REF_CLK__ENET_TX_CLK  | MUX_PAD_CTRL(ENET_CLK_PAD_CTRL),
-       MX6_PAD_RGMII_RXC__RGMII_RXC | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
-       MX6_PAD_RGMII_RD0__RGMII_RD0 | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
-       MX6_PAD_RGMII_RD1__RGMII_RD1 | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
-       MX6_PAD_RGMII_RD2__RGMII_RD2 | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
-       MX6_PAD_RGMII_RD3__RGMII_RD3 | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
-       MX6_PAD_RGMII_RX_CTL__RGMII_RX_CTL | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
-       /* AR8033 PHY Reset */
-       MX6_PAD_ENET_TX_EN__GPIO1_IO28 | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-
-static void setup_iomux_enet(void)
-{
-       imx_iomux_v3_setup_multiple_pads(enet_pads, ARRAY_SIZE(enet_pads));
-
-       /* Reset AR8033 PHY */
-       gpio_request(IMX_GPIO_NR(1, 28), "fec_rst");
-       gpio_direction_output(IMX_GPIO_NR(1, 28), 0);
-       mdelay(10);
-       gpio_set_value(IMX_GPIO_NR(1, 28), 1);
-       mdelay(1);
-}
-
 static struct i2c_pads_info i2c_pad_info1 = {
        .scl = {
                .i2c_mode = MX6_PAD_CSI0_DAT9__I2C1_SCL | I2C_PAD,
@@ -153,16 +124,6 @@ static struct i2c_pads_info i2c_pad_info3 = {
        }
 };
 
-static iomux_v3_cfg_t const pcie_pads[] = {
-       MX6_PAD_GPIO_5__GPIO1_IO05 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       MX6_PAD_GPIO_17__GPIO7_IO12 | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-
-static void setup_pcie(void)
-{
-       imx_iomux_v3_setup_multiple_pads(pcie_pads, ARRAY_SIZE(pcie_pads));
-}
-
 static void setup_iomux_uart(void)
 {
        imx_iomux_v3_setup_multiple_pads(uart3_pads, ARRAY_SIZE(uart3_pads));
@@ -218,13 +179,6 @@ static void do_enable_hdmi(struct display_info_t const *dev)
        imx_enable_hdmi_phy();
 }
 
-int board_cfb_skip(void)
-{
-       gpio_direction_output(LVDS_POWER_GP, 1);
-
-       return 0;
-}
-
 static int is_b850v3(void)
 {
        return confidx == 3;
@@ -461,7 +415,7 @@ static int vpd_callback(struct vpd_cache *vpd, u8 id, u8 version, u8 type,
 
 static void process_vpd(struct vpd_cache *vpd)
 {
-       int fec_index = -1;
+       int fec_index = 0;
        int i210_index = -1;
 
        if (!vpd->is_read) {
@@ -469,41 +423,30 @@ static void process_vpd(struct vpd_cache *vpd)
                return;
        }
 
+       if (vpd->has & VPD_HAS_MAC1)
+               eth_env_set_enetaddr_by_index("eth", fec_index, vpd->mac1);
+
+       env_set("ethact", "eth0");
+
        switch (vpd->product_id) {
        case VPD_PRODUCT_B450:
                env_set("confidx", "1");
-               i210_index = 0;
-               fec_index = 1;
+               i210_index = 1;
                break;
        case VPD_PRODUCT_B650:
                env_set("confidx", "2");
-               i210_index = 0;
-               fec_index = 1;
+               i210_index = 1;
                break;
        case VPD_PRODUCT_B850:
                env_set("confidx", "3");
-               i210_index = 1;
-               fec_index = 2;
+               i210_index = 2;
                break;
        }
 
-       if (fec_index >= 0 && (vpd->has & VPD_HAS_MAC1))
-               eth_env_set_enetaddr_by_index("eth", fec_index, vpd->mac1);
-
        if (i210_index >= 0 && (vpd->has & VPD_HAS_MAC2))
                eth_env_set_enetaddr_by_index("eth", i210_index, vpd->mac2);
 }
 
-int board_eth_init(bd_t *bis)
-{
-       setup_iomux_enet();
-       setup_pcie();
-
-       e1000_initialize(bis);
-
-       return cpu_eth_init(bis);
-}
-
 static iomux_v3_cfg_t const misc_pads[] = {
        MX6_PAD_KEY_ROW2__GPIO4_IO11    | MUX_PAD_CTRL(NO_PAD_CTRL),
        MX6_PAD_EIM_A25__GPIO5_IO02     | MUX_PAD_CTRL(NC_PAD_CTRL),
@@ -553,8 +496,16 @@ int board_init(void)
        setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info3);
 
        if (!read_vpd(&vpd, vpd_callback)) {
+               int ret, rescan;
+
                vpd.is_read = true;
                set_confidx(&vpd);
+
+               ret = fdtdec_resetup(&rescan);
+               if (!ret && rescan) {
+                       dm_uninit();
+                       dm_init_and_scan(false);
+               }
        }
 
        gpio_request(SUS_S3_OUT, "sus_s3_out");
@@ -657,6 +608,8 @@ int board_late_init(void)
 
        check_time();
 
+       pci_init();
+
        return 0;
 }
 
@@ -696,29 +649,51 @@ int checkboard(void)
 #ifdef CONFIG_OF_BOARD_SETUP
 int ft_board_setup(void *blob, bd_t *bd)
 {
+       char *rtc_status = env_get("rtc_status");
+
        fdt_setprop(blob, 0, "ge,boot-ver", version_string,
-                                           strlen(version_string) + 1);
+                   strlen(version_string) + 1);
+
+       fdt_setprop(blob, 0, "ge,rtc-status", rtc_status,
+                   strlen(rtc_status) + 1);
        return 0;
 }
 #endif
 
 static int do_backlight_enable(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
+#if CONFIG_IS_ENABLED(DM_VIDEO)
+       int ret;
+       struct udevice *dev;
+
 #ifdef CONFIG_VIDEO_IPUV3
-       /* We need at least 200ms between power on and backlight on
-        * as per specifications from CHI MEI */
-       mdelay(250);
+       if (!is_b850v3()) {
+               gpio_direction_output(LVDS_POWER_GP, 1);
 
-       /* enable backlight PWM 1 */
-       pwm_init(0, 0, 0);
+               /* We need at least 200ms between power on and backlight on
+                * as per specifications from CHI MEI
+                */
+               mdelay(250);
 
-       /* duty cycle 5000000ns, period: 5000000ns */
-       pwm_config(0, 5000000, 5000000);
+               /* enable backlight PWM 1 */
+               pwm_init(0, 0, 0);
 
-       /* Backlight Power */
-       gpio_direction_output(LVDS_BACKLIGHT_GP, 1);
+               /* duty cycle 5000000ns, period: 5000000ns */
+               pwm_config(0, 5000000, 5000000);
+
+               /* Backlight Power */
+               gpio_direction_output(LVDS_BACKLIGHT_GP, 1);
+
+               pwm_enable(0);
+       }
+#endif
 
-       pwm_enable(0);
+       /* Probe, to find a video device to be used to show a message on
+        * the vidconsole.
+        */
+       ret = uclass_get_device(UCLASS_VIDEO, 0, &dev);
+       if (ret)
+               return ret;
 #endif
 
        return 0;
@@ -729,3 +704,26 @@ U_BOOT_CMD(
        "enable Bx50 backlight",
        ""
 );
+
+int board_fit_config_name_match(const char *name)
+{
+       if (!vpd.is_read)
+               return strcmp(name, "imx6q-bx50v3");
+
+       switch (vpd.product_id) {
+       case VPD_PRODUCT_B450:
+               return strcmp(name, "imx6q-b450v3");
+       case VPD_PRODUCT_B650:
+               return strcmp(name, "imx6q-b650v3");
+       case VPD_PRODUCT_B850:
+               return strcmp(name, "imx6q-b850v3");
+       default:
+               return -1;
+       }
+}
+
+int embedded_dtb_select(void)
+{
+       vpd.is_read = false;
+       return fdtdec_setup();
+}
index 501c8b2daf2aa0b5426f1f3f323844d5f5dcc9d6..d7e21deca74d5212159cd177a480f1a62dc34614 100644 (file)
@@ -17,8 +17,10 @@ void check_time(void)
        unsigned int current_i2c_bus = i2c_get_bus_num();
 
        ret = i2c_set_bus_num(CONFIG_SYS_RTC_BUS_NUM);
-       if (ret < 0)
+       if (ret < 0) {
+               env_set("rtc_status", "FAIL");
                return;
+       }
 
        rtc_init();
 
@@ -28,10 +30,7 @@ void check_time(void)
                        break;
        }
 
-       if (ret < 0)
-               env_set("rtc_status", "RTC_ERROR");
-
-       if (tm.tm_year > 2037) {
+       if (!ret && tm.tm_year > 2037) {
                tm.tm_sec  = 0;
                tm.tm_min  = 0;
                tm.tm_hour = 0;
@@ -46,10 +45,17 @@ void check_time(void)
                                break;
                }
 
-               if (ret < 0)
-                       env_set("rtc_status", "RTC_ERROR");
+               if (ret >= 0)
+                       ret = 2038;
        }
 
+       if (ret < 0)
+               env_set("rtc_status", "FAIL");
+       else if (ret == 2038)
+               env_set("rtc_status", "2038");
+       else
+               env_set("rtc_status", "OK");
+
        i2c_set_bus_num(current_i2c_bus);
 }
 
index 51b5d8996d6f1f85c62be9b1125fc29d540e1ddc..105edd24cb6166b6bb1ad6f11af6fb030aa659c7 100644 (file)
@@ -297,7 +297,6 @@ int board_late_init(void)
                return res;
 
        print_cpuinfo();
-       hw_watchdog_init();
 
        check_time();
 
@@ -314,8 +313,13 @@ int checkboard(void)
 #ifdef CONFIG_OF_BOARD_SETUP
 int ft_board_setup(void *blob, bd_t *bd)
 {
+       char *rtc_status = env_get("rtc_status");
+
        fdt_setprop(blob, 0, "ge,boot-ver", version_string,
-                                           strlen(version_string) + 1);
+                   strlen(version_string) + 1);
+
+       fdt_setprop(blob, 0, "ge,rtc-status", rtc_status,
+                   strlen(rtc_status) + 1);
        return 0;
 }
 #endif
diff --git a/board/liebherr/xea/Kconfig b/board/liebherr/xea/Kconfig
new file mode 100644 (file)
index 0000000..5428de4
--- /dev/null
@@ -0,0 +1,24 @@
+if TARGET_XEA
+
+config SYS_BOARD
+       default "xea"
+
+config SYS_VENDOR
+       default "liebherr"
+
+config SYS_SOC
+       default "mxs"
+
+config SYS_CONFIG_NAME
+       default "xea"
+
+config ENV_SIZE
+       default 0x2000
+
+config ENV_SECT_SIZE
+       default 0x10000 if ENV_IS_IN_SPI_FLASH
+
+config ENV_OFFSET
+       default 0x80000 if ENV_IS_IN_SPI_FLASH
+
+endif
diff --git a/board/liebherr/xea/MAINTAINERS b/board/liebherr/xea/MAINTAINERS
new file mode 100644 (file)
index 0000000..623184d
--- /dev/null
@@ -0,0 +1,6 @@
+XEA BOARD
+M:     Lukasz Majewski <lukma@denx.de>
+S:     Maintained
+F:     board/liebherr/xea/
+F:     include/configs/xea.h
+F:     configs/imx28_xea_defconfig
diff --git a/board/liebherr/xea/Makefile b/board/liebherr/xea/Makefile
new file mode 100644 (file)
index 0000000..abf5008
--- /dev/null
@@ -0,0 +1,12 @@
+#
+# (C) Copyright 2019
+# Lukasz Majewski, DENX Software Engineering, lukma@denx.de.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  := xea.o
+
+ifdef  CONFIG_SPL_BUILD
+obj-y  += spl_xea.o
+endif
diff --git a/board/liebherr/xea/README b/board/liebherr/xea/README
new file mode 100644 (file)
index 0000000..3e55d3e
--- /dev/null
@@ -0,0 +1,63 @@
+Building SPL/U-Boot for xea board
+=================================
+
+Setup environment, configure and build, e.g. by:
+
+ $ make imx28_xea_defconfig
+ $ make -j4 u-boot.sb u-boot.img
+
+Now you should see u-boot.sb and u-boot.img files in the build directory.
+
+
+Booting
+=======
+
+The boot ROM loads SPL from SPI NOR flash into SRAM.  SPL configures
+DRAM and loads either a Linux kernel (falcon mode) or, if the rescue
+pin is asserted, the main U-Boot.  Both kernel and U-Boot reside in
+eMMC boot partition 0.  For redundancy, a copy of U-Boot is also
+stored in SPI flash.  If a valid kernel image is not found, U-Boot is
+loaded from eMMC or, if this fails, SPI flash.
+
+Boot area layout
+----------------
+
+SPI NOR
+Offset          Function        File
+------------------------------------------
+0x00000000      SPL             u-boot.sb
+0x00010000      U-Boot          u-boot.img
+0x00080000      Environment
+
+eMMC
+Offset          Function        File
+------------------------------------------
+0x00000000      U-Boot          u-boot.img
+0x00080000      Devicetree      imx28-bttc.dtb
+0x00100000      Kernel          uImage
+
+
+Falcon mode
+===========
+
+In falcon mode, the default, SPL loads the kernel and devicetree
+directly.  For this to work, the stored devicetree must include
+correct "memory" and "chosen" nodes as these are not updated by SPL
+before booting the kernel.
+
+
+Updating from U-Boot
+====================
+
+The default U-Boot environment includes command sequences to update
+SPL, U-Boot, and kernel over TFTP.  These are as follows:
+
+- update_spl: writes u-boot.sb to SPI NOR
+- update_uboot: writes u-boot.img to eMMC and SPI NOR
+- update_kernel: writes kernel and devicetree to eMMC
+
+They can be invoked at the U-Boot prompt using the "run" command,
+e.g. "run update_spl" to update the SPL.
+
+These update commands download the above-named files from the
+${hostname} directory on the server provided by DHCP.
diff --git a/board/liebherr/xea/spl_xea.c b/board/liebherr/xea/spl_xea.c
new file mode 100644 (file)
index 0000000..d88b75b
--- /dev/null
@@ -0,0 +1,303 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * DENX M28 Boot setup
+ *
+ * Copyright (C) 2019 DENX Software Engineering
+ * Lukasz Majewski, DENX Software Engineering, lukma@denx.de
+ *
+ * Copyright (C) 2018 DENX Software Engineering
+ * MÃ¥ns RullgÃ¥rd, DENX Software Engineering, mans@mansr.com
+ *
+ * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
+ * on behalf of DENX Software Engineering GmbH
+ */
+
+#include <common.h>
+#include <config.h>
+#include <asm/io.h>
+#include <asm/arch/iomux-mx28.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/sys_proto.h>
+
+#define        MUX_CONFIG_LCD  (MXS_PAD_3V3 | MXS_PAD_4MA | MXS_PAD_NOPULL)
+#define        MUX_CONFIG_BOOT (MXS_PAD_3V3 | MXS_PAD_PULLUP)
+#define        MUX_CONFIG_TSC  (MXS_PAD_3V3 | MXS_PAD_8MA | MXS_PAD_PULLUP)
+#define        MUX_CONFIG_SSP0 (MXS_PAD_3V3 | MXS_PAD_12MA | MXS_PAD_PULLUP)
+#define        MUX_CONFIG_SSP2 (MXS_PAD_3V3 | MXS_PAD_4MA | MXS_PAD_PULLUP)
+#define        MUX_CONFIG_ENET (MXS_PAD_3V3 | MXS_PAD_8MA | MXS_PAD_NOPULL)
+#define        MUX_CONFIG_EMI  (MXS_PAD_3V3 | MXS_PAD_12MA | MXS_PAD_NOPULL)
+
+const iomux_cfg_t iomux_setup[] = {
+       /* AUART0 IRDA */
+       MX28_PAD_AUART0_RX__AUART0_RX,
+       MX28_PAD_AUART0_TX__AUART0_TX,
+
+       /* AUART 4 RS422 */
+       MX28_PAD_AUART0_CTS__AUART4_RX,
+       MX28_PAD_AUART0_RTS__AUART4_TX,
+
+       /* USB0 */
+       MX28_PAD_AUART1_CTS__USB0_OVERCURRENT,
+       MX28_PAD_AUART1_RTS__USB0_ID,
+       MX28_PAD_LCD_VSYNC__GPIO_1_28, /* PRW_On */
+
+       /* USB1 */
+       MX28_PAD_PWM2__USB1_OVERCURRENT,
+
+       /* eMMC */
+       MX28_PAD_SSP0_CMD__SSP0_CMD | MUX_CONFIG_SSP0,
+       MX28_PAD_SSP0_DATA0__SSP0_D0 | MUX_CONFIG_SSP0,
+       MX28_PAD_SSP0_DATA1__SSP0_D1 | MUX_CONFIG_SSP0,
+       MX28_PAD_SSP0_DATA2__SSP0_D2 | MUX_CONFIG_SSP0,
+       MX28_PAD_SSP0_DATA3__SSP0_D3 | MUX_CONFIG_SSP0,
+       MX28_PAD_SSP0_DATA4__SSP0_D4 | MUX_CONFIG_SSP0,
+       MX28_PAD_SSP0_DATA5__SSP0_D5 | MUX_CONFIG_SSP0,
+       MX28_PAD_SSP0_DATA6__SSP0_D6 | MUX_CONFIG_SSP0,
+       MX28_PAD_SSP0_DATA7__SSP0_D7 | MUX_CONFIG_SSP0,
+       MX28_PAD_SSP0_DETECT__GPIO_2_9, /* Reset for eMMC */
+       MX28_PAD_SSP0_SCK__SSP0_SCK | MUX_CONFIG_SSP0,
+
+       /* DIG Keys */
+       MX28_PAD_GPMI_D00__GPIO_0_0,
+       MX28_PAD_GPMI_D01__GPIO_0_1,
+       MX28_PAD_GPMI_D02__GPIO_0_2,
+       MX28_PAD_GPMI_D03__GPIO_0_3,
+       MX28_PAD_GPMI_D04__GPIO_0_4,
+       MX28_PAD_GPMI_D05__GPIO_0_5,
+       MX28_PAD_GPMI_D06__GPIO_0_6,
+       MX28_PAD_GPMI_D07__GPIO_0_7,
+
+       /* ADR_0-2 */
+       MX28_PAD_GPMI_CE1N__GPIO_0_17,
+       MX28_PAD_GPMI_CE2N__GPIO_0_18,
+       MX28_PAD_GPMI_CE3N__GPIO_0_19,
+
+       /* Read Keys */
+       MX28_PAD_GPMI_RDY0__GPIO_0_20,
+
+       /* LATCH_EN */
+       MX28_PAD_GPMI_RDY1__GPIO_0_21,
+
+       /* Power off */
+       MX28_PAD_GPMI_RDN__GPIO_0_24,
+
+       /* I2C1 Touch */
+       MX28_PAD_AUART2_CTS__GPIO_3_10,
+       MX28_PAD_AUART2_RTS__GPIO_3_11,
+       MX28_PAD_GPMI_RDY2__GPIO_0_22, /* Touch Reset */
+
+       /* TIVA */
+       MX28_PAD_AUART1_RX__SSP2_CARD_DETECT,
+       MX28_PAD_SSP2_MISO__SSP2_D0,
+       MX28_PAD_SSP2_MOSI__SSP2_CMD,
+       MX28_PAD_SSP2_SCK__SSP2_SCK,
+       MX28_PAD_SSP2_SS0__SSP2_D3,
+       MX28_PAD_SSP2_SS1__GPIO_2_20,
+       MX28_PAD_SSP2_SS2__GPIO_2_21,
+
+       /* SPI3 NOR-Flash */
+       MX28_PAD_AUART1_TX__SSP3_CARD_DETECT,
+       MX28_PAD_AUART2_RX__SSP3_D1,
+       MX28_PAD_AUART2_TX__SSP3_D2,
+       MX28_PAD_SSP3_MISO__SSP3_D0,
+       MX28_PAD_SSP3_MOSI__SSP3_CMD,
+       MX28_PAD_SSP3_SCK__SSP3_SCK,
+       MX28_PAD_SSP3_SS0__SSP3_D3,
+
+       /* NOR-Flash CMD */
+       MX28_PAD_LCD_RS__GPIO_1_26, /* Hold */
+       MX28_PAD_LCD_WR_RWN__GPIO_1_25, /* write protect */
+
+       /* I2C0 Codec */
+       MX28_PAD_I2C0_SCL__I2C0_SCL,
+       MX28_PAD_I2C0_SDA__I2C0_SDA,
+
+       /* I2S Codec */
+       MX28_PAD_SAIF0_BITCLK__SAIF0_BITCLK,
+       MX28_PAD_SAIF0_LRCLK__SAIF0_LRCLK,
+       MX28_PAD_SAIF0_MCLK__SAIF0_MCLK,
+       MX28_PAD_SAIF0_SDATA0__SAIF0_SDATA0,
+       MX28_PAD_SAIF1_SDATA0__SAIF1_SDATA0,
+
+       /* PWR-Hold */
+       MX28_PAD_SPDIF__GPIO_3_27,
+
+       /* EMI */
+       MX28_PAD_EMI_D00__EMI_DATA0 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D01__EMI_DATA1 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D02__EMI_DATA2 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D03__EMI_DATA3 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D04__EMI_DATA4 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D05__EMI_DATA5 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D06__EMI_DATA6 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D07__EMI_DATA7 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D08__EMI_DATA8 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D09__EMI_DATA9 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D10__EMI_DATA10 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D11__EMI_DATA11 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D12__EMI_DATA12 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D13__EMI_DATA13 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D14__EMI_DATA14 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D15__EMI_DATA15 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_ODT0__EMI_ODT0 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_DQM0__EMI_DQM0 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_ODT1__EMI_ODT1 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_DQM1__EMI_DQM1 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_DDR_OPEN_FB__EMI_DDR_OPEN_FEEDBACK | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_CLK__EMI_CLK | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_DQS0__EMI_DQS0 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_DQS1__EMI_DQS1 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_DDR_OPEN__EMI_DDR_OPEN | MUX_CONFIG_EMI,
+
+       MX28_PAD_EMI_A00__EMI_ADDR0 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A01__EMI_ADDR1 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A02__EMI_ADDR2 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A03__EMI_ADDR3 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A04__EMI_ADDR4 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A05__EMI_ADDR5 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A06__EMI_ADDR6 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A07__EMI_ADDR7 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A08__EMI_ADDR8 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A09__EMI_ADDR9 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A10__EMI_ADDR10 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A11__EMI_ADDR11 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A12__EMI_ADDR12 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A13__EMI_ADDR13 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A14__EMI_ADDR14 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_BA0__EMI_BA0 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_BA1__EMI_BA1 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_BA2__EMI_BA2 | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_CASN__EMI_CASN | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_RASN__EMI_RASN | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_WEN__EMI_WEN | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_CE0N__EMI_CE0N | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_CE1N__EMI_CE1N | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_CKE__EMI_CKE | MUX_CONFIG_EMI,
+
+       /* Uart3 Bluetooth-Interface */
+       MX28_PAD_AUART3_CTS__AUART3_CTS,
+       MX28_PAD_AUART3_RTS__AUART3_RTS,
+       MX28_PAD_AUART3_RX__AUART3_RX,
+       MX28_PAD_AUART3_TX__AUART3_TX,
+
+       /* framebuffer */
+       MX28_PAD_LCD_CS__LCD_CS | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D00__LCD_D0 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D01__LCD_D1 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D02__LCD_D2 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D03__LCD_D3 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D04__LCD_D4 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D05__LCD_D5 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D06__LCD_D6 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D07__LCD_D7 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D08__LCD_D8 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D09__LCD_D9 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D10__LCD_D10 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D11__LCD_D11 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D12__LCD_D12 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D13__LCD_D13 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D14__LCD_D14 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D15__LCD_D15 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D16__LCD_D16 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D17__LCD_D17 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D18__LCD_D18 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D19__LCD_D19 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D20__LCD_D20 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D21__LCD_D21 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D22__LCD_D22 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D23__LCD_D23 | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_DOTCLK__LCD_DOTCLK | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_ENABLE__LCD_ENABLE | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_HSYNC__LCD_HSYNC | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_RD_E__LCD_VSYNC | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_RESET__LCD_RESET | MUX_CONFIG_LCD,
+
+       /* DUART RS232 */
+       MX28_PAD_PWM0__DUART_RX,
+       MX28_PAD_PWM1__DUART_TX,
+
+       /* FEC Ethernet */
+       MX28_PAD_ENET_CLK__CLKCTRL_ENET | MUX_CONFIG_ENET,
+       MX28_PAD_ENET0_COL__ENET1_TX_EN | MUX_CONFIG_ENET,
+       MX28_PAD_ENET0_CRS__ENET1_RX_EN | MUX_CONFIG_ENET,
+       MX28_PAD_ENET0_MDC__ENET0_MDC | MUX_CONFIG_ENET,
+       MX28_PAD_ENET0_MDIO__ENET0_MDIO | MUX_CONFIG_ENET,
+       MX28_PAD_ENET0_RX_CLK__GPIO_4_13, /* Phy Interrupt */
+       MX28_PAD_ENET0_RX_EN__ENET0_RX_EN | MUX_CONFIG_ENET,
+       MX28_PAD_ENET0_RXD0__ENET0_RXD0 | MUX_CONFIG_ENET,
+       MX28_PAD_ENET0_RXD1__ENET0_RXD1 | MUX_CONFIG_ENET,
+       MX28_PAD_ENET0_RXD3__ENET1_RXD1 | MUX_CONFIG_ENET,
+       MX28_PAD_ENET0_TX_CLK__GPIO_4_5, /* n.c. */
+       MX28_PAD_ENET0_TX_EN__ENET0_TX_EN | MUX_CONFIG_ENET,
+       MX28_PAD_ENET0_TXD0__ENET0_TXD0 | MUX_CONFIG_ENET,
+       MX28_PAD_ENET0_TXD1__ENET0_TXD1 | MUX_CONFIG_ENET,
+       MX28_PAD_ENET0_TXD3__ENET1_TXD1 | MUX_CONFIG_ENET,
+       MX28_PAD_SSP1_CMD__GPIO_2_13, /* PHY reset */
+
+       /* TIVA boot control */
+       MX28_PAD_GPMI_RDY3__GPIO_0_23 | MUX_CONFIG_BOOT, /* TIVA0 */
+       MX28_PAD_GPMI_WRN__GPIO_0_25 | MUX_CONFIG_BOOT, /* TIVA1 */
+};
+
+u32 mxs_dram_vals[] = {
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000100, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00010101, 0x01010101,
+       0x000f0f01, 0x0f02010a, 0x00000000, 0x00010101,
+       0x00000100, 0x00000100, 0x00000000, 0x00000002,
+       0x01010000, 0x07080403, 0x07005303, 0x0b0000c8,
+       0x0200a0c1, 0x0002040c, 0x0038430a, 0x04290322,
+       0x02040203, 0x00c8002b, 0x00000000, 0x00000000,
+       0x00012100, 0xffff0303, 0x00012100, 0xffff0303,
+       0x00012100, 0xffff0303, 0x00012100, 0xffff0303,
+       0x00000003, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000612, 0x01000102,
+       0x06120612, 0x00000200, 0x00020007, 0xf4004a27,
+       0xf4004a27, 0xf4004a27, 0xf4004a27, 0x07400300,
+       0x07400300, 0x07400300, 0x07400300, 0x00000005,
+       0x00000000, 0x00000000, 0x01000000, 0x00000000,
+       0x00000001, 0x000f1133, 0x00000000, 0x00001f04,
+       0x00001f04, 0x00001f04, 0x00001f04, 0x00001f04,
+       0x00001f04, 0x00001f04, 0x00001f04, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00010000, 0x00030404,
+       0x00000002, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x01010000,
+       0x01000000, 0x03030000, 0x00010303, 0x01020202,
+       0x00000000, 0x02040101, 0x21002103, 0x00061200,
+       0x06120612, 0x00000642, 0x00000000, 0x00000004,
+       0x00000000, 0x00000080, 0x00000000, 0x00000000,
+       0x00000000, 0xffffffff
+};
+
+void lowlevel_init(void)
+{
+       struct mxs_pinctrl_regs *pinctrl_regs =
+               (struct mxs_pinctrl_regs *)MXS_PINCTRL_BASE;
+
+       /* Set EMI drive strength */
+       writel(0x00003fff, &pinctrl_regs->hw_pinctrl_emi_ds_ctrl_clr);
+       writel(0x00002aaa, &pinctrl_regs->hw_pinctrl_emi_ds_ctrl_set);
+
+       mxs_common_spl_init(0, NULL, iomux_setup, ARRAY_SIZE(iomux_setup));
+}
diff --git a/board/liebherr/xea/xea.c b/board/liebherr/xea/xea.c
new file mode 100644 (file)
index 0000000..1d47f67
--- /dev/null
@@ -0,0 +1,153 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * XEA iMX28 board
+ *
+ * Copyright (C) 2019 DENX Software Engineering
+ * Lukasz Majewski, DENX Software Engineering, lukma@denx.de
+ *
+ * Copyright (C) 2018 DENX Software Engineering
+ * MÃ¥ns RullgÃ¥rd, DENX Software Engineering, mans@mansr.com
+ *
+ * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
+ * on behalf of DENX Software Engineering GmbH
+ *
+ */
+
+#include <common.h>
+#include <asm/gpio.h>
+#include <asm/io.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/iomux-mx28.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
+#include <linux/mii.h>
+#include <miiphy.h>
+#include <netdev.h>
+#include <errno.h>
+#include <usb.h>
+#include <serial.h>
+
+#ifdef CONFIG_SPL_BUILD
+#include <spl.h>
+#endif
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/*
+ * Functions
+ */
+
+static void init_clocks(void)
+{
+       /* IO0 clock at 480MHz */
+       mxs_set_ioclk(MXC_IOCLK0, 480000);
+       /* IO1 clock at 480MHz */
+       mxs_set_ioclk(MXC_IOCLK1, 480000);
+
+       /* SSP0 clock at 96MHz */
+       mxs_set_sspclk(MXC_SSPCLK0, 96000, 0);
+       /* SSP2 clock at 160MHz */
+       mxs_set_sspclk(MXC_SSPCLK2, 160000, 0);
+       /* SSP3 clock at 96MHz */
+       mxs_set_sspclk(MXC_SSPCLK3, 96000, 0);
+}
+
+#ifdef CONFIG_SPL_BUILD
+void board_init_f(ulong arg)
+{
+       init_clocks();
+       preloader_console_init();
+}
+
+static int boot_tiva0, boot_tiva1;
+
+/* Check if TIVAs request booting via U-Boot proper */
+void spl_board_init(void)
+{
+       struct gpio_desc btiva0, btiva1;
+       int ret;
+
+       ret = dm_gpio_lookup_name("GPIO0_23", &btiva0);
+       if (ret)
+               printf("Cannot get GPIO0_23\n");
+
+       ret = dm_gpio_lookup_name("GPIO0_25", &btiva1);
+       if (ret)
+               printf("Cannot get GPIO0_25\n");
+
+       ret = dm_gpio_request(&btiva0, "boot-tiva0");
+       if (ret)
+               printf("Cannot request GPIO0_23\n");
+
+       ret = dm_gpio_request(&btiva1, "boot-tiva1");
+       if (ret)
+               printf("Cannot request GPIO0_25\n");
+
+       dm_gpio_set_dir_flags(&btiva0, GPIOD_IS_IN);
+       dm_gpio_set_dir_flags(&btiva1, GPIOD_IS_IN);
+
+       udelay(1000);
+
+       boot_tiva0 = dm_gpio_get_value(&btiva0);
+       boot_tiva1 = dm_gpio_get_value(&btiva1);
+}
+
+void board_boot_order(u32 *spl_boot_list)
+{
+       spl_boot_list[0] = BOOT_DEVICE_MMC1;
+       spl_boot_list[1] = BOOT_DEVICE_SPI;
+}
+
+int spl_start_uboot(void)
+{
+       /* break into full u-boot on 'c' */
+       if (serial_tstc() && serial_getc() == 'c')
+               return 1;
+
+       debug("%s: btiva0: %d btiva1: %d\n", __func__, boot_tiva0, boot_tiva1);
+       return !boot_tiva0 || !boot_tiva1;
+}
+#else
+
+int board_early_init_f(void)
+{
+       init_clocks();
+
+       return 0;
+}
+
+int board_init(void)
+{
+       struct gpio_desc phy_rst;
+       int ret;
+
+       /* Address of boot parameters */
+       gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
+
+       cpu_eth_init(NULL);
+
+       /* PHY INT#/PWDN# */
+       ret = dm_gpio_lookup_name("GPIO4_13", &phy_rst);
+       if (ret) {
+               printf("Cannot get GPIO4_13\n");
+               return ret;
+       }
+
+       ret = dm_gpio_request(&phy_rst, "phy-rst");
+       if (ret) {
+               printf("Cannot request GPIO4_13\n");
+               return ret;
+       }
+
+       dm_gpio_set_dir_flags(&phy_rst, GPIOD_IS_IN);
+       udelay(1000);
+
+       return 0;
+}
+
+int dram_init(void)
+{
+       return mxs_dram_init();
+}
+
+#endif /* CONFIG_SPL_BUILD */
index 710b9680d4147a7429ccd0d41e1f01faca3c3510..02be541cc0d4e751b2d2ff0f8ccbeaffe4683558 100644 (file)
@@ -2,10 +2,14 @@ PCL063 BOARD
 M:     Martyn Welch <martyn.welch@collabora.com>
 M:     Parthiban Nallathambi <parthitce@gmail.com>
 S:     Maintained
-F:     arch/arm/dts/imx6ul-pcl063.dtsi
-F:     arch/arm/dts/imx6ul-phycore-segin.dts
-F:     arch/arm/dts/imx6ull-phycore-segin.dts
-F:     arch/arm/dts/pcl063-common.dtsi
+F:     arch/arm/dts/imx6ul-phytec-phycore-som.dtsi
+F:     arch/arm/dts/imx6ul-phytec-segin-peb-eval-01.dtsi
+F:     arch/arm/dts/imx6ul-phytec-segin.dtsi
+F:     arch/arm/dts/imx6ul-phytec-segin-ff-rdk-nand.dts
+F:     arch/arm/dts/imx6ull-phytec-phycore-som.dtsi
+F:     arch/arm/dts/imx6ull-phytec-segin-peb-eval-01.dtsi
+F:     arch/arm/dts/imx6ull-phytec-segin.dtsi
+F:     arch/arm/dts/imx6ull-phytec-segin-ff-rdk-emmc.dts
 F:     arch/arm/dts/imx6ull-u-boot.dtsi
 F:     board/phytec/pcl063/
 F:     configs/phycore_pcl063_defconfig
index d6e0c83e0d2178f7ecda402ccfb496c2573ec867..6a96f9ecdb5315a45577e5b966c4b1f0a9ecffdf 100644 (file)
@@ -66,6 +66,8 @@ enum board_type {
        UNKNOWN         = 0x03,
 };
 
+static struct gpio_desc board_detect_desc[5];
+
 #define MEM_STRIDE 0x4000000
 static u32 get_ram_size_stride_test(u32 *base, u32 maxsize)
 {
@@ -155,10 +157,6 @@ static iomux_v3_cfg_t const som_rev_detect[] = {
        IOMUX_PADS(PAD_CSI0_DAT18__GPIO6_IO04  | MUX_PAD_CTRL(UART_PAD_CTRL)),
 };
 
-static iomux_v3_cfg_t const usb_pads[] = {
-       IOMUX_PADS(PAD_GPIO_0__GPIO1_IO00 | MUX_PAD_CTRL(NO_PAD_CTRL)),
-};
-
 static void setup_iomux_uart(void)
 {
        SETUP_IOMUX_PADS(uart1_pads);
@@ -176,7 +174,7 @@ static struct fsl_esdhc_cfg emmc_cfg = {
 
 int board_mmc_get_env_dev(int devno)
 {
-       return devno - 1;
+       return devno;
 }
 
 #define USDHC2_CD_GPIO  IMX_GPIO_NR(1, 4)
@@ -198,27 +196,6 @@ int board_mmc_getcd(struct mmc *mmc)
        return ret;
 }
 
-static int mmc_init_main(bd_t *bis)
-{
-       int ret;
-
-       /*
-        * Following map is done:
-        * (U-Boot device node)    (Physical Port)
-        * mmc0                    Carrier board MicroSD
-        * mmc1                    SOM eMMC
-        */
-       SETUP_IOMUX_PADS(usdhc2_pads);
-       usdhc_cfg.sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
-       ret = fsl_esdhc_initialize(bis, &usdhc_cfg);
-       if (ret)
-               return ret;
-
-       SETUP_IOMUX_PADS(usdhc3_pads);
-       emmc_cfg.sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
-       return fsl_esdhc_initialize(bis, &emmc_cfg);
-}
-
 static int mmc_init_spl(bd_t *bis)
 {
        struct src *psrc = (struct src *)SRC_BASE_ADDR;
@@ -252,7 +229,7 @@ int board_mmc_init(bd_t *bis)
        if (IS_ENABLED(CONFIG_SPL_BUILD))
                return mmc_init_spl(bis);
 
-       return mmc_init_main(bis);
+       return 0;
 }
 
 static iomux_v3_cfg_t const enet_pads[] = {
@@ -284,12 +261,29 @@ static iomux_v3_cfg_t const enet_pads[] = {
 
 static void setup_iomux_enet(void)
 {
+       struct gpio_desc desc;
+       int ret;
+
        SETUP_IOMUX_PADS(enet_pads);
 
+       ret = dm_gpio_lookup_name("GPIO4_15", &desc);
+       if (ret) {
+               printf("%s: phy reset lookup failed\n", __func__);
+               return;
+       }
+
+       ret = dm_gpio_request(&desc, "phy-reset");
+       if (ret) {
+               printf("%s: phy reset request failed\n", __func__);
+               return;
+       }
+
        gpio_direction_output(ETH_PHY_RESET, 0);
        mdelay(10);
        gpio_set_value(ETH_PHY_RESET, 1);
        udelay(100);
+
+       gpio_free_list_nodev(&desc, 1);
 }
 
 int board_phy_config(struct phy_device *phydev)
@@ -434,21 +428,6 @@ static int setup_display(void)
 }
 #endif /* CONFIG_VIDEO_IPUV3 */
 
-#ifdef CONFIG_USB_EHCI_MX6
-static void setup_usb(void)
-{
-       SETUP_IOMUX_PADS(usb_pads);
-}
-
-int board_ehci_hcd_init(int port)
-{
-       if (port == 1)
-               gpio_direction_output(USB_H1_VBUS, 1);
-
-       return 0;
-}
-#endif
-
 int board_early_init_f(void)
 {
        setup_iomux_uart();
@@ -456,10 +435,6 @@ int board_early_init_f(void)
 #ifdef CONFIG_CMD_SATA
        setup_sata();
 #endif
-
-#ifdef CONFIG_USB_EHCI_MX6
-       setup_usb();
-#endif
        return 0;
 }
 
@@ -477,6 +452,29 @@ int board_init(void)
        return ret;
 }
 
+static int request_detect_gpios(void)
+{
+       int node;
+       int ret;
+
+       node = fdt_node_offset_by_compatible(gd->fdt_blob, 0,
+               "solidrun,hummingboard-detect");
+       if (node < 0)
+               return -ENODEV;
+
+       ret = gpio_request_list_by_name_nodev(offset_to_ofnode(node),
+               "detect-gpios", board_detect_desc,
+               ARRAY_SIZE(board_detect_desc), GPIOD_IS_IN);
+
+       return ret;
+}
+
+static int free_detect_gpios(void)
+{
+       return gpio_free_list_nodev(board_detect_desc,
+               ARRAY_SIZE(board_detect_desc));
+}
+
 static enum board_type board_type(void)
 {
        int val1, val2, val3;
@@ -532,7 +530,7 @@ static bool is_rev_15_som(void)
 static bool has_emmc(void)
 {
        struct mmc *mmc;
-       mmc = find_mmc_device(1);
+       mmc = find_mmc_device(2);
        if (!mmc)
                return 0;
        return (mmc_get_op_cond(mmc) < 0) ? 0 : 1;
@@ -540,6 +538,8 @@ static bool has_emmc(void)
 
 int checkboard(void)
 {
+       request_detect_gpios();
+
        switch (board_type()) {
        case CUBOXI:
                puts("Board: MX6 Cubox-i");
@@ -561,13 +561,22 @@ int checkboard(void)
        else
                puts("\n");
 
+       free_detect_gpios();
 out:
        return 0;
 }
 
+/* Override the default implementation, DT model is not accurate */
+int show_board_info(void)
+{
+       return checkboard();
+}
+
 int board_late_init(void)
 {
 #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
+       request_detect_gpios();
+
        switch (board_type()) {
        case CUBOXI:
                env_set("board_name", "CUBOXI");
@@ -594,11 +603,27 @@ int board_late_init(void)
        if (has_emmc())
                env_set("has_emmc", "yes");
 
+       free_detect_gpios();
 #endif
 
        return 0;
 }
 
+/*
+ * This is not a perfect match. Avoid dependency on the DM GPIO driver needed
+ * for accurate board detection. Hummingboard2 DT is good enough for U-Boot on
+ * all Hummingboard/Cubox-i platforms.
+ */
+int board_fit_config_name_match(const char *name)
+{
+       char tmp_name[36];
+
+       snprintf(tmp_name, sizeof(tmp_name), "%s-hummingboard2-emmc-som-v15",
+                       is_mx6dq() ? "imx6q" : "imx6dl");
+
+       return strcmp(name, tmp_name);
+}
+
 #ifdef CONFIG_SPL_BUILD
 #include <asm/arch/mx6-ddr.h>
 static const struct mx6dq_iomux_ddr_regs mx6q_ddr_ioregs = {
index 7efe816a789ceb466b39269a35afb1969ce1f190..4a2707e771b5b11dcb966a03b3b3d15eadfff28b 100644 (file)
@@ -1,5 +1,5 @@
 Apalis iMX6
-M:     Max Krummenacher <max.krummenacher@toradex.com>
+M:     Igor Opaniuk <igor.opaniuk@toradex.com>
 W:     http://developer.toradex.com/software/linux/linux-software
 W:      https://www.toradex.com/community
 S:     Maintained
index d4d6eed11a35cf9d0166bacad6d8f58e37dbef67..d569782a192eee118b3510a2f832af030f76e1fd 100644 (file)
@@ -177,22 +177,6 @@ iomux_v3_cfg_t const enet_pads[] = {
 #      define GPIO_ENET_PHY_RESET IMX_GPIO_NR(1, 25)
 };
 
-static void setup_iomux_enet(void)
-{
-       imx_iomux_v3_setup_multiple_pads(enet_pads, ARRAY_SIZE(enet_pads));
-}
-
-static int reset_enet_phy(struct mii_dev *bus)
-{
-       /* Reset KSZ9031 PHY */
-       gpio_request(GPIO_ENET_PHY_RESET, "ETH_RESET#");
-       gpio_direction_output(GPIO_ENET_PHY_RESET, 0);
-       mdelay(10);
-       gpio_set_value(GPIO_ENET_PHY_RESET, 1);
-
-       return 0;
-}
-
 /* mux the Apalis GPIO pins, so they can be used from the U-Boot cmdline */
 iomux_v3_cfg_t const gpio_pads[] = {
        /* Apalis GPIO1 - GPIO8 */
@@ -367,41 +351,6 @@ int board_phy_config(struct phy_device *phydev)
        return 0;
 }
 
-int board_eth_init(bd_t *bis)
-{
-       uint32_t base = IMX_FEC_BASE;
-       struct mii_dev *bus = NULL;
-       struct phy_device *phydev = NULL;
-       int ret;
-
-       setup_iomux_enet();
-
-#ifdef CONFIG_FEC_MXC
-       bus = fec_get_miibus(base, -1);
-       if (!bus)
-               return 0;
-
-       bus->reset = reset_enet_phy;
-       /* scan PHY 4,5,6,7 */
-       phydev = phy_find_by_mask(bus, (0xf << 4), PHY_INTERFACE_MODE_RGMII);
-       if (!phydev) {
-               free(bus);
-               puts("no PHY found\n");
-               return 0;
-       }
-
-       printf("using PHY at %d\n", phydev->addr);
-       ret = fec_probe(bis, -1, base, bus, phydev);
-       if (ret) {
-               printf("FEC MXC: %s:failed\n", __func__);
-               free(phydev);
-               free(bus);
-       }
-#endif /* CONFIG_FEC_MXC */
-
-       return 0;
-}
-
 static iomux_v3_cfg_t const pwr_intb_pads[] = {
        /*
         * the bootrom sets the iomux to vselect, potentially connecting
index c8199fa60a17ac71d6e1d27f72dbced53c3547b6..4107d29876ba34497c57022da8207f6efb5fe7b8 100644 (file)
@@ -1,5 +1,5 @@
 Colibri iMX6ULL
-M:     Stefan Agner <stefan.agner@toradex.com>
+M:     Igor Opaniuk <igor.opaniuk@toradex.com>
 W:     http://developer.toradex.com/software/linux/linux-software
 W:     https://www.toradex.com/community
 S:     Maintained
index e25c07306cce9de11ac064218c456179d633877e..76f9446bbad4916d1a83488765b454a9d14578bd 100644 (file)
@@ -1,5 +1,5 @@
 Colibri iMX6
-M:     Max Krummenacher <max.krummenacher@toradex.com>
+M:     Igor Opaniuk <igor.opaniuk@toradex.com>
 W:     http://developer.toradex.com/software/linux/linux-software
 W:      https://www.toradex.com/community
 S:     Maintained
index a5cd8587dad40f9ec4170ccd4b828f54c05ee699..7db9d25544ce323f3d557e2e3b72776f35156130 100644 (file)
@@ -51,9 +51,6 @@ DECLARE_GLOBAL_DATA_PTR;
        PAD_CTL_SPEED_LOW | PAD_CTL_DSE_80ohm |                 \
        PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
 
-#define ENET_PAD_CTRL  (PAD_CTL_PUS_100K_UP |                  \
-       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
-
 #define WEAK_PULLUP    (PAD_CTL_PUS_100K_UP |                  \
        PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS |   \
        PAD_CTL_SRE_SLOW)
@@ -112,24 +109,6 @@ iomux_v3_cfg_t const usdhc3_pads[] = {
 };
 #endif /* CONFIG_FSL_ESDHC_IMX & CONFIG_SPL_BUILD */
 
-iomux_v3_cfg_t const enet_pads[] = {
-       MX6_PAD_ENET_MDC__ENET_MDC              | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_MDIO__ENET_MDIO            | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_RXD0__ENET_RX_DATA0        | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_RXD1__ENET_RX_DATA1        | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_RX_ER__ENET_RX_ER          | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_TX_EN__ENET_TX_EN          | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_TXD0__ENET_TX_DATA0        | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_TXD1__ENET_TX_DATA1        | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_CRS_DV__ENET_RX_EN         | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_GPIO_16__ENET_REF_CLK           | MUX_PAD_CTRL(ENET_PAD_CTRL),
-};
-
-static void setup_iomux_enet(void)
-{
-       imx_iomux_v3_setup_multiple_pads(enet_pads, ARRAY_SIZE(enet_pads));
-}
-
 /* mux auxiliary pins to GPIO, so they can be used from the U-Boot cmdline */
 iomux_v3_cfg_t const gpio_pads[] = {
        /* ADDRESS[17:18] [25] used as GPIO */
@@ -371,12 +350,8 @@ int board_phy_config(struct phy_device *phydev)
        return 0;
 }
 
-int board_eth_init(bd_t *bis)
+int setup_fec(void)
 {
-       struct iomuxc *iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
-       uint32_t base = IMX_FEC_BASE;
-       struct mii_dev *bus = NULL;
-       struct phy_device *phydev = NULL;
        int ret;
 
        /* provide the PHY clock from the i.MX 6 */
@@ -384,34 +359,6 @@ int board_eth_init(bd_t *bis)
        if (ret)
                return ret;
 
-       /* set gpr1[ENET_CLK_SEL] */
-       setbits_le32(&iomuxc_regs->gpr[1], IOMUXC_GPR1_ENET_CLK_SEL_MASK);
-
-       setup_iomux_enet();
-
-#ifdef CONFIG_FEC_MXC
-       bus = fec_get_miibus(base, -1);
-       if (!bus)
-               return 0;
-
-       /* scan PHY 1..7 */
-       phydev = phy_find_by_mask(bus, 0xff, PHY_INTERFACE_MODE_RMII);
-       if (!phydev) {
-               free(bus);
-               puts("no PHY found\n");
-               return 0;
-       }
-
-       phy_reset(phydev);
-       printf("using PHY at %d\n", phydev->addr);
-       ret = fec_probe(bis, -1, base, bus, phydev);
-       if (ret) {
-               printf("FEC MXC: %s:failed\n", __func__);
-               free(phydev);
-               free(bus);
-       }
-#endif /* CONFIG_FEC_MXC */
-
        return 0;
 }
 
@@ -633,7 +580,9 @@ int board_init(void)
 {
        /* address of boot parameters */
        gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
-
+#if defined(CONFIG_FEC_MXC)
+       setup_fec();
+#endif
 #if defined(CONFIG_VIDEO_IPUV3)
        setup_display();
 #endif
index cd0f9c9b2d21bafb74a1ebd20b2cc98a86b65d3f..178dece7970d88fddd7d655d522e08fb45c72470 100644 (file)
@@ -1,5 +1,5 @@
 Colibri iMX7
-M:     Stefan Agner <stefan.agner@toradex.com>
+M:     Igor Opaniuk <igor.opaniuk@toradex.com>
 W:     http://developer.toradex.com/software/linux/linux-software
 W:     https://www.toradex.com/community
 S:     Maintained
index b0914a9ead50f6c537e0a26081c477a15bcefa4c..77197e0fbb013a532b1a25852e318ff7bb48cb85 100644 (file)
@@ -159,50 +159,12 @@ void board_preboot_os(void)
        gpio_direction_output(GPIO_BL_ON, 0);
 }
 
-#ifdef CONFIG_FEC_MXC
-static iomux_v3_cfg_t const fec1_pads[] = {
-#ifndef CONFIG_COLIBRI_IMX7_EXT_PHYCLK
-       MX7D_PAD_GPIO1_IO12__CCM_ENET_REF_CLK1 | MUX_PAD_CTRL(ENET_PAD_CTRL) | MUX_MODE_SION,
-#else
-       MX7D_PAD_GPIO1_IO12__CCM_ENET_REF_CLK1 | MUX_PAD_CTRL(ENET_PAD_CTRL),
-#endif
-       MX7D_PAD_SD2_CD_B__ENET1_MDIO | MUX_PAD_CTRL(ENET_PAD_CTRL_MII),
-       MX7D_PAD_SD2_WP__ENET1_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL_MII),
-       MX7D_PAD_ENET1_RGMII_RD0__ENET1_RGMII_RD0 | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
-       MX7D_PAD_ENET1_RGMII_RD1__ENET1_RGMII_RD1 | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
-       MX7D_PAD_ENET1_RGMII_RXC__ENET1_RX_ER | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
-       MX7D_PAD_ENET1_RGMII_RX_CTL__ENET1_RGMII_RX_CTL   | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
-       MX7D_PAD_ENET1_RGMII_TD0__ENET1_RGMII_TD0 | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX7D_PAD_ENET1_RGMII_TD1__ENET1_RGMII_TD1 | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX7D_PAD_ENET1_RGMII_TX_CTL__ENET1_RGMII_TX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL),
-};
-
-static void setup_iomux_fec(void)
-{
-       imx_iomux_v3_setup_multiple_pads(fec1_pads, ARRAY_SIZE(fec1_pads));
-}
-#endif
-
 static void setup_iomux_uart(void)
 {
        imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads));
 }
 
 #ifdef CONFIG_FEC_MXC
-int board_eth_init(bd_t *bis)
-{
-       int ret;
-
-       setup_iomux_fec();
-
-       ret = fecmxc_initialize_multi(bis, 0,
-               CONFIG_FEC_MXC_PHYADDR, IMX_FEC_BASE);
-       if (ret)
-               printf("FEC1 MXC: %s:failed\n", __func__);
-
-       return ret;
-}
-
 static int setup_fec(void)
 {
        struct iomuxc_gpr_base_regs *const iomuxc_gpr_regs
@@ -226,12 +188,6 @@ static int setup_fec(void)
        return set_clk_enet(ENET_50MHZ);
 }
 
-int board_phy_config(struct phy_device *phydev)
-{
-       if (phydev->drv->config)
-               phydev->drv->config(phydev);
-       return 0;
-}
 #endif
 
 int board_early_init_f(void)
index 73b8e5d099d711069e184f746bd43badef78000e..00c03c89b880c41abfea0522f2a0b28fdc4b1e8a 100644 (file)
@@ -1,5 +1,5 @@
 Colibri T30
-M:     Stefan Agner <stefan.agner@toradex.com>
+M:     Igor Opaniuk <igor.opaniuk@toradex.com>
 S:     Maintained
 F:     board/toradex/colibri_t30/
 F:     include/configs/colibri_t30.h
index 66b21509866d82a62eb6b14a70857721c3344935..f94cc0fbe2a35eb520a19d8204811649d27f4529 100644 (file)
@@ -1,5 +1,5 @@
 Colibri VFxx
-M:     Stefan Agner <stefan.agner@toradex.com>
+M:     Igor Opaniuk <igor.opaniuk@toradex.com>
 W:     http://developer.toradex.com/software/linux/linux-software
 W:     https://www.toradex.com/community
 S:     Maintained
index 0d11ab53d6634c2494604a8f654061d3f5144ebb..cd9090621b4e5d733a23a5190a55dd772195f3bf 100644 (file)
@@ -66,6 +66,9 @@ CONFIG_FSL_USDHC=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_MICREL=y
 CONFIG_PHY_MICREL_KSZ90X1=y
+CONFIG_DM_ETH=y
+CONFIG_DM_MDIO=y
+CONFIG_FEC_MXC=y
 CONFIG_MII=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_IMX6=y
index c548c0e423f747d1e9f1dbec7f12a3f20bf421ca..0c5c9fc18b07eef618d087e609a2f7f04bb1b9d7 100644 (file)
@@ -1,35 +1,51 @@
 CONFIG_ARM=y
+CONFIG_SYS_THUMB_BUILD=y
 CONFIG_ARCH_MX6=y
 CONFIG_SYS_TEXT_BASE=0x17800000
+CONFIG_SYS_MALLOC_F_LEN=0xe000
 CONFIG_TARGET_ARISTAINETOS2=y
 CONFIG_ENV_SIZE=0x3000
 CONFIG_ENV_OFFSET=0xD0000
 CONFIG_NR_DRAM_BANKS=1
 CONFIG_ENV_SECT_SIZE=0x10000
+CONFIG_IMX_HAB=y
+# CONFIG_CMD_DEKBLOB is not set
+# CONFIG_CMD_NANDBCB is not set
 CONFIG_FIT=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aristainetos/aristainetos2.cfg,MX6DL"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aristainetos/aristainetos2.cfg"
 CONFIG_BOOTDELAY=3
+CONFIG_USE_BOOTCOMMAND=y
+CONFIG_BOOTCOMMAND="run ari_boot"
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
-CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 CONFIG_SUPPORT_RAW_INITRD=y
+CONFIG_VERSION_VARIABLE=y
 CONFIG_BOUNCE_BUFFER=y
+CONFIG_BOARD_TYPES=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
+CONFIG_AUTOBOOT_KEYED=y
+CONFIG_AUTOBOOT_ENCRYPTION=y
+CONFIG_AUTOBOOT_STOP_STR_SHA256="30bb0bce5f77da71a6e8e436fe40af54bc823db9501ae170f77e9992499d88fb"
 CONFIG_CMD_BOOTZ=y
+# CONFIG_BOOTM_NETBSD is not set
+# CONFIG_BOOTM_PLAN9 is not set
+# CONFIG_BOOTM_RTEMS is not set
+# CONFIG_BOOTM_VXWORKS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
 CONFIG_CMD_NAND_TRIMFFS=y
-CONFIG_CMD_SF=y
+# CONFIG_CMD_PINMUX is not set
+# CONFIG_CMD_SATA is not set
 CONFIG_CMD_USB=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_BMP=y
 CONFIG_CMD_CACHE=y
-CONFIG_CMD_DATE=y
+# CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
@@ -37,15 +53,30 @@ CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
 CONFIG_CMD_MTDPARTS=y
 CONFIG_CMD_UBI=y
+CONFIG_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="imx6dl-aristainetos2_4"
+CONFIG_OF_LIST="imx6dl-aristainetos2_4 imx6dl-aristainetos2_7"
+CONFIG_DTB_RESELECT=y
+CONFIG_MULTI_DTB_FIT=y
 CONFIG_ENV_IS_IN_SPI_FLASH=y
+CONFIG_ENV_SPI_EARLY=y
 CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
 CONFIG_ENV_OFFSET_REDUND=0xE0000
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
+CONFIG_DM_GPIO=y
+CONFIG_GPIO_HOG=y
+CONFIG_DM_PCA953X=y
+CONFIG_DM_I2C=y
+CONFIG_LED=y
+CONFIG_LED_GPIO=y
+CONFIG_MISC=y
+CONFIG_I2C_EEPROM=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_USDHC=y
 CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
-CONFIG_SPI_FLASH=y
+CONFIG_DM_SPI_FLASH=y
 CONFIG_SF_DEFAULT_BUS=3
 CONFIG_SF_DEFAULT_CS=1
 CONFIG_SF_DEFAULT_MODE=0
@@ -57,14 +88,30 @@ CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
 CONFIG_PHYLIB=y
 CONFIG_PHY_MICREL=y
 CONFIG_PHY_MICREL_KSZ90X1=y
+CONFIG_DM_ETH=y
 CONFIG_MII=y
+CONFIG_PHY=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_IMX6=y
+CONFIG_DM_PMIC=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_PWM=y
 CONFIG_PWM_IMX=y
+CONFIG_DM_RTC=y
+CONFIG_RTC_DS1307=y
+CONFIG_DM_SERIAL=y
 CONFIG_SPI=y
+CONFIG_DM_SPI=y
 CONFIG_MXC_SPI=y
+CONFIG_SYSRESET=y
+CONFIG_SYSRESET_WATCHDOG=y
 CONFIG_USB=y
+CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
+CONFIG_DM_VIDEO=y
+CONFIG_SYS_WHITE_ON_BLACK=y
+CONFIG_DISPLAY=y
 CONFIG_VIDEO_IPUV3=y
-CONFIG_VIDEO=y
-# CONFIG_VIDEO_SW_CURSOR is not set
 CONFIG_IMX_WATCHDOG=y
-CONFIG_OF_LIBFDT=y
+# CONFIG_EFI_LOADER is not set
index 26082bf4040ec25895974af2dce1e23c5737d18c..adfed9a3dca623b31b2bcf18375fde4d1f59733c 100644 (file)
@@ -1,35 +1,51 @@
 CONFIG_ARM=y
+CONFIG_SYS_THUMB_BUILD=y
 CONFIG_ARCH_MX6=y
 CONFIG_SYS_TEXT_BASE=0x17800000
-CONFIG_TARGET_ARISTAINETOS2B=y
+CONFIG_SYS_MALLOC_F_LEN=0xe000
 CONFIG_ENV_SIZE=0x3000
 CONFIG_ENV_OFFSET=0xD0000
+CONFIG_TARGET_ARISTAINETOS2B=y
 CONFIG_NR_DRAM_BANKS=1
 CONFIG_ENV_SECT_SIZE=0x10000
+CONFIG_IMX_HAB=y
+# CONFIG_CMD_DEKBLOB is not set
+# CONFIG_CMD_NANDBCB is not set
 CONFIG_FIT=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aristainetos/aristainetos2.cfg,MX6DL"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aristainetos/aristainetos2.cfg"
 CONFIG_BOOTDELAY=3
+CONFIG_USE_BOOTCOMMAND=y
+CONFIG_BOOTCOMMAND="run ari_boot"
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
-CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 CONFIG_SUPPORT_RAW_INITRD=y
+CONFIG_VERSION_VARIABLE=y
 CONFIG_BOUNCE_BUFFER=y
+CONFIG_BOARD_TYPES=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
+CONFIG_AUTOBOOT_KEYED=y
+CONFIG_AUTOBOOT_ENCRYPTION=y
+CONFIG_AUTOBOOT_STOP_STR_SHA256="30bb0bce5f77da71a6e8e436fe40af54bc823db9501ae170f77e9992499d88fb"
 CONFIG_CMD_BOOTZ=y
+# CONFIG_BOOTM_NETBSD is not set
+# CONFIG_BOOTM_PLAN9 is not set
+# CONFIG_BOOTM_RTEMS is not set
+# CONFIG_BOOTM_VXWORKS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
 CONFIG_CMD_NAND_TRIMFFS=y
-CONFIG_CMD_SF=y
+# CONFIG_CMD_PINMUX is not set
+# CONFIG_CMD_SATA is not set
 CONFIG_CMD_USB=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_BMP=y
 CONFIG_CMD_CACHE=y
-CONFIG_CMD_DATE=y
+# CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
@@ -37,15 +53,30 @@ CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
 CONFIG_CMD_MTDPARTS=y
 CONFIG_CMD_UBI=y
+CONFIG_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="imx6dl-aristainetos2b_4"
+CONFIG_OF_LIST="imx6dl-aristainetos2b_4 imx6dl-aristainetos2b_7"
+CONFIG_DTB_RESELECT=y
+CONFIG_MULTI_DTB_FIT=y
 CONFIG_ENV_IS_IN_SPI_FLASH=y
+CONFIG_ENV_SPI_EARLY=y
 CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
 CONFIG_ENV_OFFSET_REDUND=0xE0000
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
+CONFIG_DM_GPIO=y
+CONFIG_GPIO_HOG=y
+CONFIG_DM_PCA953X=y
+CONFIG_DM_I2C=y
+CONFIG_LED=y
+CONFIG_LED_GPIO=y
+CONFIG_MISC=y
+CONFIG_I2C_EEPROM=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_USDHC=y
 CONFIG_MTD=y
-CONFIG_MTD_RAW_NAND=y
+CONFIG_NAND=y
 CONFIG_NAND_MXS=y
-CONFIG_SPI_FLASH=y
+CONFIG_DM_SPI_FLASH=y
 CONFIG_SF_DEFAULT_MODE=0
 CONFIG_SF_DEFAULT_SPEED=20000000
 CONFIG_SPI_FLASH_STMICRO=y
@@ -55,14 +86,30 @@ CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
 CONFIG_PHYLIB=y
 CONFIG_PHY_MICREL=y
 CONFIG_PHY_MICREL_KSZ90X1=y
+CONFIG_DM_ETH=y
 CONFIG_MII=y
+CONFIG_PHY=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_IMX6=y
+CONFIG_DM_PMIC=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_PWM=y
 CONFIG_PWM_IMX=y
+CONFIG_DM_RTC=y
+CONFIG_RTC_DS1307=y
+CONFIG_DM_SERIAL=y
 CONFIG_SPI=y
+CONFIG_DM_SPI=y
 CONFIG_MXC_SPI=y
+CONFIG_SYSRESET=y
+CONFIG_SYSRESET_WATCHDOG=y
 CONFIG_USB=y
+CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
+CONFIG_DM_VIDEO=y
+CONFIG_SYS_WHITE_ON_BLACK=y
+CONFIG_DISPLAY=y
 CONFIG_VIDEO_IPUV3=y
-CONFIG_VIDEO=y
-# CONFIG_VIDEO_SW_CURSOR is not set
 CONFIG_IMX_WATCHDOG=y
-CONFIG_OF_LIBFDT=y
+# CONFIG_EFI_LOADER is not set
diff --git a/configs/aristainetos2bcsl_defconfig b/configs/aristainetos2bcsl_defconfig
new file mode 100644 (file)
index 0000000..d83d52f
--- /dev/null
@@ -0,0 +1,115 @@
+CONFIG_ARM=y
+CONFIG_SYS_THUMB_BUILD=y
+CONFIG_ARCH_MX6=y
+CONFIG_SYS_TEXT_BASE=0x17800000
+CONFIG_SYS_MALLOC_F_LEN=0xe000
+CONFIG_ENV_SIZE=0x3000
+CONFIG_ENV_OFFSET=0xD0000
+CONFIG_TARGET_ARISTAINETOS2BCSL=y
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_ENV_SECT_SIZE=0x10000
+CONFIG_IMX_HAB=y
+# CONFIG_CMD_DEKBLOB is not set
+# CONFIG_CMD_NANDBCB is not set
+CONFIG_FIT=y
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aristainetos/aristainetos2.cfg"
+CONFIG_BOOTDELAY=3
+CONFIG_USE_BOOTCOMMAND=y
+CONFIG_BOOTCOMMAND="run ari_boot"
+# CONFIG_CONSOLE_MUX is not set
+CONFIG_SYS_CONSOLE_IS_IN_ENV=y
+CONFIG_SUPPORT_RAW_INITRD=y
+CONFIG_VERSION_VARIABLE=y
+CONFIG_BOUNCE_BUFFER=y
+CONFIG_BOARD_TYPES=y
+CONFIG_BOARD_EARLY_INIT_F=y
+CONFIG_HUSH_PARSER=y
+CONFIG_AUTOBOOT_KEYED=y
+CONFIG_AUTOBOOT_ENCRYPTION=y
+CONFIG_AUTOBOOT_STOP_STR_SHA256="30bb0bce5f77da71a6e8e436fe40af54bc823db9501ae170f77e9992499d88fb"
+CONFIG_CMD_BOOTZ=y
+# CONFIG_BOOTM_NETBSD is not set
+# CONFIG_BOOTM_PLAN9 is not set
+# CONFIG_BOOTM_RTEMS is not set
+# CONFIG_BOOTM_VXWORKS is not set
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_NAND_TRIMFFS=y
+# CONFIG_CMD_PINMUX is not set
+# CONFIG_CMD_SATA is not set
+CONFIG_CMD_USB=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_BMP=y
+CONFIG_CMD_CACHE=y
+# CONFIG_CMD_HASH is not set
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
+CONFIG_CMD_UBI=y
+CONFIG_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="imx6dl-aristainetos2b_csl_4"
+CONFIG_OF_LIST="imx6dl-aristainetos2b_csl_4 imx6dl-aristainetos2b_csl_7"
+CONFIG_DTB_RESELECT=y
+CONFIG_MULTI_DTB_FIT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
+CONFIG_ENV_SPI_EARLY=y
+CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
+CONFIG_ENV_OFFSET_REDUND=0xE0000
+CONFIG_SYS_RELOC_GD_ENV_ADDR=y
+CONFIG_DM_GPIO=y
+CONFIG_GPIO_HOG=y
+CONFIG_DM_PCA953X=y
+CONFIG_DM_I2C=y
+CONFIG_LED=y
+CONFIG_LED_GPIO=y
+CONFIG_MISC=y
+CONFIG_I2C_EEPROM=y
+CONFIG_DM_MMC=y
+CONFIG_FSL_USDHC=y
+CONFIG_MTD=y
+CONFIG_NAND=y
+CONFIG_NAND_MXS=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_SF_DEFAULT_MODE=0
+CONFIG_SF_DEFAULT_SPEED=20000000
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_FLASH_MTD=y
+CONFIG_MTD_UBI_FASTMAP=y
+CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
+CONFIG_PHYLIB=y
+CONFIG_PHY_MICREL=y
+CONFIG_PHY_MICREL_KSZ90X1=y
+CONFIG_DM_ETH=y
+CONFIG_MII=y
+CONFIG_PHY=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_IMX6=y
+CONFIG_DM_PMIC=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_IMX=y
+CONFIG_DM_RTC=y
+CONFIG_RTC_DS1307=y
+CONFIG_DM_SERIAL=y
+CONFIG_SPI=y
+CONFIG_DM_SPI=y
+CONFIG_MXC_SPI=y
+CONFIG_SYSRESET=y
+CONFIG_SYSRESET_WATCHDOG=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_STORAGE=y
+CONFIG_DM_VIDEO=y
+CONFIG_SYS_WHITE_ON_BLACK=y
+CONFIG_DISPLAY=y
+CONFIG_VIDEO_IPUV3=y
+CONFIG_IMX_WATCHDOG=y
+# CONFIG_EFI_LOADER is not set
diff --git a/configs/aristainetos2c_defconfig b/configs/aristainetos2c_defconfig
new file mode 100644 (file)
index 0000000..46a3cf7
--- /dev/null
@@ -0,0 +1,115 @@
+CONFIG_ARM=y
+CONFIG_SYS_THUMB_BUILD=y
+CONFIG_ARCH_MX6=y
+CONFIG_SYS_TEXT_BASE=0x17800000
+CONFIG_SYS_MALLOC_F_LEN=0xe000
+CONFIG_ENV_SIZE=0x3000
+CONFIG_ENV_OFFSET=0xD0000
+CONFIG_TARGET_ARISTAINETOS2C=y
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_ENV_SECT_SIZE=0x10000
+CONFIG_IMX_HAB=y
+# CONFIG_CMD_DEKBLOB is not set
+CONFIG_FIT=y
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aristainetos/aristainetos2.cfg"
+CONFIG_BOOTDELAY=3
+CONFIG_USE_BOOTCOMMAND=y
+CONFIG_BOOTCOMMAND="run ari_boot"
+# CONFIG_CONSOLE_MUX is not set
+CONFIG_SYS_CONSOLE_IS_IN_ENV=y
+CONFIG_SUPPORT_RAW_INITRD=y
+CONFIG_VERSION_VARIABLE=y
+CONFIG_BOUNCE_BUFFER=y
+CONFIG_BOARD_TYPES=y
+CONFIG_BOARD_EARLY_INIT_F=y
+CONFIG_HUSH_PARSER=y
+CONFIG_AUTOBOOT_KEYED=y
+CONFIG_AUTOBOOT_ENCRYPTION=y
+CONFIG_AUTOBOOT_STOP_STR_SHA256="30bb0bce5f77da71a6e8e436fe40af54bc823db9501ae170f77e9992499d88fb"
+CONFIG_CMD_BOOTZ=y
+# CONFIG_BOOTM_NETBSD is not set
+# CONFIG_BOOTM_PLAN9 is not set
+# CONFIG_BOOTM_RTEMS is not set
+# CONFIG_BOOTM_VXWORKS is not set
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_MMC=y
+# CONFIG_CMD_PINMUX is not set
+# CONFIG_CMD_SATA is not set
+CONFIG_CMD_USB=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_BMP=y
+CONFIG_CMD_CACHE=y
+# CONFIG_CMD_HASH is not set
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
+CONFIG_CMD_UBI=y
+CONFIG_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="imx6dl-aristainetos2c_4"
+CONFIG_OF_LIST="imx6dl-aristainetos2c_4 imx6dl-aristainetos2c_7"
+CONFIG_DTB_RESELECT=y
+CONFIG_MULTI_DTB_FIT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
+CONFIG_ENV_SPI_EARLY=y
+CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
+CONFIG_ENV_OFFSET_REDUND=0xE0000
+CONFIG_SYS_RELOC_GD_ENV_ADDR=y
+CONFIG_APBH_DMA=y
+CONFIG_APBH_DMA_BURST=y
+CONFIG_APBH_DMA_BURST8=y
+CONFIG_DM_GPIO=y
+CONFIG_GPIO_HOG=y
+CONFIG_DM_PCA953X=y
+CONFIG_DM_I2C=y
+CONFIG_LED=y
+CONFIG_LED_GPIO=y
+CONFIG_MISC=y
+CONFIG_I2C_EEPROM=y
+CONFIG_DM_MMC=y
+CONFIG_FSL_USDHC=y
+CONFIG_MTD=y
+CONFIG_MTD_DEVICE=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_SF_DEFAULT_MODE=0
+CONFIG_SF_DEFAULT_SPEED=20000000
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_FLASH_MTD=y
+CONFIG_MTD_UBI_FASTMAP=y
+CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
+CONFIG_PHYLIB=y
+CONFIG_PHY_MICREL=y
+CONFIG_PHY_MICREL_KSZ90X1=y
+CONFIG_DM_ETH=y
+CONFIG_MII=y
+CONFIG_PHY=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_IMX6=y
+CONFIG_DM_PMIC=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_IMX=y
+CONFIG_DM_RTC=y
+CONFIG_RTC_DS1307=y
+CONFIG_DM_SERIAL=y
+CONFIG_SPI=y
+CONFIG_DM_SPI=y
+CONFIG_MXC_SPI=y
+CONFIG_SYSRESET=y
+CONFIG_SYSRESET_WATCHDOG=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_STORAGE=y
+CONFIG_DM_VIDEO=y
+CONFIG_SYS_WHITE_ON_BLACK=y
+CONFIG_DISPLAY=y
+CONFIG_VIDEO_IPUV3=y
+CONFIG_IMX_WATCHDOG=y
+# CONFIG_EFI_LOADER is not set
diff --git a/configs/aristainetos_defconfig b/configs/aristainetos_defconfig
deleted file mode 100644 (file)
index 466205b..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_MX6=y
-CONFIG_SYS_TEXT_BASE=0x17800000
-CONFIG_TARGET_ARISTAINETOS=y
-CONFIG_ENV_SIZE=0x3000
-CONFIG_ENV_OFFSET=0xD0000
-CONFIG_NR_DRAM_BANKS=1
-CONFIG_ENV_SECT_SIZE=0x10000
-CONFIG_FIT=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aristainetos/aristainetos.cfg,MX6DL"
-CONFIG_BOOTDELAY=3
-# CONFIG_CONSOLE_MUX is not set
-CONFIG_SYS_CONSOLE_IS_IN_ENV=y
-CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
-CONFIG_SUPPORT_RAW_INITRD=y
-CONFIG_BOUNCE_BUFFER=y
-CONFIG_BOARD_EARLY_INIT_F=y
-CONFIG_HUSH_PARSER=y
-CONFIG_CMD_BOOTZ=y
-# CONFIG_CMD_FLASH is not set
-CONFIG_CMD_GPIO=y
-CONFIG_CMD_I2C=y
-CONFIG_CMD_MMC=y
-CONFIG_CMD_NAND_TRIMFFS=y
-CONFIG_CMD_SF=y
-CONFIG_CMD_USB=y
-CONFIG_CMD_DHCP=y
-CONFIG_CMD_MII=y
-CONFIG_CMD_PING=y
-CONFIG_CMD_BMP=y
-CONFIG_CMD_CACHE=y
-CONFIG_CMD_DATE=y
-CONFIG_CMD_EXT2=y
-CONFIG_CMD_EXT4=y
-CONFIG_CMD_EXT4_WRITE=y
-CONFIG_CMD_FAT=y
-CONFIG_CMD_FS_GENERIC=y
-CONFIG_CMD_MTDPARTS=y
-CONFIG_CMD_UBI=y
-CONFIG_ENV_IS_IN_SPI_FLASH=y
-CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
-CONFIG_ENV_OFFSET_REDUND=0xE0000
-CONFIG_SYS_RELOC_GD_ENV_ADDR=y
-CONFIG_FSL_USDHC=y
-CONFIG_MTD=y
-CONFIG_MTD_RAW_NAND=y
-CONFIG_NAND_MXS=y
-CONFIG_SPI_FLASH=y
-CONFIG_SF_DEFAULT_BUS=3
-CONFIG_SF_DEFAULT_MODE=0
-CONFIG_SF_DEFAULT_SPEED=20000000
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_SPI_FLASH_MTD=y
-CONFIG_MTD_UBI_FASTMAP=y
-CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
-CONFIG_PHYLIB=y
-CONFIG_PHY_MICREL=y
-CONFIG_PHY_MICREL_KSZ8XXX=y
-CONFIG_MII=y
-CONFIG_PWM_IMX=y
-CONFIG_SPI=y
-CONFIG_MXC_SPI=y
-CONFIG_USB=y
-CONFIG_USB_STORAGE=y
-CONFIG_VIDEO_IPUV3=y
-CONFIG_VIDEO=y
-# CONFIG_VIDEO_SW_CURSOR is not set
-CONFIG_IMX_WATCHDOG=y
-CONFIG_OF_LIBFDT=y
index 316cb5725db38c9d8b8da3c1cf45b035d11951c7..a4191607515c4b308441161b727ab746eaf93e8a 100644 (file)
@@ -67,6 +67,7 @@ CONFIG_MTD=y
 CONFIG_MTD_RAW_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_SPI_FLASH=y
+CONFIG_DM_SPI_FLASH=y
 CONFIG_SF_DEFAULT_MODE=0
 CONFIG_SF_DEFAULT_SPEED=25000000
 CONFIG_SPI_FLASH_ATMEL=y
@@ -83,11 +84,14 @@ CONFIG_MII=y
 CONFIG_DM_PMIC=y
 CONFIG_DM_REGULATOR=y
 CONFIG_SPI=y
+CONFIG_DM_SPI=y
 CONFIG_MXC_SPI=y
+CONFIG_DM_ETH=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_KEYBOARD=y
 CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y
 CONFIG_VIDEO_IPUV3=y
 CONFIG_VIDEO=y
+CONFIG_DM_VIDEO=y
 CONFIG_FDT_FIXUP_PARTITIONS=y
index bc5d5bf6a23e606fce498de2f9df6166ea0fb6ff..8535aaecee75c867137a351e4217240f514877a7 100644 (file)
@@ -65,6 +65,9 @@ CONFIG_FSL_USDHC=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_MICREL=y
 CONFIG_PHY_MICREL_KSZ8XXX=y
+CONFIG_DM_ETH=y
+CONFIG_DM_MDIO=y
+CONFIG_FEC_MXC=y
 CONFIG_MII=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_IMX6=y
index 29ddd7d3e9c7a6ae9c9c30f7d02ed83524713773..75051c584d0ddb4eac8160564d3d86d7b2f40c36 100644 (file)
@@ -66,6 +66,9 @@ CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_MICREL=y
 CONFIG_PHY_MICREL_KSZ8XXX=y
+CONFIG_DM_ETH=y
+CONFIG_DM_MDIO=y
+CONFIG_FEC_MXC=y
 CONFIG_MII=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_IMX7=y
index ac2fa0e1e4ee9a0f1ce0a1d712311b594647a452..9b42a5b466a21fc35c9ab6eacb5caaad7cbb69ab 100644 (file)
@@ -62,6 +62,9 @@ CONFIG_MTD=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_MICREL=y
 CONFIG_PHY_MICREL_KSZ8XXX=y
+CONFIG_DM_ETH=y
+CONFIG_DM_MDIO=y
+CONFIG_FEC_MXC=y
 CONFIG_MII=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_IMX7=y
index 0a38da619a8976cedb23d9ba452447818ae5bb74..db5152dd164dfe845c4400d0dc9480db03114568 100644 (file)
@@ -40,6 +40,7 @@ CONFIG_CMD_MMC=y
 CONFIG_CMD_SATA=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_USB_MASS_STORAGE=y
+CONFIG_CMD_WDT=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
 CONFIG_CMD_EXT4_WRITE=y
@@ -83,6 +84,8 @@ CONFIG_DM_SCSI=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
 CONFIG_MXC_SPI=y
+CONFIG_SYSRESET=y
+CONFIG_SYSRESET_WATCHDOG=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_GADGET=y
index 6b2d6c173ad7994515492692f3b70299615fd67b..81e450c854533b21da52d3e2343dc12f022362d3 100644 (file)
@@ -16,6 +16,8 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 CONFIG_SUPPORT_RAW_INITRD=y
+# CONFIG_DISPLAY_BOARDINFO is not set
+CONFIG_DISPLAY_BOARDINFO_LATE=y
 CONFIG_BOUNCE_BUFFER=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_LAST_STAGE_INIT=y
@@ -36,6 +38,9 @@ CONFIG_CMD_FS_GENERIC=y
 CONFIG_DOS_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="imx6q-bx50v3"
+CONFIG_OF_LIST="imx6q-bx50v3 imx6q-b850v3 imx6q-b650v3 imx6q-b450v3"
+CONFIG_DTB_RESELECT=y
+CONFIG_MULTI_DTB_FIT=y
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
 CONFIG_DM=y
@@ -67,4 +72,17 @@ CONFIG_VIDEO_BPP16=y
 CONFIG_VIDEO_IPUV3=y
 CONFIG_WATCHDOG_TIMEOUT_MSECS=6000
 CONFIG_IMX_WATCHDOG=y
+CONFIG_WDT=y
+CONFIG_SYSRESET=y
+CONFIG_SYSRESET_WATCHDOG=y
 # CONFIG_EFI_LOADER is not set
+CONFIG_SYS_MALLOC_F_LEN=0x4000
+CONFIG_SYS_WHITE_ON_BLACK=y
+CONFIG_PCI=y
+CONFIG_DM_PCI=y
+CONFIG_PCI_PNP=y
+CONFIG_DM_ETH=y
+CONFIG_PHYLIB=y
+CONFIG_PHY_ATHEROS=y
+CONFIG_FEC_MXC=y
+CONFIG_ETHPRIME="FEC"
diff --git a/configs/imx28_xea_defconfig b/configs/imx28_xea_defconfig
new file mode 100644 (file)
index 0000000..aaa7e31
--- /dev/null
@@ -0,0 +1,108 @@
+CONFIG_ARM=y
+CONFIG_SPL_SYS_THUMB_BUILD=y
+CONFIG_ARCH_MX28=y
+CONFIG_SYS_TEXT_BASE=0x40002000
+CONFIG_SPL_GPIO_SUPPORT=y
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
+CONFIG_SYS_MALLOC_F_LEN=0x800
+CONFIG_SPL_DM_SPI=y
+CONFIG_TARGET_XEA=y
+CONFIG_SPL_MMC_SUPPORT=y
+CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_SPL_SYS_MALLOC_F_LEN=0x1000
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_SPL=y
+CONFIG_SPL_SPI_FLASH_SUPPORT=y
+CONFIG_SPL_SPI_SUPPORT=y
+CONFIG_SPL_TEXT_BASE=0x1000
+CONFIG_FIT=y
+CONFIG_BOARD_EARLY_INIT_F=y
+CONFIG_SPL_BOARD_INIT=y
+# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
+CONFIG_SPL_SYS_MALLOC_SIMPLE=y
+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y
+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0
+CONFIG_SUPPORT_EMMC_BOOT_OVERRIDE_PART_CONFIG=y
+CONFIG_SPL_DMA_SUPPORT=y
+CONFIG_SPL_DM_GPIO=y
+CONFIG_SPL_FORCE_MMC_BOOT=y
+CONFIG_SPL_MMC_TINY=y
+CONFIG_SPL_OS_BOOT=y
+CONFIG_SPL_PAYLOAD="u-boot.img"
+CONFIG_SPL_SPI_LOAD=y
+CONFIG_SYS_SPI_U_BOOT_OFFS=0x10000
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_SPL=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_GREPENV=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_MTD=y
+# CONFIG_CMD_PINMUX is not set
+CONFIG_CMD_SPI=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_REGULATOR=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
+CONFIG_MTDIDS_DEFAULT="nor0=spi3.0"
+CONFIG_MTDPARTS_DEFAULT="spi3.0:64k(SPL),448k(uboot),128k(envs),384k(unused1),4096k(kernel),8192k(swupdate),-(unused2)"
+CONFIG_DOS_PARTITION=y
+CONFIG_OF_CONTROL=y
+CONFIG_SPL_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="imx28-xea"
+CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent interrupts"
+CONFIG_SPL_OF_PLATDATA=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
+CONFIG_USE_ENV_SPI_BUS=y
+CONFIG_ENV_SPI_BUS=3
+CONFIG_USE_ENV_SPI_CS=y
+CONFIG_ENV_SPI_CS=0
+CONFIG_USE_ENV_SPI_MAX_HZ=y
+CONFIG_ENV_SPI_MAX_HZ=40000000
+CONFIG_USE_ENV_SPI_MODE=y
+CONFIG_ENV_SPI_MODE=0x0
+CONFIG_NET_RANDOM_ETHADDR=y
+CONFIG_DM=y
+CONFIG_SPL_DM=y
+CONFIG_DEVRES=y
+CONFIG_DM_GPIO=y
+CONFIG_MXS_GPIO=y
+CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
+CONFIG_MMC_MXS=y
+CONFIG_MTD=y
+CONFIG_MTD_DEVICE=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_SF_DEFAULT_BUS=3
+CONFIG_SF_DEFAULT_MODE=0x0
+CONFIG_SF_DEFAULT_SPEED=40000000
+CONFIG_SPI_FLASH_SFDP_SUPPORT=y
+CONFIG_SPI_FLASH_ISSI=y
+CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_FLASH_STMICRO=y
+# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
+CONFIG_PHYLIB=y
+CONFIG_PHY_ADDR_ENABLE=y
+CONFIG_PHY_ADDR=1
+CONFIG_PHY_FIXED=y
+CONFIG_DM_ETH=y
+CONFIG_FEC_MXC=y
+CONFIG_MII=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_MXS=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_CONS_INDEX=0
+CONFIG_SPI=y
+CONFIG_DM_SPI=y
+CONFIG_MXS_SPI=y
+CONFIG_FS_FAT=y
+# CONFIG_SPL_OF_LIBFDT is not set
+# CONFIG_EFI_LOADER is not set
index 87560ef989c832ac24f3472a741fec9fd83b8ac0..e007766e84975d432ae1e1df33138ce29ddf18e9 100644 (file)
@@ -21,7 +21,6 @@ CONFIG_SPL_LOAD_FIT=y
 CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
 CONFIG_OF_SYSTEM_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/imx8m/imximage-8mm-lpddr4.cfg"
-CONFIG_DEFAULT_FDT_FILE="fsl-imx8mm-evk.dtb"
 CONFIG_BOARD_LATE_INIT=y
 CONFIG_SPL_BOARD_INIT=y
 CONFIG_SPL_SEPARATE_BSS=y
index da61691706f812ff34be25e4266182ad55afadc9..cccafc5afca1cb66162623bfefcf994a6e6cff34 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_NR_DRAM_BANKS=2
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/beckhoff/mx53cx9020/imximage.cfg"
 CONFIG_BOOTDELAY=1
 CONFIG_USE_PREBOOT=y
+CONFIG_DISTRO_DEFAULTS=y
 CONFIG_SUPPORT_RAW_INITRD=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
@@ -21,7 +22,13 @@ CONFIG_CMD_PXE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_USB=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_EHCI_MX5=y
+CONFIG_USB_STORAGE=y
+CONFIG_DM_REGULATOR=y
 CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="imx53-cx9020"
 CONFIG_ENV_IS_IN_MMC=y
@@ -31,8 +38,10 @@ CONFIG_FPGA_CYCLON2=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC_IMX=y
+CONFIG_DM_ETH=y
 CONFIG_MTD=y
 CONFIG_FEC_MXC=y
+CONFIG_PHYLIB=y
 CONFIG_MII=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_IMX5=y
@@ -40,3 +49,4 @@ CONFIG_MXC_UART=y
 CONFIG_DM_VIDEO=y
 CONFIG_VIDEO_BPP16=y
 CONFIG_VIDEO_IPUV3=y
+CONFIG_SYS_WHITE_ON_BLACK=y
index f1057e3f391b1a8b377ea47187db5c6b9c008aa3..7c44ea9be0d43ec8dcf1e8b18af0bb57e89ef441 100644 (file)
@@ -56,3 +56,8 @@ CONFIG_VIDEO=y
 # CONFIG_VIDEO_SW_CURSOR is not set
 CONFIG_WATCHDOG_TIMEOUT_MSECS=8000
 CONFIG_IMX_WATCHDOG=y
+CONFIG_WDT=y
+CONFIG_SYSRESET=y
+CONFIG_SYSRESET_WATCHDOG=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_USB=y
index 0692f31f0ae434f96e92ceeea5fd200dcfe00062..23ce485f43f894895d8d59f0210a814e420dbf2f 100644 (file)
@@ -14,8 +14,10 @@ CONFIG_SPL=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_CMD_HDMIDETECT=y
+CONFIG_AHCI=y
 CONFIG_SPL_TEXT_BASE=0x00908000
 CONFIG_DISTRO_DEFAULTS=y
+CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg"
 CONFIG_BOOTCOMMAND="run findfdt; run finduuid; run distro_bootcmd"
 CONFIG_USE_PREBOOT=y
@@ -27,23 +29,35 @@ CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_MMC=y
+# CONFIG_CMD_PINMUX is not set
 CONFIG_CMD_SATA=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4_WRITE=y
 # CONFIG_SPL_PARTITION_UUIDS is not set
+CONFIG_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="imx6dl-hummingboard2-emmc-som-v15"
+CONFIG_OF_LIST="imx6dl-hummingboard2-emmc-som-v15 imx6q-hummingboard2-emmc-som-v15"
+CONFIG_MULTI_DTB_FIT=y
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
+CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
 CONFIG_DWC_AHSATA=y
+CONFIG_DM_GPIO=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_USDHC=y
 CONFIG_PHYLIB=y
 CONFIG_MII=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_IMX6=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
 CONFIG_DM_THERMAL=y
 CONFIG_USB=y
+CONFIG_DM_USB=y
 CONFIG_USB_KEYBOARD=y
 CONFIG_VIDEO_IPUV3=y
 CONFIG_VIDEO=y
 # CONFIG_VIDEO_SW_CURSOR is not set
-CONFIG_OF_LIBFDT=y
index 2a9fdac338ab95c4bcee2d18f26d5adda631f7ec..d15de386fcc28c424973fa4b65086e68dd756b13 100644 (file)
@@ -9,13 +9,13 @@ CONFIG_ARMV7_BOOT_SEC_DEFAULT=y
 # CONFIG_ARMV7_VIRT is not set
 CONFIG_IMX_RDC=y
 CONFIG_IMX_BOOTAUX=y
+CONFIG_DISTRO_DEFAULTS=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx7dsabresd/imximage.cfg"
+CONFIG_BOOTCOMMAND="run finduuid; run distro_bootcmd"
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_BOUNCE_BUFFER=y
-CONFIG_HUSH_PARSER=y
 # CONFIG_CMD_BOOTD is not set
-CONFIG_CMD_BOOTZ=y
 # CONFIG_BOOTM_NETBSD is not set
 # CONFIG_BOOTM_PLAN9 is not set
 # CONFIG_BOOTM_RTEMS is not set
@@ -30,17 +30,13 @@ CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_USB_MASS_STORAGE=y
-CONFIG_CMD_DHCP=y
-CONFIG_CMD_MII=y
-CONFIG_CMD_PING=y
 CONFIG_CMD_BMP=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_PMIC=y
 CONFIG_CMD_REGULATOR=y
-CONFIG_CMD_EXT2=y
-CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
-CONFIG_CMD_FAT=y
+# CONFIG_ISO_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
 CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="imx7d-sdb"
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
@@ -55,10 +51,13 @@ CONFIG_MMC_IO_VOLTAGE=y
 CONFIG_MMC_UHS_SUPPORT=y
 CONFIG_MMC_HS200_SUPPORT=y
 CONFIG_FSL_USDHC=y
-CONFIG_MTD=y
-CONFIG_SPI_FLASH=y
-CONFIG_SPI_FLASH_EON=y
 CONFIG_PHYLIB=y
+CONFIG_PHY_BROADCOM=y
+CONFIG_DM_ETH=y
+CONFIG_DM_MDIO=y
+CONFIG_DM_MDIO_MUX=y
+CONFIG_FEC_MXC=y
+CONFIG_RGMII=y
 CONFIG_MII=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_IMX7=y
@@ -75,7 +74,6 @@ CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_MXC_USB_OTG_HACTIVE=y
-CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_MANUFACTURER="FSL"
 CONFIG_USB_GADGET_VENDOR_NUM=0x0525
index 865ce30dc260f023cea2bd21866212df4e79a441..b2d5dc1c222691fb976ef15964b6545d59b72489 100644 (file)
@@ -4,17 +4,18 @@ CONFIG_SYS_TEXT_BASE=0x87800000
 CONFIG_TARGET_MX7DSABRESD=y
 CONFIG_ENV_SIZE=0x2000
 CONFIG_ENV_OFFSET=0xC0000
+CONFIG_NR_DRAM_BANKS=1
 CONFIG_ARMV7_BOOT_SEC_DEFAULT=y
 # CONFIG_ARMV7_VIRT is not set
 CONFIG_IMX_RDC=y
 CONFIG_IMX_BOOTAUX=y
+CONFIG_DISTRO_DEFAULTS=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx7dsabresd/imximage.cfg"
+CONFIG_BOOTCOMMAND="run finduuid; run distro_bootcmd"
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_BOUNCE_BUFFER=y
-CONFIG_HUSH_PARSER=y
 # CONFIG_CMD_BOOTD is not set
-CONFIG_CMD_BOOTZ=y
 # CONFIG_BOOTM_NETBSD is not set
 # CONFIG_BOOTM_PLAN9 is not set
 # CONFIG_BOOTM_RTEMS is not set
@@ -29,17 +30,13 @@ CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_USB_MASS_STORAGE=y
-CONFIG_CMD_DHCP=y
-CONFIG_CMD_MII=y
-CONFIG_CMD_PING=y
 CONFIG_CMD_BMP=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_PMIC=y
 CONFIG_CMD_REGULATOR=y
-CONFIG_CMD_EXT2=y
-CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
-CONFIG_CMD_FAT=y
+# CONFIG_ISO_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
 CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="imx7d-sdb-qspi"
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
@@ -61,6 +58,12 @@ CONFIG_SF_DEFAULT_SPEED=40000000
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_PHYLIB=y
+CONFIG_PHY_BROADCOM=y
+CONFIG_DM_ETH=y
+CONFIG_DM_MDIO=y
+CONFIG_DM_MDIO_MUX=y
+CONFIG_FEC_MXC=y
+CONFIG_RGMII=y
 CONFIG_MII=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_IMX7=y
@@ -78,7 +81,6 @@ CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_MXC_USB_OTG_HACTIVE=y
-CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_MANUFACTURER="FSL"
 CONFIG_USB_GADGET_VENDOR_NUM=0x0525
diff --git a/configs/mx7ulp_com_defconfig b/configs/mx7ulp_com_defconfig
new file mode 100644 (file)
index 0000000..b6b0cca
--- /dev/null
@@ -0,0 +1,60 @@
+CONFIG_ARM=y
+CONFIG_ARCH_MX7ULP=y
+CONFIG_SYS_TEXT_BASE=0x67800000
+CONFIG_LDO_ENABLED_MODE=y
+CONFIG_TARGET_MX7ULP_COM=y
+CONFIG_ENV_SIZE=0x2000
+CONFIG_ENV_OFFSET=0xC0000
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/ea/mx7ulp_com/imximage.cfg"
+CONFIG_DEFAULT_FDT_FILE="imx7ulp-com"
+CONFIG_BOUNCE_BUFFER=y
+CONFIG_BOARD_EARLY_INIT_F=y
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_BOOTZ=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_READ=y
+CONFIG_CMD_SF=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
+CONFIG_CMD_FAT=y
+CONFIG_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="imx7ulp-com"
+CONFIG_ENV_IS_IN_MMC=y
+# CONFIG_NET is not set
+CONFIG_DM=y
+CONFIG_DM_GPIO=y
+CONFIG_IMX_RGPIO2P=y
+# CONFIG_MXC_GPIO is not set
+CONFIG_DM_I2C=y
+CONFIG_SYS_I2C_IMX_LPI2C=y
+CONFIG_DM_MMC=y
+CONFIG_FSL_USDHC=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_SPI_FLASH=y
+CONFIG_SF_DEFAULT_MODE=0
+CONFIG_SF_DEFAULT_SPEED=40000000
+CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_IMX7ULP=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_DM_SERIAL=y
+CONFIG_FSL_LPUART=y
+CONFIG_SPI=y
+CONFIG_DM_SPI=y
+CONFIG_FSL_QSPI=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_MANUFACTURER="FSL"
+CONFIG_USB_GADGET_VENDOR_NUM=0x0525
+CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
+CONFIG_CI_UDC=y
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_ULP_WATCHDOG=y
index b9c9a798688d6361264fe5c3ae0365c78f63aea2..b9e725b6f55d2588b1d5001206091e754c5258e6 100644 (file)
@@ -33,7 +33,7 @@ CONFIG_MTDPARTS_DEFAULT="gpmi-nand:4m(uboot),1m(env),-(root)"
 CONFIG_CMD_UBI=y
 # CONFIG_ISO_PARTITION is not set
 CONFIG_OF_CONTROL=y
-CONFIG_DEFAULT_DEVICE_TREE="imx6ul-phycore-segin"
+CONFIG_DEFAULT_DEVICE_TREE="imx6ul-phytec-segin-ff-rdk-nand"
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
 CONFIG_DM_I2C_GPIO=y
 CONFIG_SYS_I2C_MXC=y
index f2635ce44988948d3a7b0868002c0be614db6834..879ac788647624fbfe02c38d07ff4489b4c86291 100644 (file)
@@ -29,7 +29,7 @@ CONFIG_CMD_USB_SDP=y
 CONFIG_CMD_CACHE=y
 # CONFIG_ISO_PARTITION is not set
 CONFIG_OF_CONTROL=y
-CONFIG_DEFAULT_DEVICE_TREE="imx6ull-phycore-segin"
+CONFIG_DEFAULT_DEVICE_TREE="imx6ull-phytec-segin-ff-rdk-emmc"
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
 CONFIG_DM_I2C_GPIO=y
 CONFIG_SYS_I2C_MXC=y
index 21af66e4e7f086b74a85f0b05926fcf81e5c530d..af8c1427d2edd02b3ccf5728a89247a01e5fd550 100644 (file)
@@ -20,9 +20,10 @@ void ddr_cfg_umctl2(struct dram_cfg_param *ddrc_cfg, int num)
        }
 }
 
-void ddr_init(struct dram_timing_info *dram_timing)
+int ddr_init(struct dram_timing_info *dram_timing)
 {
        unsigned int tmp, initial_drate, target_freq;
+       int ret;
 
        debug("DDRINFO: start DRAM init\n");
 
@@ -98,7 +99,11 @@ void ddr_init(struct dram_timing_info *dram_timing)
         * accessing relevant PUB registers
         */
        debug("DDRINFO:ddrphy config start\n");
-       ddr_cfg_phy(dram_timing);
+
+       ret = ddr_cfg_phy(dram_timing);
+       if (ret)
+               return ret;
+
        debug("DDRINFO: ddrphy config done\n");
 
        /*
@@ -165,4 +170,6 @@ void ddr_init(struct dram_timing_info *dram_timing)
 
        /* save the dram timing config into memory */
        dram_config_save(dram_timing, CONFIG_SAVED_DRAM_TIMING_BASE);
+
+       return 0;
 }
index 18f7ed7fea9a3b2c622d660cf7f69551480dcd23..306af82504feec0ee310711e9a2af858236ca1ba 100644 (file)
@@ -8,13 +8,14 @@
 #include <asm/arch/ddr.h>
 #include <asm/arch/lpddr4_define.h>
 
-void ddr_cfg_phy(struct dram_timing_info *dram_timing)
+int ddr_cfg_phy(struct dram_timing_info *dram_timing)
 {
        struct dram_cfg_param *dram_cfg;
        struct dram_fsp_msg *fsp_msg;
        unsigned int num;
        int i = 0;
        int j = 0;
+       int ret;
 
        /* initialize PHY configuration */
        dram_cfg = dram_timing->ddrphy_cfg;
@@ -60,7 +61,9 @@ void ddr_cfg_phy(struct dram_timing_info *dram_timing)
                dwc_ddrphy_apb_wr(0xd0099, 0x0);
 
                /* Wait for the training firmware to complete */
-               wait_ddrphy_training_complete();
+               ret = wait_ddrphy_training_complete();
+               if (ret)
+                       return ret;
 
                /* Halt the microcontroller. */
                dwc_ddrphy_apb_wr(0xd0099, 0x1);
@@ -83,4 +86,6 @@ void ddr_cfg_phy(struct dram_timing_info *dram_timing)
 
        /* save the ddr PHY trained CSR in memory for low power use */
        ddrphy_trained_csr_save(ddrphy_trained_csr, ddrphy_trained_csr_num);
+
+       return 0;
 }
index e60503309eb8c37d835752dbdce45a3f83396a07..863fb4389714ce34ad0ef36d9f09988012258e28 100644 (file)
@@ -84,7 +84,7 @@ static inline void decode_streaming_message(void)
        debug("\n");
 }
 
-void wait_ddrphy_training_complete(void)
+int wait_ddrphy_training_complete(void)
 {
        unsigned int mail;
 
@@ -95,10 +95,10 @@ void wait_ddrphy_training_complete(void)
                        decode_streaming_message();
                } else if (mail == 0x07) {
                        debug("Training PASS\n");
-                       break;
+                       return 0;
                } else if (mail == 0xff) {
-                       printf("Training FAILED\n");
-                       break;
+                       debug("Training FAILED\n");
+                       return -1;
                }
        }
 }
index d53d6298bf38492e6c805ac8f9fffeae8883e59d..3621636cb28918da7f276655ad6323bcb47f89fc 100644 (file)
@@ -815,6 +815,7 @@ static const struct dm_pci_ops imx_pcie_ops = {
 
 static const struct udevice_id imx_pcie_ids[] = {
        { .compatible = "fsl,imx6q-pcie" },
+       { .compatible = "fsl,imx6sx-pcie" },
        { }
 };
 
index 46d9ec83ce41cf9a998f61b1ee14ccee6a4cd8da..997e854ef8f9c3c4cbfd0b23b8c2b6d656d75bc1 100644 (file)
@@ -5,36 +5,40 @@
  *
  */
 #include <common.h>
+#include <backlight.h>
+#include <display.h>
+#include <dm.h>
+#include <dm/read.h>
+#include <dm/uclass-internal.h>
 #include <errno.h>
 #include <spi.h>
+#include <asm/gpio.h>
 
 #define PWR_ON_DELAY_MSECS  120
 
-static int lb043wv_spi_write_u16(struct spi_slave *spi, u16 val)
+static int lb043wv_spi_write_u16(struct spi_slave *slave, u16 val)
 {
-       unsigned long flags = SPI_XFER_BEGIN;
        unsigned short buf16 = htons(val);
        int ret = 0;
 
-       flags |= SPI_XFER_END;
-
-       ret = spi_xfer(spi, 16, &buf16, NULL, flags);
+       ret = spi_xfer(slave, 16, &buf16, NULL,
+                      SPI_XFER_BEGIN | SPI_XFER_END);
        if (ret)
                debug("%s: Failed to send: %d\n", __func__, ret);
 
        return ret;
 }
 
-static void lb043wv_spi_write_u16_array(struct spi_slave *spi, u16 *buff,
+static void lb043wv_spi_write_u16_array(struct spi_slave *slave, u16 *buff,
                                        int size)
 {
        int i;
 
        for (i = 0; i < size; i++)
-               lb043wv_spi_write_u16(spi, buff[i]);
+               lb043wv_spi_write_u16(slave, buff[i]);
 }
 
-static void lb043wv_display_mode_settings(struct spi_slave *spi)
+static void lb043wv_display_mode_settings(struct spi_slave *slave)
 {
        static u16 display_mode_settings[] = {
          0x703A,
@@ -72,11 +76,11 @@ static void lb043wv_display_mode_settings(struct spi_slave *spi)
        };
 
        debug("transfer display mode settings\n");
-       lb043wv_spi_write_u16_array(spi, display_mode_settings,
+       lb043wv_spi_write_u16_array(slave, display_mode_settings,
                                    ARRAY_SIZE(display_mode_settings));
 }
 
-static void lb043wv_power_settings(struct spi_slave *spi)
+static void lb043wv_power_settings(struct spi_slave *slave)
 {
        static u16 power_settings[] = {
          0x70C0,
@@ -103,11 +107,11 @@ static void lb043wv_power_settings(struct spi_slave *spi)
        };
 
        debug("transfer power settings\n");
-       lb043wv_spi_write_u16_array(spi, power_settings,
+       lb043wv_spi_write_u16_array(slave, power_settings,
                                    ARRAY_SIZE(power_settings));
 }
 
-static void lb043wv_gamma_settings(struct spi_slave *spi)
+static void lb043wv_gamma_settings(struct spi_slave *slave)
 {
        static u16 gamma_settings[] = {
          0x70D0,
@@ -173,54 +177,57 @@ static void lb043wv_gamma_settings(struct spi_slave *spi)
        };
 
        debug("transfer gamma settings\n");
-       lb043wv_spi_write_u16_array(spi, gamma_settings,
+       lb043wv_spi_write_u16_array(slave, gamma_settings,
                                    ARRAY_SIZE(gamma_settings));
 }
 
-static void lb043wv_display_on(struct spi_slave *spi)
+static void lb043wv_display_on(struct spi_slave *slave)
 {
        static u16 sleep_out = 0x7011;
        static u16 display_on = 0x7029;
 
-       lb043wv_spi_write_u16(spi, sleep_out);
+       lb043wv_spi_write_u16(slave, sleep_out);
        mdelay(PWR_ON_DELAY_MSECS);
-       lb043wv_spi_write_u16(spi, display_on);
+       lb043wv_spi_write_u16(slave, display_on);
 }
 
-int lg4573_spi_startup(unsigned int bus, unsigned int cs,
-       unsigned int max_hz, unsigned int spi_mode)
+static int lg4573_spi_startup(struct spi_slave *slave)
 {
-       struct spi_slave *spi;
        int ret;
 
-       spi = spi_setup_slave(bus, cs, max_hz, spi_mode);
-       if (!spi) {
-               debug("%s: Failed to set up slave\n", __func__);
-               return -1;
-       }
-
-       ret = spi_claim_bus(spi);
-       if (ret) {
-               debug("%s: Failed to claim SPI bus: %d\n", __func__, ret);
-               goto err_claim_bus;
-       }
+       ret = spi_claim_bus(slave);
+       if (ret)
+               return ret;
 
-       lb043wv_display_mode_settings(spi);
-       lb043wv_power_settings(spi);
-       lb043wv_gamma_settings(spi);
+       lb043wv_display_mode_settings(slave);
+       lb043wv_power_settings(slave);
+       lb043wv_gamma_settings(slave);
+       lb043wv_display_on(slave);
 
-       lb043wv_display_on(spi);
+       spi_release_bus(slave);
        return 0;
-err_claim_bus:
-       spi_free_slave(spi);
-       return -1;
 }
 
 static int do_lgset(cmd_tbl_t *cmdtp, int flag, int argc,
                       char * const argv[])
 {
-       lg4573_spi_startup(CONFIG_LG4573_BUS, CONFIG_LG4573_CS, 10000000,
-                          SPI_MODE_0);
+       struct spi_slave *slave;
+       struct udevice *dev;
+       int ret;
+
+       ret = uclass_get_device_by_driver(UCLASS_DISPLAY,
+                                         DM_GET_DRIVER(lg4573_lcd), &dev);
+       if (ret) {
+               printf("%s: Could not get lg4573 device\n", __func__);
+               return ret;
+       }
+       slave = dev_get_parent_priv(dev);
+       if (!slave) {
+               printf("%s: No slave data\n", __func__);
+               return -ENODEV;
+       }
+       lg4573_spi_startup(slave);
+
        return 0;
 }
 
@@ -229,3 +236,93 @@ U_BOOT_CMD(
        "set lgdisplay",
        ""
 );
+
+static int lg4573_bind(struct udevice *dev)
+{
+       return 0;
+}
+
+static int lg4573_probe(struct udevice *dev)
+{
+       return 0;
+}
+
+static const struct udevice_id lg4573_ids[] = {
+       { .compatible = "lg,lg4573" },
+       { }
+};
+
+struct lg4573_lcd_priv {
+       struct display_timing timing;
+       struct udevice *backlight;
+       struct gpio_desc enable;
+       int panel_bpp;
+       u32 power_on_delay;
+};
+
+static int lg4573_lcd_read_timing(struct udevice *dev,
+                                 struct display_timing *timing)
+{
+       struct lg4573_lcd_priv *priv = dev_get_priv(dev);
+
+       memcpy(timing, &priv->timing, sizeof(struct display_timing));
+
+       return 0;
+}
+
+static int lg4573_lcd_enable(struct udevice *dev, int bpp,
+                            const struct display_timing *edid)
+{
+       struct spi_slave *slave = dev_get_parent_priv(dev);
+       struct lg4573_lcd_priv *priv = dev_get_priv(dev);
+       int ret = 0;
+
+       dm_gpio_set_value(&priv->enable, 1);
+       ret = backlight_enable(priv->backlight);
+
+       mdelay(priv->power_on_delay);
+       lg4573_spi_startup(slave);
+
+       return ret;
+};
+
+static const struct dm_display_ops lg4573_lcd_ops = {
+       .read_timing = lg4573_lcd_read_timing,
+       .enable = lg4573_lcd_enable,
+};
+
+static int lg4573_ofdata_to_platdata(struct udevice *dev)
+{
+       struct lg4573_lcd_priv *priv = dev_get_priv(dev);
+       int ret;
+
+       ret = uclass_get_device_by_phandle(UCLASS_PANEL_BACKLIGHT, dev,
+                                          "backlight", &priv->backlight);
+       if (ret) {
+               debug("%s: Cannot get backlight: ret=%d\n", __func__, ret);
+               return log_ret(ret);
+       }
+       ret = gpio_request_by_name(dev, "enable-gpios", 0, &priv->enable,
+                                  GPIOD_IS_OUT);
+       if (ret) {
+               debug("%s: Warning: cannot get enable GPIO: ret=%d\n",
+                     __func__, ret);
+               if (ret != -ENOENT)
+                       return log_ret(ret);
+       }
+
+       priv->power_on_delay = dev_read_u32_default(dev, "power-on-delay", 10);
+
+       return 0;
+}
+
+U_BOOT_DRIVER(lg4573_lcd) = {
+       .name   = "lg4573",
+       .id     = UCLASS_DISPLAY,
+       .ops    = &lg4573_lcd_ops,
+       .ofdata_to_platdata     = lg4573_ofdata_to_platdata,
+       .of_match = lg4573_ids,
+       .bind   = lg4573_bind,
+       .probe  = lg4573_probe,
+       .priv_auto_alloc_size = sizeof(struct lg4573_lcd_priv),
+};
index 50a4391cd47d8c50128b906be209d93a333eb235..d2ff7e95345c9c17d90640709b7e5411a4d9b065 100644 (file)
 #endif
 
 /* Network */
-#define CONFIG_FEC_MXC
-#define IMX_FEC_BASE                   ENET_BASE_ADDR
-#define CONFIG_FEC_XCV_TYPE            RGMII
-#define CONFIG_ETHPRIME                        "FEC"
 #define PHY_ANEG_TIMEOUT               15000 /* PHY needs longer aneg time */
-#define CONFIG_FEC_MXC_PHYADDR         6
-#define CONFIG_TFTP_TSIZE
 
 /* USB Configs */
 /* Host */
        "imx6q-apalis-eval.dtb fat 0 1;" \
        "imx6q-apalis-cam-eval.dtb fat 0 1"
 
+#define UBOOT_UPDATE \
+       "uboot_hwpart=1\0" \
+       "uboot_blk=8a\0" \
+       "uboot_spl_blk=2\0" \
+       "set_blkcnt=setexpr blkcnt ${filesize} + 0x1ff && " \
+               "setexpr blkcnt ${blkcnt} / 0x200\0" \
+       "update_uboot=run set_blkcnt && mmc dev 0 ${uboot_hwpart} && " \
+               "mmc write ${loadaddr} ${uboot_blk} ${blkcnt}\0" \
+       "update_spl=run set_blkcnt && mmc dev 0 ${uboot_hwpart} && " \
+               "mmc write ${loadaddr} ${uboot_spl_blk} ${blkcnt}\0"
+
 #define EMMC_BOOTCMD \
        "set_emmcargs=setenv emmcargs ip=off root=PARTUUID=${uuid} " \
                "ro,noatime rootfstype=ext4 rootwait\0" \
        "fdt_fixup=;\0" \
        MEM_LAYOUT_ENV_SETTINGS \
        NFS_BOOTCMD \
+       UBOOT_UPDATE \
        "setethupdate=if env exists ethaddr; then; else setenv ethaddr " \
                "00:14:2d:00:00:00; fi; tftpboot ${loadaddr} " \
                "flash_eth.img && source ${loadaddr}\0" \
diff --git a/include/configs/aristainetos-common.h b/include/configs/aristainetos-common.h
deleted file mode 100644 (file)
index 1d84db5..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * (C) Copyright 2015
- * (C) Copyright 2014
- * Heiko Schocher, DENX Software Engineering, hs@denx.de.
- *
- * Based on:
- * Copyright (C) 2012 Freescale Semiconductor, Inc.
- *
- * Configuration settings for the Freescale i.MX6Q SabreSD board.
- */
-#ifndef __ARISTAINETOS_COMMON_CONFIG_H
-#define __ARISTAINETOS_COMMON_CONFIG_H
-
-#include "mx6_common.h"
-
-#define CONFIG_MACH_TYPE       4501
-#define CONFIG_MMCROOT         "/dev/mmcblk0p1"
-
-/* Size of malloc() pool */
-#define CONFIG_SYS_MALLOC_LEN          (64 * SZ_1M)
-
-#define CONFIG_MXC_UART
-
-/* MMC Configs */
-#define CONFIG_SYS_FSL_ESDHC_ADDR      0
-
-#define CONFIG_FEC_MXC
-#define IMX_FEC_BASE                   ENET_BASE_ADDR
-#define CONFIG_ETHPRIME                        "FEC"
-#define CONFIG_FEC_MXC_PHYADDR         0
-
-#define CONFIG_SYS_SPI_ST_ENABLE_WP_PIN
-
-#define CONFIG_EXTRA_ENV_SETTINGS \
-       "script=u-boot.scr\0" \
-       "fit_file=/boot/system.itb\0" \
-       "loadaddr=0x12000000\0" \
-       "fit_addr_r=0x14000000\0" \
-       "uboot=/boot/u-boot.imx\0" \
-       "uboot_sz=d0000\0" \
-       "rescue_sys_addr=f0000\0" \
-       "rescue_sys_length=f10000\0" \
-       "panel=lb07wv8\0" \
-       "splashpos=m,m\0" \
-       "console=" CONSOLE_DEV "\0" \
-       "fdt_high=0xffffffff\0"   \
-       "initrd_high=0xffffffff\0" \
-       "addmtd=setenv bootargs ${bootargs} ${mtdparts}\0" \
-       "set_fit_default=fdt addr ${fit_addr_r};fdt set /configurations " \
-               "default ${board_type}\0" \
-       "get_env=mw ${loadaddr} 0 0x20000;" \
-               "mmc rescan;" \
-               "ext2load mmc ${mmcdev}:${mmcpart} ${loadaddr} env.txt;" \
-               "env import -t ${loadaddr}\0" \
-       "default_env=mw ${loadaddr} 0 0x20000;" \
-               "env export -t ${loadaddr} serial# ethaddr eth1addr " \
-               "board_type panel;" \
-               "env default -a;" \
-               "env import -t ${loadaddr}\0" \
-       "loadbootscript=" \
-               "ext2load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
-       "bootscript=echo Running bootscript from mmc ...; " \
-               "source\0" \
-       "mmcpart=1\0" \
-       "mmcdev=0\0" \
-       "mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \
-       "mmcargs=setenv bootargs console=${console},${baudrate} " \
-               "root=${mmcroot}\0" \
-       "mmcboot=echo Booting from mmc ...; " \
-               "run mmcargs addmtd addmisc set_fit_default;" \
-               "bootm ${fit_addr_r}\0" \
-       "mmc_load_fit=ext2load mmc ${mmcdev}:${mmcpart} ${fit_addr_r} " \
-               "${fit_file}\0" \
-       "mmc_load_uboot=ext2load mmc ${mmcdev}:${mmcpart} ${loadaddr} " \
-               "${uboot}\0" \
-       "mmc_upd_uboot=mw.b ${loadaddr} 0xff ${uboot_sz};" \
-               "setexpr cmp_buf ${loadaddr} + ${uboot_sz};" \
-               "setexpr uboot_maxsize ${uboot_sz} - 400;" \
-               "mw.b ${cmp_buf} 0x00 ${uboot_sz};" \
-               "run mmc_load_uboot;sf probe;sf erase 0 ${uboot_sz};" \
-               "sf write ${loadaddr} 400 ${filesize};" \
-               "sf read ${cmp_buf} 400 ${uboot_sz};" \
-               "cmp.b ${loadaddr} ${cmp_buf} ${uboot_maxsize}\0" \
-       "ubiboot=echo Booting from ubi ...; " \
-               "run ubiargs addmtd addmisc set_fit_default;" \
-               "bootm ${fit_addr_r}\0" \
-       "rescueargs=setenv bootargs console=${console},${baudrate} " \
-               "root=/dev/ram rw\0 " \
-       "rescueboot=echo Booting rescue system from NOR ...; " \
-               "run rescueargs addmtd addmisc set_fit_default;" \
-               "bootm ${fit_addr_r}\0" \
-       "rescue_load_fit=sf probe;sf read ${fit_addr_r} ${rescue_sys_addr} " \
-               "${rescue_sys_length}; imi ${fit_addr_r}\0" \
-       CONFIG_EXTRA_ENV_BOARD_SETTINGS
-
-#define CONFIG_BOOTCOMMAND \
-       "mmc dev ${mmcdev};" \
-       "if mmc rescan; then " \
-               "if run loadbootscript; then " \
-                       "run bootscript; " \
-               "else " \
-                       "if run mmc_load_fit; then " \
-                               "run mmcboot; " \
-                       "else " \
-                               "if run ubifs_load_fit; then " \
-                                       "run ubiboot; " \
-                               "else " \
-                                       "if run rescue_load_fit; then " \
-                                               "run rescueboot; " \
-                                       "else " \
-                                               "echo RESCUE SYSTEM BOOT " \
-                                                       "FAILURE;" \
-                                       "fi; " \
-                               "fi; " \
-                       "fi; " \
-               "fi; " \
-       "else " \
-               "if run ubifs_load_fit; then " \
-                       "run ubiboot; " \
-               "else " \
-                       "if run rescue_load_fit; then " \
-                               "run rescueboot; " \
-                       "else " \
-                               "echo RESCUE SYSTEM BOOT FAILURE;" \
-                       "fi; " \
-               "fi; " \
-       "fi"
-
-#define CONFIG_ARP_TIMEOUT             200UL
-
-#define CONFIG_SYS_MEMTEST_START       PHYS_SDRAM
-#define CONFIG_SYS_MEMTEST_END         (CONFIG_SYS_MEMTEST_START + 0x100000)
-#define CONFIG_SYS_MEMTEST_SCRATCH     0x10800000
-
-/* Physical Memory Map */
-#define PHYS_SDRAM                     MMDC0_ARB_BASE_ADDR
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM
-#define CONFIG_SYS_INIT_RAM_ADDR       IRAM_BASE_ADDR
-#define CONFIG_SYS_INIT_RAM_SIZE       IRAM_SIZE
-
-#define CONFIG_SYS_INIT_SP_OFFSET \
-       (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_ADDR \
-       (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
-
-/* Environment organization */
-
-#define CONFIG_SYS_FSL_USDHC_NUM       2
-
-/* I2C */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_MXC
-#define CONFIG_SYS_I2C_MXC_I2C1                /* enable I2C bus 1 */
-#define CONFIG_SYS_I2C_MXC_I2C2                /* enable I2C bus 2 */
-#define CONFIG_SYS_I2C_MXC_I2C3                /* enable I2C bus 3 */
-#define CONFIG_SYS_I2C_SPEED           100000
-#define CONFIG_SYS_I2C_SLAVE           0x7f
-#define CONFIG_SYS_I2C_NOPROBES                { {0, 0x00} }
-
-/* NAND stuff */
-#define CONFIG_SYS_MAX_NAND_DEVICE     1
-#define CONFIG_SYS_NAND_BASE           0x40000000
-#define CONFIG_SYS_NAND_5_ADDR_CYCLE
-#define CONFIG_SYS_NAND_ONFI_DETECTION
-
-/* DMA stuff, needed for GPMI/MXS NAND support */
-
-/* RTC */
-#define CONFIG_SYS_I2C_RTC_ADDR        0x68
-#define CONFIG_SYS_RTC_BUS_NUM 2
-#define CONFIG_RTC_M41T11
-
-/* USB Configs */
-#define CONFIG_USB_MAX_CONTROLLER_COUNT 2
-#define CONFIG_EHCI_HCD_INIT_AFTER_RESET       /* For OTG port */
-#define CONFIG_MXC_USB_PORTSC  (PORT_PTS_UTMI | PORT_PTS_PTW)
-#define CONFIG_MXC_USB_FLAGS   0
-
-/* UBI support */
-
-/* Framebuffer */
-/* check this console not needed, after test remove it */
-#define CONFIG_VIDEO_BMP_RLE8
-#define CONFIG_SPLASH_SCREEN
-#define CONFIG_SPLASH_SCREEN_ALIGN
-#define CONFIG_BMP_16BPP
-#define CONFIG_VIDEO_LOGO
-#define CONFIG_VIDEO_BMP_LOGO
-#define CONFIG_IMX_VIDEO_SKIP
-
-#define CONFIG_IMX6_PWM_PER_CLK        66000000
-
-#endif /* __ARISTAINETOS_COMMON_CONFIG_H */
diff --git a/include/configs/aristainetos.h b/include/configs/aristainetos.h
deleted file mode 100644 (file)
index 03e2a2b..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * (C) Copyright 2015
- * (C) Copyright 2014
- * Heiko Schocher, DENX Software Engineering, hs@denx.de.
- *
- * Based on:
- * Copyright (C) 2012 Freescale Semiconductor, Inc.
- *
- * Configuration settings for the Freescale i.MX6Q SabreSD board.
- */
-#ifndef __ARISTAINETOS_CONFIG_H
-#define __ARISTAINETOS_CONFIG_H
-
-#define CONFIG_SYS_BOARD_VERSION       1
-#define CONFIG_HOSTNAME                "aristainetos"
-#define CONFIG_BOARDNAME       "aristainetos"
-
-#define CONFIG_MXC_UART_BASE   UART5_BASE
-#define CONSOLE_DEV    "ttymxc4"
-
-#define CONFIG_FEC_XCV_TYPE            RMII
-
-#define CONFIG_EXTRA_ENV_BOARD_SETTINGS \
-       "board_type=aristainetos7@1\0" \
-       "mtdids=nand0=gpmi-nand,nor0=spi3.0\0" \
-       "mtdparts=mtdparts=spi3.0:832k(u-boot),64k(env),64k(env-red)," \
-               "-(rescue-system);gpmi-nand:-(ubi)\0" \
-       "addmisc=setenv bootargs ${bootargs} consoleblank=0\0" \
-       "addmtd=setenv bootargs ${bootargs} ${mtdparts}\0" \
-       "ubiargs=setenv bootargs console=${console},${baudrate} " \
-               "ubi.mtd=0,2048 root=ubi0:rootfs rootfstype=ubifs\0 " \
-       "ubifs_load_fit=sf probe;ubi part ubi 2048;ubifsmount ubi:rootfs;" \
-               "ubifsload ${fit_addr_r} /boot/system.itb; " \
-               "imi ${fit_addr_r}\0 "
-
-#define ARISTAINETOS_USB_OTG_PWR       IMX_GPIO_NR(4, 15)
-#define ARISTAINETOS_USB_H1_PWR                IMX_GPIO_NR(3, 31)
-#define CONFIG_GPIO_ENABLE_SPI_FLASH   IMX_GPIO_NR(2, 15)
-
-#include "aristainetos-common.h"
-
-#endif                         /* __ARISTAINETOS_CONFIG_H */
index 361e6ac65425f818cbd7f4e84be3fbd53f969c4d..5f4a4f854f9c740f5b8566f29d67a4eaea688bb6 100644 (file)
 #ifndef __ARISTAINETOS2_CONFIG_H
 #define __ARISTAINETOS2_CONFIG_H
 
-#define CONFIG_SYS_BOARD_VERSION       2
 #define CONFIG_HOSTNAME                "aristainetos2"
-#define CONFIG_BOARDNAME       "aristainetos2"
 
 #define CONFIG_MXC_UART_BASE   UART2_BASE
 #define CONSOLE_DEV    "ttymxc1"
 
 #define CONFIG_FEC_XCV_TYPE            RGMII
 
+/* Framebuffer */
+#define CONFIG_SYS_LDB_CLOCK   28341000
+#define CONFIG_LG4573
+
+#include "mx6_common.h"
+
+#define CONFIG_MACH_TYPE       4501
+#define CONFIG_MMCROOT         "/dev/mmcblk0p1"
+
+/* MMC Configs */
+#define CONFIG_SYS_FSL_ESDHC_ADDR      USDHC1_BASE_ADDR
+
+#define IMX_FEC_BASE                   ENET_BASE_ADDR
+#define CONFIG_ETHPRIME                        "FEC"
+#define CONFIG_FEC_MXC_PHYADDR         0
+
+#define CONFIG_SYS_SPI_ST_ENABLE_WP_PIN
+
+#ifdef CONFIG_IMX_HAB
+#define HAB_EXTRA_SETTINGS \
+       "hab_check_addr=" \
+               "if hab_auth_img ${check_addr} ${filesize} ; then " \
+                       "true;" \
+               "else " \
+                       "echo \"HAB checks ${hab_check_filetype} " \
+                       "failed!\"; " \
+                       "false; " \
+               "fi;\0" \
+       "hab_check_file_fit=" \
+               "if env exists enable_hab_check && test " \
+                       "${enable_hab_check} -eq 1 ; then " \
+                       "setenv hab_check_filetype \"FIT file on SD card " \
+                       "or eMMC\";" \
+                       "env set check_addr ${fit_addr_r};" \
+                       "run hab_check_addr;" \
+               "else " \
+                       "true; "\
+               "fi;\0" \
+       "hab_check_file_bootscript=" \
+               "if env exists enable_hab_check && test " \
+                       "${enable_hab_check} -eq 1 ; then " \
+                       "setenv hab_check_filetype \"Bootscript file\";" \
+                       "env set check_addr ${loadaddr};" \
+                       "run hab_check_addr;" \
+               "else " \
+                       "true; "\
+               "fi;\0" \
+       "hab_check_flash_fit=" \
+               "if env exists enable_hab_check && test " \
+                       "${enable_hab_check} -eq 1 ; then " \
+                       "setenv hab_check_filetype \"FIT files on flash\";" \
+                       "env set check_addr ${fit_addr_r};" \
+                       "run hab_check_addr;" \
+               "else " \
+                       "true; "\
+               "fi;\0" \
+       "enable_hab_check=1\0"
+#else
+#define HAB_EXTRA_SETTINGS \
+       "hab_check_file_fit=echo HAB check FIT file always returns " \
+               "true;true\0" \
+       "hab_check_flash_fit=echo HAB check flash FIT always returns " \
+               "true;true\0" \
+       "hab_check_file_bootscript=echo HAB check bootscript always " \
+               "returns true;true\0" \
+       "enable_hab_check=0\0"
+#endif
+
+#if (CONFIG_SYS_BOARD_VERSION == 3)
 #define CONFIG_EXTRA_ENV_BOARD_SETTINGS \
-       "board_type=aristainetos2_7@1\0" \
-       "nor_bootdelay=-2\0" \
+       "dead=led led_red on\0" \
+       "mtdids=nand0=gpmi-nand,nor0=spi0.0\0" \
+       "mtdparts=mtdparts=spi0.0:832k(u-boot),64k(env),64k(env-red)," \
+               "-(ubi-nor);gpmi-nand:-(ubi)\0" \
+       "addmisc=setenv bootargs ${bootargs} net.ifnames=0 consoleblank=0 " \
+               "bootmode=${bootmode} mmcpart=${mmcpart}\0" \
+       "mainboot=echo Booting from SD-card ...; " \
+               "run mainargs addmtd addmisc;" \
+               "if test -n ${addmiscM}; then run addmiscM;fi;" \
+               "if test -n ${addmiscC}; then run addmiscC;fi;" \
+               "if test -n ${addmiscD}; then run addmiscD;fi;" \
+               "run boot_board_type;" \
+               "bootm ${fit_addr_r}\0" \
+       "mainargs=setenv bootargs console=${console},${baudrate} " \
+               "root=${mmcroot}\0" \
+       "main_load_fit=ext4load mmc ${mmcdev}:${mmcpart} ${fit_addr_r} " \
+               "${fit_file}\0" \
+       "rescue_load_fit=ext4load mmc ${mmcdev}:${mmcrescuepart} " \
+               "${fit_addr_r} ${rescue_fit_file}\0"
+#elif (CONFIG_SYS_BOARD_VERSION == 4)
+#define CONFIG_EXTRA_ENV_BOARD_SETTINGS \
+       "dead=led led_red on;led led_red2 on;\0" \
+       "mtdids=nand0=gpmi-nand,nor0=spi0.0\0" \
+       "mtdparts=mtdparts=spi0.0:832k(u-boot),64k(env),64k(env-red)," \
+               "-(ubi-nor);gpmi-nand:-(ubi)\0" \
+       "addmisc=setenv bootargs ${bootargs} net.ifnames=0 consoleblank=0 " \
+               "bootmode=${bootmode} mmcpart=${mmcpart}\0" \
+       "mainboot=echo Booting from SD-card ...; " \
+               "run mainargs addmtd addmisc;" \
+               "if test -n ${addmiscM}; then run addmiscM;fi;" \
+               "if test -n ${addmiscC}; then run addmiscC;fi;" \
+               "if test -n ${addmiscD}; then run addmiscD;fi;" \
+               "run boot_board_type;" \
+               "bootm ${fit_addr_r}\0" \
+       "mainargs=setenv bootargs console=${console},${baudrate} " \
+               "root=${mmcroot}\0" \
+       "main_load_fit=ext4load mmc ${mmcdev}:${mmcpart} ${fit_addr_r} " \
+               "${fit_file}\0" \
+       "rescue_load_fit=ext4load mmc ${mmcdev}:${mmcrescuepart} " \
+               "${fit_addr_r} ${rescue_fit_file}\0"
+#elif (CONFIG_SYS_BOARD_VERSION == 5)
+#define CONFIG_EXTRA_ENV_BOARD_SETTINGS \
+       "emmcpart=1\0" \
+       "emmc_rescue_part=3\0" \
+       "emmcdev=1\0" \
+       "emmcroot=/dev/mmcblk1p1 rootwait rw\0" \
+       "dead=led led_red on\0" \
+       "mtdids=nor0=spi0.0\0" \
+       "mtdparts=mtdparts=spi0.0:832k(u-boot),64k(env),64k(env-red)," \
+               "-(ubi-nor)\0" \
+       "addmisc=setenv bootargs ${bootargs} net.ifnames=0 consoleblank=0 " \
+               "bootmode=${bootmode} mmcpart=${mmcpart} " \
+               "emmcpart=${emmcpart}\0" \
+       "mainboot=echo Booting from eMMC ...; " \
+               "run mainargs addmtd addmisc;" \
+               "if test -n ${addmiscM}; then run addmiscM;fi;" \
+               "if test -n ${addmiscC}; then run addmiscC;fi;" \
+               "if test -n ${addmiscD}; then run addmiscD;fi;" \
+               "run boot_board_type;" \
+               "bootm ${fit_addr_r}\0" \
+       "mainargs=setenv bootargs console=${console},${baudrate} " \
+               "root=${emmcroot} rootfstype=ext4\0 " \
+       "main_load_fit=ext4load mmc ${emmcdev}:${emmcpart} ${fit_addr_r} " \
+               "${fit_file}; " \
+               "imi ${fit_addr_r}\0 " \
+       "rescue_load_fit=ext4load mmc ${emmcdev}:${emmc_rescue_part} " \
+               "${fit_addr_r} ${rescue_fit_file};imi ${fit_addr_r}\0"
+#else
+#define CONFIG_EXTRA_ENV_BOARD_SETTINGS \
+       "dead=led led_red on\0" \
        "mtdids=nand0=gpmi-nand,nor0=spi3.1\0" \
        "mtdparts=mtdparts=spi3.1:832k(u-boot),64k(env),64k(env-red)," \
-               "-(rescue-system);gpmi-nand:-(ubi)\0" \
-       "addmisc=setenv bootargs ${bootargs} net.ifnames=0 consoleblank=0\0" \
-       "ubiargs=setenv bootargs console=${console},${baudrate} " \
-               "ubi.mtd=0,4096 root=ubi0:rootfs rootfstype=ubifs\0 " \
-       "ubifs_load_fit=sf probe;ubi part ubi 4096;ubifsmount ubi:rootfs;" \
-               "ubifsload ${fit_addr_r} /boot/system.itb; " \
-               "imi ${fit_addr_r}\0 "
+               "-(ubi-nor);gpmi-nand:-(ubi)\0" \
+       "addmisc=setenv bootargs ${bootargs} net.ifnames=0 consoleblank=0 " \
+               "bootmode=${bootmode} mmcpart=${mmcpart}\0" \
+       "mainboot=echo Booting from SD-card ...; " \
+               "run mainargs addmtd addmisc;" \
+               "if test -n ${addmiscM}; then run addmiscM;fi;" \
+               "if test -n ${addmiscC}; then run addmiscC;fi;" \
+               "if test -n ${addmiscD}; then run addmiscD;fi;" \
+               "run boot_board_type;" \
+               "bootm ${fit_addr_r}\0" \
+       "mainargs=setenv bootargs console=${console},${baudrate} " \
+               "root=${mmcroot}\0" \
+       "main_load_fit=ext4load mmc ${mmcdev}:${mmcpart} ${fit_addr_r} " \
+               "${fit_file}\0" \
+       "rescue_load_fit=ext4load mmc ${mmcdev}:${mmcrescuepart} " \
+               "${fit_addr_r} ${rescue_fit_file}\0"
+#endif
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       "disable_giga=yes\0" \
+       "usb_pgood_delay=2000\0" \
+       "nor_bootdelay=-2\0" \
+       "script=u-boot.scr\0" \
+       "fit_file=/boot/system.itb\0" \
+       "rescue_fit_file=/boot/rescue.itb\0" \
+       "loadaddr=0x12000000\0" \
+       "fit_addr_r=0x14000000\0" \
+       "uboot=/boot/u-boot.imx\0" \
+       "uboot_sz=d0000\0" \
+       "panel=lb07wv8\0" \
+       "splashpos=m,m\0" \
+       "console=" CONSOLE_DEV "\0" \
+       "fdt_high=0xffffffff\0"   \
+       "initrd_high=0xffffffff\0" \
+       "addmtd=setenv bootargs ${bootargs} ${mtdparts}\0" \
+       "boot_board_type=bootm ${fit_addr_r}#${board_type}\0" \
+       "get_env=mw ${loadaddr} 0 0x20000;" \
+               "mmc rescan;" \
+               "ext4load mmc ${mmcdev}:${mmcpart} ${loadaddr} env.txt;" \
+               "env import -t ${loadaddr}\0" \
+       "default_env=gpio set wp_spi_nor.gpio-hog;" \
+               "sf probe;" \
+               "sf protect unlock 0 0x1000000;" \
+               "mw ${loadaddr} 0 0x20000;" \
+               "env export -t ${loadaddr} serial# ethaddr " \
+               "board_type panel addmisc addmiscM addmiscC addmiscD;" \
+               "env default -a;" \
+               "env import -t ${loadaddr}\0" \
+       "loadbootscript=" \
+               "ext4load mmc ${mmcdev}:${mmcpart} ${loadaddr} " \
+               "${script};\0" \
+       "loadbootscriptUSB=" \
+               "ext4load usb 0 ${loadaddr} ${script};\0" \
+       "loadbootscriptUSBf=" \
+               "fatload usb 0 ${loadaddr} ${script};\0" \
+       "bootscriptUSB=echo Running bootscript from usb-stick ...; " \
+               "source\0" \
+       "bootscript=echo Running bootscript from mmc ...; " \
+               "source\0" \
+       "mmcpart=1\0" \
+       "mmcrescuepart=3\0" \
+       "mmcdev=0\0" \
+       "mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \
+       "mmcargs=setenv bootargs console=${console},${baudrate} " \
+               "root=${mmcroot}\0" \
+       "mmcboot=echo Booting from mmc ...; " \
+               "run mmcargs addmtd addmisc;" \
+               "if test -n ${addmiscM}; then run addmiscM;fi;" \
+               "if test -n ${addmiscC}; then run addmiscC;fi;" \
+               "if test -n ${addmiscD}; then run addmiscD;fi;" \
+               "run boot_board_type;" \
+               "bootm ${fit_addr_r}\0" \
+       "mmc_load_fit=ext4load mmc ${mmcdev}:${mmcpart} ${fit_addr_r} " \
+               "${fit_file}\0" \
+       "mmc_load_uboot=ext4load mmc ${mmcdev}:${mmcpart} ${loadaddr} " \
+               "${uboot}\0" \
+       "mmc_rescue_load_fit=ext4load mmc ${mmcdev}:${mmcrescuepart} " \
+               "${fit_addr_r} ${rescue_fit_file}\0" \
+       "mmc_upd_uboot=mw.b ${loadaddr} 0xff ${uboot_sz};" \
+               "setexpr cmp_buf ${loadaddr} + ${uboot_sz};" \
+               "setexpr uboot_maxsize ${uboot_sz} - 400;" \
+               "mw.b ${cmp_buf} 0x00 ${uboot_sz};" \
+               "run mmc_load_uboot;sf probe;sf erase 0 ${uboot_sz};" \
+               "sf write ${loadaddr} 400 ${filesize};" \
+               "sf read ${cmp_buf} 400 ${uboot_sz};" \
+               "cmp.b ${loadaddr} ${cmp_buf} ${uboot_maxsize}\0" \
+       "rescueargs=setenv bootargs console=${console},${baudrate} " \
+               "root=/dev/ram rw\0 " \
+       "rescueboot=echo Booting rescue system ...; " \
+               "run rescueargs addmtd addmisc;" \
+               "if test -n ${rescue_reason}; then run rescue_reason;fi;" \
+               "if test -n ${addmiscM}; then run addmiscM;fi;" \
+               "if test -n ${addmiscC}; then run addmiscC;fi;" \
+               "if test -n ${addmiscD}; then run addmiscD;fi;" \
+               "run boot_board_type;" \
+               "if bootm ${fit_addr_r}; then ; " \
+               "else " \
+                       "run dead; " \
+               "fi; \0" \
+       "r_reason_syserr=setenv rescue_reason setenv bootargs " \
+               "\\\\${bootargs} " \
+       "rescueReason=18\0 " \
+       "usb_load_fit=ext4load usb 0 ${fit_addr_r} ${fit_file}\0" \
+       "usb_load_fitf=fatload usb 0 ${fit_addr_r} ${fit_file}\0" \
+       "usb_load_rescuefit=ext4load usb 0 ${fit_addr_r} " \
+               "${rescue_fit_file}\0" \
+       "usb_load_rescuefitf=fatload usb 0 ${fit_addr_r} " \
+               "${rescue_fit_file}\0" \
+       "usbroot=/dev/sda1 rootwait rw\0" \
+       "usbboot=echo Booting from usb-stick ...; " \
+               "run usbargs addmtd addmisc;" \
+               "if test -n ${addmiscM}; then run addmiscM;fi;" \
+               "if test -n ${addmiscC}; then run addmiscC;fi;" \
+               "if test -n ${addmiscD}; then run addmiscD;fi;" \
+               "run boot_board_type;" \
+               "bootm ${fit_addr_r}\0" \
+       "usbargs=setenv bootargs console=${console},${baudrate} " \
+               "root=${usbroot}\0" \
+       "mmc_rescue_boot=" \
+               "run r_reason_syserr;" \
+               "if run mmc_rescue_load_fit hab_check_file_fit; then " \
+                       "run rescueboot; " \
+               "else " \
+                       "run dead; " \
+                       "echo RESCUE SYSTEM FROM SD-CARD BOOT FAILURE;" \
+               "fi;\0" \
+       "main_rescue_boot=" \
+               "if run main_load_fit hab_check_flash_fit; then " \
+                       "if run mainboot; then ; " \
+                       "else " \
+                               "run r_reason_syserr;" \
+                               "if run rescue_load_fit hab_check_file_fit;" \
+                                       "then run rescueboot; " \
+                               "else " \
+                                       "run dead; " \
+                                       "echo RESCUE SYSTEM BOOT FAILURE;" \
+                               "fi; " \
+                       "fi; " \
+               "else " \
+                       "run r_reason_syserr;" \
+                       "if run rescue_load_fit hab_check_file_fit; then " \
+                               "run rescueboot; " \
+                       "else " \
+                               "run dead; " \
+                               "echo RESCUE SYSTEM BOOT FAILURE;" \
+                       "fi; " \
+               "fi;\0" \
+       "usb_mmc_rescue_boot=" \
+               "usb start;" \
+               "if usb storage; then " \
+                       "if run loadbootscriptUSB " \
+                               "hab_check_file_bootscript;" \
+                               "then run bootscriptUSB; " \
+                       "fi; " \
+                       "if run loadbootscriptUSBf " \
+                               "hab_check_file_bootscript;" \
+                               "then run bootscriptUSB; " \
+                       "fi; " \
+                       "if run usb_load_fit hab_check_file_fit; then " \
+                               "run usbboot; " \
+                       "fi; " \
+                       "if run usb_load_fitf hab_check_file_fit; then " \
+                               "run usbboot; " \
+                       "fi; "\
+                       "if run usb_load_rescuefit hab_check_file_fit;" \
+                               "then run r_reason_syserr rescueboot;" \
+                       "fi; " \
+                       "if run usb_load_rescuefitf hab_check_file_fit;" \
+                               "then run r_reason_syserr rescueboot;" \
+                       "fi; " \
+                       "run mmc_rescue_boot;" \
+               "fi; "\
+               "run mmc_rescue_boot;\0" \
+       "rescue_xload_boot=" \
+               "run r_reason_syserr;" \
+               "if test ${bootmode} -ne 0 ; then " \
+                       "mmc dev ${mmcdev};" \
+                       "if mmc rescan; then " \
+                               "if run mmc_rescue_load_fit " \
+                                       "hab_check_file_fit; then " \
+                                       "run rescueboot; " \
+                               "else " \
+                                       "usb start;" \
+                                       "if usb storage; then " \
+                                               "if run usb_load_rescuefit " \
+                                                       "hab_check_file_fit;"\
+                                                       "then " \
+                                                       "run rescueboot;" \
+                                               "fi; " \
+                                               "if run usb_load_rescuefitf "\
+                                                       "hab_check_file_fit;"\
+                                                       "then " \
+                                                       "run rescueboot;" \
+                                               "fi; " \
+                                       "fi;" \
+                               "fi;" \
+                               "run dead; " \
+                               "echo RESCUE SYSTEM ON SD OR " \
+                                       "USB BOOT FAILURE;" \
+                       "else " \
+                               "usb start;" \
+                               "if usb storage; then " \
+                                       "if run usb_load_rescuefit " \
+                                               "hab_check_file_fit; then " \
+                                               "run rescueboot;" \
+                                       "fi; " \
+                                       "if run usb_load_rescuefitf " \
+                                               "hab_check_file_fit; then " \
+                                               "run rescueboot;" \
+                                       "fi; " \
+                               "fi;" \
+                               "run dead; " \
+                               "echo RESCUE SYSTEM ON USB BOOT FAILURE;" \
+                       "fi; " \
+               "else "\
+                       "if run rescue_load_fit hab_check_file_fit; then " \
+                               "run rescueboot; " \
+                       "else " \
+                               "run dead; " \
+                               "echo RESCUE SYSTEM ON BOARD BOOT FAILURE;" \
+                       "fi; " \
+               "fi;\0" \
+       "ari_boot=if test ${bootmode} -ne 0 ; then " \
+               "mmc dev ${mmcdev};" \
+               "if mmc rescan; then " \
+                       "if run loadbootscript hab_check_file_bootscript;" \
+                               "then run bootscript; " \
+                       "fi; " \
+                       "if run mmc_load_fit hab_check_file_fit; then " \
+                               "if run mmcboot; then ; " \
+                               "else " \
+                                       "run mmc_rescue_boot;" \
+                               "fi; " \
+                       "else " \
+                               "run usb_mmc_rescue_boot;" \
+                       "fi; " \
+               "else " \
+                       "run usb_mmc_rescue_boot;" \
+               "fi; " \
+       "else "\
+               "run main_rescue_boot;" \
+       "fi; \0"\
+       HAB_EXTRA_SETTINGS \
+       CONFIG_EXTRA_ENV_BOARD_SETTINGS
+
+#define CONFIG_ARP_TIMEOUT             200UL
+
+#define CONFIG_SYS_MEMTEST_START       PHYS_SDRAM
+#define CONFIG_SYS_MEMTEST_END         (CONFIG_SYS_MEMTEST_START + 0x100000)
+#define CONFIG_SYS_MEMTEST_SCRATCH     0x10800000
+
+/* Physical Memory Map */
+#define PHYS_SDRAM                     MMDC0_ARB_BASE_ADDR
 
-#define CONFIG_SYS_I2C_MXC_I2C4                /* enable I2C bus 4 */
+#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM
+#define CONFIG_SYS_INIT_RAM_ADDR       IRAM_BASE_ADDR
+#define CONFIG_SYS_INIT_RAM_SIZE       IRAM_SIZE
 
-#define ARISTAINETOS_USB_OTG_PWR       IMX_GPIO_NR(4, 15)
-#define ARISTAINETOS_USB_H1_PWR        IMX_GPIO_NR(1, 0)
-#define CONFIG_GPIO_ENABLE_SPI_FLASH   IMX_GPIO_NR(2, 15)
+#define CONFIG_SYS_INIT_SP_OFFSET \
+       (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
+#define CONFIG_SYS_INIT_SP_ADDR \
+       (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
+
+#define CONFIG_SYS_FSL_USDHC_NUM       2
+
+/* NAND stuff */
+#define CONFIG_SYS_MAX_NAND_DEVICE     1
+#define CONFIG_SYS_NAND_BASE           0x40000000
+#define CONFIG_SYS_NAND_5_ADDR_CYCLE
+#define CONFIG_SYS_NAND_ONFI_DETECTION
+
+/* DMA stuff, needed for GPMI/MXS NAND support */
+
+/* USB Configs */
+#define CONFIG_EHCI_HCD_INIT_AFTER_RESET       /* For OTG port */
+#define CONFIG_MXC_USB_PORTSC  (PORT_PTS_UTMI | PORT_PTS_PTW)
+#define CONFIG_MXC_USB_FLAGS   0
+
+/* UBI support */
 
 /* Framebuffer */
-#define CONFIG_SYS_LDB_CLOCK 33246000
-#define CONFIG_LG4573
-#define CONFIG_LG4573_BUS 0
-#define CONFIG_LG4573_CS 0
+/* check this console not needed, after test remove it */
+#define CONFIG_SPLASH_SCREEN
+#define CONFIG_SPLASH_SCREEN_ALIGN
+#define CONFIG_IMX_VIDEO_SKIP
+#define CONFIG_VIDEO_LOGO
+#define CONFIG_VIDEO_BMP_LOGO
+#define CONFIG_BMP_16BPP
+#define CONFIG_VIDEO_BMP_RLE8
 
-#include "aristainetos-common.h"
+#define CONFIG_IMX6_PWM_PER_CLK        66000000
 
 #endif                         /* __ARISTAINETOS2_CONFIG_H */
diff --git a/include/configs/aristainetos2b.h b/include/configs/aristainetos2b.h
deleted file mode 100644 (file)
index cdeb7a3..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * (C) Copyright 2015
- * Heiko Schocher, DENX Software Engineering, hs@denx.de.
- *
- * Based on:
- * Copyright (C) 2012 Freescale Semiconductor, Inc.
- *
- * Configuration settings for the Freescale i.MX6DL aristainetos2 board.
- */
-#ifndef __ARISTAINETOS2B_CONFIG_H
-#define __ARISTAINETOS2B_CONFIG_H
-
-#define CONFIG_SYS_BOARD_VERSION       3
-#define CONFIG_HOSTNAME                "aristainetos2"
-#define CONFIG_BOARDNAME       "aristainetos2-revB"
-
-#define CONFIG_MXC_UART_BASE   UART2_BASE
-#define CONSOLE_DEV    "ttymxc1"
-
-#define CONFIG_FEC_XCV_TYPE            RGMII
-
-#define CONFIG_EXTRA_ENV_BOARD_SETTINGS \
-       "board_type=aristainetos2_7@1\0" \
-       "nor_bootdelay=-2\0" \
-       "mtdids=nand0=gpmi-nand,nor0=spi0.0\0" \
-       "mtdparts=mtdparts=spi0.0:832k(u-boot),64k(env),64k(env-red)," \
-               "-(rescue-system);gpmi-nand:-(ubi)\0" \
-       "addmisc=setenv bootargs ${bootargs} net.ifnames=0 consoleblank=0\0" \
-       "ubiargs=setenv bootargs console=${console},${baudrate} " \
-               "ubi.mtd=0,4096 root=ubi0:rootfs rootfstype=ubifs\0 " \
-       "ubifs_load_fit=sf probe;ubi part ubi 4096;ubifsmount ubi:rootfs;" \
-               "ubifsload ${fit_addr_r} /boot/system.itb; " \
-               "imi ${fit_addr_r}\0 " \
-
-#define CONFIG_SYS_I2C_MXC_I2C4                /* enable I2C bus 4 */
-
-#define ARISTAINETOS_USB_OTG_PWR       IMX_GPIO_NR(4, 15)
-#define ARISTAINETOS_USB_H1_PWR        IMX_GPIO_NR(1, 0)
-#define CONFIG_GPIO_ENABLE_SPI_FLASH   IMX_GPIO_NR(2, 15)
-
-/* Framebuffer */
-#define CONFIG_SYS_LDB_CLOCK 33246000
-#define CONFIG_LG4573
-#define CONFIG_LG4573_BUS 0
-#define CONFIG_LG4573_CS 1
-
-#include "aristainetos-common.h"
-
-#endif                         /* __ARISTAINETOS2B_CONFIG_H */
index eb29f07032b2094bf04fe11bf4411fcbce1b81ee..53ae5f08ebd305147d651b500ddcc38fd1820865 100644 (file)
 /* APBH DMA is required for NAND support */
 #endif
 
+/* SPI Flash Configs */
+#if defined(CONFIG_SPL_BUILD)
+#undef CONFIG_DM_SPI
+#undef CONFIG_DM_SPI_FLASH
+#undef CONFIG_SPI_FLASH_MTD
+#endif
+
 /* Ethernet */
 #define CONFIG_FEC_MXC
 #define CONFIG_FEC_MXC_PHYADDR         0
index 0c36a57a0e075a7458e13394330c3d6a2073782e..ea5ba6bfcee1e1099322c7c3f399b52864d14518 100644 (file)
        "ramdisk_addr_r=0x82200000\0" \
        "scriptaddr=0x87000000\0"
 
+#define UBOOT_UPDATE \
+       "update_uboot=nand erase.part u-boot1 && " \
+               "nand write ${loadaddr} u-boot1 ${filesize} && " \
+               "nand erase.part u-boot2 && " \
+               "nand write ${loadaddr} u-boot2 ${filesize}\0"
+
 #define NFS_BOOTCMD \
        "nfsargs=ip=:::::eth0: root=/dev/nfs\0" \
        "nfsboot=run setup; " \
@@ -83,6 +89,7 @@
        MEM_LAYOUT_ENV_SETTINGS \
        NFS_BOOTCMD \
        UBI_BOOTCMD \
+       UBOOT_UPDATE \
        "console=ttymxc0\0" \
        "defargs=user_debug=30\0" \
        "dfu_alt_info=" DFU_ALT_NAND_INFO "\0" \
index 95b5a14b595c93d94d829fad9cb06932efa1fb4a..cbc7501bcc14b886ef017a8e153bf9e47a653289 100644 (file)
 #define CONFIG_SYS_FSL_ESDHC_ADDR      0
 #define CONFIG_SYS_FSL_USDHC_NUM       2
 
-/* Network */
-#define CONFIG_FEC_MXC
-#define IMX_FEC_BASE                   ENET_BASE_ADDR
-#define CONFIG_FEC_XCV_TYPE            RMII
-#define CONFIG_ETHPRIME                        "FEC"
-#define CONFIG_FEC_MXC_PHYADDR         1
-#define CONFIG_TFTP_TSIZE
-
 /* USB Configs */
 /* Host */
 #define CONFIG_USB_MAX_CONTROLLER_COUNT                2
        "imx6dl-colibri-eval-v3.dtb fat 0 1;" \
        "imx6dl-colibri-cam-eval-v3.dtb fat 0 1"
 
+#define UBOOT_UPDATE \
+       "uboot_hwpart=1\0" \
+       "uboot_blk=8a\0" \
+       "uboot_spl_blk=2\0" \
+       "set_blkcnt=setexpr blkcnt ${filesize} + 0x1ff && " \
+               "setexpr blkcnt ${blkcnt} / 0x200\0" \
+       "update_uboot=run set_blkcnt && mmc dev 0 ${uboot_hwpart} && " \
+               "mmc write ${loadaddr} ${uboot_blk} ${blkcnt}\0" \
+       "update_spl=run set_blkcnt && mmc dev 0 ${uboot_hwpart} && " \
+               "mmc write ${loadaddr} ${uboot_spl_blk} ${blkcnt}\0"
+
 #define EMMC_BOOTCMD \
        "set_emmcargs=setenv emmcargs ip=off root=PARTUUID=${uuid} "\
                "rw,noatime rootfstype=ext4 " \
        "fdt_fixup=;\0" \
        MEM_LAYOUT_ENV_SETTINGS \
        NFS_BOOTCMD \
+       UBOOT_UPDATE \
        "setethupdate=if env exists ethaddr; then; else setenv ethaddr " \
                "00:14:2d:00:00:00; fi; tftpboot ${loadaddr} " \
                "flash_eth.img && source ${loadaddr}\0" \
index d92db7192ee38618aa9edda65c0f6829487a7e8f..603ea3a053a13f537206ff10c2460a325c0d86f8 100644 (file)
 /* Size of malloc() pool */
 #define CONFIG_SYS_MALLOC_LEN          (32 * SZ_1M)
 
-/* Network */
-#define CONFIG_FEC_MXC
-#define CONFIG_FEC_XCV_TYPE             RMII
-#define CONFIG_ETHPRIME                 "FEC"
-#define CONFIG_FEC_MXC_PHYADDR          0
-
-#define CONFIG_TFTP_TSIZE
-
-/* ENET1 */
-#define IMX_FEC_BASE                   ENET_IPS_BASE_ADDR
-
 /* MMC Config*/
 #define CONFIG_SYS_FSL_ESDHC_ADDR      0
 #ifdef CONFIG_TARGET_COLIBRI_IMX7_NAND
 #define CONFIG_NETMASK                 255.255.255.0
 #define CONFIG_SERVERIP                        192.168.10.1
 
+#if defined(CONFIG_TARGET_COLIBRI_IMX7_EMMC)
+#define UBOOT_UPDATE \
+       "uboot_hwpart=1\0" \
+       "uboot_blk=2\0" \
+       "set_blkcnt=setexpr blkcnt ${filesize} + 0x1ff && " \
+               "setexpr blkcnt ${blkcnt} / 0x200\0" \
+       "update_uboot=run set_blkcnt && mmc dev 0 ${uboot_hwpart} && " \
+               "mmc write ${loadaddr} ${uboot_blk} ${blkcnt}\0"
+#elif defined(CONFIG_TARGET_COLIBRI_IMX7_NAND)
+#define UBOOT_UPDATE \
+       "update_uboot=nand erase.part u-boot1 && " \
+               "nand write ${loadaddr} u-boot1 ${filesize} && " \
+               "nand erase.part u-boot2 && " \
+               "nand write ${loadaddr} u-boot2 ${filesize}\0"
+#endif
+
 #ifndef PARTS_DEFAULT
 /* Define the default GPT table for eMMC */
 #define PARTS_DEFAULT \
        MEM_LAYOUT_ENV_SETTINGS \
        NFS_BOOTCMD \
        MODULE_EXTRA_ENV_SETTINGS \
+       UBOOT_UPDATE \
        "boot_file=zImage\0" \
        "console=ttymxc0\0" \
        "defargs=\0" \
index 40c050a27e7a1e694212ea3f9d9e619f948af08d..1478ea844e17e43f75c5936957208a4d74e382a2 100644 (file)
        "ramdisk_addr_r=0x82100000\0" \
        "scriptaddr=0x87000000\0"
 
+#define UBOOT_UPDATE \
+       "update_uboot=nand erase.part u-boot && " \
+               "nand write ${loadaddr} u-boot ${filesize}\0" \
+
 #define NFS_BOOTCMD \
        "nfsargs=ip=:::::eth0: root=/dev/nfs\0" \
        "nfsboot=run setup; " \
        NFS_BOOTCMD \
        SD_BOOTCMD \
        UBI_BOOTCMD \
+       UBOOT_UPDATE \
        "console=ttyLP0\0" \
        "defargs=user_debug=30\0" \
        "dfu_alt_info=" DFU_ALT_NAND_INFO "\0" \
index d762d2cb19b5b7a4f44d2f9f67808e3914b544a8..087d020cdd378fba032612b0ad02faadd4c85e5a 100644 (file)
 #endif
 
 /* Watchdog */
+#if defined(CONFIG_SPL_BUILD)
+#undef CONFIG_WDT
+#undef CONFIG_WATCHDOG
+#define CONFIG_HW_WATCHDOG
+#endif
 
 /* allow to overwrite serial and ethaddr */
 #define CONFIG_ENV_OVERWRITE
index 73cdc5b489fb4b070065d109c0da2c25a7e9a786..dad906d494e75adc9683c379c6a02d3ab263efce 100644 (file)
 #define CONFIG_USB_GADGET_MASS_STORAGE
 #endif
 
-/* Networking Configs */
-#ifdef CONFIG_NET
-#define CONFIG_FEC_MXC
-#define IMX_FEC_BASE                   ENET_BASE_ADDR
-#define CONFIG_FEC_XCV_TYPE            RGMII
-#define CONFIG_ETHPRIME                "FEC"
-#define CONFIG_FEC_MXC_PHYADDR         4
-#define CONFIG_PHY_ATHEROS
-#endif
-
 /* Serial Flash */
 
 /* allow to overwrite serial and ethaddr */
        "setargs=setenv bootargs root=/dev/${rootdev}${partnum} " \
                "ro rootwait cma=128M " \
                "bootcause=${bootcause} " \
-               "${quiet} console=${console} ${rtc_status} " \
+               "${quiet} console=${console} " \
                "${videoargs}" "\0" \
        "doquiet=" \
                "if ext2load ${dev} ${devnum}:5 0x7000A000 /boot/console; " \
        "swappartitions=" \
                "setexpr partnum 3 - ${partnum}\0" \
        "failbootcmd=" \
+               "echo reached failbootcmd; " \
                "bx50_backlight_enable; " \
-               "msg=\"Monitor failed to start.  Try again, or contact GE Service for support.\"; " \
-               "echo $msg; " \
-               "setenv stdout vga; " \
-               "echo \"\n\n\n\n    \" $msg; " \
-               "setenv stdout serial; " \
+               "setcurs 5 4; " \
+               "lcdputs \"Monitor failed to start. " \
+               "Try again, or contact GE Service for support.\"; " \
                "mw.b 0x7000A000 0xbc; " \
                "mw.b 0x7000A001 0x00; " \
                "ext4write ${dev} ${devnum}:5 0x7000A000 /boot/failures 2\0" \
 
 #define CONFIG_IMX6_PWM_PER_CLK        66000000
 
-#define CONFIG_PCI
-#define CONFIG_PCI_PNP
 #define CONFIG_PCI_SCAN_SHOW
 #define CONFIG_PCIE_IMX
 #define CONFIG_PCIE_IMX_PERST_GPIO     IMX_GPIO_NR(7, 12)
index 46529a61da3c5d2a81b1d5f240c39d091d4dd7bb..18327fb4c3d1f4c328de0632eb5239f741b3fd6a 100644 (file)
 /* MTD device */
 #endif
 
-/* Ethernet */
-#ifdef CONFIG_FEC_MXC
-# ifdef CONFIG_TARGET_MX6Q_ICORE_RQS
-#  define CONFIG_FEC_MXC_PHYADDR       3
-#  define CONFIG_FEC_XCV_TYPE          RGMII
-# else
-#  define CONFIG_FEC_MXC_PHYADDR       0
-#  define CONFIG_FEC_XCV_TYPE          RMII
-# endif
-#endif
-
 /* Falcon Mode */
 #ifdef CONFIG_SPL_OS_BOOT
 # define CONFIG_SPL_FS_LOAD_ARGS_NAME  "args"
index 991fe0056c4a9656e3e9741107f82b7e66f78dc3..7da2b9005299bc0a31c3da923e07e02701df1526 100644 (file)
 /* Initial environment variables */
 #define CONFIG_EXTRA_ENV_SETTINGS              \
        "script=boot.scr\0" \
-       "image=Image.itb\0" \
+       "image=Image\0" \
        "console=ttymxc1,115200\0" \
        "fdt_addr=0x43000000\0"                 \
        "fdt_high=0xffffffffffffffff\0"         \
-       "boot_fit=try\0" \
-       "fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \
+       "boot_fit=no\0" \
+       "fdt_file=imx8mm-evk.dtb\0" \
        "initrd_addr=0x43800000\0"              \
        "initrd_high=0xffffffffffffffff\0" \
        "mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \
        (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
 
 #define CONFIG_ENV_OVERWRITE
-#define CONFIG_SYS_MMC_ENV_DEV         0   /* USDHC2 */
+#define CONFIG_SYS_MMC_ENV_DEV         1   /* USDHC2 */
 #define CONFIG_MMCROOT                 "/dev/mmcblk1p2"  /* USDHC2 */
 
 /* Size of malloc() pool */
index af23762396f45d6d821de981e46a61cbb045bed6..0ebff26ba09c4be329c84f9bf847c4acd4692046 100644 (file)
@@ -21,7 +21,7 @@
 #define CONFIG_SYS_FSL_CLK
 
 /* Size of malloc() pool */
-#define CONFIG_SYS_MALLOC_LEN          (10 * 1024 * 1024)
+#define CONFIG_SYS_MALLOC_LEN          (32 * 1024 * 1024)
 
 #define CONFIG_REVISION_TAG
 
 
 /* bootz: zImage/initrd.img support */
 
-/* Eth Configs */
-#define IMX_FEC_BASE   FEC_BASE_ADDR
-#define CONFIG_ETHPRIME                "FEC0"
-#define CONFIG_FEC_MXC_PHYADDR 0x1F
 
 /* USB Configs */
 #define CONFIG_MXC_USB_PORT    1
 
 #define CONFIG_LOADADDR                0x70010000      /* loadaddr env var */
 
+#define BOOT_TARGET_DEVICES(func) \
+       func(MMC, mmc, 0) \
+       func(MMC, mmc, 1) \
+       func(USB, usb, 0) \
+       func(PXE, pxe, na)
+
+#include <config_distro_bootcmd.h>
+
 #define CONFIG_EXTRA_ENV_SETTINGS \
-       "fdt_addr_r=0x71ff0000\0" \
+       "fdt_addr_r=0x75000000\0" \
        "pxefile_addr_r=0x73000000\0" \
-       "ramdisk_addr_r=0x72000000\0" \
+       "scriptaddr=0x74000000\0" \
+       "ramdisk_addr_r=0x80000000\0" \
+       "kernel_addr_r=0x72000000\0"  \
+       "fdt_high=0xffffffff\0" \
        "console=ttymxc1,115200\0" \
-       "uenv=/boot/uEnv.txt\0" \
-       "optargs=\0" \
-       "cmdline=\0" \
-       "mmcdev=0\0" \
-       "mmcpart=1\0" \
-       "mmcrootfstype=ext4 rootwait fixrtc\0" \
-       "mmcargs=setenv bootargs console=${console} " \
-               "${optargs} " \
-               "root=/dev/mmcblk${mmcdev}p${mmcpart} ro " \
-               "rootfstype=${mmcrootfstype} " \
-               "${cmdline}\0" \
-       "loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
-       "loadpxe=dhcp;setenv kernel_addr_r ${loadaddr};pxe get;pxe boot;\0" \
-       "loadrd=load mmc ${bootpart} ${ramdisk_addr_r} ${bootdir}/${rdfile};" \
-               "setenv rdsize ${filesize}\0" \
-       "loadfdt=echo loading ${fdt_path} ...;" \
-               "load mmc ${bootpart} ${fdt_addr_r} ${fdt_path}\0" \
-       "mmcboot=mmc dev ${mmcdev}; " \
-               "if mmc rescan; then " \
-                       "echo SD/MMC found on device ${mmcdev};" \
-                       "echo Checking for: ${uenv} ...;" \
-                       "setenv bootpart ${mmcdev}:${mmcpart};" \
-                       "if test -e mmc ${bootpart} ${uenv}; then " \
-                               "load mmc ${bootpart} ${loadaddr} ${uenv};" \
-                               "env import -t ${loadaddr} ${filesize};" \
-                               "echo Loaded environment from ${uenv};" \
-                               "if test -n ${dtb}; then " \
-                                       "setenv fdt_file ${dtb};" \
-                                       "echo Using: dtb=${fdt_file} ...;" \
-                               "fi;" \
-                               "echo Checking for uname_r in ${uenv}...;" \
-                               "if test -n ${uname_r}; then " \
-                                       "echo Running uname_boot ...;" \
-                                       "run uname_boot;" \
-                               "fi;" \
-                       "fi;" \
-               "fi;\0" \
-       "uname_boot="\
-               "setenv bootdir /boot; " \
-               "setenv bootfile vmlinuz-${uname_r}; " \
-               "setenv ccatfile /boot/ccat.rbf; " \
-               "echo loading CCAT firmware from ${ccatfile}; " \
-               "load mmc ${bootpart} ${loadaddr} ${ccatfile}; " \
-               "fpga load 0 ${loadaddr} ${filesize}; " \
-               "if test -e mmc ${bootpart} ${bootdir}/${bootfile}; then " \
-                       "echo loading ${bootdir}/${bootfile} ...; " \
-                       "run loadimage;" \
-                       "setenv fdt_path /boot/dtbs/${uname_r}/${fdt_file}; " \
-                       "if test -e mmc ${bootpart} ${fdt_path}; then " \
-                               "run loadfdt;" \
-                       "else " \
-                               "echo; echo unable to find ${fdt_file} ...;" \
-                               "echo booting legacy ...;"\
-                               "run mmcargs;" \
-                               "echo debug: [${bootargs}] ... ;" \
-                               "echo debug: [bootz ${loadaddr}] ... ;" \
-                               "bootz ${loadaddr}; " \
-                       "fi;" \
-                       "run mmcargs;" \
-                       "echo debug: [${bootargs}] ... ;" \
-                       "echo debug: [bootz ${loadaddr} - ${fdt_addr_r}];" \
-                       "bootz ${loadaddr} - ${fdt_addr_r}; " \
-               "else " \
-                       "echo loading from dhcp ...; " \
-                       "run loadpxe; " \
-               "fi;\0"
-
-#define CONFIG_BOOTCOMMAND \
-       "run mmcboot;"
+       "stdin=serial\0" \
+       "stdout=serial,vidconsole\0" \
+       "stderr=serial,vidconsole\0" \
+       "fdtfile=imx53-cx9020.dtb\0" \
+       BOOTENV
 
 #define CONFIG_ARP_TIMEOUT     200UL
 
index f7667eca7c09c46600c7a572e0153bc56ec52a9e..9361507a55b8262da3acc099865dfc4042e7ea95 100644 (file)
        "lvds=ldb\0" \
        "setargs=setenv bootargs ${lvds} jtag=on mem=2G " \
                "vt.global_cursor_default=0 bootcause=${bootcause} ${quiet} " \
-               "console=${console} ${rtc_status}\0" \
+               "console=${console}\0" \
        "bootargs_emmc=setenv bootargs root=/dev/${rootdev}${partnum} ro " \
                "rootwait ${bootargs}\0" \
        "doquiet=if ext2load ${dev} ${devnum}:5 0x7000A000 /boot/console; " \
index c8d91dcfa05d6085cbb22c87ff584a88234bcbbd..6d47e28fc72b43dec058d4328be9ca56a6f1414f 100644 (file)
 #define CONFIG_IMX_VIDEO_SKIP
 
 /* USB */
-#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
 #define CONFIG_MXC_USB_PORTSC          (PORT_PTS_UTMI | PORT_PTS_PTW)
-#define CONFIG_MXC_USB_FLAGS           0
-#define CONFIG_USB_MAX_CONTROLLER_COUNT        2
 
 /* Command definition */
 
        BOOTENV
 
 #define BOOT_TARGET_DEVICES(func) \
-       func(MMC, mmc, 0) \
+       func(MMC, mmc, 1) \
+       func(MMC, mmc, 2) \
        func(SATA, sata, 0) \
        func(USB, usb, 0) \
        func(PXE, pxe, na) \
index 745507571ddef212257eb2d162b51408e5ec026b..b1726b1d88ca8a7fa3d77b1f7f99cbc16a2c2343 100644 (file)
 /* Size of malloc() pool */
 #define CONFIG_SYS_MALLOC_LEN          (32 * SZ_1M)
 
-/* Network */
-#define CONFIG_FEC_MXC
-#define CONFIG_FEC_XCV_TYPE             RGMII
-#define CONFIG_ETHPRIME                 "FEC"
-#define CONFIG_FEC_MXC_PHYADDR          0
-
-#define CONFIG_PHY_BROADCOM
-/* ENET1 */
-#define IMX_FEC_BASE                   ENET_IPS_BASE_ADDR
-
 /* MMC Config*/
 #define CONFIG_SYS_FSL_ESDHC_ADDR       0
 
        "image=zImage\0" \
        "console=ttymxc0\0" \
        "fdt_high=0xffffffff\0" \
+       "finduuid=part uuid mmc 0:1 uuid\0" \
        "initrd_high=0xffffffff\0" \
-       "fdt_file=imx7d-sdb.dtb\0" \
+       "fdtfile=imx7d-sdb.dtb\0" \
        "fdt_addr=0x83000000\0" \
-       "boot_fdt=try\0" \
-       "ip_dyn=yes\0" \
+       "fdt_addr_r=0x83000000\0" \
+       "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \
+       "pxefile_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \
+       "ramdisk_addr_r=0x83000000\0" \
+       "ramdiskaddr=0x83000000\0" \
+       "scriptaddr=" __stringify(CONFIG_LOADADDR) "\0" \
        "videomode=video=ctfb:x:480,y:272,depth:24,pclk:108695,le:8,ri:4,up:2,lo:4,hs:41,vs:10,sync:0,vmode:0\0" \
-       "mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \
-       "mmcpart=" __stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \
-       "mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \
-       "mmcautodetect=yes\0" \
-       "mmcargs=setenv bootargs console=${console},${baudrate} " \
-               "root=${mmcroot}\0" \
-       "loadbootscript=" \
-               "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
-       "bootscript=echo Running bootscript from mmc ...; " \
-               "source\0" \
-       "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
-       "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
-       "mmcboot=echo Booting from mmc ...; " \
-               "run mmcargs; " \
-               "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
-                       "if run loadfdt; then " \
-                               "bootz ${loadaddr} - ${fdt_addr}; " \
-                       "else " \
-                               "if test ${boot_fdt} = try; then " \
-                                       "bootz; " \
-                               "else " \
-                                       "echo WARN: Cannot load the DT; " \
-                               "fi; " \
-                       "fi; " \
-               "else " \
-                       "bootz; " \
-               "fi;\0" \
-       "netargs=setenv bootargs console=${console},${baudrate} " \
-               "root=/dev/nfs " \
-       "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
-               "netboot=echo Booting from net ...; " \
-               "run netargs; " \
-               "if test ${ip_dyn} = yes; then " \
-                       "setenv get_cmd dhcp; " \
-               "else " \
-                       "setenv get_cmd tftp; " \
-               "fi; " \
-               "${get_cmd} ${image}; " \
-               "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
-                       "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
-                               "bootz ${loadaddr} - ${fdt_addr}; " \
-                       "else " \
-                               "if test ${boot_fdt} = try; then " \
-                                       "bootz; " \
-                               "else " \
-                                       "echo WARN: Cannot load the DT; " \
-                               "fi; " \
-                       "fi; " \
-               "else " \
-                       "bootz; " \
-               "fi;\0"
-
-#define CONFIG_BOOTCOMMAND \
-          "mmc dev ${mmcdev};" \
-          "mmc dev ${mmcdev}; if mmc rescan; then " \
-                  "if run loadbootscript; then " \
-                          "run bootscript; " \
-                  "else " \
-                          "if run loadimage; then " \
-                                  "run mmcboot; " \
-                          "else run netboot; " \
-                          "fi; " \
-                  "fi; " \
-          "else run netboot; fi"
+       BOOTENV
+
+#define BOOT_TARGET_DEVICES(func) \
+       func(MMC, mmc, 0) \
+       func(DHCP, dhcp, na) \
+       func(PXE, pxe, na)
+
+#include <config_distro_bootcmd.h>
 
 #define CONFIG_SYS_MEMTEST_START       0x80000000
 #define CONFIG_SYS_MEMTEST_END         (CONFIG_SYS_MEMTEST_START + 0x20000000)
 
 #define CONFIG_SYS_MMC_ENV_DEV         0   /* USDHC1 */
 #define CONFIG_SYS_MMC_ENV_PART                0       /* user area */
-#define CONFIG_MMCROOT                 "/dev/mmcblk0p2"  /* USDHC1 */
 
 /* USB Configs */
 #define CONFIG_MXC_USB_PORTSC  (PORT_PTS_UTMI | PORT_PTS_PTW)
diff --git a/include/configs/mx7ulp_com.h b/include/configs/mx7ulp_com.h
new file mode 100644 (file)
index 0000000..bccfea8
--- /dev/null
@@ -0,0 +1,103 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright (C) 2016 Freescale Semiconductor, Inc.
+ *
+ * Configuration settings for the Embedded Artists i.MX7ULP COM board.
+ */
+
+#ifndef __MX7ULP_COM_CONFIG_H
+#define __MX7ULP_COM_CONFIG_H
+
+#include <linux/sizes.h>
+#include <asm/arch/imx-regs.h>
+
+#define CONFIG_BOARD_POSTCLK_INIT
+#define CONFIG_SYS_BOOTM_LEN           0x1000000
+
+#define SRC_BASE_ADDR                  CMC1_RBASE
+#define IRAM_BASE_ADDR                 OCRAM_0_BASE
+#define IOMUXC_BASE_ADDR               IOMUXC1_RBASE
+
+/*
+ * Detect overlap between U-Boot image and environment area in build-time
+ *
+ * CONFIG_BOARD_SIZE_LIMIT = CONFIG_ENV_OFFSET - u-boot-dtb.imx offset
+ * CONFIG_BOARD_SIZE_LIMIT = 768k - 1k = 767k = 785408
+ *
+ * Currently CONFIG_BOARD_SIZE_LIMIT does not handle expressions, so
+ * write the direct value here
+ */
+#define CONFIG_BOARD_SIZE_LIMIT                785408
+#define CONFIG_SYS_MMC_ENV_DEV         0
+#define CONFIG_MMCROOT                 "/dev/mmcblk0p2"
+#define CONFIG_SYS_MMC_IMG_LOAD_PART   1
+
+/* Using ULP WDOG for reset */
+#define WDOG_BASE_ADDR                 WDG1_RBASE
+
+#define CONFIG_SYS_HZ_CLOCK            1000000 /* Fixed at 1MHz from TSTMR */
+
+#define CONFIG_INITRD_TAG
+#define CONFIG_CMDLINE_TAG
+#define CONFIG_SETUP_MEMORY_TAGS
+
+/* Size of malloc() pool */
+#define CONFIG_SYS_MALLOC_LEN          (8 * SZ_1M)
+
+/* UART */
+#define LPUART_BASE                    LPUART4_RBASE
+
+/* allow to overwrite serial and ethaddr */
+#define CONFIG_ENV_OVERWRITE
+
+/* Physical Memory Map */
+
+#define PHYS_SDRAM                     0x60000000
+#define CONFIG_SYS_MEMTEST_START       PHYS_SDRAM
+#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM
+
+#define CONFIG_LOADADDR                        0x60800000
+
+#define CONFIG_SYS_MEMTEST_END         (CONFIG_SYS_MEMTEST_START + SZ_512M)
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       "image=zImage\0" \
+       "console=ttyLP0\0" \
+       "fdt_high=0xffffffff\0" \
+       "initrd_high=0xffffffff\0" \
+       "fdt_file=imx7ulp-com.dtb\0" \
+       "fdt_addr=0x63000000\0" \
+       "mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \
+       "mmcpart=" __stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \
+       "mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \
+       "mmcargs=setenv bootargs console=${console},${baudrate} " \
+               "root=${mmcroot}\0" \
+       "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
+       "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
+       "mmcboot=echo Booting from mmc ...; " \
+               "run mmcargs; " \
+               "if run loadfdt; then " \
+                       "bootz ${loadaddr} - ${fdt_addr}; " \
+               "fi;\0" \
+
+#define CONFIG_BOOTCOMMAND \
+       "if run loadimage; then " \
+               "run mmcboot; " \
+       "fi; " \
+
+#define CONFIG_SYS_LOAD_ADDR           CONFIG_LOADADDR
+
+#define CONFIG_SYS_INIT_RAM_ADDR       IRAM_BASE_ADDR
+#define CONFIG_SYS_INIT_RAM_SIZE       SZ_256K
+
+#define CONFIG_SYS_INIT_SP_OFFSET \
+       (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
+#define CONFIG_SYS_INIT_SP_ADDR \
+       (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
+
+#if !CONFIG_IS_ENABLED(SYS_DCACHE_OFF)
+#define CONFIG_CMD_CACHE
+#endif
+
+#define CONFIG_MXC_USB_PORTSC          (PORT_PTS_UTMI | PORT_PTS_PTW)
+#endif /* __CONFIG_H */
diff --git a/include/configs/xea.h b/include/configs/xea.h
new file mode 100644 (file)
index 0000000..6510956
--- /dev/null
@@ -0,0 +1,196 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright (C) 2019 DENX Software Engineering
+ * Lukasz Majewski, DENX Software Engineering, lukma@denx.de
+ *
+ * Copyright (C) 2018 DENX Software Engineering
+ * MÃ¥ns RullgÃ¥rd, DENX Software Engineering, mans@mansr.com
+ *
+ * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
+ * on behalf of DENX Software Engineering GmbH
+ */
+#ifndef __CONFIGS_XEA_H__
+#define __CONFIGS_XEA_H__
+
+#include <linux/sizes.h>
+
+#define CONFIG_TIMESTAMP               /* Print image info with timestamp */
+
+/* SPL */
+#define CONFIG_SPL_STACK               0x20000
+
+#define CONFIG_SYS_SPL_ARGS_ADDR       0x44000000
+
+#define CONFIG_SYS_SPI_KERNEL_OFFS     SZ_1M
+#define CONFIG_SYS_SPI_ARGS_OFFS       SZ_512K
+#define CONFIG_SYS_SPI_ARGS_SIZE       SZ_32K
+
+#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR  (SZ_512K / 0x200)
+#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS (SZ_32K / 0x200)
+#define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR        (SZ_1M / 0x200)
+
+#ifndef CONFIG_SPL_BUILD
+#define CONFIG_SPI_FLASH_MTD
+#endif
+
+/* Memory configuration */
+#define PHYS_SDRAM_1                   0x40000000      /* Base address */
+#define PHYS_SDRAM_1_SIZE              0x10000000      /* Max 256 MB RAM */
+#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
+
+/* Environment */
+#define CONFIG_ENV_OVERWRITE
+
+/* Booting Linux */
+#define CONFIG_BOOTFILE                "uImage"
+#define CONFIG_BOOTARGS                "console=ttyAMA0,115200n8 "
+#define CONFIG_BOOTCOMMAND     "run ${bootpri} ; run ${bootsec}"
+#define CONFIG_LOADADDR                0x42000000
+#define CONFIG_SYS_LOAD_ADDR   CONFIG_LOADADDR
+
+/* Extra Environment */
+#define CONFIG_PREBOOT         "run prebootcmd"
+#define CONFIG_HOSTNAME                "xea"
+
+#define CONFIG_EXTRA_ENV_SETTINGS                                      \
+       "bootmode=update\0"                                             \
+       "bootpri=mmc_mmc\0"                                             \
+       "bootsec=sf_swu\0"                                              \
+       "consdev=ttyAMA0\0"                                             \
+       "baudrate=115200\0"                                             \
+       "dtbaddr=0x44000000\0"                                          \
+       "dtbfile=imx28-xea.dtb\0"                                       \
+       "rootdev=/dev/mmcblk0p2\0"                                      \
+       "netdev=eth0\0"                                                 \
+       "rdaddr=0x43000000\0"                                           \
+       "swufile=swupdate.img\0"                                        \
+       "sf_kernel_offset=0x100000\0"                                   \
+       "sf_kernel_size=0x400000\0"                                     \
+       "sf_swu_offset=0x500000\0"                                      \
+       "sf_swu_size=0x800000\0"                                        \
+       "rootpath=/opt/eldk-5.5/armv5te/rootfs-qte-sdk\0"               \
+       "do_update_mmc="                                                \
+               "if mmc rescan ; then "                                 \
+               "mmc dev 0 ${update_mmc_part} ; "                       \
+               "if dhcp ${hostname}/${update_filename} ; then "        \
+               "setexpr fw_sz ${filesize} / 0x200 ; "  /* SD block size */ \
+               "setexpr fw_sz ${fw_sz} + 1 ; "                         \
+               "mmc write ${loadaddr} ${update_offset} ${fw_sz} ; "    \
+               "fi ; "                                                 \
+               "fi\0"                                                  \
+       "do_update_sf="                                                 \
+               "if sf probe ; then "                                   \
+               "if dhcp ${hostname}/${update_filename} ; then "        \
+               "sf erase ${update_offset} +${filesize} ; "             \
+               "sf write ${loadaddr} ${update_offset} ${filesize} ; "  \
+               "fi ; "                                                 \
+               "fi\0"                                                  \
+       "update_spl_filename=u-boot.sb\0"                               \
+       "update_spl="                                                   \
+               "setenv update_filename ${update_spl_filename} ; "      \
+               "setenv update_offset 0 ; "                             \
+               "run do_update_sf\0"                                    \
+       "update_uboot_filename=u-boot.img\0"                            \
+       "update_uboot="                                                 \
+               "setenv update_filename ${update_uboot_filename} ; "    \
+               "setenv update_offset 0x10000 ; "                       \
+               "run do_update_sf ; "                                   \
+               "setenv update_mmc_part 1 ; "                           \
+               "setenv update_offset 0 ; "                             \
+               "run do_update_mmc\0"                                   \
+       "update_kernel_filename=uImage\0"                               \
+       "update_kernel="                                                \
+               "setenv update_mmc_part 1 ; "                           \
+               "setenv update_filename ${update_kernel_filename} ; "   \
+               "setenv update_offset 0x800 ; "                         \
+               "run do_update_mmc ; "                                  \
+               "setenv update_filename ${dtbfile} ; "                  \
+               "setenv update_offset 0x400 ; "                         \
+               "run do_update_mmc\0"                                   \
+       "update_sfkernel="                                              \
+               "setenv update_filename fitImage ; "                    \
+               "setenv update_offset ${sf_kernel_offset} ; "           \
+               "run do_update_sf\0"                                    \
+       "update_swu="                                                   \
+               "setenv update_filename ${swufile} ; "                  \
+               "setenv update_offset ${sf_swu_offset} ; "              \
+               "run do_update_sf\0"                                    \
+       "addcons="                                                      \
+               "setenv bootargs ${bootargs} "                          \
+               "console=${consdev},${baudrate}\0"                      \
+       "addip="                                                        \
+               "setenv bootargs ${bootargs} "                          \
+               "ip=${ipaddr}:${serverip}:${gatewayip}:"                \
+                       "${netmask}:${hostname}:${netdev}:off\0"        \
+       "addmisc="                                                      \
+               "setenv bootargs ${bootargs} ${miscargs}\0"             \
+       "addargs=run addcons addmisc\0"                                 \
+       "mmcload="                                                      \
+               "mmc rescan ; "                                         \
+               "mmc dev 0 1 ; "                                        \
+               "mmc read ${loadaddr} 0x800 0x2000 ; "                  \
+               "mmc read ${dtbaddr} 0x400 0x80\0"                      \
+       "netload="                                                      \
+               "dhcp ${loadaddr} ${hostname}/${bootfile} ; "           \
+               "tftp ${dtbaddr} ${hostname}/${dtbfile}\0"              \
+       "sfload="                                                       \
+               "sf probe ; "                                           \
+               "sf read ${loadaddr} ${sf_kernel_offset} ${sf_kernel_size}\0" \
+       "usbload="                                                      \
+               "usb start ; "                                          \
+               "load usb 0:1 ${loadaddr} ${bootfile}\0"                \
+       "miscargs=panic=1\0"                                            \
+       "mmcargs=setenv bootargs root=${rootdev} rw rootwait\0"         \
+       "nfsargs="                                                      \
+               "setenv bootargs root=/dev/nfs rw "                     \
+                       "nfsroot=${serverip}:${rootpath},v3,tcp\0"      \
+       "mmc_mmc="                                                      \
+               "if run mmcload mmcargs addargs ; then "                \
+               "bootm ${loadaddr} - ${dtbaddr} ; "                     \
+               "fi\0"                                                  \
+       "mmc_nfs="                                                      \
+               "if run mmcload nfsargs addip addargs ; then "          \
+               "bootm ${loadaddr} - ${dtbaddr} ; "                     \
+               "fi\0"                                                  \
+       "sf_mmc="                                                       \
+               "if run sfload mmcargs addargs ; then "                 \
+               "bootm ${loadaddr} - ${dtbaddr} ; "                     \
+               "fi\0"                                                  \
+       "sf_swu="                                                       \
+               "if run sfload ; then "                                 \
+               "sf read ${rdaddr} ${sf_swu_offset} ${sf_swu_size} ; "  \
+               "setenv bootargs root=/dev/ram0 rw ; "                  \
+               "run addargs ; "                                        \
+               "bootm ${loadaddr} ${rdaddr} ; "                \
+               "fi\0"                                                  \
+       "net_mmc="                                                      \
+               "if run netload mmcargs addargs ; then "                \
+               "bootm ${loadaddr} - ${dtbaddr} ; "                     \
+               "fi\0"                                                  \
+       "net_nfs="                                                      \
+               "if run netload nfsargs addip addargs ; then "          \
+               "bootm ${loadaddr} - ${dtbaddr} ; "                     \
+               "fi\0"                                                  \
+       "prebootcmd="                                                   \
+               "if test \"${envsaved}\" != y ; then ; "                \
+               "setenv envsaved y ; "                                  \
+               "saveenv ; "                                            \
+               "fi ; "                                                 \
+               "if test \"${bootmode}\" = normal ; then "              \
+               "setenv bootdelay 0 ; "                                 \
+               "setenv bootpri mmc_mmc ; "                             \
+               "elif test \"${bootmode}\" = devel ; then "             \
+               "setenv bootdelay 3 ; "                                 \
+               "setenv bootpri net_mmc ; "                             \
+               "else "                                                 \
+               "if test \"${bootmode}\" != update ; then "             \
+               "echo Warning: unknown bootmode \"${bootmode}\" ; "     \
+               "fi ; "                                                 \
+               "setenv bootdelay 1 ; "                                 \
+               "setenv bootpri sf_swu ; "                              \
+               "fi\0"
+
+/* The rest of the configuration is shared */
+#include <configs/mxs.h>
+
+#endif /* __CONFIGS_XEA_H__ */
diff --git a/include/dt-bindings/sound/fsl-imx-audmux.h b/include/dt-bindings/sound/fsl-imx-audmux.h
new file mode 100644 (file)
index 0000000..15f138b
--- /dev/null
@@ -0,0 +1,64 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __DT_FSL_IMX_AUDMUX_H
+#define __DT_FSL_IMX_AUDMUX_H
+
+#define MX27_AUDMUX_HPCR1_SSI0         0
+#define MX27_AUDMUX_HPCR2_SSI1         1
+#define MX27_AUDMUX_HPCR3_SSI_PINS_4   2
+#define MX27_AUDMUX_PPCR1_SSI_PINS_1   3
+#define MX27_AUDMUX_PPCR2_SSI_PINS_2   4
+#define MX27_AUDMUX_PPCR3_SSI_PINS_3   5
+
+#define MX31_AUDMUX_PORT1_SSI0         0
+#define MX31_AUDMUX_PORT2_SSI1         1
+#define MX31_AUDMUX_PORT3_SSI_PINS_3   2
+#define MX31_AUDMUX_PORT4_SSI_PINS_4   3
+#define MX31_AUDMUX_PORT5_SSI_PINS_5   4
+#define MX31_AUDMUX_PORT6_SSI_PINS_6   5
+#define MX31_AUDMUX_PORT7_SSI_PINS_7   6
+
+#define MX51_AUDMUX_PORT1_SSI0         0
+#define MX51_AUDMUX_PORT2_SSI1         1
+#define MX51_AUDMUX_PORT3              2
+#define MX51_AUDMUX_PORT4              3
+#define MX51_AUDMUX_PORT5              4
+#define MX51_AUDMUX_PORT6              5
+#define MX51_AUDMUX_PORT7              6
+
+/*
+ * TFCSEL/RFCSEL (i.MX27) or TFSEL/TCSEL/RFSEL/RCSEL (i.MX31/51/53/6Q)
+ * can be sourced from Rx/Tx.
+ */
+#define IMX_AUDMUX_RXFS                        0x8
+#define IMX_AUDMUX_RXCLK               0x8
+
+/* Register definitions for the i.MX21/27 Digital Audio Multiplexer */
+#define IMX_AUDMUX_V1_PCR_INMMASK(x)   ((x) & 0xff)
+#define IMX_AUDMUX_V1_PCR_INMEN                (1 << 8)
+#define IMX_AUDMUX_V1_PCR_TXRXEN       (1 << 10)
+#define IMX_AUDMUX_V1_PCR_SYN          (1 << 12)
+#define IMX_AUDMUX_V1_PCR_RXDSEL(x)    (((x) & 0x7) << 13)
+#define IMX_AUDMUX_V1_PCR_RFCSEL(x)    (((x) & 0xf) << 20)
+#define IMX_AUDMUX_V1_PCR_RCLKDIR      (1 << 24)
+#define IMX_AUDMUX_V1_PCR_RFSDIR       (1 << 25)
+#define IMX_AUDMUX_V1_PCR_TFCSEL(x)    (((x) & 0xf) << 26)
+#define IMX_AUDMUX_V1_PCR_TCLKDIR      (1 << 30)
+#define IMX_AUDMUX_V1_PCR_TFSDIR       (1 << 31)
+
+/* Register definitions for the i.MX25/31/35/51 Digital Audio Multiplexer */
+#define IMX_AUDMUX_V2_PTCR_TFSDIR      (1 << 31)
+#define IMX_AUDMUX_V2_PTCR_TFSEL(x)    (((x) & 0xf) << 27)
+#define IMX_AUDMUX_V2_PTCR_TCLKDIR     (1 << 26)
+#define IMX_AUDMUX_V2_PTCR_TCSEL(x)    (((x) & 0xf) << 22)
+#define IMX_AUDMUX_V2_PTCR_RFSDIR      (1 << 21)
+#define IMX_AUDMUX_V2_PTCR_RFSEL(x)    (((x) & 0xf) << 17)
+#define IMX_AUDMUX_V2_PTCR_RCLKDIR     (1 << 16)
+#define IMX_AUDMUX_V2_PTCR_RCSEL(x)    (((x) & 0xf) << 12)
+#define IMX_AUDMUX_V2_PTCR_SYN         (1 << 11)
+
+#define IMX_AUDMUX_V2_PDCR_RXDSEL(x)   (((x) & 0x7) << 13)
+#define IMX_AUDMUX_V2_PDCR_TXRXEN      (1 << 12)
+#define IMX_AUDMUX_V2_PDCR_MODE(x)     (((x) & 0x3) << 8)
+#define IMX_AUDMUX_V2_PDCR_INMMASK(x)  ((x) & 0xff)
+
+#endif /* __DT_FSL_IMX_AUDMUX_H */
index 594e6b726df1785e13f82f21a62b43dd7a0535bd..9f5d1738201169721f232107e001d2acfc4f2186 100644 (file)
@@ -649,7 +649,6 @@ CONFIG_GLOBAL_DATA_NOT_REG10
 CONFIG_GLOBAL_TIMER
 CONFIG_GMII
 CONFIG_GPCNTRL
-CONFIG_GPIO_ENABLE_SPI_FLASH
 CONFIG_GPIO_LED_INVERTED_TABLE
 CONFIG_GPIO_LED_STUBS
 CONFIG_GREEN_LED
@@ -1015,8 +1014,6 @@ CONFIG_LD9040
 CONFIG_LEGACY
 CONFIG_LEGACY_BOOTCMD_ENV
 CONFIG_LG4573
-CONFIG_LG4573_BUS
-CONFIG_LG4573_CS
 CONFIG_LINUX
 CONFIG_LINUX_RESET_VEC
 CONFIG_LITTLETON_LCD
index 603ba6e8f49dc6db428a16eae90f16932f2b6e87..4959f9c83539faecf200779104e3b0102fd94fe4 100755 (executable)
@@ -10,41 +10,35 @@ post_process=$2
 
 blobs=`awk '/^SIGNED_HDMI/ {print $2} /^LOADER/ {print $2} /^SECOND_LOADER/ {print $2} /^DDR_FW/ {print $2}' $file`
 for f in $blobs; do
-       tmp=$srctree/$f
-
        if [ $f = "spl/u-boot-spl-ddr.bin" ] || [ $f = "u-boot.itb" ]; then
                continue
        fi
 
        if [ -f $f ]; then
                continue
-       fi
-
-       if [ ! -f $tmp ]; then
+       else
                echo "WARNING '$tmp' not found, resulting binary is not-functional" >&2
                exit 1
        fi
-
-       sed -in "s;$f;$tmp;" $file
 done
 
 if [ $post_process = 1 ]; then
-       if [ -f $srctree/lpddr4_pmu_train_1d_imem.bin ]; then
-               objcopy -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 $srctree/lpddr4_pmu_train_1d_imem.bin lpddr4_pmu_train_1d_imem_pad.bin
-               objcopy -I binary -O binary --pad-to 0x4000 --gap-fill=0x0 $srctree/lpddr4_pmu_train_1d_dmem.bin lpddr4_pmu_train_1d_dmem_pad.bin
-               objcopy -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 $srctree/lpddr4_pmu_train_2d_imem.bin lpddr4_pmu_train_2d_imem_pad.bin
+       if [ -f lpddr4_pmu_train_1d_imem.bin ]; then
+               objcopy -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 lpddr4_pmu_train_1d_imem.bin lpddr4_pmu_train_1d_imem_pad.bin
+               objcopy -I binary -O binary --pad-to 0x4000 --gap-fill=0x0 lpddr4_pmu_train_1d_dmem.bin lpddr4_pmu_train_1d_dmem_pad.bin
+               objcopy -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 lpddr4_pmu_train_2d_imem.bin lpddr4_pmu_train_2d_imem_pad.bin
                cat lpddr4_pmu_train_1d_imem_pad.bin lpddr4_pmu_train_1d_dmem_pad.bin > lpddr4_pmu_train_1d_fw.bin
-               cat lpddr4_pmu_train_2d_imem_pad.bin $srctree/lpddr4_pmu_train_2d_dmem.bin > lpddr4_pmu_train_2d_fw.bin
+               cat lpddr4_pmu_train_2d_imem_pad.bin lpddr4_pmu_train_2d_dmem.bin > lpddr4_pmu_train_2d_fw.bin
                dd if=spl/u-boot-spl.bin of=spl/u-boot-spl-pad.bin bs=4 conv=sync
                cat spl/u-boot-spl-pad.bin lpddr4_pmu_train_1d_fw.bin lpddr4_pmu_train_2d_fw.bin > spl/u-boot-spl-ddr.bin
                rm -f lpddr4_pmu_train_1d_fw.bin lpddr4_pmu_train_2d_fw.bin lpddr4_pmu_train_1d_imem_pad.bin lpddr4_pmu_train_1d_dmem_pad.bin lpddr4_pmu_train_2d_imem_pad.bin spl/u-boot-spl-pad.bin
        fi
-       if [ -f $srctree/ddr4_imem_1d.bin ]; then
-               objcopy -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 $srctree/ddr4_imem_1d.bin ddr4_imem_1d_pad.bin
-               objcopy -I binary -O binary --pad-to 0x4000 --gap-fill=0x0 $srctree/ddr4_dmem_1d.bin ddr4_dmem_1d_pad.bin
-               objcopy -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 $srctree/ddr4_imem_2d.bin ddr4_imem_2d_pad.bin
+       if [ -f ddr4_imem_1d.bin ]; then
+               objcopy -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 ddr4_imem_1d.bin ddr4_imem_1d_pad.bin
+               objcopy -I binary -O binary --pad-to 0x4000 --gap-fill=0x0 ddr4_dmem_1d.bin ddr4_dmem_1d_pad.bin
+               objcopy -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 ddr4_imem_2d.bin ddr4_imem_2d_pad.bin
                cat ddr4_imem_1d_pad.bin ddr4_dmem_1d_pad.bin > ddr4_1d_fw.bin
-               cat ddr4_imem_2d_pad.bin $srctree/ddr4_dmem_2d.bin > ddr4_2d_fw.bin
+               cat ddr4_imem_2d_pad.bin ddr4_dmem_2d.bin > ddr4_2d_fw.bin
                dd if=spl/u-boot-spl.bin of=spl/u-boot-spl-pad.bin bs=4 conv=sync
                cat spl/u-boot-spl-pad.bin ddr4_1d_fw.bin ddr4_2d_fw.bin > spl/u-boot-spl-ddr.bin
                rm -f ddr4_1d_fw.bin ddr4_2d_fw.bin ddr4_imem_1d_pad.bin ddr4_dmem_1d_pad.bin ddr4_imem_2d_pad.bin spl/u-boot-spl-pad.bin