1*62be2a1aSMahesh Rao /* 2*62be2a1aSMahesh Rao * Copyright (c) 2024, Intel Corporation. All rights reserved. 3*62be2a1aSMahesh Rao * 4*62be2a1aSMahesh Rao * SPDX-License-Identifier: BSD-3-Clause 5*62be2a1aSMahesh Rao */ 6*62be2a1aSMahesh Rao 7*62be2a1aSMahesh Rao #ifndef SOCFPGA_ROS_H 8*62be2a1aSMahesh Rao #define SOCFPGA_ROS_H 9*62be2a1aSMahesh Rao 10*62be2a1aSMahesh Rao #include <arch_helpers.h> 11*62be2a1aSMahesh Rao #include <lib/utils_def.h> 12*62be2a1aSMahesh Rao 13*62be2a1aSMahesh Rao /** status response*/ 14*62be2a1aSMahesh Rao #define ROS_RET_OK (0x00U) 15*62be2a1aSMahesh Rao #define ROS_RET_INVALID (0x01U) 16*62be2a1aSMahesh Rao #define ROS_RET_NOT_RSU_MODE (0x02U) 17*62be2a1aSMahesh Rao #define ROS_QSPI_READ_ERROR (0x03U) 18*62be2a1aSMahesh Rao #define ROS_SPT_BAD_MAGIC_NUM (0x04U) 19*62be2a1aSMahesh Rao #define ROS_SPT_CRC_ERROR (0x05U) 20*62be2a1aSMahesh Rao #define ROS_IMAGE_INDEX_ERR (0x06U) 21*62be2a1aSMahesh Rao #define ROS_IMAGE_PARTNUM_OVFL (0x07U) 22*62be2a1aSMahesh Rao 23*62be2a1aSMahesh Rao #define ADDR_64(h, l) (((((unsigned long)(h)) & 0xffffffff) << 32) | \ 24*62be2a1aSMahesh Rao (((unsigned long)(l)) & 0xffffffff)) 25*62be2a1aSMahesh Rao 26*62be2a1aSMahesh Rao #define RSU_GET_SPT_RESP_SIZE (4U) 27*62be2a1aSMahesh Rao 28*62be2a1aSMahesh Rao #define RSU_STATUS_RES_SIZE (9U) 29*62be2a1aSMahesh Rao 30*62be2a1aSMahesh Rao #define SPT_MAGIC_NUMBER (0x57713427U) 31*62be2a1aSMahesh Rao #define SPT_VERSION (0U) 32*62be2a1aSMahesh Rao #define SPT_FLAG_RESERVED (1U) 33*62be2a1aSMahesh Rao #define SPT_FLAG_READONLY (2U) 34*62be2a1aSMahesh Rao 35*62be2a1aSMahesh Rao #define SPT_MAX_PARTITIONS (127U) 36*62be2a1aSMahesh Rao #define SPT_PARTITION_NAME_LENGTH (16U) 37*62be2a1aSMahesh Rao #define SPT_RSVD_LENGTH (4U) 38*62be2a1aSMahesh Rao #define SPT_SIZE (4096U) 39*62be2a1aSMahesh Rao /*BOOT_INFO + FACTORY_IMAGE + SPT0 + SPT1 + CPB0 + CPB1 + FACTORY_IM.SSBL+ *APP* + *APP*.SSBL*/ 40*62be2a1aSMahesh Rao #define SPT_MIN_PARTITIONS (9U) 41*62be2a1aSMahesh Rao 42*62be2a1aSMahesh Rao #define FACTORY_IMAGE "FACTORY_IMAGE" 43*62be2a1aSMahesh Rao #define FACTORY_SSBL "FACTORY_IM.SSBL" 44*62be2a1aSMahesh Rao #define SSBL_SUFFIX ".SSBL" 45*62be2a1aSMahesh Rao 46*62be2a1aSMahesh Rao typedef struct { 47*62be2a1aSMahesh Rao const uint32_t magic_number; 48*62be2a1aSMahesh Rao const uint32_t version; 49*62be2a1aSMahesh Rao const uint32_t partitions; 50*62be2a1aSMahesh Rao uint32_t checksum; 51*62be2a1aSMahesh Rao const uint32_t __RSVD[SPT_RSVD_LENGTH]; 52*62be2a1aSMahesh Rao struct { 53*62be2a1aSMahesh Rao const char name[SPT_PARTITION_NAME_LENGTH]; 54*62be2a1aSMahesh Rao const uint64_t offset; 55*62be2a1aSMahesh Rao const uint32_t length; 56*62be2a1aSMahesh Rao const uint32_t flags; 57*62be2a1aSMahesh Rao } partition[SPT_MAX_PARTITIONS]; 58*62be2a1aSMahesh Rao } __packed spt_table_t; 59*62be2a1aSMahesh Rao 60*62be2a1aSMahesh Rao uint32_t ros_qspi_get_ssbl_offset(unsigned long *offset); 61*62be2a1aSMahesh Rao 62*62be2a1aSMahesh Rao #endif /* SOCFPGA_ROS_H */ 63