HPM SDK
HPMicro Software Development Kit
hpm_bkey_drv.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_BKEY_DRV_H
9 #define HPM_BKEY_DRV_H
10 
11 #include "hpm_common.h"
12 #include "hpm_bkey_regs.h"
13 
25 typedef enum bkey_lock_type {
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
46 static inline void bkey_set_key_data(BKEY_Type *ptr, uint8_t key, uint8_t start, uint32_t *data, uint8_t size)
47 {
48  for (uint8_t i = 0; i < size; i++) {
49  ptr->KEY[key].DATA[start + i] = *(data + i);
50  }
51 }
52 
64 static inline void bkey_get_key_data(BKEY_Type *ptr, uint8_t key, uint8_t start, uint32_t *data, uint8_t size)
65 {
66  for (uint8_t i = 0; i < size; i++) {
67  *(data + i) = ptr->KEY[key].DATA[start + i];
68  }
69 }
70 
81 static inline void bkey_lock(BKEY_Type *ptr, uint8_t key, bkey_lock_type_t lock, uint16_t ecc)
82 {
83  ptr->ECC[key] = BKEY_ECC_ECC_SET(ecc) | lock;
84 }
85 
96 static inline void bkey_select_key(BKEY_Type *ptr, uint8_t key)
97 {
98  ptr->SELECT = BKEY_SELECT_SELECT_SET(key);
99 }
100 
101 #ifdef __cplusplus
102 }
103 #endif
107 #endif /* HPM_BKEY_DRV_H */
#define BKEY_SELECT_SELECT_SET(x)
Definition: hpm_bkey_regs.h:77
#define BKEY_ECC_RLOCK_MASK
Definition: hpm_bkey_regs.h:52
#define BKEY_ECC_WLOCK_MASK
Definition: hpm_bkey_regs.h:40
#define BKEY_ECC_ECC_SET(x)
Definition: hpm_bkey_regs.h:64
enum bkey_lock_type bkey_lock_type_t
Lock type.
static void bkey_lock(BKEY_Type *ptr, uint8_t key, bkey_lock_type_t lock, uint16_t ecc)
bkey lock key
Definition: hpm_bkey_drv.h:81
static void bkey_get_key_data(BKEY_Type *ptr, uint8_t key, uint8_t start, uint32_t *data, uint8_t size)
bkey fetch key content
Definition: hpm_bkey_drv.h:64
static void bkey_set_key_data(BKEY_Type *ptr, uint8_t key, uint8_t start, uint32_t *data, uint8_t size)
bkey set key content
Definition: hpm_bkey_drv.h:46
static void bkey_select_key(BKEY_Type *ptr, uint8_t key)
bkey select key
Definition: hpm_bkey_drv.h:96
bkey_lock_type
Lock type.
Definition: hpm_bkey_drv.h:25
@ bkey_lock_write
Definition: hpm_bkey_drv.h:26
@ bkey_lock_both
Definition: hpm_bkey_drv.h:28
@ bkey_lock_read
Definition: hpm_bkey_drv.h:27
static void size
Definition: hpm_math.h:6899
Definition: hpm_bkey_regs.h:12
__RW uint32_t ECC[2]
Definition: hpm_bkey_regs.h:16
__RW uint32_t SELECT
Definition: hpm_bkey_regs.h:17
__RW uint32_t DATA[8]
Definition: hpm_bkey_regs.h:14
struct BKEY_Type::@367 KEY[2]