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