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