1 /* 2 * Copyright 2015 Rockchip Electronics Co. LTD 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef __HAL_H264D_VDPU2_REG_TBL_H__ 18 #define __HAL_H264D_VDPU2_REG_TBL_H__ 19 20 #include "rk_type.h" 21 22 /* Number registers for the decoder */ 23 #define DEC_VDPU_REGISTERS 159 24 25 typedef struct { 26 RK_U32 sw00_49[50]; 27 struct { 28 RK_U32 dec_tiled_msb : 1; 29 RK_U32 adtion_latency : 6; 30 RK_U32 dec_fixed_quant : 1; 31 RK_U32 dblk_flt_dis : 1; 32 RK_U32 skip_sel : 1; 33 RK_U32 dec_ascmd0_dis : 1; 34 RK_U32 adv_pref_dis : 1; 35 RK_U32 dec_tiled_lsb : 1; 36 RK_U32 refbuf_thrd : 12; 37 RK_U32 refbuf_pid : 5; 38 RK_U32 reverse0 : 2; 39 } sw50; 40 struct { 41 RK_U32 stream_len : 24; 42 RK_U32 stream_len_ext : 1; 43 RK_U32 qp_init_val : 6; 44 RK_U32 reverse0 : 1; 45 } sw51; 46 struct { 47 RK_U32 ydim_mbst : 8; 48 RK_U32 xdim_mbst : 9; 49 RK_U32 adv_pref_thrd : 14; 50 RK_U32 reverse0 : 1; 51 } sw52; 52 struct { 53 RK_U32 dec_fmt_sel : 4; 54 RK_U32 reverse0 : 28; 55 } sw53; 56 struct { 57 RK_U32 dec_in_endian : 1; 58 RK_U32 dec_out_endian : 1; 59 RK_U32 dec_in_wordsp : 1; 60 RK_U32 dec_out_wordsp : 1; 61 RK_U32 dec_strm_wordsp : 1; 62 RK_U32 dec_strendian_e : 1; 63 RK_U32 reverse0 : 26; 64 } sw54; 65 struct { 66 RK_U32 dec_irq : 1; 67 RK_U32 dec_irq_dis : 1; 68 RK_U32 reverse0 : 2; 69 RK_U32 dec_rdy_sts : 1; 70 RK_U32 pp_bus_sts : 1; 71 RK_U32 buf_emt_sts : 1; 72 RK_U32 reverse1 : 1; 73 RK_U32 aso_det_sts : 1; 74 RK_U32 slice_det_sts : 1; 75 RK_U32 bslice_det_sts : 1; 76 RK_U32 reverse2 : 1; 77 RK_U32 error_det_sts : 1; 78 RK_U32 timeout_det_sts : 1; 79 RK_U32 reverse3 : 18; 80 } sw55; 81 struct { 82 RK_U32 dec_axi_id_rd : 8; 83 RK_U32 dec_axi_id_wr : 8; 84 RK_U32 dec_max_burlen : 5; 85 RK_U32 bus_pos_sel : 1; 86 RK_U32 dec_data_discd_en : 1; 87 RK_U32 axi_sel : 1; 88 RK_U32 reverse0 : 8; 89 } sw56; 90 struct { 91 RK_U32 dec_st_work : 1; 92 RK_U32 refpic_buf2_en : 1; 93 RK_U32 dec_wr_extmen_dis : 1; 94 RK_U32 reverse0 : 1; 95 RK_U32 dec_clkgate_en : 1; 96 RK_U32 timeout_sts_en : 1; 97 RK_U32 rd_cnt_tab_en : 1; 98 RK_U32 sequ_mbaff_en : 1; 99 RK_U32 first_reftop_en : 1; 100 RK_U32 reftop_en : 1; 101 RK_U32 dmmv_wr_en : 1; 102 RK_U32 sorspa_en : 1; 103 RK_U32 fwd_refpic_mode_sel : 1; 104 RK_U32 pic_decfield_sel : 1; 105 RK_U32 pic_type_sel0 : 1; 106 RK_U32 pic_type_sel1 : 1; 107 RK_U32 curpic_stru_sel : 1; 108 RK_U32 curpic_code_sel : 1; 109 RK_U32 prog_jpeg_en : 1; 110 RK_U32 divx3_en : 1; 111 RK_U32 rlc_mode_en : 1; 112 RK_U32 addit_ch_fmt_wen : 1; 113 RK_U32 st_code_exit : 1; 114 RK_U32 reverse1 : 2; 115 RK_U32 inter_dblspeed : 1; 116 RK_U32 intra_dblspeed : 1; 117 RK_U32 intra_dbl3t : 1; 118 RK_U32 pref_sigchan : 1; 119 RK_U32 cache_en : 1; 120 RK_U32 reverse2 : 1; 121 RK_U32 dec_timeout_mode : 1; 122 } sw57; 123 struct { 124 RK_U32 soft_rst : 1; 125 RK_U32 reverse0 : 31; 126 } sw58; 127 struct { 128 RK_U32 reverse0 : 2; 129 RK_U32 pflt_set0_tap2 : 10; 130 RK_U32 pflt_set0_tap1 : 10; 131 RK_U32 pflt_set0_tap0 : 10; 132 } sw59; 133 struct { 134 RK_U32 addit_ch_st_adr : 32; 135 } sw60; 136 struct { 137 RK_U32 qtable_st_adr : 32; 138 } sw61; 139 struct { 140 RK_U32 dmmv_st_adr : 32; 141 } sw62; 142 struct { 143 RK_U32 dec_out_st_adr : 32; 144 } sw63; 145 struct { 146 RK_U32 rlc_vlc_st_adr : 32; 147 } sw64; 148 struct { 149 RK_U32 refbuf_y_offset : 9; 150 RK_U32 reserve0 : 3; 151 RK_U32 refbuf_fildpar_mode_e : 1; 152 RK_U32 refbuf_idcal_e : 1; 153 RK_U32 refbuf_picid : 5; 154 RK_U32 refbuf_thr_level : 12; 155 RK_U32 refbuf_e : 1; 156 } sw65; 157 RK_U32 sw66; 158 RK_U32 sw67; 159 struct { 160 RK_U32 refbuf_sum_bot : 16; 161 RK_U32 refbuf_sum_top : 16; 162 } sw68; 163 struct { 164 RK_U32 luma_sum_intra : 16; 165 RK_U32 refbuf_sum_hit : 16; 166 } sw69; 167 struct { 168 RK_U32 ycomp_mv_sum : 22; 169 RK_U32 reserve0 : 10; 170 } sw70; 171 RK_U32 sw71; 172 RK_U32 sw72; 173 RK_U32 sw73; 174 struct { 175 RK_U32 init_reflist_pf4 : 5; 176 RK_U32 init_reflist_pf5 : 5; 177 RK_U32 init_reflist_pf6 : 5; 178 RK_U32 init_reflist_pf7 : 5; 179 RK_U32 init_reflist_pf8 : 5; 180 RK_U32 init_reflist_pf9 : 5; 181 RK_U32 reverse0 : 2; 182 } sw74; 183 struct { 184 RK_U32 init_reflist_pf10 : 5; 185 RK_U32 init_reflist_pf11 : 5; 186 RK_U32 init_reflist_pf12 : 5; 187 RK_U32 init_reflist_pf13 : 5; 188 RK_U32 init_reflist_pf14 : 5; 189 RK_U32 init_reflist_pf15 : 5; 190 RK_U32 reverse0 : 2; 191 } sw75; 192 struct { 193 RK_U32 num_ref_idx0 : 16; 194 RK_U32 num_ref_idx1 : 16; 195 } sw76; 196 struct { 197 RK_U32 num_ref_idx2 : 16; 198 RK_U32 num_ref_idx3 : 16; 199 } sw77; 200 struct { 201 RK_U32 num_ref_idx4 : 16; 202 RK_U32 num_ref_idx5 : 16; 203 } sw78; 204 struct { 205 RK_U32 num_ref_idx6 : 16; 206 RK_U32 num_ref_idx7 : 16; 207 } sw79; 208 struct { 209 RK_U32 num_ref_idx8 : 16; 210 RK_U32 num_ref_idx9 : 16; 211 } sw80; 212 struct { 213 RK_U32 num_ref_idx10 : 16; 214 RK_U32 num_ref_idx11 : 16; 215 } sw81; 216 struct { 217 RK_U32 num_ref_idx12 : 16; 218 RK_U32 num_ref_idx13 : 16; 219 } sw82; 220 struct { 221 RK_U32 num_ref_idx14 : 16; 222 RK_U32 num_ref_idx15 : 16; 223 } sw83; 224 union { 225 RK_U32 ref0_st_addr; 226 struct { 227 RK_U32 ref0_closer_sel : 1; 228 RK_U32 ref0_field_en : 1; 229 RK_U32 reverse0 : 30; 230 }; 231 } sw84; 232 union { 233 RK_U32 ref1_st_addr; 234 struct { 235 RK_U32 ref1_closer_sel : 1; 236 RK_U32 ref1_field_en : 1; 237 RK_U32 reverse0 : 30; 238 }; 239 } sw85; 240 union { 241 RK_U32 ref2_st_addr; 242 struct { 243 RK_U32 ref2_closer_sel : 1; 244 RK_U32 ref2_field_en : 1; 245 RK_U32 reverse0 : 30; 246 }; 247 } sw86; 248 union { 249 RK_U32 ref3_st_addr; 250 struct { 251 RK_U32 ref3_closer_sel : 1; 252 RK_U32 ref3_field_en : 1; 253 RK_U32 reverse0 : 30; 254 }; 255 } sw87; 256 union { 257 RK_U32 ref4_st_addr; 258 struct { 259 RK_U32 ref4_closer_sel : 1; 260 RK_U32 ref4_field_en : 1; 261 RK_U32 reverse0 : 30; 262 }; 263 } sw88; 264 union { 265 RK_U32 ref5_st_addr; 266 struct { 267 RK_U32 ref5_closer_sel : 1; 268 RK_U32 ref5_field_en : 1; 269 RK_U32 reverse0 : 30; 270 }; 271 } sw89; 272 union { 273 RK_U32 ref6_st_addr; 274 struct { 275 RK_U32 ref6_closer_sel : 1; 276 RK_U32 ref6_field_en : 1; 277 RK_U32 reverse0 : 30; 278 }; 279 } sw90; 280 union { 281 RK_U32 ref7_st_addr; 282 struct { 283 RK_U32 ref7_closer_sel : 1; 284 RK_U32 ref7_field_en : 1; 285 RK_U32 reverse0 : 30; 286 }; 287 } sw91; 288 union { 289 RK_U32 ref8_st_addr; 290 struct { 291 RK_U32 ref8_closer_sel : 1; 292 RK_U32 ref8_field_en : 1; 293 RK_U32 reverse0 : 30; 294 }; 295 } sw92; 296 union { 297 RK_U32 ref9_st_addr; 298 struct { 299 RK_U32 ref9_closer_sel : 1; 300 RK_U32 ref9_field_en : 1; 301 RK_U32 reverse0 : 30; 302 }; 303 } sw93; 304 union { 305 RK_U32 ref10_st_addr; 306 struct { 307 RK_U32 ref10_closer_sel : 1; 308 RK_U32 ref10_field_en : 1; 309 RK_U32 reverse0 : 30; 310 }; 311 } sw94; 312 union { 313 RK_U32 ref11_st_addr; 314 struct { 315 RK_U32 ref11_closer_sel : 1; 316 RK_U32 ref11_field_en : 1; 317 RK_U32 reverse0 : 30; 318 }; 319 } sw95; 320 union { 321 RK_U32 ref12_st_addr; 322 struct { 323 RK_U32 ref12_closer_sel : 1; 324 RK_U32 ref12_field_en : 1; 325 RK_U32 reverse0 : 30; 326 }; 327 } sw96; 328 union { 329 RK_U32 ref13_st_addr; 330 struct { 331 RK_U32 ref13_closer_sel : 1; 332 RK_U32 ref13_field_en : 1; 333 RK_U32 reverse0 : 30; 334 }; 335 } sw97; 336 union { 337 RK_U32 ref14_st_addr; 338 struct { 339 RK_U32 ref14_closer_sel : 1; 340 RK_U32 ref14_field_en : 1; 341 RK_U32 reverse0 : 30; 342 }; 343 } sw98; 344 union { 345 RK_U32 ref15_st_addr; 346 struct { 347 RK_U32 ref15_closer_sel : 1; 348 RK_U32 ref15_field_en : 1; 349 RK_U32 reverse0 : 30; 350 }; 351 } sw99; 352 struct { 353 RK_U32 init_reflist_df0 : 5; 354 RK_U32 init_reflist_df1 : 5; 355 RK_U32 init_reflist_df2 : 5; 356 RK_U32 init_reflist_df3 : 5; 357 RK_U32 init_reflist_df4 : 5; 358 RK_U32 init_reflist_df5 : 5; 359 RK_U32 reverse0 : 2; 360 } sw100; 361 struct { 362 RK_U32 init_reflist_df6 : 5; 363 RK_U32 init_reflist_df7 : 5; 364 RK_U32 init_reflist_df8 : 5; 365 RK_U32 init_reflist_df9 : 5; 366 RK_U32 init_reflist_df10 : 5; 367 RK_U32 init_reflist_df11 : 5; 368 RK_U32 reverse0 : 2; 369 } sw101; 370 struct { 371 RK_U32 init_reflist_df12 : 5; 372 RK_U32 init_reflist_df13 : 5; 373 RK_U32 init_reflist_df14 : 5; 374 RK_U32 init_reflist_df15 : 5; 375 RK_U32 reverse0 : 12; 376 } sw102; 377 struct { 378 RK_U32 init_reflist_db0 : 5; 379 RK_U32 init_reflist_db1 : 5; 380 RK_U32 init_reflist_db2 : 5; 381 RK_U32 init_reflist_db3 : 5; 382 RK_U32 init_reflist_db4 : 5; 383 RK_U32 init_reflist_db5 : 5; 384 RK_U32 reverse0 : 2; 385 } sw103; 386 struct { 387 RK_U32 init_reflist_db6 : 5; 388 RK_U32 init_reflist_db7 : 5; 389 RK_U32 init_reflist_db8 : 5; 390 RK_U32 init_reflist_db9 : 5; 391 RK_U32 init_reflist_db10 : 5; 392 RK_U32 init_reflist_db11 : 5; 393 RK_U32 reverse0 : 2; 394 } sw104; 395 struct { 396 RK_U32 init_reflist_db12 : 5; 397 RK_U32 init_reflist_db13 : 5; 398 RK_U32 init_reflist_db14 : 5; 399 RK_U32 init_reflist_db15 : 5; 400 RK_U32 reverse0 : 12; 401 } sw105; 402 struct { 403 RK_U32 init_reflist_pf0 : 5; 404 RK_U32 init_reflist_pf1 : 5; 405 RK_U32 init_reflist_pf2 : 5; 406 RK_U32 init_reflist_pf3 : 5; 407 RK_U32 reverse0 : 12; 408 } sw106; 409 struct { 410 RK_U32 refpic_term_flag : 32; 411 } sw107; 412 struct { 413 RK_U32 refpic_valid_flag : 32; 414 } sw108; 415 struct { 416 RK_U32 strm_start_bit : 6; 417 RK_U32 reverse0 : 26; 418 } sw109; 419 struct { 420 RK_U32 pic_mb_w : 9; 421 RK_U32 pic_mb_h : 8; 422 RK_U32 flt_offset_cb_qp : 5; 423 RK_U32 flt_offset_cr_qp : 5; 424 RK_U32 reverse0 : 5; 425 } sw110; 426 struct { 427 RK_U32 max_refnum : 5; 428 RK_U32 reverse0 : 11; 429 RK_U32 wp_bslice_sel : 2; 430 RK_U32 reverse1 : 14; 431 } sw111; 432 struct { 433 RK_U32 curfrm_num : 16; 434 RK_U32 cur_frm_len : 5; 435 RK_U32 reverse0 : 9; 436 RK_U32 rpcp_flag : 1; 437 RK_U32 dblk_ctrl_flag : 1; 438 } sw112; 439 struct { 440 RK_U32 idr_pic_id : 16; 441 RK_U32 refpic_mk_len : 11; 442 RK_U32 reverse0 : 5; 443 } sw113; 444 struct { 445 RK_U32 poc_field_len : 8; 446 RK_U32 reverse0 : 6; 447 RK_U32 max_refidx0 : 5; 448 RK_U32 max_refidx1 : 5; 449 RK_U32 pps_id : 8; 450 } sw114; 451 struct { 452 RK_U32 fieldpic_flag_exist : 1; 453 RK_U32 scl_matrix_en : 1; 454 RK_U32 tranf_8x8_flag_en : 1; 455 RK_U32 const_intra_en : 1; 456 RK_U32 weight_pred_en : 1; 457 RK_U32 cabac_en : 1; 458 RK_U32 monochr_en : 1; 459 RK_U32 dlmv_method_en : 1; 460 RK_U32 idr_pic_flag : 1; 461 RK_U32 reverse0 : 23; 462 } sw115; 463 RK_U32 sw116_158[43]; 464 } H264dVdpuRegs_t; 465 466 #endif /*__HAL_H264D_VDPU_REG_TBL_H__*/ 467