xref: /rk3399_ARM-atf/drivers/arm/css/sds/sds_private.h (revision 01c44dddbda2bf74dff4bdbaee43177236982887)
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_PRIVATE_H
85932d194SAntonio Nino Diaz #define SDS_PRIVATE_H
95932d194SAntonio Nino Diaz 
105932d194SAntonio Nino Diaz /* SDS Header defines */
115932d194SAntonio Nino Diaz #define SDS_HEADER_ID_SHIFT			0
125932d194SAntonio Nino Diaz #define SDS_HEADER_ID_WIDTH			16
135932d194SAntonio Nino Diaz #define SDS_HEADER_ID_MASK			((1 << SDS_HEADER_ID_WIDTH) - 1)
145932d194SAntonio Nino Diaz 
155932d194SAntonio Nino Diaz #define SDS_HEADER_MINOR_VERSION_WIDTH		8
165932d194SAntonio Nino Diaz #define SDS_HEADER_MINOR_VERSION_SHIFT		16
175932d194SAntonio Nino Diaz #define SDS_HEADER_MAJOR_VERSION_WIDTH		8
185932d194SAntonio Nino Diaz 
195932d194SAntonio Nino Diaz #define MAKE_SDS_HEADER_VERSION(major, minor)	\
205932d194SAntonio Nino Diaz 	(((((major) & 0xff) << SDS_HEADER_MINOR_VERSION_WIDTH) | ((minor) & 0xff)))
215932d194SAntonio Nino Diaz #define SDS_HEADER_VERSION_MASK			\
225932d194SAntonio Nino Diaz 	((1 << (SDS_HEADER_MINOR_VERSION_WIDTH + SDS_HEADER_MAJOR_VERSION_WIDTH)) - 1)
235932d194SAntonio Nino Diaz 
245932d194SAntonio Nino Diaz #define SDS_HEADER_VERSION			MAKE_SDS_HEADER_VERSION(1, 0)
255932d194SAntonio Nino Diaz #define SDS_HEADER_STRUCT_SIZE_WIDTH		23
265932d194SAntonio Nino Diaz #define SDS_HEADER_STRUCT_SIZE_SHIFT		1
275932d194SAntonio Nino Diaz #define SDS_HEADER_STRUCT_SIZE_MASK		((1 << SDS_HEADER_STRUCT_SIZE_WIDTH) - 1)
285932d194SAntonio Nino Diaz #define SDS_HEADER_VALID_MASK			0x1
295932d194SAntonio Nino Diaz #define SDS_HEADER_VALID_SHIFT			0
305932d194SAntonio Nino Diaz #define SDS_HEADER_SIZE				0x8
315932d194SAntonio Nino Diaz 
325932d194SAntonio Nino Diaz /* Arbitrary, 16 bit value that indicates a valid SDS Memory Region */
335932d194SAntonio Nino Diaz #define SDS_REGION_SIGNATURE			0xAA7A
345932d194SAntonio Nino Diaz #define SDS_REGION_SIGNATURE_WIDTH		16
355932d194SAntonio Nino Diaz #define SDS_REGION_SIGNATURE_SHIFT		0
365932d194SAntonio Nino Diaz #define SDS_REGION_SIGNATURE_MASK		((1 << SDS_REGION_SIGNATURE_WIDTH) - 1)
375932d194SAntonio Nino Diaz 
385932d194SAntonio Nino Diaz #define SDS_REGION_STRUCT_COUNT_SHIFT		16
395932d194SAntonio Nino Diaz #define SDS_REGION_STRUCT_COUNT_WIDTH		8
405932d194SAntonio Nino Diaz #define SDS_REGION_STRUCT_COUNT_MASK		((1 << SDS_REGION_STRUCT_COUNT_WIDTH) - 1)
415932d194SAntonio Nino Diaz 
425932d194SAntonio Nino Diaz #define SDS_REGION_SCH_MINOR_SHIFT		24
435932d194SAntonio Nino Diaz #define SDS_REGION_SCH_MINOR_WIDTH		4
445932d194SAntonio Nino Diaz #define SDS_REGION_SCH_MINOR_MASK		((1 << SDS_REGION_SCH_MINOR_WIDTH) - 1)
455932d194SAntonio Nino Diaz 
465932d194SAntonio Nino Diaz #define SDS_REGION_SCH_MAJOR_SHIFT		28
475932d194SAntonio Nino Diaz #define SDS_REGION_SCH_MAJOR_WIDTH		4
485932d194SAntonio Nino Diaz #define SDS_REGION_SCH_MAJOR_MASK		((1 << SDS_REGION_SCH_MAJOR_WIDTH) - 1)
495932d194SAntonio Nino Diaz 
505932d194SAntonio Nino Diaz #define SDS_REGION_SCH_VERSION_MASK		\
515932d194SAntonio Nino Diaz 	((1 << (SDS_REGION_SCH_MINOR_WIDTH + SDS_REGION_SCH_MAJOR_WIDTH)) - 1)
525932d194SAntonio Nino Diaz 
535932d194SAntonio Nino Diaz #define MAKE_SDS_REGION_SCH_VERSION(maj, min)	\
545932d194SAntonio Nino Diaz 	((((maj) & SDS_REGION_SCH_MAJOR_MASK) << SDS_REGION_SCH_MINOR_WIDTH) |	\
555932d194SAntonio Nino Diaz 	((min) & SDS_REGION_SCH_MINOR_MASK))
565932d194SAntonio Nino Diaz 
575932d194SAntonio Nino Diaz #define SDS_REGION_SCH_VERSION			MAKE_SDS_REGION_SCH_VERSION(1, 0)
585932d194SAntonio Nino Diaz #define SDS_REGION_REGIONSIZE_OFFSET		0x4
595932d194SAntonio Nino Diaz #define SDS_REGION_DESC_SIZE			0x8
605932d194SAntonio Nino Diaz 
61*d5dfdeb6SJulius Werner #ifndef __ASSEMBLER__
625932d194SAntonio Nino Diaz #include <stddef.h>
635932d194SAntonio Nino Diaz #include <stdint.h>
645932d194SAntonio Nino Diaz 
655932d194SAntonio Nino Diaz /* Header containing Shared Data Structure metadata */
665932d194SAntonio Nino Diaz typedef struct structure_header {
675932d194SAntonio Nino Diaz 	uint32_t reg[2];
685932d194SAntonio Nino Diaz } struct_header_t;
695932d194SAntonio Nino Diaz 
705932d194SAntonio Nino Diaz #define GET_SDS_HEADER_ID(_header)			\
715932d194SAntonio Nino Diaz 	((((struct_header_t *)(_header))->reg[0]) & SDS_HEADER_ID_MASK)
725932d194SAntonio Nino Diaz #define GET_SDS_HEADER_VERSION(_header)			\
735932d194SAntonio Nino Diaz 	(((((struct_header_t *)(_header))->reg[0]) >> SDS_HEADER_MINOR_VERSION_SHIFT)\
745932d194SAntonio Nino Diaz 	& SDS_HEADER_VERSION_MASK)
755932d194SAntonio Nino Diaz #define GET_SDS_HEADER_STRUCT_SIZE(_header)		\
765932d194SAntonio Nino Diaz 	(((((struct_header_t *)(_header))->reg[1]) >> SDS_HEADER_STRUCT_SIZE_SHIFT)\
775932d194SAntonio Nino Diaz 	& SDS_HEADER_STRUCT_SIZE_MASK)
785932d194SAntonio Nino Diaz #define IS_SDS_HEADER_VALID(_header)			\
795932d194SAntonio Nino Diaz 	((((struct_header_t *)(_header))->reg[1]) & SDS_HEADER_VALID_MASK)
805932d194SAntonio Nino Diaz #define GET_SDS_STRUCT_FIELD(_header, _field_offset)	\
815932d194SAntonio Nino Diaz 	((((uint8_t *)(_header)) + sizeof(struct_header_t)) + (_field_offset))
825932d194SAntonio Nino Diaz 
835932d194SAntonio Nino Diaz /* Region Descriptor describing the SDS Memory Region */
845932d194SAntonio Nino Diaz typedef struct region_descriptor {
855932d194SAntonio Nino Diaz 	uint32_t reg[2];
865932d194SAntonio Nino Diaz } region_desc_t;
875932d194SAntonio Nino Diaz 
885932d194SAntonio Nino Diaz #define IS_SDS_REGION_VALID(region)			\
895932d194SAntonio Nino Diaz 	(((((region_desc_t *)(region))->reg[0]) & SDS_REGION_SIGNATURE_MASK) == SDS_REGION_SIGNATURE)
905932d194SAntonio Nino Diaz #define GET_SDS_REGION_STRUCTURE_COUNT(region)		\
915932d194SAntonio Nino Diaz 	(((((region_desc_t *)(region))->reg[0]) >> SDS_REGION_STRUCT_COUNT_SHIFT)\
925932d194SAntonio Nino Diaz 	& SDS_REGION_STRUCT_COUNT_MASK)
935932d194SAntonio Nino Diaz #define GET_SDS_REGION_SCHEMA_VERSION(region)		\
945932d194SAntonio Nino Diaz 	(((((region_desc_t *)(region))->reg[0]) >> SDS_REGION_SCH_MINOR_SHIFT)\
955932d194SAntonio Nino Diaz 	& SDS_REGION_SCH_VERSION_MASK)
965932d194SAntonio Nino Diaz #define GET_SDS_REGION_SIZE(region)		((((region_desc_t *)(region))->reg[1]))
975932d194SAntonio Nino Diaz 
98*d5dfdeb6SJulius Werner #endif /* __ASSEMBLER__ */
995932d194SAntonio Nino Diaz 
1005932d194SAntonio Nino Diaz #endif /* SDS_PRIVATE_H */
101