Lines Matching refs:rng
16 * Simple virtio-rng driver.
53 HDF_LOGE("[%s]virtio-rng has no VERSION_1 feature", __func__);
106 static void VirtrngDeInit(struct Virtrng *rng)
108 if (rng->dev.irq & ~_IRQ_MASK) {
109 OsalUnregisterIrq(rng->dev.irq & _IRQ_MASK, rng);
111 if (rng->mutex.realMutex) {
112 OsalMutexDestroy(&rng->mutex);
114 LOS_DmaMemFree(rng);
118 static int VirtrngInitDevAux(struct Virtrng *rng)
122 if ((ret = OsalMutexInit(&rng->mutex)) != HDF_SUCCESS) {
127 if ((ret = DmaEventInit(&rng->event)) != HDF_SUCCESS) {
132 ret = OsalRegisterIrq(rng->dev.irq, OSAL_IRQF_TRIGGER_NONE,
133 (OsalIRQHandle)VirtrngIRQhandle, VIRTMMIO_RNG_NAME, rng);
138 rng->dev.irq |= ~_IRQ_MASK;
145 struct Virtrng *rng = NULL;
152 rng = LOS_DmaMemAlloc(NULL, len, sizeof(UINTPTR), DMA_CACHE);
153 if (rng == NULL) {
154 HDF_LOGE("[%s]alloc rng memory failed", __func__);
157 (void)memset_s(rng, len, 0, len);
159 if (!VirtmmioDiscover(VIRTMMIO_DEVICE_ID_RNG, &rng->dev)) {
163 VirtmmioInitBegin(&rng->dev);
165 if (!VirtmmioNegotiate(&rng->dev, Feature0, Feature1, rng)) {
169 base = ALIGN((VADDR_T)rng + sizeof(struct Virtrng), VIRTQ_ALIGN_DESC);
171 if (VirtmmioConfigQueue(&rng->dev, base, &qsz, 1) == 0) {
175 if (VirtrngInitDevAux(rng) != HDF_SUCCESS) {
179 VritmmioInitEnd(&rng->dev);
180 return rng;
183 VirtmmioInitFailed(&rng->dev);
185 VirtrngDeInit(rng);