Lines Matching refs:drvdata
86 void cc_req_mgr_fini(struct cc_drvdata *drvdata) in cc_req_mgr_fini() argument
88 struct cc_req_mgr_handle *req_mgr_h = drvdata->request_mgr_handle; in cc_req_mgr_fini()
89 struct device *dev = drvdata_to_dev(drvdata); in cc_req_mgr_fini()
111 drvdata->request_mgr_handle = NULL; in cc_req_mgr_fini()
114 int cc_req_mgr_init(struct cc_drvdata *drvdata) in cc_req_mgr_init() argument
117 struct device *dev = drvdata_to_dev(drvdata); in cc_req_mgr_init()
126 drvdata->request_mgr_handle = req_mgr_h; in cc_req_mgr_init()
144 (unsigned long)drvdata); in cc_req_mgr_init()
146 req_mgr_h->hw_queue_size = cc_ioread(drvdata, in cc_req_mgr_init()
176 set_queue_last_ind(drvdata, &req_mgr_h->compl_desc); in cc_req_mgr_init()
181 cc_req_mgr_fini(drvdata); in cc_req_mgr_init()
185 static void enqueue_seq(struct cc_drvdata *drvdata, struct cc_hw_desc seq[], in enqueue_seq() argument
189 void __iomem *reg = drvdata->cc_base + CC_REG(DSCRPTR_QUEUE_WORD0); in enqueue_seq()
190 struct device *dev = drvdata_to_dev(drvdata); in enqueue_seq()
225 static int cc_queues_status(struct cc_drvdata *drvdata, in cc_queues_status() argument
230 struct device *dev = drvdata_to_dev(drvdata); in cc_queues_status()
249 cc_ioread(drvdata, CC_REG(DSCRPTR_QUEUE_CONTENT)); in cc_queues_status()
279 static void cc_do_send_request(struct cc_drvdata *drvdata, in cc_do_send_request() argument
284 struct cc_req_mgr_handle *req_mgr_h = drvdata->request_mgr_handle; in cc_do_send_request()
287 struct device *dev = drvdata_to_dev(drvdata); in cc_do_send_request()
311 enqueue_seq(drvdata, desc, len); in cc_do_send_request()
314 enqueue_seq(drvdata, &req_mgr_h->compl_desc, 1); in cc_do_send_request()
331 static void cc_enqueue_backlog(struct cc_drvdata *drvdata, in cc_enqueue_backlog() argument
334 struct cc_req_mgr_handle *mgr = drvdata->request_mgr_handle; in cc_enqueue_backlog()
335 struct device *dev = drvdata_to_dev(drvdata); in cc_enqueue_backlog()
345 static void cc_proc_backlog(struct cc_drvdata *drvdata) in cc_proc_backlog() argument
347 struct cc_req_mgr_handle *mgr = drvdata->request_mgr_handle; in cc_proc_backlog()
351 struct device *dev = drvdata_to_dev(drvdata); in cc_proc_backlog()
377 rc = cc_queues_status(drvdata, mgr, bli->len); in cc_proc_backlog()
388 cc_do_send_request(drvdata, &bli->creq, bli->desc, bli->len, in cc_proc_backlog()
402 int cc_send_request(struct cc_drvdata *drvdata, struct cc_crypto_req *cc_req, in cc_send_request() argument
407 struct cc_req_mgr_handle *mgr = drvdata->request_mgr_handle; in cc_send_request()
408 struct device *dev = drvdata_to_dev(drvdata); in cc_send_request()
420 rc = cc_queues_status(drvdata, mgr, len); in cc_send_request()
440 cc_enqueue_backlog(drvdata, bli); in cc_send_request()
445 cc_do_send_request(drvdata, cc_req, desc, len, false); in cc_send_request()
453 int cc_send_sync_request(struct cc_drvdata *drvdata, in cc_send_sync_request() argument
458 struct device *dev = drvdata_to_dev(drvdata); in cc_send_sync_request()
459 struct cc_req_mgr_handle *mgr = drvdata->request_mgr_handle; in cc_send_sync_request()
473 rc = cc_queues_status(drvdata, mgr, len + 1); in cc_send_sync_request()
479 wait_for_completion_interruptible(&drvdata->hw_queue_avail); in cc_send_sync_request()
480 reinit_completion(&drvdata->hw_queue_avail); in cc_send_sync_request()
483 cc_do_send_request(drvdata, cc_req, desc, len, true); in cc_send_sync_request()
502 int send_request_init(struct cc_drvdata *drvdata, struct cc_hw_desc *desc, in send_request_init() argument
505 struct cc_req_mgr_handle *req_mgr_h = drvdata->request_mgr_handle; in send_request_init()
511 rc = cc_queues_status(drvdata, req_mgr_h, total_seq_len); in send_request_init()
515 set_queue_last_ind(drvdata, &desc[(len - 1)]); in send_request_init()
523 enqueue_seq(drvdata, desc, len); in send_request_init()
527 cc_ioread(drvdata, CC_REG(DSCRPTR_QUEUE_CONTENT)); in send_request_init()
532 void complete_request(struct cc_drvdata *drvdata) in complete_request() argument
535 drvdata->request_mgr_handle; in complete_request()
537 complete(&drvdata->hw_queue_avail); in complete_request()
549 struct cc_drvdata *drvdata = in comp_work_handler() local
552 comp_handler((unsigned long)drvdata); in comp_work_handler()
556 static void proc_completions(struct cc_drvdata *drvdata) in proc_completions() argument
559 struct device *dev = drvdata_to_dev(drvdata); in proc_completions()
561 drvdata->request_mgr_handle; in proc_completions()
589 rc = (drvdata->irq & mask ? -EPERM : 0); in proc_completions()
591 drvdata->irq, rc); in proc_completions()
607 static inline u32 cc_axi_comp_count(struct cc_drvdata *drvdata) in cc_axi_comp_count() argument
610 cc_ioread(drvdata, drvdata->axim_mon_offset)); in cc_axi_comp_count()
616 struct cc_drvdata *drvdata = (struct cc_drvdata *)devarg; in comp_handler() local
618 drvdata->request_mgr_handle; in comp_handler()
619 struct device *dev = drvdata_to_dev(drvdata); in comp_handler()
623 irq = (drvdata->irq & drvdata->comp_mask); in comp_handler()
628 cc_iowrite(drvdata, CC_REG(HOST_ICR), irq); in comp_handler()
632 request_mgr_handle->axi_completed += cc_axi_comp_count(drvdata); in comp_handler()
639 drvdata->irq |= cc_ioread(drvdata, CC_REG(HOST_IRR)); in comp_handler()
640 irq = (drvdata->irq & drvdata->comp_mask); in comp_handler()
641 proc_completions(drvdata); in comp_handler()
647 cc_axi_comp_count(drvdata); in comp_handler()
650 cc_iowrite(drvdata, CC_REG(HOST_ICR), irq); in comp_handler()
652 request_mgr_handle->axi_completed += cc_axi_comp_count(drvdata); in comp_handler()
658 cc_iowrite(drvdata, CC_REG(HOST_IMR), in comp_handler()
659 cc_ioread(drvdata, CC_REG(HOST_IMR)) & ~drvdata->comp_mask); in comp_handler()
661 cc_proc_backlog(drvdata); in comp_handler()