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 enum ublimage_cmd { 32 CMD_INVALID, 33 CMD_BOOT_MODE, 34 CMD_ENTRY, 35 CMD_PAGE, 36 CMD_ST_BLOCK, 37 CMD_ST_PAGE, 38 CMD_LD_ADDR 39 }; 40 41 enum ublimage_fld_types { 42 CFG_INVALID = -1, 43 CFG_COMMAND, 44 CFG_REG_VALUE 45 }; 46 47 /* 48 * from sprufg5a.pdf Table 110 49 * Used by RBL when doing NAND boot 50 */ 51 #define UBL_MAGIC_BASE (0xA1ACED00) 52 /* Safe boot mode */ 53 #define UBL_MAGIC_SAFE (0x00) 54 /* DMA boot mode */ 55 #define UBL_MAGIC_DMA (0x11) 56 /* I Cache boot mode */ 57 #define UBL_MAGIC_IC (0x22) 58 /* Fast EMIF boot mode */ 59 #define UBL_MAGIC_FAST (0x33) 60 /* DMA + ICache boot mode */ 61 #define UBL_MAGIC_DMA_IC (0x44) 62 /* DMA + ICache + Fast EMIF boot mode */ 63 #define UBL_MAGIC_DMA_IC_FAST (0x55) 64 65 /* Define max UBL image size */ 66 #define UBL_IMAGE_SIZE (0x00003800u) 67 68 /* one NAND block */ 69 #define UBL_BLOCK_SIZE 512 70 71 /* from sprufg5a.pdf Table 109 */ 72 struct ubl_header { 73 uint32_t magic; /* Magic Number, see UBL_* defines */ 74 uint32_t entry; /* entry point address for bootloader */ 75 uint32_t pages; /* number of pages (size of bootloader) */ 76 uint32_t block; /* 77 * blocknumber where user bootloader is 78 * present 79 */ 80 uint32_t page; /* 81 * page number where user bootloader is 82 * present. 83 */ 84 uint32_t pll_m; /* 85 * PLL setting -Multiplier (only valid if 86 * Magic Number indicates PLL enable). 87 */ 88 uint32_t pll_n; /* 89 * PLL setting -Divider (only valid if 90 * Magic Number indicates PLL enable). 91 */ 92 uint32_t emif; /* 93 * fast EMIF setting (only valid if 94 * Magic Number indicates fast EMIF boot). 95 */ 96 /* to fit in one nand block */ 97 unsigned char res[UBL_BLOCK_SIZE - 8 * 4]; 98 }; 99 100 #endif /* _UBLIMAGE_H_ */ 101