Merge branch 'master' of git://git.denx.de/u-boot-mpc83xx
[kernel/u-boot.git] / tools / ublimage.h
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 2048
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_ */