Home | History | Annotate | Line # | Download | only in display
      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 
     15 struct intel_crtc;
     16 struct i915_vma;
     17 
     18 enum dsb_id {
     19 	INVALID_DSB = -1,
     20 	DSB1,
     21 	DSB2,
     22 	DSB3,
     23 	MAX_DSB_PER_PIPE
     24 };
     25 
     26 struct 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 
     46 struct intel_dsb *
     47 intel_dsb_get(struct intel_crtc *crtc);
     48 void intel_dsb_put(struct intel_dsb *dsb);
     49 void intel_dsb_reg_write(struct intel_dsb *dsb, i915_reg_t reg, u32 val);
     50 void intel_dsb_indexed_reg_write(struct intel_dsb *dsb, i915_reg_t reg,
     51 				 u32 val);
     52 void intel_dsb_commit(struct intel_dsb *dsb);
     53 
     54 #endif
     55