17f35bbb9SJacob Chen /* 27f35bbb9SJacob Chen * (C) Copyright 2016 Rockchip Electronics Co., Ltd 37f35bbb9SJacob Chen * 47f35bbb9SJacob Chen * SPDX-License-Identifier: GPL-2.0+ 57f35bbb9SJacob Chen */ 67f35bbb9SJacob Chen 77f35bbb9SJacob Chen #ifndef _ROCKCHIP_COMMON_H_ 87f35bbb9SJacob Chen #define _ROCKCHIP_COMMON_H_ 97f35bbb9SJacob Chen #include <linux/sizes.h> 107f35bbb9SJacob Chen 1191411fc1SSugar Zhang #ifndef CFG_CPUID_OFFSET 1291411fc1SSugar Zhang #define CFG_CPUID_OFFSET 0x7 1391411fc1SSugar Zhang #endif 1491411fc1SSugar Zhang 152d2f5f9aSKever Yang #define COUNTER_FREQUENCY 24000000 16a3f8c59fSZhihuan He 17a3f8c59fSZhihuan He #if CONFIG_IS_ENABLED(TINY_FRAMEWORK) && !defined(CONFIG_ARM64) 18a3f8c59fSZhihuan He #undef CONFIG_SYS_ARCH_TIMER 19a3f8c59fSZhihuan He #else 202d2f5f9aSKever Yang #define CONFIG_SYS_ARCH_TIMER 21a3f8c59fSZhihuan He #endif 22a3f8c59fSZhihuan He 232d2f5f9aSKever Yang #define CONFIG_SYS_HZ_CLOCK 24000000 242d2f5f9aSKever Yang 2560b9259cSKever Yang #define CONFIG_SYS_NS16550_MEM32 2660b9259cSKever Yang 27*d49fd092SXuhui Lin #if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_SPL_KERNEL_BOOT) 28c1554462SJoseph Chen #define CONFIG_NR_DRAM_BANKS 2 29c1554462SJoseph Chen #else 3092298dbcSJoseph Chen #define CONFIG_NR_DRAM_BANKS 12 31c1554462SJoseph Chen #endif 32839aff50SKever Yang 337f35bbb9SJacob Chen #ifndef CONFIG_SPL_BUILD 347f35bbb9SJacob Chen #include <config_distro_defaults.h> 357f35bbb9SJacob Chen 36eb01a124SCody Xie #ifdef CONFIG_CMD_RKNAND 37eb01a124SCody Xie #define BOOTENV_SHARED_RKNAND BOOTENV_SHARED_BLKDEV(rknand) 38eb01a124SCody Xie #define BOOTENV_DEV_RKNAND BOOTENV_DEV_BLKDEV 39eb01a124SCody Xie #define BOOTENV_DEV_NAME_RKNAND BOOTENV_DEV_NAME_BLKDEV 40eb01a124SCody Xie #else 41eb01a124SCody Xie #define BOOTENV_SHARED_RKNAND 42eb01a124SCody Xie #define BOOTENV_DEV_RKNAND \ 43eb01a124SCody Xie BOOT_TARGET_DEVICES_references_RKNAND_without_CONFIG_CMD_RKNAND 44eb01a124SCody Xie #define BOOTENV_DEV_NAME_RKNAND \ 45eb01a124SCody Xie BOOT_TARGET_DEVICES_references_RKNAND_without_CONFIG_CMD_RKNAND 46eb01a124SCody Xie #endif 47eb01a124SCody Xie 483f10ff45SJoseph Chen #ifdef CONFIG_CMD_MTD_BLK 493f10ff45SJoseph Chen #define BOOTENV_SHARED_MTD \ 503f10ff45SJoseph Chen "mtd_boot=" \ 513f10ff45SJoseph Chen "if mtd_blk dev ${devnum}; then " \ 523f10ff45SJoseph Chen "setenv devtype mtd; " \ 533f10ff45SJoseph Chen "run scan_dev_for_boot_part; " \ 543f10ff45SJoseph Chen "fi\0" 553f10ff45SJoseph Chen #define BOOTENV_DEV_MTD BOOTENV_DEV_BLKDEV 563f10ff45SJoseph Chen #define BOOTENV_DEV_NAME_MTD BOOTENV_DEV_NAME_BLKDEV 573f10ff45SJoseph Chen #else 583f10ff45SJoseph Chen #define BOOTENV_SHARED_MTD 593f10ff45SJoseph Chen #define BOOTENV_DEV_MTD \ 603f10ff45SJoseph Chen BOOT_TARGET_DEVICES_references_MTD_without_CONFIG_CMD_MTD_BLK 613f10ff45SJoseph Chen #define BOOTENV_DEV_NAME_MTD \ 623f10ff45SJoseph Chen BOOT_TARGET_DEVICES_references_MTD_without_CONFIG_CMD_MTD_BLK 633f10ff45SJoseph Chen #endif 643f10ff45SJoseph Chen 65d776bc4bSKever Yang /* First try to boot from SD (index 1), then eMMC (index 0) */ 66d2ba9884SKlaus Goger #if CONFIG_IS_ENABLED(CMD_MMC) 67d2ba9884SKlaus Goger #define BOOT_TARGET_MMC(func) \ 68d776bc4bSKever Yang func(MMC, mmc, 1) \ 69d776bc4bSKever Yang func(MMC, mmc, 0) 701e9d6c15SEddie Cai #else 71d2ba9884SKlaus Goger #define BOOT_TARGET_MMC(func) 721e9d6c15SEddie Cai #endif 737f35bbb9SJacob Chen 743f10ff45SJoseph Chen #if CONFIG_IS_ENABLED(CMD_MTD_BLK) 753f10ff45SJoseph Chen #define BOOT_TARGET_MTD(func) \ 763f10ff45SJoseph Chen func(MTD, mtd, 2) \ 773f10ff45SJoseph Chen func(MTD, mtd, 1) \ 783f10ff45SJoseph Chen func(MTD, mtd, 0) 793f10ff45SJoseph Chen #else 803f10ff45SJoseph Chen #define BOOT_TARGET_MTD(func) 813f10ff45SJoseph Chen #endif 823f10ff45SJoseph Chen 83eb01a124SCody Xie #if CONFIG_IS_ENABLED(CMD_RKNAND) 84eb01a124SCody Xie #define BOOT_TARGET_RKNAND(func) func(RKNAND, rknand, 0) 85eb01a124SCody Xie #else 86eb01a124SCody Xie #define BOOT_TARGET_RKNAND(func) 87eb01a124SCody Xie #endif 88eb01a124SCody Xie 89d2ba9884SKlaus Goger #if CONFIG_IS_ENABLED(CMD_USB) 90d2ba9884SKlaus Goger #define BOOT_TARGET_USB(func) func(USB, usb, 0) 91d2ba9884SKlaus Goger #else 92d2ba9884SKlaus Goger #define BOOT_TARGET_USB(func) 93d2ba9884SKlaus Goger #endif 94d2ba9884SKlaus Goger 95d2ba9884SKlaus Goger #if CONFIG_IS_ENABLED(CMD_PXE) 96d2ba9884SKlaus Goger #define BOOT_TARGET_PXE(func) func(PXE, pxe, na) 97d2ba9884SKlaus Goger #else 98d2ba9884SKlaus Goger #define BOOT_TARGET_PXE(func) 99d2ba9884SKlaus Goger #endif 100d2ba9884SKlaus Goger 101d2ba9884SKlaus Goger #if CONFIG_IS_ENABLED(CMD_DHCP) 102d2ba9884SKlaus Goger #define BOOT_TARGET_DHCP(func) func(DHCP, dhcp, na) 103d2ba9884SKlaus Goger #else 104d2ba9884SKlaus Goger #define BOOT_TARGET_DHCP(func) 105d2ba9884SKlaus Goger #endif 106d2ba9884SKlaus Goger 107d2ba9884SKlaus Goger #define BOOT_TARGET_DEVICES(func) \ 108d2ba9884SKlaus Goger BOOT_TARGET_MMC(func) \ 1093f10ff45SJoseph Chen BOOT_TARGET_MTD(func) \ 110eb01a124SCody Xie BOOT_TARGET_RKNAND(func) \ 111d2ba9884SKlaus Goger BOOT_TARGET_USB(func) \ 112d2ba9884SKlaus Goger BOOT_TARGET_PXE(func) \ 113d2ba9884SKlaus Goger BOOT_TARGET_DHCP(func) 114d2ba9884SKlaus Goger 11542ec247eSKever Yang #ifdef CONFIG_ARM64 11642ec247eSKever Yang #define ROOT_UUID "B921B045-1DF0-41C3-AF44-4C6F280D3FAE;\0" 11742ec247eSKever Yang #else 11842ec247eSKever Yang #define ROOT_UUID "69DAD710-2CE4-4E3C-B16C-21A1D49ABED3;\0" 11942ec247eSKever Yang #endif 1207f35bbb9SJacob Chen #define PARTS_DEFAULT \ 1217f35bbb9SJacob Chen "uuid_disk=${uuid_gpt_disk};" \ 1227f35bbb9SJacob Chen "name=loader1,start=32K,size=4000K,uuid=${uuid_gpt_loader1};" \ 12332040464SKever Yang "name=loader2,start=8MB,size=4MB,uuid=${uuid_gpt_loader2};" \ 12432040464SKever Yang "name=trust,size=4M,uuid=${uuid_gpt_atf};" \ 1256b388f0bSJacob Chen "name=boot,size=112M,bootable,uuid=${uuid_gpt_boot};" \ 12642ec247eSKever Yang "name=rootfs,size=-,uuid="ROOT_UUID 1277f35bbb9SJacob Chen 128b5381a6cSKever Yang #define PARTS_RKIMG \ 129b5381a6cSKever Yang "uuid_disk=${uuid_gpt_disk};" \ 130b5381a6cSKever Yang "name=uboot,start=8MB,size=4MB,uuid=${uuid_gpt_loader2};" \ 131b5381a6cSKever Yang "name=trust,size=4M,uuid=${uuid_gpt_atf};" \ 132b5381a6cSKever Yang "name=misc,size=4MB,uuid=${uuid_gpt_misc};" \ 133b5381a6cSKever Yang "name=resource,size=16MB,uuid=${uuid_gpt_resource};" \ 134b5381a6cSKever Yang "name=kernel,size=32M,uuid=${uuid_gpt_kernel};" \ 135b5381a6cSKever Yang "name=boot,size=32M,bootable,uuid=${uuid_gpt_boot};" \ 136b5381a6cSKever Yang "name=recovery,size=32M,uuid=${uuid_gpt_recovery};" \ 137b5381a6cSKever Yang "name=backup,size=112M,uuid=${uuid_gpt_backup};" \ 138b5381a6cSKever Yang "name=cache,size=512M,uuid=${uuid_gpt_cache};" \ 139b5381a6cSKever Yang "name=system,size=2048M,uuid=${uuid_gpt_system};" \ 140b5381a6cSKever Yang "name=metadata,size=16M,uuid=${uuid_gpt_metadata};" \ 141b5381a6cSKever Yang "name=vendor,size=32M,uuid=${uuid_gpt_vendor};" \ 142b5381a6cSKever Yang "name=oem,size=32M,uuid=${uuid_gpt_oem};" \ 143b5381a6cSKever Yang "name=frp,size=512K,uuid=${uuid_gpt_frp};" \ 144b5381a6cSKever Yang "name=security,size=2M,uuid=${uuid_gpt_security};" \ 145e574a937SKever Yang "name=userdata,size=-,uuid=${uuid_gpt_userdata};\0" 146b5381a6cSKever Yang 147299df30dSKever Yang #define RKIMG_DET_BOOTDEV \ 148299df30dSKever Yang "rkimg_bootdev=" \ 14994685712SJason Zhu "if mmc dev 1 && rkimgtest mmc 1; then " \ 15094685712SJason Zhu "setenv devtype mmc; setenv devnum 1; echo Boot from SDcard;" \ 151299df30dSKever Yang "elif mmc dev 0; then " \ 152299df30dSKever Yang "setenv devtype mmc; setenv devnum 0;" \ 1532432f0abSJason Zhu "elif mtd_blk dev 0; then " \ 154346e1f7dSJason Zhu "setenv devtype mtd; setenv devnum 0;" \ 1554569f424SJason Zhu "elif mtd_blk dev 1; then " \ 1564569f424SJason Zhu "setenv devtype mtd; setenv devnum 1;" \ 157e1c38c9fSJason Zhu "elif mtd_blk dev 2; then " \ 158e1c38c9fSJason Zhu "setenv devtype mtd; setenv devnum 2;" \ 159299df30dSKever Yang "elif rknand dev 0; then " \ 160299df30dSKever Yang "setenv devtype rknand; setenv devnum 0;" \ 161bc0b8cd4SDingqiang Lin "elif rksfc dev 0; then " \ 1623f360b79SDingqiang Lin "setenv devtype spinand; setenv devnum 0;" \ 1633f360b79SDingqiang Lin "elif rksfc dev 1; then " \ 1643f360b79SDingqiang Lin "setenv devtype spinor; setenv devnum 1;" \ 165f3f5db2eSJon Lin "else;" \ 1668b5ec0d8SJoseph Chen "setenv devtype ramdisk; setenv devnum 0;" \ 167299df30dSKever Yang "fi; \0" 168299df30dSKever Yang 1694ab50248SJoseph Chen #if defined(CONFIG_AVB_VBMETA_PUBLIC_KEY_VALIDATE) 170caed6b4fSJoseph Chen #define RKIMG_BOOTCOMMAND \ 1714ab50248SJoseph Chen "boot_android ${devtype} ${devnum};" 1720018e93eSJoseph Chen #elif defined(CONFIG_FIT_SIGNATURE) 1730018e93eSJoseph Chen #define RKIMG_BOOTCOMMAND \ 1740018e93eSJoseph Chen "boot_fit;" 175caed6b4fSJoseph Chen #else 1765059d297SKever Yang #define RKIMG_BOOTCOMMAND \ 177e0347805SKever Yang "boot_android ${devtype} ${devnum};" \ 1780018e93eSJoseph Chen "boot_fit;" \ 179390759edSKever Yang "bootrkp;" \ 180390759edSKever Yang "run distro_bootcmd;" 181caed6b4fSJoseph Chen #endif 1824ab50248SJoseph Chen 1834ab50248SJoseph Chen #endif /* CONFIG_SPL_BUILD */ 1847f35bbb9SJacob Chen 185f8e46897SSimon Glass #define CONFIG_DISPLAY_BOARDINFO_LATE 186a4de8b67SJoseph Chen #define CONFIG_SYS_AUTOLOAD "no" 187b022f01fSJoseph Chen #define CONFIG_SPL_LOAD_FIT_ADDRESS 0x2000000 188f8e46897SSimon Glass 189b48fff2cSJoseph Chen /* Why? There is D-Cache coherent on share memory between U-Boot and OP-TEE. */ 190b48fff2cSJoseph Chen #if defined(CONFIG_SYS_DCACHE_OFF) && defined(CONFIG_OPTEE_CLIENT) 191b48fff2cSJoseph Chen "ERROR: Please disable CONFIG_OPTEE_CLIENT when #define CONFIG_SYS_DCACHE_OFF !" 192b48fff2cSJoseph Chen #endif 193b48fff2cSJoseph Chen 1947f35bbb9SJacob Chen #endif /* _ROCKCHIP_COMMON_H_ */ 195