/* SPDX-License-Identifier: MIT * * Copyright © 2019 Intel Corporation */ #ifndef _INTEL_DSB_H #define _INTEL_DSB_H #include #include "i915_reg.h" struct intel_crtc_state; struct i915_vma; enum dsb_id { INVALID_DSB = -1, DSB1, DSB2, DSB3, MAX_DSB_PER_PIPE }; struct intel_dsb { enum dsb_id id; u32 *cmd_buf; struct i915_vma *vma; /* * free_pos will point the first free entry position * and help in calculating tail of command buffer. */ int free_pos; /* * ins_start_offset will help to store start address of the dsb * instuction and help in identifying the batch of auto-increment * register. */ u32 ins_start_offset; }; void intel_dsb_prepare(struct intel_crtc_state *crtc_state); void intel_dsb_cleanup(struct intel_crtc_state *crtc_state); void intel_dsb_reg_write(const struct intel_crtc_state *crtc_state, i915_reg_t reg, u32 val); void intel_dsb_indexed_reg_write(const struct intel_crtc_state *crtc_state, i915_reg_t reg, u32 val); void intel_dsb_commit(const struct intel_crtc_state *crtc_state); #endif