Linux Audio

Check our new training course

Loading...
v6.13.7
 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;
12struct drm_xe_engine_class_instance;
13struct xe_device;
14struct xe_sched_job;
15
16#ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MIN
17#define XE_HW_ENGINE_JOB_TIMEOUT_MIN CONFIG_DRM_XE_JOB_TIMEOUT_MIN
18#else
19#define XE_HW_ENGINE_JOB_TIMEOUT_MIN 1
20#endif
21#ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MAX
22#define XE_HW_ENGINE_JOB_TIMEOUT_MAX CONFIG_DRM_XE_JOB_TIMEOUT_MAX
23#else
24#define XE_HW_ENGINE_JOB_TIMEOUT_MAX (10 * 1000)
25#endif
26#ifdef CONFIG_DRM_XE_TIMESLICE_MIN
27#define XE_HW_ENGINE_TIMESLICE_MIN CONFIG_DRM_XE_TIMESLICE_MIN
28#else
29#define XE_HW_ENGINE_TIMESLICE_MIN 1
30#endif
31#ifdef CONFIG_DRM_XE_TIMESLICE_MAX
32#define XE_HW_ENGINE_TIMESLICE_MAX CONFIG_DRM_XE_TIMESLICE_MAX
33#else
34#define XE_HW_ENGINE_TIMESLICE_MAX (10 * 1000 * 1000)
35#endif
36#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT
37#define XE_HW_ENGINE_PREEMPT_TIMEOUT CONFIG_DRM_XE_PREEMPT_TIMEOUT
38#else
39#define XE_HW_ENGINE_PREEMPT_TIMEOUT (640 * 1000)
40#endif
41#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN
42#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN
43#else
44#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN 1
45#endif
46#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX
47#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX
48#else
49#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX (10 * 1000 * 1000)
50#endif
51
52int xe_hw_engines_init_early(struct xe_gt *gt);
53int xe_hw_engines_init(struct xe_gt *gt);
54void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec);
55void xe_hw_engine_enable_ring(struct xe_hw_engine *hwe);
56u32 xe_hw_engine_mask_per_class(struct xe_gt *gt,
57				enum xe_engine_class engine_class);
 
58struct xe_hw_engine_snapshot *
59xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe, struct xe_sched_job *job);
60void xe_hw_engine_snapshot_free(struct xe_hw_engine_snapshot *snapshot);
 
 
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);
65
66struct xe_hw_engine *
67xe_hw_engine_lookup(struct xe_device *xe,
68		    struct drm_xe_engine_class_instance eci);
69
70static inline bool xe_hw_engine_is_valid(struct xe_hw_engine *hwe)
71{
72	return hwe->name;
73}
74
75const char *xe_hw_engine_class_to_str(enum xe_engine_class class);
76u64 xe_hw_engine_read_timestamp(struct xe_hw_engine *hwe);
77enum xe_force_wake_domains xe_hw_engine_to_fw_domain(struct xe_hw_engine *hwe);
78
79void xe_hw_engine_mmio_write32(struct xe_hw_engine *hwe, struct xe_reg reg, u32 val);
80u32 xe_hw_engine_mmio_read32(struct xe_hw_engine *hwe, struct xe_reg reg);
81
82#endif
v6.8
 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