51 #ifndef ti_dl_dl_trng__include 52 #define ti_dl_dl_trng__include 57 #include <ti/devices/msp/msp.h> 60 #ifdef __MSPM0_HAS_TRNG__ 75 #define DL_TRNG_INTERRUPT_HEALTH_FAIL_EVENT (TRNG_IMASK_IRQ_HEALTH_FAIL_MASK) 80 #define DL_TRNG_INTERRUPT_CMD_DONE_EVENT (TRNG_IMASK_IRQ_CMD_DONE_MASK) 85 #define DL_TRNG_INTERRUPT_CMD_FAIL_EVENT (TRNG_IMASK_IRQ_CMD_FAIL_MASK) 90 #define DL_TRNG_INTERRUPT_CAPTURE_RDY_EVENT (TRNG_IMASK_IRQ_CAPTURED_RDY_MASK) 100 #define DL_TRNG_DIGITAL_HEALTH_TEST_SUCCESS (0xFF) 105 #define DL_TRNG_ANALOG_HEALTH_TEST_SUCCESS (0x1) 214 trng->GPRCM.PWREN = TRNG_PWREN_KEY_UNLOCK_W | TRNG_PWREN_ENABLE_ENABLE;
229 trng->GPRCM.PWREN = TRNG_PWREN_KEY_UNLOCK_W | TRNG_PWREN_ENABLE_DISABLE;
250 return ((TRNG->GPRCM.PWREN & TRNG_PWREN_ENABLE_MASK) ==
251 TRNG_PWREN_ENABLE_ENABLE);
262 const TRNG_Regs *trng)
264 return (DL_TRNG_CLOCK_DIVIDE) trng->CLKDIVIDE;
276 TRNG_Regs *trng, DL_TRNG_CLOCK_DIVIDE clockDivider)
278 trng->CLKDIVIDE = (uint32_t) clockDivider;
289 TRNG_RSTCTL_RESETASSERT_ASSERT | TRNG_RSTCTL_KEY_UNLOCK_W;
302 return (trng->GPRCM.STAT & TRNG_GPRCM_STAT_RESETSTKY_MASK) ==
303 TRNG_GPRCM_STAT_RESETSTKY_RESET;
316 return ((trng->CPU_INT.RIS & TRNG_RIS_IRQ_CAPTURED_RDY_MASK)) ==
317 TRNG_RIS_IRQ_CAPTURED_RDY_SET;
330 return ((trng->CPU_INT.RIS & TRNG_RIS_IRQ_CMD_DONE_MASK)) ==
331 TRNG_RIS_IRQ_CMD_DONE_SET;
344 return ((trng->CPU_INT.RIS & TRNG_RIS_IRQ_CMD_FAIL_MASK)) ==
345 TRNG_RIS_IRQ_CMD_FAIL_SET;
358 return ((trng->CPU_INT.RIS & TRNG_RIS_IRQ_HEALTH_FAIL_MASK)) ==
359 TRNG_RIS_IRQ_HEALTH_FAIL_SET;
374 ((uint32_t) decimationRate << TRNG_CTL_DECIM_RATE_OFS),
375 TRNG_CTL_DECIM_RATE_MASK);
388 const TRNG_Regs *trng)
390 uint32_t decimationRate =
391 ((trng->CTL & TRNG_CTL_DECIM_RATE_MASK) >> TRNG_CTL_DECIM_RATE_OFS);
410 const TRNG_Regs *trng)
412 return (uint8_t)(trng->TEST_RESULTS & TRNG_TEST_RESULTS_DIG_TEST_MASK);
426 const TRNG_Regs *trng)
428 return (uint8_t)((trng->TEST_RESULTS & TRNG_TEST_RESULTS_ANA_TEST_MASK) >>
429 TRNG_TEST_RESULTS_ANA_TEST_OFS);
446 return ((trng->STAT & TRNG_STAT_FSM_STATE_MASK)) >>
447 TRNG_STAT_FSM_STATE_OFS;
461 return ((trng->STAT & TRNG_STAT_ISSUED_CMD_MASK)) >>
462 TRNG_STAT_ISSUED_CMD_OFS;
478 return ((trng->STAT & TRNG_STAT_REP_FAIL_MASK)) == TRNG_STAT_REP_FAIL_MASK;
494 return ((trng->STAT & TRNG_STAT_ADAP_FAIL_MASK)) ==
495 TRNG_STAT_ADAP_FAIL_MASK;
507 TRNG_Regs *trng, uint32_t interruptMask)
509 trng->CPU_INT.IMASK |= interruptMask;
521 TRNG_Regs *trng, uint32_t interruptMask)
523 trng->CPU_INT.IMASK &= ~interruptMask;
539 const TRNG_Regs *trng, uint32_t interruptMask)
541 return trng->CPU_INT.IMASK & interruptMask;
560 const TRNG_Regs *trng, uint32_t interruptMask)
562 return (trng->CPU_INT.MIS & interruptMask);
580 const TRNG_Regs *trng, uint32_t interruptMask)
582 return trng->CPU_INT.RIS & interruptMask;
599 return (DL_TRNG_IIDX) trng->CPU_INT.IIDX;
612 TRNG_Regs *trng, uint32_t interruptMask)
614 trng->CPU_INT.ICLR = interruptMask;
645 return trng->DATA_CAPTURE;
DL_TRNG_CLOCK_DIVIDE
Definition: dl_trng.h:155
__STATIC_INLINE bool DL_TRNG_isCommandFail(const TRNG_Regs *trng)
Returns if the issued TRNG command failed.
Definition: dl_trng.h:342
DL_TRNG_STATE
Definition: dl_trng.h:169
__STATIC_INLINE void DL_TRNG_disableInterrupt(TRNG_Regs *trng, uint32_t interruptMask)
Disable TRNG interrupt.
Definition: dl_trng.h:520
__STATIC_INLINE void DL_Common_updateReg(volatile uint32_t *reg, uint32_t val, uint32_t mask)
Writes value to specified register - retaining bits unaffected by mask.
Definition: dl_common.h:63
Definition: dl_trng.h:165
Definition: dl_trng.h:127
Definition: dl_trng.h:113
__STATIC_INLINE DL_TRNG_IIDX DL_TRNG_getPendingInterrupt(const TRNG_Regs *trng)
Get highest priority pending TRNG interrupt.
Definition: dl_trng.h:597
__STATIC_INLINE bool DL_TRNG_isCaptureReady(const TRNG_Regs *trng)
Returns if the data capture is ready.
Definition: dl_trng.h:314
Definition: dl_trng.h:161
__STATIC_INLINE uint32_t DL_TRNG_getEnabledInterruptStatus(const TRNG_Regs *trng, uint32_t interruptMask)
Check interrupt flag of enabled TRNG interrupt.
Definition: dl_trng.h:559
Definition: dl_trng.h:157
__STATIC_INLINE void DL_TRNG_enablePower(TRNG_Regs *trng)
Enables the Peripheral Write Enable (PWREN) register for the TRNG.
Definition: dl_trng.h:212
__STATIC_INLINE uint32_t DL_TRNG_getCapture(const TRNG_Regs *trng)
Get word capture from TRNG.
Definition: dl_trng.h:643
Definition: dl_trng.h:173
DL_TRNG_DECIMATION_RATE
Definition: dl_trng.h:123
__STATIC_INLINE uint32_t DL_TRNG_getIssuedCommand(const TRNG_Regs *trng)
Get the last accepted command that was issued to the TRNG.
Definition: dl_trng.h:459
Definition: dl_trng.h:119
__STATIC_INLINE void DL_TRNG_setDecimationRate(TRNG_Regs *trng, DL_TRNG_DECIMATION_RATE decimationRate)
Set the decimation rate.
Definition: dl_trng.h:370
__STATIC_INLINE bool DL_TRNG_isAdaptiveTestFail(const TRNG_Regs *trng)
Indicates if the Adaptive Proportion Test (1,2,3, or 4-bit counters) caused the most recent failure...
Definition: dl_trng.h:492
__STATIC_INLINE void DL_TRNG_clearInterruptStatus(TRNG_Regs *trng, uint32_t interruptMask)
Clear pending TRNG interrupt.
Definition: dl_trng.h:611
bool backupRdy
Definition: dl_trng.h:200
Definition: dl_trng.h:117
Definition: dl_trng.h:171
__STATIC_INLINE void DL_TRNG_sendCommand(TRNG_Regs *trng, DL_TRNG_CMD cmd)
Update control register's command bits to send a TRNG command.
Definition: dl_trng.h:624
Definition: dl_trng.h:175
Definition: dl_trng.h:125
__STATIC_INLINE uint32_t DL_TRNG_getEnabledInterrupts(const TRNG_Regs *trng, uint32_t interruptMask)
Check which TRNG interrupts are enabled.
Definition: dl_trng.h:538
Definition: dl_trng.h:163
Definition: dl_trng.h:139
Definition: dl_trng.h:115
Definition: dl_trng.h:149
__STATIC_INLINE uint32_t DL_TRNG_getRawInterruptStatus(const TRNG_Regs *trng, uint32_t interruptMask)
Check interrupt flag of any TRNG interrupt.
Definition: dl_trng.h:579
Definition: dl_trng.h:181
Definition: dl_trng.h:179
Definition: dl_trng.h:177
__STATIC_INLINE void DL_TRNG_reset(TRNG_Regs *trng)
Resets the TRNG module.
Definition: dl_trng.h:286
uint32_t interruptMask
Definition: dl_trng.h:197
Definition: dl_trng.h:183
Definition: dl_trng.h:159
__STATIC_INLINE uint8_t DL_TRNG_getAnalogHealthTestResults(const TRNG_Regs *trng)
Get the analog health test results.
Definition: dl_trng.h:425
__STATIC_INLINE void DL_TRNG_setClockDivider(TRNG_Regs *trng, DL_TRNG_CLOCK_DIVIDE clockDivider)
Set the clock divider on the TRNG module.
Definition: dl_trng.h:275
__STATIC_INLINE DL_TRNG_CLOCK_DIVIDE DL_TRNG_getClockDivider(const TRNG_Regs *trng)
Get the clock divider on the TRNG module.
Definition: dl_trng.h:261
__STATIC_INLINE bool DL_TRNG_isReset(const TRNG_Regs *trng)
Returns if TRNG peripheral was reset.
Definition: dl_trng.h:300
DL_TRNG_IIDX
Definition: dl_trng.h:111
Configuration structure to backup TRNG peripheral state before going to STOP/STANDBY mode...
Definition: dl_trng.h:190
Definition: dl_trng.h:137
bool DL_TRNG_restoreConfiguration(TRNG_Regs *trng, DL_TRNG_backupConfig *ptr)
Restore TRNG configuration after leaving a power loss state. Upon restoration, if the TRNG was not or...
Definition: dl_trng.h:131
Definition: dl_trng.h:135
bool DL_TRNG_saveConfiguration(const TRNG_Regs *trng, DL_TRNG_backupConfig *ptr)
Save TRNG configuration before entering a power loss state.
Definition: dl_trng.h:133
__STATIC_INLINE bool DL_TRNG_isCommandDone(const TRNG_Regs *trng)
Returns if the issued TRNG command is done.
Definition: dl_trng.h:328
Definition: dl_trng.h:151
DL_TRNG_CMD
Definition: dl_trng.h:143
uint32_t clockDivider
Definition: dl_trng.h:195
__STATIC_INLINE bool DL_TRNG_isRepetitionTestFail(const TRNG_Regs *trng)
Indicates if the repetition counter test caused the most recent failure.
Definition: dl_trng.h:476
__STATIC_INLINE void DL_TRNG_enableInterrupt(TRNG_Regs *trng, uint32_t interruptMask)
Enable TRNG interrupt.
Definition: dl_trng.h:506
Definition: dl_trng.h:147
__STATIC_INLINE void DL_TRNG_disablePower(TRNG_Regs *trng)
Disables the Peripheral Write Enable (PWREN) register for the TRNG.
Definition: dl_trng.h:227
__STATIC_INLINE uint8_t DL_TRNG_getDigitalHealthTestResults(const TRNG_Regs *trng)
Get the digital health test results.
Definition: dl_trng.h:409
__STATIC_INLINE bool DL_TRNG_isHealthTestFail(const TRNG_Regs *trng)
Returns if a health test failed.
Definition: dl_trng.h:356
__STATIC_INLINE bool DL_TRNG_isPowerEnabled(TRNG_Regs *trng)
Returns if the Peripheral Write Enable (PWREN) register for the TRNG is enabled.
Definition: dl_trng.h:248
Definition: dl_trng.h:145
__STATIC_INLINE uint32_t DL_TRNG_getCurrentState(const TRNG_Regs *trng)
Get the current state of the TRNG front end FSM.
Definition: dl_trng.h:444
uint32_t controlWord
Definition: dl_trng.h:193
Definition: dl_trng.h:129
__STATIC_INLINE DL_TRNG_DECIMATION_RATE DL_TRNG_getDecimationRate(const TRNG_Regs *trng)
Get the decimation rate.
Definition: dl_trng.h:387