| /* |
| * (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 512 |
| |
| /* 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_ */ |