1f5fbb83fSMauro Carvalho Chehab /* SPDX-License-Identifier: GPL-2.0 */
2*491a0b20SGary Yao /*
3*491a0b20SGary Yao  * Support for Intel Camera Imaging ISP subsystem.
4*491a0b20SGary Yao  * Copyright (c) 2010 - 2015, Intel Corporation.
5*491a0b20SGary Yao  *
6*491a0b20SGary Yao  * This program is free software; you can redistribute it and/or modify it
7*491a0b20SGary Yao  * under the terms and conditions of the GNU General Public License,
8*491a0b20SGary Yao  * version 2, as published by the Free Software Foundation.
9*491a0b20SGary Yao  *
10*491a0b20SGary Yao  * This program is distributed in the hope it will be useful, but WITHOUT
11*491a0b20SGary Yao  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12*491a0b20SGary Yao  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
13*491a0b20SGary Yao  * more details.
149d4fa1a1SMauro Carvalho Chehab  */
159d4fa1a1SMauro Carvalho Chehab 
169d4fa1a1SMauro Carvalho Chehab #ifndef _ISP_TYPES_H_
179d4fa1a1SMauro Carvalho Chehab #define _ISP_TYPES_H_
189d4fa1a1SMauro Carvalho Chehab 
19*491a0b20SGary Yao /*
20*491a0b20SGary Yao  * Workaround: hivecc complains about "tag "sh_css_3a_output" already declared"
21*491a0b20SGary Yao  * without this extra decl.
22*491a0b20SGary Yao  */
239d4fa1a1SMauro Carvalho Chehab struct ia_css_3a_output;
249d4fa1a1SMauro Carvalho Chehab 
25*491a0b20SGary Yao /*
26*491a0b20SGary Yao  * Input stream formats, these correspond to the MIPI formats and the way
279d4fa1a1SMauro Carvalho Chehab  * the CSS receiver sends these to the input formatter.
289d4fa1a1SMauro Carvalho Chehab  * The bit depth of each pixel element is stored in the global variable
299d4fa1a1SMauro Carvalho Chehab  * isp_bits_per_pixel.
309d4fa1a1SMauro Carvalho Chehab  * NOTE: for rgb565, we set isp_bits_per_pixel to 565, for all other rgb
319d4fa1a1SMauro Carvalho Chehab  * formats it's the actual depth (4, for 444, 8 for 888 etc).
329d4fa1a1SMauro Carvalho Chehab  */
339d4fa1a1SMauro Carvalho Chehab enum sh_stream_format {
349d4fa1a1SMauro Carvalho Chehab 	sh_stream_format_yuv420_legacy,
359d4fa1a1SMauro Carvalho Chehab 	sh_stream_format_yuv420,
369d4fa1a1SMauro Carvalho Chehab 	sh_stream_format_yuv422,
379d4fa1a1SMauro Carvalho Chehab 	sh_stream_format_rgb,
389d4fa1a1SMauro Carvalho Chehab 	sh_stream_format_raw,
399d4fa1a1SMauro Carvalho Chehab 	sh_stream_format_binary,	/* bytestream such as jpeg */
409d4fa1a1SMauro Carvalho Chehab };
419d4fa1a1SMauro Carvalho Chehab 
429d4fa1a1SMauro Carvalho Chehab struct s_isp_frames {
43*491a0b20SGary Yao 	/*
44*491a0b20SGary Yao 	 * Global variables that are written to by either the SP or the host,
45*491a0b20SGary Yao 	 * every ISP binary needs these.
46*491a0b20SGary Yao 	 */
479d4fa1a1SMauro Carvalho Chehab 	/* output frame */
489d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_y;
499d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_uv;
509d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_u;
519d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_v;
529d4fa1a1SMauro Carvalho Chehab 	/* 2nd output frame */
539d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_second_out_y;
549d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_second_out_u;
559d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_second_out_v;
569d4fa1a1SMauro Carvalho Chehab 	/* input yuv frame */
579d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_y_in;
589d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_u_in;
599d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_v_in;
609d4fa1a1SMauro Carvalho Chehab 	/* input raw frame */
619d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_raw;
629d4fa1a1SMauro Carvalho Chehab 	/* output raw frame */
639d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_raw_out;
649d4fa1a1SMauro Carvalho Chehab 	/* viewfinder output (vf_veceven) */
659d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_vfout_y;
669d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_vfout_u;
679d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_vfout_v;
689d4fa1a1SMauro Carvalho Chehab 	/* overlay frame (for vf_pp) */
699d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_overlay_y;
709d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_overlay_u;
719d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_overlay_v;
729d4fa1a1SMauro Carvalho Chehab 	/* pre-gdc output frame (gdc input) */
739d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_qplane_r;
749d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_qplane_ratb;
759d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_qplane_gr;
769d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_qplane_gb;
779d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_qplane_b;
789d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_qplane_batr;
799d4fa1a1SMauro Carvalho Chehab 	/* YUV as input, used by postisp binary */
809d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_yuv_16_y;
819d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_yuv_16_u;
829d4fa1a1SMauro Carvalho Chehab 	char *xmem_base_addr_yuv_16_v;
839d4fa1a1SMauro Carvalho Chehab };
849d4fa1a1SMauro Carvalho Chehab 
859d4fa1a1SMauro Carvalho Chehab #endif /* _ISP_TYPES_H_ */
86