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
24extern const struct ia_css_dvs_coefficients default_sdis_config;
25
26/* Opaque here, since size is binary dependent. */
27struct sh_css_isp_sdis_hori_coef_tbl;
28struct sh_css_isp_sdis_vert_coef_tbl;
29struct sh_css_isp_sdis_hori_proj_tbl;
30struct sh_css_isp_sdis_vert_proj_tbl;
31
32void 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
37void 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
42void 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
47void 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
52void ia_css_get_isp_dis_coefficients(
53    struct ia_css_stream *stream,
54    short *horizontal_coefficients,
55    short *vertical_coefficients);
56
57int
58ia_css_get_dvs_statistics(
59    struct ia_css_dvs_statistics	       *host_stats,
60    const struct ia_css_isp_dvs_statistics *isp_stats);
61
62void
63ia_css_translate_dvs_statistics(
64    struct ia_css_dvs_statistics               *host_stats,
65    const struct ia_css_isp_dvs_statistics_map *isp_stats);
66
67struct ia_css_isp_dvs_statistics *
68ia_css_isp_dvs_statistics_allocate(
69    const struct ia_css_dvs_grid_info *grid);
70
71void
72ia_css_isp_dvs_statistics_free(
73    struct ia_css_isp_dvs_statistics *me);
74
75size_t ia_css_sdis_hor_coef_tbl_bytes(const struct ia_css_binary *binary);
76size_t ia_css_sdis_ver_coef_tbl_bytes(const struct ia_css_binary *binary);
77
78void
79ia_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
87void ia_css_sdis_clear_coefficients(
88    struct ia_css_dvs_coefficients *dvs_coefs);
89
90void ia_css_sdis_horicoef_debug_dtrace(
91    const struct ia_css_dvs_coefficients *config, unsigned int level);
92
93void ia_css_sdis_vertcoef_debug_dtrace(
94    const struct ia_css_dvs_coefficients *config, unsigned int level);
95
96void ia_css_sdis_horiproj_debug_dtrace(
97    const struct ia_css_dvs_coefficients *config, unsigned int level);
98
99void 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