1f5fbb83fSMauro Carvalho Chehab /* SPDX-License-Identifier: GPL-2.0 */
29d4fa1a1SMauro Carvalho Chehab /*
39d4fa1a1SMauro Carvalho Chehab  * Support for Intel Camera Imaging ISP subsystem.
49d4fa1a1SMauro Carvalho Chehab  * Copyright (c) 2010-2015, Intel Corporation.
59d4fa1a1SMauro Carvalho Chehab  *
69d4fa1a1SMauro Carvalho Chehab  * This program is free software; you can redistribute it and/or modify it
79d4fa1a1SMauro Carvalho Chehab  * under the terms and conditions of the GNU General Public License,
89d4fa1a1SMauro Carvalho Chehab  * version 2, as published by the Free Software Foundation.
99d4fa1a1SMauro Carvalho Chehab  *
109d4fa1a1SMauro Carvalho Chehab  * This program is distributed in the hope it will be useful, but WITHOUT
119d4fa1a1SMauro Carvalho Chehab  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
129d4fa1a1SMauro Carvalho Chehab  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
139d4fa1a1SMauro Carvalho Chehab  * more details.
149d4fa1a1SMauro Carvalho Chehab  */
159d4fa1a1SMauro Carvalho Chehab 
16*2aea82b0SKate Hsuan #ifndef __INPUT_SYSTEM_2400_LOCAL_H_INCLUDED__
17*2aea82b0SKate Hsuan #define __INPUT_SYSTEM_2400_LOCAL_H_INCLUDED__
189d4fa1a1SMauro Carvalho Chehab 
199d4fa1a1SMauro Carvalho Chehab #include "input_system_defs.h"		/* HIVE_ISYS_GPREG_MULTICAST_A_IDX,... */
20d0b674acSMauro Carvalho Chehab 
21d0b674acSMauro Carvalho Chehab /*
22d0b674acSMauro Carvalho Chehab  * _HRT_CSS_RECEIVER_2400_TWO_PIXEL_EN_REG_IDX,
23d0b674acSMauro Carvalho Chehab  * _HRT_CSS_RECEIVER_2400_CSI2_FUNC_PROG_REG_IDX,...
24d0b674acSMauro Carvalho Chehab  */
25d0b674acSMauro Carvalho Chehab #include "css_receiver_2400_defs.h"
26d0b674acSMauro Carvalho Chehab 
279d4fa1a1SMauro Carvalho Chehab #include "isp_capture_defs.h"
28d0b674acSMauro Carvalho Chehab 
299d4fa1a1SMauro Carvalho Chehab #include "isp_acquisition_defs.h"
309d4fa1a1SMauro Carvalho Chehab #include "input_system_ctrl_defs.h"
319d4fa1a1SMauro Carvalho Chehab 
329d4fa1a1SMauro Carvalho Chehab struct target_cfg2400_s {
339d4fa1a1SMauro Carvalho Chehab 	input_switch_cfg_channel_t		input_switch_channel_cfg;
349d4fa1a1SMauro Carvalho Chehab 	target_isp_cfg_t	target_isp_cfg;
359d4fa1a1SMauro Carvalho Chehab 	target_sp_cfg_t		target_sp_cfg;
369d4fa1a1SMauro Carvalho Chehab 	target_strm2mem_cfg_t	target_strm2mem_cfg;
379d4fa1a1SMauro Carvalho Chehab };
389d4fa1a1SMauro Carvalho Chehab 
399d4fa1a1SMauro Carvalho Chehab // Configuration of a channel.
409d4fa1a1SMauro Carvalho Chehab struct channel_cfg_s {
419d4fa1a1SMauro Carvalho Chehab 	u32		ch_id;
429d4fa1a1SMauro Carvalho Chehab 	backend_channel_cfg_t	backend_ch;
439d4fa1a1SMauro Carvalho Chehab 	input_system_source_t	source_type;
449d4fa1a1SMauro Carvalho Chehab 	source_cfg_t		source_cfg;
459d4fa1a1SMauro Carvalho Chehab 	target_cfg2400_t	target_cfg;
469d4fa1a1SMauro Carvalho Chehab };
479d4fa1a1SMauro Carvalho Chehab 
489d4fa1a1SMauro Carvalho Chehab // Complete configuration for input system.
499d4fa1a1SMauro Carvalho Chehab struct input_system_cfg2400_s {
509d4fa1a1SMauro Carvalho Chehab 	input_system_source_t source_type;
519d4fa1a1SMauro Carvalho Chehab 	input_system_config_flags_t	source_type_flags;
529d4fa1a1SMauro Carvalho Chehab 	//channel_cfg_t		channel[N_CHANNELS];
539d4fa1a1SMauro Carvalho Chehab 	input_system_config_flags_t	ch_flags[N_CHANNELS];
549d4fa1a1SMauro Carvalho Chehab 	//  This is the place where the buffers' settings are collected, as given.
559d4fa1a1SMauro Carvalho Chehab 	csi_cfg_t			csi_value[N_CSI_PORTS];
569d4fa1a1SMauro Carvalho Chehab 	input_system_config_flags_t	csi_flags[N_CSI_PORTS];
579d4fa1a1SMauro Carvalho Chehab 
589d4fa1a1SMauro Carvalho Chehab 	// Possible another struct for ib.
599d4fa1a1SMauro Carvalho Chehab 	// This buffers set at the end, based on the all configurations.
60284be891SMauro Carvalho Chehab 	isp2400_ib_buffer_t			csi_buffer[N_CSI_PORTS];
619d4fa1a1SMauro Carvalho Chehab 	input_system_config_flags_t	csi_buffer_flags[N_CSI_PORTS];
62284be891SMauro Carvalho Chehab 	isp2400_ib_buffer_t			acquisition_buffer_unique;
639d4fa1a1SMauro Carvalho Chehab 	input_system_config_flags_t	acquisition_buffer_unique_flags;
649d4fa1a1SMauro Carvalho Chehab 	u32			unallocated_ib_mem_words; // Used for check.DEFAULT = IB_CAPACITY_IN_WORDS.
659d4fa1a1SMauro Carvalho Chehab 	//uint32_t			acq_allocated_ib_mem_words;
669d4fa1a1SMauro Carvalho Chehab 
679d4fa1a1SMauro Carvalho Chehab 	input_system_connection_t		multicast[N_CSI_PORTS];
689d4fa1a1SMauro Carvalho Chehab 	input_system_multiplex_t		multiplexer;
699d4fa1a1SMauro Carvalho Chehab 	input_system_config_flags_t		multiplexer_flags;
709d4fa1a1SMauro Carvalho Chehab 
719d4fa1a1SMauro Carvalho Chehab 	tpg_cfg_t			tpg_value;
729d4fa1a1SMauro Carvalho Chehab 	input_system_config_flags_t	tpg_flags;
739d4fa1a1SMauro Carvalho Chehab 	prbs_cfg_t			prbs_value;
749d4fa1a1SMauro Carvalho Chehab 	input_system_config_flags_t	prbs_flags;
759d4fa1a1SMauro Carvalho Chehab 	gpfifo_cfg_t		gpfifo_value;
769d4fa1a1SMauro Carvalho Chehab 	input_system_config_flags_t	gpfifo_flags;
779d4fa1a1SMauro Carvalho Chehab 
789d4fa1a1SMauro Carvalho Chehab 	input_switch_cfg_t		input_switch_cfg;
799d4fa1a1SMauro Carvalho Chehab 
809d4fa1a1SMauro Carvalho Chehab 	target_isp_cfg_t		target_isp[N_CHANNELS];
819d4fa1a1SMauro Carvalho Chehab 	input_system_config_flags_t	target_isp_flags[N_CHANNELS];
829d4fa1a1SMauro Carvalho Chehab 	target_sp_cfg_t			target_sp[N_CHANNELS];
839d4fa1a1SMauro Carvalho Chehab 	input_system_config_flags_t	target_sp_flags[N_CHANNELS];
849d4fa1a1SMauro Carvalho Chehab 	target_strm2mem_cfg_t	target_strm2mem[N_CHANNELS];
859d4fa1a1SMauro Carvalho Chehab 	input_system_config_flags_t	target_strm2mem_flags[N_CHANNELS];
869d4fa1a1SMauro Carvalho Chehab 
879d4fa1a1SMauro Carvalho Chehab 	input_system_config_flags_t		session_flags;
889d4fa1a1SMauro Carvalho Chehab 
899d4fa1a1SMauro Carvalho Chehab };
909d4fa1a1SMauro Carvalho Chehab 
919d4fa1a1SMauro Carvalho Chehab /*
929d4fa1a1SMauro Carvalho Chehab  * For each MIPI port
939d4fa1a1SMauro Carvalho Chehab  */
949d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_DEVICE_READY_REG_IDX			_HRT_CSS_RECEIVER_2400_DEVICE_READY_REG_IDX
959d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_IRQ_STATUS_REG_IDX			_HRT_CSS_RECEIVER_2400_IRQ_STATUS_REG_IDX
969d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_IRQ_ENABLE_REG_IDX			_HRT_CSS_RECEIVER_2400_IRQ_ENABLE_REG_IDX
979d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_TIMEOUT_COUNT_REG_IDX		    _HRT_CSS_RECEIVER_2400_CSI2_FUNC_PROG_REG_IDX
989d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_INIT_COUNT_REG_IDX			_HRT_CSS_RECEIVER_2400_INIT_COUNT_REG_IDX
999d4fa1a1SMauro Carvalho Chehab /* new regs for each MIPI port w.r.t. 2300 */
1009d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_RAW16_18_DATAID_REG_IDX       _HRT_CSS_RECEIVER_2400_RAW16_18_DATAID_REG_IDX
1019d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_SYNC_COUNT_REG_IDX            _HRT_CSS_RECEIVER_2400_SYNC_COUNT_REG_IDX
1029d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_RX_COUNT_REG_IDX              _HRT_CSS_RECEIVER_2400_RX_COUNT_REG_IDX
1039d4fa1a1SMauro Carvalho Chehab 
1049d4fa1a1SMauro Carvalho Chehab /* _HRT_CSS_RECEIVER_2400_COMP_FORMAT_REG_IDX is not defined per MIPI port but per channel */
1059d4fa1a1SMauro Carvalho Chehab /* _HRT_CSS_RECEIVER_2400_COMP_PREDICT_REG_IDX is not defined per MIPI port but per channel */
1069d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_FS_TO_LS_DELAY_REG_IDX        _HRT_CSS_RECEIVER_2400_FS_TO_LS_DELAY_REG_IDX
1079d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_LS_TO_DATA_DELAY_REG_IDX      _HRT_CSS_RECEIVER_2400_LS_TO_DATA_DELAY_REG_IDX
1089d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_DATA_TO_LE_DELAY_REG_IDX      _HRT_CSS_RECEIVER_2400_DATA_TO_LE_DELAY_REG_IDX
1099d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_LE_TO_FE_DELAY_REG_IDX        _HRT_CSS_RECEIVER_2400_LE_TO_FE_DELAY_REG_IDX
1109d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_FE_TO_FS_DELAY_REG_IDX        _HRT_CSS_RECEIVER_2400_FE_TO_FS_DELAY_REG_IDX
1119d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_LE_TO_LS_DELAY_REG_IDX        _HRT_CSS_RECEIVER_2400_LE_TO_LS_DELAY_REG_IDX
1129d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_TWO_PIXEL_EN_REG_IDX			_HRT_CSS_RECEIVER_2400_TWO_PIXEL_EN_REG_IDX
1139d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_BACKEND_RST_REG_IDX           _HRT_CSS_RECEIVER_2400_BACKEND_RST_REG_IDX
1149d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_RAW18_REG_IDX                 _HRT_CSS_RECEIVER_2400_RAW18_REG_IDX
1159d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_FORCE_RAW8_REG_IDX            _HRT_CSS_RECEIVER_2400_FORCE_RAW8_REG_IDX
1169d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_RAW16_REG_IDX                 _HRT_CSS_RECEIVER_2400_RAW16_REG_IDX
1179d4fa1a1SMauro Carvalho Chehab 
1189d4fa1a1SMauro Carvalho Chehab /* Previously MIPI port regs, now 2x2 logical channel regs */
1199d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_COMP_SCHEME_VC0_REG0_IDX		_HRT_CSS_RECEIVER_2400_COMP_SCHEME_VC0_REG0_IDX
1209d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_COMP_SCHEME_VC0_REG1_IDX		_HRT_CSS_RECEIVER_2400_COMP_SCHEME_VC0_REG1_IDX
1219d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_COMP_SCHEME_VC1_REG0_IDX		_HRT_CSS_RECEIVER_2400_COMP_SCHEME_VC1_REG0_IDX
1229d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_COMP_SCHEME_VC1_REG1_IDX		_HRT_CSS_RECEIVER_2400_COMP_SCHEME_VC1_REG1_IDX
1239d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_COMP_SCHEME_VC2_REG0_IDX		_HRT_CSS_RECEIVER_2400_COMP_SCHEME_VC2_REG0_IDX
1249d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_COMP_SCHEME_VC2_REG1_IDX		_HRT_CSS_RECEIVER_2400_COMP_SCHEME_VC2_REG1_IDX
1259d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_COMP_SCHEME_VC3_REG0_IDX		_HRT_CSS_RECEIVER_2400_COMP_SCHEME_VC3_REG0_IDX
1269d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_COMP_SCHEME_VC3_REG1_IDX		_HRT_CSS_RECEIVER_2400_COMP_SCHEME_VC3_REG1_IDX
1279d4fa1a1SMauro Carvalho Chehab 
1289d4fa1a1SMauro Carvalho Chehab /* Second backend is at offset 0x0700 w.r.t. the first port at offset 0x0100 */
1299d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_BE_OFFSET                              448
1309d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_BE_GSP_ACC_OVL_REG_IDX        (_HRT_CSS_RECEIVER_2400_BE_GSP_ACC_OVL_REG_IDX + _HRT_CSS_BE_OFFSET)
1319d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_BE_SRST_REG_IDX               (_HRT_CSS_RECEIVER_2400_BE_SRST_REG_IDX + _HRT_CSS_BE_OFFSET)
1329d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_BE_TWO_PPC_REG_IDX            (_HRT_CSS_RECEIVER_2400_BE_TWO_PPC_REG_IDX + _HRT_CSS_BE_OFFSET)
1339d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_BE_COMP_FORMAT_REG0_IDX       (_HRT_CSS_RECEIVER_2400_BE_COMP_FORMAT_REG0_IDX + _HRT_CSS_BE_OFFSET)
1349d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_BE_COMP_FORMAT_REG1_IDX       (_HRT_CSS_RECEIVER_2400_BE_COMP_FORMAT_REG1_IDX + _HRT_CSS_BE_OFFSET)
1359d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_BE_COMP_FORMAT_REG2_IDX       (_HRT_CSS_RECEIVER_2400_BE_COMP_FORMAT_REG2_IDX + _HRT_CSS_BE_OFFSET)
1369d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_BE_COMP_FORMAT_REG3_IDX       (_HRT_CSS_RECEIVER_2400_BE_COMP_FORMAT_REG3_IDX + _HRT_CSS_BE_OFFSET)
1379d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_BE_SEL_REG_IDX                (_HRT_CSS_RECEIVER_2400_BE_SEL_REG_IDX + _HRT_CSS_BE_OFFSET)
1389d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_BE_RAW16_CONFIG_REG_IDX       (_HRT_CSS_RECEIVER_2400_BE_RAW16_CONFIG_REG_IDX + _HRT_CSS_BE_OFFSET)
1399d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_BE_RAW18_CONFIG_REG_IDX       (_HRT_CSS_RECEIVER_2400_BE_RAW18_CONFIG_REG_IDX + _HRT_CSS_BE_OFFSET)
1409d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_BE_FORCE_RAW8_REG_IDX         (_HRT_CSS_RECEIVER_2400_BE_FORCE_RAW8_REG_IDX + _HRT_CSS_BE_OFFSET)
1419d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_BE_IRQ_STATUS_REG_IDX         (_HRT_CSS_RECEIVER_2400_BE_IRQ_STATUS_REG_IDX + _HRT_CSS_BE_OFFSET)
1429d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_BE_IRQ_CLEAR_REG_IDX          (_HRT_CSS_RECEIVER_2400_BE_IRQ_CLEAR_REG_IDX + _HRT_CSS_BE_OFFSET)
1439d4fa1a1SMauro Carvalho Chehab 
1449d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_IRQ_OVERRUN_BIT		_HRT_CSS_RECEIVER_2400_IRQ_OVERRUN_BIT
1459d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_IRQ_INIT_TIMEOUT_BIT		_HRT_CSS_RECEIVER_2400_IRQ_RESERVED_BIT
1469d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_IRQ_SLEEP_MODE_ENTRY_BIT	_HRT_CSS_RECEIVER_2400_IRQ_SLEEP_MODE_ENTRY_BIT
1479d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_IRQ_SLEEP_MODE_EXIT_BIT	_HRT_CSS_RECEIVER_2400_IRQ_SLEEP_MODE_EXIT_BIT
1489d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_IRQ_ERR_SOT_HS_BIT		_HRT_CSS_RECEIVER_2400_IRQ_ERR_SOT_HS_BIT
1499d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_IRQ_ERR_SOT_SYNC_HS_BIT	_HRT_CSS_RECEIVER_2400_IRQ_ERR_SOT_SYNC_HS_BIT
1509d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_IRQ_ERR_CONTROL_BIT		_HRT_CSS_RECEIVER_2400_IRQ_ERR_CONTROL_BIT
1519d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_IRQ_ERR_ECC_DOUBLE_BIT	_HRT_CSS_RECEIVER_2400_IRQ_ERR_ECC_DOUBLE_BIT
1529d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_IRQ_ERR_ECC_CORRECTED_BIT	_HRT_CSS_RECEIVER_2400_IRQ_ERR_ECC_CORRECTED_BIT
1539d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_IRQ_ERR_ECC_NO_CORRECTION_BIT	_HRT_CSS_RECEIVER_2400_IRQ_ERR_ECC_NO_CORRECTION_BIT
1549d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_IRQ_ERR_CRC_BIT		_HRT_CSS_RECEIVER_2400_IRQ_ERR_CRC_BIT
1559d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_IRQ_ERR_ID_BIT		_HRT_CSS_RECEIVER_2400_IRQ_ERR_ID_BIT
1569d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_IRQ_ERR_FRAME_SYNC_BIT	_HRT_CSS_RECEIVER_2400_IRQ_ERR_FRAME_SYNC_BIT
1579d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_IRQ_ERR_FRAME_DATA_BIT	_HRT_CSS_RECEIVER_2400_IRQ_ERR_FRAME_DATA_BIT
1589d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_IRQ_DATA_TIMEOUT_BIT		_HRT_CSS_RECEIVER_2400_IRQ_DATA_TIMEOUT_BIT
1599d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_IRQ_ERR_ESCAPE_BIT		_HRT_CSS_RECEIVER_2400_IRQ_ERR_ESCAPE_BIT
1609d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_IRQ_ERR_LINE_SYNC_BIT		_HRT_CSS_RECEIVER_2400_IRQ_ERR_LINE_SYNC_BIT
1619d4fa1a1SMauro Carvalho Chehab 
1629d4fa1a1SMauro Carvalho Chehab #define _HRT_CSS_RECEIVER_FUNC_PROG_REG_IDX		_HRT_CSS_RECEIVER_2400_CSI2_FUNC_PROG_REG_IDX
1639d4fa1a1SMauro Carvalho Chehab #define	_HRT_CSS_RECEIVER_DATA_TIMEOUT_IDX		_HRT_CSS_RECEIVER_2400_CSI2_DATA_TIMEOUT_IDX
1649d4fa1a1SMauro Carvalho Chehab #define	_HRT_CSS_RECEIVER_DATA_TIMEOUT_BITS		_HRT_CSS_RECEIVER_2400_CSI2_DATA_TIMEOUT_BITS
1659d4fa1a1SMauro Carvalho Chehab 
1669d4fa1a1SMauro Carvalho Chehab typedef enum {
1678fc67b18SKate Hsuan 	MIPI_FORMAT_2400_RGB888 = 0,
1688fc67b18SKate Hsuan 	MIPI_FORMAT_2400_RGB555,
1698fc67b18SKate Hsuan 	MIPI_FORMAT_2400_RGB444,
1708fc67b18SKate Hsuan 	MIPI_FORMAT_2400_RGB565,
1718fc67b18SKate Hsuan 	MIPI_FORMAT_2400_RGB666,
1728fc67b18SKate Hsuan 	MIPI_FORMAT_2400_RAW8,		/* 5 */
1738fc67b18SKate Hsuan 	MIPI_FORMAT_2400_RAW10,
1748fc67b18SKate Hsuan 	MIPI_FORMAT_2400_RAW6,
1758fc67b18SKate Hsuan 	MIPI_FORMAT_2400_RAW7,
1768fc67b18SKate Hsuan 	MIPI_FORMAT_2400_RAW12,
1778fc67b18SKate Hsuan 	MIPI_FORMAT_2400_RAW14,		/* 10 */
1788fc67b18SKate Hsuan 	MIPI_FORMAT_2400_YUV420_8,
1798fc67b18SKate Hsuan 	MIPI_FORMAT_2400_YUV420_10,
1808fc67b18SKate Hsuan 	MIPI_FORMAT_2400_YUV422_8,
1818fc67b18SKate Hsuan 	MIPI_FORMAT_2400_YUV422_10,
1828fc67b18SKate Hsuan 	MIPI_FORMAT_2400_CUSTOM0,	/* 15 */
1838fc67b18SKate Hsuan 	MIPI_FORMAT_2400_YUV420_8_LEGACY,
1848fc67b18SKate Hsuan 	MIPI_FORMAT_2400_EMBEDDED,
1858fc67b18SKate Hsuan 	MIPI_FORMAT_2400_CUSTOM1,
1868fc67b18SKate Hsuan 	MIPI_FORMAT_2400_CUSTOM2,
1878fc67b18SKate Hsuan 	MIPI_FORMAT_2400_CUSTOM3,	/* 20 */
1888fc67b18SKate Hsuan 	MIPI_FORMAT_2400_CUSTOM4,
1898fc67b18SKate Hsuan 	MIPI_FORMAT_2400_CUSTOM5,
1908fc67b18SKate Hsuan 	MIPI_FORMAT_2400_CUSTOM6,
1918fc67b18SKate Hsuan 	MIPI_FORMAT_2400_CUSTOM7,
1928fc67b18SKate Hsuan 	MIPI_FORMAT_2400_YUV420_8_SHIFT,	/* 25 */
1938fc67b18SKate Hsuan 	MIPI_FORMAT_2400_YUV420_10_SHIFT,
1948fc67b18SKate Hsuan 	MIPI_FORMAT_2400_RAW16,
1958fc67b18SKate Hsuan 	MIPI_FORMAT_2400_RAW18,
1968fc67b18SKate Hsuan 	N_MIPI_FORMAT_2400,
1978fc67b18SKate Hsuan } mipi_format_2400_t;
1989d4fa1a1SMauro Carvalho Chehab 
1999d4fa1a1SMauro Carvalho Chehab #define N_MIPI_FORMAT_CUSTOM	8
2009d4fa1a1SMauro Carvalho Chehab 
2019d4fa1a1SMauro Carvalho Chehab /* The number of stores for compressed format types */
2029d4fa1a1SMauro Carvalho Chehab #define	N_MIPI_COMPRESSOR_CONTEXT	(N_RX_CHANNEL_ID * N_MIPI_FORMAT_CUSTOM)
2039d4fa1a1SMauro Carvalho Chehab 
2049d4fa1a1SMauro Carvalho Chehab typedef enum {
2059d4fa1a1SMauro Carvalho Chehab 	RX_IRQ_INFO_BUFFER_OVERRUN   = 1UL << _HRT_CSS_RECEIVER_IRQ_OVERRUN_BIT,
2069d4fa1a1SMauro Carvalho Chehab 	RX_IRQ_INFO_INIT_TIMEOUT     = 1UL << _HRT_CSS_RECEIVER_IRQ_INIT_TIMEOUT_BIT,
2079d4fa1a1SMauro Carvalho Chehab 	RX_IRQ_INFO_ENTER_SLEEP_MODE = 1UL << _HRT_CSS_RECEIVER_IRQ_SLEEP_MODE_ENTRY_BIT,
2089d4fa1a1SMauro Carvalho Chehab 	RX_IRQ_INFO_EXIT_SLEEP_MODE  = 1UL << _HRT_CSS_RECEIVER_IRQ_SLEEP_MODE_EXIT_BIT,
2099d4fa1a1SMauro Carvalho Chehab 	RX_IRQ_INFO_ECC_CORRECTED    = 1UL << _HRT_CSS_RECEIVER_IRQ_ERR_ECC_CORRECTED_BIT,
2109d4fa1a1SMauro Carvalho Chehab 	RX_IRQ_INFO_ERR_SOT          = 1UL << _HRT_CSS_RECEIVER_IRQ_ERR_SOT_HS_BIT,
2119d4fa1a1SMauro Carvalho Chehab 	RX_IRQ_INFO_ERR_SOT_SYNC     = 1UL << _HRT_CSS_RECEIVER_IRQ_ERR_SOT_SYNC_HS_BIT,
2129d4fa1a1SMauro Carvalho Chehab 	RX_IRQ_INFO_ERR_CONTROL      = 1UL << _HRT_CSS_RECEIVER_IRQ_ERR_CONTROL_BIT,
2139d4fa1a1SMauro Carvalho Chehab 	RX_IRQ_INFO_ERR_ECC_DOUBLE   = 1UL << _HRT_CSS_RECEIVER_IRQ_ERR_ECC_DOUBLE_BIT,
2149d4fa1a1SMauro Carvalho Chehab 	/*	RX_IRQ_INFO_NO_ERR           = 1UL << _HRT_CSS_RECEIVER_IRQ_ERR_ECC_NO_CORRECTION_BIT, */
2159d4fa1a1SMauro Carvalho Chehab 	RX_IRQ_INFO_ERR_CRC          = 1UL << _HRT_CSS_RECEIVER_IRQ_ERR_CRC_BIT,
2169d4fa1a1SMauro Carvalho Chehab 	RX_IRQ_INFO_ERR_UNKNOWN_ID   = 1UL << _HRT_CSS_RECEIVER_IRQ_ERR_ID_BIT,
2179d4fa1a1SMauro Carvalho Chehab 	RX_IRQ_INFO_ERR_FRAME_SYNC   = 1UL << _HRT_CSS_RECEIVER_IRQ_ERR_FRAME_SYNC_BIT,
2189d4fa1a1SMauro Carvalho Chehab 	RX_IRQ_INFO_ERR_FRAME_DATA   = 1UL << _HRT_CSS_RECEIVER_IRQ_ERR_FRAME_DATA_BIT,
2199d4fa1a1SMauro Carvalho Chehab 	RX_IRQ_INFO_ERR_DATA_TIMEOUT = 1UL << _HRT_CSS_RECEIVER_IRQ_DATA_TIMEOUT_BIT,
2209d4fa1a1SMauro Carvalho Chehab 	RX_IRQ_INFO_ERR_UNKNOWN_ESC  = 1UL << _HRT_CSS_RECEIVER_IRQ_ERR_ESCAPE_BIT,
2219d4fa1a1SMauro Carvalho Chehab 	RX_IRQ_INFO_ERR_LINE_SYNC    = 1UL << _HRT_CSS_RECEIVER_IRQ_ERR_LINE_SYNC_BIT,
2229d4fa1a1SMauro Carvalho Chehab }  rx_irq_info_t;
2239d4fa1a1SMauro Carvalho Chehab 
2249d4fa1a1SMauro Carvalho Chehab /* NOTE: The base has already an offset of 0x0100 */
22586d92c3aSAndy Shevchenko static const hrt_address __maybe_unused MIPI_PORT_OFFSET[N_MIPI_PORT_ID] = {
2269d4fa1a1SMauro Carvalho Chehab 	0x00000000UL,
2279d4fa1a1SMauro Carvalho Chehab 	0x00000100UL,
2289d4fa1a1SMauro Carvalho Chehab 	0x00000200UL
2299d4fa1a1SMauro Carvalho Chehab };
2309d4fa1a1SMauro Carvalho Chehab 
23186d92c3aSAndy Shevchenko static const hrt_address __maybe_unused SUB_SYSTEM_OFFSET[N_SUB_SYSTEM_ID] = {
2329d4fa1a1SMauro Carvalho Chehab 	0x00001000UL,
2339d4fa1a1SMauro Carvalho Chehab 	0x00002000UL,
2349d4fa1a1SMauro Carvalho Chehab 	0x00003000UL,
2359d4fa1a1SMauro Carvalho Chehab 	0x00004000UL,
2369d4fa1a1SMauro Carvalho Chehab 	0x00005000UL,
2379d4fa1a1SMauro Carvalho Chehab 	0x00009000UL,
2389d4fa1a1SMauro Carvalho Chehab 	0x0000A000UL,
2399d4fa1a1SMauro Carvalho Chehab 	0x0000B000UL,
2409d4fa1a1SMauro Carvalho Chehab 	0x0000C000UL
2419d4fa1a1SMauro Carvalho Chehab };
2429d4fa1a1SMauro Carvalho Chehab 
2439d4fa1a1SMauro Carvalho Chehab #endif /* __INPUT_SYSTEM_LOCAL_H_INCLUDED__ */
244