1 /* BPDT version 1.7 support */ 2 /* SPDX-License-Identifier: GPL-2.0-only */ 3 4 #ifndef SOC_INTEL_COMMON_CSE_LAYOUT_H 5 #define SOC_INTEL_COMMON_CSE_LAYOUT_H 6 7 #include <sys/types.h> 8 9 enum bpdt_entry_type { 10 SMIP = 0, 11 CSE_RBE = 1, 12 CSE_BUP = 2, 13 UCODE = 3, 14 IBB = 4, 15 S_BPDT = 5, 16 OBB = 6, 17 CSE_MAIN = 7, 18 ISH = 8, 19 CSE_IDLM = 9, 20 IFP_OVERRIDE = 10, 21 UTOK = 11, 22 UFS_PHY = 12, 23 UFS_GPP = 13, 24 PMC = 14, 25 IUNIT = 15, 26 NVM_CFG = 16, 27 UEP = 17, 28 OEM_KM = 20, 29 PAVP = 22, 30 IOM_FW = 23, 31 NPHY_FW = 24, 32 TBT_FW = 25, 33 ICC = 32, 34 35 MAX_SUBPARTS, 36 }; 37 38 struct bpdt_header { 39 uint32_t signature; /* BPDT_SIGNATURE */ 40 uint16_t descriptor_count; 41 uint8_t version; /* Layout 1.7 = 2 */ 42 uint8_t flags; 43 uint32_t checksum; 44 uint32_t ifwi_version; 45 struct { 46 uint16_t major; 47 uint16_t minor; 48 uint16_t build; 49 uint16_t hotfix; 50 } fit_tool_version; 51 } __packed; 52 53 struct cse_layout { 54 uint8_t rom_bypass[16]; 55 uint16_t size; 56 uint16_t redundancy; 57 uint32_t checksum; 58 uint32_t data_offset; 59 uint32_t data_size; 60 uint32_t bp1_offset; 61 uint32_t bp1_size; 62 uint32_t bp2_offset; 63 uint32_t bp2_size; 64 uint32_t bp3_offset; 65 uint32_t bp3_size; 66 uint32_t bp4_offset; 67 uint32_t bp4_size; 68 uint32_t bp5_offset; 69 uint32_t bp5_size; 70 uint32_t temp_base_addr; 71 uint32_t temp_base_size; 72 uint32_t flog_offset; 73 uint32_t flog_size; 74 } __packed; 75 76 struct bpdt_entry { 77 uint32_t type; 78 uint32_t offset; 79 uint32_t size; 80 } __packed; 81 82 struct subpart_hdr { 83 uint32_t signature; /* SUBPART_SIGNATURE */ 84 uint32_t count; 85 uint8_t hdr_version; /* Header version = 2 */ 86 uint8_t entry_version; /* Entry version = 1 */ 87 uint8_t length; 88 uint8_t reserved; 89 uint8_t name[4]; 90 uint32_t checksum; 91 } __packed; 92 93 struct subpart_entry { 94 uint8_t name[12]; 95 uint32_t offset_bytes; 96 uint32_t length; 97 uint32_t rsvd2; 98 } __packed; 99 100 struct subpart_entry_manifest_header { 101 uint8_t reserved[36]; 102 struct { 103 uint16_t major; 104 uint16_t minor; 105 uint16_t build; 106 uint16_t hotfix; 107 } binary_version; 108 } __packed; 109 110 #define BPDT_HEADER_SZ sizeof(struct bpdt_header) 111 #define BPDT_ENTRY_SZ sizeof(struct bpdt_entry) 112 #define SUBPART_HEADER_SZ sizeof(struct subpart_hdr) 113 #define SUBPART_ENTRY_SZ sizeof(struct subpart_entry) 114 #define SUBPART_MANIFEST_HDR_SZ sizeof(struct subpart_entry_manifest_header) 115 116 #endif // SOC_INTEL_COMMON_CSE_LAYOUT_H 117