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