Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/glxsb/glxsb.c
Show First 20 Lines • Show All 451 Lines • ▼ Show 20 Lines | glxsb_rnd(void *v) | ||||
struct glxsb_softc *sc = v; | struct glxsb_softc *sc = v; | ||||
uint32_t status, value; | uint32_t status, value; | ||||
status = bus_read_4(sc->sc_sr, SB_RANDOM_NUM_STATUS); | status = bus_read_4(sc->sc_sr, SB_RANDOM_NUM_STATUS); | ||||
if (status & SB_RNS_TRNG_VALID) { | if (status & SB_RNS_TRNG_VALID) { | ||||
value = bus_read_4(sc->sc_sr, SB_RANDOM_NUM); | value = bus_read_4(sc->sc_sr, SB_RANDOM_NUM); | ||||
/* feed with one uint32 */ | /* feed with one uint32 */ | ||||
/* MarkM: FIX!! Check that this does not swamp the harvester! */ | /* MarkM: FIX!! Check that this does not swamp the harvester! */ | ||||
random_harvest_queue(&value, sizeof(value), 32/2, RANDOM_PURE_GLXSB); | random_harvest_queue(&value, sizeof(value), RANDOM_PURE_GLXSB); | ||||
} | } | ||||
callout_reset(&sc->sc_rngco, sc->sc_rnghz, glxsb_rnd, sc); | callout_reset(&sc->sc_rngco, sc->sc_rnghz, glxsb_rnd, sc); | ||||
} | } | ||||
static int | static int | ||||
glxsb_crypto_setup(struct glxsb_softc *sc) | glxsb_crypto_setup(struct glxsb_softc *sc) | ||||
{ | { | ||||
▲ Show 20 Lines • Show All 405 Lines • Show Last 20 Lines |