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