Lines Matching refs:cesa
190 static int mv_cesa_add_algs(struct mv_cesa_dev *cesa) in mv_cesa_add_algs() argument
195 for (i = 0; i < cesa->caps->ncipher_algs; i++) { in mv_cesa_add_algs()
196 ret = crypto_register_skcipher(cesa->caps->cipher_algs[i]); in mv_cesa_add_algs()
201 for (i = 0; i < cesa->caps->nahash_algs; i++) { in mv_cesa_add_algs()
202 ret = crypto_register_ahash(cesa->caps->ahash_algs[i]); in mv_cesa_add_algs()
211 crypto_unregister_ahash(cesa->caps->ahash_algs[j]); in mv_cesa_add_algs()
212 i = cesa->caps->ncipher_algs; in mv_cesa_add_algs()
216 crypto_unregister_skcipher(cesa->caps->cipher_algs[j]); in mv_cesa_add_algs()
221 static void mv_cesa_remove_algs(struct mv_cesa_dev *cesa) in mv_cesa_remove_algs() argument
225 for (i = 0; i < cesa->caps->nahash_algs; i++) in mv_cesa_remove_algs()
226 crypto_unregister_ahash(cesa->caps->ahash_algs[i]); in mv_cesa_remove_algs()
228 for (i = 0; i < cesa->caps->ncipher_algs; i++) in mv_cesa_remove_algs()
229 crypto_unregister_skcipher(cesa->caps->cipher_algs[i]); in mv_cesa_remove_algs()
337 static int mv_cesa_dev_dma_init(struct mv_cesa_dev *cesa) in mv_cesa_dev_dma_init() argument
339 struct device *dev = cesa->dev; in mv_cesa_dev_dma_init()
342 if (!cesa->caps->has_tdma) in mv_cesa_dev_dma_init()
369 cesa->dma = dma; in mv_cesa_dev_dma_init()
376 struct mv_cesa_dev *cesa = platform_get_drvdata(pdev); in mv_cesa_get_sram() local
377 struct mv_cesa_engine *engine = &cesa->engines[idx]; in mv_cesa_get_sram()
381 engine->pool = of_gen_pool_get(cesa->dev->of_node, in mv_cesa_get_sram()
385 cesa->sram_size, in mv_cesa_get_sram()
394 if (cesa->caps->nengines > 1) { in mv_cesa_get_sram()
403 if (!res || resource_size(res) < cesa->sram_size) in mv_cesa_get_sram()
406 engine->sram = devm_ioremap_resource(cesa->dev, res); in mv_cesa_get_sram()
410 engine->sram_dma = dma_map_resource(cesa->dev, res->start, in mv_cesa_get_sram()
411 cesa->sram_size, in mv_cesa_get_sram()
413 if (dma_mapping_error(cesa->dev, engine->sram_dma)) in mv_cesa_get_sram()
421 struct mv_cesa_dev *cesa = platform_get_drvdata(pdev); in mv_cesa_put_sram() local
422 struct mv_cesa_engine *engine = &cesa->engines[idx]; in mv_cesa_put_sram()
426 cesa->sram_size); in mv_cesa_put_sram()
428 dma_unmap_resource(cesa->dev, engine->sram_dma, in mv_cesa_put_sram()
429 cesa->sram_size, DMA_BIDIRECTIONAL, 0); in mv_cesa_put_sram()
438 struct mv_cesa_dev *cesa; in mv_cesa_probe() local
456 cesa = devm_kzalloc(dev, sizeof(*cesa), GFP_KERNEL); in mv_cesa_probe()
457 if (!cesa) in mv_cesa_probe()
460 cesa->caps = caps; in mv_cesa_probe()
461 cesa->dev = dev; in mv_cesa_probe()
464 of_property_read_u32(cesa->dev->of_node, "marvell,crypto-sram-size", in mv_cesa_probe()
469 cesa->sram_size = sram_size; in mv_cesa_probe()
470 cesa->engines = devm_kcalloc(dev, caps->nengines, sizeof(*engines), in mv_cesa_probe()
472 if (!cesa->engines) in mv_cesa_probe()
475 spin_lock_init(&cesa->lock); in mv_cesa_probe()
477 cesa->regs = devm_platform_ioremap_resource_byname(pdev, "regs"); in mv_cesa_probe()
478 if (IS_ERR(cesa->regs)) in mv_cesa_probe()
479 return PTR_ERR(cesa->regs); in mv_cesa_probe()
481 ret = mv_cesa_dev_dma_init(cesa); in mv_cesa_probe()
487 platform_set_drvdata(pdev, cesa); in mv_cesa_probe()
490 struct mv_cesa_engine *engine = &cesa->engines[i]; in mv_cesa_probe()
533 engine->regs = cesa->regs + CESA_ENGINE_OFF(i); in mv_cesa_probe()
535 if (dram && cesa->caps->has_tdma) in mv_cesa_probe()
560 cesa_dev = cesa; in mv_cesa_probe()
562 ret = mv_cesa_add_algs(cesa); in mv_cesa_probe()
574 clk_disable_unprepare(cesa->engines[i].zclk); in mv_cesa_probe()
575 clk_disable_unprepare(cesa->engines[i].clk); in mv_cesa_probe()
577 if (cesa->engines[i].irq > 0) in mv_cesa_probe()
578 irq_set_affinity_hint(cesa->engines[i].irq, NULL); in mv_cesa_probe()
586 struct mv_cesa_dev *cesa = platform_get_drvdata(pdev); in mv_cesa_remove() local
589 mv_cesa_remove_algs(cesa); in mv_cesa_remove()
591 for (i = 0; i < cesa->caps->nengines; i++) { in mv_cesa_remove()
592 clk_disable_unprepare(cesa->engines[i].zclk); in mv_cesa_remove()
593 clk_disable_unprepare(cesa->engines[i].clk); in mv_cesa_remove()
595 irq_set_affinity_hint(cesa->engines[i].irq, NULL); in mv_cesa_remove()