Utils: Update the firmware to carry section physical addresses
[gstreamer-omap:sysbios-rpmsg.git] / src / utils / rprcfmt.h
1 /*
2  *  Copyright (c) 2011, Texas Instruments Incorporated
3  *  All rights reserved.
4  *
5  *  Redistribution and use in source and binary forms, with or without
6  *  modification, are permitted provided that the following conditions
7  *  are met:
8  *
9  *  *  Redistributions of source code must retain the above copyright
10  *     notice, this list of conditions and the following disclaimer.
11  *
12  *  *  Redistributions in binary form must reproduce the above copyright
13  *     notice, this list of conditions and the following disclaimer in the
14  *     documentation and/or other materials provided with the distribution.
15  *
16  *  *  Neither the name of Texas Instruments Incorporated nor the names of
17  *     its contributors may be used to endorse or promote products derived
18  *     from this software without specific prior written permission.
19  *
20  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  *  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  *  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  *  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  *  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  *  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  *  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  *  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32
33 #ifndef _RPROCFMT_H_
34 #define _RPROCFMT_H_
35
36 typedef unsigned int u32;
37 typedef unsigned long long u64;
38 typedef unsigned char u8;
39 #define __packed __attribute__ ((packed))
40
41 /**
42  * The following enums and structures define the binary format of the images
43  * we load and run the remote processors with.
44  *
45  * The binary format is as follows:
46  *
47  * struct {
48  *     char magic[4] = { 'R', 'P', 'R', 'C' };
49  *     u32 version;
50  *     u32 header_len;
51  *     char header[...] = { header_len bytes of unformatted, textual header };
52  *     struct sections {
53  *         u32 type;
54  *         u64 da;
55  *         u32 len;
56  *         u8 content[...] = { len bytes of binary data };
57  *     } [ no limit on number of sections ];
58  * } __packed;
59  */
60
61 #define RPROC_FW_MAGIC  "RPRC"
62
63 enum rproc_fw_resource_type {
64     RSC_CARVEOUT    = 0,
65     RSC_DEVMEM      = 1,
66     RSC_DEVICE      = 2,
67     RSC_IRQ         = 3,
68     RSC_TRACE       = 4,
69     RSC_BOOTADDR    = 5,
70 };
71
72 enum rproc_fw_section_type {
73     FW_RESOURCE    = 0,
74     FW_TEXT        = 1,
75     FW_DATA        = 2,
76 };
77
78 struct rproc_fw_resource {
79     u32 type;
80     u64 da;
81     u64 pa;
82     u32 len;
83     u32 flags;
84     u8 name[48];
85 } __packed;
86
87 struct rproc_fw_section {
88     u32 type;
89     u64 da;
90     u32 len;
91     char content[0];
92 } __packed;
93
94 struct rproc_fw_header {
95     char magic[4];
96     u32 version;
97     u32 header_len;
98     char header[0];
99 } __packed;
100
101 #endif