Lines Matching refs:ce
3 * sun8i-ce-trng.c - hardware cryptographic offloader for
12 #include "sun8i-ce.h"
25 struct sun8i_ce_dev *ce;
35 ce = container_of(rng, struct sun8i_ce_dev, trng);
46 ce->hwrng_stat_req++;
47 ce->hwrng_stat_bytes += todo;
50 dma_dst = dma_map_single(ce->dev, d, todo, DMA_FROM_DEVICE);
51 if (dma_mapping_error(ce->dev, dma_dst)) {
52 dev_err(ce->dev, "Cannot DMA MAP DST\n");
57 err = pm_runtime_resume_and_get(ce->dev);
61 mutex_lock(&ce->rnglock);
62 chan = &ce->chanlist[flow];
68 common = ce->variant->trng | CE_COMM_INT;
72 if (ce->variant->trng_t_dlen_in_bytes)
82 ce->chanlist[flow].timeout = todo;
84 err = sun8i_ce_run_task(ce, 3, "TRNG");
85 mutex_unlock(&ce->rnglock);
87 pm_runtime_put(ce->dev);
90 dma_unmap_single(ce->dev, dma_dst, todo, DMA_FROM_DEVICE);
101 int sun8i_ce_hwrng_register(struct sun8i_ce_dev *ce)
105 if (ce->variant->trng == CE_ID_NOTSUPP) {
106 dev_info(ce->dev, "TRNG not supported\n");
109 ce->trng.name = "sun8i Crypto Engine TRNG";
110 ce->trng.read = sun8i_ce_trng_read;
112 ret = hwrng_register(&ce->trng);
114 dev_err(ce->dev, "Fail to register the TRNG\n");
118 void sun8i_ce_hwrng_unregister(struct sun8i_ce_dev *ce)
120 if (ce->variant->trng == CE_ID_NOTSUPP)
122 hwrng_unregister(&ce->trng);