1*3a340005SAndrew Mustea /* SPDX-License-Identifier: BSD-2-Clause */ 2*3a340005SAndrew Mustea /* 3*3a340005SAndrew Mustea * Copyright 2022 Microsoft 4*3a340005SAndrew Mustea * 5*3a340005SAndrew Mustea * Definitions for the NXP LX2160A-series Security Monitor (SecMon) driver. 6*3a340005SAndrew Mustea */ 7*3a340005SAndrew Mustea 8*3a340005SAndrew Mustea #ifndef __DRIVERS_LS_SEC_MON_H 9*3a340005SAndrew Mustea #define __DRIVERS_LS_SEC_MON_H 10*3a340005SAndrew Mustea 11*3a340005SAndrew Mustea #include <stdlib.h> 12*3a340005SAndrew Mustea #include <tee_api_types.h> 13*3a340005SAndrew Mustea 14*3a340005SAndrew Mustea /** 15*3a340005SAndrew Mustea * struct ls_sec_mon_data - Compact data struct of all SecMon registers. 16*3a340005SAndrew Mustea * @hplr: HP Lock Register. 17*3a340005SAndrew Mustea * @hpcomr: HP Command Register. 18*3a340005SAndrew Mustea * @hpsicr: HP Security Interrupt Control Register. 19*3a340005SAndrew Mustea * @hpsvcr: HP Security Violation Control Register. 20*3a340005SAndrew Mustea * @hpsr: HP Status Register. 21*3a340005SAndrew Mustea * @hpsvsr: HP Security Violation Status Register. 22*3a340005SAndrew Mustea * @hphacivr: HP High Assurance Counter IV Register. 23*3a340005SAndrew Mustea * @hphacr: HP High Assurance Counter Register. 24*3a340005SAndrew Mustea * @lplr: LP Lock Register. 25*3a340005SAndrew Mustea * @lpcr: LP Control Register. 26*3a340005SAndrew Mustea * @lpmkcr: LP Master Key Control Register. 27*3a340005SAndrew Mustea * @lpsvcr: LP Security Violation Control Register. 28*3a340005SAndrew Mustea * @lptdcr: LP Tamper Detectors Configuration Register. 29*3a340005SAndrew Mustea * @lpsr: LP Status Register. 30*3a340005SAndrew Mustea * @lpsmcmr: LP Secure Monotonic Counter MSB Register. 31*3a340005SAndrew Mustea * @lpsmclr: LP Secure Monotonic Counter LSB Register. 32*3a340005SAndrew Mustea * @lppgdr: LP Power Glitch Detector Register. 33*3a340005SAndrew Mustea * @lpzmkr[8]: LP Zeroizable Master Key Registers. 34*3a340005SAndrew Mustea * @lpgpr[4]: LP General Purpose Registers. 35*3a340005SAndrew Mustea * @hpvidr1: HP Version ID Register 1. 36*3a340005SAndrew Mustea * @hpvidr2: HP Version ID Register 2. 37*3a340005SAndrew Mustea */ 38*3a340005SAndrew Mustea struct ls_sec_mon_data { 39*3a340005SAndrew Mustea uint32_t hplr; 40*3a340005SAndrew Mustea uint32_t hpcomr; 41*3a340005SAndrew Mustea uint32_t hpsicr; 42*3a340005SAndrew Mustea uint32_t hpsvcr; 43*3a340005SAndrew Mustea uint32_t hpsr; 44*3a340005SAndrew Mustea uint32_t hpsvsr; 45*3a340005SAndrew Mustea uint32_t hphacivr; 46*3a340005SAndrew Mustea uint32_t hphacr; 47*3a340005SAndrew Mustea uint32_t lplr; 48*3a340005SAndrew Mustea uint32_t lpcr; 49*3a340005SAndrew Mustea uint32_t lpmkcr; 50*3a340005SAndrew Mustea uint32_t lpsvcr; 51*3a340005SAndrew Mustea uint32_t lptdcr; 52*3a340005SAndrew Mustea uint32_t lpsr; 53*3a340005SAndrew Mustea uint32_t lpsmcmr; 54*3a340005SAndrew Mustea uint32_t lpsmclr; 55*3a340005SAndrew Mustea uint32_t lppgdr; 56*3a340005SAndrew Mustea uint32_t lpzmkr[8]; 57*3a340005SAndrew Mustea uint32_t lpgpr[4]; 58*3a340005SAndrew Mustea uint32_t hpvidr1; 59*3a340005SAndrew Mustea uint32_t hpvidr2; 60*3a340005SAndrew Mustea }; 61*3a340005SAndrew Mustea 62*3a340005SAndrew Mustea /** 63*3a340005SAndrew Mustea * ls_sec_mon_read() - Read a copy of the SecMon register data if the SecMon 64*3a340005SAndrew Mustea * driver was successfully initialized. 65*3a340005SAndrew Mustea * @data: Location to save SecMon data. 66*3a340005SAndrew Mustea * 67*3a340005SAndrew Mustea * Return: 0 if successful or > 0 on error. 68*3a340005SAndrew Mustea */ 69*3a340005SAndrew Mustea TEE_Result ls_sec_mon_read(struct ls_sec_mon_data *data); 70*3a340005SAndrew Mustea 71*3a340005SAndrew Mustea /** 72*3a340005SAndrew Mustea * ls_sec_mon_status() - Check if the SecMon driver was initialized 73*3a340005SAndrew Mustea * successfully. 74*3a340005SAndrew Mustea * 75*3a340005SAndrew Mustea * Return: 0 if init was successful or TEE_ERROR_GENERIC on init failed. 76*3a340005SAndrew Mustea */ 77*3a340005SAndrew Mustea TEE_Result ls_sec_mon_status(void); 78*3a340005SAndrew Mustea 79*3a340005SAndrew Mustea #endif /* __DRIVERS_LS_SEC_MON_H */ 80