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