1/* $NetBSD: intel_dsb.h,v 1.2 2021/12/18 23:45:30 riastradh Exp $ */ 2 3/* SPDX-License-Identifier: MIT 4 * 5 * Copyright �� 2019 Intel Corporation 6 */ 7 8#ifndef _INTEL_DSB_H 9#define _INTEL_DSB_H 10 11#include <linux/types.h> 12 13#include "i915_reg.h" 14 15struct intel_crtc; 16struct i915_vma; 17 18enum dsb_id { 19 INVALID_DSB = -1, 20 DSB1, 21 DSB2, 22 DSB3, 23 MAX_DSB_PER_PIPE 24}; 25 26struct intel_dsb { 27 long refcount; 28 enum dsb_id id; 29 u32 *cmd_buf; 30 struct i915_vma *vma; 31 32 /* 33 * free_pos will point the first free entry position 34 * and help in calculating tail of command buffer. 35 */ 36 int free_pos; 37 38 /* 39 * ins_start_offset will help to store start address of the dsb 40 * instuction and help in identifying the batch of auto-increment 41 * register. 42 */ 43 u32 ins_start_offset; 44}; 45 46struct intel_dsb * 47intel_dsb_get(struct intel_crtc *crtc); 48void intel_dsb_put(struct intel_dsb *dsb); 49void intel_dsb_reg_write(struct intel_dsb *dsb, i915_reg_t reg, u32 val); 50void intel_dsb_indexed_reg_write(struct intel_dsb *dsb, i915_reg_t reg, 51 u32 val); 52void intel_dsb_commit(struct intel_dsb *dsb); 53 54#endif 55