Linux Audio

Check our new training course

Loading...
 1/* SPDX-License-Identifier: MIT */
 2/*
 3 * Copyright © 2021 Intel Corporation
 4 */
 5
 6#ifndef _XE_HW_ENGINE_H_
 7#define _XE_HW_ENGINE_H_
 8
 9#include "xe_hw_engine_types.h"
10
11struct drm_printer;
12
13#ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MIN
14#define XE_HW_ENGINE_JOB_TIMEOUT_MIN CONFIG_DRM_XE_JOB_TIMEOUT_MIN
15#else
16#define XE_HW_ENGINE_JOB_TIMEOUT_MIN 1
17#endif
18#ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MAX
19#define XE_HW_ENGINE_JOB_TIMEOUT_MAX CONFIG_DRM_XE_JOB_TIMEOUT_MAX
20#else
21#define XE_HW_ENGINE_JOB_TIMEOUT_MAX (10 * 1000)
22#endif
23#ifdef CONFIG_DRM_XE_TIMESLICE_MIN
24#define XE_HW_ENGINE_TIMESLICE_MIN CONFIG_DRM_XE_TIMESLICE_MIN
25#else
26#define XE_HW_ENGINE_TIMESLICE_MIN 1
27#endif
28#ifdef CONFIG_DRM_XE_TIMESLICE_MAX
29#define XE_HW_ENGINE_TIMESLICE_MAX CONFIG_DRM_XE_TIMESLICE_MAX
30#else
31#define XE_HW_ENGINE_TIMESLICE_MAX (10 * 1000 * 1000)
32#endif
33#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT
34#define XE_HW_ENGINE_PREEMPT_TIMEOUT CONFIG_DRM_XE_PREEMPT_TIMEOUT
35#else
36#define XE_HW_ENGINE_PREEMPT_TIMEOUT (640 * 1000)
37#endif
38#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN
39#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN
40#else
41#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN 1
42#endif
43#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX
44#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX
45#else
46#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX (10 * 1000 * 1000)
47#endif
48
49int xe_hw_engines_init_early(struct xe_gt *gt);
50int xe_hw_engines_init(struct xe_gt *gt);
51void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec);
52void xe_hw_engine_enable_ring(struct xe_hw_engine *hwe);
53u32 xe_hw_engine_mask_per_class(struct xe_gt *gt,
54				enum xe_engine_class engine_class);
55
56struct xe_hw_engine_snapshot *
57xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe);
58void xe_hw_engine_snapshot_free(struct xe_hw_engine_snapshot *snapshot);
59void xe_hw_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot,
60				 struct drm_printer *p);
61void xe_hw_engine_print(struct xe_hw_engine *hwe, struct drm_printer *p);
62void xe_hw_engine_setup_default_lrc_state(struct xe_hw_engine *hwe);
63
64bool xe_hw_engine_is_reserved(struct xe_hw_engine *hwe);
65static inline bool xe_hw_engine_is_valid(struct xe_hw_engine *hwe)
66{
67	return hwe->name;
68}
69
70#endif