diff options
author | Christian Mauderer <christian.mauderer@embedded-brains.de> | 2023-05-09 10:46:50 +0200 |
---|---|---|
committer | Christian Mauderer <christian.mauderer@embedded-brains.de> | 2023-05-22 09:43:48 +0200 |
commit | 38ad41ecceb7c9f7549e58ddf485fc893f8b3c35 (patch) | |
tree | 3e9112d3b29f3bf705dfa290c15c599e0cb7924b /bsps/arm/imxrt/mcux-sdk/drivers/key_manager/fsl_key_manager.h | |
parent | Update company name (diff) | |
download | rtems-38ad41ecceb7c9f7549e58ddf485fc893f8b3c35.tar.bz2 |
bsp/imxrt: Update support library from mcux-sdk
This imports new files from the mcux-sdk support library. NXP now offers
the library as a git repository instead of a zip package. The git
repository supports multiple CPUs from the i.MXRT family:
https://github.com/nxp-mcuxpresso/mcux-sdk.git
The imported files are from revision
2b9354539e6e4f722749e87b0bdc22966dc080d9
This revision is the same as MCUXpresso 2.13.0 with small bug fixes.
For importing the files, a script has been used, that parses the
mcux-sdk cmake files and creates the yaml files for RTEMS:
https://raw.githubusercontent.com/c-mauderer/nxp-mcux-sdk/d21c3e61eb8602b2cf8f45fed0afa50c6aee932f/export_to_RTEMS.py
Diffstat (limited to '')
-rw-r--r-- | bsps/arm/imxrt/mcux-sdk/drivers/key_manager/fsl_key_manager.h | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/bsps/arm/imxrt/mcux-sdk/drivers/key_manager/fsl_key_manager.h b/bsps/arm/imxrt/mcux-sdk/drivers/key_manager/fsl_key_manager.h new file mode 100644 index 0000000000..03e3af3f46 --- /dev/null +++ b/bsps/arm/imxrt/mcux-sdk/drivers/key_manager/fsl_key_manager.h @@ -0,0 +1,181 @@ +/* + * Copyright 2020-2021, NXP + * All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _FSL_KEYMGR_H_ +#define _FSL_KEYMGR_H_ + +#include "fsl_common.h" + +/*! + * @addtogroup key_manager + * @{ + */ + +/******************************************************************************* + * Definitions + ******************************************************************************/ + +/*! @name Driver version */ +/*@{*/ +/*! @brief Key Manager driver version. Version 2.0.2. + * + * Current version: 2.0.2 + * + * Change log: + * + * - Version 2.0.2 + * - Fix MISRA-2012 issues + * + * - Version 2.0.1 + * - Fix MISRA-2012 issues + * + * - Version 2.0.0 + * - Initial version + */ +#define FSL_KEYMGR_DRIVER_VERSION (MAKE_VERSION(2, 0, 2)) +/*@}*/ + +typedef enum _keymgr_lock +{ + kKEYMGR_Unlock = 0u, + kKEYMGR_Lock = 1u, +} keymgr_lock_t; + +typedef enum _keymgr_allow +{ + kKEYMGR_Disallow = 0u, + kKEYMGR_Allow = 1u, +} keymgr_allow_t; + +typedef enum _keymgr_slot +{ + kKEYMGR_Slot0 = 0u, + kKEYMGR_Slot1 = 1u, + kKEYMGR_Slot2 = 2u, + kKEYMGR_Slot3 = 3u, + kKEYMGR_Slot4 = 4u, +} keymgr_slot_t; + +#define KEYMGR_IEE_RELOAD 1u +#define KEYMGR_SEL_OCOTP 0u +#define KEYMGR_SEL_UDF 0u +#define KEYMGR_SEL_PUF 1u + +#define keymgr_select_t uint8_t + +/*! @brief Key Manager slot configuration structure. */ +typedef struct _domain_slot_config +{ + keymgr_lock_t lockControl; /*!< Lock control register of slot. */ + keymgr_allow_t allowUser; /*!< Allow user write access to domain control register or domain register. */ + keymgr_allow_t allowNonSecure; /*!< Allow non-secure write access to domain control register or domain register. */ + keymgr_lock_t lockList; /*!< Lock whitelist. SLOTx_CTRL[WHITE_LIST] cannot be changed. */ + uint8_t whiteList; /*!< Domains that on the Whitelist can change given slot. */ + /*!< Each field represents one domain. Bit0~Bit3 represent DOMAIN0~DOMAIN3 respectively. */ +} domain_slot_config_t; + +/******************************************************************************* + * API + ******************************************************************************/ +#if defined(__cplusplus) +extern "C" { +#endif + +/*! + * @brief Configures Master key settings. + * + * This function configures Key Manager's setting for Master key. + * + * @param base Key Manager peripheral address. + * @param select select source for Master key. + * @param lock setting for lock Master key. + * @return status of Master key control operation + */ +status_t KEYMGR_MasterKeyControll(KEY_MANAGER_Type *base, keymgr_select_t select, keymgr_lock_t lock); + +/*! + * @brief Configures OTFAD1 key settings. + * + * This function configures Key Manager's setting for OTFAD1 key. + * + * @param base Key Manager peripheral address. + * @param select select source for OTFAD1 key. + * @param lock setting for lock OTFAD1 key. + * @return status of OTFAD1 key control operation + */ +status_t KEYMGR_OTFAD1KeyControll(KEY_MANAGER_Type *base, keymgr_select_t select, keymgr_lock_t lock); + +/*! + * @brief Configures OTFAD2 key settings. + * + * This function configures Key Manager's setting for OTFAD2 key. + * + * @param base Key Manager peripheral address. + * @param select select source for OTFAD2 key. + * @param lock setting for lock OTFAD2 key. + * @return status of OTFAD2 key control operation + */ +status_t KEYMGR_OTFAD2KeyControll(KEY_MANAGER_Type *base, keymgr_select_t select, keymgr_lock_t lock); + +/*! + * @brief Restart load key signal for IEE. + * + * This function genrates Key Manager's restart signal for IEE key. + * + * @param base Key Manager peripheral address. + */ +void KEYMGR_IEEKeyReload(KEY_MANAGER_Type *base); + +/*! + * @brief Lock the key select from PUF. + * + * This function locks selection of key for PUF. + * + * @param base Key Manager peripheral address. + * @param lock Setting for selection of key for PUF. + */ +void KEYMGR_PUFKeyLock(KEY_MANAGER_Type *base, keymgr_lock_t lock); + +/*! + * @brief Configures Slot Domain control. + * + * This function configures domain slot control which locks and allows writes. + * + * @param base Key Manager peripheral address. + * @param config Pointer to slot configuration structure. + * @param slot Select slot to be configured. + * @return status of slot control operation + */ +status_t KEYMGR_SlotControl(KEY_MANAGER_Type *base, domain_slot_config_t *config, keymgr_slot_t slot); + +/*! + * @brief Resets Key Manager module to factory default values. + * + * This function performs hardware reset of Key Manager module. + * + * @param base Key Manager peripheral address. + */ +void KEYMGR_Init(KEY_MANAGER_Type *base); + +/*! + * @brief Sets the default configuration of Key manager slot. + * + * This function initialize Key Manager slot config structure to default values. + * + * @param config Pointer to slot configuration structure. + */ +status_t KEYMGR_GetDefaultConfig(domain_slot_config_t *config); + +#if defined(__cplusplus) +} +#endif + +/*! + *@} + */ + +#endif /* _FSL_IEE_H_ */ |