15932d194SAntonio Nino Diaz /* 25932d194SAntonio Nino Diaz * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. 35932d194SAntonio Nino Diaz * 45932d194SAntonio Nino Diaz * SPDX-License-Identifier: BSD-3-Clause 55932d194SAntonio Nino Diaz */ 65932d194SAntonio Nino Diaz 75932d194SAntonio Nino Diaz #ifndef SDS_H 85932d194SAntonio Nino Diaz #define SDS_H 95932d194SAntonio Nino Diaz 105932d194SAntonio Nino Diaz /* SDS Structure Identifier defines */ 115932d194SAntonio Nino Diaz /* AP CPU INFO defines */ 125932d194SAntonio Nino Diaz #define SDS_AP_CPU_INFO_STRUCT_ID 1 135932d194SAntonio Nino Diaz #define SDS_AP_CPU_INFO_PRIMARY_CPUID_OFFSET 0x0 145932d194SAntonio Nino Diaz #define SDS_AP_CPU_INFO_PRIMARY_CPUID_SIZE 0x4 155932d194SAntonio Nino Diaz 165932d194SAntonio Nino Diaz /* ROM Firmware Version defines */ 175932d194SAntonio Nino Diaz #define SDS_ROM_VERSION_STRUCT_ID 2 185932d194SAntonio Nino Diaz #define SDS_ROM_VERSION_OFFSET 0x0 195932d194SAntonio Nino Diaz #define SDS_ROM_VERSION_SIZE 0x4 205932d194SAntonio Nino Diaz 215932d194SAntonio Nino Diaz /* RAM Firmware version defines */ 225932d194SAntonio Nino Diaz #define SDS_RAM_VERSION_STRUCT_ID 3 235932d194SAntonio Nino Diaz #define SDS_RAM_VERSION_OFFSET 0x0 245932d194SAntonio Nino Diaz #define SDS_RAM_VERSION_SIZE 0x4 255932d194SAntonio Nino Diaz 265932d194SAntonio Nino Diaz /* Platform Identity defines */ 275932d194SAntonio Nino Diaz #define SDS_PLATFORM_IDENTITY_STRUCT_ID 4 285932d194SAntonio Nino Diaz #define SDS_PLATFORM_IDENTITY_ID_OFFSET 0x0 295932d194SAntonio Nino Diaz #define SDS_PLATFORM_IDENTITY_ID_SIZE 0x4 305932d194SAntonio Nino Diaz #define SDS_PLATFORM_IDENTITY_ID_CONFIG_SHIFT 28 315932d194SAntonio Nino Diaz #define SDS_PLATFORM_IDENTITY_ID_CONFIG_WIDTH 4 325932d194SAntonio Nino Diaz #define SDS_PLATFORM_IDENTITY_ID_CONFIG_MASK \ 335932d194SAntonio Nino Diaz ((1 << SDS_PLATFORM_IDENTITY_ID_CONFIG_WIDTH) - 1) 345932d194SAntonio Nino Diaz 355932d194SAntonio Nino Diaz #define SDS_PLATFORM_IDENTITY_PLAT_TYPE_OFFSET 0x4 365932d194SAntonio Nino Diaz #define SDS_PLATFORM_IDENTITY_PLAT_TYPE_SIZE 0x4 375932d194SAntonio Nino Diaz 385932d194SAntonio Nino Diaz /* Reset Syndrome defines */ 395932d194SAntonio Nino Diaz #define SDS_RESET_SYNDROME_STRUCT_ID 5 405932d194SAntonio Nino Diaz #define SDS_RESET_SYNDROME_OFFSET 0 415932d194SAntonio Nino Diaz #define SDS_RESET_SYNDROME_SIZE 4 425932d194SAntonio Nino Diaz #define SDS_RESET_SYNDROME_POW_ON_RESET_BIT (1 << 0) 435932d194SAntonio Nino Diaz #define SDS_RESET_SYNDROME_SCP_WD_RESET_BIT (1 << 1) 445932d194SAntonio Nino Diaz #define SDS_RESET_SYNDROME_AP_WD_RESET_BIT (1 << 2) 455932d194SAntonio Nino Diaz #define SDS_RESET_SYNDROME_SYS_RESET_REQ_BIT (1 << 3) 465932d194SAntonio Nino Diaz #define SDS_RESET_SYNDROME_M3_LOCKUP_BIT (1 << 4) 475932d194SAntonio Nino Diaz 485932d194SAntonio Nino Diaz /* SCP Firmware Feature Availability defines */ 495932d194SAntonio Nino Diaz #define SDS_FEATURE_AVAIL_STRUCT_ID 6 505932d194SAntonio Nino Diaz #define SDS_FEATURE_AVAIL_OFFSET 0 515932d194SAntonio Nino Diaz #define SDS_FEATURE_AVAIL_SIZE 4 525932d194SAntonio Nino Diaz #define SDS_FEATURE_AVAIL_SCP_RAM_READY_BIT (1 << 0) 535932d194SAntonio Nino Diaz #define SDS_FEATURE_AVAIL_DMC_READY_BIT (1 << 1) 545932d194SAntonio Nino Diaz #define SDS_FEATURE_AVAIL_MSG_IF_READY_BIT (1 << 2) 555932d194SAntonio Nino Diaz 565932d194SAntonio Nino Diaz /* SCP BL2 Image Metadata defines */ 575932d194SAntonio Nino Diaz #define SDS_SCP_IMG_STRUCT_ID 9 585932d194SAntonio Nino Diaz #define SDS_SCP_IMG_FLAG_OFFSET 0 595932d194SAntonio Nino Diaz #define SDS_SCP_IMG_FLAG_SIZE 4 605932d194SAntonio Nino Diaz #define SDS_SCP_IMG_VALID_FLAG_BIT (1 << 0) 615932d194SAntonio Nino Diaz #define SDS_SCP_IMG_ADDR_OFFSET 4 625932d194SAntonio Nino Diaz #define SDS_SCP_IMG_ADDR_SIZE 4 635932d194SAntonio Nino Diaz #define SDS_SCP_IMG_SIZE_OFFSET 8 645932d194SAntonio Nino Diaz #define SDS_SCP_IMG_SIZE_SIZE 4 655932d194SAntonio Nino Diaz 665932d194SAntonio Nino Diaz /* SDS Driver Error Codes */ 675932d194SAntonio Nino Diaz #define SDS_OK 0 685932d194SAntonio Nino Diaz #define SDS_ERR_FAIL -1 695932d194SAntonio Nino Diaz #define SDS_ERR_INVALID_PARAMS -2 705932d194SAntonio Nino Diaz #define SDS_ERR_STRUCT_NOT_FOUND -3 715932d194SAntonio Nino Diaz #define SDS_ERR_STRUCT_NOT_FINALIZED -4 725932d194SAntonio Nino Diaz 73*d5dfdeb6SJulius Werner #ifndef __ASSEMBLER__ 745932d194SAntonio Nino Diaz #include <stddef.h> 755932d194SAntonio Nino Diaz #include <stdint.h> 765932d194SAntonio Nino Diaz 775932d194SAntonio Nino Diaz typedef enum { 785932d194SAntonio Nino Diaz SDS_ACCESS_MODE_NON_CACHED, 795932d194SAntonio Nino Diaz SDS_ACCESS_MODE_CACHED, 805932d194SAntonio Nino Diaz } sds_access_mode_t; 815932d194SAntonio Nino Diaz 825932d194SAntonio Nino Diaz int sds_init(void); 835932d194SAntonio Nino Diaz int sds_struct_exists(unsigned int structure_id); 845932d194SAntonio Nino Diaz int sds_struct_read(uint32_t structure_id, unsigned int fld_off, void *data, 855932d194SAntonio Nino Diaz size_t size, sds_access_mode_t mode); 865932d194SAntonio Nino Diaz int sds_struct_write(uint32_t structure_id, unsigned int fld_off, void *data, 875932d194SAntonio Nino Diaz size_t size, sds_access_mode_t mode); 88*d5dfdeb6SJulius Werner #endif /*__ASSEMBLER__ */ 895932d194SAntonio Nino Diaz 905932d194SAntonio Nino Diaz #endif /* SDS_H */ 91