xref: /rk3399_ARM-atf/include/drivers/arm/css/sds.h (revision 5932d194d7de355616de46adea8248224190b63e)
1*5932d194SAntonio Nino Diaz /*
2*5932d194SAntonio Nino Diaz  * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
3*5932d194SAntonio Nino Diaz  *
4*5932d194SAntonio Nino Diaz  * SPDX-License-Identifier: BSD-3-Clause
5*5932d194SAntonio Nino Diaz  */
6*5932d194SAntonio Nino Diaz 
7*5932d194SAntonio Nino Diaz #ifndef SDS_H
8*5932d194SAntonio Nino Diaz #define SDS_H
9*5932d194SAntonio Nino Diaz 
10*5932d194SAntonio Nino Diaz /* SDS Structure Identifier defines */
11*5932d194SAntonio Nino Diaz /* AP CPU INFO defines */
12*5932d194SAntonio Nino Diaz #define SDS_AP_CPU_INFO_STRUCT_ID		1
13*5932d194SAntonio Nino Diaz #define SDS_AP_CPU_INFO_PRIMARY_CPUID_OFFSET	0x0
14*5932d194SAntonio Nino Diaz #define SDS_AP_CPU_INFO_PRIMARY_CPUID_SIZE	0x4
15*5932d194SAntonio Nino Diaz 
16*5932d194SAntonio Nino Diaz /* ROM Firmware Version defines */
17*5932d194SAntonio Nino Diaz #define SDS_ROM_VERSION_STRUCT_ID		2
18*5932d194SAntonio Nino Diaz #define SDS_ROM_VERSION_OFFSET			0x0
19*5932d194SAntonio Nino Diaz #define SDS_ROM_VERSION_SIZE 			0x4
20*5932d194SAntonio Nino Diaz 
21*5932d194SAntonio Nino Diaz /* RAM Firmware version defines */
22*5932d194SAntonio Nino Diaz #define SDS_RAM_VERSION_STRUCT_ID		3
23*5932d194SAntonio Nino Diaz #define SDS_RAM_VERSION_OFFSET			0x0
24*5932d194SAntonio Nino Diaz #define SDS_RAM_VERSION_SIZE			0x4
25*5932d194SAntonio Nino Diaz 
26*5932d194SAntonio Nino Diaz /* Platform Identity defines */
27*5932d194SAntonio Nino Diaz #define SDS_PLATFORM_IDENTITY_STRUCT_ID		4
28*5932d194SAntonio Nino Diaz #define SDS_PLATFORM_IDENTITY_ID_OFFSET		0x0
29*5932d194SAntonio Nino Diaz #define SDS_PLATFORM_IDENTITY_ID_SIZE		0x4
30*5932d194SAntonio Nino Diaz #define SDS_PLATFORM_IDENTITY_ID_CONFIG_SHIFT	28
31*5932d194SAntonio Nino Diaz #define SDS_PLATFORM_IDENTITY_ID_CONFIG_WIDTH	4
32*5932d194SAntonio Nino Diaz #define SDS_PLATFORM_IDENTITY_ID_CONFIG_MASK	\
33*5932d194SAntonio Nino Diaz 	((1 << SDS_PLATFORM_IDENTITY_ID_CONFIG_WIDTH) - 1)
34*5932d194SAntonio Nino Diaz 
35*5932d194SAntonio Nino Diaz #define SDS_PLATFORM_IDENTITY_PLAT_TYPE_OFFSET	0x4
36*5932d194SAntonio Nino Diaz #define SDS_PLATFORM_IDENTITY_PLAT_TYPE_SIZE	0x4
37*5932d194SAntonio Nino Diaz 
38*5932d194SAntonio Nino Diaz /* Reset Syndrome defines */
39*5932d194SAntonio Nino Diaz #define SDS_RESET_SYNDROME_STRUCT_ID		5
40*5932d194SAntonio Nino Diaz #define SDS_RESET_SYNDROME_OFFSET		0
41*5932d194SAntonio Nino Diaz #define SDS_RESET_SYNDROME_SIZE			4
42*5932d194SAntonio Nino Diaz #define SDS_RESET_SYNDROME_POW_ON_RESET_BIT	(1 << 0)
43*5932d194SAntonio Nino Diaz #define SDS_RESET_SYNDROME_SCP_WD_RESET_BIT	(1 << 1)
44*5932d194SAntonio Nino Diaz #define SDS_RESET_SYNDROME_AP_WD_RESET_BIT	(1 << 2)
45*5932d194SAntonio Nino Diaz #define SDS_RESET_SYNDROME_SYS_RESET_REQ_BIT	(1 << 3)
46*5932d194SAntonio Nino Diaz #define SDS_RESET_SYNDROME_M3_LOCKUP_BIT	(1 << 4)
47*5932d194SAntonio Nino Diaz 
48*5932d194SAntonio Nino Diaz /* SCP Firmware Feature Availability defines */
49*5932d194SAntonio Nino Diaz #define SDS_FEATURE_AVAIL_STRUCT_ID		6
50*5932d194SAntonio Nino Diaz #define SDS_FEATURE_AVAIL_OFFSET		0
51*5932d194SAntonio Nino Diaz #define SDS_FEATURE_AVAIL_SIZE			4
52*5932d194SAntonio Nino Diaz #define SDS_FEATURE_AVAIL_SCP_RAM_READY_BIT	(1 << 0)
53*5932d194SAntonio Nino Diaz #define SDS_FEATURE_AVAIL_DMC_READY_BIT		(1 << 1)
54*5932d194SAntonio Nino Diaz #define SDS_FEATURE_AVAIL_MSG_IF_READY_BIT	(1 << 2)
55*5932d194SAntonio Nino Diaz 
56*5932d194SAntonio Nino Diaz /* SCP BL2 Image Metadata defines */
57*5932d194SAntonio Nino Diaz #define SDS_SCP_IMG_STRUCT_ID			9
58*5932d194SAntonio Nino Diaz #define SDS_SCP_IMG_FLAG_OFFSET			0
59*5932d194SAntonio Nino Diaz #define SDS_SCP_IMG_FLAG_SIZE			4
60*5932d194SAntonio Nino Diaz #define SDS_SCP_IMG_VALID_FLAG_BIT		(1 << 0)
61*5932d194SAntonio Nino Diaz #define SDS_SCP_IMG_ADDR_OFFSET			4
62*5932d194SAntonio Nino Diaz #define SDS_SCP_IMG_ADDR_SIZE			4
63*5932d194SAntonio Nino Diaz #define SDS_SCP_IMG_SIZE_OFFSET			8
64*5932d194SAntonio Nino Diaz #define SDS_SCP_IMG_SIZE_SIZE			4
65*5932d194SAntonio Nino Diaz 
66*5932d194SAntonio Nino Diaz /* SDS Driver Error Codes */
67*5932d194SAntonio Nino Diaz #define SDS_OK				0
68*5932d194SAntonio Nino Diaz #define SDS_ERR_FAIL			-1
69*5932d194SAntonio Nino Diaz #define SDS_ERR_INVALID_PARAMS		-2
70*5932d194SAntonio Nino Diaz #define SDS_ERR_STRUCT_NOT_FOUND	-3
71*5932d194SAntonio Nino Diaz #define SDS_ERR_STRUCT_NOT_FINALIZED	-4
72*5932d194SAntonio Nino Diaz 
73*5932d194SAntonio Nino Diaz #ifndef __ASSEMBLY__
74*5932d194SAntonio Nino Diaz #include <stddef.h>
75*5932d194SAntonio Nino Diaz #include <stdint.h>
76*5932d194SAntonio Nino Diaz 
77*5932d194SAntonio Nino Diaz typedef enum {
78*5932d194SAntonio Nino Diaz 	SDS_ACCESS_MODE_NON_CACHED,
79*5932d194SAntonio Nino Diaz 	SDS_ACCESS_MODE_CACHED,
80*5932d194SAntonio Nino Diaz } sds_access_mode_t;
81*5932d194SAntonio Nino Diaz 
82*5932d194SAntonio Nino Diaz int sds_init(void);
83*5932d194SAntonio Nino Diaz int sds_struct_exists(unsigned int structure_id);
84*5932d194SAntonio Nino Diaz int sds_struct_read(uint32_t structure_id, unsigned int fld_off, void *data,
85*5932d194SAntonio Nino Diaz 		size_t size, sds_access_mode_t mode);
86*5932d194SAntonio Nino Diaz int sds_struct_write(uint32_t structure_id, unsigned int fld_off, void *data,
87*5932d194SAntonio Nino Diaz 		size_t size, sds_access_mode_t mode);
88*5932d194SAntonio Nino Diaz #endif /*__ASSEMBLY__ */
89*5932d194SAntonio Nino Diaz 
90*5932d194SAntonio Nino Diaz #endif /* SDS_H */
91