1*14b24e2bSVaishali Kulkarni /*
2*14b24e2bSVaishali Kulkarni * CDDL HEADER START
3*14b24e2bSVaishali Kulkarni *
4*14b24e2bSVaishali Kulkarni * The contents of this file are subject to the terms of the
5*14b24e2bSVaishali Kulkarni * Common Development and Distribution License, v.1,  (the "License").
6*14b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License.
7*14b24e2bSVaishali Kulkarni *
8*14b24e2bSVaishali Kulkarni * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*14b24e2bSVaishali Kulkarni * or http://opensource.org/licenses/CDDL-1.0.
10*14b24e2bSVaishali Kulkarni * See the License for the specific language governing permissions
11*14b24e2bSVaishali Kulkarni * and limitations under the License.
12*14b24e2bSVaishali Kulkarni *
13*14b24e2bSVaishali Kulkarni * When distributing Covered Code, include this CDDL HEADER in each
14*14b24e2bSVaishali Kulkarni * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*14b24e2bSVaishali Kulkarni * If applicable, add the following below this CDDL HEADER, with the
16*14b24e2bSVaishali Kulkarni * fields enclosed by brackets "[]" replaced with your own identifying
17*14b24e2bSVaishali Kulkarni * information: Portions Copyright [yyyy] [name of copyright owner]
18*14b24e2bSVaishali Kulkarni *
19*14b24e2bSVaishali Kulkarni * CDDL HEADER END
20*14b24e2bSVaishali Kulkarni */
21*14b24e2bSVaishali Kulkarni 
22*14b24e2bSVaishali Kulkarni /*
23*14b24e2bSVaishali Kulkarni * Copyright 2014-2017 Cavium, Inc.
24*14b24e2bSVaishali Kulkarni * The contents of this file are subject to the terms of the Common Development
25*14b24e2bSVaishali Kulkarni * and Distribution License, v.1,  (the "License").
26*14b24e2bSVaishali Kulkarni 
27*14b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License.
28*14b24e2bSVaishali Kulkarni 
29*14b24e2bSVaishali Kulkarni * You can obtain a copy of the License at available
30*14b24e2bSVaishali Kulkarni * at http://opensource.org/licenses/CDDL-1.0
31*14b24e2bSVaishali Kulkarni 
32*14b24e2bSVaishali Kulkarni * See the License for the specific language governing permissions and
33*14b24e2bSVaishali Kulkarni * limitations under the License.
34*14b24e2bSVaishali Kulkarni */
35*14b24e2bSVaishali Kulkarni 
36*14b24e2bSVaishali Kulkarni /****************************************************************************
37*14b24e2bSVaishali Kulkarni  * Name:        append.h
38*14b24e2bSVaishali Kulkarni  *
39*14b24e2bSVaishali Kulkarni  * Description:
40*14b24e2bSVaishali Kulkarni  *      This is a utility to append firmware and other images into a
41*14b24e2bSVaishali Kulkarni  *      single file. The primary use of this is to combine two phases
42*14b24e2bSVaishali Kulkarni  *      of the bootcode into a single file. It appends some header
43*14b24e2bSVaishali Kulkarni  *      information (used for parsing the file) and the input image to
44*14b24e2bSVaishali Kulkarni  *      the output file. (If the output file does not yet exist, it'll
45*14b24e2bSVaishali Kulkarni  *      create one.)
46*14b24e2bSVaishali Kulkarni  *      This header file defines the image header information.
47*14b24e2bSVaishali Kulkarni  *
48*14b24e2bSVaishali Kulkarni  * Bundle image layout:
49*14b24e2bSVaishali Kulkarni  *      ========================================================
50*14b24e2bSVaishali Kulkarni  *      = Bundle Header <bundle_header>
51*14b24e2bSVaishali Kulkarni  *      =                             <magic     > - 0xbdbdbdbd
52*14b24e2bSVaishali Kulkarni  *	=                             <version   > - Currently 1
53*14b24e2bSVaishali Kulkarni  *      =                             <num_images> - Of the bundle
54*14b24e2bSVaishali Kulkarni  *      =                             <total_size> - Of the bundle
55*14b24e2bSVaishali Kulkarni  *      ========================================================
56*14b24e2bSVaishali Kulkarni  *      = Img1 Hdr      <image_header>
57*14b24e2bSVaishali Kulkarni  *      =                             <magic     > - 0x669955aa
58*14b24e2bSVaishali Kulkarni  *      =                             <version   > - Currently 2
59*14b24e2bSVaishali Kulkarni  *      =                             <type      >
60*14b24e2bSVaishali Kulkarni  *      =                             <image_info>
61*14b24e2bSVaishali Kulkarni  *      =                             <start_addr>
62*14b24e2bSVaishali Kulkarni  *      =                             <run_addr  >
63*14b24e2bSVaishali Kulkarni  *      =                             <byte_cnt  >
64*14b24e2bSVaishali Kulkarni  *      ========================================================
65*14b24e2bSVaishali Kulkarni  *      =     Img1 data
66*14b24e2bSVaishali Kulkarni  *      ========================================================
67*14b24e2bSVaishali Kulkarni  *      ========================================================
68*14b24e2bSVaishali Kulkarni  *      =     ImgN Hdr     <image_header>
69*14b24e2bSVaishali Kulkarni  *      ========================================================
70*14b24e2bSVaishali Kulkarni  *      =     ImgN data
71*14b24e2bSVaishali Kulkarni  *      ========================================================
72*14b24e2bSVaishali Kulkarni  *
73*14b24e2bSVaishali Kulkarni  ****************************************************************************/
74*14b24e2bSVaishali Kulkarni 
75*14b24e2bSVaishali Kulkarni #ifndef APPEND_H
76*14b24e2bSVaishali Kulkarni #define APPEND_H
77*14b24e2bSVaishali Kulkarni 
78*14b24e2bSVaishali Kulkarni #define SIGNATURE_MAX_DER_SIZE 128
79*14b24e2bSVaishali Kulkarni #define SIGNATURE_MIN_DER_SIZE 64
80*14b24e2bSVaishali Kulkarni 
81*14b24e2bSVaishali Kulkarni struct image_header {
82*14b24e2bSVaishali Kulkarni #pragma pack(push, 1)
83*14b24e2bSVaishali Kulkarni 	u32 magic;
84*14b24e2bSVaishali Kulkarni #define FILE_MAGIC                       0x669955aa
85*14b24e2bSVaishali Kulkarni 	u32 version;
86*14b24e2bSVaishali Kulkarni #define FORMAT_VERSION_1                 0x1
87*14b24e2bSVaishali Kulkarni #define FORMAT_VERSION_2	         0x2
88*14b24e2bSVaishali Kulkarni #define FORMAT_VERSION_3		 0x3
89*14b24e2bSVaishali Kulkarni #define LATEST_FORMAT_VERSION            FORMAT_VERSION_3
90*14b24e2bSVaishali Kulkarni 	u32 type;
91*14b24e2bSVaishali Kulkarni 	u32 image_info;
92*14b24e2bSVaishali Kulkarni 	/* MAX_MEM base value is 8K, means if MAX_MEM value is 0,
93*14b24e2bSVaishali Kulkarni 	 * the size is 8K. */
94*14b24e2bSVaishali Kulkarni #define IMAGE_INFO_MAX_MEM_BASE                  8
95*14b24e2bSVaishali Kulkarni 	/* Runtime mem size required in k, Encoded with value +
96*14b24e2bSVaishali Kulkarni 	 * IMAGE_INFO_MAX_MEM_BASE */
97*14b24e2bSVaishali Kulkarni #define IMAGE_INFO_MAX_MEM_MASK         0x0000001f
98*14b24e2bSVaishali Kulkarni 
99*14b24e2bSVaishali Kulkarni 	/* bit 23:16 reserved for bit define that device it can support.
100*14b24e2bSVaishali Kulkarni 	 * These are bit fields. */
101*14b24e2bSVaishali Kulkarni #define IMAGE_INFO_CHIP_MASK            0x00ff0000
102*14b24e2bSVaishali Kulkarni #define IMAGE_INFO_CHIP_57940		0x00200000
103*14b24e2bSVaishali Kulkarni #define IMAGE_INFO_CHIP_579XX		0x00400000
104*14b24e2bSVaishali Kulkarni #define IMAGE_INFO_CHIP_579XX_B0_ONLY	0x00500000 /* For PCIE2 */
105*14b24e2bSVaishali Kulkarni 
106*14b24e2bSVaishali Kulkarni 	u32 start_addr;
107*14b24e2bSVaishali Kulkarni 	u32 run_addr;
108*14b24e2bSVaishali Kulkarni 	u32 byte_cnt;
109*14b24e2bSVaishali Kulkarni 	u32 image[1];        /* Unbounded */
110*14b24e2bSVaishali Kulkarni #pragma pack(pop)
111*14b24e2bSVaishali Kulkarni };
112*14b24e2bSVaishali Kulkarni 
113*14b24e2bSVaishali Kulkarni #define IMG_HDR_LEN (sizeof(struct image_header))
114*14b24e2bSVaishali Kulkarni 
115*14b24e2bSVaishali Kulkarni struct bundle_header {
116*14b24e2bSVaishali Kulkarni 	u32 magic;
117*14b24e2bSVaishali Kulkarni #define BUNDLE_MAGIC 0xbdbdbdbd
118*14b24e2bSVaishali Kulkarni 	u32 version;
119*14b24e2bSVaishali Kulkarni #define BUNDLE_IMAGE_VER 1
120*14b24e2bSVaishali Kulkarni 	u32 num_images;
121*14b24e2bSVaishali Kulkarni 	u32 total_size;
122*14b24e2bSVaishali Kulkarni };
123*14b24e2bSVaishali Kulkarni 
124*14b24e2bSVaishali Kulkarni #endif				/*APPEND_H */
125