From f70575805708cabdedea7498aaa3f710fde4d920 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 31 Jan 2024 03:29:01 +0000
Subject: [PATCH] add lvds1024*800

---
 kernel/drivers/gpu/drm/rockchip/rockchip_drm_vop.h |  328 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 294 insertions(+), 34 deletions(-)

diff --git a/kernel/drivers/gpu/drm/rockchip/rockchip_drm_vop.h b/kernel/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
index a0677dd..5f72a76 100644
--- a/kernel/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
+++ b/kernel/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
@@ -1,42 +1,52 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
  * Author:Mark Yao <mark.yao@rock-chips.com>
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
 
 #ifndef _ROCKCHIP_DRM_VOP_H
 #define _ROCKCHIP_DRM_VOP_H
+
+#include <drm/drm_plane.h>
+#include <drm/drm_modes.h>
+
 #include "rockchip_drm_drv.h"
 
 /*
  * major: IP major version, used for IP structure
  * minor: big feature change under same structure
+ * build: RTL current SVN number
  */
 #define VOP_VERSION(major, minor)	((major) << 8 | (minor))
 #define VOP_MAJOR(version)		((version) >> 8)
 #define VOP_MINOR(version)		((version) & 0xff)
 
-#define VOP_VERSION_RK3528	VOP_VERSION(0x50, 0x17)
-#define VOP_VERSION_RK3568	VOP_VERSION(0x40, 0x15)
-#define VOP_VERSION_RK3588	VOP_VERSION(0x40, 0x17)
+#define VOP2_VERSION(major, minor, build)	((major) << 24 | (minor) << 16 | (build))
+#define VOP2_MAJOR(version)		(((version) >> 24) & 0xff)
+#define VOP2_MINOR(version)		(((version) >> 16) & 0xff)
+#define VOP2_BUILD(version)		((version) & 0xffff)
 
+#define VOP_VERSION_RK3528	VOP2_VERSION(0x50, 0x17, 0x1263)
+#define VOP_VERSION_RK3562	VOP2_VERSION(0x50, 0x17, 0x4350)
+#define VOP_VERSION_RK3568	VOP2_VERSION(0x40, 0x15, 0x8023)
+#define VOP_VERSION_RK3588	VOP2_VERSION(0x40, 0x17, 0x6786)
+
+/* register one connector */
 #define ROCKCHIP_OUTPUT_DUAL_CHANNEL_LEFT_RIGHT_MODE	BIT(0)
+/* register one connector */
 #define ROCKCHIP_OUTPUT_DUAL_CHANNEL_ODD_EVEN_MODE	BIT(1)
 #define ROCKCHIP_OUTPUT_DATA_SWAP			BIT(2)
+/* MIPI DSI DataStream(cmd) mode on rk3588 */
+#define ROCKCHIP_OUTPUT_MIPI_DS_MODE			BIT(3)
+/* register two connector */
+#define ROCKCHIP_OUTPUT_DUAL_CONNECTOR_SPLIT_MODE	BIT(4)
 
 #define AFBDC_FMT_RGB565	0x0
 #define AFBDC_FMT_U8U8U8U8	0x5
 #define AFBDC_FMT_U8U8U8	0x4
-#define VOP_FEATURE_OUTPUT_10BIT	BIT(0)
-#define VOP_FEATURE_AFBDC		BIT(1)
+
+#define VOP_FEATURE_OUTPUT_RGB10	BIT(0)
+#define VOP_FEATURE_INTERNAL_RGB	BIT(1)
 #define VOP_FEATURE_ALPHA_SCALE		BIT(2)
 #define VOP_FEATURE_HDR10		BIT(3)
 #define VOP_FEATURE_NEXT_HDR		BIT(4)
@@ -47,12 +57,17 @@
 #define VOP_FEATURE_POST_ACM		BIT(8)
 #define VOP_FEATURE_POST_CSC		BIT(9)
 
