| /* | 
 |  * (C) Copyright 2011 | 
 |  * Heiko Schocher, DENX Software Engineering, hs@denx.de. | 
 |  * | 
 |  * Vased on: | 
 |  * (C) Copyright 2009 | 
 |  * Stefano Babic, DENX Software Engineering, sbabic@denx.de. | 
 |  * | 
 |  * See file CREDITS for list of people who contributed to this | 
 |  * project. | 
 |  * | 
 |  * This program is free software; you can redistribute it and/or | 
 |  * modify it under the terms of the GNU General Public License as | 
 |  * published by the Free Software Foundation; either version 2 of | 
 |  * the License, or (at your option) any later version. | 
 |  * | 
 |  * This program is distributed in the hope that it will be useful, | 
 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the | 
 |  * GNU General Public License for more details. | 
 |  * | 
 |  * You should have received a copy of the GNU General Public License | 
 |  * along with this program; if not, write to the Free Software | 
 |  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | 
 |  * MA 02111-1307 USA | 
 |  */ | 
 |  | 
 | #ifndef _UBLIMAGE_H_ | 
 | #define _UBLIMAGE_H_ | 
 |  | 
 | enum ublimage_cmd { | 
 | 	CMD_INVALID, | 
 | 	CMD_BOOT_MODE, | 
 | 	CMD_ENTRY, | 
 | 	CMD_PAGE, | 
 | 	CMD_ST_BLOCK, | 
 | 	CMD_ST_PAGE, | 
 | 	CMD_LD_ADDR | 
 | }; | 
 |  | 
 | enum ublimage_fld_types { | 
 | 	CFG_INVALID = -1, | 
 | 	CFG_COMMAND, | 
 | 	CFG_REG_VALUE | 
 | }; | 
 |  | 
 | /* | 
 |  * from sprufg5a.pdf Table 110 | 
 |  * Used by RBL when doing NAND boot | 
 |  */ | 
 | #define UBL_MAGIC_BASE              (0xA1ACED00) | 
 | /* Safe boot mode */ | 
 | #define UBL_MAGIC_SAFE              (0x00) | 
 | /* DMA boot mode */ | 
 | #define UBL_MAGIC_DMA               (0x11) | 
 | /* I Cache boot mode */ | 
 | #define UBL_MAGIC_IC                (0x22) | 
 | /* Fast EMIF boot mode */ | 
 | #define UBL_MAGIC_FAST              (0x33) | 
 | /* DMA + ICache boot mode */ | 
 | #define UBL_MAGIC_DMA_IC            (0x44) | 
 | /* DMA + ICache + Fast EMIF boot mode */ | 
 | #define UBL_MAGIC_DMA_IC_FAST       (0x55) | 
 |  | 
 | /* Define max UBL image size */ | 
 | #define UBL_IMAGE_SIZE              (0x00003800u) | 
 |  | 
 | /* one NAND block */ | 
 | #define UBL_BLOCK_SIZE 2048 | 
 |  | 
 | /* from sprufg5a.pdf Table 109 */ | 
 | struct ubl_header { | 
 | 	uint32_t	magic;	/* Magic Number, see UBL_* defines */ | 
 | 	uint32_t	entry;	/* entry point address for bootloader */ | 
 | 	uint32_t	pages;	/* number of pages (size of bootloader) */ | 
 | 	uint32_t	block;	/* | 
 | 				 * blocknumber where user bootloader is | 
 | 				 * present | 
 | 				 */ | 
 | 	uint32_t	page;	/* | 
 | 				 * page number where user bootloader is | 
 | 				 * present. | 
 | 				 */ | 
 | 	uint32_t	pll_m;	/* | 
 | 				 * PLL setting -Multiplier (only valid if | 
 | 				 * Magic Number indicates PLL enable). | 
 | 				 */ | 
 | 	uint32_t	pll_n;	/* | 
 | 				 * PLL setting -Divider (only valid if | 
 | 				 * Magic Number indicates PLL enable). | 
 | 				 */ | 
 | 	uint32_t	emif;	/* | 
 | 				 * fast EMIF setting (only valid if | 
 | 				 * Magic Number indicates fast EMIF boot). | 
 | 				 */ | 
 | 	/* to fit in one nand block */ | 
 | 	unsigned char	res[UBL_BLOCK_SIZE - 8 * 4]; | 
 | }; | 
 |  | 
 | #endif /* _UBLIMAGE_H_ */ |