| /linux/drivers/gpu/drm/imagination/ |
| A D | pvr_device.c | 60 pvr_dev->regs = NULL; in pvr_device_reg_init() 67 pvr_dev->regs = regs; in pvr_device_reg_init() 117 pvr_dev->sys_clk = sys_clk; in pvr_device_clk_init() 118 pvr_dev->mem_clk = mem_clk; in pvr_device_clk_init() 209 if (pvr_dev->irq < 0) in pvr_device_irq_init() 210 return pvr_dev->irq; in pvr_device_irq_init() 213 pvr_fw_irq_clear(pvr_dev); in pvr_device_irq_init() 228 free_irq(pvr_dev->irq, pvr_dev); in pvr_device_irq_fini() 412 pvr_load_gpu_id(pvr_dev); in pvr_device_gpu_init() 438 pvr_dev->kernel_vm_ctx = pvr_vm_create_context(pvr_dev, false); in pvr_device_gpu_init() [all …]
|
| A D | pvr_power.c | 35 if (!pvr_dev->lost) { in pvr_device_lost() 36 pvr_dev->lost = true; in pvr_device_lost() 118 pvr_fw_stop(pvr_dev); in pvr_power_fw_enable() 122 queue_delayed_work(pvr_dev->sched_wq, &pvr_dev->watchdog.work, in pvr_power_fw_enable() 189 if (pvr_dev->lost) in pvr_watchdog_worker() 211 if (!pvr_dev->lost) { in pvr_watchdog_worker() 212 queue_delayed_work(pvr_dev->sched_wq, &pvr_dev->watchdog.work, in pvr_watchdog_worker() 348 if (pvr_dev->lost) { in pvr_power_reset() 400 enable_irq(pvr_dev->irq); in pvr_power_reset() 404 pvr_power_put(pvr_dev); in pvr_power_reset() [all …]
|
| A D | pvr_fw_startstop.c | 37 rogue_bif_init(struct pvr_device *pvr_dev) in rogue_bif_init() argument 55 rogue_slc_init(struct pvr_device *pvr_dev) in rogue_slc_init() argument 80 if (PVR_HAS_QUIRK(pvr_dev, 71242) && !PVR_HAS_FEATURE(pvr_dev, gpu_multicore_support)) in rogue_slc_init() 97 pvr_fw_start(struct pvr_device *pvr_dev) in pvr_fw_start() argument 103 if (PVR_HAS_FEATURE(pvr_dev, pbe2_in_xe)) in pvr_fw_start() 146 err = rogue_slc_init(pvr_dev); in pvr_fw_start() 151 pvr_dev->fw_dev.defs->wrapper_init(pvr_dev); in pvr_fw_start() 154 rogue_axi_ace_list_init(pvr_dev); in pvr_fw_start() 158 rogue_bif_init(pvr_dev); in pvr_fw_start() 188 pvr_fw_stop(struct pvr_device *pvr_dev) in pvr_fw_stop() argument [all …]
|
| A D | pvr_ccb.c | 250 WARN_ON(pvr_dev->lost); in pvr_kccb_send_cmd_reserved_powered() 276 pvr_fw_mts_schedule(pvr_dev, in pvr_kccb_send_cmd_reserved_powered() 299 if (pvr_dev->kccb.reserved_count < pvr_kccb_capacity(pvr_dev) - used_count) { in pvr_kccb_try_reserve_slot() 379 err = pvr_power_get(pvr_dev); in pvr_kccb_send_cmd() 385 pvr_power_put(pvr_dev); in pvr_kccb_send_cmd() 405 int ret = wait_event_timeout(pvr_dev->kccb.rtn_q, READ_ONCE(pvr_dev->kccb.rtn[slot_nr]) & in pvr_kccb_wait_for_completion() 483 if (WARN_ON(used_count + pvr_dev->kccb.reserved_count > pvr_kccb_capacity(pvr_dev))) in pvr_kccb_wake_up_waiters() 486 available_count = pvr_kccb_capacity(pvr_dev) - used_count - pvr_dev->kccb.reserved_count; in pvr_kccb_wake_up_waiters() 529 return pvr_ccb_init(pvr_dev, &pvr_dev->kccb.ccb, in pvr_kccb_init() 597 if (pvr_dev->kccb.reserved_count >= pvr_kccb_capacity(pvr_dev) - used_count) { in pvr_kccb_reserve_slot() [all …]
|
| A D | pvr_fw.c | 136 pvr_dev->gpu_id.b, pvr_dev->gpu_id.v, pvr_dev->gpu_id.n, pvr_dev->gpu_id.c); in pvr_fw_validate() 574 pvr_fw_trace_fini(pvr_dev); in pvr_fw_create_structures() 606 pvr_fw_trace_fini(pvr_dev); in pvr_fw_destroy_structures() 643 layout_get_sizes(pvr_dev); in pvr_fw_process() 730 err = pvr_dev->fw_dev.defs->fw_process(pvr_dev, fw, in pvr_fw_process() 968 pvr_dev->kccb.rtn = pvr_fw_object_create_and_map(pvr_dev, kccb_rtn_size, in pvr_fw_init() 995 pvr_fw_stop(pvr_dev); in pvr_fw_init() 1007 pvr_kccb_fini(pvr_dev); in pvr_fw_init() 1010 pvr_fw_cleanup(pvr_dev); in pvr_fw_init() 1040 pvr_kccb_fini(pvr_dev); in pvr_fw_fini() [all …]
|
| A D | pvr_fw.h | 81 int (*init)(struct pvr_device *pvr_dev); 91 void (*fini)(struct pvr_device *pvr_dev); 404 pvr_cr_read32((pvr_dev), (pvr_dev)->fw_dev.defs->irq.name ## _reg) 407 pvr_cr_write32((pvr_dev), (pvr_dev)->fw_dev.defs->irq.name ## _reg, value) 409 #define pvr_fw_irq_pending(pvr_dev) \ argument 410 (pvr_fw_irq_read_reg(pvr_dev, status) & (pvr_dev)->fw_dev.defs->irq.event_mask) 412 #define pvr_fw_irq_clear(pvr_dev) \ argument 413 pvr_fw_irq_write_reg(pvr_dev, clear, (pvr_dev)->fw_dev.defs->irq.clear_mask) 415 #define pvr_fw_irq_enable(pvr_dev) \ argument 416 pvr_fw_irq_write_reg(pvr_dev, enable, (pvr_dev)->fw_dev.defs->irq.event_mask) [all …]
|
| A D | pvr_fw_mips.c | 39 struct drm_device *drm_dev = from_pvr_device(pvr_dev); in process_elf_command_stream() 74 pvr_mips_init(struct pvr_device *pvr_dev) in pvr_mips_init() argument 78 return pvr_vm_mips_init(pvr_dev); in pvr_mips_init() 82 pvr_mips_fini(struct pvr_device *pvr_dev) in pvr_mips_fini() argument 84 pvr_vm_mips_fini(pvr_dev); in pvr_mips_fini() 92 struct pvr_fw_device *fw_dev = &pvr_dev->fw_dev; in pvr_mips_fw_process() 133 boot_data->reg_base = pvr_dev->regs_resource->start; in pvr_mips_fw_process() 153 pvr_mips_wrapper_init(struct pvr_device *pvr_dev) in pvr_mips_wrapper_init() argument 168 pvr_cr_write32(pvr_dev, ROGUE_CR_MIPS_WRAPPER_CONFIG, in pvr_mips_wrapper_init() 181 if (PVR_HAS_QUIRK(pvr_dev, 63553)) { in pvr_mips_wrapper_init() [all …]
|
| A D | pvr_device.h | 321 struct pvr_device *pvr_dev; member 371 #define PVR_HAS_FEATURE(pvr_dev, feature) ((pvr_dev)->features.has_##feature) argument 412 #define PVR_HAS_QUIRK(pvr_dev, quirk) ((pvr_dev)->quirks.has_brn##quirk) argument 427 #define PVR_HAS_ENHANCEMENT(pvr_dev, enhancement) ((pvr_dev)->enhancements.has_ern##enhancement) argument 429 #define from_pvr_device(pvr_dev) (&(pvr_dev)->base) argument 498 int pvr_device_init(struct pvr_device *pvr_dev); 499 void pvr_device_fini(struct pvr_device *pvr_dev); 528 return ioread32(pvr_dev->regs + reg); in pvr_cr_read32() 541 return ioread64(pvr_dev->regs + reg); in pvr_cr_read64() 553 iowrite32(val, pvr_dev->regs + reg); in pvr_cr_write32() [all …]
|
| A D | pvr_drv.c | 302 if (PVR_HAS_QUIRK(pvr_dev, 48492) && !PVR_HAS_FEATURE(pvr_dev, compute_overlap)) in rogue_get_max_coeffs() 321 if (PVR_HAS_QUIRK(pvr_dev, 48492) && PVR_HAS_FEATURE(pvr_dev, roguexe) && in rogue_get_cdm_max_local_mem_size_regs() 1328 pvr_file->pvr_dev = pvr_dev; in pvr_drm_driver_open() 1402 struct pvr_device *pvr_dev; in pvr_probe() local 1408 if (IS_ERR(pvr_dev)) in pvr_probe() 1409 return PTR_ERR(pvr_dev); in pvr_probe() 1411 drm_dev = &pvr_dev->base; in pvr_probe() 1428 pvr_watchdog_init(pvr_dev); in pvr_probe() 1444 pvr_device_fini(pvr_dev); in pvr_probe() 1447 pvr_watchdog_fini(pvr_dev); in pvr_probe() [all …]
|
| A D | pvr_ccb.h | 46 int pvr_kccb_init(struct pvr_device *pvr_dev); 47 void pvr_kccb_fini(struct pvr_device *pvr_dev); 48 int pvr_fwccb_init(struct pvr_device *pvr_dev); 51 void pvr_fwccb_process(struct pvr_device *pvr_dev); 56 pvr_kccb_reserve_slot(struct pvr_device *pvr_dev, struct dma_fence *f); 57 void pvr_kccb_release_slot(struct pvr_device *pvr_dev); 58 int pvr_kccb_send_cmd(struct pvr_device *pvr_dev, 60 int pvr_kccb_send_cmd_powered(struct pvr_device *pvr_dev, 63 void pvr_kccb_send_cmd_reserved_powered(struct pvr_device *pvr_dev, 68 bool pvr_kccb_is_idle(struct pvr_device *pvr_dev); [all …]
|
| A D | pvr_stream.c | 20 pvr_device_has_feature(pvr_dev, stream_def->feature)) { in stream_def_is_supported() 78 if (!stream_def_is_supported(pvr_dev, &stream_def[i])) in pvr_stream_process_1() 127 pvr_stream_process_ext_stream(struct pvr_device *pvr_dev, in pvr_stream_process_ext_stream() argument 168 if (!pvr_device_has_uapi_quirk(pvr_dev, ext_def->quirk)) in pvr_stream_process_ext_stream() 255 if (pvr_dev->stream_musthave_quirks[cmd_defs->type][i]) in pvr_stream_process() 269 pvr_stream_create_musthave_masks(struct pvr_device *pvr_dev) in pvr_stream_create_musthave_masks() argument 271 memset(pvr_dev->stream_musthave_quirks, 0, sizeof(pvr_dev->stream_musthave_quirks)); in pvr_stream_create_musthave_masks() 273 if (pvr_device_has_uapi_quirk(pvr_dev, 47217)) in pvr_stream_create_musthave_masks() 274 pvr_dev->stream_musthave_quirks[PVR_STREAM_TYPE_FRAG][0] |= in pvr_stream_create_musthave_masks() 277 if (pvr_device_has_uapi_quirk(pvr_dev, 49927)) { in pvr_stream_create_musthave_masks() [all …]
|
| A D | pvr_context.c | 294 struct pvr_device *pvr_dev = pvr_file->pvr_dev; in pvr_context_create() local 314 ctx->pvr_dev = pvr_dev; in pvr_context_create() 361 spin_lock(&pvr_dev->ctx_list_lock); in pvr_context_create() 363 spin_unlock(&pvr_dev->ctx_list_lock); in pvr_context_create() 389 struct pvr_device *pvr_dev = ctx->pvr_dev; in pvr_context_release() local 392 spin_lock(&pvr_dev->ctx_list_lock); in pvr_context_release() 394 spin_unlock(&pvr_dev->ctx_list_lock); in pvr_context_release() 453 struct pvr_device *pvr_dev = pvr_file->pvr_dev; in pvr_destroy_contexts_for_file() local 460 spin_lock(&pvr_dev->ctx_list_lock); in pvr_destroy_contexts_for_file() 472 spin_lock(&pvr_dev->ctx_list_lock); in pvr_destroy_contexts_for_file() [all …]
|
| A D | pvr_queue.c | 443 struct pvr_device *pvr_dev = queue->ctx->pvr_dev; in pvr_queue_get_job_kccb_fence() local 562 struct pvr_device *pvr_dev = queue->ctx->pvr_dev; in pvr_queue_update_active_state_locked() local 594 struct pvr_device *pvr_dev = queue->ctx->pvr_dev; in pvr_queue_update_active_state() local 596 mutex_lock(&pvr_dev->queues.lock); in pvr_queue_update_active_state() 689 struct pvr_device *pvr_dev = job->pvr_dev; in pvr_queue_run_job() local 803 struct pvr_device *pvr_dev = queue->ctx->pvr_dev; in pvr_queue_timedout_job() local 819 mutex_lock(&pvr_dev->queues.lock); in pvr_queue_timedout_job() 1212 struct pvr_device *pvr_dev = ctx->pvr_dev; in pvr_queue_create() local 1290 pvr_dev->base.dev); in pvr_queue_create() 1412 err = drmm_mutex_init(from_pvr_device(pvr_dev), &pvr_dev->queues.lock); in pvr_queue_device_init() [all …]
|
| A D | pvr_fw_meta.c | 39 err = pvr_cr_poll_reg32(pvr_dev, ROGUE_CR_META_SP_MSLVCTRL1, in pvr_meta_cr_read32() 49 pvr_cr_write32(pvr_dev, ROGUE_CR_META_SP_MSLVCTRL0, in pvr_meta_cr_read32() 69 pvr_meta_wrapper_init(struct pvr_device *pvr_dev) in pvr_meta_wrapper_init() argument 114 struct pvr_device *pvr_dev = to_pvr_device(drm_dev); in meta_ldr_cmd_loadmem() local 156 struct pvr_device *pvr_dev = to_pvr_device(drm_dev); in meta_ldr_cmd_zeromem() local 258 struct drm_device *drm_dev = from_pvr_device(pvr_dev); in process_ldr_command_stream() 263 const u32 fw_size = pvr_dev->fw_dev.firmware->size; in process_ldr_command_stream() 362 struct pvr_fw_device *fw_dev = &pvr_dev->fw_dev; in get_fw_obj_gpu_addr() 460 struct pvr_fw_device *fw_dev = &pvr_dev->fw_dev; in pvr_meta_fw_process() 470 configure_seg_mmu(pvr_dev, &boot_conf); in pvr_meta_fw_process() [all …]
|
| A D | pvr_vm_mips.c | 30 pvr_vm_mips_init(struct pvr_device *pvr_dev) in pvr_vm_mips_init() argument 33 struct device *dev = from_pvr_device(pvr_dev)->dev; in pvr_vm_mips_init() 85 dma_unmap_page(from_pvr_device(pvr_dev)->dev, in pvr_vm_mips_init() 99 pvr_vm_mips_fini(struct pvr_device *pvr_dev) in pvr_vm_mips_fini() argument 101 struct pvr_fw_device *fw_dev = &pvr_dev->fw_dev; in pvr_vm_mips_fini() 107 dma_unmap_page(from_pvr_device(pvr_dev)->dev, in pvr_vm_mips_fini() 200 pvr_mmu_flush_request_all(pvr_dev); in pvr_vm_mips_map() 208 pvr_mmu_flush_request_all(pvr_dev); in pvr_vm_mips_map() 209 WARN_ON(pvr_mmu_flush_exec(pvr_dev, true)); in pvr_vm_mips_map() 236 pvr_mmu_flush_request_all(pvr_dev); in pvr_vm_mips_unmap() [all …]
|
| A D | pvr_power.h | 12 int pvr_watchdog_init(struct pvr_device *pvr_dev); 13 void pvr_watchdog_fini(struct pvr_device *pvr_dev); 15 void pvr_device_lost(struct pvr_device *pvr_dev); 17 bool pvr_power_is_idle(struct pvr_device *pvr_dev); 23 int pvr_power_reset(struct pvr_device *pvr_dev, bool hard_reset); 26 pvr_power_get(struct pvr_device *pvr_dev) in pvr_power_get() argument 28 struct drm_device *drm_dev = from_pvr_device(pvr_dev); in pvr_power_get() 34 pvr_power_put(struct pvr_device *pvr_dev) in pvr_power_put() argument 36 struct drm_device *drm_dev = from_pvr_device(pvr_dev); in pvr_power_put()
|
| A D | pvr_free_list.c | 32 pvr_get_free_list_min_pages(struct pvr_device *pvr_dev) in pvr_get_free_list_min_pages() argument 36 if (PVR_HAS_FEATURE(pvr_dev, roguexe)) { in pvr_get_free_list_min_pages() 37 if (PVR_HAS_QUIRK(pvr_dev, 66011)) in pvr_get_free_list_min_pages() 89 free_list->pvr_dev = pvr_file->pvr_dev; in free_list_create_kernel_structure() 198 struct pvr_device *pvr_dev = pvr_file->pvr_dev; in free_list_create_fw_structure() local 300 struct pvr_device *pvr_dev = free_list->pvr_dev; in pvr_free_list_grow() local 434 err = xa_alloc(&pvr_file->pvr_dev->free_list_ids, in pvr_free_list_create() 453 WARN_ON(pvr_fw_structure_cleanup(free_list->pvr_dev, in pvr_free_list_create() 480 err = pvr_fw_structure_cleanup(free_list->pvr_dev, in pvr_free_list_release() 487 pvr_fwccb_process(free_list->pvr_dev); in pvr_free_list_release() [all …]
|
| A D | pvr_device_info.c | 61 drm_warn(from_pvr_device(pvr_dev), "Unsupported quirks in firmware image"); in pvr_device_info_set_common() 63 drm_warn(from_pvr_device(pvr_dev), in pvr_device_info_set_common() 70 drm_warn(from_pvr_device(pvr_dev), in pvr_device_info_set_common() 73 drm_warn(from_pvr_device(pvr_dev), in pvr_device_info_set_common() 80 *(bool *)((u8 *)pvr_dev + mapping[i]) = true; in pvr_device_info_set_common() 94 pvr_device_info_set_common(pvr_dev, quirks, quirks_size, quirks_mapping, in pvr_device_info_set_quirks() 109 pvr_device_info_set_common(pvr_dev, enhancements, enhancements_size, in pvr_device_info_set_enhancements() 229 drm_warn(from_pvr_device(pvr_dev), "Unsupported features in firmware image"); in pvr_device_info_set_features() 235 drm_warn(from_pvr_device(pvr_dev), in pvr_device_info_set_features() 241 *(bool *)((u8 *)pvr_dev + features_mapping[i].flag_offset) = true; in pvr_device_info_set_features() [all …]
|
| A D | pvr_hwrt.c | 45 struct pvr_device *pvr_dev = pvr_file->pvr_dev; in hwrt_init_kernel_structure() local 49 hwrt->pvr_dev = pvr_dev; in hwrt_init_kernel_structure() 62 pvr_get_free_list_min_pages(pvr_dev)) { in hwrt_init_kernel_structure() 96 get_cr_isp_mtile_size_val(struct pvr_device *pvr_dev, u32 samples, in get_cr_isp_mtile_size_val() argument 237 struct pvr_device *pvr_dev = pvr_file->pvr_dev; in hwrt_init_common_fw_structure() local 241 err = PVR_FEATURE_VALUE(pvr_dev, tile_size_x, &info.tile_size_x); in hwrt_init_common_fw_structure() 245 err = PVR_FEATURE_VALUE(pvr_dev, tile_size_y, &info.tile_size_y); in hwrt_init_common_fw_structure() 252 if (PVR_HAS_FEATURE(pvr_dev, simple_parameter_format_version)) { in hwrt_init_common_fw_structure() 255 err = PVR_FEATURE_VALUE(pvr_dev, simple_parameter_format_version, in hwrt_init_common_fw_structure() 331 err = get_cr_isp_mtile_size_val(pvr_dev, args->samples, &info, in hwrt_init_common_fw_structure() [all …]
|
| A D | pvr_free_list.h | 52 struct pvr_device *pvr_dev; member 114 pvr_get_free_list_min_pages(struct pvr_device *pvr_dev); 161 pvr_free_list_lookup_id(struct pvr_device *pvr_dev, u32 id) in pvr_free_list_lookup_id() argument 165 xa_lock(&pvr_dev->free_list_ids); in pvr_free_list_lookup_id() 172 free_list = xa_load(&pvr_dev->free_list_ids, id); in pvr_free_list_lookup_id() 175 xa_unlock(&pvr_dev->free_list_ids); in pvr_free_list_lookup_id() 188 void pvr_free_list_process_grow_req(struct pvr_device *pvr_dev, 192 pvr_free_list_process_reconstruct_req(struct pvr_device *pvr_dev,
|
| A D | pvr_mmu.c | 136 if (!pvr_dev->fw_dev.booted) in pvr_mmu_flush_exec() 175 pvr_device_lost(pvr_dev); in pvr_mmu_flush_exec() 182 pvr_device_lost(pvr_dev); in pvr_mmu_flush_exec() 233 struct pvr_device *pvr_dev; member 257 struct pvr_device *pvr_dev) in pvr_mmu_backing_page_init() argument 286 page->pvr_dev = pvr_dev; in pvr_mmu_backing_page_init() 322 if (!page->pvr_dev) in pvr_mmu_backing_page_fini() 353 struct pvr_device *pvr_dev = page->pvr_dev; in pvr_mmu_backing_page_sync() local 360 if (!pvr_dev) in pvr_mmu_backing_page_sync() 1348 struct pvr_device *pvr_dev; member [all …]
|
| A D | pvr_fw_trace.c | 47 int pvr_fw_trace_init(struct pvr_device *pvr_dev) in pvr_fw_trace_init() argument 49 struct pvr_fw_trace *fw_trace = &pvr_dev->fw_dev.fw_trace; in pvr_fw_trace_init() 50 struct drm_device *drm_dev = from_pvr_device(pvr_dev); in pvr_fw_trace_init() 58 pvr_fw_object_create_and_map(pvr_dev, in pvr_fw_trace_init() 76 pvr_fw_object_create_and_map(pvr_dev, in pvr_fw_trace_init() 112 void pvr_fw_trace_fini(struct pvr_device *pvr_dev) in pvr_fw_trace_fini() argument 152 down_read(&pvr_dev->reset_sem); in update_logtype() 153 if (!drm_dev_enter(from_pvr_device(pvr_dev), &idx)) { in update_logtype() 161 err = pvr_kccb_send_cmd(pvr_dev, &cmd, NULL); in update_logtype() 166 up_read(&pvr_dev->reset_sem); in update_logtype() [all …]
|
| A D | pvr_context.h | 37 struct pvr_device *pvr_dev; member 183 pvr_context_lookup_id(struct pvr_device *pvr_dev, u32 id) in pvr_context_lookup_id() argument 188 xa_lock(&pvr_dev->ctx_ids); in pvr_context_lookup_id() 195 ctx = xa_load(&pvr_dev->ctx_ids, id); in pvr_context_lookup_id() 199 xa_unlock(&pvr_dev->ctx_ids); in pvr_context_lookup_id() 222 void pvr_context_device_init(struct pvr_device *pvr_dev); 224 void pvr_context_device_fini(struct pvr_device *pvr_dev);
|
| A D | pvr_params.c | 73 struct pvr_device *pvr_dev = data; \ 76 (update_)(pvr_dev, pvr_dev->params.name_, val); \ 77 pvr_dev->params.name_ = val; \ 85 struct pvr_device *pvr_dev = data; \ 86 *val = pvr_dev->params.name_; \ 131 pvr_params_debugfs_init(struct pvr_device *pvr_dev, struct dentry *dir) in pvr_params_debugfs_init() argument 138 debugfs_create_file(#name_, X_MODE(mode_), dir, pvr_dev, \ in pvr_params_debugfs_init()
|
| A D | pvr_vm_mips.h | 14 pvr_vm_mips_init(struct pvr_device *pvr_dev); 16 pvr_vm_mips_fini(struct pvr_device *pvr_dev); 18 pvr_vm_mips_map(struct pvr_device *pvr_dev, struct pvr_fw_object *fw_obj); 20 pvr_vm_mips_unmap(struct pvr_device *pvr_dev, struct pvr_fw_object *fw_obj);
|