1 /* 2 * Copyright 2024 Microchip Technology Inc. and its subsidiaries. 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 #ifndef _MEC_ECS_API_H 7 #define _MEC_ECS_API_H 8 9 #include <stdbool.h> 10 #include <stddef.h> 11 #include <stdint.h> 12 13 #include "mec_defs.h" 14 15 /* Interfaces to any C modules */ 16 #ifdef __cplusplus 17 extern "C" 18 { 19 #endif 20 21 #define ECS_FEAT_LOCK_LASIC 0 22 #define ECS_FEAT_LOCK_ESPI 1 23 #define ECS_FEAT_LOCK_PUF 2 24 #define ECS_FEAT_LOCK_PWRGRD 6 25 #define ECS_FEAT_LOCK_KSCAN 7 26 #define ECS_FEAT_LOCK_FJ 8 27 #define ECS_FEAT_LOCK_FPU 9 28 #define ECS_FEAT_LOCK_CACHE 10 29 #define ECS_FEAT_LOCK_AES_DPA 11 30 #define ECS_FEAT_LOCK_PK_DPA 12 31 #define ECS_FEAT_LOCK_CRYPTO 13 32 #define ECS_FEAT_LOCK_BGPO_0 64 33 #define ECS_FEAT_LOCK_VCI_IN1 65 34 #define ECS_FEAT_LOCK_VCI_OVRD_IN 66 35 #define ECS_FEAT_LOCK_VCI_OUT1 67 36 #define ECS_FEAT_LOCK_VCI_OUT2 68 37 #define ECS_FEAT_LOCK_RSYS_PIN 69 38 #define ECS_FEAT_LOCK_EMC_SHDN 70 39 #define ECS_FEAT_LOCK_SYSPWRP 71 40 41 void mec_hal_ecs_ictrl(uint8_t direct_en); 42 int mec_hal_ecs_is_idirect(void); 43 44 void mec_hal_ecs_ahb_error_ctrl(uint8_t ahb_err_enable); 45 uint32_t mec_hal_ecs_ahb_error_val(uint8_t clr_after_read); 46 47 int mec_hal_ecs_is_feature_disabled(uint8_t feature); 48 49 void mec_hal_ecs_peci_vtt_ref_pin_ctrl(uint8_t enable); 50 uint8_t mec_hal_ecs_peci_vtt_ref_pin_is_enabled(void); 51 52 #define ECS_ETM_PINS_DISABLE 0 53 #define ECS_ETM_PINS_ENABLE 1 54 55 void mec_ecs_etm_pins(uint8_t enable); 56 57 enum mec_debug_mode { 58 MEC_DEBUG_MODE_DISABLE = 0, 59 MEC_DEBUG_MODE_JTAG, 60 MEC_DEBUG_MODE_SWD, 61 MEC_DEBUG_MODE_SWD_SWV, 62 MEC_DEBUG_MODE_MAX, 63 }; 64 65 void mec_hal_ecs_debug_port(enum mec_debug_mode mode); 66 67 enum mec_analog_comparator_config { 68 MEC_ACMP_CFG_EN0 = MEC_BIT(0), 69 MEC_ACMP_CFG_DS0 = MEC_BIT(1), 70 MEC_ACMP_CFG_LOCK0 = MEC_BIT(2), 71 MEC_ACMP_CFG_EN1 = MEC_BIT(4), 72 MEC_ACMP_CFG_DS1 = MEC_BIT(5), 73 }; 74 75 void mec_hal_ecs_analog_comparator_config(uint32_t config); 76 77 /* ---- ECS Embedded Reset ---- */ 78 bool mec_hal_ecs_emb_reset_is_enabled(void); 79 void mec_hal_ecs_emb_reset_enable(uint8_t enable); 80 uint8_t mec_hal_ecs_emb_reset_timeout_get(void); 81 void mec_hal_ecs_emb_reset_timeout(uint8_t timeout); 82 uint32_t mec_hal_ecs_emb_reset_status(void); 83 void mec_hal_ecs_emb_reset_status_clear(void); 84 uint32_t mec_hal_ecs_emb_reset_count(void); 85 86 /* ---- PM ---- */ 87 void mec_hal_ecs_debug_ifc_save_disable(void); 88 void mec_hal_ecs_debug_ifc_restore(void); 89 90 void mec_hal_ecs_pm_save_disable(void); 91 void mec_hal_ecs_pm_restore(void); 92 93 #ifdef __cplusplus 94 } 95 #endif 96 97 #endif /* #ifndef _MEC_ECS_API_H */ 98