GNU Linux-libre 4.14.259-gnu1
[releases.git] / drivers / staging / media / atomisp / pci / atomisp2 / css2400 / runtime / isp_param / interface / ia_css_isp_param.h
1 #ifndef ISP2401
2 /*
3  * Support for Intel Camera Imaging ISP subsystem.
4  * Copyright (c) 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 #else
16 /**
17 Support for Intel Camera Imaging ISP subsystem.
18 Copyright (c) 2010 - 2015, Intel Corporation.
19
20 This program is free software; you can redistribute it and/or modify it
21 under the terms and conditions of the GNU General Public License,
22 version 2, as published by the Free Software Foundation.
23
24 This program is distributed in the hope it will be useful, but WITHOUT
25 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
26 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
27 more details.
28 */
29 #endif
30
31 #ifndef _IA_CSS_ISP_PARAM_H_
32 #define _IA_CSS_ISP_PARAM_H_
33
34 #include <ia_css_err.h>
35 #include "ia_css_isp_param_types.h"
36
37 /* Set functions for parameter memory descriptors */
38 void
39 ia_css_isp_param_set_mem_init(
40         struct ia_css_isp_param_host_segments *mem_init,
41         enum ia_css_param_class pclass,
42         enum ia_css_isp_memories mem,
43         char *address, size_t size);
44
45 void
46 ia_css_isp_param_set_css_mem_init(
47         struct ia_css_isp_param_css_segments *mem_init,
48         enum ia_css_param_class pclass,
49         enum ia_css_isp_memories mem,
50         hrt_vaddress address, size_t size);
51
52 void
53 ia_css_isp_param_set_isp_mem_init(
54         struct ia_css_isp_param_isp_segments *mem_init,
55         enum ia_css_param_class pclass,
56         enum ia_css_isp_memories mem,
57         uint32_t address, size_t size);
58
59 /* Get functions for parameter memory descriptors */
60 const struct ia_css_host_data*
61 ia_css_isp_param_get_mem_init(
62         const struct ia_css_isp_param_host_segments *mem_init,
63         enum ia_css_param_class pclass,
64         enum ia_css_isp_memories mem);
65
66 const struct ia_css_data*
67 ia_css_isp_param_get_css_mem_init(
68         const struct ia_css_isp_param_css_segments *mem_init,
69         enum ia_css_param_class pclass,
70         enum ia_css_isp_memories mem);
71
72 const struct ia_css_isp_data*
73 ia_css_isp_param_get_isp_mem_init(
74         const struct ia_css_isp_param_isp_segments *mem_init,
75         enum ia_css_param_class pclass,
76         enum ia_css_isp_memories mem);
77
78 /* Initialize the memory interface sizes and addresses */
79 void
80 ia_css_init_memory_interface(
81         struct ia_css_isp_param_css_segments *isp_mem_if,
82         const struct ia_css_isp_param_host_segments *mem_params,
83         const struct ia_css_isp_param_css_segments *css_params);
84
85 /* Allocate memory parameters */
86 enum ia_css_err
87 ia_css_isp_param_allocate_isp_parameters(
88         struct ia_css_isp_param_host_segments *mem_params,
89         struct ia_css_isp_param_css_segments *css_params,
90         const struct ia_css_isp_param_isp_segments *mem_initializers);
91
92 /* Destroy memory parameters */
93 void
94 ia_css_isp_param_destroy_isp_parameters(
95         struct ia_css_isp_param_host_segments *mem_params,
96         struct ia_css_isp_param_css_segments *css_params);
97
98 /* Load fw parameters */
99 void
100 ia_css_isp_param_load_fw_params(
101         const char *fw,
102         union ia_css_all_memory_offsets *mem_offsets,
103         const struct ia_css_isp_param_memory_offsets *memory_offsets,
104         bool init);
105
106 /* Copy host parameter images to ddr */
107 enum ia_css_err
108 ia_css_isp_param_copy_isp_mem_if_to_ddr(
109         struct ia_css_isp_param_css_segments *ddr,
110         const struct ia_css_isp_param_host_segments *host,
111         enum ia_css_param_class pclass);
112
113 /* Enable a pipeline by setting the control field in the isp dmem parameters */
114 void
115 ia_css_isp_param_enable_pipeline(
116         const struct ia_css_isp_param_host_segments *mem_params);
117
118 #endif /* _IA_CSS_ISP_PARAM_H_ */