mirror of https://github.com/ARMmbed/mbed-os.git
206 lines
5.7 KiB
C
206 lines
5.7 KiB
C
/** @file
|
|
* Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
|
|
* SPDX-License-Identifier : Apache-2.0
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
**/
|
|
|
|
#ifndef _TARGET_INFO_DATA_H_
|
|
#define _TARGET_INFO_DATA_H_
|
|
|
|
#include "val.h"
|
|
|
|
#define TARGET_CONFIG_CREATE_ID(major, minor, index) \
|
|
(((major & 0xFF) << 24) | ((minor & 0xFF) << 16) | (index & 0xFFFF))
|
|
#define TARGET_CONFIG_GET_MAJOR(config_id) ((config_id >> 24) & 0xFF)
|
|
#define TARGET_CONFIG_GET_MINOR(config_id) ((config_id >> 16) & 0xFF)
|
|
#define TARGET_CONFIG_INCREMENT_INDEX(config_id) \
|
|
((config_id & 0xFFFF0000) | ((config_id & 0xFFFF) + 1))
|
|
#define GET_NUM_INSTANCE(struct_type) (struct_type->cfg_type.size >> 24)
|
|
#define VAL_TEST_MAJOR_GROUP_MASK 0xFF000000UL
|
|
#define VAL_TEST_MINOR_GROUP_MASK 0x00FF0000UL
|
|
#define VAL_TEST_CFG_INSTANCE_MASK 0x0000FFFFUL
|
|
#define VAL_TEST_INVALID_CFG_ID 0xFFFFFFFFUL
|
|
#define TARGET_MIN_CFG_ID TARGET_CONFIG_CREATE_ID(GROUP_SOC_PERIPHERAL, 0, 0)
|
|
#define TARGET_MAX_CFG_ID TARGET_CONFIG_CREATE_ID(GROUP_MAX, 0, 0)
|
|
|
|
/**
|
|
Config IDs for each group/component
|
|
31:24 : MAJOR (group)
|
|
23:16 : MINOR (component)
|
|
16:8 : SUB-component
|
|
7:0 : INSTANCE (instance of same component)
|
|
**/
|
|
|
|
/*
|
|
MAJOR IDs
|
|
*/
|
|
typedef enum _GROUP_CONFIG_ID_ {
|
|
GROUP_SOC_PERIPHERAL = 0x1,
|
|
GROUP_MEMORY = 0x2,
|
|
GROUP_MISCELLANEOUS = 0x3,
|
|
GROUP_MAX = 0xFF,
|
|
} group_cfg_id_t;
|
|
|
|
/*
|
|
MINOR IDs
|
|
*/
|
|
typedef enum _SOC_PERIPHERAL_CONFIG_ID_ {
|
|
SOC_PERIPHERAL_UART = 0x1,
|
|
SOC_PERIPHERAL_TIMER = 0x2,
|
|
SOC_PERIPHERAL_WATCHDOG = 0x3,
|
|
} soc_peripheral_cfg_id_t;
|
|
|
|
typedef enum _MEMORY_CONFIG_ID_ {
|
|
MEMORY_NVMEM = 0x2,
|
|
MEMORY_NSPE_MMIO = 0x3,
|
|
MEMORY_CLIENT_PARTITION_MMIO = 0x4,
|
|
MEMORY_DRIVER_PARTITION_MMIO = 0x5,
|
|
} memory_cfg_id_t;
|
|
|
|
typedef enum _MISCELLANEOUS_CONFIG_ID_ {
|
|
MISCELLANEOUS_BOOT = 0x1,
|
|
MISCELLANEOUS_DUT = 0x2
|
|
} miscellaneous_cfg_id_t;
|
|
|
|
/**
|
|
Assign group type to each system component
|
|
**/
|
|
typedef enum _COMPONENT_GROUPING_{
|
|
UART = GROUP_SOC_PERIPHERAL,
|
|
TIMER = GROUP_SOC_PERIPHERAL,
|
|
WATCHDOG = GROUP_SOC_PERIPHERAL,
|
|
NVMEM = GROUP_MEMORY,
|
|
NSPE_MMIO = GROUP_MEMORY,
|
|
CLIENT_PARTITION_MMIO = GROUP_MEMORY,
|
|
DRIVER_PARTITION_MMIO = GROUP_MEMORY,
|
|
BOOT = GROUP_MISCELLANEOUS,
|
|
DUT = GROUP_MISCELLANEOUS,
|
|
} comp_group_assign_t;
|
|
|
|
/**
|
|
Target Configuration Header
|
|
**/
|
|
typedef struct _TARGET_CFG_HDR_ {
|
|
/* PSA_CFG */
|
|
uint32_t signature[2];
|
|
/* 8 byte String describing the Target platform */
|
|
uint32_t target_string[2];
|
|
/* version = 1 for now */
|
|
uint32_t version;
|
|
/* Header Size */
|
|
uint32_t size;
|
|
}target_cfg_hdr_t;
|
|
|
|
typedef enum {
|
|
LEVEL1 = 0x1,
|
|
LEVEL2,
|
|
LEVEL3,
|
|
} firmware_level_t;
|
|
|
|
typedef enum {
|
|
NOT_AVAILABLE = 0x0,
|
|
AVAILABLE = 0x1,
|
|
} is_available_t;
|
|
|
|
typedef enum {
|
|
SECURE_ACCESS = 0x100,
|
|
NONSECURE_ACCESS,
|
|
SECURE_PROGRAMMABLE,
|
|
NONSECURE_PROGRAMMABLE
|
|
} dev_attr_t;
|
|
|
|
typedef enum {
|
|
MEM_SECURE = 0x100,
|
|
MEM_NONSECURE,
|
|
MEM_NSC,
|
|
} mem_tgt_attr_t;
|
|
|
|
typedef enum {
|
|
TYPE_READ_ONLY = 0x10,
|
|
TYPE_WRITE_ONLY,
|
|
TYPE_READ_WRITE,
|
|
TYPE_EXECUTE,
|
|
TYPE_RESERVED,
|
|
} perm_type_t;
|
|
|
|
typedef struct _CFG_HDR_TYPE_ {
|
|
cfg_id_t cfg_id;
|
|
/* size inclusive of this header */
|
|
uint32_t size;
|
|
} cfg_type_t;
|
|
|
|
/**
|
|
Memory Information
|
|
**/
|
|
typedef struct _MEM_INFO_DESC_ {
|
|
cfg_type_t cfg_type;
|
|
uint32_t num;
|
|
} memory_hdr_t;
|
|
|
|
typedef struct _MEM_REGION_ {
|
|
cfg_type_t cfg_type;
|
|
addr_t start;
|
|
addr_t end;
|
|
mem_tgt_attr_t attribute;
|
|
perm_type_t permission;
|
|
} memory_desc_t;
|
|
|
|
/*
|
|
SOC Peripheral description structures
|
|
*/
|
|
typedef struct _SOC_PER_INFO_NUM_ {
|
|
cfg_type_t cfg_type;
|
|
uint32_t num;
|
|
} soc_peripheral_hdr_t;
|
|
|
|
typedef struct _SOC_PER_INFO_DESC_ {
|
|
cfg_type_t cfg_type;
|
|
uint32_t vendor_id;
|
|
uint32_t device_id;
|
|
addr_t base;
|
|
uint32_t size;
|
|
uint32_t intr_id;
|
|
perm_type_t permission;
|
|
uint32_t timeout_in_micro_sec_low;
|
|
uint32_t timeout_in_micro_sec_medium;
|
|
uint32_t timeout_in_micro_sec_high;
|
|
uint32_t timeout_in_micro_sec_crypto;
|
|
uint32_t num_of_tick_per_micro_sec;
|
|
dev_attr_t attribute;
|
|
} soc_peripheral_desc_t;
|
|
|
|
/**
|
|
System Miscellaneous Information
|
|
**/
|
|
|
|
typedef struct _MISCELLANEOUS_INFO_HDR_ {
|
|
cfg_type_t cfg_type;
|
|
uint32_t num;
|
|
} miscellaneous_hdr_t;
|
|
|
|
typedef struct _MISCELLANEOUS_INFO_DESC_ {
|
|
cfg_type_t cfg_type;
|
|
firmware_level_t implemented_psa_firmware_isolation_level;
|
|
addr_t ns_start_addr_of_combine_test_binary;
|
|
is_available_t combine_test_binary_in_ram;
|
|
addr_t ns_test_addr;
|
|
} miscellaneous_desc_t;
|
|
|
|
/*val target config read apis */
|
|
STATIC_DECLARE val_status_t val_target_get_config(cfg_id_t cfg_id, uint8_t **data, uint32_t *size);
|
|
STATIC_DECLARE val_status_t val_target_cfg_get_next(void **blob);
|
|
STATIC_DECLARE val_status_t val_target_get_cfg_blob(cfg_id_t cfg_id, uint8_t **data, uint32_t *size);
|
|
STATIC_DECLARE val_status_t val_target_get_config(cfg_id_t cfg_id, uint8_t **data, uint32_t *size);
|
|
#endif
|