1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* |
3 | * Copyright (C) 2020-2023 Intel Corporation |
4 | */ |
5 | |
6 | #ifndef __IVPU_FW_H__ |
7 | #define __IVPU_FW_H__ |
8 | |
9 | struct ivpu_device; |
10 | struct ivpu_bo; |
11 | struct vpu_boot_params; |
12 | |
13 | struct ivpu_fw_info { |
14 | const struct firmware *file; |
15 | const char *name; |
16 | struct ivpu_bo *mem; |
17 | struct ivpu_bo *mem_shave_nn; |
18 | struct ivpu_bo *mem_log_crit; |
19 | struct ivpu_bo *mem_log_verb; |
20 | u64 runtime_addr; |
21 | u32 runtime_size; |
22 | u64 image_load_offset; |
23 | u32 image_size; |
24 | u32 shave_nn_size; |
25 | u64 entry_point; /* Cold or warm boot entry point for next boot */ |
26 | u64 cold_boot_entry_point; |
27 | u32 trace_level; |
28 | u32 trace_destination_mask; |
29 | u64 trace_hw_component_mask; |
30 | }; |
31 | |
32 | int ivpu_fw_init(struct ivpu_device *vdev); |
33 | void ivpu_fw_fini(struct ivpu_device *vdev); |
34 | void ivpu_fw_load(struct ivpu_device *vdev); |
35 | void ivpu_fw_boot_params_setup(struct ivpu_device *vdev, struct vpu_boot_params *bp); |
36 | |
37 | static inline bool ivpu_fw_is_cold_boot(struct ivpu_device *vdev) |
38 | { |
39 | return vdev->fw->entry_point == vdev->fw->cold_boot_entry_point; |
40 | } |
41 | |
42 | #endif /* __IVPU_FW_H__ */ |
43 | |