mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-06 21:03:21 +09:00
![Igor Opaniuk](/assets/img/avatar_default.png)
This adds initial minimal support for the Toradex Verdin iMX8M Mini Quad 2GB WB IT V1.0A module. They are now strapped to boot from eFuses which are factory fused to properly boot from their on-module eMMC. U-Boot supports booting from the on-module eMMC only, SDP support is disabled for now due to missing i.MX 8M Mini USB support. Functionality wise the following is known to be working: - eMMC, 8-bit and 4-bit MMC/SD card slots - Ethernet - GPIOs - I2C Boot sequence is: SPL ---> ATF (TF-A) ---> U-boot proper ATF, U-boot proper and u-boot.dtb images are packed into a FIT image, loaded by SPL. Boot: U-Boot SPL 2020.01-00187-gd411d164e5 (Jan 26 2020 - 04:47:26 +0100) Normal Boot Trying to boot from MMC1 NOTICE: Configuring TZASC380 NOTICE: RDC off NOTICE: BL31: v2.0(release):rel_imx_4.14.98_2.3.0-0-g09c5cc994-dirty NOTICE: BL31: Built : 01:11:41, Jan 25 2020 NOTICE: sip svc init U-Boot 2020.01-00187-gd411d164e5 (Jan 26 2020 - 04:47:26 +0100) CPU: Freescale i.MX8MMQ rev1.0 at 0 MHz Reset cause: POR DRAM: 2 GiB MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2 Loading Environment from MMC... OK In: serial Out: serial Err: serial Model: Toradex Verdin iMX8M Mini Quad 2GB Wi-Fi / BT IT V1.0A, Serial# 06535149 Net: eth0: ethernet@30be0000 Hit any key to stop autoboot: 0 Verdin iMX8MM # Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com> Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com> Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> Reviewed-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
129 lines
3.7 KiB
C
129 lines
3.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* Copyright 2020 Toradex
|
|
*/
|
|
|
|
#ifndef __VERDIN_IMX8MM_H
|
|
#define __VERDIN_IMX8MM_H
|
|
|
|
#include <asm/arch/imx-regs.h>
|
|
#include <linux/sizes.h>
|
|
|
|
#ifdef CONFIG_SECURE_BOOT
|
|
#define CONFIG_CSF_SIZE SZ_8K
|
|
#endif
|
|
|
|
#define CONFIG_SPL_MAX_SIZE (148 * 1024)
|
|
#define CONFIG_SYS_MONITOR_LEN SZ_512K
|
|
#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
|
|
#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300
|
|
#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1
|
|
#define CONFIG_SYS_UBOOT_BASE \
|
|
(QSPI0_AMBA_BASE + CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR * 512)
|
|
|
|
#ifdef CONFIG_SPL_BUILD
|
|
#define CONFIG_SPL_STACK 0x920000
|
|
#define CONFIG_SPL_BSS_START_ADDR 0x910000
|
|
#define CONFIG_SPL_BSS_MAX_SIZE SZ_8K /* 8 KB */
|
|
#define CONFIG_SYS_SPL_MALLOC_START 0x42200000
|
|
#define CONFIG_SYS_SPL_MALLOC_SIZE SZ_512K /* 512 KB */
|
|
|
|
/* malloc f used before GD_FLG_FULL_MALLOC_INIT set */
|
|
#define CONFIG_MALLOC_F_ADDR 0x930000
|
|
/* For RAW image gives a error info not panic */
|
|
#define CONFIG_SPL_ABORT_ON_RAW_IMAGE
|
|
#endif
|
|
|
|
#define MEM_LAYOUT_ENV_SETTINGS \
|
|
"fdt_addr_r=0x44000000\0" \
|
|
"kernel_addr_r=0x42000000\0" \
|
|
"ramdisk_addr_r=0x46400000\0" \
|
|
"scriptaddr=0x46000000\0"
|
|
|
|
#define CONFIG_LOADADDR 0x40480000
|
|
#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR
|
|
|
|
/* Enable Distro Boot */
|
|
#ifndef CONFIG_SPL_BUILD
|
|
#define BOOT_TARGET_DEVICES(func) \
|
|
func(MMC, mmc, 1) \
|
|
func(MMC, mmc, 0) \
|
|
func(DHCP, dhcp, na)
|
|
#include <config_distro_bootcmd.h>
|
|
#undef CONFIG_ISO_PARTITION
|
|
#else
|
|
#define BOOTENV
|
|
#endif
|
|
|
|
/* Initial environment variables */
|
|
#define CONFIG_EXTRA_ENV_SETTINGS \
|
|
BOOTENV \
|
|
MEM_LAYOUT_ENV_SETTINGS \
|
|
"bootcmd_mfg=fastboot 0\0" \
|
|
"console=ttymxc0\0" \
|
|
"fdt_addr=0x43000000\0" \
|
|
"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
|
|
"initrd_addr=0x43800000\0" \
|
|
"initrd_high=0xffffffffffffffff\0" \
|
|
"kernel_image=Image\0" \
|
|
"setup=setenv setupargs console=${console},${baudrate} " \
|
|
"console=tty1 consoleblank=0 earlycon\0" \
|
|
"update_uboot=askenv confirm Did you load flash.bin (y/N)?; " \
|
|
"if test \"$confirm\" = \"y\"; then " \
|
|
"setexpr blkcnt ${filesize} + 0x1ff && setexpr blkcnt " \
|
|
"${blkcnt} / 0x200; mmc dev 0 1; mmc write ${loadaddr} 0x2 " \
|
|
"${blkcnt}; fi\0"
|
|
|
|
#define CONFIG_SYS_INIT_RAM_ADDR 0x40000000
|
|
#define CONFIG_SYS_INIT_RAM_SIZE SZ_2M
|
|
#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_ENV_OVERWRITE
|
|
#if defined(CONFIG_ENV_IS_IN_MMC)
|
|
/* Environment in eMMC, before config block at the end of 1st "boot sector" */
|
|
#define CONFIG_SYS_MMC_ENV_DEV 0 /* USDHC1 eMMC */
|
|
#define CONFIG_SYS_MMC_ENV_PART 1
|
|
#endif
|
|
|
|
/* Size of malloc() pool */
|
|
#define CONFIG_SYS_MALLOC_LEN SZ_32M
|
|
#define CONFIG_SYS_SDRAM_BASE 0x40000000
|
|
|
|
/* SDRAM configuration */
|
|
#define PHYS_SDRAM 0x40000000
|
|
#define PHYS_SDRAM_SIZE SZ_2G /* 2GB DDR */
|
|
|
|
#define CONFIG_SYS_MEMTEST_START PHYS_SDRAM
|
|
#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START + \
|
|
(PHYS_SDRAM_SIZE >> 1))
|
|
|
|
/* UART */
|
|
#define CONFIG_MXC_UART_BASE UART1_BASE_ADDR
|
|
|
|
/* Monitor Command Prompt */
|
|
#define CONFIG_SYS_PROMPT_HUSH_PS2 "> "
|
|
#define CONFIG_SYS_CBSIZE SZ_2K
|
|
#define CONFIG_SYS_MAXARGS 64
|
|
#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
|
|
#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \
|
|
sizeof(CONFIG_SYS_PROMPT) + 16)
|
|
/* USDHC */
|
|
#define CONFIG_FSL_USDHC
|
|
#define CONFIG_SYS_FSL_USDHC_NUM 2
|
|
#define CONFIG_SYS_FSL_ESDHC_ADDR 0
|
|
#define CONFIG_SYS_MMC_IMG_LOAD_PART 1
|
|
#define CONFIG_SYS_I2C_SPEED 100000
|
|
|
|
/* ENET */
|
|
#define CONFIG_ETHPRIME "FEC"
|
|
#define CONFIG_FEC_XCV_TYPE RGMII
|
|
#define CONFIG_FEC_MXC_PHYADDR 7
|
|
#define FEC_QUIRK_ENET_MAC
|
|
#define IMX_FEC_BASE 0x30BE0000
|
|
|
|
#endif /*_VERDIN_IMX8MM_H */
|
|
|