Lines Matching refs:rknpu_dev

108 static inline struct rknpu_job *rknpu_job_alloc(struct rknpu_device *rknpu_dev,  in rknpu_job_alloc()  argument
115 if (rknpu_dev->config->num_irqs == 1) in rknpu_job_alloc()
123 job->rknpu_dev = rknpu_dev; in rknpu_job_alloc()
156 struct rknpu_device *rknpu_dev = job->rknpu_dev; in rknpu_job_wait() local
167 subcore_data = &rknpu_dev->subcore_datas[core_index]; in rknpu_job_wait()
172 rknpu_dev->soft_reseting, in rknpu_job_wait()
179 spin_lock_irqsave(&rknpu_dev->lock, flags); in rknpu_job_wait()
192 spin_unlock_irqrestore(&rknpu_dev->lock, flags); in rknpu_job_wait()
204 rknpu_core_base = rknpu_dev->base[core_index]; in rknpu_job_wait()
207 rknpu_dev->config->pc_task_status_offset); in rknpu_job_wait()
210 rknpu_dev->config->pc_task_number_mask); in rknpu_job_wait()
231 struct rknpu_device *rknpu_dev = job->rknpu_dev; in rknpu_job_commit_pc() local
244 void __iomem *rknpu_core_base = rknpu_dev->base[core_index]; in rknpu_job_commit_pc()
249 int pc_data_amount_scale = rknpu_dev->config->pc_data_amount_scale; in rknpu_job_commit_pc()
250 int pc_task_number_bits = rknpu_dev->config->pc_task_number_bits; in rknpu_job_commit_pc()
256 if (rknpu_dev->config->num_irqs > 1) { in rknpu_job_commit_pc()
257 for (i = 0; i < rknpu_dev->config->num_irqs; i++) { in rknpu_job_commit_pc()
324 struct rknpu_device *rknpu_dev = job->rknpu_dev; in rknpu_job_commit() local
326 void __iomem *rknpu_core_base = rknpu_dev->base[core_index]; in rknpu_job_commit()
337 static void rknpu_job_next(struct rknpu_device *rknpu_dev, int core_index) in rknpu_job_next() argument
343 if (rknpu_dev->soft_reseting) in rknpu_job_next()
346 subcore_data = &rknpu_dev->subcore_datas[core_index]; in rknpu_job_next()
348 spin_lock_irqsave(&rknpu_dev->irq_lock, flags); in rknpu_job_next()
351 spin_unlock_irqrestore(&rknpu_dev->irq_lock, flags); in rknpu_job_next()
362 spin_unlock_irqrestore(&rknpu_dev->irq_lock, flags); in rknpu_job_next()
376 struct rknpu_device *rknpu_dev = job->rknpu_dev; in rknpu_job_done() local
381 subcore_data = &rknpu_dev->subcore_datas[core_index]; in rknpu_job_done()
383 spin_lock_irqsave(&rknpu_dev->irq_lock, flags); in rknpu_job_done()
388 spin_unlock_irqrestore(&rknpu_dev->irq_lock, flags); in rknpu_job_done()
403 wake_up(&(&rknpu_dev->subcore_datas[0])->job_done_wq); in rknpu_job_done()
408 rknpu_job_next(rknpu_dev, core_index); in rknpu_job_done()
413 struct rknpu_device *rknpu_dev = job->rknpu_dev; in rknpu_job_schedule() local
421 if (rknpu_dev->subcore_datas[0].task_num > in rknpu_job_schedule()
422 rknpu_dev->subcore_datas[1].task_num) { in rknpu_job_schedule()
427 if (rknpu_dev->subcore_datas[task_num_list[0]].task_num > in rknpu_job_schedule()
428 rknpu_dev->subcore_datas[2].task_num) { in rknpu_job_schedule()
433 } else if (rknpu_dev->subcore_datas[task_num_list[1]].task_num > in rknpu_job_schedule()
434 rknpu_dev->subcore_datas[2].task_num) { in rknpu_job_schedule()
439 if (!rknpu_dev->subcore_datas[task_num_list[0]].job) in rknpu_job_schedule()
441 else if (!rknpu_dev->subcore_datas[task_num_list[1]].job) in rknpu_job_schedule()
443 else if (!rknpu_dev->subcore_datas[task_num_list[2]].job) in rknpu_job_schedule()
454 spin_lock_irqsave(&rknpu_dev->irq_lock, flags); in rknpu_job_schedule()
455 for (i = 0; i < rknpu_dev->config->num_irqs; i++) { in rknpu_job_schedule()
457 subcore_data = &rknpu_dev->subcore_datas[i]; in rknpu_job_schedule()
463 spin_unlock_irqrestore(&rknpu_dev->irq_lock, flags); in rknpu_job_schedule()
465 for (i = 0; i < rknpu_dev->config->num_irqs; i++) { in rknpu_job_schedule()
467 rknpu_job_next(rknpu_dev, i); in rknpu_job_schedule()
473 struct rknpu_device *rknpu_dev = job->rknpu_dev; in rknpu_job_abort() local
480 for (i = 0; i < rknpu_dev->config->num_irqs; i++) { in rknpu_job_abort()
482 subcore_data = &rknpu_dev->subcore_datas[i]; in rknpu_job_abort()
483 spin_lock_irqsave(&rknpu_dev->irq_lock, flags); in rknpu_job_abort()
489 spin_unlock_irqrestore(&rknpu_dev->irq_lock, flags); in rknpu_job_abort()
495 for (i = 0; i < rknpu_dev->config->num_irqs; i++) { in rknpu_job_abort()
498 rknpu_dev->base[i]; in rknpu_job_abort()
505 rknpu_dev->config in rknpu_job_abort()
507 rknpu_dev->config->pc_task_number_mask), in rknpu_job_abort()
512 rknpu_soft_reset(rknpu_dev); in rknpu_job_abort()
550 struct rknpu_device *rknpu_dev = data; in rknpu_irq_handler() local
551 void __iomem *rknpu_core_base = rknpu_dev->base[core_index]; in rknpu_irq_handler()
557 subcore_data = &rknpu_dev->subcore_datas[core_index]; in rknpu_irq_handler()
559 spin_lock_irqsave(&rknpu_dev->irq_lock, flags); in rknpu_irq_handler()
562 spin_unlock_irqrestore(&rknpu_dev->irq_lock, flags); in rknpu_irq_handler()
564 rknpu_job_next(rknpu_dev, core_index); in rknpu_irq_handler()
568 spin_unlock_irqrestore(&rknpu_dev->irq_lock, flags); in rknpu_irq_handler()
579 (REG_READ(rknpu_dev->config->pc_task_status_offset) & in rknpu_irq_handler()
580 rknpu_dev->config->pc_task_number_mask)); in rknpu_irq_handler()
607 static void rknpu_job_timeout_clean(struct rknpu_device *rknpu_dev, in rknpu_job_timeout_clean() argument
616 for (i = 0; i < rknpu_dev->config->num_irqs; i++) { in rknpu_job_timeout_clean()
618 subcore_data = &rknpu_dev->subcore_datas[i]; in rknpu_job_timeout_clean()
623 rknpu_soft_reset(rknpu_dev); in rknpu_job_timeout_clean()
625 spin_lock_irqsave(&rknpu_dev->irq_lock, flags); in rknpu_job_timeout_clean()
627 spin_unlock_irqrestore(&rknpu_dev->irq_lock, in rknpu_job_timeout_clean()
633 spin_lock_irqsave(&rknpu_dev->irq_lock, in rknpu_job_timeout_clean()
649 &rknpu_dev->irq_lock, flags); in rknpu_job_timeout_clean()
656 static int rknpu_submit(struct rknpu_device *rknpu_dev, in rknpu_submit() argument
667 job = rknpu_job_alloc(rknpu_dev, args); in rknpu_submit()
692 rknpu_dev->fence_ctx->context)) in rknpu_submit()
730 rknpu_job_timeout_clean(rknpu_dev, job->args->core_mask); in rknpu_submit()
757 struct rknpu_device *rknpu_dev = dev_get_drvdata(dev->dev); in rknpu_submit_ioctl() local
760 return rknpu_submit(rknpu_dev, args); in rknpu_submit_ioctl()
765 int rknpu_submit_ioctl(struct rknpu_device *rknpu_dev, unsigned long data) in rknpu_submit_ioctl() argument
777 ret = rknpu_submit(rknpu_dev, &args); in rknpu_submit_ioctl()
790 int rknpu_get_hw_version(struct rknpu_device *rknpu_dev, uint32_t *version) in rknpu_get_hw_version() argument
792 void __iomem *rknpu_core_base = rknpu_dev->base[0]; in rknpu_get_hw_version()
803 int rknpu_get_bw_priority(struct rknpu_device *rknpu_dev, uint32_t *priority, in rknpu_get_bw_priority() argument
806 void __iomem *base = rknpu_dev->bw_priority_base; in rknpu_get_bw_priority()
808 if (!rknpu_dev->config->bw_enable) { in rknpu_get_bw_priority()
816 spin_lock(&rknpu_dev->lock); in rknpu_get_bw_priority()
827 spin_unlock(&rknpu_dev->lock); in rknpu_get_bw_priority()
832 int rknpu_set_bw_priority(struct rknpu_device *rknpu_dev, uint32_t priority, in rknpu_set_bw_priority() argument
835 void __iomem *base = rknpu_dev->bw_priority_base; in rknpu_set_bw_priority()
837 if (!rknpu_dev->config->bw_enable) { in rknpu_set_bw_priority()
845 spin_lock(&rknpu_dev->lock); in rknpu_set_bw_priority()
856 spin_unlock(&rknpu_dev->lock); in rknpu_set_bw_priority()
861 int rknpu_clear_rw_amount(struct rknpu_device *rknpu_dev) in rknpu_clear_rw_amount() argument
863 void __iomem *rknpu_core_base = rknpu_dev->base[0]; in rknpu_clear_rw_amount()
865 if (!rknpu_dev->config->bw_enable) { in rknpu_clear_rw_amount()
870 spin_lock(&rknpu_dev->lock); in rknpu_clear_rw_amount()
872 if (rknpu_dev->config->pc_dma_ctrl) { in rknpu_clear_rw_amount()
884 spin_unlock(&rknpu_dev->lock); in rknpu_clear_rw_amount()
889 int rknpu_get_rw_amount(struct rknpu_device *rknpu_dev, uint32_t *dt_wr, in rknpu_get_rw_amount() argument
892 void __iomem *rknpu_core_base = rknpu_dev->base[0]; in rknpu_get_rw_amount()
893 int amount_scale = rknpu_dev->config->pc_data_amount_scale; in rknpu_get_rw_amount()
895 if (!rknpu_dev->config->bw_enable) { in rknpu_get_rw_amount()
900 spin_lock(&rknpu_dev->lock); in rknpu_get_rw_amount()
911 spin_unlock(&rknpu_dev->lock); in rknpu_get_rw_amount()
916 int rknpu_get_total_rw_amount(struct rknpu_device *rknpu_dev, uint32_t *amount) in rknpu_get_total_rw_amount() argument
923 if (!rknpu_dev->config->bw_enable) { in rknpu_get_total_rw_amount()
929 ret = rknpu_get_rw_amount(rknpu_dev, &dt_wr, &dt_rd, &wd_rd); in rknpu_get_total_rw_amount()