plat/arm: sds: Move to drivers/ folder
authorAntonio Nino Diaz <antonio.ninodiaz@arm.com>
Wed, 23 Jan 2019 19:06:55 +0000 (19:06 +0000)
committerAntonio Nino Diaz <antonio.ninodiaz@arm.com>
Fri, 25 Jan 2019 16:04:11 +0000 (16:04 +0000)
Change-Id: Ia601d5ad65ab199e747fb60af4979b7db477d249
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
14 files changed:
drivers/arm/css/scp/css_sds.c
drivers/arm/css/sds/aarch32/sds_helpers.S [new file with mode: 0644]
drivers/arm/css/sds/aarch64/sds_helpers.S [new file with mode: 0644]
drivers/arm/css/sds/sds.c [new file with mode: 0644]
drivers/arm/css/sds/sds_private.h [new file with mode: 0644]
include/drivers/arm/css/sds.h [new file with mode: 0644]
plat/arm/board/juno/juno_bl1_setup.c
plat/arm/board/juno/platform.mk
plat/arm/css/common/css_common.mk
plat/arm/css/drivers/sds/aarch32/sds_helpers.S [deleted file]
plat/arm/css/drivers/sds/aarch64/sds_helpers.S [deleted file]
plat/arm/css/drivers/sds/sds.c [deleted file]
plat/arm/css/drivers/sds/sds.h [deleted file]
plat/arm/css/drivers/sds/sds_private.h [deleted file]

index 2bfe75011f66d383a3c24c91e7ad8efc0a696087..e42ee10d759b6c93372dfffd7830b5c4532e3b7f 100644 (file)
 #include <arch_helpers.h>
 #include <common/debug.h>
 #include <drivers/arm/css/css_scp.h>
+#include <drivers/arm/css/sds.h>
 #include <drivers/delay_timer.h>
 #include <plat/common/platform.h>
 #include <platform_def.h>
 
