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 USB_BOOT, 29 UNKNOWN_BOOT, 30 BOOT_DEV_NUM = UNKNOWN_BOOT, 31 }; 32 33 /* Boot device type */ 34 #define BOOT_TYPE_SD 0x1 35 #define BOOT_TYPE_MMC 0x2 36 #define BOOT_TYPE_NAND 0x3 37 #define BOOT_TYPE_QSPI 0x4 38 #define BOOT_TYPE_WEIM 0x5 39 #define BOOT_TYPE_SPINOR 0x6 40 #define BOOT_TYPE_USB 0xF 41 42 struct boot_mode { 43 const char *name; 44 unsigned cfg_val; 45 }; 46 47 void add_board_boot_modes(const struct boot_mode *p); 48 void boot_mode_apply(unsigned cfg_val); 49 extern const struct boot_mode soc_boot_modes[]; 50 #endif 51