blob: 263106600fdc0f902be401b05f7281dcc23aed84 [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
38#endif