• Home
  • Raw
  • Download

Lines Matching full:fw

46 /* TODO: Remove mtl_vpu.bin from names after transition to generation based FW names */
64 ret = request_firmware(&vdev->fw->file, ivpu_firmware, vdev->drm.dev); in ivpu_fw_request()
66 vdev->fw->name = ivpu_firmware; in ivpu_fw_request()
74 ret = firmware_request_nowarn(&vdev->fw->file, fw_names[i].name, vdev->drm.dev); in ivpu_fw_request()
76 vdev->fw->name = fw_names[i].name; in ivpu_fw_request()
94 ivpu_err(vdev, "Incompatible FW %s API version: %d.%d, required %d.0 or later\n", in ivpu_fw_check_api()
99 ivpu_warn(vdev, "Major FW %s API version different: %d.%d (expected %d.%d)\n", in ivpu_fw_check_api()
102 ivpu_dbg(vdev, FW_BOOT, "FW %s API version: %d.%d (expected %d.%d)\n", in ivpu_fw_check_api()
110 struct ivpu_fw_info *fw = vdev->fw; in ivpu_fw_parse() local
111 const struct vpu_firmware_header *fw_hdr = (const void *)fw->file->data; in ivpu_fw_parse()
114 if (fw->file->size <= FW_FILE_IMAGE_OFFSET) { in ivpu_fw_parse()
115 ivpu_err(vdev, "Firmware file is too small: %zu\n", fw->file->size); in ivpu_fw_parse()
134 if (runtime_size < fw->file->size || runtime_size > FW_RUNTIME_MAX_SIZE) { in ivpu_fw_parse()
139 if (FW_FILE_IMAGE_OFFSET + image_size > fw->file->size) { in ivpu_fw_parse()
164 ivpu_info(vdev, "Firmware: %s, version: %s", fw->name, in ivpu_fw_parse()
172 fw->runtime_addr = runtime_addr; in ivpu_fw_parse()
173 fw->runtime_size = runtime_size; in ivpu_fw_parse()
174 fw->image_load_offset = image_load_addr - runtime_addr; in ivpu_fw_parse()
175 fw->image_size = image_size; in ivpu_fw_parse()
176 fw->shave_nn_size = PAGE_ALIGN(fw_hdr->shave_nn_fw_size); in ivpu_fw_parse()
178 fw->cold_boot_entry_point = fw_hdr->entry_point; in ivpu_fw_parse()
179 fw->entry_point = fw->cold_boot_entry_point; in ivpu_fw_parse()
181 fw->trace_level = min_t(u32, ivpu_log_level, IVPU_FW_LOG_FATAL); in ivpu_fw_parse()
182 fw->trace_destination_mask = VPU_TRACE_DESTINATION_VERBOSE_TRACING; in ivpu_fw_parse()
183 fw->trace_hw_component_mask = -1; in ivpu_fw_parse()
186 fw->file->size, fw->image_size, fw->runtime_size, fw->shave_nn_size); in ivpu_fw_parse()
188 fw->runtime_addr, image_load_addr, fw->entry_point); in ivpu_fw_parse()
195 release_firmware(vdev->fw->file); in ivpu_fw_release()
200 struct ivpu_fw_info *fw = vdev->fw; in ivpu_fw_update_global_range() local
201 u64 start = ALIGN(fw->runtime_addr + fw->runtime_size, FW_SHARED_MEM_ALIGNMENT); in ivpu_fw_update_global_range()
215 struct ivpu_fw_info *fw = vdev->fw; in ivpu_fw_mem_init() local
223 fw->mem = ivpu_bo_alloc_internal(vdev, fw->runtime_addr, fw->runtime_size, DRM_IVPU_BO_WC); in ivpu_fw_mem_init()
224 if (!fw->mem) { in ivpu_fw_mem_init()
229 fw->mem_log_crit = ivpu_bo_alloc_internal(vdev, 0, IVPU_FW_CRITICAL_BUFFER_SIZE, in ivpu_fw_mem_init()
231 if (!fw->mem_log_crit) { in ivpu_fw_mem_init()
242 fw->mem_log_verb = ivpu_bo_alloc_internal(vdev, 0, log_verb_size, DRM_IVPU_BO_CACHED); in ivpu_fw_mem_init()
243 if (!fw->mem_log_verb) { in ivpu_fw_mem_init()
249 if (fw->shave_nn_size) { in ivpu_fw_mem_init()
250 fw->mem_shave_nn = ivpu_bo_alloc_internal(vdev, vdev->hw->ranges.shave.start, in ivpu_fw_mem_init()
251 fw->shave_nn_size, DRM_IVPU_BO_UNCACHED); in ivpu_fw_mem_init()
252 if (!fw->mem_shave_nn) { in ivpu_fw_mem_init()
262 ivpu_bo_free_internal(fw->mem_log_verb); in ivpu_fw_mem_init()
264 ivpu_bo_free_internal(fw->mem_log_crit); in ivpu_fw_mem_init()
266 ivpu_bo_free_internal(fw->mem); in ivpu_fw_mem_init()
272 struct ivpu_fw_info *fw = vdev->fw; in ivpu_fw_mem_fini() local
274 if (fw->mem_shave_nn) { in ivpu_fw_mem_fini()
275 ivpu_bo_free_internal(fw->mem_shave_nn); in ivpu_fw_mem_fini()
276 fw->mem_shave_nn = NULL; in ivpu_fw_mem_fini()
279 ivpu_bo_free_internal(fw->mem_log_verb); in ivpu_fw_mem_fini()
280 ivpu_bo_free_internal(fw->mem_log_crit); in ivpu_fw_mem_fini()
281 ivpu_bo_free_internal(fw->mem); in ivpu_fw_mem_fini()
283 fw->mem_log_verb = NULL; in ivpu_fw_mem_fini()
284 fw->mem_log_crit = NULL; in ivpu_fw_mem_fini()
285 fw->mem = NULL; in ivpu_fw_mem_fini()
319 struct ivpu_fw_info *fw = vdev->fw; in ivpu_fw_load() local
320 u64 image_end_offset = fw->image_load_offset + fw->image_size; in ivpu_fw_load()
322 memset(fw->mem->kvaddr, 0, fw->image_load_offset); in ivpu_fw_load()
323 memcpy(fw->mem->kvaddr + fw->image_load_offset, in ivpu_fw_load()
324 fw->file->data + FW_FILE_IMAGE_OFFSET, fw->image_size); in ivpu_fw_load()
327 u8 *start = fw->mem->kvaddr + image_end_offset; in ivpu_fw_load()
328 u64 size = fw->mem->base.size - image_end_offset; in ivpu_fw_load()
333 wmb(); /* Flush WC buffers after writing fw->mem */ in ivpu_fw_load()
470 if (vdev->fw->mem_shave_nn) in ivpu_fw_boot_params_setup()
471 boot_params->shave_nn_fw_base = vdev->fw->mem_shave_nn->vpu_addr; in ivpu_fw_boot_params_setup()
484 boot_params->default_trace_level = vdev->fw->trace_level; in ivpu_fw_boot_params_setup()
486 boot_params->trace_destination_mask = vdev->fw->trace_destination_mask; in ivpu_fw_boot_params_setup()
487 boot_params->trace_hw_component_mask = vdev->fw->trace_hw_component_mask; in ivpu_fw_boot_params_setup()
488 boot_params->crit_tracing_buff_addr = vdev->fw->mem_log_crit->vpu_addr; in ivpu_fw_boot_params_setup()
489 boot_params->crit_tracing_buff_size = vdev->fw->mem_log_crit->base.size; in ivpu_fw_boot_params_setup()
490 boot_params->verbose_tracing_buff_addr = vdev->fw->mem_log_verb->vpu_addr; in ivpu_fw_boot_params_setup()
491 boot_params->verbose_tracing_buff_size = vdev->fw->mem_log_verb->base.size; in ivpu_fw_boot_params_setup()