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 11 enum boot_device { 12 WEIM_NOR_BOOT, 13 ONE_NAND_BOOT, 14 PATA_BOOT, 15 SATA_BOOT, 16 I2C_BOOT, 17 SPI_NOR_BOOT, 18 SD1_BOOT, 19 SD2_BOOT, 20 SD3_BOOT, 21 SD4_BOOT, 22 MMC1_BOOT, 23 MMC2_BOOT, 24 MMC3_BOOT, 25 MMC4_BOOT, 26 NAND_BOOT, 27 QSPI_BOOT, 28 FLEXSPI_BOOT, 29 USB_BOOT, 30 UNKNOWN_BOOT, 31 BOOT_DEV_NUM = UNKNOWN_BOOT, 32 }; 33 34 /* Boot device type */ 35 #define BOOT_TYPE_SD 0x1 36 #define BOOT_TYPE_MMC 0x2 37 #define BOOT_TYPE_NAND 0x3 38 #define BOOT_TYPE_QSPI 0x4 39 #define BOOT_TYPE_WEIM 0x5 40 #define BOOT_TYPE_SPINOR 0x6 41 #define BOOT_TYPE_USB 0xF 42 43 struct boot_mode { 44 const char *name; 45 unsigned cfg_val; 46 }; 47 48 void add_board_boot_modes(const struct boot_mode *p); 49 void boot_mode_apply(unsigned cfg_val); 50 extern const struct boot_mode soc_boot_modes[]; 51 #endif 52