1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19#ifndef __ATOMISP_COMPAT_CSS20_H__
20#define __ATOMISP_COMPAT_CSS20_H__
21
22#include <media/v4l2-mediabus.h>
23
24#include "ia_css.h"
25#include "ia_css_types.h"
26#include "ia_css_acc_types.h"
27#include "sh_css_legacy.h"
28
29#define ATOMISP_CSS2_PIPE_MAX 2
30#define ATOMISP_CSS2_NUM_OFFLINE_INIT_CONTINUOUS_FRAMES 3
31#define ATOMISP_CSS2_NUM_OFFLINE_INIT_CONTINUOUS_FRAMES_LOCK_EN 4
32#define ATOMISP_CSS2_NUM_DVS_FRAME_DELAY 2
33
34#define CSS_MIPI_FRAME_BUFFER_SIZE_1 0x60000
35#define CSS_MIPI_FRAME_BUFFER_SIZE_2 0x80000
36
37struct atomisp_device;
38struct atomisp_sub_device;
39
40#define MAX_STREAMS_PER_CHANNEL 2
41
42
43
44
45
46enum atomisp_css_stream_state {
47 CSS_STREAM_UNINIT,
48 CSS_STREAM_CREATED,
49 CSS_STREAM_STARTED,
50 CSS_STREAM_STOPPED,
51};
52
53
54
55
56
57
58struct atomisp_css_isys_config_info {
59 unsigned int input_format;
60 unsigned int width;
61 unsigned int height;
62};
63
64struct atomisp_stream_env {
65 struct ia_css_stream *stream;
66 struct ia_css_stream_config stream_config;
67 struct ia_css_stream_info stream_info;
68 struct ia_css_pipe *pipes[IA_CSS_PIPE_ID_NUM];
69 struct ia_css_pipe *multi_pipes[IA_CSS_PIPE_ID_NUM];
70 struct ia_css_pipe_config pipe_configs[IA_CSS_PIPE_ID_NUM];
71 struct ia_css_pipe_extra_config pipe_extra_configs[IA_CSS_PIPE_ID_NUM];
72 bool update_pipe[IA_CSS_PIPE_ID_NUM];
73 enum atomisp_css_stream_state stream_state;
74 struct ia_css_stream *acc_stream;
75 enum atomisp_css_stream_state acc_stream_state;
76 struct ia_css_stream_config acc_stream_config;
77 unsigned int ch_id;
78 unsigned int isys_configs;
79 struct atomisp_css_isys_config_info isys_info[MAX_STREAMS_PER_CHANNEL];
80};
81
82struct atomisp_css_env {
83 struct ia_css_env isp_css_env;
84 struct ia_css_fw isp_css_fw;
85};
86
87struct atomisp_s3a_buf {
88 struct ia_css_isp_3a_statistics *s3a_data;
89 struct ia_css_isp_3a_statistics_map *s3a_map;
90 struct list_head list;
91};
92
93struct atomisp_dis_buf {
94 struct ia_css_isp_dvs_statistics *dis_data;
95 struct ia_css_isp_dvs_statistics_map *dvs_map;
96 struct list_head list;
97};
98
99struct atomisp_css_buffer {
100 struct ia_css_buffer css_buffer;
101};
102
103struct atomisp_css_event {
104 enum ia_css_pipe_id pipe;
105 struct ia_css_event event;
106};
107
108void atomisp_css_set_macc_config(struct atomisp_sub_device *asd,
109 struct ia_css_macc_config *macc_config);
110
111void atomisp_css_set_ecd_config(struct atomisp_sub_device *asd,
112 struct ia_css_ecd_config *ecd_config);
113
114void atomisp_css_set_ynr_config(struct atomisp_sub_device *asd,
115 struct ia_css_ynr_config *ynr_config);
116
117void atomisp_css_set_fc_config(struct atomisp_sub_device *asd,
118 struct ia_css_fc_config *fc_config);
119
120void atomisp_css_set_aa_config(struct atomisp_sub_device *asd,
121 struct ia_css_aa_config *aa_config);
122
123void atomisp_css_set_baa_config(struct atomisp_sub_device *asd,
124 struct ia_css_aa_config *baa_config);
125
126void atomisp_css_set_anr_config(struct atomisp_sub_device *asd,
127 struct ia_css_anr_config *anr_config);
128
129void atomisp_css_set_xnr_config(struct atomisp_sub_device *asd,
130 struct ia_css_xnr_config *xnr_config);
131
132void atomisp_css_set_cnr_config(struct atomisp_sub_device *asd,
133 struct ia_css_cnr_config *cnr_config);
134
135void atomisp_css_set_ctc_config(struct atomisp_sub_device *asd,
136 struct ia_css_ctc_config *ctc_config);
137
138void atomisp_css_set_yuv2rgb_cc_config(struct atomisp_sub_device *asd,
139 struct ia_css_cc_config *yuv2rgb_cc_config);
140
141void atomisp_css_set_rgb2yuv_cc_config(struct atomisp_sub_device *asd,
142 struct ia_css_cc_config *rgb2yuv_cc_config);
143
144void atomisp_css_set_anr_thres(struct atomisp_sub_device *asd,
145 struct ia_css_anr_thres *anr_thres);
146
147int atomisp_css_load_firmware(struct atomisp_device *isp);
148
149void atomisp_css_set_dvs_6axis(struct atomisp_sub_device *asd,
150 struct ia_css_dvs_6axis_config *dvs_6axis);
151
152int atomisp_css_debug_dump_isp_binary(void);
153
154int atomisp_css_dump_sp_raw_copy_linecount(bool reduced);
155
156int atomisp_css_dump_blob_infor(struct atomisp_device *isp);
157
158void atomisp_css_set_isp_config_id(struct atomisp_sub_device *asd,
159 uint32_t isp_config_id);
160
161void atomisp_css_set_isp_config_applied_frame(struct atomisp_sub_device *asd,
162 struct ia_css_frame *output_frame);
163
164int atomisp_get_css_dbgfunc(void);
165
166int atomisp_set_css_dbgfunc(struct atomisp_device *isp, int opt);
167struct ia_css_dvs_grid_info *atomisp_css_get_dvs_grid_info(
168 struct ia_css_grid_info *grid_info);
169#endif
170