1*437bfbebSnyanmisaka /* 2*437bfbebSnyanmisaka * Copyright 2017 Rockchip Electronics Co. LTD 3*437bfbebSnyanmisaka * 4*437bfbebSnyanmisaka * Licensed under the Apache License, Version 2.0 (the "License"); 5*437bfbebSnyanmisaka * you may not use this file except in compliance with the License. 6*437bfbebSnyanmisaka * You may obtain a copy of the License at 7*437bfbebSnyanmisaka * 8*437bfbebSnyanmisaka * http://www.apache.org/licenses/LICENSE-2.0 9*437bfbebSnyanmisaka * 10*437bfbebSnyanmisaka * Unless required by applicable law or agreed to in writing, software 11*437bfbebSnyanmisaka * distributed under the License is distributed on an "AS IS" BASIS, 12*437bfbebSnyanmisaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*437bfbebSnyanmisaka * See the License for the specific language governing permissions and 14*437bfbebSnyanmisaka * limitations under the License. 15*437bfbebSnyanmisaka */ 16*437bfbebSnyanmisaka #ifndef __HAL_JPEGD_VDPU1_REG_H__ 17*437bfbebSnyanmisaka #define __HAL_JPEGD_VDPU1_REG_H__ 18*437bfbebSnyanmisaka 19*437bfbebSnyanmisaka #include "vcodec_service.h" 20*437bfbebSnyanmisaka 21*437bfbebSnyanmisaka #define JPEGD_REG_NUM (101) 22*437bfbebSnyanmisaka 23*437bfbebSnyanmisaka #define DEC_VDPU1_LITTLE_ENDIAN (1) 24*437bfbebSnyanmisaka #define DEC_VDPU1_BIG_ENDIAN (0) 25*437bfbebSnyanmisaka 26*437bfbebSnyanmisaka #define DEC_VDPU1_BUS_BURST_LENGTH_16 (16) 27*437bfbebSnyanmisaka 28*437bfbebSnyanmisaka #define DEC_VDPU1_SCMD_DISABLE (0) 29*437bfbebSnyanmisaka #define DEC_VDPU1_LATENCY_COMPENSATION (0) 30*437bfbebSnyanmisaka #define DEC_VDPU1_DATA_DISCARD_ENABLE (0) 31*437bfbebSnyanmisaka 32*437bfbebSnyanmisaka typedef struct { 33*437bfbebSnyanmisaka struct { 34*437bfbebSnyanmisaka RK_U32 sw_pp_e : 1; 35*437bfbebSnyanmisaka RK_U32 sw_pp_pipeline_e : 1; 36*437bfbebSnyanmisaka RK_U32 reserved3 : 2; 37*437bfbebSnyanmisaka RK_U32 sw_pp_irq_dis : 1; 38*437bfbebSnyanmisaka RK_U32 reserved2 : 3; 39*437bfbebSnyanmisaka RK_U32 sw_pp_irq : 1; 40*437bfbebSnyanmisaka RK_U32 reserved1 : 3; 41*437bfbebSnyanmisaka RK_U32 sw_pp_rdy_int : 1; 42*437bfbebSnyanmisaka RK_U32 sw_pp_bus_int : 1; 43*437bfbebSnyanmisaka RK_U32 reserved0 : 18; 44*437bfbebSnyanmisaka } reg60_interrupt; 45*437bfbebSnyanmisaka 46*437bfbebSnyanmisaka struct { 47*437bfbebSnyanmisaka RK_U32 sw_pp_max_burst : 5; 48*437bfbebSnyanmisaka RK_U32 sw_pp_out_swap32_e : 1; 49*437bfbebSnyanmisaka RK_U32 sw_pp_out_endian : 1; 50*437bfbebSnyanmisaka RK_U32 sw_pp_in_endian : 1; 51*437bfbebSnyanmisaka RK_U32 sw_pp_clk_gate_e : 1; 52*437bfbebSnyanmisaka RK_U32 sw_pp_data_disc_e : 1; 53*437bfbebSnyanmisaka RK_U32 sw_pp_in_swap32_e : 1; 54*437bfbebSnyanmisaka RK_U32 sw_pp_in_a1_endian : 1; 55*437bfbebSnyanmisaka RK_U32 sw_pp_in_a1_swap32 : 1; 56*437bfbebSnyanmisaka RK_U32 sw_pp_in_a2_endsel : 1; 57*437bfbebSnyanmisaka RK_U32 sw_pp_scmd_dis : 1; 58*437bfbebSnyanmisaka RK_U32 sw_pp_ahb_hlock_e : 1; 59*437bfbebSnyanmisaka RK_U32 sw_pp_axi_wr_id : 8; 60*437bfbebSnyanmisaka RK_U32 sw_pp_axi_rd_id : 8; 61*437bfbebSnyanmisaka } reg61_dev_conf; 62*437bfbebSnyanmisaka 63*437bfbebSnyanmisaka struct { 64*437bfbebSnyanmisaka RK_U32 sw_deint_edge_det : 15; 65*437bfbebSnyanmisaka RK_U32 sw_deint_blend_e : 1; 66*437bfbebSnyanmisaka RK_U32 sw_deint_threshold : 14; 67*437bfbebSnyanmisaka RK_U32 reserved0 : 1; 68*437bfbebSnyanmisaka RK_U32 sw_deint_e : 1; 69*437bfbebSnyanmisaka } reg62_deinterlace; 70*437bfbebSnyanmisaka 71*437bfbebSnyanmisaka RK_U32 reg63_pp_in_lu_base; 72*437bfbebSnyanmisaka RK_U32 reg64_pp_in_cb_base; 73*437bfbebSnyanmisaka RK_U32 reg65_pp_in_cr_base; 74*437bfbebSnyanmisaka RK_U32 reg66_pp_out_lu_base; 75*437bfbebSnyanmisaka RK_U32 reg67_pp_out_ch_base; 76*437bfbebSnyanmisaka 77*437bfbebSnyanmisaka struct { 78*437bfbebSnyanmisaka RK_U32 sw_contrast_off1 : 10; 79*437bfbebSnyanmisaka RK_U32 sw_contrast_off2 : 10; 80*437bfbebSnyanmisaka RK_U32 reserved0 : 4; 81*437bfbebSnyanmisaka RK_U32 sw_contrast_thr1 : 8; 82*437bfbebSnyanmisaka } reg68_contrast_adjust; 83*437bfbebSnyanmisaka 84*437bfbebSnyanmisaka struct { 85*437bfbebSnyanmisaka RK_U32 sw_contrast_thr2 : 8; 86*437bfbebSnyanmisaka RK_U32 sw_color_coeffa1 : 10; 87*437bfbebSnyanmisaka RK_U32 sw_color_coeffa2 : 10; 88*437bfbebSnyanmisaka RK_U32 sw_pp_out_cr_first : 1; 89*437bfbebSnyanmisaka RK_U32 sw_pp_out_start_ch : 1; 90*437bfbebSnyanmisaka RK_U32 sw_pp_in_cr_first : 1; 91*437bfbebSnyanmisaka RK_U32 sw_pp_in_start_ch : 1; 92*437bfbebSnyanmisaka } reg69; 93*437bfbebSnyanmisaka 94*437bfbebSnyanmisaka struct { 95*437bfbebSnyanmisaka RK_U32 sw_color_coeffb : 10; 96*437bfbebSnyanmisaka RK_U32 sw_color_coeffc : 10; 97*437bfbebSnyanmisaka RK_U32 sw_color_coeffd : 10; 98*437bfbebSnyanmisaka RK_U32 reserved0 : 2; 99*437bfbebSnyanmisaka } reg70_color_coeff_0; 100*437bfbebSnyanmisaka 101*437bfbebSnyanmisaka struct { 102*437bfbebSnyanmisaka RK_U32 sw_color_coeffe : 10; 103*437bfbebSnyanmisaka RK_U32 sw_color_coefff : 8; 104*437bfbebSnyanmisaka RK_U32 sw_rotation_mode : 3; 105*437bfbebSnyanmisaka RK_U32 sw_crop_startx : 9; 106*437bfbebSnyanmisaka RK_U32 reserved0 : 2; 107*437bfbebSnyanmisaka } reg71_color_coeff_1; 108*437bfbebSnyanmisaka 109*437bfbebSnyanmisaka struct { 110*437bfbebSnyanmisaka RK_U32 sw_pp_in_width : 9; 111*437bfbebSnyanmisaka RK_U32 sw_pp_in_height : 8; 112*437bfbebSnyanmisaka RK_U32 reserved1 : 1; 113*437bfbebSnyanmisaka RK_U32 sw_rangemap_coef_y : 5; 114*437bfbebSnyanmisaka RK_U32 reserved0 : 1; 115*437bfbebSnyanmisaka RK_U32 sw_crop_starty : 8; 116*437bfbebSnyanmisaka } reg72_crop; 117*437bfbebSnyanmisaka 118*437bfbebSnyanmisaka RK_U32 reg73_pp_bot_yin_base; 119*437bfbebSnyanmisaka RK_U32 reg74_pp_bot_cin_base; 120*437bfbebSnyanmisaka 121*437bfbebSnyanmisaka RK_U32 reg75_reg78[4]; 122*437bfbebSnyanmisaka 123*437bfbebSnyanmisaka struct { 124*437bfbebSnyanmisaka RK_U32 sw_scale_wratio : 18; 125*437bfbebSnyanmisaka RK_U32 sw_rgb_g_padd : 5; 126*437bfbebSnyanmisaka RK_U32 sw_rgb_r_padd : 5; 127*437bfbebSnyanmisaka RK_U32 sw_rgb_pix_in32 : 1; 128*437bfbebSnyanmisaka RK_U32 sw_ycbcr_range : 1; 129*437bfbebSnyanmisaka RK_U32 sw_rangemap_c_e : 1; 130*437bfbebSnyanmisaka RK_U32 sw_rangemap_y_e : 1; 131*437bfbebSnyanmisaka } reg79_scaling_0; 132*437bfbebSnyanmisaka 133*437bfbebSnyanmisaka struct { 134*437bfbebSnyanmisaka RK_U32 sw_scale_hratio : 18; 135*437bfbebSnyanmisaka RK_U32 sw_rgb_b_padd : 5; 136*437bfbebSnyanmisaka RK_U32 sw_ver_scale_mode : 2; 137*437bfbebSnyanmisaka RK_U32 sw_hor_scale_mode : 2; 138*437bfbebSnyanmisaka RK_U32 sw_pp_in_struct : 3; 139*437bfbebSnyanmisaka RK_U32 sw_pp_fast_scale_e : 1; 140*437bfbebSnyanmisaka RK_U32 reserved0 : 1; 141*437bfbebSnyanmisaka } reg80_scaling_1; 142*437bfbebSnyanmisaka 143*437bfbebSnyanmisaka struct { 144*437bfbebSnyanmisaka RK_U32 sw_wscale_invra : 16; 145*437bfbebSnyanmisaka RK_U32 sw_hscale_invra : 16; 146*437bfbebSnyanmisaka } reg81_scaling_2; 147*437bfbebSnyanmisaka 148*437bfbebSnyanmisaka RK_U32 reg82_r_mask; 149*437bfbebSnyanmisaka RK_U32 reg83_g_mask; 150*437bfbebSnyanmisaka RK_U32 reg84_b_mask; 151*437bfbebSnyanmisaka 152*437bfbebSnyanmisaka struct { 153*437bfbebSnyanmisaka RK_U32 sw_pp_crop8_d_e : 1; 154*437bfbebSnyanmisaka RK_U32 sw_pp_crop8_r_e : 1; 155*437bfbebSnyanmisaka RK_U32 sw_pp_out_swap16_e : 1; 156*437bfbebSnyanmisaka RK_U32 sw_pp_out_tiled_e : 1; 157*437bfbebSnyanmisaka RK_U32 sw_pp_out_width : 11; 158*437bfbebSnyanmisaka RK_U32 sw_pp_out_height : 11; 159*437bfbebSnyanmisaka RK_U32 sw_pp_out_format : 3; 160*437bfbebSnyanmisaka RK_U32 sw_pp_in_format : 3; 161*437bfbebSnyanmisaka } reg85_ctrl; 162*437bfbebSnyanmisaka 163*437bfbebSnyanmisaka struct { 164*437bfbebSnyanmisaka RK_U32 sw_mask1_startx : 11; 165*437bfbebSnyanmisaka RK_U32 sw_mask1_starty : 11; 166*437bfbebSnyanmisaka RK_U32 sw_mask1_ablend_e : 1; 167*437bfbebSnyanmisaka RK_U32 sw_rangemap_coef_c : 5; 168*437bfbebSnyanmisaka RK_U32 reserved0 : 1; 169*437bfbebSnyanmisaka RK_U32 sw_pp_in_format_es : 3; 170*437bfbebSnyanmisaka } reg86_mask_1; 171*437bfbebSnyanmisaka 172*437bfbebSnyanmisaka struct { 173*437bfbebSnyanmisaka RK_U32 sw_mask2_startx : 11; 174*437bfbebSnyanmisaka RK_U32 sw_mask2_starty : 11; 175*437bfbebSnyanmisaka RK_U32 sw_mask2_ablend_e : 1; 176*437bfbebSnyanmisaka RK_U32 reserved : 9; 177*437bfbebSnyanmisaka } reg87_mask_2; 178*437bfbebSnyanmisaka 179*437bfbebSnyanmisaka struct { 180*437bfbebSnyanmisaka RK_U32 sw_mask1_endx : 11; 181*437bfbebSnyanmisaka RK_U32 sw_mask1_endy : 11; 182*437bfbebSnyanmisaka RK_U32 sw_mask1_e : 1; 183*437bfbebSnyanmisaka RK_U32 sw_ext_orig_width : 9; 184*437bfbebSnyanmisaka } reg88_mask_1_size; 185*437bfbebSnyanmisaka 186*437bfbebSnyanmisaka struct { 187*437bfbebSnyanmisaka RK_U32 sw_mask2_endx : 11; 188*437bfbebSnyanmisaka RK_U32 sw_mask2_endy : 11; 189*437bfbebSnyanmisaka RK_U32 sw_mask2_e : 1; 190*437bfbebSnyanmisaka RK_U32 reserved0 : 9; 191*437bfbebSnyanmisaka } reg89_mask_2_size; 192*437bfbebSnyanmisaka 193*437bfbebSnyanmisaka struct { 194*437bfbebSnyanmisaka RK_U32 sw_down_cross : 11; 195*437bfbebSnyanmisaka RK_U32 reserved1 : 4; 196*437bfbebSnyanmisaka RK_U32 sw_up_cross : 11; 197*437bfbebSnyanmisaka RK_U32 sw_down_cross_e : 1; 198*437bfbebSnyanmisaka RK_U32 sw_up_cross_e : 1; 199*437bfbebSnyanmisaka RK_U32 sw_left_cross_e : 1; 200*437bfbebSnyanmisaka RK_U32 sw_right_cross_e : 1; 201*437bfbebSnyanmisaka RK_U32 reserved0 : 2; 202*437bfbebSnyanmisaka } reg90_pip_1; 203*437bfbebSnyanmisaka 204*437bfbebSnyanmisaka struct { 205*437bfbebSnyanmisaka RK_U32 sw_left_cross : 11; 206*437bfbebSnyanmisaka RK_U32 sw_right_cross : 11; 207*437bfbebSnyanmisaka RK_U32 sw_pp_tiled_mode : 2; 208*437bfbebSnyanmisaka RK_U32 sw_dither_select_b : 2; 209*437bfbebSnyanmisaka RK_U32 sw_dither_select_g : 2; 210*437bfbebSnyanmisaka RK_U32 sw_dither_select_r : 2; 211*437bfbebSnyanmisaka } reg91_pip_2; 212*437bfbebSnyanmisaka 213*437bfbebSnyanmisaka struct { 214*437bfbebSnyanmisaka RK_U32 sw_display_width : 12; 215*437bfbebSnyanmisaka RK_U32 reserved0 : 8; 216*437bfbebSnyanmisaka RK_U32 sw_crop_startx_ext : 3; 217*437bfbebSnyanmisaka RK_U32 sw_crop_starty_ext : 3; 218*437bfbebSnyanmisaka RK_U32 sw_pp_in_w_ext : 3; 219*437bfbebSnyanmisaka RK_U32 sw_pp_in_h_ext : 3; 220*437bfbebSnyanmisaka } reg92_display; 221*437bfbebSnyanmisaka 222*437bfbebSnyanmisaka RK_U32 reg93_ablend1_base; 223*437bfbebSnyanmisaka RK_U32 reg94_ablend2_base; 224*437bfbebSnyanmisaka RK_U32 reg95_ablend2_scanl; 225*437bfbebSnyanmisaka 226*437bfbebSnyanmisaka RK_U32 reg96_reg97[2]; 227*437bfbebSnyanmisaka 228*437bfbebSnyanmisaka struct { 229*437bfbebSnyanmisaka RK_U32 sw_pp_out_w_ext : 1; 230*437bfbebSnyanmisaka RK_U32 sw_pp_out_h_ext : 1; 231*437bfbebSnyanmisaka RK_U32 reserved : 30; 232*437bfbebSnyanmisaka } reg98_pp_out_ext; 233*437bfbebSnyanmisaka 234*437bfbebSnyanmisaka RK_U32 reg99_fuse; 235*437bfbebSnyanmisaka RK_U32 reg100_synthesis; 236*437bfbebSnyanmisaka } post_processor_reg; 237*437bfbebSnyanmisaka 238*437bfbebSnyanmisaka typedef struct { 239*437bfbebSnyanmisaka struct { 240*437bfbebSnyanmisaka RK_U32 build_version : 3; 241*437bfbebSnyanmisaka RK_U32 product_IDen : 1; 242*437bfbebSnyanmisaka RK_U32 minor_version : 8; 243*437bfbebSnyanmisaka RK_U32 major_version : 4; 244*437bfbebSnyanmisaka RK_U32 product_numer : 16; 245*437bfbebSnyanmisaka } reg0_id; 246*437bfbebSnyanmisaka 247*437bfbebSnyanmisaka struct { 248*437bfbebSnyanmisaka RK_U32 sw_dec_e : 1; 249*437bfbebSnyanmisaka RK_U32 reserved4 : 3; 250*437bfbebSnyanmisaka RK_U32 sw_dec_irq_dis : 1; 251*437bfbebSnyanmisaka RK_U32 reserved3 : 3; 252*437bfbebSnyanmisaka RK_U32 sw_dec_irq : 1; 253*437bfbebSnyanmisaka RK_U32 reserved2 : 3; 254*437bfbebSnyanmisaka RK_U32 sw_dec_rdy_int : 1; 255*437bfbebSnyanmisaka RK_U32 sw_dec_bus_int : 1; 256*437bfbebSnyanmisaka RK_U32 sw_dec_buffer_int : 1; 257*437bfbebSnyanmisaka RK_U32 sw_dec_aso_int : 1; 258*437bfbebSnyanmisaka RK_U32 sw_dec_error_int : 1; 259*437bfbebSnyanmisaka RK_U32 sw_dec_slice_int : 1; 260*437bfbebSnyanmisaka RK_U32 sw_dec_timeout : 1; 261*437bfbebSnyanmisaka RK_U32 reserved1 : 5; 262*437bfbebSnyanmisaka RK_U32 sw_dec_pic_inf : 1; 263*437bfbebSnyanmisaka RK_U32 reserved0 : 7; 264*437bfbebSnyanmisaka } reg1_interrupt; 265*437bfbebSnyanmisaka 266*437bfbebSnyanmisaka struct { 267*437bfbebSnyanmisaka RK_U32 sw_dec_max_burst : 5; 268*437bfbebSnyanmisaka RK_U32 sw_dec_scmd_dis : 1; 269*437bfbebSnyanmisaka RK_U32 sw_dec_adv_pre_dis : 1; 270*437bfbebSnyanmisaka RK_U32 sw_priority_mode : 1; /* Not used */ 271*437bfbebSnyanmisaka RK_U32 sw_dec_out_endian : 1; 272*437bfbebSnyanmisaka RK_U32 sw_dec_in_endian : 1; 273*437bfbebSnyanmisaka RK_U32 sw_dec_clk_gate_e : 1; 274*437bfbebSnyanmisaka RK_U32 sw_dec_latency : 6; 275*437bfbebSnyanmisaka RK_U32 sw_dec_out_tiled_e : 1; 276*437bfbebSnyanmisaka RK_U32 sw_dec_data_disc_e : 1; 277*437bfbebSnyanmisaka RK_U32 sw_dec_outswap32_e : 1; 278*437bfbebSnyanmisaka RK_U32 sw_dec_inswap32_e : 1; 279*437bfbebSnyanmisaka RK_U32 sw_dec_strendian_e : 1; 280*437bfbebSnyanmisaka RK_U32 sw_dec_strswap32_e : 1; 281*437bfbebSnyanmisaka RK_U32 sw_dec_timeout_e : 1; 282*437bfbebSnyanmisaka RK_U32 sw_dec_axi_rn_id : 8; 283*437bfbebSnyanmisaka } reg2_dec_ctrl; 284*437bfbebSnyanmisaka 285*437bfbebSnyanmisaka struct { 286*437bfbebSnyanmisaka RK_U32 sw_dec_axi_wr_id : 8; 287*437bfbebSnyanmisaka RK_U32 sw_dec_ahb_hlock_e : 1; /* Not used */ 288*437bfbebSnyanmisaka RK_U32 sw_picord_count_e : 1; 289*437bfbebSnyanmisaka RK_U32 sw_seq_mbaff_e : 1; 290*437bfbebSnyanmisaka RK_U32 sw_reftopfirst_e : 1; 291*437bfbebSnyanmisaka RK_U32 sw_write_mvs_e : 1; 292*437bfbebSnyanmisaka RK_U32 sw_pic_fixed_quant : 1; 293*437bfbebSnyanmisaka RK_U32 sw_filtering_dis : 1; 294*437bfbebSnyanmisaka RK_U32 sw_dec_out_dis : 1; 295*437bfbebSnyanmisaka RK_U32 sw_ref_topfield_e : 1; 296*437bfbebSnyanmisaka RK_U32 sw_sorenson_e : 1; 297*437bfbebSnyanmisaka RK_U32 sw_fwd_interlace_e : 1; 298*437bfbebSnyanmisaka RK_U32 sw_pic_topfield_e : 1; 299*437bfbebSnyanmisaka RK_U32 sw_pic_inter_e : 1; 300*437bfbebSnyanmisaka RK_U32 sw_pic_b_e : 1; 301*437bfbebSnyanmisaka RK_U32 sw_pic_fieldmode_e : 1; 302*437bfbebSnyanmisaka RK_U32 sw_pic_interlace_e : 1; 303*437bfbebSnyanmisaka RK_U32 sw_pjpeg_e : 1; 304*437bfbebSnyanmisaka RK_U32 sw_divx3_e : 1; /* Not used */ 305*437bfbebSnyanmisaka RK_U32 sw_skip_mode : 1; 306*437bfbebSnyanmisaka RK_U32 sw_rlc_mode_e : 1; 307*437bfbebSnyanmisaka RK_U32 sw_dec_mode : 4; 308*437bfbebSnyanmisaka } reg3; 309*437bfbebSnyanmisaka 310*437bfbebSnyanmisaka struct { 311*437bfbebSnyanmisaka RK_U32 sw_pic_mb_h_ext : 3; 312*437bfbebSnyanmisaka RK_U32 sw_pic_mb_w_ext : 3; 313*437bfbebSnyanmisaka RK_U32 sw_alt_scan_e : 1; 314*437bfbebSnyanmisaka RK_U32 sw_mb_height_off : 4; 315*437bfbebSnyanmisaka RK_U32 sw_pic_mb_height_p : 8; 316*437bfbebSnyanmisaka RK_U32 sw_mb_width_off : 4; 317*437bfbebSnyanmisaka RK_U32 sw_pic_mb_width : 9; 318*437bfbebSnyanmisaka } reg4; 319*437bfbebSnyanmisaka 320*437bfbebSnyanmisaka /* stream decoding table selects */ 321*437bfbebSnyanmisaka struct { 322*437bfbebSnyanmisaka RK_U32 sw_cb_dc_vlctable3 : 1; 323*437bfbebSnyanmisaka RK_U32 sw_cr_dc_vlctable3 : 1; 324*437bfbebSnyanmisaka RK_U32 sw_cb_dc_vlctable : 1; 325*437bfbebSnyanmisaka RK_U32 sw_cr_dc_vlctable : 1; 326*437bfbebSnyanmisaka RK_U32 sw_cb_ac_vlctable : 1; 327*437bfbebSnyanmisaka RK_U32 sw_cr_ac_vlctable : 1; 328*437bfbebSnyanmisaka RK_U32 sw_jpeg_stream_all : 1; 329*437bfbebSnyanmisaka RK_U32 sw_jpeg_filright_e : 1; 330*437bfbebSnyanmisaka RK_U32 sw_jpeg_mode : 3; 331*437bfbebSnyanmisaka RK_U32 sw_jpeg_qtables : 2; 332*437bfbebSnyanmisaka RK_U32 reserved0 : 12; 333*437bfbebSnyanmisaka RK_U32 sw_sync_marker_e : 1; 334*437bfbebSnyanmisaka RK_U32 sw_strm0_start_bit : 6; 335*437bfbebSnyanmisaka } reg5; 336*437bfbebSnyanmisaka 337*437bfbebSnyanmisaka struct { 338*437bfbebSnyanmisaka RK_U32 sw_stream_len : 24; 339*437bfbebSnyanmisaka RK_U32 sw_ch_8pix_ileav_e : 1; 340*437bfbebSnyanmisaka RK_U32 sw_init_qp : 6; 341*437bfbebSnyanmisaka RK_U32 sw_start_code_e : 1; 342*437bfbebSnyanmisaka } reg6_stream_info; 343*437bfbebSnyanmisaka 344*437bfbebSnyanmisaka struct { 345*437bfbebSnyanmisaka RK_U32 sw_pjpeg_se : 8; 346*437bfbebSnyanmisaka RK_U32 sw_pjpeg_ss : 8; 347*437bfbebSnyanmisaka RK_U32 sw_pjpeg_al : 4; 348*437bfbebSnyanmisaka RK_U32 sw_pjpeg_ah : 4; 349*437bfbebSnyanmisaka RK_U32 sw_pjpeg_hdiv8 : 1; 350*437bfbebSnyanmisaka RK_U32 sw_pjpeg_wdiv8 : 1; 351*437bfbebSnyanmisaka RK_U32 sw_pjpeg_fildown_e : 1; 352*437bfbebSnyanmisaka RK_U32 reserved0 : 5; 353*437bfbebSnyanmisaka } reg7; 354*437bfbebSnyanmisaka 355*437bfbebSnyanmisaka struct { 356*437bfbebSnyanmisaka RK_U32 sw_pjpeg_rest_freq : 16; 357*437bfbebSnyanmisaka RK_U32 reserved0 : 16; 358*437bfbebSnyanmisaka } reg8; 359*437bfbebSnyanmisaka 360*437bfbebSnyanmisaka /* Not used for JPEG */ 361*437bfbebSnyanmisaka struct { 362*437bfbebSnyanmisaka RK_U32 sw_stream1_len : 24; 363*437bfbebSnyanmisaka RK_U32 sw_coeffs_part_am : 4; 364*437bfbebSnyanmisaka RK_U32 reserved0 : 4; 365*437bfbebSnyanmisaka } reg9; 366*437bfbebSnyanmisaka 367*437bfbebSnyanmisaka /* Not used for JPEG */ 368*437bfbebSnyanmisaka RK_U32 reg10_segment_map_base; 369*437bfbebSnyanmisaka 370*437bfbebSnyanmisaka /* Not used for JPEG */ 371*437bfbebSnyanmisaka struct { 372*437bfbebSnyanmisaka RK_U32 sw_dct_start_bit_7 : 6; 373*437bfbebSnyanmisaka RK_U32 sw_dct_start_bit_6 : 6; 374*437bfbebSnyanmisaka RK_U32 sw_dct_start_bit_5 : 6; 375*437bfbebSnyanmisaka RK_U32 sw_dct_start_bit_4 : 6; 376*437bfbebSnyanmisaka RK_U32 sw_dct_start_bit_3 : 6; 377*437bfbebSnyanmisaka RK_U32 reserved0 : 2; 378*437bfbebSnyanmisaka } reg11; 379*437bfbebSnyanmisaka 380*437bfbebSnyanmisaka /* sw_rlc_vlc_base */ 381*437bfbebSnyanmisaka RK_U32 reg12_input_stream_base; 382*437bfbebSnyanmisaka /* sw_dec_out_base */ 383*437bfbebSnyanmisaka RK_U32 reg13_cur_pic_base; /* Decoder output base */ 384*437bfbebSnyanmisaka RK_U32 reg14_sw_jpg_ch_out_base; /* sw_ch_out_base */ 385*437bfbebSnyanmisaka 386*437bfbebSnyanmisaka struct { 387*437bfbebSnyanmisaka RK_U32 sw_jpeg_slice_h : 8; 388*437bfbebSnyanmisaka RK_U32 sw_roi_en : 1; 389*437bfbebSnyanmisaka RK_U32 sw_roi_decode : 1; 390*437bfbebSnyanmisaka RK_U32 sw_roi_out_sel : 2; 391*437bfbebSnyanmisaka RK_U32 sw_roi_distance : 4; 392*437bfbebSnyanmisaka RK_U32 sw_roi_sample_size : 2; 393*437bfbebSnyanmisaka RK_U32 sw_jpegroi_in_swap32 : 1; 394*437bfbebSnyanmisaka RK_U32 sw_jpegroi_in_endian : 1; 395*437bfbebSnyanmisaka RK_U32 sw_jpeg_height8_flag : 1; 396*437bfbebSnyanmisaka RK_U32 reserved0 : 11; 397*437bfbebSnyanmisaka } reg15; 398*437bfbebSnyanmisaka 399*437bfbebSnyanmisaka struct { 400*437bfbebSnyanmisaka RK_U32 sw_ac1_code1_cnt : 2; 401*437bfbebSnyanmisaka RK_U32 reserved3 : 1; 402*437bfbebSnyanmisaka RK_U32 sw_ac1_code2_cnt : 3; 403*437bfbebSnyanmisaka RK_U32 reserved2 : 1; 404*437bfbebSnyanmisaka RK_U32 sw_ac1_code3_cnt : 4; 405*437bfbebSnyanmisaka RK_U32 sw_ac1_code4_cnt : 5; 406*437bfbebSnyanmisaka RK_U32 sw_ac1_code5_cnt : 6; 407*437bfbebSnyanmisaka RK_U32 reserved1 : 2; 408*437bfbebSnyanmisaka RK_U32 sw_ac1_code6_cnt : 7; 409*437bfbebSnyanmisaka RK_U32 reserved0 : 1; 410*437bfbebSnyanmisaka } reg16; 411*437bfbebSnyanmisaka 412*437bfbebSnyanmisaka struct { 413*437bfbebSnyanmisaka RK_U32 sw_ac1_code7_cnt : 8; 414*437bfbebSnyanmisaka RK_U32 sw_ac1_code8_cnt : 8; 415*437bfbebSnyanmisaka RK_U32 sw_ac1_code9_cnt : 8; 416*437bfbebSnyanmisaka RK_U32 sw_ac1_code10_cnt : 8; 417*437bfbebSnyanmisaka } reg17; 418*437bfbebSnyanmisaka 419*437bfbebSnyanmisaka struct { 420*437bfbebSnyanmisaka RK_U32 sw_ac1_code11_cnt : 8; 421*437bfbebSnyanmisaka RK_U32 sw_ac1_code12_cnt : 8; 422*437bfbebSnyanmisaka RK_U32 sw_ac1_code13_cnt : 8; 423*437bfbebSnyanmisaka RK_U32 sw_ac1_code14_cnt : 8; 424*437bfbebSnyanmisaka } reg18; 425*437bfbebSnyanmisaka 426*437bfbebSnyanmisaka struct { 427*437bfbebSnyanmisaka RK_U32 sw_ac1_code15_cnt : 8; 428*437bfbebSnyanmisaka RK_U32 sw_ac1_code16_cnt : 8; 429*437bfbebSnyanmisaka RK_U32 sw_ac2_code1_cnt : 2; 430*437bfbebSnyanmisaka RK_U32 reserved1 : 1; 431*437bfbebSnyanmisaka RK_U32 sw_ac2_code2_cnt : 3; 432*437bfbebSnyanmisaka RK_U32 reserved0 : 1; 433*437bfbebSnyanmisaka RK_U32 sw_ac2_code3_cnt : 4; 434*437bfbebSnyanmisaka RK_U32 sw_ac2_code4_cnt : 5; 435*437bfbebSnyanmisaka } reg19; 436*437bfbebSnyanmisaka 437*437bfbebSnyanmisaka struct { 438*437bfbebSnyanmisaka RK_U32 sw_ac2_code5_cnt : 6; 439*437bfbebSnyanmisaka RK_U32 reserved1 : 2; 440*437bfbebSnyanmisaka RK_U32 sw_ac2_code6_cnt : 7; 441*437bfbebSnyanmisaka RK_U32 reserved0 : 1; 442*437bfbebSnyanmisaka RK_U32 sw_ac2_code7_cnt : 8; 443*437bfbebSnyanmisaka RK_U32 sw_ac2_code8_cnt : 8; 444*437bfbebSnyanmisaka } reg20; 445*437bfbebSnyanmisaka 446*437bfbebSnyanmisaka struct { 447*437bfbebSnyanmisaka RK_U32 sw_ac2_code9_cnt : 8; 448*437bfbebSnyanmisaka RK_U32 sw_ac2_code10_cnt : 8; 449*437bfbebSnyanmisaka RK_U32 sw_ac2_code11_cnt : 8; 450*437bfbebSnyanmisaka RK_U32 sw_ac2_code12_cnt : 8; 451*437bfbebSnyanmisaka } reg21; 452*437bfbebSnyanmisaka 453*437bfbebSnyanmisaka struct { 454*437bfbebSnyanmisaka RK_U32 sw_ac2_code13_cnt : 8; 455*437bfbebSnyanmisaka RK_U32 sw_ac2_code14_cnt : 8; 456*437bfbebSnyanmisaka RK_U32 sw_ac2_code15_cnt : 8; 457*437bfbebSnyanmisaka RK_U32 sw_ac2_code16_cnt : 8; 458*437bfbebSnyanmisaka } reg22; 459*437bfbebSnyanmisaka 460*437bfbebSnyanmisaka struct { 461*437bfbebSnyanmisaka RK_U32 sw_dc1_code1_cnt : 2; 462*437bfbebSnyanmisaka RK_U32 reserved1 : 2; 463*437bfbebSnyanmisaka RK_U32 sw_dc1_code2_cnt : 3; 464*437bfbebSnyanmisaka RK_U32 reserved0 : 1; 465*437bfbebSnyanmisaka RK_U32 sw_dc1_code3_cnt : 4; 466*437bfbebSnyanmisaka RK_U32 sw_dc1_code4_cnt : 4; 467*437bfbebSnyanmisaka RK_U32 sw_dc1_code5_cnt : 4; 468*437bfbebSnyanmisaka RK_U32 sw_dc1_code6_cnt : 4; 469*437bfbebSnyanmisaka RK_U32 sw_dc1_code7_cnt : 4; 470*437bfbebSnyanmisaka RK_U32 sw_dc1_code8_cnt : 4; 471*437bfbebSnyanmisaka } reg23; 472*437bfbebSnyanmisaka 473*437bfbebSnyanmisaka struct { 474*437bfbebSnyanmisaka RK_U32 sw_dc1_code9_cnt : 4; 475*437bfbebSnyanmisaka RK_U32 sw_dc1_code10_cnt : 4; 476*437bfbebSnyanmisaka RK_U32 sw_dc1_code11_cnt : 4; 477*437bfbebSnyanmisaka RK_U32 sw_dc1_code12_cnt : 4; 478*437bfbebSnyanmisaka RK_U32 sw_dc1_code13_cnt : 4; 479*437bfbebSnyanmisaka RK_U32 sw_dc1_code14_cnt : 4; 480*437bfbebSnyanmisaka RK_U32 sw_dc1_code15_cnt : 4; 481*437bfbebSnyanmisaka RK_U32 sw_dc1_code16_cnt : 4; 482*437bfbebSnyanmisaka } reg24; 483*437bfbebSnyanmisaka 484*437bfbebSnyanmisaka struct { 485*437bfbebSnyanmisaka RK_U32 sw_dc2_code1_cnt : 2; 486*437bfbebSnyanmisaka RK_U32 reserved1 : 2; 487*437bfbebSnyanmisaka RK_U32 sw_dc2_code2_cnt : 3; 488*437bfbebSnyanmisaka RK_U32 reserved0 : 1; 489*437bfbebSnyanmisaka RK_U32 sw_dc2_code3_cnt : 4; 490*437bfbebSnyanmisaka RK_U32 sw_dc2_code4_cnt : 4; 491*437bfbebSnyanmisaka RK_U32 sw_dc2_code5_cnt : 4; 492*437bfbebSnyanmisaka RK_U32 sw_dc2_code6_cnt : 4; 493*437bfbebSnyanmisaka RK_U32 sw_dc2_code7_cnt : 4; 494*437bfbebSnyanmisaka RK_U32 sw_dc2_code8_cnt : 4; 495*437bfbebSnyanmisaka } reg25; 496*437bfbebSnyanmisaka 497*437bfbebSnyanmisaka struct { 498*437bfbebSnyanmisaka RK_U32 sw_dc2_code9_cnt : 4; 499*437bfbebSnyanmisaka RK_U32 sw_dc2_code10_cnt : 4; 500*437bfbebSnyanmisaka RK_U32 sw_dc2_code11_cnt : 4; 501*437bfbebSnyanmisaka RK_U32 sw_dc2_code12_cnt : 4; 502*437bfbebSnyanmisaka RK_U32 sw_dc2_code13_cnt : 4; 503*437bfbebSnyanmisaka RK_U32 sw_dc2_code14_cnt : 4; 504*437bfbebSnyanmisaka RK_U32 sw_dc2_code15_cnt : 4; 505*437bfbebSnyanmisaka RK_U32 sw_dc2_code16_cnt : 4; 506*437bfbebSnyanmisaka } reg26; 507*437bfbebSnyanmisaka 508*437bfbebSnyanmisaka struct { 509*437bfbebSnyanmisaka RK_U32 sw_dc3_code1_cnt : 2; 510*437bfbebSnyanmisaka RK_U32 reserved1 : 2; 511*437bfbebSnyanmisaka RK_U32 sw_dc3_code2_cnt : 3; 512*437bfbebSnyanmisaka RK_U32 reserved0 : 1; 513*437bfbebSnyanmisaka RK_U32 sw_dc3_code3_cnt : 4; 514*437bfbebSnyanmisaka RK_U32 sw_dc3_code4_cnt : 4; 515*437bfbebSnyanmisaka RK_U32 sw_dc3_code5_cnt : 4; 516*437bfbebSnyanmisaka RK_U32 sw_dc3_code6_cnt : 4; 517*437bfbebSnyanmisaka RK_U32 sw_dc3_code7_cnt : 4; 518*437bfbebSnyanmisaka RK_U32 sw_dc3_code8_cnt : 4; 519*437bfbebSnyanmisaka } reg27; 520*437bfbebSnyanmisaka 521*437bfbebSnyanmisaka struct { 522*437bfbebSnyanmisaka RK_U32 sw_dc3_code9_cnt : 4; 523*437bfbebSnyanmisaka RK_U32 sw_dc3_code10_cnt : 4; 524*437bfbebSnyanmisaka RK_U32 sw_dc3_code11_cnt : 4; 525*437bfbebSnyanmisaka RK_U32 sw_dc3_code12_cnt : 4; 526*437bfbebSnyanmisaka RK_U32 sw_dc3_code13_cnt : 4; 527*437bfbebSnyanmisaka RK_U32 sw_dc3_code14_cnt : 4; 528*437bfbebSnyanmisaka RK_U32 sw_dc3_code15_cnt : 4; 529*437bfbebSnyanmisaka RK_U32 sw_dc3_code16_cnt : 4; 530*437bfbebSnyanmisaka } reg28; 531*437bfbebSnyanmisaka 532*437bfbebSnyanmisaka /* Not used for JPEG */ 533*437bfbebSnyanmisaka RK_U32 reg29_reg39[11]; /* reg29 - reg39 */ 534*437bfbebSnyanmisaka 535*437bfbebSnyanmisaka RK_U32 reg40_qtable_base; 536*437bfbebSnyanmisaka RK_U32 reg41_directmv_base; 537*437bfbebSnyanmisaka RK_U32 reg42_pjpeg_dccb_base; 538*437bfbebSnyanmisaka RK_U32 reg43_pjpeg_dccr_base; 539*437bfbebSnyanmisaka 540*437bfbebSnyanmisaka /* Not used for JPEG */ 541*437bfbebSnyanmisaka RK_U32 reg44_reg50[7]; /* reg44 - reg50 */ 542*437bfbebSnyanmisaka 543*437bfbebSnyanmisaka /* Not used for JPEG */ 544*437bfbebSnyanmisaka struct { 545*437bfbebSnyanmisaka RK_U32 sw_refbu_y_offset : 9; 546*437bfbebSnyanmisaka RK_U32 reserved0 : 3; 547*437bfbebSnyanmisaka RK_U32 sw_refbu_fparmod_e : 1; 548*437bfbebSnyanmisaka RK_U32 sw_refbu_eval_e : 1; 549*437bfbebSnyanmisaka RK_U32 sw_refbu_picid : 5; 550*437bfbebSnyanmisaka RK_U32 sw_refbu_thr : 12; 551*437bfbebSnyanmisaka RK_U32 sw_refbu_e : 1; 552*437bfbebSnyanmisaka } reg51_refpicbuf_ctrl; 553*437bfbebSnyanmisaka 554*437bfbebSnyanmisaka /* Not used for JPEG */ 555*437bfbebSnyanmisaka struct { 556*437bfbebSnyanmisaka RK_U32 sw_refbu_intra_sum : 16; 557*437bfbebSnyanmisaka RK_U32 sw_refbu_hit_sum : 16; 558*437bfbebSnyanmisaka } reg52_sum_inf; 559*437bfbebSnyanmisaka 560*437bfbebSnyanmisaka /* Not used for JPEG */ 561*437bfbebSnyanmisaka struct { 562*437bfbebSnyanmisaka RK_U32 sw_refbu_mv_sum : 22; 563*437bfbebSnyanmisaka RK_U32 reserved0 : 10; 564*437bfbebSnyanmisaka } reg53_sum_mv; 565*437bfbebSnyanmisaka 566*437bfbebSnyanmisaka /* Not used for JPEG */ 567*437bfbebSnyanmisaka struct { 568*437bfbebSnyanmisaka RK_U32 reserved0 : 17; 569*437bfbebSnyanmisaka RK_U32 sw_dec_tiled_l : 2; /* sw_priority_mode */ 570*437bfbebSnyanmisaka RK_U32 sw_dec_vp8snap_e : 1; 571*437bfbebSnyanmisaka RK_U32 sw_dec_mvc_prof : 2; 572*437bfbebSnyanmisaka RK_U32 sw_dec_avs_prof : 1; 573*437bfbebSnyanmisaka RK_U32 sw_dec_vp8_prof : 1; 574*437bfbebSnyanmisaka RK_U32 sw_dec_vp7_prof : 1; 575*437bfbebSnyanmisaka RK_U32 sw_dec_rtl_rom : 1; 576*437bfbebSnyanmisaka RK_U32 sw_dec_rv_prof : 2; 577*437bfbebSnyanmisaka RK_U32 sw_ref_buff2_exist : 1; 578*437bfbebSnyanmisaka RK_U32 reserved : 1; 579*437bfbebSnyanmisaka RK_U32 sw_dec_refbu_ilace : 1; 580*437bfbebSnyanmisaka RK_U32 sw_dec_jpeg_exten : 1; 581*437bfbebSnyanmisaka } reg54_synthesis_cfg; 582*437bfbebSnyanmisaka 583*437bfbebSnyanmisaka /* Not used for JPEG */ 584*437bfbebSnyanmisaka struct { 585*437bfbebSnyanmisaka RK_U32 sw_apf_threshold : 14; 586*437bfbebSnyanmisaka RK_U32 sw_refbu2_picid : 5; 587*437bfbebSnyanmisaka RK_U32 sw_refbu2_thr : 12; 588*437bfbebSnyanmisaka RK_U32 sw_refbu2_buf_e : 1; 589*437bfbebSnyanmisaka } reg55; 590*437bfbebSnyanmisaka 591*437bfbebSnyanmisaka /* Not used for JPEG */ 592*437bfbebSnyanmisaka struct { 593*437bfbebSnyanmisaka RK_U32 sw_refbu_bot_sum : 16; 594*437bfbebSnyanmisaka RK_U32 sw_refbu_top_sum : 16; 595*437bfbebSnyanmisaka } reg56_sum_of_partitions; 596*437bfbebSnyanmisaka 597*437bfbebSnyanmisaka RK_U32 reg57_decoder_fuse; /* Not used */ 598*437bfbebSnyanmisaka RK_U32 reg58_debug; 599*437bfbebSnyanmisaka 600*437bfbebSnyanmisaka /* Not used for JPEG */ 601*437bfbebSnyanmisaka RK_U32 reg59_addit_ch_st_base; 602*437bfbebSnyanmisaka post_processor_reg post; 603*437bfbebSnyanmisaka } JpegRegSet; 604*437bfbebSnyanmisaka 605*437bfbebSnyanmisaka typedef struct JpegdIocRegInfo_t { 606*437bfbebSnyanmisaka JpegRegSet regs; 607*437bfbebSnyanmisaka 608*437bfbebSnyanmisaka /* vepu_reg_num - vdpu_reg_num */ 609*437bfbebSnyanmisaka RK_U32 regs_diff[164 - JPEGD_REG_NUM]; 610*437bfbebSnyanmisaka RK_U8 extra_info[EXTRA_INFO_SIZE]; 611*437bfbebSnyanmisaka } JpegdIocRegInfo; 612*437bfbebSnyanmisaka 613*437bfbebSnyanmisaka #endif 614