+#define VOP_FEATURE_OUTPUT_10BIT	VOP_FEATURE_OUTPUT_RGB10
+
+
 #define WIN_FEATURE_HDR2SDR		BIT(0)
 #define WIN_FEATURE_SDR2HDR		BIT(1)
 #define WIN_FEATURE_PRE_OVERLAY		BIT(2)
 #define WIN_FEATURE_AFBDC		BIT(3)
 #define WIN_FEATURE_CLUSTER_MAIN	BIT(4)
 #define WIN_FEATURE_CLUSTER_SUB		BIT(5)
+/* Left win in splice mode */
+#define WIN_FEATURE_SPLICE_LEFT		BIT(6)
 /* a mirror win can only get fb address
  * from source win:
  * Cluster1---->Cluster0
@@ -66,6 +81,15 @@
 
 
 #define VOP2_SOC_VARIANT		4
+
+#define ROCKCHIP_DSC_PPS_SIZE_BYTE	88
+
+enum vop_vp_id {
+	ROCKCHIP_VOP_VP0 = 0,
+	ROCKCHIP_VOP_VP1,
+	ROCKCHIP_VOP_VP2,
+	ROCKCHIP_VOP_VP3,
+};
 
 enum bcsh_out_mode {
 	BCSH_OUT_MODE_BLACK,
@@ -88,7 +112,7 @@
 /*
  *  the delay number of a window in different mode.
  */
