1  /* SPDX-License-Identifier: GPL-2.0 */
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  
16  #ifndef __IA_CSS_SDIS_HOST_H
17  #define __IA_CSS_SDIS_HOST_H
18  
19  #include "ia_css_sdis_types.h"
20  #include "ia_css_binary.h"
21  #include "ia_css_stream.h"
22  #include "sh_css_params.h"
23  
24  extern const struct ia_css_dvs_coefficients default_sdis_config;
25  
26  /* Opaque here, since size is binary dependent. */
27  struct sh_css_isp_sdis_hori_coef_tbl;
28  struct sh_css_isp_sdis_vert_coef_tbl;
29  struct sh_css_isp_sdis_hori_proj_tbl;
30  struct sh_css_isp_sdis_vert_proj_tbl;
31  
32  void ia_css_sdis_horicoef_vmem_encode(
33      struct sh_css_isp_sdis_hori_coef_tbl *to,
34      const struct ia_css_dvs_coefficients *from,
35      unsigned int size);
36  
37  void ia_css_sdis_vertcoef_vmem_encode(
38      struct sh_css_isp_sdis_vert_coef_tbl *to,
39      const struct ia_css_dvs_coefficients *from,
40      unsigned int size);
41  
42  void ia_css_sdis_horiproj_encode(
43      struct sh_css_isp_sdis_hori_proj_tbl *to,
44      const struct ia_css_dvs_coefficients *from,
45      unsigned int size);
46  
47  void ia_css_sdis_vertproj_encode(
48      struct sh_css_isp_sdis_vert_proj_tbl *to,
49      const struct ia_css_dvs_coefficients *from,
50      unsigned int size);
51  
52  void ia_css_get_isp_dis_coefficients(
53      struct ia_css_stream *stream,
54      short *horizontal_coefficients,
55      short *vertical_coefficients);
56  
57  int
58  ia_css_get_dvs_statistics(
59      struct ia_css_dvs_statistics	       *host_stats,
60      const struct ia_css_isp_dvs_statistics *isp_stats);
61  
62  void
63  ia_css_translate_dvs_statistics(
64      struct ia_css_dvs_statistics               *host_stats,
65      const struct ia_css_isp_dvs_statistics_map *isp_stats);
66  
67  struct ia_css_isp_dvs_statistics *
68  ia_css_isp_dvs_statistics_allocate(
69      const struct ia_css_dvs_grid_info *grid);
70  
71  void
72  ia_css_isp_dvs_statistics_free(
73      struct ia_css_isp_dvs_statistics *me);
74  
75  size_t ia_css_sdis_hor_coef_tbl_bytes(const struct ia_css_binary *binary);
76  size_t ia_css_sdis_ver_coef_tbl_bytes(const struct ia_css_binary *binary);
77  
78  void
79  ia_css_sdis_init_info(
80      struct ia_css_sdis_info *dis,
81      unsigned int sc_3a_dis_width,
82      unsigned int sc_3a_dis_padded_width,
83      unsigned int sc_3a_dis_height,
84      unsigned int isp_pipe_version,
85      unsigned int enabled);
86  
87  void ia_css_sdis_clear_coefficients(
88      struct ia_css_dvs_coefficients *dvs_coefs);
89  
90  void ia_css_sdis_horicoef_debug_dtrace(
91      const struct ia_css_dvs_coefficients *config, unsigned int level);
92  
93  void ia_css_sdis_vertcoef_debug_dtrace(
94      const struct ia_css_dvs_coefficients *config, unsigned int level);
95  
96  void ia_css_sdis_horiproj_debug_dtrace(
97      const struct ia_css_dvs_coefficients *config, unsigned int level);
98  
99  void ia_css_sdis_vertproj_debug_dtrace(
100      const struct ia_css_dvs_coefficients *config, unsigned int level);
101  
102  #endif /* __IA_CSS_SDIS_HOST_H */
103