Commit | Line | Data |
---|---|---|
dd08ebf6 MB |
1 | /* SPDX-License-Identifier: MIT */ |
2 | /* | |
3 | * Copyright © 2021 Intel Corporation | |
4 | */ | |
5 | #ifndef _XE_LRC_H_ | |
6 | #define _XE_LRC_H_ | |
7 | ||
8 | #include "xe_lrc_types.h" | |
9 | ||
0f60547f | 10 | struct drm_printer; |
b1543a49 | 11 | struct xe_bb; |
dd08ebf6 | 12 | struct xe_device; |
9b9529ce | 13 | struct xe_exec_queue; |
dd08ebf6 MB |
14 | enum xe_engine_class; |
15 | struct xe_hw_engine; | |
16 | struct xe_vm; | |
17 | ||
18 | #define LRC_PPHWSP_SCRATCH_ADDR (0x34 * 4) | |
19 | ||
20 | int xe_lrc_init(struct xe_lrc *lrc, struct xe_hw_engine *hwe, | |
9b9529ce | 21 | struct xe_exec_queue *q, struct xe_vm *vm, u32 ring_size); |
dd08ebf6 MB |
22 | void xe_lrc_finish(struct xe_lrc *lrc); |
23 | ||
24 | size_t xe_lrc_size(struct xe_device *xe, enum xe_engine_class class); | |
25 | u32 xe_lrc_pphwsp_offset(struct xe_lrc *lrc); | |
26 | ||
27 | void xe_lrc_set_ring_head(struct xe_lrc *lrc, u32 head); | |
28 | u32 xe_lrc_ring_head(struct xe_lrc *lrc); | |
29 | u32 xe_lrc_ring_space(struct xe_lrc *lrc); | |
30 | void xe_lrc_write_ring(struct xe_lrc *lrc, const void *data, size_t size); | |
31 | ||
32 | u32 xe_lrc_ggtt_addr(struct xe_lrc *lrc); | |
33 | u32 *xe_lrc_regs(struct xe_lrc *lrc); | |
34 | ||
35 | u32 xe_lrc_read_ctx_reg(struct xe_lrc *lrc, int reg_nr); | |
36 | void xe_lrc_write_ctx_reg(struct xe_lrc *lrc, int reg_nr, u32 val); | |
37 | ||
38 | u64 xe_lrc_descriptor(struct xe_lrc *lrc); | |
39 | ||
40 | u32 xe_lrc_seqno_ggtt_addr(struct xe_lrc *lrc); | |
41 | struct dma_fence *xe_lrc_create_seqno_fence(struct xe_lrc *lrc); | |
42 | s32 xe_lrc_seqno(struct xe_lrc *lrc); | |
43 | ||
44 | u32 xe_lrc_start_seqno_ggtt_addr(struct xe_lrc *lrc); | |
45 | s32 xe_lrc_start_seqno(struct xe_lrc *lrc); | |
46 | ||
47 | u32 xe_lrc_parallel_ggtt_addr(struct xe_lrc *lrc); | |
48 | struct iosys_map xe_lrc_parallel_map(struct xe_lrc *lrc); | |
49 | ||
50 | size_t xe_lrc_skip_size(struct xe_device *xe); | |
51 | ||
0f60547f MR |
52 | void xe_lrc_dump_default(struct drm_printer *p, |
53 | struct xe_gt *gt, | |
54 | enum xe_engine_class); | |
55 | ||
b1543a49 MR |
56 | void xe_lrc_emit_hwe_state_instructions(struct xe_exec_queue *q, struct xe_bb *bb); |
57 | ||
dd08ebf6 | 58 | #endif |