/* 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 __CSI_RX_LOCAL_H_INCLUDED__
#define __CSI_RX_LOCAL_H_INCLUDED__

#include "csi_rx_global.h"
#define N_CSI_RX_BE_MIPI_COMP_FMT_REG		4
#define N_CSI_RX_BE_MIPI_CUSTOM_PEC		12
#define N_CSI_RX_BE_SHORT_PKT_LUT		4
#define N_CSI_RX_BE_LONG_PKT_LUT		8
typedef struct csi_rx_fe_ctrl_state_s		csi_rx_fe_ctrl_state_t;
typedef struct csi_rx_fe_ctrl_lane_s		csi_rx_fe_ctrl_lane_t;
typedef struct csi_rx_be_ctrl_state_s		csi_rx_be_ctrl_state_t;
/*mipi_backend_custom_mode_pixel_extraction_config*/
typedef struct csi_rx_be_ctrl_pec_s		csi_rx_be_ctrl_pec_t;

struct csi_rx_fe_ctrl_lane_s {
	hrt_data	termen;
	hrt_data	settle;
};

struct csi_rx_fe_ctrl_state_s {
	hrt_data		enable;
	hrt_data		nof_enable_lanes;
	hrt_data		error_handling;
	hrt_data		status;
	hrt_data		status_dlane_hs;
	hrt_data		status_dlane_lp;
	csi_rx_fe_ctrl_lane_t	clane;
	csi_rx_fe_ctrl_lane_t	dlane[N_CSI_RX_DLANE_ID];
};

struct csi_rx_be_ctrl_state_s {
	hrt_data		enable;
	hrt_data		status;
	hrt_data		comp_format_reg[N_CSI_RX_BE_MIPI_COMP_FMT_REG];
	hrt_data		raw16;
	hrt_data		raw18;
	hrt_data		force_raw8;
	hrt_data		irq_status;
	hrt_data		custom_mode_enable;
	hrt_data		custom_mode_data_state;
	hrt_data		pec[N_CSI_RX_BE_MIPI_CUSTOM_PEC];
	hrt_data		custom_mode_valid_eop_config;
	hrt_data		global_lut_disregard_reg;
	hrt_data		packet_status_stall;
	hrt_data		short_packet_lut_entry[N_CSI_RX_BE_SHORT_PKT_LUT];
	hrt_data		long_packet_lut_entry[N_CSI_RX_BE_LONG_PKT_LUT];
};
#endif /* __CSI_RX_LOCAL_H_INCLUDED__ */
