GNU Linux-libre 5.19-rc6-gnu
[releases.git] / drivers / staging / media / atomisp / pci / ia_css_stream.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Support for Intel Camera Imaging ISP subsystem.
4  * Copyright (c) 2015, Intel Corporation.
5  *
6  * This program is free software; you can redistribute it and/or modify it
7  * under the terms and conditions of the GNU General Public License,
8  * version 2, as published by the Free Software Foundation.
9  *
10  * This program is distributed in the hope it will be useful, but WITHOUT
11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
13  * more details.
14  */
15
16 #ifndef _IA_CSS_STREAM_H_
17 #define _IA_CSS_STREAM_H_
18
19 #include <type_support.h>
20 #include <system_local.h>
21 #include <input_system.h>
22 #include "ia_css_types.h"
23 #include "ia_css_stream_public.h"
24
25 /**
26  * structure to hold all internal stream related information
27  */
28 struct ia_css_stream {
29         struct ia_css_stream_config    config;
30         struct ia_css_stream_info      info;
31         rx_cfg_t                       csi_rx_config;
32         bool                           reconfigure_css_rx;
33         struct ia_css_pipe            *last_pipe;
34         int                            num_pipes;
35         struct ia_css_pipe           **pipes;
36         struct ia_css_pipe            *continuous_pipe;
37         struct ia_css_isp_parameters  *isp_params_configs;
38         struct ia_css_isp_parameters  *per_frame_isp_params_configs;
39
40         bool                           cont_capt;
41         bool                           disable_cont_vf;
42
43         /* ISP2401 */
44         bool                           stop_copy_preview;
45         bool                           started;
46 };
47
48 /* @brief Get a binary in the stream, which binary has the shading correction.
49  *
50  * @param[in] stream: The stream.
51  * @return      The binary which has the shading correction.
52  *
53  */
54 struct ia_css_binary *
55 ia_css_stream_get_shading_correction_binary(const struct ia_css_stream *stream);
56
57 struct ia_css_binary *
58 ia_css_stream_get_dvs_binary(const struct ia_css_stream *stream);
59
60 struct ia_css_binary *
61 ia_css_stream_get_3a_binary(const struct ia_css_stream *stream);
62
63 unsigned int
64 ia_css_stream_input_format_bits_per_pixel(struct ia_css_stream *stream);
65
66 bool
67 sh_css_params_set_binning_factor(struct ia_css_stream *stream,
68                                  unsigned int sensor_binning);
69
70 void
71 sh_css_invalidate_params(struct ia_css_stream *stream);
72
73 /* The following functions are used for testing purposes only */
74 const struct ia_css_fpn_table *
75 ia_css_get_fpn_table(struct ia_css_stream *stream);
76
77 /* @brief Get a pointer to the shading table.
78  *
79  * @param[in] stream: The stream.
80  * @return      The pointer to the shading table.
81  *
82  */
83 struct ia_css_shading_table *
84 ia_css_get_shading_table(struct ia_css_stream *stream);
85
86 void
87 ia_css_get_isp_dis_coefficients(struct ia_css_stream *stream,
88                                 short *horizontal_coefficients,
89                                 short *vertical_coefficients);
90
91 void
92 ia_css_get_isp_dvs2_coefficients(struct ia_css_stream *stream,
93                                  short *hor_coefs_odd_real,
94                                  short *hor_coefs_odd_imag,
95                                  short *hor_coefs_even_real,
96                                  short *hor_coefs_even_imag,
97                                  short *ver_coefs_odd_real,
98                                  short *ver_coefs_odd_imag,
99                                  short *ver_coefs_even_real,
100                                  short *ver_coefs_even_imag);
101
102 int
103 ia_css_stream_isp_parameters_init(struct ia_css_stream *stream);
104
105 void
106 ia_css_stream_isp_parameters_uninit(struct ia_css_stream *stream);
107
108 #endif /*_IA_CSS_STREAM_H_*/