blob: 979695a539648cee1fa4b7e870a9d12a6c4d5892 [file] [log] [blame]
Oscar Mateo7d3c4252018-04-10 09:12:46 -07001/*
2 * SPDX-License-Identifier: MIT
3 *
4 * Copyright © 2014-2018 Intel Corporation
5 */
6
7#ifndef _I915_WORKAROUNDS_H_
8#define _I915_WORKAROUNDS_H_
9
Tvrtko Ursulin00936772018-12-05 11:33:23 +000010#include <linux/slab.h>
11
12struct i915_wa {
13 i915_reg_t reg;
14 u32 mask;
15 u32 val;
16};
17
18struct i915_wa_list {
19 const char *name;
20 struct i915_wa *list;
21 unsigned int count;
22};
23
24static inline void intel_wa_list_free(struct i915_wa_list *wal)
25{
26 kfree(wal->list);
27 memset(wal, 0, sizeof(*wal));
28}
29
Oscar Mateo59b449d2018-04-10 09:12:47 -070030int intel_ctx_workarounds_init(struct drm_i915_private *dev_priv);
31int intel_ctx_workarounds_emit(struct i915_request *rq);
32
Tvrtko Ursulin00936772018-12-05 11:33:23 +000033void intel_gt_init_workarounds(struct drm_i915_private *dev_priv);
34void intel_gt_apply_workarounds(struct drm_i915_private *dev_priv);
Oscar Mateo59b449d2018-04-10 09:12:47 -070035
Chris Wilsonf4ecfbf2018-04-14 13:27:54 +010036void intel_whitelist_workarounds_apply(struct intel_engine_cs *engine);
Oscar Mateo7d3c4252018-04-10 09:12:46 -070037
Tvrtko Ursulin90098ef2018-12-05 11:33:24 +000038void intel_engine_init_workarounds(struct intel_engine_cs *engine);
39void intel_engine_apply_workarounds(struct intel_engine_cs *engine);
40
Oscar Mateo7d3c4252018-04-10 09:12:46 -070041#endif