1 /* 2 * Copyright (C) 2012 Boundary Devices Inc. 3 * 4 * SPDX-License-Identifier: GPL-2.0+ 5 */ 6 7 #ifndef _ASM_BOOT_MODE_H 8 #define _ASM_BOOT_MODE_H 9 #define MAKE_CFGVAL(cfg1, cfg2, cfg3, cfg4) \ 10 ((cfg4) << 24) | ((cfg3) << 16) | ((cfg2) << 8) | (cfg1) 11 12 enum boot_device { 13 WEIM_NOR_BOOT, 14 ONE_NAND_BOOT, 15 PATA_BOOT, 16 SATA_BOOT, 17 I2C_BOOT, 18 SPI_NOR_BOOT, 19 SD1_BOOT, 20 SD2_BOOT, 21 SD3_BOOT, 22 SD4_BOOT, 23 MMC1_BOOT, 24 MMC2_BOOT, 25 MMC3_BOOT, 26 MMC4_BOOT, 27 NAND_BOOT, 28 QSPI_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