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 __CSI_RX_PUBLIC_H_INCLUDED__
17#define __CSI_RX_PUBLIC_H_INCLUDED__
18
19/*****************************************************
20 *
21 * Native command interface (NCI).
22 *
23 *****************************************************/
24/**
25 * @brief Get the csi rx frontend state.
26 * Get the state of the csi rx frontend regiester-set.
27 *
28 * @param[in]	id	The global unique ID of the csi rx fe controller.
29 * @param[out]	state	Point to the register-state.
30 */
31void csi_rx_fe_ctrl_get_state(
32    const csi_rx_frontend_ID_t ID,
33    csi_rx_fe_ctrl_state_t *state);
34/**
35 * @brief Dump the csi rx frontend state.
36 * Dump the state of the csi rx frontend regiester-set.
37 *
38 * @param[in]	id	The global unique ID of the csi rx fe controller.
39 * @param[in]	state	Point to the register-state.
40 */
41void csi_rx_fe_ctrl_dump_state(
42    const csi_rx_frontend_ID_t ID,
43    csi_rx_fe_ctrl_state_t *state);
44/**
45 * @brief Get the state of the csi rx fe dlane.
46 * Get the state of the register set per dlane process.
47 *
48 * @param[in]	id			The global unique ID of the input-buffer controller.
49 * @param[in]	lane		The lane ID.
50 * @param[out]	state		Point to the dlane state.
51 */
52void csi_rx_fe_ctrl_get_dlane_state(
53    const csi_rx_frontend_ID_t ID,
54    const u32 lane,
55    csi_rx_fe_ctrl_lane_t *dlane_state);
56/**
57 * @brief Get the csi rx backend state.
58 * Get the state of the csi rx backend regiester-set.
59 *
60 * @param[in]	id	The global unique ID of the csi rx be controller.
61 * @param[out]	state	Point to the register-state.
62 */
63void csi_rx_be_ctrl_get_state(
64    const csi_rx_backend_ID_t ID,
65    csi_rx_be_ctrl_state_t *state);
66/**
67 * @brief Dump the csi rx backend state.
68 * Dump the state of the csi rx backend regiester-set.
69 *
70 * @param[in]	id	The global unique ID of the csi rx be controller.
71 * @param[in]	state	Point to the register-state.
72 */
73void csi_rx_be_ctrl_dump_state(
74    const csi_rx_backend_ID_t ID,
75    csi_rx_be_ctrl_state_t *state);
76/* end of NCI */
77
78/*****************************************************
79 *
80 * Device level interface (DLI).
81 *
82 *****************************************************/
83/**
84 * @brief Load the register value.
85 * Load the value of the register of the csi rx fe.
86 *
87 * @param[in]	ID	The global unique ID for the ibuf-controller instance.
88 * @param[in]	reg	The offset address of the register.
89 *
90 * @return the value of the register.
91 */
92hrt_data csi_rx_fe_ctrl_reg_load(
93    const csi_rx_frontend_ID_t ID,
94    const hrt_address reg);
95/**
96 * @brief Store a value to the register.
97 * Store a value to the registe of the csi rx fe.
98 *
99 * @param[in]	ID		The global unique ID for the ibuf-controller instance.
100 * @param[in]	reg		The offset address of the register.
101 * @param[in]	value	The value to be stored.
102 *
103 */
104void csi_rx_fe_ctrl_reg_store(
105    const csi_rx_frontend_ID_t ID,
106    const hrt_address reg,
107    const hrt_data value);
108/**
109 * @brief Load the register value.
110 * Load the value of the register of the csirx be.
111 *
112 * @param[in]	ID	The global unique ID for the ibuf-controller instance.
113 * @param[in]	reg	The offset address of the register.
114 *
115 * @return the value of the register.
116 */
117hrt_data csi_rx_be_ctrl_reg_load(
118    const csi_rx_backend_ID_t ID,
119    const hrt_address reg);
120/**
121 * @brief Store a value to the register.
122 * Store a value to the registe of the csi rx be.
123 *
124 * @param[in]	ID		The global unique ID for the ibuf-controller instance.
125 * @param[in]	reg		The offset address of the register.
126 * @param[in]	value	The value to be stored.
127 *
128 */
129void csi_rx_be_ctrl_reg_store(
130    const csi_rx_backend_ID_t ID,
131    const hrt_address reg,
132    const hrt_data value);
133/* end of DLI */
134#endif /* __CSI_RX_PUBLIC_H_INCLUDED__ */
135