Lines Matching defs:job_ring

148 int hw_reset_job_ring(sec_job_ring_t *job_ring)
152 (struct jobring_regs *)job_ring->register_base_addr;
155 ret = hw_shutdown_job_ring(job_ring);
172 hw_set_input_ring_start_addr(regs, vtop(job_ring->input_ring));
175 hw_set_output_ring_start_addr(regs, vtop(job_ring->output_ring));
180 int hw_shutdown_job_ring(sec_job_ring_t *job_ring)
183 (struct jobring_regs *)job_ring->register_base_addr;
197 jr_disable_irqs(job_ring);
214 if (job_ring->jr_mode != SEC_NOTIFICATION_TYPE_POLL) {
215 jr_enable_irqs(job_ring);
231 if (job_ring->jr_mode != SEC_NOTIFICATION_TYPE_POLL) {
232 jr_enable_irqs(job_ring);
237 if (job_ring->jr_mode != SEC_NOTIFICATION_TYPE_POLL) {
238 jr_enable_irqs(job_ring);
244 void hw_handle_job_ring_error(sec_job_ring_t *job_ring, uint32_t error_code)
280 int hw_job_ring_error(sec_job_ring_t *job_ring)
284 (struct jobring_regs *)job_ring->register_base_addr;
324 int hw_job_ring_set_coalescing_param(sec_job_ring_t *job_ring,
330 (struct jobring_regs *)job_ring->register_base_addr;
346 int hw_job_ring_enable_coalescing(sec_job_ring_t *job_ring)
350 (struct jobring_regs *)job_ring->register_base_addr;
366 int hw_job_ring_disable_coalescing(sec_job_ring_t *job_ring)
370 (struct jobring_regs *)job_ring->register_base_addr;
387 void hw_flush_job_ring(struct sec_job_ring_t *job_ring,
395 VERBOSE("JR pi[%d]i ci[%d]\n", job_ring->pidx, job_ring->cidx);
399 number_of_jobs_available = hw_get_no_finished_jobs(job_ring);
404 VERBOSE("JR pi[%d]i ci[%d]\n", job_ring->pidx, job_ring->cidx);
414 job_ring->cidx = SEC_CIRCULAR_COUNTER(job_ring->cidx,
417 hw_remove_entries(job_ring, 1);
433 int hw_poll_job_ring(struct sec_job_ring_t *job_ring, int32_t limit)
449 inv_dcache_range((uintptr_t)job_ring->register_base_addr, sizeof(struct jobring_regs));
456 sec_error_code = hw_job_ring_error(job_ring);
473 number_of_jobs_available = hw_get_no_finished_jobs(job_ring);
476 VERBOSE("JR - pi %d, ci %d, ", job_ring->pidx, job_ring->cidx);
484 (uintptr_t)(&job_ring->output_ring[job_ring->cidx]),
491 sec_in32(&(job_ring->output_ring[job_ring->cidx].status));
496 &job_ring->output_ring[job_ring->cidx].desc;
508 job_ring->cidx = SEC_CIRCULAR_COUNTER(job_ring->cidx,
512 ERROR("desc at cidx %d\n ", job_ring->cidx);
515 sec_handle_desc_error(job_ring,
519 hw_remove_entries(job_ring, 1);
524 hw_remove_entries(job_ring, 1);
539 sec_error_code, arg, job_ring);
546 void sec_handle_desc_error(sec_job_ring_t *job_ring,
552 hw_handle_job_ring_error(job_ring, sec_error_code);
557 struct sec_job_ring_t *job_ring = NULL;
561 job_ring = &g_job_rings[i];
565 while (job_ring->pidx != job_ring->cidx) {
566 hw_flush_job_ring(job_ring, false, 0, /* no error */
572 int shutdown_job_ring(struct sec_job_ring_t *job_ring)
576 ret = hw_shutdown_job_ring(job_ring);
582 if (job_ring->coalescing_en != 0) {
583 hw_job_ring_disable_coalescing(job_ring);
586 if (job_ring->jr_mode != SEC_NOTIFICATION_TYPE_POLL) {
587 ret = jr_disable_irqs(job_ring);
597 int jr_enable_irqs(struct sec_job_ring_t *job_ring)
601 (struct jobring_regs *)job_ring->register_base_addr;
617 int jr_disable_irqs(struct sec_job_ring_t *job_ring)
621 (struct jobring_regs *)job_ring->register_base_addr;