Lines Matching refs:fw

67 		ret = request_firmware(&vdev->fw->file, ivpu_firmware, vdev->drm.dev);
69 vdev->fw->name = ivpu_firmware;
77 ret = firmware_request_nowarn(&vdev->fw->file, fw_names[i].name, vdev->drm.dev);
79 vdev->fw->name = fw_names[i].name;
126 struct ivpu_fw_info *fw = vdev->fw;
127 const struct vpu_firmware_header *fw_hdr = (const void *)fw->file->data;
130 if (fw->file->size <= FW_FILE_IMAGE_OFFSET) {
131 ivpu_err(vdev, "Firmware file is too small: %zu\n", fw->file->size);
150 if (runtime_size < fw->file->size || runtime_size > FW_RUNTIME_MAX_SIZE) {
155 if (FW_FILE_IMAGE_OFFSET + image_size > fw->file->size) {
180 ivpu_info(vdev, "Firmware: %s, version: %s", fw->name,
188 fw->runtime_addr = runtime_addr;
189 fw->runtime_size = runtime_size;
190 fw->image_load_offset = image_load_addr - runtime_addr;
191 fw->image_size = image_size;
192 fw->shave_nn_size = PAGE_ALIGN(fw_hdr->shave_nn_fw_size);
194 fw->cold_boot_entry_point = fw_hdr->entry_point;
195 fw->entry_point = fw->cold_boot_entry_point;
197 fw->trace_level = min_t(u32, ivpu_log_level, IVPU_FW_LOG_FATAL);
198 fw->trace_destination_mask = VPU_TRACE_DESTINATION_VERBOSE_TRACING;
199 fw->trace_hw_component_mask = -1;
201 fw->dvfs_mode = 0;
204 fw->file->size, fw->image_size, fw->runtime_size, fw->shave_nn_size);
206 fw->runtime_addr, image_load_addr, fw->entry_point);
213 release_firmware(vdev->fw->file);
220 const struct vpu_firmware_header *fw_hdr = (const void *)vdev->fw->file->data;
235 struct ivpu_fw_info *fw = vdev->fw;
236 u64 start = ALIGN(fw->runtime_addr + fw->runtime_size, FW_SHARED_MEM_ALIGNMENT);
250 struct ivpu_fw_info *fw = vdev->fw;
259 fw_range.start = fw->runtime_addr;
260 fw_range.end = fw->runtime_addr + fw->runtime_size;
261 fw->mem = ivpu_bo_create(vdev, &vdev->gctx, &fw_range, fw->runtime_size,
263 if (!fw->mem) {
268 fw->mem_log_crit = ivpu_bo_create_global(vdev, IVPU_FW_CRITICAL_BUFFER_SIZE,
270 if (!fw->mem_log_crit) {
281 fw->mem_log_verb = ivpu_bo_create_global(vdev, log_verb_size,
283 if (!fw->mem_log_verb) {
289 if (fw->shave_nn_size) {
290 fw->mem_shave_nn = ivpu_bo_create(vdev, &vdev->gctx, &vdev->hw->ranges.shave,
291 fw->shave_nn_size, DRM_IVPU_BO_WC);
292 if (!fw->mem_shave_nn) {
302 ivpu_bo_free(fw->mem_log_verb);
304 ivpu_bo_free(fw->mem_log_crit);
306 ivpu_bo_free(fw->mem);
312 struct ivpu_fw_info *fw = vdev->fw;
314 if (fw->mem_shave_nn) {
315 ivpu_bo_free(fw->mem_shave_nn);
316 fw->mem_shave_nn = NULL;
319 ivpu_bo_free(fw->mem_log_verb);
320 ivpu_bo_free(fw->mem_log_crit);
321 ivpu_bo_free(fw->mem);
323 fw->mem_log_verb = NULL;
324 fw->mem_log_crit = NULL;
325 fw->mem = NULL;
363 struct ivpu_fw_info *fw = vdev->fw;
364 u64 image_end_offset = fw->image_load_offset + fw->image_size;
366 memset(ivpu_bo_vaddr(fw->mem), 0, fw->image_load_offset);
367 memcpy(ivpu_bo_vaddr(fw->mem) + fw->image_load_offset,
368 fw->file->data + FW_FILE_IMAGE_OFFSET, fw->image_size);
371 u8 *start = ivpu_bo_vaddr(fw->mem) + image_end_offset;
372 u64 size = ivpu_bo_size(fw->mem) - image_end_offset;
377 wmb(); /* Flush WC buffers after writing fw->mem */
541 if (vdev->fw->mem_shave_nn)
542 boot_params->shave_nn_fw_base = vdev->fw->mem_shave_nn->vpu_addr;
555 boot_params->default_trace_level = vdev->fw->trace_level;
557 boot_params->trace_destination_mask = vdev->fw->trace_destination_mask;
558 boot_params->trace_hw_component_mask = vdev->fw->trace_hw_component_mask;
559 boot_params->crit_tracing_buff_addr = vdev->fw->mem_log_crit->vpu_addr;
560 boot_params->crit_tracing_buff_size = ivpu_bo_size(vdev->fw->mem_log_crit);
561 boot_params->verbose_tracing_buff_addr = vdev->fw->mem_log_verb->vpu_addr;
562 boot_params->verbose_tracing_buff_size = ivpu_bo_size(vdev->fw->mem_log_verb);
567 boot_params->dvfs_mode = vdev->fw->dvfs_mode;