1*43ecec16SMauro Carvalho Chehab /* SPDX-License-Identifier: GPL-2.0-only */ 2*43ecec16SMauro Carvalho Chehab /* 3*43ecec16SMauro Carvalho Chehab * drivers/media/platform/samsung/s5p-mfc/s5p_mfc_opr.h 4*43ecec16SMauro Carvalho Chehab * 5*43ecec16SMauro Carvalho Chehab * Header file for Samsung MFC (Multi Function Codec - FIMV) driver 6*43ecec16SMauro Carvalho Chehab * Contains declarations of hw related functions. 7*43ecec16SMauro Carvalho Chehab * 8*43ecec16SMauro Carvalho Chehab * Kamil Debski, Copyright (C) 2012 Samsung Electronics Co., Ltd. 9*43ecec16SMauro Carvalho Chehab * http://www.samsung.com/ 10*43ecec16SMauro Carvalho Chehab */ 11*43ecec16SMauro Carvalho Chehab 12*43ecec16SMauro Carvalho Chehab #ifndef S5P_MFC_OPR_H_ 13*43ecec16SMauro Carvalho Chehab #define S5P_MFC_OPR_H_ 14*43ecec16SMauro Carvalho Chehab 15*43ecec16SMauro Carvalho Chehab #include "s5p_mfc_common.h" 16*43ecec16SMauro Carvalho Chehab 17*43ecec16SMauro Carvalho Chehab struct s5p_mfc_regs { 18*43ecec16SMauro Carvalho Chehab 19*43ecec16SMauro Carvalho Chehab /* codec common registers */ 20*43ecec16SMauro Carvalho Chehab void __iomem *risc_on; 21*43ecec16SMauro Carvalho Chehab void __iomem *risc2host_int; 22*43ecec16SMauro Carvalho Chehab void __iomem *host2risc_int; 23*43ecec16SMauro Carvalho Chehab void __iomem *risc_base_address; 24*43ecec16SMauro Carvalho Chehab void __iomem *mfc_reset; 25*43ecec16SMauro Carvalho Chehab void __iomem *host2risc_command; 26*43ecec16SMauro Carvalho Chehab void __iomem *risc2host_command; 27*43ecec16SMauro Carvalho Chehab void __iomem *mfc_bus_reset_ctrl; 28*43ecec16SMauro Carvalho Chehab void __iomem *firmware_version; 29*43ecec16SMauro Carvalho Chehab void __iomem *instance_id; 30*43ecec16SMauro Carvalho Chehab void __iomem *codec_type; 31*43ecec16SMauro Carvalho Chehab void __iomem *context_mem_addr; 32*43ecec16SMauro Carvalho Chehab void __iomem *context_mem_size; 33*43ecec16SMauro Carvalho Chehab void __iomem *pixel_format; 34*43ecec16SMauro Carvalho Chehab void __iomem *metadata_enable; 35*43ecec16SMauro Carvalho Chehab void __iomem *mfc_version; 36*43ecec16SMauro Carvalho Chehab void __iomem *dbg_info_enable; 37*43ecec16SMauro Carvalho Chehab void __iomem *dbg_buffer_addr; 38*43ecec16SMauro Carvalho Chehab void __iomem *dbg_buffer_size; 39*43ecec16SMauro Carvalho Chehab void __iomem *hed_control; 40*43ecec16SMauro Carvalho Chehab void __iomem *mfc_timeout_value; 41*43ecec16SMauro Carvalho Chehab void __iomem *hed_shared_mem_addr; 42*43ecec16SMauro Carvalho Chehab void __iomem *dis_shared_mem_addr;/* only v7 */ 43*43ecec16SMauro Carvalho Chehab void __iomem *ret_instance_id; 44*43ecec16SMauro Carvalho Chehab void __iomem *error_code; 45*43ecec16SMauro Carvalho Chehab void __iomem *dbg_buffer_output_size; 46*43ecec16SMauro Carvalho Chehab void __iomem *metadata_status; 47*43ecec16SMauro Carvalho Chehab void __iomem *metadata_addr_mb_info; 48*43ecec16SMauro Carvalho Chehab void __iomem *metadata_size_mb_info; 49*43ecec16SMauro Carvalho Chehab void __iomem *dbg_info_stage_counter; 50*43ecec16SMauro Carvalho Chehab 51*43ecec16SMauro Carvalho Chehab /* decoder registers */ 52*43ecec16SMauro Carvalho Chehab void __iomem *d_crc_ctrl; 53*43ecec16SMauro Carvalho Chehab void __iomem *d_dec_options; 54*43ecec16SMauro Carvalho Chehab void __iomem *d_display_delay; 55*43ecec16SMauro Carvalho Chehab void __iomem *d_set_frame_width; 56*43ecec16SMauro Carvalho Chehab void __iomem *d_set_frame_height; 57*43ecec16SMauro Carvalho Chehab void __iomem *d_sei_enable; 58*43ecec16SMauro Carvalho Chehab void __iomem *d_min_num_dpb; 59*43ecec16SMauro Carvalho Chehab void __iomem *d_min_first_plane_dpb_size; 60*43ecec16SMauro Carvalho Chehab void __iomem *d_min_second_plane_dpb_size; 61*43ecec16SMauro Carvalho Chehab void __iomem *d_min_third_plane_dpb_size;/* only v8 */ 62*43ecec16SMauro Carvalho Chehab void __iomem *d_min_num_mv; 63*43ecec16SMauro Carvalho Chehab void __iomem *d_mvc_num_views; 64*43ecec16SMauro Carvalho Chehab void __iomem *d_min_num_dis;/* only v7 */ 65*43ecec16SMauro Carvalho Chehab void __iomem *d_min_first_dis_size;/* only v7 */ 66*43ecec16SMauro Carvalho Chehab void __iomem *d_min_second_dis_size;/* only v7 */ 67*43ecec16SMauro Carvalho Chehab void __iomem *d_min_third_dis_size;/* only v7 */ 68*43ecec16SMauro Carvalho Chehab void __iomem *d_post_filter_luma_dpb0;/* v7 and v8 */ 69*43ecec16SMauro Carvalho Chehab void __iomem *d_post_filter_luma_dpb1;/* v7 and v8 */ 70*43ecec16SMauro Carvalho Chehab void __iomem *d_post_filter_luma_dpb2;/* only v7 */ 71*43ecec16SMauro Carvalho Chehab void __iomem *d_post_filter_chroma_dpb0;/* v7 and v8 */ 72*43ecec16SMauro Carvalho Chehab void __iomem *d_post_filter_chroma_dpb1;/* v7 and v8 */ 73*43ecec16SMauro Carvalho Chehab void __iomem *d_post_filter_chroma_dpb2;/* only v7 */ 74*43ecec16SMauro Carvalho Chehab void __iomem *d_num_dpb; 75*43ecec16SMauro Carvalho Chehab void __iomem *d_num_mv; 76*43ecec16SMauro Carvalho Chehab void __iomem *d_init_buffer_options; 77*43ecec16SMauro Carvalho Chehab void __iomem *d_first_plane_dpb_stride_size;/* only v8 */ 78*43ecec16SMauro Carvalho Chehab void __iomem *d_second_plane_dpb_stride_size;/* only v8 */ 79*43ecec16SMauro Carvalho Chehab void __iomem *d_third_plane_dpb_stride_size;/* only v8 */ 80*43ecec16SMauro Carvalho Chehab void __iomem *d_first_plane_dpb_size; 81*43ecec16SMauro Carvalho Chehab void __iomem *d_second_plane_dpb_size; 82*43ecec16SMauro Carvalho Chehab void __iomem *d_third_plane_dpb_size;/* only v8 */ 83*43ecec16SMauro Carvalho Chehab void __iomem *d_mv_buffer_size; 84*43ecec16SMauro Carvalho Chehab void __iomem *d_first_plane_dpb; 85*43ecec16SMauro Carvalho Chehab void __iomem *d_second_plane_dpb; 86*43ecec16SMauro Carvalho Chehab void __iomem *d_third_plane_dpb; 87*43ecec16SMauro Carvalho Chehab void __iomem *d_mv_buffer; 88*43ecec16SMauro Carvalho Chehab void __iomem *d_scratch_buffer_addr; 89*43ecec16SMauro Carvalho Chehab void __iomem *d_scratch_buffer_size; 90*43ecec16SMauro Carvalho Chehab void __iomem *d_metadata_buffer_addr; 91*43ecec16SMauro Carvalho Chehab void __iomem *d_metadata_buffer_size; 92*43ecec16SMauro Carvalho Chehab void __iomem *d_nal_start_options;/* v7 and v8 */ 93*43ecec16SMauro Carvalho Chehab void __iomem *d_cpb_buffer_addr; 94*43ecec16SMauro Carvalho Chehab void __iomem *d_cpb_buffer_size; 95*43ecec16SMauro Carvalho Chehab void __iomem *d_available_dpb_flag_upper; 96*43ecec16SMauro Carvalho Chehab void __iomem *d_available_dpb_flag_lower; 97*43ecec16SMauro Carvalho Chehab void __iomem *d_cpb_buffer_offset; 98*43ecec16SMauro Carvalho Chehab void __iomem *d_slice_if_enable; 99*43ecec16SMauro Carvalho Chehab void __iomem *d_picture_tag; 100*43ecec16SMauro Carvalho Chehab void __iomem *d_stream_data_size; 101*43ecec16SMauro Carvalho Chehab void __iomem *d_dynamic_dpb_flag_upper;/* v7 and v8 */ 102*43ecec16SMauro Carvalho Chehab void __iomem *d_dynamic_dpb_flag_lower;/* v7 and v8 */ 103*43ecec16SMauro Carvalho Chehab void __iomem *d_display_frame_width; 104*43ecec16SMauro Carvalho Chehab void __iomem *d_display_frame_height; 105*43ecec16SMauro Carvalho Chehab void __iomem *d_display_status; 106*43ecec16SMauro Carvalho Chehab void __iomem *d_display_first_plane_addr; 107*43ecec16SMauro Carvalho Chehab void __iomem *d_display_second_plane_addr; 108*43ecec16SMauro Carvalho Chehab void __iomem *d_display_third_plane_addr;/* only v8 */ 109*43ecec16SMauro Carvalho Chehab void __iomem *d_display_frame_type; 110*43ecec16SMauro Carvalho Chehab void __iomem *d_display_crop_info1; 111*43ecec16SMauro Carvalho Chehab void __iomem *d_display_crop_info2; 112*43ecec16SMauro Carvalho Chehab void __iomem *d_display_picture_profile; 113*43ecec16SMauro Carvalho Chehab void __iomem *d_display_luma_crc;/* v7 and v8 */ 114*43ecec16SMauro Carvalho Chehab void __iomem *d_display_chroma0_crc;/* v7 and v8 */ 115*43ecec16SMauro Carvalho Chehab void __iomem *d_display_chroma1_crc;/* only v8 */ 116*43ecec16SMauro Carvalho Chehab void __iomem *d_display_luma_crc_top;/* only v6 */ 117*43ecec16SMauro Carvalho Chehab void __iomem *d_display_chroma_crc_top;/* only v6 */ 118*43ecec16SMauro Carvalho Chehab void __iomem *d_display_luma_crc_bot;/* only v6 */ 119*43ecec16SMauro Carvalho Chehab void __iomem *d_display_chroma_crc_bot;/* only v6 */ 120*43ecec16SMauro Carvalho Chehab void __iomem *d_display_aspect_ratio; 121*43ecec16SMauro Carvalho Chehab void __iomem *d_display_extended_ar; 122*43ecec16SMauro Carvalho Chehab void __iomem *d_decoded_frame_width; 123*43ecec16SMauro Carvalho Chehab void __iomem *d_decoded_frame_height; 124*43ecec16SMauro Carvalho Chehab void __iomem *d_decoded_status; 125*43ecec16SMauro Carvalho Chehab void __iomem *d_decoded_first_plane_addr; 126*43ecec16SMauro Carvalho Chehab void __iomem *d_decoded_second_plane_addr; 127*43ecec16SMauro Carvalho Chehab void __iomem *d_decoded_third_plane_addr;/* only v8 */ 128*43ecec16SMauro Carvalho Chehab void __iomem *d_decoded_frame_type; 129*43ecec16SMauro Carvalho Chehab void __iomem *d_decoded_crop_info1; 130*43ecec16SMauro Carvalho Chehab void __iomem *d_decoded_crop_info2; 131*43ecec16SMauro Carvalho Chehab void __iomem *d_decoded_picture_profile; 132*43ecec16SMauro Carvalho Chehab void __iomem *d_decoded_nal_size; 133*43ecec16SMauro Carvalho Chehab void __iomem *d_decoded_luma_crc; 134*43ecec16SMauro Carvalho Chehab void __iomem *d_decoded_chroma0_crc; 135*43ecec16SMauro Carvalho Chehab void __iomem *d_decoded_chroma1_crc;/* only v8 */ 136*43ecec16SMauro Carvalho Chehab void __iomem *d_ret_picture_tag_top; 137*43ecec16SMauro Carvalho Chehab void __iomem *d_ret_picture_tag_bot; 138*43ecec16SMauro Carvalho Chehab void __iomem *d_ret_picture_time_top; 139*43ecec16SMauro Carvalho Chehab void __iomem *d_ret_picture_time_bot; 140*43ecec16SMauro Carvalho Chehab void __iomem *d_chroma_format; 141*43ecec16SMauro Carvalho Chehab void __iomem *d_vc1_info;/* v7 and v8 */ 142*43ecec16SMauro Carvalho Chehab void __iomem *d_mpeg4_info; 143*43ecec16SMauro Carvalho Chehab void __iomem *d_h264_info; 144*43ecec16SMauro Carvalho Chehab void __iomem *d_metadata_addr_concealed_mb; 145*43ecec16SMauro Carvalho Chehab void __iomem *d_metadata_size_concealed_mb; 146*43ecec16SMauro Carvalho Chehab void __iomem *d_metadata_addr_vc1_param; 147*43ecec16SMauro Carvalho Chehab void __iomem *d_metadata_size_vc1_param; 148*43ecec16SMauro Carvalho Chehab void __iomem *d_metadata_addr_sei_nal; 149*43ecec16SMauro Carvalho Chehab void __iomem *d_metadata_size_sei_nal; 150*43ecec16SMauro Carvalho Chehab void __iomem *d_metadata_addr_vui; 151*43ecec16SMauro Carvalho Chehab void __iomem *d_metadata_size_vui; 152*43ecec16SMauro Carvalho Chehab void __iomem *d_metadata_addr_mvcvui;/* v7 and v8 */ 153*43ecec16SMauro Carvalho Chehab void __iomem *d_metadata_size_mvcvui;/* v7 and v8 */ 154*43ecec16SMauro Carvalho Chehab void __iomem *d_mvc_view_id; 155*43ecec16SMauro Carvalho Chehab void __iomem *d_frame_pack_sei_avail; 156*43ecec16SMauro Carvalho Chehab void __iomem *d_frame_pack_arrgment_id; 157*43ecec16SMauro Carvalho Chehab void __iomem *d_frame_pack_sei_info; 158*43ecec16SMauro Carvalho Chehab void __iomem *d_frame_pack_grid_pos; 159*43ecec16SMauro Carvalho Chehab void __iomem *d_display_recovery_sei_info;/* v7 and v8 */ 160*43ecec16SMauro Carvalho Chehab void __iomem *d_decoded_recovery_sei_info;/* v7 and v8 */ 161*43ecec16SMauro Carvalho Chehab void __iomem *d_display_first_addr;/* only v7 */ 162*43ecec16SMauro Carvalho Chehab void __iomem *d_display_second_addr;/* only v7 */ 163*43ecec16SMauro Carvalho Chehab void __iomem *d_display_third_addr;/* only v7 */ 164*43ecec16SMauro Carvalho Chehab void __iomem *d_decoded_first_addr;/* only v7 */ 165*43ecec16SMauro Carvalho Chehab void __iomem *d_decoded_second_addr;/* only v7 */ 166*43ecec16SMauro Carvalho Chehab void __iomem *d_decoded_third_addr;/* only v7 */ 167*43ecec16SMauro Carvalho Chehab void __iomem *d_used_dpb_flag_upper;/* v7 and v8 */ 168*43ecec16SMauro Carvalho Chehab void __iomem *d_used_dpb_flag_lower;/* v7 and v8 */ 169*43ecec16SMauro Carvalho Chehab void __iomem *d_min_scratch_buffer_size; /* v10 */ 170*43ecec16SMauro Carvalho Chehab void __iomem *d_static_buffer_addr; /* v10 */ 171*43ecec16SMauro Carvalho Chehab void __iomem *d_static_buffer_size; /* v10 */ 172*43ecec16SMauro Carvalho Chehab 173*43ecec16SMauro Carvalho Chehab /* encoder registers */ 174*43ecec16SMauro Carvalho Chehab void __iomem *e_frame_width; 175*43ecec16SMauro Carvalho Chehab void __iomem *e_frame_height; 176*43ecec16SMauro Carvalho Chehab void __iomem *e_cropped_frame_width; 177*43ecec16SMauro Carvalho Chehab void __iomem *e_cropped_frame_height; 178*43ecec16SMauro Carvalho Chehab void __iomem *e_frame_crop_offset; 179*43ecec16SMauro Carvalho Chehab void __iomem *e_enc_options; 180*43ecec16SMauro Carvalho Chehab void __iomem *e_picture_profile; 181*43ecec16SMauro Carvalho Chehab void __iomem *e_vbv_buffer_size; 182*43ecec16SMauro Carvalho Chehab void __iomem *e_vbv_init_delay; 183*43ecec16SMauro Carvalho Chehab void __iomem *e_fixed_picture_qp; 184*43ecec16SMauro Carvalho Chehab void __iomem *e_rc_config; 185*43ecec16SMauro Carvalho Chehab void __iomem *e_rc_qp_bound; 186*43ecec16SMauro Carvalho Chehab void __iomem *e_rc_qp_bound_pb;/* v7 and v8 */ 187*43ecec16SMauro Carvalho Chehab void __iomem *e_rc_mode; 188*43ecec16SMauro Carvalho Chehab void __iomem *e_mb_rc_config; 189*43ecec16SMauro Carvalho Chehab void __iomem *e_padding_ctrl; 190*43ecec16SMauro Carvalho Chehab void __iomem *e_air_threshold; 191*43ecec16SMauro Carvalho Chehab void __iomem *e_mv_hor_range; 192*43ecec16SMauro Carvalho Chehab void __iomem *e_mv_ver_range; 193*43ecec16SMauro Carvalho Chehab void __iomem *e_num_dpb; 194*43ecec16SMauro Carvalho Chehab void __iomem *e_luma_dpb; 195*43ecec16SMauro Carvalho Chehab void __iomem *e_chroma_dpb; 196*43ecec16SMauro Carvalho Chehab void __iomem *e_me_buffer; 197*43ecec16SMauro Carvalho Chehab void __iomem *e_scratch_buffer_addr; 198*43ecec16SMauro Carvalho Chehab void __iomem *e_scratch_buffer_size; 199*43ecec16SMauro Carvalho Chehab void __iomem *e_tmv_buffer0; 200*43ecec16SMauro Carvalho Chehab void __iomem *e_tmv_buffer1; 201*43ecec16SMauro Carvalho Chehab void __iomem *e_ir_buffer_addr;/* v7 and v8 */ 202*43ecec16SMauro Carvalho Chehab void __iomem *e_source_first_plane_addr; 203*43ecec16SMauro Carvalho Chehab void __iomem *e_source_second_plane_addr; 204*43ecec16SMauro Carvalho Chehab void __iomem *e_source_third_plane_addr;/* v7 and v8 */ 205*43ecec16SMauro Carvalho Chehab void __iomem *e_source_first_plane_stride;/* v7 and v8 */ 206*43ecec16SMauro Carvalho Chehab void __iomem *e_source_second_plane_stride;/* v7 and v8 */ 207*43ecec16SMauro Carvalho Chehab void __iomem *e_source_third_plane_stride;/* v7 and v8 */ 208*43ecec16SMauro Carvalho Chehab void __iomem *e_stream_buffer_addr; 209*43ecec16SMauro Carvalho Chehab void __iomem *e_stream_buffer_size; 210*43ecec16SMauro Carvalho Chehab void __iomem *e_roi_buffer_addr; 211*43ecec16SMauro Carvalho Chehab void __iomem *e_param_change; 212*43ecec16SMauro Carvalho Chehab void __iomem *e_ir_size; 213*43ecec16SMauro Carvalho Chehab void __iomem *e_gop_config; 214*43ecec16SMauro Carvalho Chehab void __iomem *e_mslice_mode; 215*43ecec16SMauro Carvalho Chehab void __iomem *e_mslice_size_mb; 216*43ecec16SMauro Carvalho Chehab void __iomem *e_mslice_size_bits; 217*43ecec16SMauro Carvalho Chehab void __iomem *e_frame_insertion; 218*43ecec16SMauro Carvalho Chehab void __iomem *e_rc_frame_rate; 219*43ecec16SMauro Carvalho Chehab void __iomem *e_rc_bit_rate; 220*43ecec16SMauro Carvalho Chehab void __iomem *e_rc_roi_ctrl; 221*43ecec16SMauro Carvalho Chehab void __iomem *e_picture_tag; 222*43ecec16SMauro Carvalho Chehab void __iomem *e_bit_count_enable; 223*43ecec16SMauro Carvalho Chehab void __iomem *e_max_bit_count; 224*43ecec16SMauro Carvalho Chehab void __iomem *e_min_bit_count; 225*43ecec16SMauro Carvalho Chehab void __iomem *e_metadata_buffer_addr; 226*43ecec16SMauro Carvalho Chehab void __iomem *e_metadata_buffer_size; 227*43ecec16SMauro Carvalho Chehab void __iomem *e_encoded_source_first_plane_addr; 228*43ecec16SMauro Carvalho Chehab void __iomem *e_encoded_source_second_plane_addr; 229*43ecec16SMauro Carvalho Chehab void __iomem *e_encoded_source_third_plane_addr;/* v7 and v8 */ 230*43ecec16SMauro Carvalho Chehab void __iomem *e_stream_size; 231*43ecec16SMauro Carvalho Chehab void __iomem *e_slice_type; 232*43ecec16SMauro Carvalho Chehab void __iomem *e_picture_count; 233*43ecec16SMauro Carvalho Chehab void __iomem *e_ret_picture_tag; 234*43ecec16SMauro Carvalho Chehab void __iomem *e_stream_buffer_write_pointer; /* only v6 */ 235*43ecec16SMauro Carvalho Chehab void __iomem *e_recon_luma_dpb_addr; 236*43ecec16SMauro Carvalho Chehab void __iomem *e_recon_chroma_dpb_addr; 237*43ecec16SMauro Carvalho Chehab void __iomem *e_metadata_addr_enc_slice; 238*43ecec16SMauro Carvalho Chehab void __iomem *e_metadata_size_enc_slice; 239*43ecec16SMauro Carvalho Chehab void __iomem *e_mpeg4_options; 240*43ecec16SMauro Carvalho Chehab void __iomem *e_mpeg4_hec_period; 241*43ecec16SMauro Carvalho Chehab void __iomem *e_aspect_ratio; 242*43ecec16SMauro Carvalho Chehab void __iomem *e_extended_sar; 243*43ecec16SMauro Carvalho Chehab void __iomem *e_h264_options; 244*43ecec16SMauro Carvalho Chehab void __iomem *e_h264_options_2;/* v7 and v8 */ 245*43ecec16SMauro Carvalho Chehab void __iomem *e_h264_lf_alpha_offset; 246*43ecec16SMauro Carvalho Chehab void __iomem *e_h264_lf_beta_offset; 247*43ecec16SMauro Carvalho Chehab void __iomem *e_h264_i_period; 248*43ecec16SMauro Carvalho Chehab void __iomem *e_h264_fmo_slice_grp_map_type; 249*43ecec16SMauro Carvalho Chehab void __iomem *e_h264_fmo_num_slice_grp_minus1; 250*43ecec16SMauro Carvalho Chehab void __iomem *e_h264_fmo_slice_grp_change_dir; 251*43ecec16SMauro Carvalho Chehab void __iomem *e_h264_fmo_slice_grp_change_rate_minus1; 252*43ecec16SMauro Carvalho Chehab void __iomem *e_h264_fmo_run_length_minus1_0; 253*43ecec16SMauro Carvalho Chehab void __iomem *e_h264_aso_slice_order_0; 254*43ecec16SMauro Carvalho Chehab void __iomem *e_h264_chroma_qp_offset; 255*43ecec16SMauro Carvalho Chehab void __iomem *e_h264_num_t_layer; 256*43ecec16SMauro Carvalho Chehab void __iomem *e_h264_hierarchical_qp_layer0; 257*43ecec16SMauro Carvalho Chehab void __iomem *e_h264_frame_packing_sei_info; 258*43ecec16SMauro Carvalho Chehab void __iomem *e_h264_nal_control;/* v7 and v8 */ 259*43ecec16SMauro Carvalho Chehab void __iomem *e_mvc_frame_qp_view1; 260*43ecec16SMauro Carvalho Chehab void __iomem *e_mvc_rc_bit_rate_view1; 261*43ecec16SMauro Carvalho Chehab void __iomem *e_mvc_rc_qbound_view1; 262*43ecec16SMauro Carvalho Chehab void __iomem *e_mvc_rc_mode_view1; 263*43ecec16SMauro Carvalho Chehab void __iomem *e_mvc_inter_view_prediction_on; 264*43ecec16SMauro Carvalho Chehab void __iomem *e_vp8_options;/* v7 and v8 */ 265*43ecec16SMauro Carvalho Chehab void __iomem *e_vp8_filter_options;/* v7 and v8 */ 266*43ecec16SMauro Carvalho Chehab void __iomem *e_vp8_golden_frame_option;/* v7 and v8 */ 267*43ecec16SMauro Carvalho Chehab void __iomem *e_vp8_num_t_layer;/* v7 and v8 */ 268*43ecec16SMauro Carvalho Chehab void __iomem *e_vp8_hierarchical_qp_layer0;/* v7 and v8 */ 269*43ecec16SMauro Carvalho Chehab void __iomem *e_vp8_hierarchical_qp_layer1;/* v7 and v8 */ 270*43ecec16SMauro Carvalho Chehab void __iomem *e_vp8_hierarchical_qp_layer2;/* v7 and v8 */ 271*43ecec16SMauro Carvalho Chehab void __iomem *e_min_scratch_buffer_size; /* v10 */ 272*43ecec16SMauro Carvalho Chehab void __iomem *e_num_t_layer; /* v10 */ 273*43ecec16SMauro Carvalho Chehab void __iomem *e_hier_qp_layer0; /* v10 */ 274*43ecec16SMauro Carvalho Chehab void __iomem *e_hier_bit_rate_layer0; /* v10 */ 275*43ecec16SMauro Carvalho Chehab void __iomem *e_hevc_options; /* v10 */ 276*43ecec16SMauro Carvalho Chehab void __iomem *e_hevc_refresh_period; /* v10 */ 277*43ecec16SMauro Carvalho Chehab void __iomem *e_hevc_lf_beta_offset_div2; /* v10 */ 278*43ecec16SMauro Carvalho Chehab void __iomem *e_hevc_lf_tc_offset_div2; /* v10 */ 279*43ecec16SMauro Carvalho Chehab void __iomem *e_hevc_nal_control; /* v10 */ 280*43ecec16SMauro Carvalho Chehab }; 281*43ecec16SMauro Carvalho Chehab 282*43ecec16SMauro Carvalho Chehab struct s5p_mfc_hw_ops { 283*43ecec16SMauro Carvalho Chehab int (*alloc_dec_temp_buffers)(struct s5p_mfc_ctx *ctx); 284*43ecec16SMauro Carvalho Chehab void (*release_dec_desc_buffer)(struct s5p_mfc_ctx *ctx); 285*43ecec16SMauro Carvalho Chehab int (*alloc_codec_buffers)(struct s5p_mfc_ctx *ctx); 286*43ecec16SMauro Carvalho Chehab void (*release_codec_buffers)(struct s5p_mfc_ctx *ctx); 287*43ecec16SMauro Carvalho Chehab int (*alloc_instance_buffer)(struct s5p_mfc_ctx *ctx); 288*43ecec16SMauro Carvalho Chehab void (*release_instance_buffer)(struct s5p_mfc_ctx *ctx); 289*43ecec16SMauro Carvalho Chehab int (*alloc_dev_context_buffer)(struct s5p_mfc_dev *dev); 290*43ecec16SMauro Carvalho Chehab void (*release_dev_context_buffer)(struct s5p_mfc_dev *dev); 291*43ecec16SMauro Carvalho Chehab void (*dec_calc_dpb_size)(struct s5p_mfc_ctx *ctx); 292*43ecec16SMauro Carvalho Chehab void (*enc_calc_src_size)(struct s5p_mfc_ctx *ctx); 293*43ecec16SMauro Carvalho Chehab int (*set_enc_stream_buffer)(struct s5p_mfc_ctx *ctx, 294*43ecec16SMauro Carvalho Chehab unsigned long addr, unsigned int size); 295*43ecec16SMauro Carvalho Chehab void (*set_enc_frame_buffer)(struct s5p_mfc_ctx *ctx, 296*43ecec16SMauro Carvalho Chehab unsigned long y_addr, unsigned long c_addr); 297*43ecec16SMauro Carvalho Chehab void (*get_enc_frame_buffer)(struct s5p_mfc_ctx *ctx, 298*43ecec16SMauro Carvalho Chehab unsigned long *y_addr, unsigned long *c_addr); 299*43ecec16SMauro Carvalho Chehab void (*try_run)(struct s5p_mfc_dev *dev); 300*43ecec16SMauro Carvalho Chehab void (*clear_int_flags)(struct s5p_mfc_dev *dev); 301*43ecec16SMauro Carvalho Chehab int (*get_dspl_y_adr)(struct s5p_mfc_dev *dev); 302*43ecec16SMauro Carvalho Chehab int (*get_dec_y_adr)(struct s5p_mfc_dev *dev); 303*43ecec16SMauro Carvalho Chehab int (*get_dspl_status)(struct s5p_mfc_dev *dev); 304*43ecec16SMauro Carvalho Chehab int (*get_dec_status)(struct s5p_mfc_dev *dev); 305*43ecec16SMauro Carvalho Chehab int (*get_dec_frame_type)(struct s5p_mfc_dev *dev); 306*43ecec16SMauro Carvalho Chehab int (*get_disp_frame_type)(struct s5p_mfc_ctx *ctx); 307*43ecec16SMauro Carvalho Chehab int (*get_consumed_stream)(struct s5p_mfc_dev *dev); 308*43ecec16SMauro Carvalho Chehab int (*get_int_reason)(struct s5p_mfc_dev *dev); 309*43ecec16SMauro Carvalho Chehab int (*get_int_err)(struct s5p_mfc_dev *dev); 310*43ecec16SMauro Carvalho Chehab int (*err_dec)(unsigned int err); 311*43ecec16SMauro Carvalho Chehab int (*get_img_width)(struct s5p_mfc_dev *dev); 312*43ecec16SMauro Carvalho Chehab int (*get_img_height)(struct s5p_mfc_dev *dev); 313*43ecec16SMauro Carvalho Chehab int (*get_dpb_count)(struct s5p_mfc_dev *dev); 314*43ecec16SMauro Carvalho Chehab int (*get_mv_count)(struct s5p_mfc_dev *dev); 315*43ecec16SMauro Carvalho Chehab int (*get_inst_no)(struct s5p_mfc_dev *dev); 316*43ecec16SMauro Carvalho Chehab int (*get_enc_strm_size)(struct s5p_mfc_dev *dev); 317*43ecec16SMauro Carvalho Chehab int (*get_enc_slice_type)(struct s5p_mfc_dev *dev); 318*43ecec16SMauro Carvalho Chehab int (*get_enc_dpb_count)(struct s5p_mfc_dev *dev); 319*43ecec16SMauro Carvalho Chehab unsigned int (*get_pic_type_top)(struct s5p_mfc_ctx *ctx); 320*43ecec16SMauro Carvalho Chehab unsigned int (*get_pic_type_bot)(struct s5p_mfc_ctx *ctx); 321*43ecec16SMauro Carvalho Chehab unsigned int (*get_crop_info_h)(struct s5p_mfc_ctx *ctx); 322*43ecec16SMauro Carvalho Chehab unsigned int (*get_crop_info_v)(struct s5p_mfc_ctx *ctx); 323*43ecec16SMauro Carvalho Chehab int (*get_min_scratch_buf_size)(struct s5p_mfc_dev *dev); 324*43ecec16SMauro Carvalho Chehab int (*get_e_min_scratch_buf_size)(struct s5p_mfc_dev *dev); 325*43ecec16SMauro Carvalho Chehab }; 326*43ecec16SMauro Carvalho Chehab 327*43ecec16SMauro Carvalho Chehab void s5p_mfc_init_hw_ops(struct s5p_mfc_dev *dev); 328*43ecec16SMauro Carvalho Chehab void s5p_mfc_init_regs(struct s5p_mfc_dev *dev); 329*43ecec16SMauro Carvalho Chehab int s5p_mfc_alloc_priv_buf(struct s5p_mfc_dev *dev, unsigned int mem_ctx, 330*43ecec16SMauro Carvalho Chehab struct s5p_mfc_priv_buf *b); 331*43ecec16SMauro Carvalho Chehab void s5p_mfc_release_priv_buf(struct s5p_mfc_dev *dev, 332*43ecec16SMauro Carvalho Chehab struct s5p_mfc_priv_buf *b); 333*43ecec16SMauro Carvalho Chehab int s5p_mfc_alloc_generic_buf(struct s5p_mfc_dev *dev, unsigned int mem_ctx, 334*43ecec16SMauro Carvalho Chehab struct s5p_mfc_priv_buf *b); 335*43ecec16SMauro Carvalho Chehab void s5p_mfc_release_generic_buf(struct s5p_mfc_dev *dev, 336*43ecec16SMauro Carvalho Chehab struct s5p_mfc_priv_buf *b); 337*43ecec16SMauro Carvalho Chehab 338*43ecec16SMauro Carvalho Chehab 339*43ecec16SMauro Carvalho Chehab #endif /* S5P_MFC_OPR_H_ */ 340