-enum win_dly_mode {
+enum vop2_win_dly_mode {
 	VOP2_DLY_MODE_DEFAULT,   /**< default mode */
 	VOP2_DLY_MODE_HISO_S,    /** HDR in SDR out mode, as a SDR window */
 	VOP2_DLY_MODE_HIHO_H,    /** HDR in HDR out mode, as a HDR window */
@@ -101,6 +125,39 @@
 	VOP3_ESMART_4K_2K_2K_MODE,
 	VOP3_ESMART_2K_2K_2K_2K_MODE,
 };
+
+/*
+ * vop2 dsc id
+ */
+#define ROCKCHIP_VOP2_DSC_8K	0
+#define ROCKCHIP_VOP2_DSC_4K	1
+
+/*
+ * vop2 internal power domain id,
+ * should be all none zero, 0 will be
+ * treat as invalid;
+ */
+#define VOP2_PD_CLUSTER0	BIT(0)
+#define VOP2_PD_CLUSTER1	BIT(1)
+#define VOP2_PD_CLUSTER2	BIT(2)
+#define VOP2_PD_CLUSTER3	BIT(3)
+#define VOP2_PD_DSC_8K		BIT(5)
+#define VOP2_PD_DSC_4K		BIT(6)
+#define VOP2_PD_ESMART		BIT(7)
+
+/*
+ * vop2 submem power gate,
+ * should be all none zero, 0 will be
+ * treat as invalid;
+ */
+#define VOP2_MEM_PG_VP0		BIT(0)
+#define VOP2_MEM_PG_VP1		BIT(1)
+#define VOP2_MEM_PG_VP2		BIT(2)
+#define VOP2_MEM_PG_VP3		BIT(3)
+#define VOP2_MEM_PG_DB0		BIT(4)
+#define VOP2_MEM_PG_DB1		BIT(5)
+#define VOP2_MEM_PG_DB2		BIT(6)
+#define VOP2_MEM_PG_WB		BIT(7)
 
 #define DSP_BG_SWAP		0x1
 #define DSP_RB_SWAP		0x2
@@ -139,6 +196,13 @@
 	VOP_FMT_YUV420SP = 4,
 	VOP_FMT_YUV422SP,
 	VOP_FMT_YUV444SP,
+};
+
+enum vop_dsc_interface_mode {
+	VOP_DSC_IF_DISABLE = 0,
+	VOP_DSC_IF_HDMI = 1,
+	VOP_DSC_IF_MIPI_DS_MODE = 2,
+	VOP_DSC_IF_MIPI_VIDEO_MODE = 3,
 };
 
 struct vop_reg_data {
@@ -191,6 +255,7 @@
 	struct vop_reg post_scl_factor;
 	struct vop_reg post_scl_ctrl;
 	struct vop_reg dsp_interlace;
+	struct vop_reg dsp_interlace_pol;
 	struct vop_reg global_regdone_en;
 	struct vop_reg auto_gate_en;
 	struct vop_reg post_lb_mode;
@@ -236,6 +301,11 @@
 	struct vop_reg sw_uv_offset_en;
 	struct vop_reg dsp_out_yuv;
 	struct vop_reg dsp_data_swap;
+	struct vop_reg dsp_bg_swap;
+	struct vop_reg dsp_rb_swap;
+	struct vop_reg dsp_rg_swap;
+	struct vop_reg dsp_delta_swap;
+	struct vop_reg dsp_dummy_swap;
 	struct vop_reg yuv_clip;
 	struct vop_reg dsp_ccir656_avg;
 	struct vop_reg dsp_black;
@@ -582,6 +652,7 @@
 	struct vop_reg gate;
 	struct vop_reg enable;
 	struct vop_reg format;
+	struct vop_reg interlace_read;
 	struct vop_reg fmt_10;
 	struct vop_reg fmt_yuyv;
 	struct vop_reg csc_mode;
@@ -605,6 +676,17 @@
 	struct vop_reg global_alpha_val;
 	struct vop_reg color_key;
 	struct vop_reg color_key_en;
+};
+
+struct vop_win_data {
+	uint32_t base;
+	enum drm_plane_type type;
+	const struct vop_win_phy *phy;
+	const struct vop_win_phy **area;
+	const uint64_t *format_modifiers;
+	const struct vop_csc *csc;
+	unsigned int area_size;
+	u64 feature;
 };
 
 struct vop2_cluster_regs {
@@ -701,7 +783,9 @@
 	struct vop_reg pre_scan_htiming;
 	struct vop_reg htotal_pw;
 	struct vop_reg hact_st_end;
-	struct vop_reg vtotal_pw;
+	struct vop_reg dsp_vtotal;
+	struct vop_reg sw_dsp_vtotal_imd;
+	struct vop_reg dsp_vs_end;
 	struct vop_reg vact_st_end;
 	struct vop_reg vact_st_end_f1;
 	struct vop_reg vs_st_end_f1;
@@ -719,8 +803,8 @@
 
 	struct vop_reg core_dclk_div;
 	struct vop_reg p2i_en;
-	struct vop_reg mipi_dual_en;
-	struct vop_reg mipi_dual_channel_swap;
+	struct vop_reg dual_channel_en;
+	struct vop_reg dual_channel_swap;
 	struct vop_reg dsp_lut_en;
 
 	struct vop_reg dclk_div2;
@@ -783,11 +867,37 @@
 	struct vop_reg cubic_lut_update_en;
 	struct vop_reg cubic_lut_mst;
 
+	/* cru */
+	struct vop_reg dclk_core_div;
+	struct vop_reg dclk_out_div;
+	struct vop_reg dclk_src_sel;
+
+	struct vop_reg splice_en;
+
 	struct vop_reg edpi_wms_hold_en;
 	struct vop_reg edpi_te_en;
 	struct vop_reg edpi_wms_fs;
 	struct vop_reg gamma_update_en;
 	struct vop_reg lut_dma_rid;
+
+	/* MCU output */
+	struct vop_reg mcu_pix_total;
+	struct vop_reg mcu_cs_pst;
+	struct vop_reg mcu_cs_pend;
+	struct vop_reg mcu_rw_pst;
+	struct vop_reg mcu_rw_pend;
+	struct vop_reg mcu_clk_sel;
+	struct vop_reg mcu_hold_mode;
+	struct vop_reg mcu_frame_st;
+	struct vop_reg mcu_rs;
+	struct vop_reg mcu_bypass;
+	struct vop_reg mcu_type;
+	struct vop_reg mcu_rw_bypass_port;
+
+	/* for DCF */
+	struct vop_reg line_flag_or_en;
+	struct vop_reg dsp_hold_or_en;
+	struct vop_reg almost_full_or_en;
 
 	/* CSC */
 	struct vop_reg acm_bypass_en;
@@ -807,6 +917,58 @@
 	struct vop_reg csc_offset0;
 	struct vop_reg csc_offset1;
 	struct vop_reg csc_offset2;
+
+	/* color bar */
+	struct vop_reg color_bar_en;
+	struct vop_reg color_bar_mode;
+};
+
+struct vop2_power_domain_regs {
+	struct vop_reg pd;
+	struct vop_reg status;
+	struct vop_reg bisr_en_status;
+	struct vop_reg pmu_status;
+};
+
+struct vop2_dsc_regs {
+	/* DSC SYS CTRL */
+	struct vop_reg dsc_port_sel;
+	struct vop_reg dsc_man_mode;
+	struct vop_reg dsc_interface_mode;
+	struct vop_reg dsc_pixel_num;
+	struct vop_reg dsc_pxl_clk_div;
+	struct vop_reg dsc_cds_clk_div;
+	struct vop_reg dsc_txp_clk_div;
+	struct vop_reg dsc_init_dly_mode;
+	struct vop_reg dsc_scan_en;
+	struct vop_reg dsc_halt_en;
+	struct vop_reg rst_deassert;
+	struct vop_reg dsc_flush;
+	struct vop_reg dsc_cfg_done;
+	struct vop_reg dsc_init_dly_num;
+	struct vop_reg scan_timing_para_imd_en;
+	struct vop_reg dsc_htotal_pw;
+	struct vop_reg dsc_hact_st_end;
+	struct vop_reg dsc_vtotal;
+	struct vop_reg dsc_vs_end;
+	struct vop_reg dsc_vact_st_end;
+	struct vop_reg dsc_error_status;
+
+	/* DSC encoder */
+	struct vop_reg dsc_pps0_3;
+	struct vop_reg dsc_en;
+	struct vop_reg dsc_rbit;
+	struct vop_reg dsc_rbyt;
+	struct vop_reg dsc_flal;
+	struct vop_reg dsc_mer;
+	struct vop_reg dsc_epb;
+	struct vop_reg dsc_epl;
+	struct vop_reg dsc_nslc;
+	struct vop_reg dsc_sbo;
+	struct vop_reg dsc_ifep;
+	struct vop_reg dsc_pps_upd;
+	struct vop_reg dsc_status;
+	struct vop_reg dsc_ecw;
 };
 
 struct vop2_wb_regs {
@@ -825,19 +987,39 @@
 	struct vop_reg axi_uv_id;
 };
 
