Lines Matching +full:0 +full:xe
58 struct xe_device *xe = late_bind_fw_to_xe(lb_fw); in parse_cpd_header() local
63 u32 offset = 0; in parse_cpd_header()
67 xe_assert(xe, manifest_entry); in parse_cpd_header()
73 drm_err(&xe->drm, "%s late binding fw: Invalid CPD header length %u!\n", in parse_cpd_header()
80 drm_err(&xe->drm, "%s late binding fw: too small! %zu < %zu\n", in parse_cpd_header()
87 for (i = 0; i < header->num_of_entries; i++, entry++) in parse_cpd_header()
88 if (strcmp(entry->name, manifest_entry) == 0) in parse_cpd_header()
92 drm_err(&xe->drm, "%s late binding fw: Failed to find manifest_entry\n", in parse_cpd_header()
99 drm_err(&xe->drm, "%s late binding fw: too small! %zu < %zu\n", in parse_cpd_header()
108 return 0; in parse_cpd_header()
115 struct xe_device *xe = late_bind_fw_to_xe(lb_fw); in parse_lb_layout() local
119 u32 offset = 0; in parse_lb_layout()
123 xe_assert(xe, fpt_entry); in parse_lb_layout()
129 drm_err(&xe->drm, "%s late binding fw: Invalid FPT header length %u!\n", in parse_lb_layout()
136 drm_err(&xe->drm, "%s late binding fw: too small! %zu < %zu\n", in parse_lb_layout()
143 for (i = 0; i < header->num_of_entries; i++, entry++) in parse_lb_layout()
144 if (strcmp(entry->name, fpt_entry) == 0) in parse_lb_layout()
148 drm_err(&xe->drm, "%s late binding fw: Failed to find fpt_entry\n", in parse_lb_layout()
155 drm_err(&xe->drm, "%s late binding fw: too small! %zu < %zu\n", in parse_lb_layout()
189 struct xe_device *xe = late_bind_to_xe(late_bind); in xe_late_bind_fw_num_fans() local
190 struct xe_tile *root_tile = xe_device_get_root_tile(xe); in xe_late_bind_fw_num_fans()
193 PCODE_MBOX(FAN_SPEED_CONTROL, FSC_READ_NUM_FANS, 0), num_fans, NULL); in xe_late_bind_fw_num_fans()
198 struct xe_device *xe = late_bind_to_xe(late_bind); in xe_late_bind_wait_for_worker_completion() local
202 for (fw_id = 0; fw_id < XE_LB_FW_MAX_ID; fw_id++) { in xe_late_bind_wait_for_worker_completion()
205 drm_dbg(&xe->drm, "Flush work: load %s firmware\n", in xe_late_bind_wait_for_worker_completion()
217 struct xe_device *xe = late_bind_to_xe(late_bind); in xe_late_bind_work() local
222 xe_device_assert_mem_access(xe); in xe_late_bind_work()
225 for (slept = 0; slept < LB_INIT_TIMEOUT_MS; slept += 100) { in xe_late_bind_work()
232 drm_err(&xe->drm, "Late bind component not bound\n"); in xe_late_bind_work()
234 drmm_kfree(&xe->drm, (void *)lbfw->payload); in xe_late_bind_work()
239 drm_dbg(&xe->drm, "Load %s firmware\n", fw_id_to_name[lbfw->id]); in xe_late_bind_work()
253 drm_dbg(&xe->drm, "Load %s firmware successful\n", in xe_late_bind_work()
258 if (ret > 0) in xe_late_bind_work()
259 drm_err(&xe->drm, "Load %s firmware failed with err %d, %s\n", in xe_late_bind_work()
262 drm_err(&xe->drm, "Load %s firmware failed with err %d", in xe_late_bind_work()
265 drmm_kfree(&xe->drm, (void *)lbfw->payload); in xe_late_bind_work()
269 xe_pm_runtime_put(xe); in xe_late_bind_work()
274 struct xe_device *xe = late_bind_to_xe(late_bind); in xe_late_bind_fw_load() local
282 return 0; in xe_late_bind_fw_load()
284 for (fw_id = 0; fw_id < XE_LB_FW_MAX_ID; fw_id++) { in xe_late_bind_fw_load()
287 xe_pm_runtime_get_noresume(xe); in xe_late_bind_fw_load()
291 return 0; in xe_late_bind_fw_load()
296 struct xe_device *xe = late_bind_to_xe(late_bind); in __xe_late_bind_fw_init() local
297 struct pci_dev *pdev = to_pci_dev(xe->drm.dev); in __xe_late_bind_fw_init()
315 drm_dbg(&xe->drm, "Failed to read number of fans: %d\n", ret); in __xe_late_bind_fw_init()
316 return 0; /* Not a fatal error, continue without fan control */ in __xe_late_bind_fw_init()
318 drm_dbg(&xe->drm, "Number of Fans: %d\n", num_fans); in __xe_late_bind_fw_init()
320 return 0; in __xe_late_bind_fw_init()
323 snprintf(lb_fw->blob_path, sizeof(lb_fw->blob_path), "xe/%s_8086_%04x_%04x_%04x.bin", in __xe_late_bind_fw_init()
327 drm_dbg(&xe->drm, "Request late binding firmware %s\n", lb_fw->blob_path); in __xe_late_bind_fw_init()
328 ret = firmware_request_nowarn(&fw, lb_fw->blob_path, xe->drm.dev); in __xe_late_bind_fw_init()
330 drm_dbg(&xe->drm, "%s late binding fw not available for current device", in __xe_late_bind_fw_init()
332 return 0; in __xe_late_bind_fw_init()
336 drm_err(&xe->drm, "Firmware %s size %zu is larger than max pay load size %u\n", in __xe_late_bind_fw_init()
347 lb_fw->payload = drmm_kzalloc(&xe->drm, lb_fw->payload_size, GFP_KERNEL); in __xe_late_bind_fw_init()
353 drm_info(&xe->drm, "Using %s firmware from %s version %u.%u.%u.%u\n", in __xe_late_bind_fw_init()
362 return 0; in __xe_late_bind_fw_init()
370 late_bind->wq = alloc_ordered_workqueue("late-bind-ordered-wq", 0); in xe_late_bind_fw_init()
374 for (fw_id = 0; fw_id < XE_LB_FW_MAX_ID; fw_id++) { in xe_late_bind_fw_init()
380 return 0; in xe_late_bind_fw_init()
386 struct xe_device *xe = kdev_to_xe_device(xe_kdev); in xe_late_bind_component_bind() local
387 struct xe_late_bind *late_bind = &xe->late_bind; in xe_late_bind_component_bind()
392 return 0; in xe_late_bind_component_bind()
398 struct xe_device *xe = kdev_to_xe_device(xe_kdev); in xe_late_bind_component_unbind() local
399 struct xe_late_bind *late_bind = &xe->late_bind; in xe_late_bind_component_unbind()
414 struct xe_device *xe = late_bind_to_xe(late_bind); in xe_late_bind_remove() local
420 component_del(xe->drm.dev, &xe_late_bind_component_ops); in xe_late_bind_remove()
428 * xe_late_bind_init() - add xe mei late binding component
431 * Return: 0 if the initialization was successful, a negative errno otherwise.
435 struct xe_device *xe = late_bind_to_xe(late_bind); in xe_late_bind_init() local
438 if (!xe->info.has_late_bind) in xe_late_bind_init()
439 return 0; in xe_late_bind_init()
442 drm_info(&xe->drm, "Can't init xe mei late bind missing mei component\n"); in xe_late_bind_init()
443 return 0; in xe_late_bind_init()
446 err = component_add_typed(xe->drm.dev, &xe_late_bind_component_ops, in xe_late_bind_init()
448 if (err < 0) { in xe_late_bind_init()
449 drm_err(&xe->drm, "Failed to add mei late bind component (%pe)\n", ERR_PTR(err)); in xe_late_bind_init()
455 err = devm_add_action_or_reset(xe->drm.dev, xe_late_bind_remove, late_bind); in xe_late_bind_init()