197fb5e8dSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
225fdd593SJeykumar Sankaran /* Copyright (c) 2016-2018, The Linux Foundation. All rights reserved.
325fdd593SJeykumar Sankaran  */
425fdd593SJeykumar Sankaran 
525fdd593SJeykumar Sankaran #ifndef __DPU_VBIF_H__
625fdd593SJeykumar Sankaran #define __DPU_VBIF_H__
725fdd593SJeykumar Sankaran 
825fdd593SJeykumar Sankaran #include "dpu_kms.h"
925fdd593SJeykumar Sankaran 
1025fdd593SJeykumar Sankaran struct dpu_vbif_set_ot_params {
1125fdd593SJeykumar Sankaran 	u32 xin_id;
1225fdd593SJeykumar Sankaran 	u32 num;
1325fdd593SJeykumar Sankaran 	u32 width;
1425fdd593SJeykumar Sankaran 	u32 height;
1525fdd593SJeykumar Sankaran 	u32 frame_rate;
1625fdd593SJeykumar Sankaran 	bool rd;
1725fdd593SJeykumar Sankaran 	bool is_wfd;
1825fdd593SJeykumar Sankaran 	u32 vbif_idx;
1925fdd593SJeykumar Sankaran 	u32 clk_ctrl;
2025fdd593SJeykumar Sankaran };
2125fdd593SJeykumar Sankaran 
2225fdd593SJeykumar Sankaran struct dpu_vbif_set_memtype_params {
2325fdd593SJeykumar Sankaran 	u32 xin_id;
2425fdd593SJeykumar Sankaran 	u32 vbif_idx;
2525fdd593SJeykumar Sankaran 	u32 clk_ctrl;
2625fdd593SJeykumar Sankaran 	bool is_cacheable;
2725fdd593SJeykumar Sankaran };
2825fdd593SJeykumar Sankaran 
2925fdd593SJeykumar Sankaran /**
3025fdd593SJeykumar Sankaran  * struct dpu_vbif_set_qos_params - QoS remapper parameter
3125fdd593SJeykumar Sankaran  * @vbif_idx: vbif identifier
3225fdd593SJeykumar Sankaran  * @xin_id: client interface identifier
3325fdd593SJeykumar Sankaran  * @clk_ctrl: clock control identifier of the xin
3425fdd593SJeykumar Sankaran  * @num: pipe identifier (debug only)
3525fdd593SJeykumar Sankaran  * @is_rt: true if pipe is used in real-time use case
3625fdd593SJeykumar Sankaran  */
3725fdd593SJeykumar Sankaran struct dpu_vbif_set_qos_params {
3825fdd593SJeykumar Sankaran 	u32 vbif_idx;
3925fdd593SJeykumar Sankaran 	u32 xin_id;
4025fdd593SJeykumar Sankaran 	u32 clk_ctrl;
4125fdd593SJeykumar Sankaran 	u32 num;
4225fdd593SJeykumar Sankaran 	bool is_rt;
4325fdd593SJeykumar Sankaran };
4425fdd593SJeykumar Sankaran 
4525fdd593SJeykumar Sankaran /**
4625fdd593SJeykumar Sankaran  * dpu_vbif_set_ot_limit - set OT limit for vbif client
4725fdd593SJeykumar Sankaran  * @dpu_kms:	DPU handler
4825fdd593SJeykumar Sankaran  * @params:	Pointer to OT configuration parameters
4925fdd593SJeykumar Sankaran  */
5025fdd593SJeykumar Sankaran void dpu_vbif_set_ot_limit(struct dpu_kms *dpu_kms,
5125fdd593SJeykumar Sankaran 		struct dpu_vbif_set_ot_params *params);
5225fdd593SJeykumar Sankaran 
5325fdd593SJeykumar Sankaran /**
5425fdd593SJeykumar Sankaran  * dpu_vbif_set_qos_remap - set QoS priority level remap
5525fdd593SJeykumar Sankaran  * @dpu_kms:	DPU handler
5625fdd593SJeykumar Sankaran  * @params:	Pointer to QoS configuration parameters
5725fdd593SJeykumar Sankaran  */
5825fdd593SJeykumar Sankaran void dpu_vbif_set_qos_remap(struct dpu_kms *dpu_kms,
5925fdd593SJeykumar Sankaran 		struct dpu_vbif_set_qos_params *params);
6025fdd593SJeykumar Sankaran 
6125fdd593SJeykumar Sankaran /**
6225fdd593SJeykumar Sankaran  * dpu_vbif_clear_errors - clear any vbif errors
6325fdd593SJeykumar Sankaran  * @dpu_kms:	DPU handler
6425fdd593SJeykumar Sankaran  */
6525fdd593SJeykumar Sankaran void dpu_vbif_clear_errors(struct dpu_kms *dpu_kms);
6625fdd593SJeykumar Sankaran 
6725fdd593SJeykumar Sankaran /**
6825fdd593SJeykumar Sankaran  * dpu_vbif_init_memtypes - initialize xin memory types for vbif
6925fdd593SJeykumar Sankaran  * @dpu_kms:	DPU handler
7025fdd593SJeykumar Sankaran  */
7125fdd593SJeykumar Sankaran void dpu_vbif_init_memtypes(struct dpu_kms *dpu_kms);
7225fdd593SJeykumar Sankaran 
733d688410SJordan Crouse void dpu_debugfs_vbif_init(struct dpu_kms *dpu_kms, struct dentry *debugfs_root);
743d688410SJordan Crouse 
7525fdd593SJeykumar Sankaran #endif /* __DPU_VBIF_H__ */
76