1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Support for Intel Camera Imaging ISP subsystem.
4  * Copyright (c) 2010 - 2015, Intel Corporation.
5  */
6 
7 #ifndef _ISP_TYPES_H_
8 #define _ISP_TYPES_H_
9 
10 /*
11  * Workaround: hivecc complains about "tag "sh_css_3a_output" already declared"
12  * without this extra decl.
13  */
14 struct ia_css_3a_output;
15 
16 /*
17  * Input stream formats, these correspond to the MIPI formats and the way
18  * the CSS receiver sends these to the input formatter.
19  * The bit depth of each pixel element is stored in the global variable
20  * isp_bits_per_pixel.
21  * NOTE: for rgb565, we set isp_bits_per_pixel to 565, for all other rgb
22  * formats it's the actual depth (4, for 444, 8 for 888 etc).
23  */
24 enum sh_stream_format {
25 	sh_stream_format_yuv420_legacy,
26 	sh_stream_format_yuv420,
27 	sh_stream_format_yuv422,
28 	sh_stream_format_rgb,
29 	sh_stream_format_raw,
30 	sh_stream_format_binary,	/* bytestream such as jpeg */
31 };
32 
33 struct s_isp_frames {
34 	/*
35 	 * Global variables that are written to by either the SP or the host,
36 	 * every ISP binary needs these.
37 	 */
38 	/* output frame */
39 	char *xmem_base_addr_y;
40 	char *xmem_base_addr_uv;
41 	char *xmem_base_addr_u;
42 	char *xmem_base_addr_v;
43 	/* 2nd output frame */
44 	char *xmem_base_addr_second_out_y;
45 	char *xmem_base_addr_second_out_u;
46 	char *xmem_base_addr_second_out_v;
47 	/* input yuv frame */
48 	char *xmem_base_addr_y_in;
49 	char *xmem_base_addr_u_in;
50 	char *xmem_base_addr_v_in;
51 	/* input raw frame */
52 	char *xmem_base_addr_raw;
53 	/* output raw frame */
54 	char *xmem_base_addr_raw_out;
55 	/* viewfinder output (vf_veceven) */
56 	char *xmem_base_addr_vfout_y;
57 	char *xmem_base_addr_vfout_u;
58 	char *xmem_base_addr_vfout_v;
59 	/* overlay frame (for vf_pp) */
60 	char *xmem_base_addr_overlay_y;
61 	char *xmem_base_addr_overlay_u;
62 	char *xmem_base_addr_overlay_v;
63 	/* pre-gdc output frame (gdc input) */
64 	char *xmem_base_addr_qplane_r;
65 	char *xmem_base_addr_qplane_ratb;
66 	char *xmem_base_addr_qplane_gr;
67 	char *xmem_base_addr_qplane_gb;
68 	char *xmem_base_addr_qplane_b;
69 	char *xmem_base_addr_qplane_batr;
70 	/* YUV as input, used by postisp binary */
71 	char *xmem_base_addr_yuv_16_y;
72 	char *xmem_base_addr_yuv_16_u;
73 	char *xmem_base_addr_yuv_16_v;
74 };
75 
76 #endif /* _ISP_TYPES_H_ */
77