1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Support for Intel Camera Imaging ISP subsystem. 4 * Copyright (c) 2015, Intel Corporation. 5 */ 6 7 #ifndef __IA_CSS_PIPE_BINARYDESC_H__ 8 #define __IA_CSS_PIPE_BINARYDESC_H__ 9 10 #include <linux/math.h> 11 12 #include <ia_css_types.h> /* ia_css_pipe */ 13 #include <ia_css_frame_public.h> /* ia_css_frame_info */ 14 #include <ia_css_binary.h> /* ia_css_binary_descr */ 15 16 /* @brief Get a binary descriptor for copy. 17 * 18 * @param[in] pipe 19 * @param[out] copy_desc 20 * @param[in/out] in_info 21 * @param[in/out] out_info 22 * @param[in/out] vf_info 23 * @return None 24 * 25 */ 26 void ia_css_pipe_get_copy_binarydesc( 27 struct ia_css_pipe const *const pipe, 28 struct ia_css_binary_descr *copy_descr, 29 struct ia_css_frame_info *in_info, 30 struct ia_css_frame_info *out_info, 31 struct ia_css_frame_info *vf_info); 32 33 /* @brief Get a binary descriptor for vfpp. 34 * 35 * @param[in] pipe 36 * @param[out] vfpp_descr 37 * @param[in/out] in_info 38 * @param[in/out] out_info 39 * @return None 40 * 41 */ 42 void ia_css_pipe_get_vfpp_binarydesc( 43 struct ia_css_pipe const *const pipe, 44 struct ia_css_binary_descr *vf_pp_descr, 45 struct ia_css_frame_info *in_info, 46 struct ia_css_frame_info *out_info); 47 48 /* @brief Get numerator and denominator of bayer downscaling factor. 49 * 50 * @param[in] bds_factor: The bayer downscaling factor. 51 * (= The bds_factor member in the sh_css_bds_factor structure.) 52 * @param[out] bds: The rational fraction of the bayer downscaling factor. 53 * (= The respective member in the sh_css_bds_factor structure.) 54 * @return 0 or error code upon error. 55 * 56 */ 57 int sh_css_bds_factor_get_fract(unsigned int bds_factor, struct u32_fract *bds); 58 59 /* @brief Get a binary descriptor for preview stage. 60 * 61 * @param[in] pipe 62 * @param[out] preview_descr 63 * @param[in/out] in_info 64 * @param[in/out] bds_out_info 65 * @param[in/out] out_info 66 * @param[in/out] vf_info 67 * @return 0 or error code upon error. 68 * 69 */ 70 int ia_css_pipe_get_preview_binarydesc( 71 struct ia_css_pipe *const pipe, 72 struct ia_css_binary_descr *preview_descr, 73 struct ia_css_frame_info *in_info, 74 struct ia_css_frame_info *bds_out_info, 75 struct ia_css_frame_info *out_info, 76 struct ia_css_frame_info *vf_info); 77 78 /* @brief Get a binary descriptor for video stage. 79 * 80 * @param[in/out] pipe 81 * @param[out] video_descr 82 * @param[in/out] in_info 83 * @param[in/out] bds_out_info 84 * @param[in/out] vf_info 85 * @return 0 or error code upon error. 86 * 87 */ 88 int ia_css_pipe_get_video_binarydesc( 89 struct ia_css_pipe *const pipe, 90 struct ia_css_binary_descr *video_descr, 91 struct ia_css_frame_info *in_info, 92 struct ia_css_frame_info *bds_out_info, 93 struct ia_css_frame_info *out_info, 94 struct ia_css_frame_info *vf_info, 95 int stream_config_left_padding); 96 97 /* @brief Get a binary descriptor for yuv scaler stage. 98 * 99 * @param[in/out] pipe 100 * @param[out] yuv_scaler_descr 101 * @param[in/out] in_info 102 * @param[in/out] out_info 103 * @param[in/out] internal_out_info 104 * @param[in/out] vf_info 105 * @return None 106 * 107 */ 108 void ia_css_pipe_get_yuvscaler_binarydesc( 109 struct ia_css_pipe const *const pipe, 110 struct ia_css_binary_descr *yuv_scaler_descr, 111 struct ia_css_frame_info *in_info, 112 struct ia_css_frame_info *out_info, 113 struct ia_css_frame_info *internal_out_info, 114 struct ia_css_frame_info *vf_info); 115 116 /* @brief Get a binary descriptor for capture pp stage. 117 * 118 * @param[in/out] pipe 119 * @param[out] capture_pp_descr 120 * @param[in/out] in_info 121 * @param[in/out] vf_info 122 * @return None 123 * 124 */ 125 void ia_css_pipe_get_capturepp_binarydesc( 126 struct ia_css_pipe *const pipe, 127 struct ia_css_binary_descr *capture_pp_descr, 128 struct ia_css_frame_info *in_info, 129 struct ia_css_frame_info *out_info, 130 struct ia_css_frame_info *vf_info); 131 132 /* @brief Get a binary descriptor for primary capture. 133 * 134 * @param[in] pipe 135 * @param[out] prim_descr 136 * @param[in/out] in_info 137 * @param[in/out] out_info 138 * @param[in/out] vf_info 139 * @return None 140 * 141 */ 142 void ia_css_pipe_get_primary_binarydesc( 143 struct ia_css_pipe const *const pipe, 144 struct ia_css_binary_descr *prim_descr, 145 struct ia_css_frame_info *in_info, 146 struct ia_css_frame_info *out_info, 147 struct ia_css_frame_info *vf_info, 148 unsigned int stage_idx); 149 150 /* @brief Get a binary descriptor for pre gdc stage. 151 * 152 * @param[in] pipe 153 * @param[out] pre_gdc_descr 154 * @param[in/out] in_info 155 * @param[in/out] out_info 156 * @return None 157 * 158 */ 159 void ia_css_pipe_get_pre_gdc_binarydesc( 160 struct ia_css_pipe const *const pipe, 161 struct ia_css_binary_descr *gdc_descr, 162 struct ia_css_frame_info *in_info, 163 struct ia_css_frame_info *out_info); 164 165 /* @brief Get a binary descriptor for gdc stage. 166 * 167 * @param[in] pipe 168 * @param[out] gdc_descr 169 * @param[in/out] in_info 170 * @param[in/out] out_info 171 * @return None 172 * 173 */ 174 void ia_css_pipe_get_gdc_binarydesc( 175 struct ia_css_pipe const *const pipe, 176 struct ia_css_binary_descr *gdc_descr, 177 struct ia_css_frame_info *in_info, 178 struct ia_css_frame_info *out_info); 179 180 /* @brief Get a binary descriptor for post gdc. 181 * 182 * @param[in] pipe 183 * @param[out] post_gdc_descr 184 * @param[in/out] in_info 185 * @param[in/out] out_info 186 * @param[in/out] vf_info 187 * @return None 188 * 189 */ 190 void ia_css_pipe_get_post_gdc_binarydesc( 191 struct ia_css_pipe const *const pipe, 192 struct ia_css_binary_descr *post_gdc_descr, 193 struct ia_css_frame_info *in_info, 194 struct ia_css_frame_info *out_info, 195 struct ia_css_frame_info *vf_info); 196 197 /* @brief Get a binary descriptor for de. 198 * 199 * @param[in] pipe 200 * @param[out] pre_de_descr 201 * @param[in/out] in_info 202 * @param[in/out] out_info 203 * @return None 204 * 205 */ 206 void ia_css_pipe_get_pre_de_binarydesc( 207 struct ia_css_pipe const *const pipe, 208 struct ia_css_binary_descr *pre_de_descr, 209 struct ia_css_frame_info *in_info, 210 struct ia_css_frame_info *out_info); 211 212 /* @brief Get a binary descriptor for pre anr stage. 213 * 214 * @param[in] pipe 215 * @param[out] pre_anr_descr 216 * @param[in/out] in_info 217 * @param[in/out] out_info 218 * @return None 219 * 220 */ 221 void ia_css_pipe_get_pre_anr_binarydesc( 222 struct ia_css_pipe const *const pipe, 223 struct ia_css_binary_descr *pre_anr_descr, 224 struct ia_css_frame_info *in_info, 225 struct ia_css_frame_info *out_info); 226 227 /* @brief Get a binary descriptor for ANR stage. 228 * 229 * @param[in] pipe 230 * @param[out] anr_descr 231 * @param[in/out] in_info 232 * @param[in/out] out_info 233 * @return None 234 * 235 */ 236 void ia_css_pipe_get_anr_binarydesc( 237 struct ia_css_pipe const *const pipe, 238 struct ia_css_binary_descr *anr_descr, 239 struct ia_css_frame_info *in_info, 240 struct ia_css_frame_info *out_info); 241 242 /* @brief Get a binary descriptor for post anr stage. 243 * 244 * @param[in] pipe 245 * @param[out] post_anr_descr 246 * @param[in/out] in_info 247 * @param[in/out] out_info 248 * @param[in/out] vf_info 249 * @return None 250 * 251 */ 252 void ia_css_pipe_get_post_anr_binarydesc( 253 struct ia_css_pipe const *const pipe, 254 struct ia_css_binary_descr *post_anr_descr, 255 struct ia_css_frame_info *in_info, 256 struct ia_css_frame_info *out_info, 257 struct ia_css_frame_info *vf_info); 258 259 /* @brief Get a binary descriptor for ldc stage. 260 * 261 * @param[in/out] pipe 262 * @param[out] capture_pp_descr 263 * @param[in/out] in_info 264 * @param[in/out] vf_info 265 * @return None 266 * 267 */ 268 void ia_css_pipe_get_ldc_binarydesc( 269 struct ia_css_pipe const *const pipe, 270 struct ia_css_binary_descr *ldc_descr, 271 struct ia_css_frame_info *in_info, 272 struct ia_css_frame_info *out_info); 273 274 /* @brief Calculates the required BDS factor 275 * 276 * @param[in] input_res 277 * @param[in] output_res 278 * @param[in/out] bds_factor 279 * @return 0 or error code upon error. 280 */ 281 int binarydesc_calculate_bds_factor( 282 struct ia_css_resolution input_res, 283 struct ia_css_resolution output_res, 284 unsigned int *bds_factor); 285 286 #endif /* __IA_CSS_PIPE_BINARYDESC_H__ */ 287