-#include "../sds/sds.h"
-
 int css_scp_boot_image_xfer(void *image, unsigned int image_size)
 {
        int ret;
diff --git a/drivers/arm/css/sds/aarch32/sds_helpers.S b/drivers/arm/css/sds/aarch32/sds_helpers.S
new file mode 100644 (file)
index 0000000..13ff0e1
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <arch.h>
+#include <asm_macros.S>
+#include <drivers/arm/css/sds.h>
+#include <platform_def.h>
+
+#include "../sds_private.h"
+
+       .globl  sds_get_primary_cpu_id
+
+       /*
+        * int sds_get_primary_cpu_id(void);
+        * Return the primary CPU ID from SDS Structure
+        * Returns CPUID on success or -1 on failure
+        */
+func sds_get_primary_cpu_id
+       ldr     r0, =PLAT_ARM_SDS_MEM_BASE
+       ldr     r2, =SDS_REGION_SIGNATURE
+       ldr     r1, [r0]
+       ubfx    r3, r1, #0, #16
+
+       /* Check if the SDS region signature found */
+       cmp     r2, r3
+       bne     2f
+
+       /* Get the structure count from region descriptor in r1 */
+       ubfx    r1, r1, #SDS_REGION_STRUCT_COUNT_SHIFT, #SDS_REGION_STRUCT_COUNT_WIDTH
+       cmp     r1, #0
+       beq     2f
+       add     r0, r0, #SDS_REGION_DESC_SIZE
+
+       /* Initialize the loop iterator count in r3 */
+       mov     r3, #0
+loop_begin:
+       ldrh    r2, [r0]
+       cmp     r2, #SDS_AP_CPU_INFO_STRUCT_ID
+       bne     continue_loop
+
+       /* We have found the required structure */
+       ldr     r0, [r0,#(SDS_HEADER_SIZE + SDS_AP_CPU_INFO_PRIMARY_CPUID_OFFSET)]
+       bx      lr
+continue_loop:
+       /* Increment the loop counter and exit loop if counter == structure count */
+       add     r3, r3, #0x1
+       cmp     r1, r3
+       beq     2f
+
+       /* Read the 2nd word in header */
+       ldr     r2, [r0,#4]
+       /* Get the structure size from header */
+       ubfx    r2, r2, #SDS_HEADER_STRUCT_SIZE_SHIFT, #SDS_HEADER_STRUCT_SIZE_WIDTH
+       /* Add the structure size and SDS HEADER SIZE to point to next header */
+       add     r2, r2, #SDS_HEADER_SIZE
+       add     r0, r0, r2
+       b       loop_begin
+2:
+       mov     r0, #0xffffffff
+       bx      lr
+endfunc sds_get_primary_cpu_id
diff --git a/drivers/arm/css/sds/aarch64/sds_helpers.S b/drivers/arm/css/sds/aarch64/sds_helpers.S
new file mode 100644 (file)
index 0000000..3256c2b
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <arch.h>
+#include <asm_macros.S>
+#include <drivers/arm/css/sds.h>
+#include <platform_def.h>
+
+#include "../sds_private.h"
+
+       .globl  sds_get_primary_cpu_id
+
+       /*
+        * int sds_get_primary_cpu_id(void);
+        * Return the primary CPI ID from SDS Structure
+        * Returns CPUID on success or -1 on failure
+        */
+func sds_get_primary_cpu_id
+       mov_imm x0, PLAT_ARM_SDS_MEM_BASE
+       mov     w2, #SDS_REGION_SIGNATURE
+       ldr     w1, [x0]
+
+       /* Check if the SDS region signature found */
+       cmp     w2, w1, uxth
+       b.ne    2f
+
+       /* Get the structure count from region descriptor in `w1 */
+       ubfx    w1, w1, #SDS_REGION_STRUCT_COUNT_SHIFT, #SDS_REGION_STRUCT_COUNT_WIDTH
+       cbz     w1, 2f
+       add     x0, x0, #SDS_REGION_DESC_SIZE
+
+       /* Initialize the loop iterator count in w3 */
+       mov     w3, #0
+loop_begin:
+       ldrh    w2, [x0]
+       cmp     w2, #SDS_AP_CPU_INFO_STRUCT_ID
+       b.ne    continue_loop
+
+       /* We have found the required structure */
+       ldr     w0, [x0,#(SDS_HEADER_SIZE + SDS_AP_CPU_INFO_PRIMARY_CPUID_OFFSET)]
+       ret
+continue_loop:
+       /* Increment the loop counter and exit loop if counter == structure count */
+       add     w3, w3, #0x1
+       cmp     w1, w3
+       b.eq    2f
+
+       /* Read the 2nd word in header */
+       ldr     w2, [x0,#4]
+       /* Get the structure size from header */
+       ubfx    x2, x2, #SDS_HEADER_STRUCT_SIZE_SHIFT, #SDS_HEADER_STRUCT_SIZE_WIDTH
+       /* Add the structure size and SDS HEADER SIZE to point to next header */
+       add     x2, x2, #SDS_HEADER_SIZE
+       add     x0, x0, x2
+       b       loop_begin
+2:
+       mov     w0, #0xffffffff
+       ret
+endfunc sds_get_primary_cpu_id
diff --git a/drivers/arm/css/sds/sds.c b/drivers/arm/css/sds/sds.c
new file mode 100644 (file)
index 0000000..1fb196c
--- /dev/null
@@ -0,0 +1,259 @@
+/*
+ * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <assert.h>
+#include <stdint.h>
+#include <string.h>
+
+#include <arch_helpers.h>
+#include <common/debug.h>
+#include <drivers/arm/css/sds.h>
+#include <platform_def.h>
+
+#include "sds_private.h"
+
+/*
+ * Variables used to track and maintain the state of the memory region reserved
+ * for usage by the SDS framework.
+ */
+
+/* Pointer to the base of the SDS memory region */
+static uintptr_t sds_mem_base;
+
+/* Size of the SDS memory region in bytes */
+static size_t sds_mem_size;
+
+/*
+ * Perform some non-exhaustive tests to determine whether any of the fields
+ * within a Structure Header contain obviously invalid data.
+ * Returns SDS_OK on success, SDS_ERR_FAIL on error.
+ */
+static int sds_struct_is_valid(uintptr_t header)
+{
+       size_t struct_size = GET_SDS_HEADER_STRUCT_SIZE(header);
+
+       /* Zero is not a valid identifier */
+       if (GET_SDS_HEADER_ID(header) == 0)
+               return SDS_ERR_FAIL;
+
+       /* Check SDS Schema version */
+       if (GET_SDS_HEADER_VERSION(header) == SDS_REGION_SCH_VERSION)
+               return SDS_ERR_FAIL;
+
+       /* The SDS Structure sizes have to be multiple of 8 */
+       if ((struct_size == 0) || ((struct_size % 8) != 0))
+               return SDS_ERR_FAIL;
+
+       if (struct_size > sds_mem_size)
+               return SDS_ERR_FAIL;
+
+       return SDS_OK;
+}
+
+/*
+ * Validate the SDS structure headers.
+ * Returns SDS_OK on success, SDS_ERR_FAIL on error.
+ */
+static int validate_sds_struct_headers(void)
+{
+       unsigned int i, structure_count;
+       uintptr_t header;
+
+       structure_count = GET_SDS_REGION_STRUCTURE_COUNT(sds_mem_base);
+
+       if (structure_count == 0)
+               return SDS_ERR_FAIL;
+
+       header = sds_mem_base + SDS_REGION_DESC_SIZE;
+
+       /* Iterate over structure headers and validate each one */
+       for (i = 0; i < structure_count; i++) {
+               if (sds_struct_is_valid(header) != SDS_OK) {
+                       WARN("SDS: Invalid structure header detected\n");
+                       return SDS_ERR_FAIL;
+               }
+               header += GET_SDS_HEADER_STRUCT_SIZE(header) + SDS_HEADER_SIZE;
+       }
+       return SDS_OK;
+}
+
+/*
+ * Get the structure header pointer corresponding to the structure ID.
+ * Returns SDS_OK on success, SDS_ERR_STRUCT_NOT_FOUND on error.
+ */
+static int get_struct_header(uint32_t structure_id, struct_header_t **header)
+{
+       unsigned int i, structure_count;
+       uintptr_t current_header;
+
+       assert(header);
+
+       structure_count = GET_SDS_REGION_STRUCTURE_COUNT(sds_mem_base);
+       if (structure_count == 0)
+               return SDS_ERR_STRUCT_NOT_FOUND;
+
+       current_header = ((uintptr_t)sds_mem_base) + SDS_REGION_DESC_SIZE;
+
+       /* Iterate over structure headers to find one with a matching ID */
+       for (i = 0; i < structure_count; i++) {
+               if (GET_SDS_HEADER_ID(current_header) == structure_id) {
+                       *header = (struct_header_t *)current_header;
+                       return SDS_OK;
+               }
+               current_header += GET_SDS_HEADER_STRUCT_SIZE(current_header) +
+                                               SDS_HEADER_SIZE;
+       }
+
+       *header = NULL;
+       return SDS_ERR_STRUCT_NOT_FOUND;
+}
+
+/*
+ * Check if a structure header corresponding to the structure ID exists.
+ * Returns SDS_OK if structure header exists else SDS_ERR_STRUCT_NOT_FOUND
+ * if not found.
+ */
+int sds_struct_exists(unsigned int structure_id)
+{
+       struct_header_t *header = NULL;
+       int ret;
+
+       ret = get_struct_header(structure_id, &header);
+       if (ret == SDS_OK) {
+               assert(header);
+       }
+
+       return ret;
+}
+
+/*
+ * Read from field in the structure corresponding to `structure_id`.
+ * `fld_off` is the offset to the field in the structure and `mode`
+ * indicates whether cache maintenance need to performed prior to the read.
+ * The `data` is the pointer to store the read data of size specified by `size`.
+ * Returns SDS_OK on success or corresponding error codes on failure.
+ */
+int sds_struct_read(uint32_t structure_id, unsigned int fld_off,
+               void *data, size_t size, sds_access_mode_t mode)
+{
+       int status;
+       uintptr_t field_base;
+       struct_header_t *header = NULL;
+
+       if (!data)
+               return SDS_ERR_INVALID_PARAMS;
+
+       /* Check if a structure with this ID exists */
+       status = get_struct_header(structure_id, &header);
+       if (status != SDS_OK)
+               return status;
+
+       assert(header);
+
+       if (mode == SDS_ACCESS_MODE_CACHED)
+               inv_dcache_range((uintptr_t)header, SDS_HEADER_SIZE + size);
+
+       if (!IS_SDS_HEADER_VALID(header)) {
+               WARN("SDS: Reading from un-finalized structure 0x%x\n",
+                               structure_id);
+               return SDS_ERR_STRUCT_NOT_FINALIZED;
+       }
+
+       if ((fld_off + size) > GET_SDS_HEADER_STRUCT_SIZE(header))
+               return SDS_ERR_FAIL;
+
+       field_base = (uintptr_t)header + SDS_HEADER_SIZE + fld_off;
+       if (check_uptr_overflow(field_base, size - 1))
+               return SDS_ERR_FAIL;
+
+       /* Copy the required field in the struct */
+       memcpy(data, (void *)field_base, size);
+
+       return SDS_OK;
+}
+
+/*
+ * Write to the field in the structure corresponding to `structure_id`.
+ * `fld_off` is the offset to the field in the structure and `mode`
+ * indicates whether cache maintenance need to performed for the write.
+ * The `data` is the pointer to data of size specified by `size`.
+ * Returns SDS_OK on success or corresponding error codes on failure.
+ */
+int sds_struct_write(uint32_t structure_id, unsigned int fld_off,
+               void *data, size_t size, sds_access_mode_t mode)
+{
+       int status;
+       uintptr_t field_base;
+       struct_header_t *header = NULL;
+
+       if (!data)
+               return SDS_ERR_INVALID_PARAMS;
+
+       /* Check if a structure with this ID exists */
+       status = get_struct_header(structure_id, &header);
+       if (status != SDS_OK)
+               return status;
+
+       assert(header);
+
+       if (mode == SDS_ACCESS_MODE_CACHED)
+               inv_dcache_range((uintptr_t)header, SDS_HEADER_SIZE + size);
+
+       if (!IS_SDS_HEADER_VALID(header)) {
+               WARN("SDS: Writing to un-finalized structure 0x%x\n",
+                               structure_id);
+               return SDS_ERR_STRUCT_NOT_FINALIZED;
+       }
+
+       if ((fld_off + size) > GET_SDS_HEADER_STRUCT_SIZE(header))
+               return SDS_ERR_FAIL;
+
+       field_base = (uintptr_t)header + SDS_HEADER_SIZE + fld_off;
+       if (check_uptr_overflow(field_base, size - 1))
+               return SDS_ERR_FAIL;
+
+       /* Copy the required field in the struct */
+       memcpy((void *)field_base, data, size);
+
+       if (mode == SDS_ACCESS_MODE_CACHED)
+               flush_dcache_range((uintptr_t)field_base, size);
+
+       return SDS_OK;
+}
+
+/*
+ * Initialize the SDS driver. Also verifies the SDS version and sanity of
+ * the SDS structure headers.
+ * Returns SDS_OK on success, SDS_ERR_FAIL on error.
+ */
+int sds_init(void)
+{
+       sds_mem_base = (uintptr_t)PLAT_ARM_SDS_MEM_BASE;
+
+       if (!IS_SDS_REGION_VALID(sds_mem_base)) {
+               WARN("SDS: No valid SDS Memory Region found\n");
+               return SDS_ERR_FAIL;
+       }
+
+       if (GET_SDS_REGION_SCHEMA_VERSION(sds_mem_base)
+                               != SDS_REGION_SCH_VERSION) {
+               WARN("SDS: Unsupported SDS schema version\n");
+               return SDS_ERR_FAIL;
+       }
+
+       sds_mem_size = GET_SDS_REGION_SIZE(sds_mem_base);
+       if (sds_mem_size > PLAT_ARM_SDS_MEM_SIZE_MAX) {
+               WARN("SDS: SDS Memory Region exceeds size limit\n");
+               return SDS_ERR_FAIL;
+       }
+
+       INFO("SDS: Detected SDS Memory Region (%zu bytes)\n", sds_mem_size);
+
+       if (validate_sds_struct_headers() != SDS_OK)
+               return SDS_ERR_FAIL;
+
+       return SDS_OK;
+}
diff --git a/drivers/arm/css/sds/sds_private.h b/drivers/arm/css/sds/sds_private.h
new file mode 100644 (file)
index 0000000..2101dd0
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef SDS_PRIVATE_H
+#define SDS_PRIVATE_H
+
+/* SDS Header defines */
+#define SDS_HEADER_ID_SHIFT                    0
+#define SDS_HEADER_ID_WIDTH                    16
+#define SDS_HEADER_ID_MASK                     ((1 << SDS_HEADER_ID_WIDTH) - 1)
+
+#define SDS_HEADER_MINOR_VERSION_WIDTH         8
+#define SDS_HEADER_MINOR_VERSION_SHIFT         16
+#define SDS_HEADER_MAJOR_VERSION_WIDTH         8
+
+#define MAKE_SDS_HEADER_VERSION(major, minor)  \
+       (((((major) & 0xff) << SDS_HEADER_MINOR_VERSION_WIDTH) | ((minor) & 0xff)))
+#define SDS_HEADER_VERSION_MASK                        \
+       ((1 << (SDS_HEADER_MINOR_VERSION_WIDTH + SDS_HEADER_MAJOR_VERSION_WIDTH)) - 1)
+
+#define SDS_HEADER_VERSION                     MAKE_SDS_HEADER_VERSION(1, 0)
+#define SDS_HEADER_STRUCT_SIZE_WIDTH           23
+#define SDS_HEADER_STRUCT_SIZE_SHIFT           1
+#define SDS_HEADER_STRUCT_SIZE_MASK            ((1 << SDS_HEADER_STRUCT_SIZE_WIDTH) - 1)
+#define SDS_HEADER_VALID_MASK                  0x1
+#define SDS_HEADER_VALID_SHIFT                 0
+#define SDS_HEADER_SIZE                                0x8
+
+/* Arbitrary, 16 bit value that indicates a valid SDS Memory Region */
+#define SDS_REGION_SIGNATURE                   0xAA7A
+#define SDS_REGION_SIGNATURE_WIDTH             16
+#define SDS_REGION_SIGNATURE_SHIFT             0
+#define SDS_REGION_SIGNATURE_MASK              ((1 << SDS_REGION_SIGNATURE_WIDTH) - 1)
+
+#define SDS_REGION_STRUCT_COUNT_SHIFT          16
+#define SDS_REGION_STRUCT_COUNT_WIDTH          8
+#define SDS_REGION_STRUCT_COUNT_MASK           ((1 << SDS_REGION_STRUCT_COUNT_WIDTH) - 1)
+
+#define SDS_REGION_SCH_MINOR_SHIFT             24
+#define SDS_REGION_SCH_MINOR_WIDTH             4
+#define SDS_REGION_SCH_MINOR_MASK              ((1 << SDS_REGION_SCH_MINOR_WIDTH) - 1)
+
+#define SDS_REGION_SCH_MAJOR_SHIFT             28
+#define SDS_REGION_SCH_MAJOR_WIDTH             4
+#define SDS_REGION_SCH_MAJOR_MASK              ((1 << SDS_REGION_SCH_MAJOR_WIDTH) - 1)
+
+#define SDS_REGION_SCH_VERSION_MASK            \
+       ((1 << (SDS_REGION_SCH_MINOR_WIDTH + SDS_REGION_SCH_MAJOR_WIDTH)) - 1)
+
+#define MAKE_SDS_REGION_SCH_VERSION(maj, min)  \
+       ((((maj) & SDS_REGION_SCH_MAJOR_MASK) << SDS_REGION_SCH_MINOR_WIDTH) |  \
+       ((min) & SDS_REGION_SCH_MINOR_MASK))
+
+#define SDS_REGION_SCH_VERSION                 MAKE_SDS_REGION_SCH_VERSION(1, 0)
+#define SDS_REGION_REGIONSIZE_OFFSET           0x4
+#define SDS_REGION_DESC_SIZE                   0x8
+
+#ifndef __ASSEMBLY__
+#include <stddef.h>
+#include <stdint.h>
+
+/* Header containing Shared Data Structure metadata */
+typedef struct structure_header {
+       uint32_t reg[2];
+} struct_header_t;
+
+#define GET_SDS_HEADER_ID(_header)                     \
+       ((((struct_header_t *)(_header))->reg[0]) & SDS_HEADER_ID_MASK)
+#define GET_SDS_HEADER_VERSION(_header)                        \
+       (((((struct_header_t *)(_header))->reg[0]) >> SDS_HEADER_MINOR_VERSION_SHIFT)\
+       & SDS_HEADER_VERSION_MASK)
+#define GET_SDS_HEADER_STRUCT_SIZE(_header)            \
+       (((((struct_header_t *)(_header))->reg[1]) >> SDS_HEADER_STRUCT_SIZE_SHIFT)\
+       & SDS_HEADER_STRUCT_SIZE_MASK)
+#define IS_SDS_HEADER_VALID(_header)                   \
+       ((((struct_header_t *)(_header))->reg[1]) & SDS_HEADER_VALID_MASK)
+#define GET_SDS_STRUCT_FIELD(_header, _field_offset)   \
+       ((((uint8_t *)(_header)) + sizeof(struct_header_t)) + (_field_offset))
+
+/* Region Descriptor describing the SDS Memory Region */
+typedef struct region_descriptor {
+       uint32_t reg[2];
+} region_desc_t;
+
+#define IS_SDS_REGION_VALID(region)                    \
+       (((((region_desc_t *)(region))->reg[0]) & SDS_REGION_SIGNATURE_MASK) == SDS_REGION_SIGNATURE)
+#define GET_SDS_REGION_STRUCTURE_COUNT(region)         \
+       (((((region_desc_t *)(region))->reg[0]) >> SDS_REGION_STRUCT_COUNT_SHIFT)\
+       & SDS_REGION_STRUCT_COUNT_MASK)
+#define GET_SDS_REGION_SCHEMA_VERSION(region)          \
+       (((((region_desc_t *)(region))->reg[0]) >> SDS_REGION_SCH_MINOR_SHIFT)\
+       & SDS_REGION_SCH_VERSION_MASK)
+#define GET_SDS_REGION_SIZE(region)            ((((region_desc_t *)(region))->reg[1]))
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* SDS_PRIVATE_H */
diff --git a/include/drivers/arm/css/sds.h b/include/drivers/arm/css/sds.h
new file mode 100644 (file)
index 0000000..114ae92
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef SDS_H
+#define SDS_H
+
+/* SDS Structure Identifier defines */
+/* AP CPU INFO defines */
+#define SDS_AP_CPU_INFO_STRUCT_ID              1
+#define SDS_AP_CPU_INFO_PRIMARY_CPUID_OFFSET   0x0
+#define SDS_AP_CPU_INFO_PRIMARY_CPUID_SIZE     0x4
+
+/* ROM Firmware Version defines */
+#define SDS_ROM_VERSION_STRUCT_ID              2
+#define SDS_ROM_VERSION_OFFSET                 0x0
+#define SDS_ROM_VERSION_SIZE                   0x4
+
+/* RAM Firmware version defines */
+#define SDS_RAM_VERSION_STRUCT_ID              3
+#define SDS_RAM_VERSION_OFFSET                 0x0
+#define SDS_RAM_VERSION_SIZE                   0x4
+
+/* Platform Identity defines */
+#define SDS_PLATFORM_IDENTITY_STRUCT_ID                4
+#define SDS_PLATFORM_IDENTITY_ID_OFFSET                0x0
+#define SDS_PLATFORM_IDENTITY_ID_SIZE          0x4
+#define SDS_PLATFORM_IDENTITY_ID_CONFIG_SHIFT  28
+#define SDS_PLATFORM_IDENTITY_ID_CONFIG_WIDTH  4
+#define SDS_PLATFORM_IDENTITY_ID_CONFIG_MASK   \
+       ((1 << SDS_PLATFORM_IDENTITY_ID_CONFIG_WIDTH) - 1)
+
+#define SDS_PLATFORM_IDENTITY_PLAT_TYPE_OFFSET 0x4
+#define SDS_PLATFORM_IDENTITY_PLAT_TYPE_SIZE   0x4
+
+/* Reset Syndrome defines */
+#define SDS_RESET_SYNDROME_STRUCT_ID           5
+#define SDS_RESET_SYNDROME_OFFSET              0
+#define SDS_RESET_SYNDROME_SIZE                        4
+#define SDS_RESET_SYNDROME_POW_ON_RESET_BIT    (1 << 0)
+#define SDS_RESET_SYNDROME_SCP_WD_RESET_BIT    (1 << 1)
+#define SDS_RESET_SYNDROME_AP_WD_RESET_BIT     (1 << 2)
+#define SDS_RESET_SYNDROME_SYS_RESET_REQ_BIT   (1 << 3)
+#define SDS_RESET_SYNDROME_M3_LOCKUP_BIT       (1 << 4)
+
+/* SCP Firmware Feature Availability defines */
+#define SDS_FEATURE_AVAIL_STRUCT_ID            6
+#define SDS_FEATURE_AVAIL_OFFSET               0
+#define SDS_FEATURE_AVAIL_SIZE                 4
+#define SDS_FEATURE_AVAIL_SCP_RAM_READY_BIT    (1 << 0)
+#define SDS_FEATURE_AVAIL_DMC_READY_BIT                (1 << 1)
+#define SDS_FEATURE_AVAIL_MSG_IF_READY_BIT     (1 << 2)
+
+/* SCP BL2 Image Metadata defines */
+#define SDS_SCP_IMG_STRUCT_ID                  9
+#define SDS_SCP_IMG_FLAG_OFFSET                        0
+#define SDS_SCP_IMG_FLAG_SIZE                  4
+#define SDS_SCP_IMG_VALID_FLAG_BIT             (1 << 0)
+#define SDS_SCP_IMG_ADDR_OFFSET                        4
+#define SDS_SCP_IMG_ADDR_SIZE                  4
+#define SDS_SCP_IMG_SIZE_OFFSET                        8
+#define SDS_SCP_IMG_SIZE_SIZE                  4
+
+/* SDS Driver Error Codes */
+#define SDS_OK                         0
+#define SDS_ERR_FAIL                   -1
+#define SDS_ERR_INVALID_PARAMS         -2
+#define SDS_ERR_STRUCT_NOT_FOUND       -3
+#define SDS_ERR_STRUCT_NOT_FINALIZED   -4
+
+#ifndef __ASSEMBLY__
+#include <stddef.h>
+#include <stdint.h>
+
+typedef enum {
+       SDS_ACCESS_MODE_NON_CACHED,
+       SDS_ACCESS_MODE_CACHED,
+} sds_access_mode_t;
+
+int sds_init(void);
+int sds_struct_exists(unsigned int structure_id);
+int sds_struct_read(uint32_t structure_id, unsigned int fld_off, void *data,
+               size_t size, sds_access_mode_t mode);
+int sds_struct_write(uint32_t structure_id, unsigned int fld_off, void *data,
+               size_t size, sds_access_mode_t mode);
+#endif /*__ASSEMBLY__ */
+
+#endif /* SDS_H */
index f72dba181c1b1dc88858bfd46f78bba48ca8a1b0..f72a6ff1af2f5251cc4b6a475272de29267537d7 100644 (file)
@@ -9,13 +9,12 @@
 #include <common/bl_common.h>
 #include <common/debug.h>
 #include <common/tbbr/tbbr_img_def.h>
+#include <drivers/arm/css/sds.h>
 #include <drivers/arm/sp805.h>
 #include <plat/arm/common/plat_arm.h>
 #include <plat/common/platform.h>
 #include <platform_def.h>
 
-#include <sds.h>
-
 void juno_reset_to_aarch32_state(void);
 
 static int is_watchdog_reset(void)
index a0281af202916873798407ec40fe0d0c642b0343..6575811a669f23bfb83e99991fde93291186605e 100644 (file)
@@ -26,8 +26,7 @@ endif
 # SCP during power management operations and for SCP RAM Firmware transfer.
 CSS_USE_SCMI_SDS_DRIVER                :=      1
 
-PLAT_INCLUDES          :=      -Iplat/arm/board/juno/include           \
-                               -Iplat/arm/css/drivers/sds
+PLAT_INCLUDES          :=      -Iplat/arm/board/juno/include
 
 PLAT_BL_COMMON_SOURCES :=      plat/arm/board/juno/${ARCH}/juno_helpers.S \
                                plat/arm/board/juno/juno_common.c
@@ -87,7 +86,7 @@ BL31_SOURCES          +=      drivers/cfi/v2m/v2m_flash.c             \
                                ${JUNO_SECURITY_SOURCES}
 
 ifeq (${CSS_USE_SCMI_SDS_DRIVER},1)
-BL1_SOURCES            +=      plat/arm/css/drivers/sds/sds.c
+BL1_SOURCES            +=      drivers/arm/css/sds/sds.c
 endif
 
 endif
index fba9cdcee6d5c220bf991af91b4c81c0842910f1..2fbbe4560361b19643d4262389f3d605abee66be 100644 (file)
@@ -50,10 +50,10 @@ ifeq (${CSS_LOAD_SCP_IMAGES},1)
 
   ifeq (${CSS_USE_SCMI_SDS_DRIVER},1)
     BL2U_SOURCES       +=      drivers/arm/css/scp/css_sds.c                   \
-                               plat/arm/css/drivers/sds/sds.c
+                               drivers/arm/css/sds/sds.c
 
     BL2_SOURCES                +=      drivers/arm/css/scp/css_sds.c                   \
-                               plat/arm/css/drivers/sds/sds.c
+                               drivers/arm/css/sds/sds.c
   else
     BL2U_SOURCES       +=      drivers/arm/css/mhu/css_mhu.c                   \
                                drivers/arm/css/scp/css_bom_bootloader.c        \
@@ -73,7 +73,7 @@ ifeq (${CSS_LOAD_SCP_IMAGES},1)
 endif
 
 ifeq (${CSS_USE_SCMI_SDS_DRIVER},1)
-  PLAT_BL_COMMON_SOURCES       +=      plat/arm/css/drivers/sds/${ARCH}/sds_helpers.S
+  PLAT_BL_COMMON_SOURCES       +=      drivers/arm/css/sds/${ARCH}/sds_helpers.S
 endif
 
 # Process CSS_USE_SCMI_SDS_DRIVER flag
diff --git a/plat/arm/css/drivers/sds/aarch32/sds_helpers.S b/plat/arm/css/drivers/sds/aarch32/sds_helpers.S
deleted file mode 100644 (file)
index f68cb35..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <arch.h>
-#include <asm_macros.S>
-#include <platform_def.h>
-#include "../sds.h"
-#include "../sds_private.h"
-
-       .globl  sds_get_primary_cpu_id
-
-       /*
-        * int sds_get_primary_cpu_id(void);
-        * Return the primary CPU ID from SDS Structure
-        * Returns CPUID on success or -1 on failure
-        */
-func sds_get_primary_cpu_id
-       ldr     r0, =PLAT_ARM_SDS_MEM_BASE
-       ldr     r2, =SDS_REGION_SIGNATURE
-       ldr     r1, [r0]
-       ubfx    r3, r1, #0, #16
-
-       /* Check if the SDS region signature found */
-       cmp     r2, r3
-       bne     2f
-
-       /* Get the structure count from region descriptor in r1 */
-       ubfx    r1, r1, #SDS_REGION_STRUCT_COUNT_SHIFT, #SDS_REGION_STRUCT_COUNT_WIDTH
-       cmp     r1, #0
-       beq     2f
-       add     r0, r0, #SDS_REGION_DESC_SIZE
-
-       /* Initialize the loop iterator count in r3 */
-       mov     r3, #0
-loop_begin:
-       ldrh    r2, [r0]
-       cmp     r2, #SDS_AP_CPU_INFO_STRUCT_ID
-       bne     continue_loop
-
-       /* We have found the required structure */
-       ldr     r0, [r0,#(SDS_HEADER_SIZE + SDS_AP_CPU_INFO_PRIMARY_CPUID_OFFSET)]
-       bx      lr
-continue_loop:
-       /* Increment the loop counter and exit loop if counter == structure count */
-       add     r3, r3, #0x1
-       cmp     r1, r3
-       beq     2f
-
-       /* Read the 2nd word in header */
-       ldr     r2, [r0,#4]
-       /* Get the structure size from header */
-       ubfx    r2, r2, #SDS_HEADER_STRUCT_SIZE_SHIFT, #SDS_HEADER_STRUCT_SIZE_WIDTH
-       /* Add the structure size and SDS HEADER SIZE to point to next header */
-       add     r2, r2, #SDS_HEADER_SIZE
-       add     r0, r0, r2
-       b       loop_begin
-2:
-       mov     r0, #0xffffffff
-       bx      lr
-endfunc sds_get_primary_cpu_id
diff --git a/plat/arm/css/drivers/sds/aarch64/sds_helpers.S b/plat/arm/css/drivers/sds/aarch64/sds_helpers.S
deleted file mode 100644 (file)
index 3b9c562..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <arch.h>
-#include <asm_macros.S>
-#include <platform_def.h>
-#include "../sds.h"
-#include "../sds_private.h"
-
-       .globl  sds_get_primary_cpu_id
-
-       /*
-        * int sds_get_primary_cpu_id(void);
-        * Return the primary CPI ID from SDS Structure
-        * Returns CPUID on success or -1 on failure
-        */
-func sds_get_primary_cpu_id
-       mov_imm x0, PLAT_ARM_SDS_MEM_BASE
-       mov     w2, #SDS_REGION_SIGNATURE
-       ldr     w1, [x0]
-
-       /* Check if the SDS region signature found */
-       cmp     w2, w1, uxth
-       b.ne    2f
-
-       /* Get the structure count from region descriptor in `w1 */
-       ubfx    w1, w1, #SDS_REGION_STRUCT_COUNT_SHIFT, #SDS_REGION_STRUCT_COUNT_WIDTH
-       cbz     w1, 2f
-       add     x0, x0, #SDS_REGION_DESC_SIZE
-
-       /* Initialize the loop iterator count in w3 */
-       mov     w3, #0
-loop_begin:
-       ldrh    w2, [x0]
-       cmp     w2, #SDS_AP_CPU_INFO_STRUCT_ID
-       b.ne    continue_loop
-
-       /* We have found the required structure */
-       ldr     w0, [x0,#(SDS_HEADER_SIZE + SDS_AP_CPU_INFO_PRIMARY_CPUID_OFFSET)]
-       ret
-continue_loop:
-       /* Increment the loop counter and exit loop if counter == structure count */
-       add     w3, w3, #0x1
-       cmp     w1, w3
-       b.eq    2f
-
-       /* Read the 2nd word in header */
-       ldr     w2, [x0,#4]
-       /* Get the structure size from header */
-       ubfx    x2, x2, #SDS_HEADER_STRUCT_SIZE_SHIFT, #SDS_HEADER_STRUCT_SIZE_WIDTH
-       /* Add the structure size and SDS HEADER SIZE to point to next header */
-       add     x2, x2, #SDS_HEADER_SIZE
-       add     x0, x0, x2
-       b       loop_begin
-2:
-       mov     w0, #0xffffffff
-       ret
-endfunc sds_get_primary_cpu_id
diff --git a/plat/arm/css/drivers/sds/sds.c b/plat/arm/css/drivers/sds/sds.c
deleted file mode 100644 (file)
index eb2f48e..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <assert.h>
-#include <stdint.h>
-#include <string.h>
-
-#include <arch_helpers.h>
-#include <common/debug.h>
-#include <platform_def.h>
-
-#include "sds.h"
-#include "sds_private.h"
-
-/*
- * Variables used to track and maintain the state of the memory region reserved
- * for usage by the SDS framework.
- */
-
-/* Pointer to the base of the SDS memory region */
-static uintptr_t sds_mem_base;
-
-/* Size of the SDS memory region in bytes */
-static size_t sds_mem_size;
-
-/*
- * Perform some non-exhaustive tests to determine whether any of the fields
- * within a Structure Header contain obviously invalid data.
- * Returns SDS_OK on success, SDS_ERR_FAIL on error.
- */
-static int sds_struct_is_valid(uintptr_t header)
-{
-       size_t struct_size = GET_SDS_HEADER_STRUCT_SIZE(header);
-
-       /* Zero is not a valid identifier */
-       if (GET_SDS_HEADER_ID(header) == 0)
-               return SDS_ERR_FAIL;
-
-       /* Check SDS Schema version */
-       if (GET_SDS_HEADER_VERSION(header) == SDS_REGION_SCH_VERSION)
-               return SDS_ERR_FAIL;
-
-       /* The SDS Structure sizes have to be multiple of 8 */
-       if ((struct_size == 0) || ((struct_size % 8) != 0))
-               return SDS_ERR_FAIL;
-
-       if (struct_size > sds_mem_size)
-               return SDS_ERR_FAIL;
-
-       return SDS_OK;
-}
-
-/*
- * Validate the SDS structure headers.
- * Returns SDS_OK on success, SDS_ERR_FAIL on error.
- */
-static int validate_sds_struct_headers(void)
-{
-       unsigned int i, structure_count;
-       uintptr_t header;
-
-       structure_count = GET_SDS_REGION_STRUCTURE_COUNT(sds_mem_base);
-
-       if (structure_count == 0)
-               return SDS_ERR_FAIL;
-
-       header = sds_mem_base + SDS_REGION_DESC_SIZE;
-
-       /* Iterate over structure headers and validate each one */
-       for (i = 0; i < structure_count; i++) {
-               if (sds_struct_is_valid(header) != SDS_OK) {
-                       WARN("SDS: Invalid structure header detected\n");
-                       return SDS_ERR_FAIL;
-               }
-               header += GET_SDS_HEADER_STRUCT_SIZE(header) + SDS_HEADER_SIZE;
-       }
-       return SDS_OK;
-}
-
-/*
- * Get the structure header pointer corresponding to the structure ID.
- * Returns SDS_OK on success, SDS_ERR_STRUCT_NOT_FOUND on error.
- */
-static int get_struct_header(uint32_t structure_id, struct_header_t **header)
-{
-       unsigned int i, structure_count;
-       uintptr_t current_header;
-
-       assert(header);
-
-       structure_count = GET_SDS_REGION_STRUCTURE_COUNT(sds_mem_base);
-       if (structure_count == 0)
-               return SDS_ERR_STRUCT_NOT_FOUND;
-
-       current_header = ((uintptr_t)sds_mem_base) + SDS_REGION_DESC_SIZE;
-
-       /* Iterate over structure headers to find one with a matching ID */
-       for (i = 0; i < structure_count; i++) {
-               if (GET_SDS_HEADER_ID(current_header) == structure_id) {
-                       *header = (struct_header_t *)current_header;
-                       return SDS_OK;
-               }
-               current_header += GET_SDS_HEADER_STRUCT_SIZE(current_header) +
-                                               SDS_HEADER_SIZE;
-       }
-
-       *header = NULL;
-       return SDS_ERR_STRUCT_NOT_FOUND;
-}
-
-/*
- * Check if a structure header corresponding to the structure ID exists.
- * Returns SDS_OK if structure header exists else SDS_ERR_STRUCT_NOT_FOUND
- * if not found.
- */
-int sds_struct_exists(unsigned int structure_id)
-{
-       struct_header_t *header = NULL;
-       int ret;
-
-       ret = get_struct_header(structure_id, &header);
-       if (ret == SDS_OK) {
-               assert(header);
-       }
-
-       return ret;
-}
-
-/*
- * Read from field in the structure corresponding to `structure_id`.
- * `fld_off` is the offset to the field in the structure and `mode`
- * indicates whether cache maintenance need to performed prior to the read.
- * The `data` is the pointer to store the read data of size specified by `size`.
- * Returns SDS_OK on success or corresponding error codes on failure.
- */
-int sds_struct_read(uint32_t structure_id, unsigned int fld_off,
-               void *data, size_t size, sds_access_mode_t mode)
-{
-       int status;
-       uintptr_t field_base;
-       struct_header_t *header = NULL;
-
-       if (!data)
-               return SDS_ERR_INVALID_PARAMS;
-
-       /* Check if a structure with this ID exists */
-       status = get_struct_header(structure_id, &header);
-       if (status != SDS_OK)
-               return status;
-
-       assert(header);
-
-       if (mode == SDS_ACCESS_MODE_CACHED)
-               inv_dcache_range((uintptr_t)header, SDS_HEADER_SIZE + size);
-
-       if (!IS_SDS_HEADER_VALID(header)) {
-               WARN("SDS: Reading from un-finalized structure 0x%x\n",
-                               structure_id);
-               return SDS_ERR_STRUCT_NOT_FINALIZED;
-       }
-
-       if ((fld_off + size) > GET_SDS_HEADER_STRUCT_SIZE(header))
-               return SDS_ERR_FAIL;
-
-       field_base = (uintptr_t)header + SDS_HEADER_SIZE + fld_off;
-       if (check_uptr_overflow(field_base, size - 1))
-               return SDS_ERR_FAIL;
-
-       /* Copy the required field in the struct */
-       memcpy(data, (void *)field_base, size);
-
-       return SDS_OK;
-}
-
-/*
- * Write to the field in the structure corresponding to `structure_id`.
- * `fld_off` is the offset to the field in the structure and `mode`
- * indicates whether cache maintenance need to performed for the write.
- * The `data` is the pointer to data of size specified by `size`.
- * Returns SDS_OK on success or corresponding error codes on failure.
- */
-int sds_struct_write(uint32_t structure_id, unsigned int fld_off,
-               void *data, size_t size, sds_access_mode_t mode)
-{
-       int status;
-       uintptr_t field_base;
-       struct_header_t *header = NULL;
-
-       if (!data)
-               return SDS_ERR_INVALID_PARAMS;
-
-       /* Check if a structure with this ID exists */
-       status = get_struct_header(structure_id, &header);
-       if (status != SDS_OK)
-               return status;
-
-       assert(header);
-
-       if (mode == SDS_ACCESS_MODE_CACHED)
-               inv_dcache_range((uintptr_t)header, SDS_HEADER_SIZE + size);
-
-       if (!IS_SDS_HEADER_VALID(header)) {
-               WARN("SDS: Writing to un-finalized structure 0x%x\n",
-                               structure_id);
-               return SDS_ERR_STRUCT_NOT_FINALIZED;
-       }
-
-       if ((fld_off + size) > GET_SDS_HEADER_STRUCT_SIZE(header))
-               return SDS_ERR_FAIL;
-
-       field_base = (uintptr_t)header + SDS_HEADER_SIZE + fld_off;
-       if (check_uptr_overflow(field_base, size - 1))
-               return SDS_ERR_FAIL;
-
-       /* Copy the required field in the struct */
-       memcpy((void *)field_base, data, size);
-
-       if (mode == SDS_ACCESS_MODE_CACHED)
-               flush_dcache_range((uintptr_t)field_base, size);
-
-       return SDS_OK;
-}
-
-/*
- * Initialize the SDS driver. Also verifies the SDS version and sanity of
- * the SDS structure headers.
- * Returns SDS_OK on success, SDS_ERR_FAIL on error.
- */
-int sds_init(void)
-{
-       sds_mem_base = (uintptr_t)PLAT_ARM_SDS_MEM_BASE;
-
-       if (!IS_SDS_REGION_VALID(sds_mem_base)) {
-               WARN("SDS: No valid SDS Memory Region found\n");
-               return SDS_ERR_FAIL;
-       }
-
-       if (GET_SDS_REGION_SCHEMA_VERSION(sds_mem_base)
-                               != SDS_REGION_SCH_VERSION) {
-               WARN("SDS: Unsupported SDS schema version\n");
-               return SDS_ERR_FAIL;
-       }
-
-       sds_mem_size = GET_SDS_REGION_SIZE(sds_mem_base);
-       if (sds_mem_size > PLAT_ARM_SDS_MEM_SIZE_MAX) {
-               WARN("SDS: SDS Memory Region exceeds size limit\n");
-               return SDS_ERR_FAIL;
-       }
-
-       INFO("SDS: Detected SDS Memory Region (%zu bytes)\n", sds_mem_size);
-
-       if (validate_sds_struct_headers() != SDS_OK)
-               return SDS_ERR_FAIL;
-
-       return SDS_OK;
-}
diff --git a/plat/arm/css/drivers/sds/sds.h b/plat/arm/css/drivers/sds/sds.h
deleted file mode 100644 (file)
index 114ae92..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef SDS_H
-#define SDS_H
-
-/* SDS Structure Identifier defines */
-/* AP CPU INFO defines */
-#define SDS_AP_CPU_INFO_STRUCT_ID              1
-#define SDS_AP_CPU_INFO_PRIMARY_CPUID_OFFSET   0x0
-#define SDS_AP_CPU_INFO_PRIMARY_CPUID_SIZE     0x4
-
-/* ROM Firmware Version defines */
-#define SDS_ROM_VERSION_STRUCT_ID              2
-#define SDS_ROM_VERSION_OFFSET                 0x0
-#define SDS_ROM_VERSION_SIZE                   0x4
-
-/* RAM Firmware version defines */
-#define SDS_RAM_VERSION_STRUCT_ID              3
-#define SDS_RAM_VERSION_OFFSET                 0x0
-#define SDS_RAM_VERSION_SIZE                   0x4
-
-/* Platform Identity defines */
-#define SDS_PLATFORM_IDENTITY_STRUCT_ID                4
-#define SDS_PLATFORM_IDENTITY_ID_OFFSET                0x0
-#define SDS_PLATFORM_IDENTITY_ID_SIZE          0x4
-#define SDS_PLATFORM_IDENTITY_ID_CONFIG_SHIFT  28
-#define SDS_PLATFORM_IDENTITY_ID_CONFIG_WIDTH  4
-#define SDS_PLATFORM_IDENTITY_ID_CONFIG_MASK   \
-       ((1 << SDS_PLATFORM_IDENTITY_ID_CONFIG_WIDTH) - 1)
-
-#define SDS_PLATFORM_IDENTITY_PLAT_TYPE_OFFSET 0x4
-#define SDS_PLATFORM_IDENTITY_PLAT_TYPE_SIZE   0x4
-
-/* Reset Syndrome defines */
-#define SDS_RESET_SYNDROME_STRUCT_ID           5
-#define SDS_RESET_SYNDROME_OFFSET              0
-#define SDS_RESET_SYNDROME_SIZE                        4
-#define SDS_RESET_SYNDROME_POW_ON_RESET_BIT    (1 << 0)
-#define SDS_RESET_SYNDROME_SCP_WD_RESET_BIT    (1 << 1)
-#define SDS_RESET_SYNDROME_AP_WD_RESET_BIT     (1 << 2)
-#define SDS_RESET_SYNDROME_SYS_RESET_REQ_BIT   (1 << 3)
-#define SDS_RESET_SYNDROME_M3_LOCKUP_BIT       (1 << 4)
-
-/* SCP Firmware Feature Availability defines */
-#define SDS_FEATURE_AVAIL_STRUCT_ID            6
-#define SDS_FEATURE_AVAIL_OFFSET               0
-#define SDS_FEATURE_AVAIL_SIZE                 4
-#define SDS_FEATURE_AVAIL_SCP_RAM_READY_BIT    (1 << 0)
-#define SDS_FEATURE_AVAIL_DMC_READY_BIT                (1 << 1)
-#define SDS_FEATURE_AVAIL_MSG_IF_READY_BIT     (1 << 2)
-
-/* SCP BL2 Image Metadata defines */
-#define SDS_SCP_IMG_STRUCT_ID                  9
-#define SDS_SCP_IMG_FLAG_OFFSET                        0
-#define SDS_SCP_IMG_FLAG_SIZE                  4
-#define SDS_SCP_IMG_VALID_FLAG_BIT             (1 << 0)
-#define SDS_SCP_IMG_ADDR_OFFSET                        4
-#define SDS_SCP_IMG_ADDR_SIZE                  4
-#define SDS_SCP_IMG_SIZE_OFFSET                        8
-#define SDS_SCP_IMG_SIZE_SIZE                  4
-
-/* SDS Driver Error Codes */
-#define SDS_OK                         0
-#define SDS_ERR_FAIL                   -1
-#define SDS_ERR_INVALID_PARAMS         -2
-#define SDS_ERR_STRUCT_NOT_FOUND       -3
-#define SDS_ERR_STRUCT_NOT_FINALIZED   -4
-
-#ifndef __ASSEMBLY__
-#include <stddef.h>
-#include <stdint.h>
-
-typedef enum {
-       SDS_ACCESS_MODE_NON_CACHED,
-       SDS_ACCESS_MODE_CACHED,
-} sds_access_mode_t;
-
-int sds_init(void);
-int sds_struct_exists(unsigned int structure_id);
-int sds_struct_read(uint32_t structure_id, unsigned int fld_off, void *data,
-               size_t size, sds_access_mode_t mode);
-int sds_struct_write(uint32_t structure_id, unsigned int fld_off, void *data,
-               size_t size, sds_access_mode_t mode);
-#endif /*__ASSEMBLY__ */
-
-#endif /* SDS_H */
diff --git a/plat/arm/css/drivers/sds/sds_private.h b/plat/arm/css/drivers/sds/sds_private.h
deleted file mode 100644 (file)
index 2101dd0..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef SDS_PRIVATE_H
-#define SDS_PRIVATE_H
-
-/* SDS Header defines */
-#define SDS_HEADER_ID_SHIFT                    0
-#define SDS_HEADER_ID_WIDTH                    16
-#define SDS_HEADER_ID_MASK                     ((1 << SDS_HEADER_ID_WIDTH) - 1)
-
-#define SDS_HEADER_MINOR_VERSION_WIDTH         8
-#define SDS_HEADER_MINOR_VERSION_SHIFT         16
-#define SDS_HEADER_MAJOR_VERSION_WIDTH         8
-
-#define MAKE_SDS_HEADER_VERSION(major, minor)  \
-       (((((major) & 0xff) << SDS_HEADER_MINOR_VERSION_WIDTH) | ((minor) & 0xff)))
-#define SDS_HEADER_VERSION_MASK                        \
-       ((1 << (SDS_HEADER_MINOR_VERSION_WIDTH + SDS_HEADER_MAJOR_VERSION_WIDTH)) - 1)
-
-#define SDS_HEADER_VERSION                     MAKE_SDS_HEADER_VERSION(1, 0)
-#define SDS_HEADER_STRUCT_SIZE_WIDTH           23
-#define SDS_HEADER_STRUCT_SIZE_SHIFT           1
-#define SDS_HEADER_STRUCT_SIZE_MASK            ((1 << SDS_HEADER_STRUCT_SIZE_WIDTH) - 1)
-#define SDS_HEADER_VALID_MASK                  0x1
-#define SDS_HEADER_VALID_SHIFT                 0
-#define SDS_HEADER_SIZE                                0x8
-
-/* Arbitrary, 16 bit value that indicates a valid SDS Memory Region */
-#define SDS_REGION_SIGNATURE                   0xAA7A
-#define SDS_REGION_SIGNATURE_WIDTH             16
-#define SDS_REGION_SIGNATURE_SHIFT             0
-#define SDS_REGION_SIGNATURE_MASK              ((1 << SDS_REGION_SIGNATURE_WIDTH) - 1)
-
-#define SDS_REGION_STRUCT_COUNT_SHIFT          16
-#define SDS_REGION_STRUCT_COUNT_WIDTH          8
-#define SDS_REGION_STRUCT_COUNT_MASK           ((1 << SDS_REGION_STRUCT_COUNT_WIDTH) - 1)
-
-#define SDS_REGION_SCH_MINOR_SHIFT             24
-#define SDS_REGION_SCH_MINOR_WIDTH             4
-#define SDS_REGION_SCH_MINOR_MASK              ((1 << SDS_REGION_SCH_MINOR_WIDTH) - 1)
-
-#define SDS_REGION_SCH_MAJOR_SHIFT             28
-#define SDS_REGION_SCH_MAJOR_WIDTH             4
-#define SDS_REGION_SCH_MAJOR_MASK              ((1 << SDS_REGION_SCH_MAJOR_WIDTH) - 1)
-
-#define SDS_REGION_SCH_VERSION_MASK            \
-       ((1 << (SDS_REGION_SCH_MINOR_WIDTH + SDS_REGION_SCH_MAJOR_WIDTH)) - 1)
-
-#define MAKE_SDS_REGION_SCH_VERSION(maj, min)  \
-       ((((maj) & SDS_REGION_SCH_MAJOR_MASK) << SDS_REGION_SCH_MINOR_WIDTH) |  \
-       ((min) & SDS_REGION_SCH_MINOR_MASK))
-
-#define SDS_REGION_SCH_VERSION                 MAKE_SDS_REGION_SCH_VERSION(1, 0)
-#define SDS_REGION_REGIONSIZE_OFFSET           0x4
-#define SDS_REGION_DESC_SIZE                   0x8
-
-#ifndef __ASSEMBLY__
-#include <stddef.h>
-#include <stdint.h>
-
-/* Header containing Shared Data Structure metadata */
-typedef struct structure_header {
-       uint32_t reg[2];
-} struct_header_t;
-
-#define GET_SDS_HEADER_ID(_header)                     \
-       ((((struct_header_t *)(_header))->reg[0]) & SDS_HEADER_ID_MASK)
-#define GET_SDS_HEADER_VERSION(_header)                        \
-       (((((struct_header_t *)(_header))->reg[0]) >> SDS_HEADER_MINOR_VERSION_SHIFT)\
-       & SDS_HEADER_VERSION_MASK)
-#define GET_SDS_HEADER_STRUCT_SIZE(_header)            \
-       (((((struct_header_t *)(_header))->reg[1]) >> SDS_HEADER_STRUCT_SIZE_SHIFT)\
-       & SDS_HEADER_STRUCT_SIZE_MASK)
-#define IS_SDS_HEADER_VALID(_header)                   \
-       ((((struct_header_t *)(_header))->reg[1]) & SDS_HEADER_VALID_MASK)
-#define GET_SDS_STRUCT_FIELD(_header, _field_offset)   \
-       ((((uint8_t *)(_header)) + sizeof(struct_header_t)) + (_field_offset))
-
-/* Region Descriptor describing the SDS Memory Region */
-typedef struct region_descriptor {
-       uint32_t reg[2];
-} region_desc_t;
-
-#define IS_SDS_REGION_VALID(region)                    \
-       (((((region_desc_t *)(region))->reg[0]) & SDS_REGION_SIGNATURE_MASK) == SDS_REGION_SIGNATURE)
-#define GET_SDS_REGION_STRUCTURE_COUNT(region)         \
-       (((((region_desc_t *)(region))->reg[0]) >> SDS_REGION_STRUCT_COUNT_SHIFT)\
-       & SDS_REGION_STRUCT_COUNT_MASK)
-#define GET_SDS_REGION_SCHEMA_VERSION(region)          \
-       (((((region_desc_t *)(region))->reg[0]) >> SDS_REGION_SCH_MINOR_SHIFT)\
-       & SDS_REGION_SCH_VERSION_MASK)
-#define GET_SDS_REGION_SIZE(region)            ((((region_desc_t *)(region))->reg[1]))
-
-#endif /* __ASSEMBLY__ */
-
-#endif /* SDS_PRIVATE_H */