1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * Copyright (C) 2012 Boundary Devices Inc. 4 */ 5 6 #ifndef _ASM_BOOT_MODE_H 7 #define _ASM_BOOT_MODE_H 8 #define MAKE_CFGVAL(cfg1, cfg2, cfg3, cfg4) \ 9 ((cfg4) << 24) | ((cfg3) << 16) | ((cfg2) << 8) | (cfg1) 10 #define MAKE_CFGVAL_PRIMARY_BOOT 0xfffffff0 11 #define MAKE_CFGVAL_SECONDARY_BOOT 0xffffffff 12 13 enum boot_device { 14 WEIM_NOR_BOOT, 15 ONE_NAND_BOOT, 16 PATA_BOOT, 17 SATA_BOOT, 18 I2C_BOOT, 19 SPI_NOR_BOOT, 20 SD1_BOOT, 21 SD2_BOOT, 22 SD3_BOOT, 23 SD4_BOOT, 24 MMC1_BOOT, 25 MMC2_BOOT, 26 MMC3_BOOT, 27 MMC4_BOOT, 28 NAND_BOOT, 29 QSPI_BOOT, 30 FLEXSPI_BOOT, 31 USB_BOOT, 32 UNKNOWN_BOOT, 33 BOOT_DEV_NUM = UNKNOWN_BOOT, 34 }; 35 36 /* Boot device type */ 37 #define BOOT_TYPE_SD 0x1 38 #define BOOT_TYPE_MMC 0x2 39 #define BOOT_TYPE_NAND 0x3 40 #define BOOT_TYPE_QSPI 0x4 41 #define BOOT_TYPE_WEIM 0x5 42 #define BOOT_TYPE_SPINOR 0x6 43 #define BOOT_TYPE_USB 0xF 44 45 struct boot_mode { 46 const char *name; 47 unsigned cfg_val; 48 }; 49 50 void add_board_boot_modes(const struct boot_mode *p); 51 void boot_mode_apply(unsigned cfg_val); 52 extern const struct boot_mode soc_boot_modes[]; 53 #endif 54