forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-11 072de836f53be56a70cecf70b43ae43b7ce17376
kernel/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
....@@ -1,42 +1,52 @@
1
+/* SPDX-License-Identifier: GPL-2.0-only */
12 /*
23 * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
34 * Author:Mark Yao <mark.yao@rock-chips.com>
4
- *
5
- * This software is licensed under the terms of the GNU General Public
6
- * License version 2, as published by the Free Software Foundation, and
7
- * may be copied, distributed, and modified under those terms.
8
- *
9
- * This program is distributed in the hope that it will be useful,
10
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
- * GNU General Public License for more details.
135 */
146
157 #ifndef _ROCKCHIP_DRM_VOP_H
168 #define _ROCKCHIP_DRM_VOP_H
9
+
10
+#include <drm/drm_plane.h>
11
+#include <drm/drm_modes.h>
12
+
1713 #include "rockchip_drm_drv.h"
1814
1915 /*
2016 * major: IP major version, used for IP structure
2117 * minor: big feature change under same structure
18
+ * build: RTL current SVN number
2219 */
2320 #define VOP_VERSION(major, minor) ((major) << 8 | (minor))
2421 #define VOP_MAJOR(version) ((version) >> 8)
2522 #define VOP_MINOR(version) ((version) & 0xff)
2623
27
-#define VOP_VERSION_RK3528 VOP_VERSION(0x50, 0x17)
28
-#define VOP_VERSION_RK3568 VOP_VERSION(0x40, 0x15)
29
-#define VOP_VERSION_RK3588 VOP_VERSION(0x40, 0x17)
24
+#define VOP2_VERSION(major, minor, build) ((major) << 24 | (minor) << 16 | (build))
25
+#define VOP2_MAJOR(version) (((version) >> 24) & 0xff)
26
+#define VOP2_MINOR(version) (((version) >> 16) & 0xff)
27
+#define VOP2_BUILD(version) ((version) & 0xffff)
3028
29
+#define VOP_VERSION_RK3528 VOP2_VERSION(0x50, 0x17, 0x1263)
30
+#define VOP_VERSION_RK3562 VOP2_VERSION(0x50, 0x17, 0x4350)
31
+#define VOP_VERSION_RK3568 VOP2_VERSION(0x40, 0x15, 0x8023)
32
+#define VOP_VERSION_RK3588 VOP2_VERSION(0x40, 0x17, 0x6786)
33
+
34
+/* register one connector */
3135 #define ROCKCHIP_OUTPUT_DUAL_CHANNEL_LEFT_RIGHT_MODE BIT(0)
36
+/* register one connector */
3237 #define ROCKCHIP_OUTPUT_DUAL_CHANNEL_ODD_EVEN_MODE BIT(1)
3338 #define ROCKCHIP_OUTPUT_DATA_SWAP BIT(2)
39
+/* MIPI DSI DataStream(cmd) mode on rk3588 */
40
+#define ROCKCHIP_OUTPUT_MIPI_DS_MODE BIT(3)
41
+/* register two connector */
42
+#define ROCKCHIP_OUTPUT_DUAL_CONNECTOR_SPLIT_MODE BIT(4)
3443
3544 #define AFBDC_FMT_RGB565 0x0
3645 #define AFBDC_FMT_U8U8U8U8 0x5
3746 #define AFBDC_FMT_U8U8U8 0x4
38
-#define VOP_FEATURE_OUTPUT_10BIT BIT(0)
39
-#define VOP_FEATURE_AFBDC BIT(1)
47
+
48
+#define VOP_FEATURE_OUTPUT_RGB10 BIT(0)
49
+#define VOP_FEATURE_INTERNAL_RGB BIT(1)
4050 #define VOP_FEATURE_ALPHA_SCALE BIT(2)
4151 #define VOP_FEATURE_HDR10 BIT(3)
4252 #define VOP_FEATURE_NEXT_HDR BIT(4)
....@@ -47,12 +57,17 @@
4757 #define VOP_FEATURE_POST_ACM BIT(8)
4858 #define VOP_FEATURE_POST_CSC BIT(9)
4959
60
+#define VOP_FEATURE_OUTPUT_10BIT VOP_FEATURE_OUTPUT_RGB10
61
+
62
+
5063 #define WIN_FEATURE_HDR2SDR BIT(0)
5164 #define WIN_FEATURE_SDR2HDR BIT(1)
5265 #define WIN_FEATURE_PRE_OVERLAY BIT(2)
5366 #define WIN_FEATURE_AFBDC BIT(3)
5467 #define WIN_FEATURE_CLUSTER_MAIN BIT(4)
5568 #define WIN_FEATURE_CLUSTER_SUB BIT(5)
69
+/* Left win in splice mode */
70
+#define WIN_FEATURE_SPLICE_LEFT BIT(6)
5671 /* a mirror win can only get fb address
5772 * from source win:
5873 * Cluster1---->Cluster0
....@@ -66,6 +81,23 @@
6681
6782
6883 #define VOP2_SOC_VARIANT 4
84
+
85
+#define ROCKCHIP_DSC_PPS_SIZE_BYTE 88
86
+
87
+enum vop_vp_id {
88
+ ROCKCHIP_VOP_VP0 = 0,
89
+ ROCKCHIP_VOP_VP1,
90
+ ROCKCHIP_VOP_VP2,
91
+ ROCKCHIP_VOP_VP3,
92
+};
93
+
94
+enum vop_win_phy_id {
95
+ ROCKCHIP_VOP_WIN0 = 0,
96
+ ROCKCHIP_VOP_WIN1,
97
+ ROCKCHIP_VOP_WIN2,
98
+ ROCKCHIP_VOP_WIN3,
99
+ ROCKCHIP_VOP_PHY_ID_INVALID = -1,
100
+};
69101
70102 enum bcsh_out_mode {
71103 BCSH_OUT_MODE_BLACK,
....@@ -88,7 +120,7 @@
88120 /*
89121 * the delay number of a window in different mode.
90122 */
91
-enum win_dly_mode {
123
+enum vop2_win_dly_mode {
92124 VOP2_DLY_MODE_DEFAULT, /**< default mode */
93125 VOP2_DLY_MODE_HISO_S, /** HDR in SDR out mode, as a SDR window */
94126 VOP2_DLY_MODE_HIHO_H, /** HDR in HDR out mode, as a HDR window */
....@@ -101,6 +133,39 @@
101133 VOP3_ESMART_4K_2K_2K_MODE,
102134 VOP3_ESMART_2K_2K_2K_2K_MODE,
103135 };
136
+
137
+/*
138
+ * vop2 dsc id
139
+ */
140
+#define ROCKCHIP_VOP2_DSC_8K 0
141
+#define ROCKCHIP_VOP2_DSC_4K 1
142
+
143
+/*
144
+ * vop2 internal power domain id,
145
+ * should be all none zero, 0 will be
146
+ * treat as invalid;
147
+ */
148
+#define VOP2_PD_CLUSTER0 BIT(0)
149
+#define VOP2_PD_CLUSTER1 BIT(1)
150
+#define VOP2_PD_CLUSTER2 BIT(2)
151
+#define VOP2_PD_CLUSTER3 BIT(3)
152
+#define VOP2_PD_DSC_8K BIT(5)
153
+#define VOP2_PD_DSC_4K BIT(6)
154
+#define VOP2_PD_ESMART BIT(7)
155
+
156
+/*
157
+ * vop2 submem power gate,
158
+ * should be all none zero, 0 will be
159
+ * treat as invalid;
160
+ */
161
+#define VOP2_MEM_PG_VP0 BIT(0)
162
+#define VOP2_MEM_PG_VP1 BIT(1)
163
+#define VOP2_MEM_PG_VP2 BIT(2)
164
+#define VOP2_MEM_PG_VP3 BIT(3)
165
+#define VOP2_MEM_PG_DB0 BIT(4)
166
+#define VOP2_MEM_PG_DB1 BIT(5)
167
+#define VOP2_MEM_PG_DB2 BIT(6)
168
+#define VOP2_MEM_PG_WB BIT(7)
104169
105170 #define DSP_BG_SWAP 0x1
106171 #define DSP_RB_SWAP 0x2
....@@ -139,6 +204,13 @@
139204 VOP_FMT_YUV420SP = 4,
140205 VOP_FMT_YUV422SP,
141206 VOP_FMT_YUV444SP,
207
+};
208
+
209
+enum vop_dsc_interface_mode {
210
+ VOP_DSC_IF_DISABLE = 0,
211
+ VOP_DSC_IF_HDMI = 1,
212
+ VOP_DSC_IF_MIPI_DS_MODE = 2,
213
+ VOP_DSC_IF_MIPI_VIDEO_MODE = 3,
142214 };
143215
144216 struct vop_reg_data {
....@@ -191,6 +263,7 @@
191263 struct vop_reg post_scl_factor;
192264 struct vop_reg post_scl_ctrl;
193265 struct vop_reg dsp_interlace;
266
+ struct vop_reg dsp_interlace_pol;
194267 struct vop_reg global_regdone_en;
195268 struct vop_reg auto_gate_en;
196269 struct vop_reg post_lb_mode;
....@@ -236,6 +309,11 @@
236309 struct vop_reg sw_uv_offset_en;
237310 struct vop_reg dsp_out_yuv;
238311 struct vop_reg dsp_data_swap;
312
+ struct vop_reg dsp_bg_swap;
313
+ struct vop_reg dsp_rb_swap;
314
+ struct vop_reg dsp_rg_swap;
315
+ struct vop_reg dsp_delta_swap;
316
+ struct vop_reg dsp_dummy_swap;
239317 struct vop_reg yuv_clip;
240318 struct vop_reg dsp_ccir656_avg;
241319 struct vop_reg dsp_black;
....@@ -582,6 +660,7 @@
582660 struct vop_reg gate;
583661 struct vop_reg enable;
584662 struct vop_reg format;
663
+ struct vop_reg interlace_read;
585664 struct vop_reg fmt_10;
586665 struct vop_reg fmt_yuyv;
587666 struct vop_reg csc_mode;
....@@ -605,6 +684,17 @@
605684 struct vop_reg global_alpha_val;
606685 struct vop_reg color_key;
607686 struct vop_reg color_key_en;
687
+};
688
+
689
+struct vop_win_data {
690
+ uint32_t base;
691
+ enum drm_plane_type type;
692
+ const struct vop_win_phy *phy;
693
+ const struct vop_win_phy **area;
694
+ const uint64_t *format_modifiers;
695
+ const struct vop_csc *csc;
696
+ unsigned int area_size;
697
+ u64 feature;
608698 };
609699
610700 struct vop2_cluster_regs {
....@@ -701,7 +791,9 @@
701791 struct vop_reg pre_scan_htiming;
702792 struct vop_reg htotal_pw;
703793 struct vop_reg hact_st_end;
704
- struct vop_reg vtotal_pw;
794
+ struct vop_reg dsp_vtotal;
795
+ struct vop_reg sw_dsp_vtotal_imd;
796
+ struct vop_reg dsp_vs_end;
705797 struct vop_reg vact_st_end;
706798 struct vop_reg vact_st_end_f1;
707799 struct vop_reg vs_st_end_f1;
....@@ -719,8 +811,8 @@
719811
720812 struct vop_reg core_dclk_div;
721813 struct vop_reg p2i_en;
722
- struct vop_reg mipi_dual_en;
723
- struct vop_reg mipi_dual_channel_swap;
814
+ struct vop_reg dual_channel_en;
815
+ struct vop_reg dual_channel_swap;
724816 struct vop_reg dsp_lut_en;
725817
726818 struct vop_reg dclk_div2;
....@@ -783,11 +875,37 @@
783875 struct vop_reg cubic_lut_update_en;
784876 struct vop_reg cubic_lut_mst;
785877
878
+ /* cru */
879
+ struct vop_reg dclk_core_div;
880
+ struct vop_reg dclk_out_div;
881
+ struct vop_reg dclk_src_sel;
882
+
883
+ struct vop_reg splice_en;
884
+
786885 struct vop_reg edpi_wms_hold_en;
787886 struct vop_reg edpi_te_en;
788887 struct vop_reg edpi_wms_fs;
789888 struct vop_reg gamma_update_en;
790889 struct vop_reg lut_dma_rid;
890
+
891
+ /* MCU output */
892
+ struct vop_reg mcu_pix_total;
893
+ struct vop_reg mcu_cs_pst;
894
+ struct vop_reg mcu_cs_pend;
895
+ struct vop_reg mcu_rw_pst;
896
+ struct vop_reg mcu_rw_pend;
897
+ struct vop_reg mcu_clk_sel;
898
+ struct vop_reg mcu_hold_mode;
899
+ struct vop_reg mcu_frame_st;
900
+ struct vop_reg mcu_rs;
901
+ struct vop_reg mcu_bypass;
902
+ struct vop_reg mcu_type;
903
+ struct vop_reg mcu_rw_bypass_port;
904
+
905
+ /* for DCF */
906
+ struct vop_reg line_flag_or_en;
907
+ struct vop_reg dsp_hold_or_en;
908
+ struct vop_reg almost_full_or_en;
791909
792910 /* CSC */
793911 struct vop_reg acm_bypass_en;
....@@ -807,6 +925,58 @@
807925 struct vop_reg csc_offset0;
808926 struct vop_reg csc_offset1;
809927 struct vop_reg csc_offset2;
928
+
929
+ /* color bar */
930
+ struct vop_reg color_bar_en;
931
+ struct vop_reg color_bar_mode;
932
+};
933
+
934
+struct vop2_power_domain_regs {
935
+ struct vop_reg pd;
936
+ struct vop_reg status;
937
+ struct vop_reg bisr_en_status;
938
+ struct vop_reg pmu_status;
939
+};
940
+
941
+struct vop2_dsc_regs {
942
+ /* DSC SYS CTRL */
943
+ struct vop_reg dsc_port_sel;
944
+ struct vop_reg dsc_man_mode;
945
+ struct vop_reg dsc_interface_mode;
946
+ struct vop_reg dsc_pixel_num;
947
+ struct vop_reg dsc_pxl_clk_div;
948
+ struct vop_reg dsc_cds_clk_div;
949
+ struct vop_reg dsc_txp_clk_div;
950
+ struct vop_reg dsc_init_dly_mode;
951
+ struct vop_reg dsc_scan_en;
952
+ struct vop_reg dsc_halt_en;
953
+ struct vop_reg rst_deassert;
954
+ struct vop_reg dsc_flush;
955
+ struct vop_reg dsc_cfg_done;
956
+ struct vop_reg dsc_init_dly_num;
957
+ struct vop_reg scan_timing_para_imd_en;
958
+ struct vop_reg dsc_htotal_pw;
959
+ struct vop_reg dsc_hact_st_end;
960
+ struct vop_reg dsc_vtotal;
961
+ struct vop_reg dsc_vs_end;
962
+ struct vop_reg dsc_vact_st_end;
963
+ struct vop_reg dsc_error_status;
964
+
965
+ /* DSC encoder */
966
+ struct vop_reg dsc_pps0_3;
967
+ struct vop_reg dsc_en;
968
+ struct vop_reg dsc_rbit;
969
+ struct vop_reg dsc_rbyt;
970
+ struct vop_reg dsc_flal;
971
+ struct vop_reg dsc_mer;
972
+ struct vop_reg dsc_epb;
973
+ struct vop_reg dsc_epl;
974
+ struct vop_reg dsc_nslc;
975
+ struct vop_reg dsc_sbo;
976
+ struct vop_reg dsc_ifep;
977
+ struct vop_reg dsc_pps_upd;
978
+ struct vop_reg dsc_status;
979
+ struct vop_reg dsc_ecw;
810980 };
811981
812982 struct vop2_wb_regs {
....@@ -825,19 +995,39 @@
825995 struct vop_reg axi_uv_id;
826996 };
827997
828
-struct vop_win_data {
829
- uint32_t base;
830
- enum drm_plane_type type;
831
- const struct vop_win_phy *phy;
832
- const struct vop_win_phy **area;
833
- const struct vop_csc *csc;
834
- unsigned int area_size;
835
- u64 feature;
998
+struct vop2_power_domain_data {
999
+ uint8_t id;
1000
+ uint8_t parent_id;
1001
+ /*
1002
+ * @module_id_mask: module id of which module this power domain is belongs to.
1003
+ * PD_CLUSTER0,1,2,3 only belongs to CLUSTER0/1/2/3, PD_Esmart0 shared by Esmart1/2/3
1004
+ */
1005
+ uint32_t module_id_mask;
1006
+
1007
+ const struct vop2_power_domain_regs *regs;
1008
+};
1009
+
1010
+/*
1011
+ * connector interface(RGB/HDMI/eDP/DP/MIPI) data
1012
+ */
1013
+struct vop2_connector_if_data {
1014
+ u32 id;
1015
+ const char *clk_src_name;
1016
+ const char *clk_parent_name;
1017
+ const char *pixclk_name;
1018
+ const char *dclk_name;
1019
+ u32 post_proc_div_shift;
1020
+ u32 if_div_shift;
1021
+ u32 if_div_yuv420_shift;
1022
+ u32 bus_div_shift;
1023
+ u32 pixel_clk_div_shift;
8361024 };
8371025
8381026 struct vop2_win_data {
8391027 const char *name;
8401028 uint8_t phys_id;
1029
+ uint8_t splice_win_id;
1030
+ uint8_t pd_id;
8411031 uint8_t axi_id;
8421032 uint8_t axi_yrgb_id;
8431033 uint8_t axi_uv_id;
....@@ -875,6 +1065,24 @@
8751065 const uint8_t dly[VOP2_DLY_MODE_MAX];
8761066 };
8771067
1068
+struct dsc_error_info {
1069
+ u32 dsc_error_val;
1070
+ char dsc_error_info[50];
1071
+};
1072
+
1073
+struct vop2_dsc_data {
1074
+ uint8_t id;
1075
+ uint8_t pd_id;
1076
+ uint8_t max_slice_num;
1077
+ uint8_t max_linebuf_depth; /* used to generate the bitstream */
1078
+ uint8_t min_bits_per_pixel; /* bit num after encoder compress */
1079
+ const char *dsc_txp_clk_src_name;
1080
+ const char *dsc_txp_clk_name;
1081
+ const char *dsc_pxl_clk_name;
1082
+ const char *dsc_cds_clk_name;
1083
+ const struct vop2_dsc_regs *regs;
1084
+};
1085
+
8781086 struct vop2_wb_data {
8791087 uint32_t nformats;
8801088 const uint32_t *formats;
....@@ -897,11 +1105,13 @@
8971105
8981106 struct vop2_video_port_data {
8991107 char id;
1108
+ uint8_t splice_vp_id;
9001109 uint16_t lut_dma_rid;
9011110 uint32_t feature;
9021111 uint64_t soc_id[VOP2_SOC_VARIANT];
9031112 uint16_t gamma_lut_len;
9041113 uint16_t cubic_lut_len;
1114
+ unsigned long dclk_max;
9051115 struct vop_rect max_output;
9061116 const u8 pre_scan_max_dly[4];
9071117 const u8 hdrvivid_dly[10];
....@@ -952,6 +1162,14 @@
9521162 struct vop_reg grf_dclk_inv;
9531163 struct vop_reg grf_bt1120_clk_inv;
9541164 struct vop_reg grf_bt656_clk_inv;
1165
+ struct vop_reg grf_edp0_en;
1166
+ struct vop_reg grf_edp1_en;
1167
+ struct vop_reg grf_hdmi0_en;
1168
+ struct vop_reg grf_hdmi1_en;
1169
+ struct vop_reg grf_hdmi0_dsc_en;
1170
+ struct vop_reg grf_hdmi1_dsc_en;
1171
+ struct vop_reg grf_hdmi0_pin_pol;
1172
+ struct vop_reg grf_hdmi1_pin_pol;
9551173 };
9561174
9571175 struct vop_data {
....@@ -969,6 +1187,7 @@
9691187 struct vop_rect max_output;
9701188 u64 feature;
9711189 u64 soc_id;
1190
+ u8 vop_id;
9721191 };
9731192
9741193 struct vop2_ctrl {
....@@ -976,6 +1195,9 @@
9761195 struct vop_reg wb_cfg_done;
9771196 struct vop_reg auto_gating_en;
9781197 struct vop_reg aclk_pre_auto_gating_en;
1198
+ struct vop_reg dma_finish_mode;
1199
+ struct vop_reg axi_dma_finish_and_en;
1200
+ struct vop_reg wb_dma_finish_and_en;
9791201 struct vop_reg ovl_cfg_done_port;
9801202 struct vop_reg ovl_port_mux_cfg_done_imd;
9811203 struct vop_reg ovl_port_mux_cfg;
....@@ -1015,9 +1237,12 @@
10151237 struct vop_reg edp_pin_pol;
10161238 struct vop_reg mipi_dclk_pol;
10171239 struct vop_reg mipi_pin_pol;
1018
- struct vop_reg dp_dclk_pol;
1019
- struct vop_reg dp_pin_pol;
1240
+ struct vop_reg dp0_dclk_pol;
1241
+ struct vop_reg dp0_pin_pol;
1242
+ struct vop_reg dp1_dclk_pol;
1243
+ struct vop_reg dp1_pin_pol;
10201244
1245
+ /* This will be reference by win_phy_id */
10211246 struct vop_reg win_vp_id[16];
10221247 struct vop_reg win_dly[16];
10231248
....@@ -1038,10 +1263,25 @@
10381263 struct vop_reg lvds_dual_mode;
10391264 struct vop_reg lvds_dual_channel_swap;
10401265
1041
- struct vop_reg cluster0_src_color_ctrl;
1042
- struct vop_reg cluster0_dst_color_ctrl;
1043
- struct vop_reg cluster0_src_alpha_ctrl;
1044
- struct vop_reg cluster0_dst_alpha_ctrl;
1266
+ struct vop_reg dp_dual_en;
1267
+ struct vop_reg edp_dual_en;
1268
+ struct vop_reg hdmi_dual_en;
1269
+ struct vop_reg mipi_dual_en;
1270
+
1271
+ struct vop_reg hdmi0_dclk_div;
1272
+ struct vop_reg hdmi0_pixclk_div;
1273
+ struct vop_reg edp0_dclk_div;
1274
+ struct vop_reg edp0_pixclk_div;
1275
+
1276
+ struct vop_reg hdmi1_dclk_div;
1277
+ struct vop_reg hdmi1_pixclk_div;
1278
+ struct vop_reg edp1_dclk_div;
1279
+ struct vop_reg edp1_pixclk_div;
1280
+
1281
+ struct vop_reg mipi0_pixclk_div;
1282
+ struct vop_reg mipi1_pixclk_div;
1283
+ struct vop_reg mipi0_ds_mode;
1284
+ struct vop_reg mipi1_ds_mode;
10451285
10461286 struct vop_reg src_color_ctrl;
10471287 struct vop_reg dst_color_ctrl;
....@@ -1051,6 +1291,7 @@
10511291 struct vop_reg bt1120_yc_swap;
10521292 struct vop_reg bt656_yc_swap;
10531293 struct vop_reg gamma_port_sel;
1294
+ struct vop_reg pd_off_imd;
10541295
10551296 struct vop_reg otp_en;
10561297 struct vop_reg esmart_lb_mode;
....@@ -1065,6 +1306,12 @@
10651306 bool enable_state;
10661307 };
10671308
1309
+struct vop2_vp_plane_mask {
1310
+ u8 primary_plane_id;
1311
+ u8 attached_layers_nr;
1312
+ u8 attached_layers[ROCKCHIP_MAX_LAYER];
1313
+};
1314
+
10681315 /**
10691316 * VOP2 data structe
10701317 *
....@@ -1074,25 +1321,43 @@
10741321 struct vop2_data {
10751322 uint32_t version;
10761323 uint32_t feature;
1324
+ uint8_t nr_dscs;
1325
+ uint8_t nr_dsc_ecw;
1326
+ uint8_t nr_dsc_buffer_flow;
10771327 uint8_t nr_vps;
10781328 uint8_t nr_mixers;
10791329 uint8_t nr_layers;
10801330 uint8_t nr_axi_intr;
10811331 uint8_t nr_gammas;
1332
+ uint8_t nr_conns;
1333
+ uint8_t nr_pds;
1334
+ uint8_t nr_mem_pgs;
10821335 uint8_t esmart_lb_mode;
1336
+ bool delayed_pd;
10831337 const struct vop_intr *axi_intr;
10841338 const struct vop2_ctrl *ctrl;
1339
+ const struct vop2_dsc_data *dsc;
1340
+ const struct dsc_error_info *dsc_error_ecw;
1341
+ const struct dsc_error_info *dsc_error_buffer_flow;
10851342 const struct vop2_win_data *win;
10861343 const struct vop2_video_port_data *vp;
1344
+ const struct vop2_connector_if_data *conn;
10871345 const struct vop2_wb_data *wb;
10881346 const struct vop2_layer_data *layer;
1347
+ const struct vop2_power_domain_data *pd;
1348
+ const struct vop2_power_domain_data *mem_pg;
10891349 const struct vop_csc_table *csc_table;
10901350 const struct vop_hdr_table *hdr_table;
1091
- const struct vop_grf_ctrl *grf_ctrl;
1351
+ const struct vop_grf_ctrl *sys_grf;
1352
+ const struct vop_grf_ctrl *grf;
1353
+ const struct vop_grf_ctrl *vo0_grf;
1354
+ const struct vop_grf_ctrl *vo1_grf;
10921355 const struct vop_dump_regs *dump_regs;
10931356 uint32_t dump_regs_size;
10941357 struct vop_rect max_input;
10951358 struct vop_rect max_output;
1359
+ const struct vop2_vp_plane_mask *plane_mask;
1360
+ uint32_t plane_mask_base;
10961361
10971362 unsigned int win_size;
10981363 };
....@@ -1169,6 +1434,9 @@
11691434 #define ROCKCHIP_OUT_MODE_P565 2
11701435 #define ROCKCHIP_OUT_MODE_BT656 5
11711436 #define ROCKCHIP_OUT_MODE_S888 8
1437
+#define ROCKCHIP_OUT_MODE_S666 9
1438
+#define ROCKCHIP_OUT_MODE_YUV422 9
1439
+#define ROCKCHIP_OUT_MODE_S565 10
11721440 #define ROCKCHIP_OUT_MODE_S888_DUMMY 12
11731441 #define ROCKCHIP_OUT_MODE_YUV420 14
11741442 /* for use special outface */
....@@ -1285,6 +1553,7 @@
12851553 DCLK_INVERT = 3
12861554 };
12871555
1556
+
12881557 #define FRAC_16_16(mult, div) (((mult) << 16) / (div))
12891558 #define SCL_FT_DEFAULT_FIXPOINT_SHIFT 12
12901559 #define SCL_MAX_VSKIPLINES 4
....@@ -1369,7 +1638,6 @@
13691638 return y1 + (y2 - y1) * (x - x1) / (x2 - x1);
13701639 }
13711640
1372
-extern void vop2_standby(struct drm_crtc *crtc, bool standby);
13731641 extern const struct component_ops vop_component_ops;
13741642 extern const struct component_ops vop2_component_ops;
13751643 #endif /* _ROCKCHIP_DRM_VOP_H */