1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (C) 2020 - 2025 Intel Corporation 4 */ 5 6 #ifndef IPU7_FW_BOOT_ABI_H 7 #define IPU7_FW_BOOT_ABI_H 8 9 #include "ipu7_fw_common_abi.h" 10 #include "ipu7_fw_syscom_abi.h" 11 12 #define IA_GOFO_FWLOG_SEVERITY_CRIT (0U) 13 #define IA_GOFO_FWLOG_SEVERITY_ERROR (1U) 14 #define IA_GOFO_FWLOG_SEVERITY_WARNING (2U) 15 #define IA_GOFO_FWLOG_SEVERITY_INFO (3U) 16 #define IA_GOFO_FWLOG_SEVERITY_DEBUG (4U) 17 #define IA_GOFO_FWLOG_SEVERITY_VERBOSE (5U) 18 #define IA_GOFO_FWLOG_MAX_LOGGER_SOURCES (64U) 19 20 #define LOGGER_CONFIG_CHANNEL_ENABLE_HWPRINTF_BITMASK BIT(0) 21 #define LOGGER_CONFIG_CHANNEL_ENABLE_SYSCOM_BITMASK BIT(1) 22 #define LOGGER_CONFIG_CHANNEL_ENABLE_ALL_BITMASK \ 23 (LOGGER_CONFIG_CHANNEL_ENABLE_HWPRINTF_BITMASK | \ 24 LOGGER_CONFIG_CHANNEL_ENABLE_SYSCOM_BITMASK) 25 26 struct ia_gofo_logger_config { 27 u8 use_source_severity; 28 u8 source_severity[IA_GOFO_FWLOG_MAX_LOGGER_SOURCES]; 29 u8 use_channels_enable_bitmask; 30 u8 channels_enable_bitmask; 31 u8 padding[1]; 32 ia_gofo_addr_t hw_printf_buffer_base_addr; 33 u32 hw_printf_buffer_size_bytes; 34 }; 35 36 #pragma pack(push, 1) 37 38 #define IA_GOFO_BUTTRESS_FW_BOOT_PARAMS_MAX_REG_IDX_PER_APP \ 39 ((u32)IA_GOFO_FW_BOOT_ID_MAX) 40 #define IA_GOFO_BUTTRESS_FW_BOOT_PARAMS_IS_OFFSET (0U) 41 #define IA_GOFO_BUTTRESS_FW_BOOT_PARAMS_PS_OFFSET \ 42 ((IA_GOFO_BUTTRESS_FW_BOOT_PARAMS_IS_OFFSET) + \ 43 (u32)(IA_GOFO_BUTTRESS_FW_BOOT_PARAMS_MAX_REG_IDX_PER_APP)) 44 #define IA_GOFO_BUTTRESS_FW_BOOT_PARAMS_PRIMARY_OFFSET (0U) 45 #define IA_GOFO_CCG_IPU_BUTTRESS_FW_BOOT_PARAMS_SECONDARY_OFFSET (0x3000U / 4U) 46 #define IA_GOFO_HKR_IPU_BUTTRESS_FW_BOOT_PARAMS_SECONDARY_OFFSET \ 47 (IA_GOFO_BUTTRESS_FW_BOOT_PARAMS_MAX_REG_IDX_PER_APP * 2U) 48 #define IA_GOFO_HKR_HIF_BUTTRESS_FW_BOOT_PARAMS_SECONDARY_OFFSET \ 49 (IA_GOFO_BUTTRESS_FW_BOOT_PARAMS_MAX_REG_IDX_PER_APP) 50 #define IA_GOFO_CCG_IPU_BUTTRESS_FW_BOOT_PARAMS_MAX_REG_IDX \ 51 (IA_GOFO_BUTTRESS_FW_BOOT_PARAMS_MAX_REG_IDX_PER_APP * 4U) 52 #define IA_GOFO_HKR_IPU_BUTTRESS_FW_BOOT_PARAMS_MAX_REG_IDX \ 53 (IA_GOFO_BUTTRESS_FW_BOOT_PARAMS_MAX_REG_IDX_PER_APP * 4U) 54 55 #define IA_GOFO_BOOT_RESERVED_SIZE (58U) 56 #define IA_GOFO_BOOT_SECONDARY_RESERVED_SIZE (IA_GOFO_BOOT_RESERVED_SIZE) 57 #define IA_GOFO_BOOT_SECONDARY_RESERVED_FIELDS \ 58 (sizeof(ia_gofo_addr_t) + sizeof(ia_gofo_addr_t) + sizeof(u32)) 59 60 enum ia_gofo_buttress_reg_id { 61 IA_GOFO_FW_BOOT_CONFIG_ID = 0, 62 IA_GOFO_FW_BOOT_STATE_ID = 1, 63 IA_GOFO_FW_BOOT_RESERVED1_ID = IA_GOFO_FW_BOOT_STATE_ID, 64 IA_GOFO_FW_BOOT_SYSCOM_QUEUE_INDICES_BASE_ID = 2, 65 IA_GOFO_FW_BOOT_UNTRUSTED_ADDR_MIN_ID = 3, 66 IA_GOFO_FW_BOOT_RESERVED0_ID = IA_GOFO_FW_BOOT_UNTRUSTED_ADDR_MIN_ID, 67 IA_GOFO_FW_BOOT_MESSAGING_VERSION_ID = 4, 68 IA_GOFO_FW_BOOT_ID_MAX 69 }; 70 71 enum ia_gofo_boot_uc_tile_frequency_units { 72 IA_GOFO_FW_BOOT_UC_FREQUENCY_UNITS_MHZ = 0, 73 IA_GOFO_FW_BOOT_UC_FREQUENCY_UNITS_HZ = 1, 74 IA_GOFO_FW_BOOT_UC_FREQUENCY_UNITS_N 75 }; 76 77 #define IA_GOFO_FW_BOOT_STATE_IS_CRITICAL(boot_state) \ 78 (0xdead0000U == ((boot_state) & 0xffff0000U)) 79 80 struct ia_gofo_boot_config { 81 u32 length; 82 struct ia_gofo_version_s config_version; 83 struct ia_gofo_msg_version_list client_version_support; 84 ia_gofo_addr_t pkg_dir; 85 ia_gofo_addr_t subsys_config; 86 u32 uc_tile_frequency; 87 u16 checksum; 88 u8 uc_tile_frequency_units; 89 u8 padding[1]; 90 u32 reserved[IA_GOFO_BOOT_RESERVED_SIZE]; 91 struct syscom_config_s syscom_context_config; 92 }; 93 94 struct ia_gofo_secondary_boot_config { 95 u32 length; 96 struct ia_gofo_version_s config_version; 97 struct ia_gofo_msg_version_list client_version_support; 98 u8 reserved1[IA_GOFO_BOOT_SECONDARY_RESERVED_FIELDS]; 99 u16 checksum; 100 u8 padding[2]; 101 u32 reserved2[IA_GOFO_BOOT_SECONDARY_RESERVED_SIZE]; 102 struct syscom_config_s syscom_context_config; 103 }; 104 105 #pragma pack(pop) 106 107 #define IA_GOFO_WDT_TIMEOUT_ERR 0xdead0401U 108 #define IA_GOFO_MEM_FATAL_DME_ERR 0xdead0801U 109 #define IA_GOFO_MEM_UNCORRECTABLE_LOCAL_ERR 0xdead0802U 110 #define IA_GOFO_MEM_UNCORRECTABLE_DIRTY_ERR 0xdead0803U 111 #define IA_GOFO_MEM_UNCORRECTABLE_DTAG_ERR 0xdead0804U 112 #define IA_GOFO_MEM_UNCORRECTABLE_CACHE_ERR 0xdead0805U 113 #define IA_GOFO_DOUBLE_EXCEPTION_ERR 0xdead0806U 114 #define IA_GOFO_BIST_DMEM_FAULT_DETECTION_ERR 0xdead1000U 115 #define IA_GOFO_BIST_DATA_INTEGRITY_FAILURE 0xdead1010U 116 117 enum ia_gofo_boot_state { 118 IA_GOFO_FW_BOOT_STATE_SECONDARY_BOOT_CONFIG_READY = 0x57a7b000U, 119 IA_GOFO_FW_BOOT_STATE_UNINIT = 0x57a7e000U, 120 IA_GOFO_FW_BOOT_STATE_STARTING_0 = 0x57a7d000U, 121 IA_GOFO_FW_BOOT_STATE_CACHE_INIT_DONE = 0x57a7d010U, 122 IA_GOFO_FW_BOOT_STATE_MEM_INIT_DONE = 0x57a7d020U, 123 IA_GOFO_FW_BOOT_STATE_STACK_INIT_DONE = 0x57a7d030U, 124 IA_GOFO_FW_BOOT_STATE_EARLY_BOOT_DONE = 0x57a7d100U, 125 IA_GOFO_FW_BOOT_STATE_BOOT_CONFIG_START = 0x57a7d200U, 126 IA_GOFO_FW_BOOT_STATE_QUEUE_INIT_DONE = 0x57a7d300U, 127 IA_GOFO_FW_BOOT_STATE_READY = 0x57a7e100U, 128 IA_GOFO_FW_BOOT_STATE_CRIT_UNSPECIFIED = 0xdead0001U, 129 IA_GOFO_FW_BOOT_STATE_CRIT_CFG_PTR = 0xdead0101U, 130 IA_GOFO_FW_BOOT_STATE_CRIT_CFG_VERSION = 0xdead0201U, 131 IA_GOFO_FW_BOOT_STATE_CRIT_MSG_VERSION = 0xdead0301U, 132 IA_GOFO_FW_BOOT_STATE_CRIT_WDT_TIMEOUT = IA_GOFO_WDT_TIMEOUT_ERR, 133 IA_GOFO_FW_BOOT_STATE_WRONG_DATA_SECTION_UNPACKING = 0xdead0501U, 134 IA_GOFO_FW_BOOT_STATE_WRONG_RO_DATA_SECTION_UNPACKING = 0xdead0601U, 135 IA_GOFO_FW_BOOT_STATE_INVALID_UNTRUSTED_ADDR_MIN = 0xdead0701U, 136 IA_GOFO_FW_BOOT_STATE_CRIT_MEM_FATAL_DME = IA_GOFO_MEM_FATAL_DME_ERR, 137 IA_GOFO_FW_BOOT_STATE_CRIT_MEM_UNCORRECTABLE_LOCAL = 138 IA_GOFO_MEM_UNCORRECTABLE_LOCAL_ERR, 139 IA_GOFO_FW_BOOT_STATE_CRIT_MEM_UNCORRECTABLE_DIRTY = 140 IA_GOFO_MEM_UNCORRECTABLE_DIRTY_ERR, 141 IA_GOFO_FW_BOOT_STATE_CRIT_MEM_UNCORRECTABLE_DTAG = 142 IA_GOFO_MEM_UNCORRECTABLE_DTAG_ERR, 143 IA_GOFO_FW_BOOT_STATE_CRIT_MEM_UNCORRECTABLE_CACHE = 144 IA_GOFO_MEM_UNCORRECTABLE_CACHE_ERR, 145 IA_GOFO_FW_BOOT_STATE_CRIT_DOUBLE_EXCEPTION = 146 IA_GOFO_DOUBLE_EXCEPTION_ERR, 147 IA_GOFO_FW_BOOT_STATE_CRIT_BIST_DMEM_FAULT_DETECTION_ERR = 148 IA_GOFO_BIST_DMEM_FAULT_DETECTION_ERR, 149 IA_GOFO_FW_BOOT_STATE_CRIT_DATA_INTEGRITY_FAILURE = 0xdead1010U, 150 IA_GOFO_FW_BOOT_STATE_CRIT_STACK_CHK_FAILURE = 0xdead1011U, 151 IA_GOFO_FW_BOOT_STATE_CRIT_SYSCOM_CONTEXT_INTEGRITY_FAILURE = 152 0xdead1012U, 153 IA_GOFO_FW_BOOT_STATE_CRIT_MPU_CONFIG_FAILURE = 0xdead1013U, 154 IA_GOFO_FW_BOOT_STATE_CRIT_SHARED_BUFFER_FAILURE = 0xdead1014U, 155 IA_GOFO_FW_BOOT_STATE_CRIT_CMEM_FAILURE = 0xdead1015U, 156 IA_GOFO_FW_BOOT_STATE_SHUTDOWN_CMD = 0x57a7f001U, 157 IA_GOFO_FW_BOOT_STATE_SHUTDOWN_START = 0x57a7e200U, 158 IA_GOFO_FW_BOOT_STATE_INACTIVE = 0x57a7e300U, 159 IA_GOFO_FW_BOOT_HW_CMD_ACK_TIMEOUT = 0x57a7e400U, 160 IA_GOFO_FW_BOOT_SYSTEM_CYCLES_ERROR = 0x57a7e500U 161 }; 162 163 #endif 164