1 /* 2 * (C) Copyright 2016 Rockchip Electronics Co., Ltd 3 * 4 * SPDX-License-Identifier: GPL-2.0+ 5 */ 6 7 #ifndef _ROCKCHIP_COMMON_H_ 8 #define _ROCKCHIP_COMMON_H_ 9 #include <linux/sizes.h> 10 11 #ifndef CFG_CPUID_OFFSET 12 #define CFG_CPUID_OFFSET 0x7 13 #endif 14 15 #define COUNTER_FREQUENCY 24000000 16 17 #if CONFIG_IS_ENABLED(TINY_FRAMEWORK) && !defined(CONFIG_ARM64) 18 #undef CONFIG_SYS_ARCH_TIMER 19 #else 20 #define CONFIG_SYS_ARCH_TIMER 21 #endif 22 23 #define CONFIG_SYS_HZ_CLOCK 24000000 24 25 #define CONFIG_SYS_NS16550_MEM32 26 27 #if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_SPL_KERNEL_BOOT) 28 #define CONFIG_NR_DRAM_BANKS 2 29 #else 30 #define CONFIG_NR_DRAM_BANKS 12 31 #endif 32 33 #ifndef CONFIG_SPL_BUILD 34 #include <config_distro_defaults.h> 35 36 #ifdef CONFIG_CMD_RKNAND 37 #define BOOTENV_SHARED_RKNAND BOOTENV_SHARED_BLKDEV(rknand) 38 #define BOOTENV_DEV_RKNAND BOOTENV_DEV_BLKDEV 39 #define BOOTENV_DEV_NAME_RKNAND BOOTENV_DEV_NAME_BLKDEV 40 #else 41 #define BOOTENV_SHARED_RKNAND 42 #define BOOTENV_DEV_RKNAND \ 43 BOOT_TARGET_DEVICES_references_RKNAND_without_CONFIG_CMD_RKNAND 44 #define BOOTENV_DEV_NAME_RKNAND \ 45 BOOT_TARGET_DEVICES_references_RKNAND_without_CONFIG_CMD_RKNAND 46 #endif 47 48 #ifdef CONFIG_CMD_MTD_BLK 49 #define BOOTENV_SHARED_MTD \ 50 "mtd_boot=" \ 51 "if mtd_blk dev ${devnum}; then " \ 52 "setenv devtype mtd; " \ 53 "run scan_dev_for_boot_part; " \ 54 "fi\0" 55 #define BOOTENV_DEV_MTD BOOTENV_DEV_BLKDEV 56 #define BOOTENV_DEV_NAME_MTD BOOTENV_DEV_NAME_BLKDEV 57 #else 58 #define BOOTENV_SHARED_MTD 59 #define BOOTENV_DEV_MTD \ 60 BOOT_TARGET_DEVICES_references_MTD_without_CONFIG_CMD_MTD_BLK 61 #define BOOTENV_DEV_NAME_MTD \ 62 BOOT_TARGET_DEVICES_references_MTD_without_CONFIG_CMD_MTD_BLK 63 #endif 64 65 /* First try to boot from SD (index 1), then eMMC (index 0) */ 66 #if CONFIG_IS_ENABLED(CMD_MMC) 67 #define BOOT_TARGET_MMC(func) \ 68 func(MMC, mmc, 1) \ 69 func(MMC, mmc, 0) 70 #else 71 #define BOOT_TARGET_MMC(func) 72 #endif 73 74 #if CONFIG_IS_ENABLED(CMD_MTD_BLK) 75 #define BOOT_TARGET_MTD(func) \ 76 func(MTD, mtd, 2) \ 77 func(MTD, mtd, 1) \ 78 func(MTD, mtd, 0) 79 #else 80 #define BOOT_TARGET_MTD(func) 81 #endif 82 83 #if CONFIG_IS_ENABLED(CMD_RKNAND) 84 #define BOOT_TARGET_RKNAND(func) func(RKNAND, rknand, 0) 85 #else 86 #define BOOT_TARGET_RKNAND(func) 87 #endif 88 89 #if CONFIG_IS_ENABLED(CMD_USB) 90 #define BOOT_TARGET_USB(func) func(USB, usb, 0) 91 #else 92 #define BOOT_TARGET_USB(func) 93 #endif 94 95 #if CONFIG_IS_ENABLED(CMD_PXE) 96 #define BOOT_TARGET_PXE(func) func(PXE, pxe, na) 97 #else 98 #define BOOT_TARGET_PXE(func) 99 #endif 100 101 #if CONFIG_IS_ENABLED(CMD_DHCP) 102 #define BOOT_TARGET_DHCP(func) func(DHCP, dhcp, na) 103 #else 104 #define BOOT_TARGET_DHCP(func) 105 #endif 106 107 #define BOOT_TARGET_DEVICES(func) \ 108 BOOT_TARGET_MMC(func) \ 109 BOOT_TARGET_MTD(func) \ 110 BOOT_TARGET_RKNAND(func) \ 111 BOOT_TARGET_USB(func) \ 112 BOOT_TARGET_PXE(func) \ 113 BOOT_TARGET_DHCP(func) 114 115 #ifdef CONFIG_ARM64 116 #define ROOT_UUID "B921B045-1DF0-41C3-AF44-4C6F280D3FAE;\0" 117 #else 118 #define ROOT_UUID "69DAD710-2CE4-4E3C-B16C-21A1D49ABED3;\0" 119 #endif 120 #define PARTS_DEFAULT \ 121 "uuid_disk=${uuid_gpt_disk};" \ 122 "name=loader1,start=32K,size=4000K,uuid=${uuid_gpt_loader1};" \ 123 "name=loader2,start=8MB,size=4MB,uuid=${uuid_gpt_loader2};" \ 124 "name=trust,size=4M,uuid=${uuid_gpt_atf};" \ 125 "name=boot,size=112M,bootable,uuid=${uuid_gpt_boot};" \ 126 "name=rootfs,size=-,uuid="ROOT_UUID 127 128 #define PARTS_RKIMG \ 129 "uuid_disk=${uuid_gpt_disk};" \ 130 "name=uboot,start=8MB,size=4MB,uuid=${uuid_gpt_loader2};" \ 131 "name=trust,size=4M,uuid=${uuid_gpt_atf};" \ 132 "name=misc,size=4MB,uuid=${uuid_gpt_misc};" \ 133 "name=resource,size=16MB,uuid=${uuid_gpt_resource};" \ 134 "name=kernel,size=32M,uuid=${uuid_gpt_kernel};" \ 135 "name=boot,size=32M,bootable,uuid=${uuid_gpt_boot};" \ 136 "name=recovery,size=32M,uuid=${uuid_gpt_recovery};" \ 137 "name=backup,size=112M,uuid=${uuid_gpt_backup};" \ 138 "name=cache,size=512M,uuid=${uuid_gpt_cache};" \ 139 "name=system,size=2048M,uuid=${uuid_gpt_system};" \ 140 "name=metadata,size=16M,uuid=${uuid_gpt_metadata};" \ 141 "name=vendor,size=32M,uuid=${uuid_gpt_vendor};" \ 142 "name=oem,size=32M,uuid=${uuid_gpt_oem};" \ 143 "name=frp,size=512K,uuid=${uuid_gpt_frp};" \ 144 "name=security,size=2M,uuid=${uuid_gpt_security};" \ 145 "name=userdata,size=-,uuid=${uuid_gpt_userdata};\0" 146 147 #define RKIMG_DET_BOOTDEV \ 148 "rkimg_bootdev=" \ 149 "if mmc dev 1 && rkimgtest mmc 1; then " \ 150 "setenv devtype mmc; setenv devnum 1; echo Boot from SDcard;" \ 151 "elif mmc dev 0; then " \ 152 "setenv devtype mmc; setenv devnum 0;" \ 153 "elif mtd_blk dev 0; then " \ 154 "setenv devtype mtd; setenv devnum 0;" \ 155 "elif mtd_blk dev 1; then " \ 156 "setenv devtype mtd; setenv devnum 1;" \ 157 "elif mtd_blk dev 2; then " \ 158 "setenv devtype mtd; setenv devnum 2;" \ 159 "elif rknand dev 0; then " \ 160 "setenv devtype rknand; setenv devnum 0;" \ 161 "elif rksfc dev 0; then " \ 162 "setenv devtype spinand; setenv devnum 0;" \ 163 "elif rksfc dev 1; then " \ 164 "setenv devtype spinor; setenv devnum 1;" \ 165 "else;" \ 166 "setenv devtype ramdisk; setenv devnum 0;" \ 167 "fi; \0" 168 169 #if defined(CONFIG_AVB_VBMETA_PUBLIC_KEY_VALIDATE) 170 #define RKIMG_BOOTCOMMAND \ 171 "boot_android ${devtype} ${devnum};" 172 #elif defined(CONFIG_FIT_SIGNATURE) 173 #define RKIMG_BOOTCOMMAND \ 174 "boot_fit;" 175 #else 176 #define RKIMG_BOOTCOMMAND \ 177 "boot_android ${devtype} ${devnum};" \ 178 "boot_fit;" \ 179 "bootrkp;" \ 180 "run distro_bootcmd;" 181 #endif 182 183 #endif /* CONFIG_SPL_BUILD */ 184 185 #define CONFIG_DISPLAY_BOARDINFO_LATE 186 #define CONFIG_SYS_AUTOLOAD "no" 187 #define CONFIG_SPL_LOAD_FIT_ADDRESS 0x2000000 188 189 /* Why? There is D-Cache coherent on share memory between U-Boot and OP-TEE. */ 190 #if defined(CONFIG_SYS_DCACHE_OFF) && defined(CONFIG_OPTEE_CLIENT) 191 "ERROR: Please disable CONFIG_OPTEE_CLIENT when #define CONFIG_SYS_DCACHE_OFF !" 192 #endif 193 194 #endif /* _ROCKCHIP_COMMON_H_ */ 195