Lines Matching refs:js

90 	struct panfrost_job_slot *js = pfdev->js;  in panfrost_fence_create()  local
98 fence->seqno = ++js->queue[js_num].emit_seqno; in panfrost_fence_create()
99 dma_fence_init(&fence->base, &panfrost_fence_ops, &js->job_lock, in panfrost_fence_create()
100 js->queue[js_num].fence_context, fence->seqno); in panfrost_fence_create()
129 int js) in panfrost_job_write_affinity() argument
140 job_write(pfdev, JS_AFFINITY_NEXT_LO(js), lower_32_bits(affinity)); in panfrost_job_write_affinity()
141 job_write(pfdev, JS_AFFINITY_NEXT_HI(js), upper_32_bits(affinity)); in panfrost_job_write_affinity()
186 static void panfrost_job_hw_submit(struct panfrost_job *job, int js) in panfrost_job_hw_submit() argument
200 if (WARN_ON(job_read(pfdev, JS_COMMAND_NEXT(js)))) { in panfrost_job_hw_submit()
206 job_write(pfdev, JS_HEAD_NEXT_LO(js), lower_32_bits(jc_head)); in panfrost_job_hw_submit()
207 job_write(pfdev, JS_HEAD_NEXT_HI(js), upper_32_bits(jc_head)); in panfrost_job_hw_submit()
209 panfrost_job_write_affinity(pfdev, job->requirements, js); in panfrost_job_hw_submit()
224 job_write(pfdev, JS_CONFIG_NEXT(js), cfg); in panfrost_job_hw_submit()
227 job_write(pfdev, JS_FLUSH_ID_NEXT(js), job->flush_id); in panfrost_job_hw_submit()
231 spin_lock(&pfdev->js->job_lock); in panfrost_job_hw_submit()
232 subslot = panfrost_enqueue_job(pfdev, js, job); in panfrost_job_hw_submit()
235 job_write(pfdev, JS_COMMAND_NEXT(js), JS_COMMAND_START); in panfrost_job_hw_submit()
238 job, js, subslot, jc_head, cfg & 0xf); in panfrost_job_hw_submit()
240 spin_unlock(&pfdev->js->job_lock); in panfrost_job_hw_submit()
396 unsigned int js) in panfrost_job_handle_err() argument
398 u32 js_status = job_read(pfdev, JS_STATUS(js)); in panfrost_job_handle_err()
404 js, exception_name, in panfrost_job_handle_err()
405 job_read(pfdev, JS_HEAD_LO(js)), in panfrost_job_handle_err()
406 job_read(pfdev, JS_TAIL_LO(js))); in panfrost_job_handle_err()
409 js, exception_name, in panfrost_job_handle_err()
410 job_read(pfdev, JS_HEAD_LO(js)), in panfrost_job_handle_err()
411 job_read(pfdev, JS_TAIL_LO(js))); in panfrost_job_handle_err()
416 job->jc = job_read(pfdev, JS_TAIL_LO(js)) | in panfrost_job_handle_err()
417 ((u64)job_read(pfdev, JS_TAIL_HI(js)) << 32); in panfrost_job_handle_err()
444 drm_sched_fault(&pfdev->js->queue[js].sched); in panfrost_job_handle_err()
570 spin_lock(&pfdev->js->job_lock); in panfrost_job_handle_irqs()
572 spin_unlock(&pfdev->js->job_lock); in panfrost_job_handle_irqs()
624 drm_sched_stop(&pfdev->js->queue[i].sched, bad); in panfrost_reset()
635 synchronize_irq(pfdev->js->irq); in panfrost_reset()
659 spin_lock(&pfdev->js->job_lock); in panfrost_reset()
667 spin_unlock(&pfdev->js->job_lock); in panfrost_reset()
689 drm_sched_resubmit_jobs(&pfdev->js->queue[i].sched); in panfrost_reset()
694 drm_sched_start(&pfdev->js->queue[i].sched, true); in panfrost_reset()
709 int js = panfrost_job_get_slot(job); in panfrost_job_timedout() local
719 js, in panfrost_job_timedout()
720 job_read(pfdev, JS_CONFIG(js)), in panfrost_job_timedout()
721 job_read(pfdev, JS_STATUS(js)), in panfrost_job_timedout()
722 job_read(pfdev, JS_HEAD_LO(js)), in panfrost_job_timedout()
723 job_read(pfdev, JS_TAIL_LO(js)), in panfrost_job_timedout()
771 struct panfrost_job_slot *js; in panfrost_job_init() local
782 pfdev->js = js = devm_kzalloc(pfdev->dev, sizeof(*js), GFP_KERNEL); in panfrost_job_init()
783 if (!js) in panfrost_job_init()
787 spin_lock_init(&js->job_lock); in panfrost_job_init()
789 js->irq = platform_get_irq_byname(to_platform_device(pfdev->dev), "job"); in panfrost_job_init()
790 if (js->irq <= 0) in panfrost_job_init()
793 ret = devm_request_threaded_irq(pfdev->dev, js->irq, in panfrost_job_init()
808 js->queue[j].fence_context = dma_fence_context_alloc(1); in panfrost_job_init()
810 ret = drm_sched_init(&js->queue[j].sched, in panfrost_job_init()
828 drm_sched_fini(&js->queue[j].sched); in panfrost_job_init()
836 struct panfrost_job_slot *js = pfdev->js; in panfrost_job_fini() local
842 drm_sched_fini(&js->queue[j].sched); in panfrost_job_fini()
852 struct panfrost_job_slot *js = pfdev->js; in panfrost_job_open() local
857 sched = &js->queue[i].sched; in panfrost_job_open()
876 spin_lock(&pfdev->js->job_lock); in panfrost_job_close()
908 spin_unlock(&pfdev->js->job_lock); in panfrost_job_close()
913 struct panfrost_job_slot *js = pfdev->js; in panfrost_job_is_idle() local
918 if (atomic_read(&js->queue[i].sched.hw_rq_count)) in panfrost_job_is_idle()