xref: /rockchip-linux_mpp/mpp/vproc/vdpp/vdpp_reg.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1*437bfbebSnyanmisaka /* SPDX-License-Identifier: Apache-2.0 OR MIT */
2*437bfbebSnyanmisaka /*
3*437bfbebSnyanmisaka  * Copyright (c) 2024 Rockchip Electronics Co., Ltd.
4*437bfbebSnyanmisaka  */
5*437bfbebSnyanmisaka 
6*437bfbebSnyanmisaka #ifndef __VDPP_REG_H__
7*437bfbebSnyanmisaka #define __VDPP_REG_H__
8*437bfbebSnyanmisaka 
9*437bfbebSnyanmisaka #include "rk_type.h"
10*437bfbebSnyanmisaka 
11*437bfbebSnyanmisaka #define VDPP_REG_OFF_DMSR               (0x80)
12*437bfbebSnyanmisaka #define VDPP_REG_OFF_YRGB_HOR_COE       (0x2000)
13*437bfbebSnyanmisaka #define VDPP_REG_OFF_YRGB_VER_COE       (0x2200)
14*437bfbebSnyanmisaka #define VDPP_REG_OFF_CBCR_HOR_COE       (0x2400)
15*437bfbebSnyanmisaka #define VDPP_REG_OFF_CBCR_VER_COE       (0x2600)
16*437bfbebSnyanmisaka #define VDPP_REG_OFF_ZME_COMMON         (0x2800)
17*437bfbebSnyanmisaka 
18*437bfbebSnyanmisaka struct vdpp_reg {
19*437bfbebSnyanmisaka     struct {
20*437bfbebSnyanmisaka 
21*437bfbebSnyanmisaka         struct {
22*437bfbebSnyanmisaka             RK_U32 sw_vdpp_frm_en       : 1;
23*437bfbebSnyanmisaka         } reg0;         // 0x0000
24*437bfbebSnyanmisaka 
25*437bfbebSnyanmisaka         struct {
26*437bfbebSnyanmisaka             RK_U32 sw_vdpp_src_fmt      : 2;
27*437bfbebSnyanmisaka             RK_U32 sw_reserved_1        : 2;
28*437bfbebSnyanmisaka             RK_U32 sw_vdpp_src_yuv_swap : 2;
29*437bfbebSnyanmisaka             RK_U32 sw_reserved_2        : 2;
30*437bfbebSnyanmisaka             RK_U32 sw_vdpp_dst_fmt      : 2;
31*437bfbebSnyanmisaka             RK_U32 sw_reserved_3        : 2;
32*437bfbebSnyanmisaka             RK_U32 sw_vdpp_dst_yuv_swap : 2;
33*437bfbebSnyanmisaka             RK_U32 sw_reserved_4        : 2;
34*437bfbebSnyanmisaka             RK_U32 sw_vdpp_debug_data_en: 1;
35*437bfbebSnyanmisaka             RK_U32 sw_reserved_5        : 3;
36*437bfbebSnyanmisaka             RK_U32 sw_vdpp_rst_protect_dis      : 1;
37*437bfbebSnyanmisaka             RK_U32 sys_vdpp_sreset_p    : 1;
38*437bfbebSnyanmisaka             RK_U32 sw_vdpp_init_dis     : 1;
39*437bfbebSnyanmisaka             RK_U32 sw_reserved_6        : 1;
40*437bfbebSnyanmisaka             RK_U32 sw_vdpp_dbmsr_en     : 1;
41*437bfbebSnyanmisaka         } reg1;         // 0x0004
42*437bfbebSnyanmisaka 
43*437bfbebSnyanmisaka         struct {
44*437bfbebSnyanmisaka             RK_U32 sw_vdpp_working_mode : 2;
45*437bfbebSnyanmisaka         } reg2;         // 0x0008
46*437bfbebSnyanmisaka 
47*437bfbebSnyanmisaka         RK_U32 reg3;    // 0x000C
48*437bfbebSnyanmisaka 
49*437bfbebSnyanmisaka         struct {
50*437bfbebSnyanmisaka             RK_U32 sw_vdpp_clk_on       : 1;
51*437bfbebSnyanmisaka             RK_U32 sw_md_clk_on         : 1;
52*437bfbebSnyanmisaka             RK_U32 sw_dect_clk_on       : 1;
53*437bfbebSnyanmisaka             RK_U32 sw_me_clk_on         : 1;
54*437bfbebSnyanmisaka             RK_U32 sw_mc_clk_on         : 1;
55*437bfbebSnyanmisaka             RK_U32 sw_eedi_clk_on       : 1;
56*437bfbebSnyanmisaka             RK_U32 sw_ble_clk_on        : 1;
57*437bfbebSnyanmisaka             RK_U32 sw_out_clk_on        : 1;
58*437bfbebSnyanmisaka             RK_U32 sw_ctrl_clk_on       : 1;
59*437bfbebSnyanmisaka             RK_U32 sw_ram_clk_on        : 1;
60*437bfbebSnyanmisaka             RK_U32 sw_dma_clk_on        : 1;
61*437bfbebSnyanmisaka             RK_U32 sw_reg_clk_on        : 1;
62*437bfbebSnyanmisaka         } reg4;         // 0x0010
63*437bfbebSnyanmisaka 
64*437bfbebSnyanmisaka         struct {
65*437bfbebSnyanmisaka             RK_U32 ro_arst_finish_done  : 1;
66*437bfbebSnyanmisaka         } reg5;         // 0x0014
67*437bfbebSnyanmisaka 
68*437bfbebSnyanmisaka         RK_U32 reg6;    // 0x0018
69*437bfbebSnyanmisaka         RK_U32 reg7;    // 0x001c
70*437bfbebSnyanmisaka 
71*437bfbebSnyanmisaka         struct {
72*437bfbebSnyanmisaka             RK_U32 sw_vdpp_frm_done_en  : 1;
73*437bfbebSnyanmisaka             RK_U32 sw_vdpp_osd_max_en   : 1;
74*437bfbebSnyanmisaka             RK_U32 sw_reserved_1        : 2;
75*437bfbebSnyanmisaka             RK_U32 sw_vdpp_bus_error_en : 1;
76*437bfbebSnyanmisaka             RK_U32 sw_vdpp_timeout_int_en       : 1;
77*437bfbebSnyanmisaka             RK_U32 sw_vdpp_config_error_en      : 1;
78*437bfbebSnyanmisaka         } reg8;         // 0x0020
79*437bfbebSnyanmisaka 
80*437bfbebSnyanmisaka         struct {
81*437bfbebSnyanmisaka             RK_U32 sw_vdpp_frm_done_clr : 1;
82*437bfbebSnyanmisaka             RK_U32 sw_vdpp_osd_max_clr  : 1;
83*437bfbebSnyanmisaka             RK_U32 sw_reserved_1        : 2;
84*437bfbebSnyanmisaka             RK_U32 sw_vdpp_bus_error_clr: 1;
85*437bfbebSnyanmisaka             RK_U32 sw_vdpp_timeout_int_clr      : 1;
86*437bfbebSnyanmisaka             RK_U32 sw_vdpp_config_error_clr     : 1;
87*437bfbebSnyanmisaka         } reg9;        // 0x0024
88*437bfbebSnyanmisaka 
89*437bfbebSnyanmisaka         struct {
90*437bfbebSnyanmisaka             RK_U32 ro_frm_done_sts      : 1;
91*437bfbebSnyanmisaka             RK_U32 ro_osd_max_sts       : 1;
92*437bfbebSnyanmisaka             RK_U32 sw_reserved_1        : 2;
93*437bfbebSnyanmisaka             RK_U32 ro_bus_error_sts     : 1;
94*437bfbebSnyanmisaka             RK_U32 ro_timeout_sts       : 1;
95*437bfbebSnyanmisaka             RK_U32 ro_config_error_sts  : 1;
96*437bfbebSnyanmisaka         } reg10;        // 0x0028, read only
97*437bfbebSnyanmisaka 
98*437bfbebSnyanmisaka         struct {
99*437bfbebSnyanmisaka             RK_U32 ro_frm_done_raw      : 1;
100*437bfbebSnyanmisaka             RK_U32 ro_osd_max_raw       : 1;
101*437bfbebSnyanmisaka             RK_U32 sw_reserved_1        : 2;
102*437bfbebSnyanmisaka             RK_U32 ro_bus_error_raw     : 1;
103*437bfbebSnyanmisaka             RK_U32 ro_timeout_raw       : 1;
104*437bfbebSnyanmisaka             RK_U32 ro_config_error_raw  : 1;
105*437bfbebSnyanmisaka         } reg11;        // 0x002C, read only
106*437bfbebSnyanmisaka 
107*437bfbebSnyanmisaka         struct {
108*437bfbebSnyanmisaka             RK_U32 sw_vdpp_src_vir_y_stride     : 16;
109*437bfbebSnyanmisaka         } reg12;         // 0x0030
110*437bfbebSnyanmisaka 
111*437bfbebSnyanmisaka         struct {
112*437bfbebSnyanmisaka             RK_U32 sw_vdpp_dst_vir_y_stride     : 16;
113*437bfbebSnyanmisaka         } reg13;         // 0x0034
114*437bfbebSnyanmisaka 
115*437bfbebSnyanmisaka         struct {
116*437bfbebSnyanmisaka             RK_U32 sw_vdpp_src_pic_width        : 11;
117*437bfbebSnyanmisaka             RK_U32 sw_reserved_1        : 1;
118*437bfbebSnyanmisaka             RK_U32 sw_vdpp_src_right_redundant  : 4;
119*437bfbebSnyanmisaka             RK_U32 sw_vdpp_src_pic_height       : 11;
120*437bfbebSnyanmisaka             RK_U32 sw_reserved_2        : 1;
121*437bfbebSnyanmisaka             RK_U32 sw_vdpp_src_down_redundant   : 3;
122*437bfbebSnyanmisaka         } reg14;         // 0x0038
123*437bfbebSnyanmisaka 
124*437bfbebSnyanmisaka         struct {
125*437bfbebSnyanmisaka             RK_U32 sw_vdpp_dst_pic_width        : 11;
126*437bfbebSnyanmisaka             RK_U32 sw_reserved_1        : 1;
127*437bfbebSnyanmisaka             RK_U32 sw_vdpp_dst_right_redundant  : 4;
128*437bfbebSnyanmisaka             RK_U32 sw_vdpp_dst_pic_height       : 11;
129*437bfbebSnyanmisaka         } reg15;         // 0x003C
130*437bfbebSnyanmisaka 
131*437bfbebSnyanmisaka         RK_U32 reg16;    // 0x0040
132*437bfbebSnyanmisaka         RK_U32 reg17;    // 0x0044
133*437bfbebSnyanmisaka         RK_U32 reg18;    // 0x0048
134*437bfbebSnyanmisaka         RK_U32 reg19;    // 0x004C
135*437bfbebSnyanmisaka 
136*437bfbebSnyanmisaka         struct {
137*437bfbebSnyanmisaka             RK_U32 sw_vdpp_timeout_cnt  : 31;
138*437bfbebSnyanmisaka             RK_U32 sw_vdpp_timeout_en   : 1;
139*437bfbebSnyanmisaka         } reg20;         // 0x0050
140*437bfbebSnyanmisaka 
141*437bfbebSnyanmisaka         struct {
142*437bfbebSnyanmisaka             RK_U32 svnbuild     : 20;
143*437bfbebSnyanmisaka             RK_U32 minor        : 8;
144*437bfbebSnyanmisaka             RK_U32 major        : 4;
145*437bfbebSnyanmisaka         } reg21;         // 0x0054
146*437bfbebSnyanmisaka 
147*437bfbebSnyanmisaka         struct {
148*437bfbebSnyanmisaka             RK_U32 dbg_frm_cnt  : 16;
149*437bfbebSnyanmisaka         } reg22;         // 0x0058
150*437bfbebSnyanmisaka 
151*437bfbebSnyanmisaka         RK_U32 reg23;    // 0x005C
152*437bfbebSnyanmisaka 
153*437bfbebSnyanmisaka         struct {
154*437bfbebSnyanmisaka             RK_U32 sw_vdpp_src_addr_y   : 32;
155*437bfbebSnyanmisaka         } reg24;         // 0x0060
156*437bfbebSnyanmisaka 
157*437bfbebSnyanmisaka         struct {
158*437bfbebSnyanmisaka             RK_U32 sw_vdpp_src_addr_uv  : 32;
159*437bfbebSnyanmisaka         } reg25;         // 0x0064
160*437bfbebSnyanmisaka 
161*437bfbebSnyanmisaka         struct {
162*437bfbebSnyanmisaka             RK_U32 sw_vdpp_dst_addr_y   : 32;
163*437bfbebSnyanmisaka         } reg26;         // 0x0068
164*437bfbebSnyanmisaka 
165*437bfbebSnyanmisaka         struct {
166*437bfbebSnyanmisaka             RK_U32 sw_vdpp_dst_addr_uv  : 32;
167*437bfbebSnyanmisaka         } reg27;         // 0x006C
168*437bfbebSnyanmisaka 
169*437bfbebSnyanmisaka     } common;            // offset: 0x1000
170*437bfbebSnyanmisaka     RK_U32 reg_common_28_31[4];
171*437bfbebSnyanmisaka 
172*437bfbebSnyanmisaka };
173*437bfbebSnyanmisaka 
174*437bfbebSnyanmisaka #endif
175