Merge tag 'for-4.21/libata-20190102' of git://git.kernel.dk/linux-block
[linux-2.6-microblaze.git] / drivers / gpu / drm / i915 / intel_workarounds.h
1 /*
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
10 #include <linux/slab.h>
11
12 struct i915_wa {
13         i915_reg_t        reg;
14         u32               mask;
15         u32               val;
16 };
17
18 struct i915_wa_list {
19         const char      *name;
20         struct i915_wa  *list;
21         unsigned int    count;
22         unsigned int    wa_count;
23 };
24
25 static inline void intel_wa_list_free(struct i915_wa_list *wal)
26 {
27         kfree(wal->list);
28         memset(wal, 0, sizeof(*wal));
29 }
30
31 void intel_engine_init_ctx_wa(struct intel_engine_cs *engine);
32 int intel_engine_emit_ctx_wa(struct i915_request *rq);
33
34 void intel_gt_init_workarounds(struct drm_i915_private *dev_priv);
35 void intel_gt_apply_workarounds(struct drm_i915_private *dev_priv);
36 bool intel_gt_verify_workarounds(struct drm_i915_private *dev_priv,
37                                  const char *from);
38
39 void intel_engine_init_whitelist(struct intel_engine_cs *engine);
40 void intel_engine_apply_whitelist(struct intel_engine_cs *engine);
41
42 void intel_engine_init_workarounds(struct intel_engine_cs *engine);
43 void intel_engine_apply_workarounds(struct intel_engine_cs *engine);
44
45 #endif