1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * (C) Copyright 2011 4 * Heiko Schocher, DENX Software Engineering, hs@denx.de. 5 * 6 * Vased on: 7 * (C) Copyright 2009 8 * Stefano Babic, DENX Software Engineering, sbabic@denx.de. 9 */ 10 11 #ifndef _UBLIMAGE_H_ 12 #define _UBLIMAGE_H_ 13 14 enum ublimage_cmd { 15 CMD_INVALID, 16 CMD_BOOT_MODE, 17 CMD_ENTRY, 18 CMD_PAGE, 19 CMD_ST_BLOCK, 20 CMD_ST_PAGE, 21 CMD_LD_ADDR 22 }; 23 24 enum ublimage_fld_types { 25 CFG_INVALID = -1, 26 CFG_COMMAND, 27 CFG_REG_VALUE 28 }; 29 30 /* 31 * from sprufg5a.pdf Table 110 32 * Used by RBL when doing NAND boot 33 */ 34 #define UBL_MAGIC_BASE (0xA1ACED00) 35 /* Safe boot mode */ 36 #define UBL_MAGIC_SAFE (0x00) 37 /* DMA boot mode */ 38 #define UBL_MAGIC_DMA (0x11) 39 /* I Cache boot mode */ 40 #define UBL_MAGIC_IC (0x22) 41 /* Fast EMIF boot mode */ 42 #define UBL_MAGIC_FAST (0x33) 43 /* DMA + ICache boot mode */ 44 #define UBL_MAGIC_DMA_IC (0x44) 45 /* DMA + ICache + Fast EMIF boot mode */ 46 #define UBL_MAGIC_DMA_IC_FAST (0x55) 47 48 /* Define max UBL image size */ 49 #define UBL_IMAGE_SIZE (0x00003800u) 50 51 /* one NAND block */ 52 #define UBL_BLOCK_SIZE 2048 53 54 /* from sprufg5a.pdf Table 109 */ 55 struct ubl_header { 56 uint32_t magic; /* Magic Number, see UBL_* defines */ 57 uint32_t entry; /* entry point address for bootloader */ 58 uint32_t pages; /* number of pages (size of bootloader) */ 59 uint32_t block; /* 60 * blocknumber where user bootloader is 61 * present 62 */ 63 uint32_t page; /* 64 * page number where user bootloader is 65 * present. 66 */ 67 uint32_t pll_m; /* 68 * PLL setting -Multiplier (only valid if 69 * Magic Number indicates PLL enable). 70 */ 71 uint32_t pll_n; /* 72 * PLL setting -Divider (only valid if 73 * Magic Number indicates PLL enable). 74 */ 75 uint32_t emif; /* 76 * fast EMIF setting (only valid if 77 * Magic Number indicates fast EMIF boot). 78 */ 79 /* to fit in one nand block */ 80 unsigned char res[UBL_BLOCK_SIZE - 8 * 4]; 81 }; 82 83 #endif /* _UBLIMAGE_H_ */ 84