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) 211 trng->GPRCM.PWREN = TRNG_PWREN_KEY_UNLOCK_W | TRNG_PWREN_ENABLE_ENABLE;
221 trng->GPRCM.PWREN = TRNG_PWREN_KEY_UNLOCK_W | TRNG_PWREN_ENABLE_DISABLE;
233 return (DL_TRNG_CLOCK_DIVIDE) trng->CLKDIVIDE;
245 TRNG_Regs *trng, DL_TRNG_CLOCK_DIVIDE clockDivider)
247 trng->CLKDIVIDE = (uint32_t) clockDivider;
258 TRNG_RSTCTL_RESETASSERT_ASSERT | TRNG_RSTCTL_KEY_UNLOCK_W;
271 return (trng->GPRCM.STAT & TRNG_GPRCM_STAT_RESETSTKY_MASK) ==
272 TRNG_GPRCM_STAT_RESETSTKY_RESET;
285 return ((trng->CPU_INT.RIS & TRNG_RIS_IRQ_CAPTURED_RDY_MASK)) ==
286 TRNG_RIS_IRQ_CAPTURED_RDY_SET;
299 return ((trng->CPU_INT.RIS & TRNG_RIS_IRQ_CMD_DONE_MASK)) ==
300 TRNG_RIS_IRQ_CMD_DONE_SET;
313 return ((trng->CPU_INT.RIS & TRNG_RIS_IRQ_CMD_FAIL_MASK)) ==
314 TRNG_RIS_IRQ_CMD_FAIL_SET;
327 return ((trng->CPU_INT.RIS & TRNG_RIS_IRQ_HEALTH_FAIL_MASK)) ==
328 TRNG_RIS_IRQ_HEALTH_FAIL_SET;
343 ((uint32_t) decimationRate << TRNG_CTL_DECIM_RATE_OFS),
344 TRNG_CTL_DECIM_RATE_MASK);
359 uint32_t decimationRate =
360 ((trng->CTL & TRNG_CTL_DECIM_RATE_MASK) >> TRNG_CTL_DECIM_RATE_OFS);
380 return (uint8_t)(trng->TEST_RESULTS & TRNG_TEST_RESULTS_DIG_TEST_MASK);
395 return (uint8_t)((trng->TEST_RESULTS & TRNG_TEST_RESULTS_ANA_TEST_MASK) >>
396 TRNG_TEST_RESULTS_ANA_TEST_OFS);
413 return ((trng->STAT & TRNG_STAT_FSM_STATE_MASK)) >>
414 TRNG_STAT_FSM_STATE_OFS;
428 return ((trng->STAT & TRNG_STAT_ISSUED_CMD_MASK)) >>
429 TRNG_STAT_ISSUED_CMD_OFS;
445 return ((trng->STAT & TRNG_STAT_REP_FAIL_MASK)) == TRNG_STAT_REP_FAIL_MASK;
461 return ((trng->STAT & TRNG_STAT_ADAP_FAIL_MASK)) ==
462 TRNG_STAT_ADAP_FAIL_MASK;
474 TRNG_Regs *trng, uint32_t interruptMask)
476 trng->CPU_INT.IMASK |= interruptMask;
488 TRNG_Regs *trng, uint32_t interruptMask)
490 trng->CPU_INT.IMASK &= ~interruptMask;
506 TRNG_Regs *trng, uint32_t interruptMask)
508 return trng->CPU_INT.IMASK & interruptMask;
527 TRNG_Regs *trng, uint32_t interruptMask)
529 return (trng->CPU_INT.MIS & interruptMask);
547 TRNG_Regs *trng, uint32_t interruptMask)
549 return trng->CPU_INT.RIS & interruptMask;
566 return (DL_TRNG_IIDX) trng->CPU_INT.IIDX;
579 TRNG_Regs *trng, uint32_t interruptMask)
581 trng->CPU_INT.ICLR = interruptMask;
612 return trng->DATA_CAPTURE;
DL_TRNG_CLOCK_DIVIDE
Definition: dl_trng.h:155
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:487
__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
__STATIC_INLINE bool DL_TRNG_isCaptureReady(TRNG_Regs *trng)
Returns if the data capture is ready.
Definition: dl_trng.h:283
__STATIC_INLINE uint32_t DL_TRNG_getIssuedCommand(TRNG_Regs *trng)
Get the last accepted command that was issued to the TRNG.
Definition: dl_trng.h:426
Definition: dl_trng.h:165
Definition: dl_trng.h:127
Definition: dl_trng.h:113
Definition: dl_trng.h:161
__STATIC_INLINE bool DL_TRNG_isCommandDone(TRNG_Regs *trng)
Returns if the issued TRNG command is done.
Definition: dl_trng.h:297
__STATIC_INLINE uint8_t DL_TRNG_getAnalogHealthTestResults(TRNG_Regs *trng)
Get the analog health test results.
Definition: dl_trng.h:393
Definition: dl_trng.h:157
__STATIC_INLINE void DL_TRNG_enablePower(TRNG_Regs *trng)
Enables power on TRNG module.
Definition: dl_trng.h:209
__STATIC_INLINE uint32_t DL_TRNG_getCapture(TRNG_Regs *trng)
Get word capture from TRNG.
Definition: dl_trng.h:610
Definition: dl_trng.h:173
__STATIC_INLINE bool DL_TRNG_isAdaptiveTestFail(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:459
DL_TRNG_DECIMATION_RATE
Definition: dl_trng.h:123
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:339
__STATIC_INLINE void DL_TRNG_clearInterruptStatus(TRNG_Regs *trng, uint32_t interruptMask)
Clear pending TRNG interrupt.
Definition: dl_trng.h:578
bool backupRdy
Definition: dl_trng.h:201
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:591
Definition: dl_trng.h:175
Definition: dl_trng.h:125
Definition: dl_trng.h:163
Definition: dl_trng.h:139
Definition: dl_trng.h:115
Definition: dl_trng.h:149
__STATIC_INLINE DL_TRNG_DECIMATION_RATE DL_TRNG_getDecimationRate(TRNG_Regs *trng)
Get the decimation rate.
Definition: dl_trng.h:356
__STATIC_INLINE uint32_t DL_TRNG_getCurrentState(TRNG_Regs *trng)
Get the current state of the TRNG front end FSM.
Definition: dl_trng.h:411
__STATIC_INLINE DL_TRNG_CLOCK_DIVIDE DL_TRNG_getClockDivider(TRNG_Regs *trng)
Get the clock divider on the TRNG module.
Definition: dl_trng.h:231
Definition: dl_trng.h:181
Definition: dl_trng.h:179
Definition: dl_trng.h:177
__STATIC_INLINE DL_TRNG_IIDX DL_TRNG_getPendingInterrupt(TRNG_Regs *trng)
Get highest priority pending TRNG interrupt.
Definition: dl_trng.h:564
__STATIC_INLINE bool DL_TRNG_isHealthTestFail(TRNG_Regs *trng)
Returns if a health test failed.
Definition: dl_trng.h:325
__STATIC_INLINE void DL_TRNG_reset(TRNG_Regs *trng)
Resets the TRNG module.
Definition: dl_trng.h:255
uint32_t interruptMask
Definition: dl_trng.h:198
Definition: dl_trng.h:183
Definition: dl_trng.h:159
__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:244
__STATIC_INLINE uint32_t DL_TRNG_getEnabledInterruptStatus(TRNG_Regs *trng, uint32_t interruptMask)
Check interrupt flag of enabled TRNG interrupt.
Definition: dl_trng.h:526
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:191
Definition: dl_trng.h:137
__STATIC_INLINE uint32_t DL_TRNG_getRawInterruptStatus(TRNG_Regs *trng, uint32_t interruptMask)
Check interrupt flag of any TRNG interrupt.
Definition: dl_trng.h:546
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
Definition: dl_trng.h:133
Definition: dl_trng.h:151
DL_TRNG_CMD
Definition: dl_trng.h:143
uint32_t clockDivider
Definition: dl_trng.h:196
__STATIC_INLINE uint8_t DL_TRNG_getDigitalHealthTestResults(TRNG_Regs *trng)
Get the digital health test results.
Definition: dl_trng.h:378
__STATIC_INLINE void DL_TRNG_enableInterrupt(TRNG_Regs *trng, uint32_t interruptMask)
Enable TRNG interrupt.
Definition: dl_trng.h:473
bool DL_TRNG_saveConfiguration(TRNG_Regs *trng, DL_TRNG_backupConfig *ptr)
Save TRNG configuration before entering a power loss state. Only necessary for PG 1...
Definition: dl_trng.h:147
__STATIC_INLINE bool DL_TRNG_isReset(TRNG_Regs *trng)
Returns if TRNG peripheral was reset.
Definition: dl_trng.h:269
__STATIC_INLINE uint32_t DL_TRNG_getEnabledInterrupts(TRNG_Regs *trng, uint32_t interruptMask)
Check which TRNG interrupts are enabled.
Definition: dl_trng.h:505
__STATIC_INLINE void DL_TRNG_disablePower(TRNG_Regs *trng)
Disable power on TRNG module.
Definition: dl_trng.h:219
Definition: dl_trng.h:145
__STATIC_INLINE bool DL_TRNG_isRepetitionTestFail(TRNG_Regs *trng)
Indicates if the repetition counter test caused the most recent failure.
Definition: dl_trng.h:443
__STATIC_INLINE bool DL_TRNG_isCommandFail(TRNG_Regs *trng)
Returns if the issued TRNG command failed.
Definition: dl_trng.h:311
uint32_t controlWord
Definition: dl_trng.h:194
Definition: dl_trng.h:129