-struct vop_win_data {
-	uint32_t base;
-	enum drm_plane_type type;
-	const struct vop_win_phy *phy;
-	const struct vop_win_phy **area;
-	const struct vop_csc *csc;
-	unsigned int area_size;
-	u64 feature;
+struct vop2_power_domain_data {
+	uint8_t id;
+	uint8_t parent_id;
+	/*
+	 * @module_id_mask: module id of which module this power domain is belongs to.
+	 * PD_CLUSTER0,1,2,3 only belongs to CLUSTER0/1/2/3, PD_Esmart0 shared by Esmart1/2/3
+	 */
+	uint32_t module_id_mask;
+
+	const struct vop2_power_domain_regs *regs;
+};
+
+/*
+ * connector interface(RGB/HDMI/eDP/DP/MIPI) data
+ */
+struct vop2_connector_if_data {
+	u32 id;
+	const char *clk_src_name;
+	const char *clk_parent_name;
+	const char *pixclk_name;
+	const char *dclk_name;
+	u32 post_proc_div_shift;
+	u32 if_div_shift;
+	u32 if_div_yuv420_shift;
+	u32 bus_div_shift;
+	u32 pixel_clk_div_shift;
 };
 
 struct vop2_win_data {
 	const char *name;
 	uint8_t phys_id;
+	uint8_t splice_win_id;
+	uint8_t pd_id;
 	uint8_t axi_id;
 	uint8_t axi_yrgb_id;
 	uint8_t axi_uv_id;
@@ -875,6 +1057,24 @@
 	const uint8_t dly[VOP2_DLY_MODE_MAX];
 };
 
+struct dsc_error_info {
+	u32 dsc_error_val;
+	char dsc_error_info[50];
+};
+
+struct vop2_dsc_data {
+	uint8_t id;
+	uint8_t pd_id;
+	uint8_t max_slice_num;
+	uint8_t max_linebuf_depth;	/* used to generate the bitstream */
+	uint8_t min_bits_per_pixel;	/* bit num after encoder compress */
+	const char *dsc_txp_clk_src_name;
+	const char *dsc_txp_clk_name;
+	const char *dsc_pxl_clk_name;
+	const char *dsc_cds_clk_name;
+	const struct vop2_dsc_regs *regs;
+};
+
 struct vop2_wb_data {
 	uint32_t nformats;
 	const uint32_t *formats;
@@ -897,11 +1097,13 @@
 
 struct vop2_video_port_data {
 	char id;
+	uint8_t splice_vp_id;
 	uint16_t lut_dma_rid;
 	uint32_t feature;
 	uint64_t soc_id[VOP2_SOC_VARIANT];
 	uint16_t gamma_lut_len;
 	uint16_t cubic_lut_len;
+	unsigned long dclk_max;
 	struct vop_rect max_output;
 	const u8 pre_scan_max_dly[4];
 	const u8 hdrvivid_dly[10];
@@ -952,6 +1154,14 @@
 	struct vop_reg grf_dclk_inv;
 	struct vop_reg grf_bt1120_clk_inv;
 	struct vop_reg grf_bt656_clk_inv;
+	struct vop_reg grf_edp0_en;
+	struct vop_reg grf_edp1_en;
+	struct vop_reg grf_hdmi0_en;
+	struct vop_reg grf_hdmi1_en;
+	struct vop_reg grf_hdmi0_dsc_en;
+	struct vop_reg grf_hdmi1_dsc_en;
+	struct vop_reg grf_hdmi0_pin_pol;
+	struct vop_reg grf_hdmi1_pin_pol;
 };
 
 struct vop_data {
@@ -969,6 +1179,7 @@
 	struct vop_rect max_output;
 	u64 feature;
 	u64 soc_id;
+	u8 vop_id;
 };
 
 struct vop2_ctrl {
@@ -976,6 +1187,9 @@
 	struct vop_reg wb_cfg_done;
 	struct vop_reg auto_gating_en;
 	struct vop_reg aclk_pre_auto_gating_en;
+	struct vop_reg dma_finish_mode;
+	struct vop_reg axi_dma_finish_and_en;
+	struct vop_reg wb_dma_finish_and_en;
 	struct vop_reg ovl_cfg_done_port;
 	struct vop_reg ovl_port_mux_cfg_done_imd;
 	struct vop_reg ovl_port_mux_cfg;
@@ -1015,9 +1229,12 @@
 	struct vop_reg edp_pin_pol;
 	struct vop_reg mipi_dclk_pol;
 	struct vop_reg mipi_pin_pol;
-	struct vop_reg dp_dclk_pol;
-	struct vop_reg dp_pin_pol;
+	struct vop_reg dp0_dclk_pol;
+	struct vop_reg dp0_pin_pol;
+	struct vop_reg dp1_dclk_pol;
+	struct vop_reg dp1_pin_pol;
 
+	/* This will be reference by win_phy_id */
 	struct vop_reg win_vp_id[16];
 	struct vop_reg win_dly[16];
 
@@ -1038,10 +1255,25 @@
 	struct vop_reg lvds_dual_mode;
 	struct vop_reg lvds_dual_channel_swap;
 
-	struct vop_reg cluster0_src_color_ctrl;
-	struct vop_reg cluster0_dst_color_ctrl;
-	struct vop_reg cluster0_src_alpha_ctrl;
-	struct vop_reg cluster0_dst_alpha_ctrl;
+	struct vop_reg dp_dual_en;
+	struct vop_reg edp_dual_en;
+	struct vop_reg hdmi_dual_en;
+	struct vop_reg mipi_dual_en;
+
+	struct vop_reg hdmi0_dclk_div;
+	struct vop_reg hdmi0_pixclk_div;
+	struct vop_reg edp0_dclk_div;
+	struct vop_reg edp0_pixclk_div;
+
+	struct vop_reg hdmi1_dclk_div;
+	struct vop_reg hdmi1_pixclk_div;
+	struct vop_reg edp1_dclk_div;
+	struct vop_reg edp1_pixclk_div;
+
+	struct vop_reg mipi0_pixclk_div;
+	struct vop_reg mipi1_pixclk_div;
+	struct vop_reg mipi0_ds_mode;
+	struct vop_reg mipi1_ds_mode;
 
 	struct vop_reg src_color_ctrl;
 	struct vop_reg dst_color_ctrl;
@@ -1051,6 +1283,7 @@
 	struct vop_reg bt1120_yc_swap;
 	struct vop_reg bt656_yc_swap;
 	struct vop_reg gamma_port_sel;
+	struct vop_reg pd_off_imd;
 
 	struct vop_reg otp_en;
 	struct vop_reg esmart_lb_mode;
@@ -1065,6 +1298,12 @@
 	bool enable_state;
 };
 
+struct vop2_vp_plane_mask {
+	u8 primary_plane_id;
+	u8 attached_layers_nr;
+	u8 attached_layers[ROCKCHIP_MAX_LAYER];
+};
+
 /**
  * VOP2 data structe
  *
@@ -1074,25 +1313,43 @@
 struct vop2_data {
 	uint32_t version;
 	uint32_t feature;
+	uint8_t nr_dscs;
+	uint8_t nr_dsc_ecw;
+	uint8_t nr_dsc_buffer_flow;
 	uint8_t nr_vps;
 	uint8_t nr_mixers;
 	uint8_t nr_layers;
 	uint8_t nr_axi_intr;
 	uint8_t nr_gammas;
+	uint8_t nr_conns;
+	uint8_t nr_pds;
+	uint8_t nr_mem_pgs;
 	uint8_t esmart_lb_mode;
+	bool delayed_pd;
 	const struct vop_intr *axi_intr;
 	const struct vop2_ctrl *ctrl;
+	const struct vop2_dsc_data *dsc;
+	const struct dsc_error_info *dsc_error_ecw;
+	const struct dsc_error_info *dsc_error_buffer_flow;
 	const struct vop2_win_data *win;
 	const struct vop2_video_port_data *vp;
+	const struct vop2_connector_if_data *conn;
 	const struct vop2_wb_data *wb;
 	const struct vop2_layer_data *layer;
+	const struct vop2_power_domain_data *pd;
+	const struct vop2_power_domain_data *mem_pg;
 	const struct vop_csc_table *csc_table;
 	const struct vop_hdr_table *hdr_table;
-	const struct vop_grf_ctrl *grf_ctrl;
+	const struct vop_grf_ctrl *sys_grf;
+	const struct vop_grf_ctrl *grf;
+	const struct vop_grf_ctrl *vo0_grf;
+	const struct vop_grf_ctrl *vo1_grf;
 	const struct vop_dump_regs *dump_regs;
 	uint32_t dump_regs_size;
 	struct vop_rect max_input;
 	struct vop_rect max_output;
+	const struct vop2_vp_plane_mask *plane_mask;
+	uint32_t plane_mask_base;
 
 	unsigned int win_size;
 };
@@ -1169,6 +1426,9 @@
 #define ROCKCHIP_OUT_MODE_P565		2
 #define ROCKCHIP_OUT_MODE_BT656		5
 #define ROCKCHIP_OUT_MODE_S888		8
+#define ROCKCHIP_OUT_MODE_S666		9
+#define ROCKCHIP_OUT_MODE_YUV422	9
+#define ROCKCHIP_OUT_MODE_S565		10
 #define ROCKCHIP_OUT_MODE_S888_DUMMY	12
 #define ROCKCHIP_OUT_MODE_YUV420	14
 /* for use special outface */
@@ -1285,6 +1545,7 @@
 	DCLK_INVERT    = 3
 };
 
+
 #define FRAC_16_16(mult, div)    (((mult) << 16) / (div))
 #define SCL_FT_DEFAULT_FIXPOINT_SHIFT	12
 #define SCL_MAX_VSKIPLINES		4
@@ -1369,7 +1630,6 @@
 	return y1 + (y2 - y1) * (x - x1) / (x2 - x1);
 }
 
-extern void vop2_standby(struct drm_crtc *crtc, bool standby);
 extern const struct component_ops vop_component_ops;
 extern const struct component_ops vop2_component_ops;
 #endif /* _ROCKCHIP_DRM_VOP_H */

--
Gitblit v1.6.2