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 _IA_CSS_ISP_PARAM_H_ 17 #define _IA_CSS_ISP_PARAM_H_ 18 19 #include <ia_css_err.h> 20 #include "ia_css_isp_param_types.h" 21 22 /* Set functions for parameter memory descriptors */ 23 void 24 ia_css_isp_param_set_mem_init( 25 struct ia_css_isp_param_host_segments *mem_init, 26 enum ia_css_param_class pclass, 27 enum ia_css_isp_memories mem, 28 char *address, size_t size); 29 30 void 31 ia_css_isp_param_set_css_mem_init( 32 struct ia_css_isp_param_css_segments *mem_init, 33 enum ia_css_param_class pclass, 34 enum ia_css_isp_memories mem, 35 ia_css_ptr address, size_t size); 36 37 void 38 ia_css_isp_param_set_isp_mem_init( 39 struct ia_css_isp_param_isp_segments *mem_init, 40 enum ia_css_param_class pclass, 41 enum ia_css_isp_memories mem, 42 u32 address, size_t size); 43 44 /* Get functions for parameter memory descriptors */ 45 const struct ia_css_host_data * 46 ia_css_isp_param_get_mem_init( 47 const struct ia_css_isp_param_host_segments *mem_init, 48 enum ia_css_param_class pclass, 49 enum ia_css_isp_memories mem); 50 51 const struct ia_css_data * 52 ia_css_isp_param_get_css_mem_init( 53 const struct ia_css_isp_param_css_segments *mem_init, 54 enum ia_css_param_class pclass, 55 enum ia_css_isp_memories mem); 56 57 const struct ia_css_isp_data * 58 ia_css_isp_param_get_isp_mem_init( 59 const struct ia_css_isp_param_isp_segments *mem_init, 60 enum ia_css_param_class pclass, 61 enum ia_css_isp_memories mem); 62 63 /* Initialize the memory interface sizes and addresses */ 64 void 65 ia_css_init_memory_interface( 66 struct ia_css_isp_param_css_segments *isp_mem_if, 67 const struct ia_css_isp_param_host_segments *mem_params, 68 const struct ia_css_isp_param_css_segments *css_params); 69 70 /* Allocate memory parameters */ 71 int 72 ia_css_isp_param_allocate_isp_parameters( 73 struct ia_css_isp_param_host_segments *mem_params, 74 struct ia_css_isp_param_css_segments *css_params, 75 const struct ia_css_isp_param_isp_segments *mem_initializers); 76 77 /* Destroy memory parameters */ 78 void 79 ia_css_isp_param_destroy_isp_parameters( 80 struct ia_css_isp_param_host_segments *mem_params, 81 struct ia_css_isp_param_css_segments *css_params); 82 83 /* Load fw parameters */ 84 void 85 ia_css_isp_param_load_fw_params( 86 const char *fw, 87 union ia_css_all_memory_offsets *mem_offsets, 88 const struct ia_css_isp_param_memory_offsets *memory_offsets, 89 bool init); 90 91 /* Copy host parameter images to ddr */ 92 int 93 ia_css_isp_param_copy_isp_mem_if_to_ddr( 94 struct ia_css_isp_param_css_segments *ddr, 95 const struct ia_css_isp_param_host_segments *host, 96 enum ia_css_param_class pclass); 97 98 /* Enable a pipeline by setting the control field in the isp dmem parameters */ 99 void 100 ia_css_isp_param_enable_pipeline( 101 const struct ia_css_isp_param_host_segments *mem_params); 102 103 #endif /* _IA_CSS_ISP_PARAM_H_ */ 104