blob: 81dc58640d83ea25ea06bc70c408dd6cdc802244 [file] [log] [blame]
/* 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__ */