Lines Matching refs:js

97 	struct panfrost_job_slot *js = pfdev->js;  in panfrost_fence_create()  local
105 fence->seqno = ++js->queue[js_num].emit_seqno; in panfrost_fence_create()
106 dma_fence_init(&fence->base, &panfrost_fence_ops, &js->job_lock, in panfrost_fence_create()
107 js->queue[js_num].fence_context, fence->seqno); in panfrost_fence_create()
136 int js) in panfrost_job_write_affinity() argument
147 job_write(pfdev, JS_AFFINITY_NEXT_LO(js), affinity & 0xFFFFFFFF); in panfrost_job_write_affinity()
148 job_write(pfdev, JS_AFFINITY_NEXT_HI(js), affinity >> 32); in panfrost_job_write_affinity()
151 static void panfrost_job_hw_submit(struct panfrost_job *job, int js) in panfrost_job_hw_submit() argument
164 if (WARN_ON(job_read(pfdev, JS_COMMAND_NEXT(js)))) { in panfrost_job_hw_submit()
170 job_write(pfdev, JS_HEAD_NEXT_LO(js), jc_head & 0xFFFFFFFF); in panfrost_job_hw_submit()
171 job_write(pfdev, JS_HEAD_NEXT_HI(js), jc_head >> 32); in panfrost_job_hw_submit()
173 panfrost_job_write_affinity(pfdev, job->requirements, js); in panfrost_job_hw_submit()
187 job_write(pfdev, JS_CONFIG_NEXT(js), cfg); in panfrost_job_hw_submit()
190 job_write(pfdev, JS_FLUSH_ID_NEXT(js), job->flush_id); in panfrost_job_hw_submit()
194 job, js, jc_head); in panfrost_job_hw_submit()
196 job_write(pfdev, JS_COMMAND_NEXT(js), JS_COMMAND_START); in panfrost_job_hw_submit()
439 int js = panfrost_job_get_slot(job); in panfrost_job_timedout() local
449 js, in panfrost_job_timedout()
450 job_read(pfdev, JS_CONFIG(js)), in panfrost_job_timedout()
451 job_read(pfdev, JS_STATUS(js)), in panfrost_job_timedout()
452 job_read(pfdev, JS_HEAD_LO(js)), in panfrost_job_timedout()
453 job_read(pfdev, JS_TAIL_LO(js)), in panfrost_job_timedout()
457 if (!panfrost_scheduler_stop(&pfdev->js->queue[js], sched_job)) in panfrost_job_timedout()
511 old_status = atomic_cmpxchg(&pfdev->js->queue[j].status, in panfrost_job_irq_handler()
515 drm_sched_fault(&pfdev->js->queue[j].sched); in panfrost_job_irq_handler()
521 spin_lock(&pfdev->js->job_lock); in panfrost_job_irq_handler()
533 spin_unlock(&pfdev->js->job_lock); in panfrost_job_irq_handler()
569 pfdev->js->queue[i].sched.timeout = MAX_SCHEDULE_TIMEOUT - 1; in panfrost_reset()
570 cancel_delayed_work_sync(&pfdev->js->queue[i].sched.work_tdr); in panfrost_reset()
571 panfrost_scheduler_stop(&pfdev->js->queue[i], NULL); in panfrost_reset()
577 spin_lock_irqsave(&pfdev->js->job_lock, flags); in panfrost_reset()
585 spin_unlock_irqrestore(&pfdev->js->job_lock, flags); in panfrost_reset()
590 panfrost_scheduler_start(&pfdev->js->queue[i]); in panfrost_reset()
597 struct panfrost_job_slot *js; in panfrost_job_init() local
602 pfdev->js = js = devm_kzalloc(pfdev->dev, sizeof(*js), GFP_KERNEL); in panfrost_job_init()
603 if (!js) in panfrost_job_init()
606 spin_lock_init(&js->job_lock); in panfrost_job_init()
620 mutex_init(&js->queue[j].lock); in panfrost_job_init()
622 js->queue[j].fence_context = dma_fence_context_alloc(1); in panfrost_job_init()
624 ret = drm_sched_init(&js->queue[j].sched, in panfrost_job_init()
640 drm_sched_fini(&js->queue[j].sched); in panfrost_job_init()
647 struct panfrost_job_slot *js = pfdev->js; in panfrost_job_fini() local
653 drm_sched_fini(&js->queue[j].sched); in panfrost_job_fini()
654 mutex_destroy(&js->queue[j].lock); in panfrost_job_fini()
662 struct panfrost_job_slot *js = pfdev->js; in panfrost_job_open() local
667 sched = &js->queue[i].sched; in panfrost_job_open()
687 struct panfrost_job_slot *js = pfdev->js; in panfrost_job_is_idle() local
692 if (atomic_read(&js->queue[i].sched.hw_rq_count)) in panfrost_job_is_idle()