/* SPDX-License-Identifier: GPL-2.0 */ /* * Support for Intel Camera Imaging ISP subsystem. * Copyright (c) 2015, Intel Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, * version 2, as published by the Free Software Foundation. * * This program is distributed in the hope it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. */ #ifndef __INPUT_FORMATTER_PUBLIC_H_INCLUDED__ #define __INPUT_FORMATTER_PUBLIC_H_INCLUDED__ #include <type_support.h> #include "system_local.h" /*! Reset INPUT_FORMATTER[ID] \param ID[in] INPUT_FORMATTER identifier \return none, reset(INPUT_FORMATTER[ID]) */ void input_formatter_rst( const input_formatter_ID_t ID); /*! Set the blocking mode of INPUT_FORMATTER[ID] \param ID[in] INPUT_FORMATTER identifier \param enable[in] blocking enable flag \use - In HW, the capture unit will deliver an infinite stream of frames, the input formatter will synchronise on the first SOF. In simulation there are only a fixed number of frames, presented only once. By enabling blocking the inputformatter will wait on the first presented frame, thus avoiding race in the simulation setup. \return none, INPUT_FORMATTER[ID].blocking_mode = enable */ void input_formatter_set_fifo_blocking_mode( const input_formatter_ID_t ID, const bool enable); /*! Return the data alignment of INPUT_FORMATTER[ID] \param ID[in] INPUT_FORMATTER identifier \return alignment(INPUT_FORMATTER[ID].data) */ unsigned int input_formatter_get_alignment( const input_formatter_ID_t ID); /*! Read the source switch state into INPUT_FORMATTER[ID] \param ID[in] INPUT_FORMATTER identifier \param state[out] input formatter switch state structure \return none, state = INPUT_FORMATTER[ID].switch_state */ void input_formatter_get_switch_state( const input_formatter_ID_t ID, input_formatter_switch_state_t *state); /*! Read the control registers of INPUT_FORMATTER[ID] \param ID[in] INPUT_FORMATTER identifier \param state[out] input formatter state structure \return none, state = INPUT_FORMATTER[ID].state */ void input_formatter_get_state( const input_formatter_ID_t ID, input_formatter_state_t *state); /*! Read the control registers of bin copy INPUT_FORMATTER[ID] \param ID[in] INPUT_FORMATTER identifier \param state[out] input formatter state structure \return none, state = INPUT_FORMATTER[ID].state */ void input_formatter_bin_get_state( const input_formatter_ID_t ID, input_formatter_bin_state_t *state); /*! Write to a control register of INPUT_FORMATTER[ID] \param ID[in] INPUT_FORMATTER identifier \param reg_addr[in] register byte address \param value[in] The data to be written \return none, INPUT_FORMATTER[ID].ctrl[reg] = value */ STORAGE_CLASS_INPUT_FORMATTER_H void input_formatter_reg_store( const input_formatter_ID_t ID, const hrt_address reg_addr, const hrt_data value); /*! Read from a control register of INPUT_FORMATTER[ID] \param ID[in] INPUT_FORMATTER identifier \param reg_addr[in] register byte address \param value[in] The data to be written \return INPUT_FORMATTER[ID].ctrl[reg] */ STORAGE_CLASS_INPUT_FORMATTER_H hrt_data input_formatter_reg_load( const input_formatter_ID_t ID, const unsigned int reg_addr); #endif /* __INPUT_FORMATTER_PUBLIC_H_INCLUDED__ */