GNU Linux-libre 5.19-rc6-gnu
[releases.git] / drivers / staging / media / atomisp / pci / ia_css_mipi.h
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_MIPI_H
17 #define __IA_CSS_MIPI_H
18
19 /* @file
20  * This file contains MIPI support functionality
21  */
22
23 #include <type_support.h>
24 #include "ia_css_err.h"
25 #include "ia_css_stream_format.h"
26 #include "ia_css_input_port.h"
27
28 /* @brief Register size of a CSS MIPI frame for check during capturing.
29  *
30  * @param[in]   port    CSI-2 port this check is registered.
31  * @param[in]   size_mem_words  The frame size in memory words (32B).
32  * @return              Return the error in case of failure. E.g. MAX_NOF_ENTRIES REACHED
33  *
34  * Register size of a CSS MIPI frame to check during capturing. Up to
35  *              IA_CSS_MIPI_SIZE_CHECK_MAX_NOF_ENTRIES entries per port allowed. Entries are reset
36  *              when stream is stopped.
37  *
38  *
39  */
40 int
41 ia_css_mipi_frame_enable_check_on_size(const enum mipi_port_id port,
42                                        const unsigned int       size_mem_words);
43
44 /* @brief Calculate the size of a mipi frame.
45  *
46  * @param[in]   width           The width (in pixels) of the frame.
47  * @param[in]   height          The height (in lines) of the frame.
48  * @param[in]   format          The frame (MIPI) format.
49  * @param[in]   hasSOLandEOL    Whether frame (MIPI) contains (optional) SOL and EOF packets.
50  * @param[in]   embedded_data_size_words                Embedded data size in memory words.
51  * @param               size_mem_words                                  The mipi frame size in memory words (32B).
52  * @return              The error code.
53  *
54  * Calculate the size of a mipi frame, based on the resolution and format.
55  */
56 int
57 ia_css_mipi_frame_calculate_size(const unsigned int width,
58                                  const unsigned int height,
59                                  const enum atomisp_input_format format,
60                                  const bool hasSOLandEOL,
61                                  const unsigned int embedded_data_size_words,
62                                  unsigned int *size_mem_words);
63
64 #endif /* __IA_CSS_MIPI_H */