xref: /openbmc/u-boot/tools/aisimage.h (revision 4962e38e)
1*4962e38eSStefano Babic /*
2*4962e38eSStefano Babic  * (C) Copyright 2011
3*4962e38eSStefano Babic  * Stefano Babic, DENX Software Engineering, sbabic@denx.de.
4*4962e38eSStefano Babic  *
5*4962e38eSStefano Babic  * See file CREDITS for list of people who contributed to this
6*4962e38eSStefano Babic  * project.
7*4962e38eSStefano Babic  *
8*4962e38eSStefano Babic  * This program is free software; you can redistribute it and/or
9*4962e38eSStefano Babic  * modify it under the terms of the GNU General Public License as
10*4962e38eSStefano Babic  * published by the Free Software Foundation; either version 2 of
11*4962e38eSStefano Babic  * the License, or (at your option) any later version.
12*4962e38eSStefano Babic  *
13*4962e38eSStefano Babic  * This program is distributed in the hope that it will be useful,
14*4962e38eSStefano Babic  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15*4962e38eSStefano Babic  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
16*4962e38eSStefano Babic  * GNU General Public License for more details.
17*4962e38eSStefano Babic  *
18*4962e38eSStefano Babic  * You should have received a copy of the GNU General Public License
19*4962e38eSStefano Babic  * along with this program; if not, write to the Free Software
20*4962e38eSStefano Babic  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21*4962e38eSStefano Babic  * MA 02111-1307 USA
22*4962e38eSStefano Babic  */
23*4962e38eSStefano Babic 
24*4962e38eSStefano Babic #ifndef _AISIMAGE_H_
25*4962e38eSStefano Babic #define _AISIMAGE_H_
26*4962e38eSStefano Babic 
27*4962e38eSStefano Babic /* all values are for little endian systems */
28*4962e38eSStefano Babic #define AIS_MAGIC_WORD	0x41504954
29*4962e38eSStefano Babic #define AIS_FCN_MAX	8
30*4962e38eSStefano Babic 
31*4962e38eSStefano Babic enum {
32*4962e38eSStefano Babic 	AIS_CMD_LOAD	= 0x58535901,
33*4962e38eSStefano Babic 	AIS_CMD_VALCRC	= 0x58535902,
34*4962e38eSStefano Babic 	AIS_CMD_ENCRC	= 0x58535903,
35*4962e38eSStefano Babic 	AIS_CMD_DISCRC	= 0x58535904,
36*4962e38eSStefano Babic 	AIS_CMD_JMP	= 0x58535905,
37*4962e38eSStefano Babic 	AIS_CMD_JMPCLOSE = 0x58535906,
38*4962e38eSStefano Babic 	AIS_CMD_BOOTTBL	= 0x58535907,
39*4962e38eSStefano Babic 	AIS_CMD_FILL	= 0x5853590A,
40*4962e38eSStefano Babic 	AIS_CMD_FNLOAD	= 0x5853590D,
41*4962e38eSStefano Babic 	AIS_CMD_SEQREAD	= 0x58535963,
42*4962e38eSStefano Babic };
43*4962e38eSStefano Babic 
44*4962e38eSStefano Babic struct ais_cmd_load {
45*4962e38eSStefano Babic 	uint32_t cmd;
46*4962e38eSStefano Babic 	uint32_t addr;
47*4962e38eSStefano Babic 	uint32_t size;
48*4962e38eSStefano Babic 	uint32_t data[1];
49*4962e38eSStefano Babic };
50*4962e38eSStefano Babic 
51*4962e38eSStefano Babic struct ais_cmd_func {
52*4962e38eSStefano Babic 	uint32_t cmd;
53*4962e38eSStefano Babic 	uint32_t func_args;
54*4962e38eSStefano Babic 	uint32_t parms[AIS_FCN_MAX];
55*4962e38eSStefano Babic };
56*4962e38eSStefano Babic 
57*4962e38eSStefano Babic struct ais_cmd_jmpclose {
58*4962e38eSStefano Babic 	uint32_t cmd;
59*4962e38eSStefano Babic 	uint32_t addr;
60*4962e38eSStefano Babic };
61*4962e38eSStefano Babic 
62*4962e38eSStefano Babic #define CMD_DATA_STR	"DATA"
63*4962e38eSStefano Babic 
64*4962e38eSStefano Babic enum ais_file_cmd {
65*4962e38eSStefano Babic 	CMD_INVALID,
66*4962e38eSStefano Babic 	CMD_FILL,
67*4962e38eSStefano Babic 	CMD_CRCON,
68*4962e38eSStefano Babic 	CMD_CRCOFF,
69*4962e38eSStefano Babic 	CMD_CRCCHECK,
70*4962e38eSStefano Babic 	CMD_JMPCLOSE,
71*4962e38eSStefano Babic 	CMD_JMP,
72*4962e38eSStefano Babic 	CMD_SEQREAD,
73*4962e38eSStefano Babic 	CMD_DATA,
74*4962e38eSStefano Babic 	CMD_PLL0,
75*4962e38eSStefano Babic 	CMD_PLL1,
76*4962e38eSStefano Babic 	CMD_CLK,
77*4962e38eSStefano Babic 	CMD_DDR2,
78*4962e38eSStefano Babic 	CMD_EMIFA,
79*4962e38eSStefano Babic 	CMD_EMIFA_ASYNC,
80*4962e38eSStefano Babic 	CMD_PLL,
81*4962e38eSStefano Babic 	CMD_PSC,
82*4962e38eSStefano Babic 	CMD_PINMUX,
83*4962e38eSStefano Babic 	CMD_BOOTTABLE
84*4962e38eSStefano Babic };
85*4962e38eSStefano Babic 
86*4962e38eSStefano Babic enum aisimage_fld_types {
87*4962e38eSStefano Babic 	CFG_INVALID = -1,
88*4962e38eSStefano Babic 	CFG_COMMAND,
89*4962e38eSStefano Babic 	CFG_VALUE,
90*4962e38eSStefano Babic };
91*4962e38eSStefano Babic 
92*4962e38eSStefano Babic struct ais_header {
93*4962e38eSStefano Babic 	uint32_t magic;
94*4962e38eSStefano Babic 	char data[1];
95*4962e38eSStefano Babic };
96*4962e38eSStefano Babic 
97*4962e38eSStefano Babic #endif /* _AISIMAGE_H_ */
98