1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21#ifndef __ATOMISP_CMD_H__
22#define __ATOMISP_CMD_H__
23
24#include "../../include/linux/atomisp.h"
25#include <linux/interrupt.h>
26#include <linux/videodev2.h>
27
28#include <media/v4l2-subdev.h>
29
30#include "atomisp_internal.h"
31
32#include "ia_css_types.h"
33#include "ia_css.h"
34
35struct atomisp_device;
36struct ia_css_frame;
37
38#define MSI_ENABLE_BIT 16
39#define INTR_DISABLE_BIT 10
40#define BUS_MASTER_ENABLE 2
41#define MEMORY_SPACE_ENABLE 1
42#define INTR_IER 24
43#define INTR_IIR 16
44
45
46#define RUNMODE_MASK (ATOMISP_RUN_MODE_VIDEO | ATOMISP_RUN_MODE_STILL_CAPTURE \
47 | ATOMISP_RUN_MODE_PREVIEW)
48
49
50extern int atomisp_punit_hpll_freq;
51
52
53void dump_sp_dmem(struct atomisp_device *isp, unsigned int addr,
54 unsigned int size);
55struct camera_mipi_info *atomisp_to_sensor_mipi_info(struct v4l2_subdev *sd);
56struct atomisp_video_pipe *atomisp_to_video_pipe(struct video_device *dev);
57struct atomisp_acc_pipe *atomisp_to_acc_pipe(struct video_device *dev);
58int atomisp_reset(struct atomisp_device *isp);
59void atomisp_flush_bufs_and_wakeup(struct atomisp_sub_device *asd);
60void atomisp_clear_css_buffer_counters(struct atomisp_sub_device *asd);
61
62bool atomisp_buffers_queued(struct atomisp_sub_device *asd);
63
64bool atomisp_buffers_queued_pipe(struct atomisp_video_pipe *pipe);
65
66
67void atomisp_msi_irq_init(struct atomisp_device *isp);
68void atomisp_msi_irq_uninit(struct atomisp_device *isp);
69void atomisp_wdt_work(struct work_struct *work);
70void atomisp_wdt(struct timer_list *t);
71void atomisp_setup_flash(struct atomisp_sub_device *asd);
72irqreturn_t atomisp_isr(int irq, void *dev);
73irqreturn_t atomisp_isr_thread(int irq, void *isp_ptr);
74const struct atomisp_format_bridge *get_atomisp_format_bridge_from_mbus(
75 u32 mbus_code);
76bool atomisp_is_mbuscode_raw(uint32_t code);
77void atomisp_delayed_init_work(struct work_struct *work);
78
79
80bool atomisp_is_viewfinder_support(struct atomisp_device *isp);
81
82
83
84
85
86
87
88int atomisp_set_sensor_runmode(struct atomisp_sub_device *asd,
89 struct atomisp_s_runmode *runmode);
90
91
92
93
94int atomisp_gdc_cac(struct atomisp_sub_device *asd, int flag,
95 __s32 *value);
96
97
98int atomisp_low_light(struct atomisp_sub_device *asd, int flag,
99 __s32 *value);
100
101
102
103
104
105int atomisp_xnr(struct atomisp_sub_device *asd, int flag, int *arg);
106
107int atomisp_formats(struct atomisp_sub_device *asd, int flag,
108 struct atomisp_formats_config *config);
109
110
111int atomisp_nr(struct atomisp_sub_device *asd, int flag,
112 struct atomisp_nr_config *config);
113
114
115int atomisp_tnr(struct atomisp_sub_device *asd, int flag,
116 struct atomisp_tnr_config *config);
117
118
119int atomisp_black_level(struct atomisp_sub_device *asd, int flag,
120 struct atomisp_ob_config *config);
121
122
123int atomisp_ee(struct atomisp_sub_device *asd, int flag,
124 struct atomisp_ee_config *config);
125
126
127int atomisp_gamma(struct atomisp_sub_device *asd, int flag,
128 struct atomisp_gamma_table *config);
129
130
131int atomisp_ctc(struct atomisp_sub_device *asd, int flag,
132 struct atomisp_ctc_table *config);
133
134
135int atomisp_gamma_correction(struct atomisp_sub_device *asd, int flag,
136 struct atomisp_gc_config *config);
137
138
139int atomisp_gdc_cac_table(struct atomisp_sub_device *asd, int flag,
140 struct atomisp_morph_table *config);
141
142
143int atomisp_macc_table(struct atomisp_sub_device *asd, int flag,
144 struct atomisp_macc_config *config);
145
146
147int atomisp_get_dis_stat(struct atomisp_sub_device *asd,
148 struct atomisp_dis_statistics *stats);
149
150
151int atomisp_get_dvs2_bq_resolutions(struct atomisp_sub_device *asd,
152 struct atomisp_dvs2_bq_resolutions *bq_res);
153
154
155int atomisp_set_dis_coefs(struct atomisp_sub_device *asd,
156 struct atomisp_dis_coefficients *coefs);
157
158
159int atomisp_set_dis_vector(struct atomisp_sub_device *asd,
160 struct atomisp_dis_vector *vector);
161
162
163int atomisp_3a_stat(struct atomisp_sub_device *asd, int flag,
164 struct atomisp_3a_statistics *config);
165
166
167int atomisp_get_metadata(struct atomisp_sub_device *asd, int flag,
168 struct atomisp_metadata *config);
169
170int atomisp_get_metadata_by_type(struct atomisp_sub_device *asd, int flag,
171 struct atomisp_metadata_with_type *config);
172
173int atomisp_set_parameters(struct video_device *vdev,
174 struct atomisp_parameters *arg);
175
176
177int atomisp_param(struct atomisp_sub_device *asd, int flag,
178 struct atomisp_parm *config);
179
180
181int atomisp_color_effect(struct atomisp_sub_device *asd, int flag,
182 __s32 *effect);
183
184
185int atomisp_bad_pixel(struct atomisp_sub_device *asd, int flag,
186 __s32 *value);
187
188
189int atomisp_bad_pixel_param(struct atomisp_sub_device *asd, int flag,
190 struct atomisp_dp_config *config);
191
192
193int atomisp_video_stable(struct atomisp_sub_device *asd, int flag,
194 __s32 *value);
195
196
197int atomisp_fixed_pattern(struct atomisp_sub_device *asd, int flag,
198 __s32 *value);
199
200
201int atomisp_fixed_pattern_table(struct atomisp_sub_device *asd,
202 struct v4l2_framebuffer *config);
203
204
205int atomisp_false_color(struct atomisp_sub_device *asd, int flag,
206 __s32 *value);
207
208
209int atomisp_false_color_param(struct atomisp_sub_device *asd, int flag,
210 struct atomisp_de_config *config);
211
212
213int atomisp_white_balance_param(struct atomisp_sub_device *asd, int flag,
214 struct atomisp_wb_config *config);
215
216int atomisp_3a_config_param(struct atomisp_sub_device *asd, int flag,
217 struct atomisp_3a_config *config);
218
219
220int atomisp_digital_zoom(struct atomisp_sub_device *asd, int flag,
221 __s32 *value);
222
223
224int atomisp_set_array_res(struct atomisp_sub_device *asd,
225 struct atomisp_resolution *config);
226
227
228int atomisp_calculate_real_zoom_region(struct atomisp_sub_device *asd,
229 struct ia_css_dz_config *dz_config,
230 enum ia_css_pipe_id css_pipe_id);
231
232int atomisp_cp_general_isp_parameters(struct atomisp_sub_device *asd,
233 struct atomisp_parameters *arg,
234 struct atomisp_css_params *css_param,
235 bool from_user);
236
237int atomisp_cp_lsc_table(struct atomisp_sub_device *asd,
238 struct atomisp_shading_table *source_st,
239 struct atomisp_css_params *css_param,
240 bool from_user);
241
242int atomisp_css_cp_dvs2_coefs(struct atomisp_sub_device *asd,
243 struct ia_css_dvs2_coefficients *coefs,
244 struct atomisp_css_params *css_param,
245 bool from_user);
246
247int atomisp_cp_morph_table(struct atomisp_sub_device *asd,
248 struct atomisp_morph_table *source_morph_table,
249 struct atomisp_css_params *css_param,
250 bool from_user);
251
252int atomisp_cp_dvs_6axis_config(struct atomisp_sub_device *asd,
253 struct atomisp_dvs_6axis_config *user_6axis_config,
254 struct atomisp_css_params *css_param,
255 bool from_user);
256
257int atomisp_makeup_css_parameters(struct atomisp_sub_device *asd,
258 struct atomisp_parameters *arg,
259 struct atomisp_css_params *css_param);
260
261int atomisp_compare_grid(struct atomisp_sub_device *asd,
262 struct atomisp_grid_info *atomgrid);
263
264int atomisp_get_sensor_mode_data(struct atomisp_sub_device *asd,
265 struct atomisp_sensor_mode_data *config);
266
267
268int atomisp_try_fmt(struct video_device *vdev, struct v4l2_pix_format *f,
269 bool *res_overflow);
270
271int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f);
272int atomisp_set_fmt_file(struct video_device *vdev, struct v4l2_format *f);
273
274int atomisp_set_shading_table(struct atomisp_sub_device *asd,
275 struct atomisp_shading_table *shading_table);
276
277int atomisp_offline_capture_configure(struct atomisp_sub_device *asd,
278 struct atomisp_cont_capture_conf *cvf_config);
279
280int atomisp_ospm_dphy_down(struct atomisp_device *isp);
281int atomisp_ospm_dphy_up(struct atomisp_device *isp);
282int atomisp_exif_makernote(struct atomisp_sub_device *asd,
283 struct atomisp_makernote_info *config);
284
285void atomisp_free_internal_buffers(struct atomisp_sub_device *asd);
286
287int atomisp_s_ae_window(struct atomisp_sub_device *asd,
288 struct atomisp_ae_window *arg);
289
290int atomisp_flash_enable(struct atomisp_sub_device *asd,
291 int num_frames);
292
293int atomisp_freq_scaling(struct atomisp_device *vdev,
294 enum atomisp_dfs_mode mode,
295 bool force);
296
297void atomisp_buf_done(struct atomisp_sub_device *asd, int error,
298 enum ia_css_buffer_type buf_type,
299 enum ia_css_pipe_id css_pipe_id,
300 bool q_buffers, enum atomisp_input_stream_id stream_id);
301
302void atomisp_css_flush(struct atomisp_device *isp);
303int atomisp_source_pad_to_stream_id(struct atomisp_sub_device *asd,
304 uint16_t source_pad);
305
306
307void atomisp_eof_event(struct atomisp_sub_device *asd, uint8_t exp_id);
308
309enum mipi_port_id __get_mipi_port(struct atomisp_device *isp,
310 enum atomisp_camera_port port);
311
312bool atomisp_is_vf_pipe(struct atomisp_video_pipe *pipe);
313
314void atomisp_apply_css_parameters(
315 struct atomisp_sub_device *asd,
316 struct atomisp_css_params *css_param);
317void atomisp_free_css_parameters(struct atomisp_css_params *css_param);
318
319void atomisp_handle_parameter_and_buffer(struct atomisp_video_pipe *pipe);
320
321void atomisp_flush_params_queue(struct atomisp_video_pipe *asd);
322
323
324int atomisp_exp_id_unlock(struct atomisp_sub_device *asd, int *exp_id);
325int atomisp_exp_id_capture(struct atomisp_sub_device *asd, int *exp_id);
326
327
328int atomisp_set_raw_buffer_bitmap(struct atomisp_sub_device *asd, int exp_id);
329void atomisp_init_raw_buffer_bitmap(struct atomisp_sub_device *asd);
330
331
332int atomisp_enable_dz_capt_pipe(struct atomisp_sub_device *asd,
333 unsigned int *enable);
334
335
336enum atomisp_metadata_type
337atomisp_get_metadata_type(struct atomisp_sub_device *asd,
338 enum ia_css_pipe_id pipe_id);
339
340u32 atomisp_get_pixel_depth(u32 pixelformat);
341
342
343int atomisp_inject_a_fake_event(struct atomisp_sub_device *asd, int *event);
344
345
346
347
348
349int atomisp_get_invalid_frame_num(struct video_device *vdev,
350 int *invalid_frame_num);
351
352int atomisp_mrfld_power_up(struct atomisp_device *isp);
353int atomisp_mrfld_power_down(struct atomisp_device *isp);
354int atomisp_runtime_suspend(struct device *dev);
355int atomisp_runtime_resume(struct device *dev);
356#endif
357