1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * Copyright 2019 Toradex 4 */ 5 6 #ifndef __COLIBRI_IMX8X_H 7 #define __COLIBRI_IMX8X_H 8 9 #include <asm/arch/imx-regs.h> 10 #include <linux/sizes.h> 11 #include <linux/stringify.h> 12 13 #define CONFIG_REMAKE_ELF 14 15 #define CONFIG_DISPLAY_BOARDINFO_LATE 16 17 #define CONFIG_SYS_FSL_ESDHC_ADDR 0 18 #define USDHC1_BASE_ADDR 0x5b010000 19 #define USDHC2_BASE_ADDR 0x5b020000 20 #define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */ 21 22 #define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG 23 24 /* Networking */ 25 #define CONFIG_TFTP_TSIZE 26 27 #define CONFIG_IPADDR 192.168.10.2 28 #define CONFIG_NETMASK 255.255.255.0 29 #define CONFIG_SERVERIP 192.168.10.1 30 31 #define MEM_LAYOUT_ENV_SETTINGS \ 32 "fdt_addr_r=0x83000000\0" \ 33 "kernel_addr_r=0x81000000\0" \ 34 "ramdisk_addr_r=0x83800000\0" \ 35 "scriptaddr=0x80800000\0" 36 37 #ifdef CONFIG_AHAB_BOOT 38 #define AHAB_ENV "sec_boot=yes\0" 39 #else 40 #define AHAB_ENV "sec_boot=no\0" 41 #endif 42 43 /* Boot M4 */ 44 #define M4_BOOT_ENV \ 45 "m4_0_image=m4_0.bin\0" \ 46 "loadm4image_0=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} " \ 47 "${m4_0_image}\0" \ 48 "m4boot_0=run loadm4image_0; dcache flush; bootaux ${loadaddr} 0\0" \ 49 50 #define MFG_NAND_PARTITION "" 51 52 #define BOOT_TARGET_DEVICES(func) \ 53 func(MMC, mmc, 1) \ 54 func(MMC, mmc, 0) \ 55 func(DHCP, dhcp, na) 56 #include <config_distro_bootcmd.h> 57 #undef BOOTENV_RUN_NET_USB_START 58 #define BOOTENV_RUN_NET_USB_START "" 59 60 #define CONFIG_MFG_ENV_SETTINGS \ 61 "mfgtool_args=setenv bootargs ${consoleargs} " \ 62 "rdinit=/linuxrc g_mass_storage.stall=0 " \ 63 "g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F " \ 64 "g_mass_storage.idProduct=0x37FF " \ 65 "g_mass_storage.iSerialNumber=\"\" " MFG_NAND_PARTITION \ 66 "${vidargs} clk_ignore_unused\0" \ 67 "initrd_addr=0x83800000\0" \ 68 "initrd_high=0xffffffff\0" \ 69 "bootcmd_mfg=run mfgtool_args;booti ${loadaddr} ${initrd_addr} " \ 70 "${fdt_addr};\0" \ 71 72 /* Initial environment variables */ 73 #define CONFIG_EXTRA_ENV_SETTINGS \ 74 AHAB_ENV \ 75 BOOTENV \ 76 CONFIG_MFG_ENV_SETTINGS \ 77 M4_BOOT_ENV \ 78 MEM_LAYOUT_ENV_SETTINGS \ 79 "boot_file=Image\0" \ 80 "consoleargs=console=ttyLP3,${baudrate} earlycon\0" \ 81 "fdt_addr=0x83000000\0" \ 82 "fdt_file=fsl-imx8qxp-colibri-dsihdmi-eval-v3.dtb\0" \ 83 "fdtfile=fsl-imx8qxp-colibri-dsihdmi-eval-v3.dtb\0" \ 84 "finduuid=part uuid mmc ${mmcdev}:2 uuid\0" \ 85 "image=Image\0" \ 86 "initrd_addr=0x83800000\0" \ 87 "initrd_high=0xffffffffffffffff\0" \ 88 "mmcargs=setenv bootargs ${consoleargs} " \ 89 "root=PARTUUID=${uuid} rootwait " \ 90 "mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV) "\0" \ 91 "mmcpart=" __stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \ 92 "netargs=setenv bootargs ${consoleargs} " \ 93 "root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp " \ 94 "${vidargs}\0" \ 95 "nfsboot=run netargs; dhcp ${loadaddr} ${image}; tftp ${fdt_addr} " \ 96 "colibri-imx8x/${fdt_file}; booti ${loadaddr} - " \ 97 "${fdt_addr}\0" \ 98 "panel=NULL\0" \ 99 "script=boot.scr\0" \ 100 "update_uboot=askenv confirm Did you load u-boot-dtb.imx (y/N)?; " \ 101 "if test \"$confirm\" = \"y\"; then " \ 102 "setexpr blkcnt ${filesize} + 0x1ff && setexpr blkcnt " \ 103 "${blkcnt} / 0x200; mmc dev 0 1; mmc write ${loadaddr} 0x0 " \ 104 "${blkcnt}; fi\0" \ 105 "vidargs=video=imxdpufb5:off video=imxdpufb6:off video=imxdpufb7:off\0" 106 107 /* Link Definitions */ 108 #define CONFIG_LOADADDR 0x80280000 109 110 #define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR 111 112 #define CONFIG_SYS_INIT_SP_ADDR 0x80200000 113 114 /* Environment in eMMC, before config block at the end of 1st "boot sector" */ 115 116 #define CONFIG_SYS_MMC_IMG_LOAD_PART 1 117 118 /* On Colibri iMX8X USDHC1 is eMMC, USDHC2 is 4-bit SD */ 119 #define CONFIG_SYS_FSL_USDHC_NUM 2 120 121 #define CONFIG_SYS_BOOTM_LEN SZ_64M /* Increase max gunzip size */ 122 123 /* Size of malloc() pool */ 124 #define CONFIG_SYS_MALLOC_LEN ((CONFIG_ENV_SIZE + (32 * 1024)) * 1024) 125 126 #define CONFIG_SYS_SDRAM_BASE 0x80000000 127 #define PHYS_SDRAM_1 0x80000000 128 #define PHYS_SDRAM_2 0x880000000 129 #define PHYS_SDRAM_1_SIZE SZ_2G /* 2 GB */ 130 #define PHYS_SDRAM_2_SIZE 0x00000000 /* 0 GB */ 131 132 /* Monitor Command Prompt */ 133 #define CONFIG_SYS_CBSIZE SZ_2K 134 #define CONFIG_SYS_MAXARGS 64 135 #define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE 136 #define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \ 137 sizeof(CONFIG_SYS_PROMPT) + 16) 138 139 /* Generic Timer Definitions */ 140 #define COUNTER_FREQUENCY 8000000 /* 8MHz */ 141 142 #define BOOTAUX_RESERVED_MEM_BASE 0x88000000 143 #define BOOTAUX_RESERVED_MEM_SIZE SZ_128M /* Reserve from second 128MB */ 144 145 #endif /* __COLIBRI_IMX8X_H */ 146