1*f5fbb83fSMauro Carvalho Chehab /* SPDX-License-Identifier: GPL-2.0 */
29d4fa1a1SMauro Carvalho Chehab /*
39d4fa1a1SMauro Carvalho Chehab  * Support for Intel Camera Imaging ISP subsystem.
49d4fa1a1SMauro Carvalho Chehab  * Copyright (c) 2015, Intel Corporation.
59d4fa1a1SMauro Carvalho Chehab  *
69d4fa1a1SMauro Carvalho Chehab  * This program is free software; you can redistribute it and/or modify it
79d4fa1a1SMauro Carvalho Chehab  * under the terms and conditions of the GNU General Public License,
89d4fa1a1SMauro Carvalho Chehab  * version 2, as published by the Free Software Foundation.
99d4fa1a1SMauro Carvalho Chehab  *
109d4fa1a1SMauro Carvalho Chehab  * This program is distributed in the hope it will be useful, but WITHOUT
119d4fa1a1SMauro Carvalho Chehab  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
129d4fa1a1SMauro Carvalho Chehab  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
139d4fa1a1SMauro Carvalho Chehab  * more details.
149d4fa1a1SMauro Carvalho Chehab  */
159d4fa1a1SMauro Carvalho Chehab 
169d4fa1a1SMauro Carvalho Chehab #ifndef _IA_CSS_STREAM_H_
179d4fa1a1SMauro Carvalho Chehab #define _IA_CSS_STREAM_H_
189d4fa1a1SMauro Carvalho Chehab 
199d4fa1a1SMauro Carvalho Chehab #include <type_support.h>
209d4fa1a1SMauro Carvalho Chehab #include <system_local.h>
219d4fa1a1SMauro Carvalho Chehab #include <input_system.h>
229d4fa1a1SMauro Carvalho Chehab #include "ia_css_types.h"
239d4fa1a1SMauro Carvalho Chehab #include "ia_css_stream_public.h"
249d4fa1a1SMauro Carvalho Chehab 
259d4fa1a1SMauro Carvalho Chehab /**
269d4fa1a1SMauro Carvalho Chehab  * structure to hold all internal stream related information
279d4fa1a1SMauro Carvalho Chehab  */
289d4fa1a1SMauro Carvalho Chehab struct ia_css_stream {
299d4fa1a1SMauro Carvalho Chehab 	struct ia_css_stream_config    config;
309d4fa1a1SMauro Carvalho Chehab 	struct ia_css_stream_info      info;
319d4fa1a1SMauro Carvalho Chehab 	rx_cfg_t                       csi_rx_config;
329d4fa1a1SMauro Carvalho Chehab 	bool                           reconfigure_css_rx;
339d4fa1a1SMauro Carvalho Chehab 	struct ia_css_pipe            *last_pipe;
349d4fa1a1SMauro Carvalho Chehab 	int                            num_pipes;
359d4fa1a1SMauro Carvalho Chehab 	struct ia_css_pipe           **pipes;
369d4fa1a1SMauro Carvalho Chehab 	struct ia_css_pipe            *continuous_pipe;
379d4fa1a1SMauro Carvalho Chehab 	struct ia_css_isp_parameters  *isp_params_configs;
389d4fa1a1SMauro Carvalho Chehab 	struct ia_css_isp_parameters  *per_frame_isp_params_configs;
399d4fa1a1SMauro Carvalho Chehab 
409d4fa1a1SMauro Carvalho Chehab 	bool                           cont_capt;
419d4fa1a1SMauro Carvalho Chehab 	bool                           disable_cont_vf;
429d4fa1a1SMauro Carvalho Chehab 
439d4fa1a1SMauro Carvalho Chehab 	/* ISP2401 */
449d4fa1a1SMauro Carvalho Chehab 	bool                           stop_copy_preview;
459d4fa1a1SMauro Carvalho Chehab 	bool                           started;
469d4fa1a1SMauro Carvalho Chehab };
479d4fa1a1SMauro Carvalho Chehab 
489d4fa1a1SMauro Carvalho Chehab /* @brief Get a binary in the stream, which binary has the shading correction.
499d4fa1a1SMauro Carvalho Chehab  *
509d4fa1a1SMauro Carvalho Chehab  * @param[in] stream: The stream.
519d4fa1a1SMauro Carvalho Chehab  * @return	The binary which has the shading correction.
529d4fa1a1SMauro Carvalho Chehab  *
539d4fa1a1SMauro Carvalho Chehab  */
549d4fa1a1SMauro Carvalho Chehab struct ia_css_binary *
559d4fa1a1SMauro Carvalho Chehab ia_css_stream_get_shading_correction_binary(const struct ia_css_stream *stream);
569d4fa1a1SMauro Carvalho Chehab 
579d4fa1a1SMauro Carvalho Chehab struct ia_css_binary *
589d4fa1a1SMauro Carvalho Chehab ia_css_stream_get_dvs_binary(const struct ia_css_stream *stream);
599d4fa1a1SMauro Carvalho Chehab 
609d4fa1a1SMauro Carvalho Chehab struct ia_css_binary *
619d4fa1a1SMauro Carvalho Chehab ia_css_stream_get_3a_binary(const struct ia_css_stream *stream);
629d4fa1a1SMauro Carvalho Chehab 
639d4fa1a1SMauro Carvalho Chehab unsigned int
649d4fa1a1SMauro Carvalho Chehab ia_css_stream_input_format_bits_per_pixel(struct ia_css_stream *stream);
659d4fa1a1SMauro Carvalho Chehab 
669d4fa1a1SMauro Carvalho Chehab bool
679d4fa1a1SMauro Carvalho Chehab sh_css_params_set_binning_factor(struct ia_css_stream *stream,
689d4fa1a1SMauro Carvalho Chehab 				 unsigned int sensor_binning);
699d4fa1a1SMauro Carvalho Chehab 
709d4fa1a1SMauro Carvalho Chehab void
719d4fa1a1SMauro Carvalho Chehab sh_css_invalidate_params(struct ia_css_stream *stream);
729d4fa1a1SMauro Carvalho Chehab 
739d4fa1a1SMauro Carvalho Chehab /* The following functions are used for testing purposes only */
749d4fa1a1SMauro Carvalho Chehab const struct ia_css_fpn_table *
759d4fa1a1SMauro Carvalho Chehab ia_css_get_fpn_table(struct ia_css_stream *stream);
769d4fa1a1SMauro Carvalho Chehab 
779d4fa1a1SMauro Carvalho Chehab /* @brief Get a pointer to the shading table.
789d4fa1a1SMauro Carvalho Chehab  *
799d4fa1a1SMauro Carvalho Chehab  * @param[in] stream: The stream.
809d4fa1a1SMauro Carvalho Chehab  * @return	The pointer to the shading table.
819d4fa1a1SMauro Carvalho Chehab  *
829d4fa1a1SMauro Carvalho Chehab  */
839d4fa1a1SMauro Carvalho Chehab struct ia_css_shading_table *
849d4fa1a1SMauro Carvalho Chehab ia_css_get_shading_table(struct ia_css_stream *stream);
859d4fa1a1SMauro Carvalho Chehab 
869d4fa1a1SMauro Carvalho Chehab void
879d4fa1a1SMauro Carvalho Chehab ia_css_get_isp_dis_coefficients(struct ia_css_stream *stream,
889d4fa1a1SMauro Carvalho Chehab 				short *horizontal_coefficients,
899d4fa1a1SMauro Carvalho Chehab 				short *vertical_coefficients);
909d4fa1a1SMauro Carvalho Chehab 
919d4fa1a1SMauro Carvalho Chehab void
929d4fa1a1SMauro Carvalho Chehab ia_css_get_isp_dvs2_coefficients(struct ia_css_stream *stream,
939d4fa1a1SMauro Carvalho Chehab 				 short *hor_coefs_odd_real,
949d4fa1a1SMauro Carvalho Chehab 				 short *hor_coefs_odd_imag,
959d4fa1a1SMauro Carvalho Chehab 				 short *hor_coefs_even_real,
969d4fa1a1SMauro Carvalho Chehab 				 short *hor_coefs_even_imag,
979d4fa1a1SMauro Carvalho Chehab 				 short *ver_coefs_odd_real,
989d4fa1a1SMauro Carvalho Chehab 				 short *ver_coefs_odd_imag,
999d4fa1a1SMauro Carvalho Chehab 				 short *ver_coefs_even_real,
1009d4fa1a1SMauro Carvalho Chehab 				 short *ver_coefs_even_imag);
1019d4fa1a1SMauro Carvalho Chehab 
10241022d35SMauro Carvalho Chehab int
1039d4fa1a1SMauro Carvalho Chehab ia_css_stream_isp_parameters_init(struct ia_css_stream *stream);
1049d4fa1a1SMauro Carvalho Chehab 
1059d4fa1a1SMauro Carvalho Chehab void
1069d4fa1a1SMauro Carvalho Chehab ia_css_stream_isp_parameters_uninit(struct ia_css_stream *stream);
1079d4fa1a1SMauro Carvalho Chehab 
1089d4fa1a1SMauro Carvalho Chehab #endif /*_IA_CSS_STREAM_H_*/
109