Lines Matching refs:cesa

193 static int mv_cesa_add_algs(struct mv_cesa_dev *cesa)  in mv_cesa_add_algs()  argument
198 for (i = 0; i < cesa->caps->ncipher_algs; i++) { in mv_cesa_add_algs()
199 ret = crypto_register_skcipher(cesa->caps->cipher_algs[i]); in mv_cesa_add_algs()
204 for (i = 0; i < cesa->caps->nahash_algs; i++) { in mv_cesa_add_algs()
205 ret = crypto_register_ahash(cesa->caps->ahash_algs[i]); in mv_cesa_add_algs()
214 crypto_unregister_ahash(cesa->caps->ahash_algs[j]); in mv_cesa_add_algs()
215 i = cesa->caps->ncipher_algs; in mv_cesa_add_algs()
219 crypto_unregister_skcipher(cesa->caps->cipher_algs[j]); in mv_cesa_add_algs()
224 static void mv_cesa_remove_algs(struct mv_cesa_dev *cesa) in mv_cesa_remove_algs() argument
228 for (i = 0; i < cesa->caps->nahash_algs; i++) in mv_cesa_remove_algs()
229 crypto_unregister_ahash(cesa->caps->ahash_algs[i]); in mv_cesa_remove_algs()
231 for (i = 0; i < cesa->caps->ncipher_algs; i++) in mv_cesa_remove_algs()
232 crypto_unregister_skcipher(cesa->caps->cipher_algs[i]); in mv_cesa_remove_algs()
340 static int mv_cesa_dev_dma_init(struct mv_cesa_dev *cesa) in mv_cesa_dev_dma_init() argument
342 struct device *dev = cesa->dev; in mv_cesa_dev_dma_init()
345 if (!cesa->caps->has_tdma) in mv_cesa_dev_dma_init()
372 cesa->dma = dma; in mv_cesa_dev_dma_init()
379 struct mv_cesa_dev *cesa = platform_get_drvdata(pdev); in mv_cesa_get_sram() local
380 struct mv_cesa_engine *engine = &cesa->engines[idx]; in mv_cesa_get_sram()
384 engine->pool = of_gen_pool_get(cesa->dev->of_node, in mv_cesa_get_sram()
388 cesa->sram_size, in mv_cesa_get_sram()
397 if (cesa->caps->nengines > 1) { in mv_cesa_get_sram()
406 if (!res || resource_size(res) < cesa->sram_size) in mv_cesa_get_sram()
409 engine->sram = devm_ioremap_resource(cesa->dev, res); in mv_cesa_get_sram()
413 engine->sram_dma = dma_map_resource(cesa->dev, res->start, in mv_cesa_get_sram()
414 cesa->sram_size, in mv_cesa_get_sram()
416 if (dma_mapping_error(cesa->dev, engine->sram_dma)) in mv_cesa_get_sram()
424 struct mv_cesa_dev *cesa = platform_get_drvdata(pdev); in mv_cesa_put_sram() local
425 struct mv_cesa_engine *engine = &cesa->engines[idx]; in mv_cesa_put_sram()
429 cesa->sram_size); in mv_cesa_put_sram()
431 dma_unmap_resource(cesa->dev, engine->sram_dma, in mv_cesa_put_sram()
432 cesa->sram_size, DMA_BIDIRECTIONAL, 0); in mv_cesa_put_sram()
441 struct mv_cesa_dev *cesa; in mv_cesa_probe() local
460 cesa = devm_kzalloc(dev, sizeof(*cesa), GFP_KERNEL); in mv_cesa_probe()
461 if (!cesa) in mv_cesa_probe()
464 cesa->caps = caps; in mv_cesa_probe()
465 cesa->dev = dev; in mv_cesa_probe()
468 of_property_read_u32(cesa->dev->of_node, "marvell,crypto-sram-size", in mv_cesa_probe()
473 cesa->sram_size = sram_size; in mv_cesa_probe()
474 cesa->engines = devm_kcalloc(dev, caps->nengines, sizeof(*engines), in mv_cesa_probe()
476 if (!cesa->engines) in mv_cesa_probe()
479 spin_lock_init(&cesa->lock); in mv_cesa_probe()
482 cesa->regs = devm_ioremap_resource(dev, res); in mv_cesa_probe()
483 if (IS_ERR(cesa->regs)) in mv_cesa_probe()
484 return PTR_ERR(cesa->regs); in mv_cesa_probe()
486 ret = mv_cesa_dev_dma_init(cesa); in mv_cesa_probe()
492 platform_set_drvdata(pdev, cesa); in mv_cesa_probe()
495 struct mv_cesa_engine *engine = &cesa->engines[i]; in mv_cesa_probe()
536 engine->regs = cesa->regs + CESA_ENGINE_OFF(i); in mv_cesa_probe()
538 if (dram && cesa->caps->has_tdma) in mv_cesa_probe()
559 cesa_dev = cesa; in mv_cesa_probe()
561 ret = mv_cesa_add_algs(cesa); in mv_cesa_probe()
573 clk_disable_unprepare(cesa->engines[i].zclk); in mv_cesa_probe()
574 clk_disable_unprepare(cesa->engines[i].clk); in mv_cesa_probe()
583 struct mv_cesa_dev *cesa = platform_get_drvdata(pdev); in mv_cesa_remove() local
586 mv_cesa_remove_algs(cesa); in mv_cesa_remove()
588 for (i = 0; i < cesa->caps->nengines; i++) { in mv_cesa_remove()
589 clk_disable_unprepare(cesa->engines[i].zclk); in mv_cesa_remove()
590 clk_disable_unprepare(cesa->engines[i].clk); in mv_cesa_remove()