• source navigation  • diff markup  • identifier search  • freetext search  • 

Sources/firmware-utils/src/mktitanimg.h

  1 // SPDX-License-Identifier: GPL-2.0-only
  2 #ifndef __MKTITANIMG_H
  3 #define __MKTITANIMG_H
  4 
  5 #ifndef CFGMGR_CKSUM_H
  6 #define CFGMGR_CKSUM_H
  7 
  8 #define CKSUM_MAGIC_NUMBER 0xC453DE23
  9 
 10 #include <inttypes.h>
 11 #include <stdio.h>
 12 #include <errno.h>
 13 
 14 int cs_is_tagged(FILE*);
 15 unsigned long cs_read_sum(FILE*);
 16 int cs_calc_sum(FILE*, unsigned long*, int);
 17 int cs_set_sum(FILE*, unsigned long, int);
 18 void cs_get_sum(FILE*, unsigned long*);
 19 unsigned long cs_calc_buf_sum(char*, int);
 20 int cs_validate_file(char*);
 21 
 22 #endif
 23 #ifndef ___CMDLINE_H___
 24 #define ___CMDLINE_H___
 25 
 26 /* ********* Library Configuration ********* */
 27 typedef struct CMDLINE_OPT
 28 {
 29         int     min;                                    /* Minimum number of arguments this option takes */
 30         int     max;                                    /* Maximum number of arguments this option takes */
 31         int     flags;                                  /* Controlling flags (whether to accept or not, etc) */
 32 } CMDLINE_OPT;
 33 
 34 typedef struct CMDLINE_CFG
 35 {
 36         CMDLINE_OPT     opts[26];               /* Options 'a' through 'z' */
 37         CMDLINE_OPT     global;                 /* Global option (outside 'a'..'z') */
 38 } CMDLINE_CFG;
 39 /* ******************************************** */
 40 
 41 #define CMDLINE_OPTFLAG_ALLOW   0x1                     /* The option is allowed */
 42 #define CMDLINE_OPTFLAG_MANDAT  0x2                     /* The option is mandatory */
 43 
 44 extern  void    cmdline_print(char* argv[]);
 45 
 46 extern  int             cmdline_configure(CMDLINE_CFG* p_cfg);
 47 extern  int             cmdline_read(int argc, char* argv[]);
 48 
 49 extern  void*   cmdline_getarg_list(char opt);
 50 extern  int             cmdline_getarg_count(void* list);
 51 extern  int             cmdline_getopt_count(char opt);
 52 extern  int             cmdline_getarg(void* list, int num);
 53 
 54 extern  char*   cmdline_error(int err);
 55 #endif
 56 
 57 
 58 #ifndef _NSPIMGHDR_H_
 59 #define _NSPIMGHDR_H_
 60 
 61 /* This file describes the header format for the single image. The image is broken
 62    up into several pieces. The image contains this header plus 1 or more sections.
 63    Each section contains a binary block that could be a kernel, filesystem, etc. The
 64    only garentee for this is that the very first section MUST be executable. Meaning
 65    that the bootloader will be able to take the address of the header start, add the
 66    header size, and execute that binary block. The header has its own checksum. It
 67    starts hdr_size-4 bytes from the start of the header.
 68  */
 69 
 70 struct nsp_img_hdr_head
 71 {
 72         unsigned int    magic;          /* Magic number to identify this image header */
 73         unsigned int    boot_offset;    /* Offset from start of header to kernel code. */
 74         unsigned int    flags;          /* Image flags. */
 75         unsigned int    hdr_version;    /* Version of this header. */
 76         unsigned int    hdr_size;       /* The complete size of all portions of the header */
 77         unsigned int    prod_id;        /* This product id */
 78         unsigned int    rel_id;         /* Which release this is */
 79         unsigned int    version;        /* name-MMM.nnn.ooo-rxx => 0xMMnnooxx. See comment
 80                                            below */
 81         unsigned int    image_size;     /* Image size (including header) */
 82         unsigned int    info_offset;    /* Offset from start of header to info block */
 83         unsigned int    sect_info_offset;       /* Offset from start of header to section desc */
 84         unsigned int    chksum_offset;  /* Offset from start of header to chksum block */
 85 //      unsigned int    pad1;
 86 };
 87 
 88 /* The patch id is a machine readable value that takes the normal patch level, and encodes
 89    the correct numbers inside of it. The format of the patches are name-MM.NN.oo-rxx.bin.
 90    Convert MM, NN, oo, and xx into hex, and encode them as 0xMMNNooxx. Thus:
 91    att-1.2.18-r14.bin => 0x0102120e */
 92 
 93 /* The following are the flag bits for the above flags variable */
 94 /* List of NSP status flags: */
 95 #define NSP_IMG_FLAG_FAILBACK_MASK      0xF8000000
 96 
 97 /* NSP Image status flag: Flag indicates individual sections image */
 98 #define NSP_IMG_FLAG_INDIVIDUAL         0x00000001
 99 
