1 /* 2 * (C) Copyright 2011 3 * Heiko Schocher, DENX Software Engineering, hs@denx.de. 4 * 5 * Vased on: 6 * (C) Copyright 2009 7 * Stefano Babic, DENX Software Engineering, sbabic@denx.de. 8 * 9 * See file CREDITS for list of people who contributed to this 10 * project. 11 * 12 * This program is free software; you can redistribute it and/or 13 * modify it under the terms of the GNU General Public License as 14 * published by the Free Software Foundation; either version 2 of 15 * the License, or (at your option) any later version. 16 * 17 * This program is distributed in the hope that it will be useful, 18 * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 * GNU General Public License for more details. 21 * 22 * You should have received a copy of the GNU General Public License 23 * along with this program; if not, write to the Free Software 24 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 25 * MA 02111-1307 USA 26 */ 27 28 #ifndef _UBLIMAGE_H_ 29 #define _UBLIMAGE_H_ 30 31 #include <config.h> 32 33 #if !defined(CONFIG_SYS_UBL_BLOCK) 34 #define CONFIG_SYS_UBL_BLOCK 512 35 #endif 36 37 enum ublimage_cmd { 38 CMD_INVALID, 39 CMD_BOOT_MODE, 40 CMD_ENTRY, 41 CMD_PAGE, 42 CMD_ST_BLOCK, 43 CMD_ST_PAGE, 44 CMD_LD_ADDR 45 }; 46 47 enum ublimage_fld_types { 48 CFG_INVALID = -1, 49 CFG_COMMAND, 50 CFG_REG_VALUE 51 }; 52 53 /* 54 * from sprufg5a.pdf Table 110 55 * Used by RBL when doing NAND boot 56 */ 57 #define UBL_MAGIC_BASE (0xA1ACED00) 58 /* Safe boot mode */ 59 #define UBL_MAGIC_SAFE (0x00) 60 /* DMA boot mode */ 61 #define UBL_MAGIC_DMA (0x11) 62 /* I Cache boot mode */ 63 #define UBL_MAGIC_IC (0x22) 64 /* Fast EMIF boot mode */ 65 #define UBL_MAGIC_FAST (0x33) 66 /* DMA + ICache boot mode */ 67 #define UBL_MAGIC_DMA_IC (0x44) 68 /* DMA + ICache + Fast EMIF boot mode */ 69 #define UBL_MAGIC_DMA_IC_FAST (0x55) 70 71 /* Define max UBL image size */ 72 #define UBL_IMAGE_SIZE (0x00003800u) 73 74 /* from sprufg5a.pdf Table 109 */ 75 struct ubl_header { 76 uint32_t magic; /* Magic Number, see UBL_* defines */ 77 uint32_t entry; /* entry point address for bootloader */ 78 uint32_t pages; /* number of pages (size of bootloader) */ 79 uint32_t block; /* 80 * blocknumber where user bootloader is 81 * present 82 */ 83 uint32_t page; /* 84 * page number where user bootloader is 85 * present. 86 */ 87 uint32_t pll_m; /* 88 * PLL setting -Multiplier (only valid if 89 * Magic Number indicates PLL enable). 90 */ 91 uint32_t pll_n; /* 92 * PLL setting -Divider (only valid if 93 * Magic Number indicates PLL enable). 94 */ 95 uint32_t emif; /* 96 * fast EMIF setting (only valid if 97 * Magic Number indicates fast EMIF boot). 98 */ 99 /* to fit in one nand block */ 100 unsigned char res[CONFIG_SYS_UBL_BLOCK - 8 * 4]; 101 }; 102 103 #endif /* _UBLIMAGE_H_ */ 104