2018-04-11 00:12:46 +08:00
|
|
|
/*
|
|
|
|
* SPDX-License-Identifier: MIT
|
|
|
|
*
|
|
|
|
* Copyright © 2014-2018 Intel Corporation
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _I915_WORKAROUNDS_H_
|
|
|
|
#define _I915_WORKAROUNDS_H_
|
|
|
|
|
2018-12-03 21:33:19 +08:00
|
|
|
#include <linux/slab.h>
|
|
|
|
|
|
|
|
struct i915_wa {
|
|
|
|
i915_reg_t reg;
|
|
|
|
u32 mask;
|
|
|
|
u32 val;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct i915_wa_list {
|
|
|
|
const char *name;
|
|
|
|
struct i915_wa *list;
|
|
|
|
unsigned int count;
|
2018-12-03 21:33:57 +08:00
|
|
|
unsigned int wa_count;
|
2018-12-03 21:33:19 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
static inline void intel_wa_list_free(struct i915_wa_list *wal)
|
|
|
|
{
|
|
|
|
kfree(wal->list);
|
|
|
|
memset(wal, 0, sizeof(*wal));
|
|
|
|
}
|
|
|
|
|
2018-12-03 21:33:57 +08:00
|
|
|
void intel_engine_init_ctx_wa(struct intel_engine_cs *engine);
|
|
|
|
int intel_engine_emit_ctx_wa(struct i915_request *rq);
|
2018-04-11 00:12:47 +08:00
|
|
|
|
2018-12-03 21:33:19 +08:00
|
|
|
void intel_gt_init_workarounds(struct drm_i915_private *dev_priv);
|
|
|
|
void intel_gt_apply_workarounds(struct drm_i915_private *dev_priv);
|
2018-12-03 20:50:10 +08:00
|
|
|
bool intel_gt_verify_workarounds(struct drm_i915_private *dev_priv,
|
|
|
|
const char *from);
|
2018-04-11 00:12:47 +08:00
|
|
|
|
2018-12-03 20:50:12 +08:00
|
|
|
void intel_engine_init_whitelist(struct intel_engine_cs *engine);
|
|
|
|
void intel_engine_apply_whitelist(struct intel_engine_cs *engine);
|
2018-04-11 00:12:46 +08:00
|
|
|
|
2018-12-03 21:33:41 +08:00
|
|
|
void intel_engine_init_workarounds(struct intel_engine_cs *engine);
|
|
|
|
void intel_engine_apply_workarounds(struct intel_engine_cs *engine);
|
|
|
|
|
2018-04-11 00:12:46 +08:00
|
|
|
#endif
|