1f5fbb83fSMauro 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 __SH_CSS_STRUCT_H 179d4fa1a1SMauro Carvalho Chehab #define __SH_CSS_STRUCT_H 189d4fa1a1SMauro Carvalho Chehab 199d4fa1a1SMauro Carvalho Chehab /* This header files contains the definition of the 209d4fa1a1SMauro Carvalho Chehab sh_css struct and friends; locigally the file would 219d4fa1a1SMauro Carvalho Chehab probably be called sh_css.h after the pattern 229d4fa1a1SMauro Carvalho Chehab <type>.h but sh_css.h is the predecesssor of ia_css.h 239d4fa1a1SMauro Carvalho Chehab so this could cause confusion; hence the _struct 249d4fa1a1SMauro Carvalho Chehab in the filename 259d4fa1a1SMauro Carvalho Chehab */ 269d4fa1a1SMauro Carvalho Chehab 279d4fa1a1SMauro Carvalho Chehab #include <type_support.h> 28f90e73ceSMauro Carvalho Chehab #include <system_local.h> 299d4fa1a1SMauro Carvalho Chehab #include "ia_css_pipeline.h" 309d4fa1a1SMauro Carvalho Chehab #include "ia_css_pipe_public.h" 319d4fa1a1SMauro Carvalho Chehab #include "ia_css_frame_public.h" 329d4fa1a1SMauro Carvalho Chehab #include "ia_css_queue.h" 339d4fa1a1SMauro Carvalho Chehab #include "ia_css_irq.h" 349d4fa1a1SMauro Carvalho Chehab 359d4fa1a1SMauro Carvalho Chehab struct sh_css { 369d4fa1a1SMauro Carvalho Chehab struct ia_css_pipe *active_pipes[IA_CSS_PIPELINE_NUM_MAX]; 379d4fa1a1SMauro Carvalho Chehab /* All of the pipes created at any point of time. At this moment there can 389d4fa1a1SMauro Carvalho Chehab * be no more than MAX_SP_THREADS of them because pipe_num is reused as SP 399d4fa1a1SMauro Carvalho Chehab * thread_id to which a pipe's pipeline is associated. At a later point, if 409d4fa1a1SMauro Carvalho Chehab * we support more pipe objects, we should add test code to test that 419d4fa1a1SMauro Carvalho Chehab * possibility. Also, active_pipes[] should be able to hold only 429d4fa1a1SMauro Carvalho Chehab * SH_CSS_MAX_SP_THREADS objects. Anything else is misleading. */ 439d4fa1a1SMauro Carvalho Chehab struct ia_css_pipe *all_pipes[IA_CSS_PIPELINE_NUM_MAX]; 449d4fa1a1SMauro Carvalho Chehab void *(*malloc)(size_t bytes, bool zero_mem); 459d4fa1a1SMauro Carvalho Chehab void (*free)(void *ptr); 469d4fa1a1SMauro Carvalho Chehab void (*flush)(struct ia_css_acc_fw *fw); 479d4fa1a1SMauro Carvalho Chehab 489d4fa1a1SMauro Carvalho Chehab /* ISP2401 */ 499d4fa1a1SMauro Carvalho Chehab void *(*malloc_ex)(size_t bytes, bool zero_mem, const char *caller_func, 509d4fa1a1SMauro Carvalho Chehab int caller_line); 519d4fa1a1SMauro Carvalho Chehab void (*free_ex)(void *ptr, const char *caller_func, int caller_line); 529d4fa1a1SMauro Carvalho Chehab 539d4fa1a1SMauro Carvalho Chehab /* ISP2400 */ 549d4fa1a1SMauro Carvalho Chehab bool stop_copy_preview; 559d4fa1a1SMauro Carvalho Chehab 569d4fa1a1SMauro Carvalho Chehab bool check_system_idle; 579d4fa1a1SMauro Carvalho Chehab unsigned int num_cont_raw_frames; 589d4fa1a1SMauro Carvalho Chehab unsigned int num_mipi_frames[N_CSI_PORTS]; 599d4fa1a1SMauro Carvalho Chehab struct ia_css_frame 609d4fa1a1SMauro Carvalho Chehab *mipi_frames[N_CSI_PORTS][NUM_MIPI_FRAMES_PER_STREAM]; 619d4fa1a1SMauro Carvalho Chehab struct ia_css_metadata 629d4fa1a1SMauro Carvalho Chehab *mipi_metadata[N_CSI_PORTS][NUM_MIPI_FRAMES_PER_STREAM]; 639d4fa1a1SMauro Carvalho Chehab unsigned int 649d4fa1a1SMauro Carvalho Chehab mipi_sizes_for_check[N_CSI_PORTS][IA_CSS_MIPI_SIZE_CHECK_MAX_NOF_ENTRIES_PER_PORT]; 659d4fa1a1SMauro Carvalho Chehab unsigned int mipi_frame_size[N_CSI_PORTS]; 66100e8989SMauro Carvalho Chehab ia_css_ptr sp_bin_addr; 679d4fa1a1SMauro Carvalho Chehab hrt_data page_table_base_index; 68abbd669dSMauro Carvalho Chehab 699d4fa1a1SMauro Carvalho Chehab unsigned int 709d4fa1a1SMauro Carvalho Chehab size_mem_words; /* \deprecated{Use ia_css_mipi_buffer_config instead.}*/ 719d4fa1a1SMauro Carvalho Chehab enum ia_css_irq_type irq_type; 729d4fa1a1SMauro Carvalho Chehab unsigned int pipe_counter; 739d4fa1a1SMauro Carvalho Chehab 749d4fa1a1SMauro Carvalho Chehab unsigned int type; /* 2400 or 2401 for now */ 759d4fa1a1SMauro Carvalho Chehab }; 769d4fa1a1SMauro Carvalho Chehab 779d4fa1a1SMauro Carvalho Chehab #define IPU_2400 1 789d4fa1a1SMauro Carvalho Chehab #define IPU_2401 2 799d4fa1a1SMauro Carvalho Chehab 809d4fa1a1SMauro Carvalho Chehab #define IS_2400() (my_css.type == IPU_2400) 819d4fa1a1SMauro Carvalho Chehab #define IS_2401() (my_css.type == IPU_2401) 829d4fa1a1SMauro Carvalho Chehab 839d4fa1a1SMauro Carvalho Chehab extern struct sh_css my_css; 849d4fa1a1SMauro Carvalho Chehab 859d4fa1a1SMauro Carvalho Chehab #endif /* __SH_CSS_STRUCT_H */ 86