[cc2538] fix radio disabled for entropy get (#3872)

Restore RFCORE_XREG_FRMCTRL0 after generating random values.
This commit is contained in:
Yakun Xu
2019-05-28 10:13:33 -07:00
committed by Jonathan Hui
parent fb11d96e61
commit df62add5a2
+5 -1
View File
@@ -41,12 +41,15 @@
static void generateRandom(uint8_t *aOutput, uint16_t aOutputLength) static void generateRandom(uint8_t *aOutput, uint16_t aOutputLength)
{ {
uint32_t frmctrl0;
HWREG(SOC_ADC_ADCCON1) &= ~(SOC_ADC_ADCCON1_RCTRL1 | SOC_ADC_ADCCON1_RCTRL0); HWREG(SOC_ADC_ADCCON1) &= ~(SOC_ADC_ADCCON1_RCTRL1 | SOC_ADC_ADCCON1_RCTRL0);
HWREG(SYS_CTRL_RCGCRFC) = SYS_CTRL_RCGCRFC_RFC0; HWREG(SYS_CTRL_RCGCRFC) = SYS_CTRL_RCGCRFC_RFC0;
while (HWREG(SYS_CTRL_RCGCRFC) != SYS_CTRL_RCGCRFC_RFC0) while (HWREG(SYS_CTRL_RCGCRFC) != SYS_CTRL_RCGCRFC_RFC0)
; ;
frmctrl0 = HWREG(RFCORE_XREG_FRMCTRL0);
HWREG(RFCORE_XREG_FRMCTRL0) = RFCORE_XREG_FRMCTRL0_INFINITY_RX; HWREG(RFCORE_XREG_FRMCTRL0) = RFCORE_XREG_FRMCTRL0_INFINITY_RX;
HWREG(RFCORE_SFR_RFST) = RFCORE_SFR_RFST_INSTR_RXON; HWREG(RFCORE_SFR_RFST) = RFCORE_SFR_RFST_INSTR_RXON;
@@ -64,7 +67,8 @@ static void generateRandom(uint8_t *aOutput, uint16_t aOutputLength)
} }
} }
HWREG(RFCORE_SFR_RFST) = RFCORE_SFR_RFST_INSTR_RFOFF; HWREG(RFCORE_SFR_RFST) = RFCORE_SFR_RFST_INSTR_RFOFF;
HWREG(RFCORE_XREG_FRMCTRL0) = frmctrl0;
} }
void cc2538RandomInit(void) void cc2538RandomInit(void)