1 /* 2 * (C) Copyright 2017 Heiko Stuebner <heiko@sntech.de> 3 * (C) Copyright 2017 Theobroma Systems Design und Consulting GmbH 4 * 5 * SPDX-License-Identifier: GPL-2.0 6 */ 7 8 #ifndef _ASM_ARCH_BOOTROM_H 9 #define _ASM_ARCH_BOOTROM_H 10 11 /* 12 * Saved Stack pointer address. 13 * Access might be needed in some special cases. 14 */ 15 extern u32 SAVE_SP_ADDR; 16 17 /** 18 * back_to_bootrom() - return to bootrom (for TPL/SPL), passing a 19 * result code 20 * 21 * Transfer control back to the Rockchip BROM, restoring necessary 22 * register context and passing a command/result code to the BROM 23 * to instruct its next actions (e.g. continue boot sequence, enter 24 * download mode, ...). 25 * 26 * This function does not return. 27 * 28 * @brom_cmd: indicates how the bootrom should continue the boot 29 * sequence (e.g. load the next stage) 30 */ 31 enum rockchip_bootrom_cmd { 32 /* 33 * These can not start at 0, as 0 has a special meaning 34 * for setjmp(). 35 */ 36 37 BROM_BOOT_NEXTSTAGE = 1, /* continue boot-sequence */ 38 BROM_BOOT_ENTER_DNL, /* have BROM enter download-mode */ 39 }; 40 41 void back_to_bootrom(enum rockchip_bootrom_cmd brom_cmd); 42 43 /** 44 * Boot-device identifiers as used by the BROM 45 */ 46 enum { 47 BROM_BOOTSOURCE_NAND = 1, 48 BROM_BOOTSOURCE_EMMC = 2, 49 BROM_BOOTSOURCE_SPINOR = 3, 50 BROM_BOOTSOURCE_SPINAND = 4, 51 BROM_BOOTSOURCE_SD = 5, 52 BROM_BOOTSOURCE_USB = 10, 53 BROM_LAST_BOOTSOURCE = BROM_BOOTSOURCE_USB 54 }; 55 56 /** 57 * Locations of the boot-device identifier in SRAM 58 */ 59 #define RK3399_BROM_BOOTSOURCE_ID_ADDR 0xff8c0010 60 61 #endif 62