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