xref: /aosp_15_r20/external/coreboot/src/soc/ti/am335x/header.h (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #ifndef __SOC_TI_AM335X_HEADER_H
4 #define __SOC_TI_AM335X_HEADER_H
5 
6 #include <stdint.h>
7 
8 struct configuration_header_toc_item {
9 	// Offset from the start address of the TOC to the actual address of
10 	// a section.
11 	uint32_t start;
12 
13 	// Size of a section.
14 	uint32_t size;
15 
16 	// Reserved.
17 	uint32_t reserved[3];
18 
19 	// 12-character name of a section, including the zero (\0) terminator.
20 	char filename[12];
21 } __packed;
22 
23 struct configuration_header_settings {
24 	// Key used for section verification.
25 	uint32_t key;
26 
27 	// Enables or disables the section.
28 	// 00h: Disable.
29 	// Other: Enable.
30 	uint8_t valid;
31 
32 	// Configuration header version.
33 	uint8_t version;
34 
35 	// Reserved.
36 	uint16_t reserved;
37 
38 	// Flags. It's not clear what this is used for.
39 	uint32_t flags;
40 } __packed;
41 
42 struct gp_device_header {
43 	// Size of the image.
44 	uint32_t size;
45 
46 	// Address to store the image/code entry point.
47 	uint32_t destination;
48 } __packed;
49 
50 struct config_headers {
51 	// The table of contents.
52 	struct configuration_header_toc_item toc_chsettings;
53 	struct configuration_header_toc_item toc_end;
54 
55 	// An inert instance of chsettings.
56 	struct configuration_header_settings chsettings;
57 } __packed;
58 
59 struct omap_image_headers {
60 	union {
61 		struct config_headers config_headers;
62 		uint8_t bytes[512];
63 	};
64 	struct gp_device_header image_header;
65 };
66 
67 #endif
68