100 /* NSP Image status flag 1: Image contains a bootable image when this bit is 0 */
101 #define NSP_IMG_FLAG_FAILBACK_1         0x08000000
102 
103 /* NSP Image status flag 2: Image contains a non-bootable image when this bit is 0 */
104 #define NSP_IMG_FLAG_FAILBACK_2         0x10000000
105 
106 /* NSP Image status flag 3: PSPBoot has tried the image when this bit is 0 */
107 #define NSP_IMG_FLAG_FAILBACK_3         0x20000000
108 
109 /* NSP Image status flag 4: Image is now secondary image when this bit is 0 */
110 #define NSP_IMG_FLAG_FAILBACK_4         0x40000000
111 
112 /* NSP Image status flag 5: Image contains a valid image when this bit is 0 */
113 #define NSP_IMG_FLAG_FAILBACK_5         0x80000000
114 
115 /* NSP Single image magic number */
116 #define NSP_IMG_MAGIC_NUMBER            0x4D544443
117 
118 
119 struct nsp_img_hdr_info
120 {
121         char    release_name[64];       /* Name of release */
122         char    image_filename[64];     /* name-mm.nn.oo-rxx.bin format */
123 };
124 
125 struct nsp_img_hdr_section_info
126 {
127         unsigned int    num_sects;      /* Number of section (and section desc blocks) in this
128                                            image */
129         unsigned int    sect_size;      /* Size of a SINGLE section_desc block */
130         unsigned int    sections_offset;        /* Offset to from start of header to the start of
131                                                    the section blocks */
132 };
133 
134 /* There will be one of more of the following stuctures in the image header. Each
135    section will have one of these blocks. */
136 struct nsp_img_hdr_sections
137 {
138         unsigned int    offset;         /* Offset of section from start of NSP_IMG_HDR_HEAD */
139         unsigned int    total_size;     /* Size of section (including pad size.) */
140         unsigned int    raw_size;       /* Size of section only */
141         unsigned int    flags;          /* Section flags */
142         unsigned int    chksum;         /* Section checksum */
143         unsigned int    type;           /* Section type. What kind of info does this section
144                                            describe */
145         char            name[16];       /* Reference name for this section. */
146 };
147 #define NSP_IMG_SECTION_TYPE_KERNEL             (0x01)
148 #define NSP_IMG_SECTION_TYPE_FILESYSTEM_ROOT    (0x02)
149 #define NSP_IMG_SECTION_TYPE_FILESYSTEM         (0x03)
150 
151 struct nsp_img_hdr
152 {
153         struct nsp_img_hdr_head         head;   /* Head portion */
154         struct nsp_img_hdr_info         info;   /* Info */
155         struct nsp_img_hdr_section_info sect_info;      /* Section block */
156         struct nsp_img_hdr_sections     sections;       /* 1 or more section_description blocks. More
157                                                    section_desc blocks will be appended here
158                                                    for each additional section needed */
159 };
160 
161 struct nsp_img_hdr_chksum
162 {
163         unsigned int    hdr_chksum;     /* The checksum for the complete header. Excepting the
164                                            checksum block */
165 };
166 
167 struct nsp_img_hdr_sections *nsp_img_hdr_get_section_ptr_by_name(struct nsp_img_hdr *hdr, char *name);
168 unsigned int nsp_img_hdr_get_section_offset_by_name(struct nsp_img_hdr *hdr, char *name);
169 unsigned int nsp_img_hdr_get_section_size_by_name(struct nsp_img_hdr *hdr, char *name);
170 
171 #endif
172 #endif /* __MKTITANIMG_H */
173 

This page was automatically generated by LXR 0.3.1.  •  OpenWrt