Lines Matching refs:engine
41 mv_cesa_dequeue_req_locked(struct mv_cesa_engine *engine, in mv_cesa_dequeue_req_locked() argument
46 *backlog = crypto_get_backlog(&engine->queue); in mv_cesa_dequeue_req_locked()
47 req = crypto_dequeue_request(&engine->queue); in mv_cesa_dequeue_req_locked()
55 static void mv_cesa_rearm_engine(struct mv_cesa_engine *engine) in mv_cesa_rearm_engine() argument
61 spin_lock_bh(&engine->lock); in mv_cesa_rearm_engine()
62 if (!engine->req) { in mv_cesa_rearm_engine()
63 req = mv_cesa_dequeue_req_locked(engine, &backlog); in mv_cesa_rearm_engine()
64 engine->req = req; in mv_cesa_rearm_engine()
66 spin_unlock_bh(&engine->lock); in mv_cesa_rearm_engine()
78 static int mv_cesa_std_process(struct mv_cesa_engine *engine, u32 status) in mv_cesa_std_process() argument
84 req = engine->req; in mv_cesa_std_process()
90 mv_cesa_engine_enqueue_complete_request(engine, req); in mv_cesa_std_process()
98 static int mv_cesa_int_process(struct mv_cesa_engine *engine, u32 status) in mv_cesa_int_process() argument
100 if (engine->chain.first && engine->chain.last) in mv_cesa_int_process()
101 return mv_cesa_tdma_process(engine, status); in mv_cesa_int_process()
103 return mv_cesa_std_process(engine, status); in mv_cesa_int_process()
118 struct mv_cesa_engine *engine = priv; in mv_cesa_int() local
127 mask = mv_cesa_get_int_mask(engine); in mv_cesa_int()
128 status = readl(engine->regs + CESA_SA_INT_STATUS); in mv_cesa_int()
137 writel(~status, engine->regs + CESA_SA_FPGA_INT_STATUS); in mv_cesa_int()
138 writel(~status, engine->regs + CESA_SA_INT_STATUS); in mv_cesa_int()
141 res = mv_cesa_int_process(engine, status & mask); in mv_cesa_int()
144 spin_lock_bh(&engine->lock); in mv_cesa_int()
145 req = engine->req; in mv_cesa_int()
147 engine->req = NULL; in mv_cesa_int()
148 spin_unlock_bh(&engine->lock); in mv_cesa_int()
156 mv_cesa_rearm_engine(engine); in mv_cesa_int()
160 req = mv_cesa_engine_dequeue_complete_request(engine); in mv_cesa_int()
176 struct mv_cesa_engine *engine = creq->engine; in mv_cesa_queue_req() local
178 spin_lock_bh(&engine->lock); in mv_cesa_queue_req()
179 ret = crypto_enqueue_request(&engine->queue, req); in mv_cesa_queue_req()
182 mv_cesa_tdma_chain(engine, creq); in mv_cesa_queue_req()
183 spin_unlock_bh(&engine->lock); in mv_cesa_queue_req()
188 mv_cesa_rearm_engine(engine); in mv_cesa_queue_req()
318 mv_cesa_conf_mbus_windows(struct mv_cesa_engine *engine, in mv_cesa_conf_mbus_windows() argument
321 void __iomem *iobase = engine->regs; in mv_cesa_conf_mbus_windows()
380 struct mv_cesa_engine *engine = &cesa->engines[idx]; in mv_cesa_get_sram() local
384 engine->pool = of_gen_pool_get(cesa->dev->of_node, in mv_cesa_get_sram()
386 if (engine->pool) { in mv_cesa_get_sram()
387 engine->sram = gen_pool_dma_alloc(engine->pool, in mv_cesa_get_sram()
389 &engine->sram_dma); in mv_cesa_get_sram()
390 if (engine->sram) in mv_cesa_get_sram()
393 engine->pool = NULL; in mv_cesa_get_sram()
409 engine->sram = devm_ioremap_resource(cesa->dev, res); in mv_cesa_get_sram()
410 if (IS_ERR(engine->sram)) in mv_cesa_get_sram()
411 return PTR_ERR(engine->sram); in mv_cesa_get_sram()
413 engine->sram_dma = dma_map_resource(cesa->dev, res->start, in mv_cesa_get_sram()
416 if (dma_mapping_error(cesa->dev, engine->sram_dma)) in mv_cesa_get_sram()
425 struct mv_cesa_engine *engine = &cesa->engines[idx]; in mv_cesa_put_sram() local
427 if (engine->pool) in mv_cesa_put_sram()
428 gen_pool_free(engine->pool, (unsigned long)engine->sram, in mv_cesa_put_sram()
431 dma_unmap_resource(cesa->dev, engine->sram_dma, in mv_cesa_put_sram()
495 struct mv_cesa_engine *engine = &cesa->engines[i]; in mv_cesa_probe() local
498 engine->id = i; in mv_cesa_probe()
499 spin_lock_init(&engine->lock); in mv_cesa_probe()
516 engine->clk = devm_clk_get(dev, res_name); in mv_cesa_probe()
517 if (IS_ERR(engine->clk)) { in mv_cesa_probe()
518 engine->clk = devm_clk_get(dev, NULL); in mv_cesa_probe()
519 if (IS_ERR(engine->clk)) in mv_cesa_probe()
520 engine->clk = NULL; in mv_cesa_probe()
524 engine->zclk = devm_clk_get(dev, res_name); in mv_cesa_probe()
525 if (IS_ERR(engine->zclk)) in mv_cesa_probe()
526 engine->zclk = NULL; in mv_cesa_probe()
528 ret = clk_prepare_enable(engine->clk); in mv_cesa_probe()
532 ret = clk_prepare_enable(engine->zclk); in mv_cesa_probe()
536 engine->regs = cesa->regs + CESA_ENGINE_OFF(i); in mv_cesa_probe()
539 mv_cesa_conf_mbus_windows(engine, dram); in mv_cesa_probe()
541 writel(0, engine->regs + CESA_SA_INT_STATUS); in mv_cesa_probe()
543 engine->regs + CESA_SA_CFG); in mv_cesa_probe()
544 writel(engine->sram_dma & CESA_SA_SRAM_MSK, in mv_cesa_probe()
545 engine->regs + CESA_SA_DESC_P0); in mv_cesa_probe()
550 engine); in mv_cesa_probe()
554 crypto_init_queue(&engine->queue, CESA_CRYPTO_DEFAULT_MAX_QLEN); in mv_cesa_probe()
555 atomic_set(&engine->load, 0); in mv_cesa_probe()
556 INIT_LIST_HEAD(&engine->complete_queue); in mv_cesa_probe()