brintos

brintos / linux-shallow public Read only

0
0
Text · 2.7 KiB · 022819a Raw
85 lines · c
1/* SPDX-License-Identifier: MIT */2/*3 * Copyright © 2021 Intel Corporation4 */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;14 15#ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MIN16#define XE_HW_ENGINE_JOB_TIMEOUT_MIN CONFIG_DRM_XE_JOB_TIMEOUT_MIN17#else18#define XE_HW_ENGINE_JOB_TIMEOUT_MIN 119#endif20#ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MAX21#define XE_HW_ENGINE_JOB_TIMEOUT_MAX CONFIG_DRM_XE_JOB_TIMEOUT_MAX22#else23#define XE_HW_ENGINE_JOB_TIMEOUT_MAX (10 * 1000)24#endif25#ifdef CONFIG_DRM_XE_TIMESLICE_MIN26#define XE_HW_ENGINE_TIMESLICE_MIN CONFIG_DRM_XE_TIMESLICE_MIN27#else28#define XE_HW_ENGINE_TIMESLICE_MIN 129#endif30#ifdef CONFIG_DRM_XE_TIMESLICE_MAX31#define XE_HW_ENGINE_TIMESLICE_MAX CONFIG_DRM_XE_TIMESLICE_MAX32#else33#define XE_HW_ENGINE_TIMESLICE_MAX (10 * 1000 * 1000)34#endif35#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT36#define XE_HW_ENGINE_PREEMPT_TIMEOUT CONFIG_DRM_XE_PREEMPT_TIMEOUT37#else38#define XE_HW_ENGINE_PREEMPT_TIMEOUT (640 * 1000)39#endif40#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN41#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN42#else43#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN 144#endif45#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX46#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX47#else48#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX (10 * 1000 * 1000)49#endif50 51int xe_hw_engines_init_early(struct xe_gt *gt);52int xe_hw_engines_init(struct xe_gt *gt);53void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec);54void xe_hw_engine_enable_ring(struct xe_hw_engine *hwe);55u32 xe_hw_engine_mask_per_class(struct xe_gt *gt,56				enum xe_engine_class engine_class);57 58struct xe_hw_engine_snapshot *59xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe);60void xe_hw_engine_snapshot_free(struct xe_hw_engine_snapshot *snapshot);61void xe_hw_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot,62				 struct drm_printer *p);63void xe_hw_engine_print(struct xe_hw_engine *hwe, struct drm_printer *p);64void xe_hw_engine_setup_default_lrc_state(struct xe_hw_engine *hwe);65 66bool xe_hw_engine_is_reserved(struct xe_hw_engine *hwe);67 68struct xe_hw_engine *69xe_hw_engine_lookup(struct xe_device *xe,70		    struct drm_xe_engine_class_instance eci);71 72static inline bool xe_hw_engine_is_valid(struct xe_hw_engine *hwe)73{74	return hwe->name;75}76 77const char *xe_hw_engine_class_to_str(enum xe_engine_class class);78u64 xe_hw_engine_read_timestamp(struct xe_hw_engine *hwe);79enum xe_force_wake_domains xe_hw_engine_to_fw_domain(struct xe_hw_engine *hwe);80 81void xe_hw_engine_mmio_write32(struct xe_hw_engine *hwe, struct xe_reg reg, u32 val);82u32 xe_hw_engine_mmio_read32(struct xe_hw_engine *hwe, struct xe_reg reg);83 84#endif85