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