Blame view
tools/imximage.h
4.05 KB
8edcde5e4 mkimage: Add Free... |
1 2 3 4 |
/* * (C) Copyright 2009 * Stefano Babic, DENX Software Engineering, sbabic@denx.de. * |
3765b3e7b Coding Style clea... |
5 |
* SPDX-License-Identifier: GPL-2.0+ |
8edcde5e4 mkimage: Add Free... |
6 7 8 9 |
*/ #ifndef _IMXIMAGE_H_ #define _IMXIMAGE_H_ |
8a1edd7d5 imximage: Add MX5... |
10 11 |
#define MAX_HW_CFG_SIZE_V2 121 /* Max number of registers imx can set for v2 */ #define MAX_HW_CFG_SIZE_V1 60 /* Max number of registers imx can set for v1 */ |
8edcde5e4 mkimage: Add Free... |
12 13 |
#define APP_CODE_BARKER 0xB1 #define DCD_BARKER 0xB17219E9 |
8edcde5e4 mkimage: Add Free... |
14 |
|
6cb83829a tools: arm: imx: ... |
15 16 17 18 19 |
/* * NOTE: This file must be kept in sync with arch/arm/include/asm/\ * imx-common/imximage.cfg because tools/imximage.c can not * cross-include headers from arch/arm/ and vice-versa. */ |
8edcde5e4 mkimage: Add Free... |
20 |
#define CMD_DATA_STR "DATA" |
377e367a8 tools: dynamicall... |
21 22 |
/* Initial Vector Table Offset */ |
49d3e2721 imximage: Remove ... |
23 |
#define FLASH_OFFSET_UNDEFINED 0xFFFFFFFF |
8edcde5e4 mkimage: Add Free... |
24 25 26 27 28 |
#define FLASH_OFFSET_STANDARD 0x400 #define FLASH_OFFSET_NAND FLASH_OFFSET_STANDARD #define FLASH_OFFSET_SD FLASH_OFFSET_STANDARD #define FLASH_OFFSET_SPI FLASH_OFFSET_STANDARD #define FLASH_OFFSET_ONENAND 0x100 |
19b409c00 imximage: Add sup... |
29 30 |
#define FLASH_OFFSET_NOR 0x1000 #define FLASH_OFFSET_SATA FLASH_OFFSET_STANDARD |
8edcde5e4 mkimage: Add Free... |
31 |
|
377e367a8 tools: dynamicall... |
32 33 34 35 36 37 38 39 40 |
/* Initial Load Region Size */ #define FLASH_LOADSIZE_UNDEFINED 0xFFFFFFFF #define FLASH_LOADSIZE_STANDARD 0x1000 #define FLASH_LOADSIZE_NAND FLASH_LOADSIZE_STANDARD #define FLASH_LOADSIZE_SD FLASH_LOADSIZE_STANDARD #define FLASH_LOADSIZE_SPI FLASH_LOADSIZE_STANDARD #define FLASH_LOADSIZE_ONENAND 0x400 #define FLASH_LOADSIZE_NOR 0x0 /* entire image */ #define FLASH_LOADSIZE_SATA FLASH_LOADSIZE_STANDARD |
8a1edd7d5 imximage: Add MX5... |
41 42 43 44 45 46 |
#define IVT_HEADER_TAG 0xD1 #define IVT_VERSION 0x40 #define DCD_HEADER_TAG 0xD2 #define DCD_COMMAND_TAG 0xCC #define DCD_VERSION 0x40 #define DCD_COMMAND_PARAM 0x4 |
8edcde5e4 mkimage: Add Free... |
47 48 |
enum imximage_cmd { CMD_INVALID, |
8a1edd7d5 imximage: Add MX5... |
49 |
CMD_IMAGE_VERSION, |
8edcde5e4 mkimage: Add Free... |
50 |
CMD_BOOT_FROM, |
6cb83829a tools: arm: imx: ... |
51 |
CMD_BOOT_OFFSET, |
0187c985a tools: add suppor... |
52 53 |
CMD_DATA, CMD_CSF, |
8edcde5e4 mkimage: Add Free... |
54 55 56 57 58 59 60 61 62 |
}; enum imximage_fld_types { CFG_INVALID = -1, CFG_COMMAND, CFG_REG_SIZE, CFG_REG_ADDRESS, CFG_REG_VALUE }; |
8a1edd7d5 imximage: Add MX5... |
63 64 65 66 67 |
enum imximage_version { IMXIMAGE_VER_INVALID = -1, IMXIMAGE_V1 = 1, IMXIMAGE_V2 }; |
8edcde5e4 mkimage: Add Free... |
68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
typedef struct { uint32_t type; /* Type of pointer (byte, halfword, word, wait/read) */ uint32_t addr; /* Address to write to */ uint32_t value; /* Data to write */ } dcd_type_addr_data_t; typedef struct { uint32_t barker; /* Barker for sanity check */ uint32_t length; /* Device configuration length (without preamble) */ } dcd_preamble_t; typedef struct { dcd_preamble_t preamble; |
8a1edd7d5 imximage: Add MX5... |
82 83 |
dcd_type_addr_data_t addr_data[MAX_HW_CFG_SIZE_V1]; } dcd_v1_t; |
8edcde5e4 mkimage: Add Free... |
84 85 86 87 88 89 |
typedef struct { uint32_t app_code_jump_vector; uint32_t app_code_barker; uint32_t app_code_csf; uint32_t dcd_ptr_ptr; |
5b28e913f mkimage: SEGFAULT... |
90 |
uint32_t super_root_key; |
8edcde5e4 mkimage: Add Free... |
91 92 |
uint32_t dcd_ptr; uint32_t app_dest_ptr; |
8a1edd7d5 imximage: Add MX5... |
93 |
} flash_header_v1_t; |
8edcde5e4 mkimage: Add Free... |
94 95 96 97 |
typedef struct { uint32_t length; /* Length of data to be read from flash */ } flash_cfg_parms_t; |
8a1edd7d5 imximage: Add MX5... |
98 99 100 |
typedef struct { flash_header_v1_t fhdr; dcd_v1_t dcd_table; |
8edcde5e4 mkimage: Add Free... |
101 |
flash_cfg_parms_t ext_header; |
8a1edd7d5 imximage: Add MX5... |
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
} imx_header_v1_t; typedef struct { uint32_t addr; uint32_t value; } dcd_addr_data_t; typedef struct { uint8_t tag; uint16_t length; uint8_t version; } __attribute__((packed)) ivt_header_t; typedef struct { uint8_t tag; uint16_t length; uint8_t param; } __attribute__((packed)) write_dcd_command_t; typedef struct { ivt_header_t header; write_dcd_command_t write_dcd_command; dcd_addr_data_t addr_data[MAX_HW_CFG_SIZE_V2]; } dcd_v2_t; typedef struct { uint32_t start; uint32_t size; uint32_t plugin; } boot_data_t; typedef struct { ivt_header_t header; uint32_t entry; uint32_t reserved1; uint32_t dcd_ptr; uint32_t boot_data_ptr; uint32_t self; uint32_t csf; uint32_t reserved2; } flash_header_v2_t; typedef struct { flash_header_v2_t fhdr; boot_data_t boot_data; dcd_v2_t dcd_table; } imx_header_v2_t; |
895d99667 imx: Align the im... |
149 |
/* The header must be aligned to 4k on MX53 for NAND boot */ |
8a1edd7d5 imximage: Add MX5... |
150 151 152 153 154 |
struct imx_header { union { imx_header_v1_t hdr_v1; imx_header_v2_t hdr_v2; } header; |
377e367a8 tools: dynamicall... |
155 |
}; |
8edcde5e4 mkimage: Add Free... |
156 |
|
8a1edd7d5 imximage: Add MX5... |
157 158 159 160 161 162 163 164 |
typedef void (*set_dcd_val_t)(struct imx_header *imxhdr, char *name, int lineno, int fld, uint32_t value, uint32_t off); typedef void (*set_dcd_rst_t)(struct imx_header *imxhdr, uint32_t dcd_len, char *name, int lineno); |
ad0826dcd imximage: change ... |
165 166 |
typedef void (*set_imx_hdr_t)(struct imx_header *imxhdr, uint32_t dcd_len, uint32_t entry_point, uint32_t flash_offset); |
8edcde5e4 mkimage: Add Free... |
167 168 |
#endif /* _IMXIMAGE_H_ */ |