2 * Support for Intel Camera Imaging ISP subsystem.
3 * Copyright (c) 2015, Intel Corporation.
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms and conditions of the GNU General Public License,
7 * version 2, as published by the Free Software Foundation.
9 * This program is distributed in the hope it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15 #ifndef _csi_rx_defs_h
16 #define _csi_rx_defs_h
18 //#include "rx_csi_common_defs.h"
22 #define MIPI_PKT_DATA_WIDTH 32
23 //#define CLK_CROSSING_FIFO_DEPTH 16
24 #define _CSI_RX_REG_ALIGN 4
26 //define number of IRQ (see below for definition of each IRQ bits)
27 #define CSI_RX_NOF_IRQS_BYTE_DOMAIN 11
28 #define CSI_RX_NOF_IRQS_ISP_DOMAIN 15 // CSI_RX_NOF_IRQS_BYTE_DOMAIN + remaining from Dphy_rx already on ISP clock domain
30 // REGISTER DESCRIPTION
31 //#define _HRT_CSI_RX_SOFTRESET_REG_IDX 0
32 #define _HRT_CSI_RX_ENABLE_REG_IDX 0
33 #define _HRT_CSI_RX_NOF_ENABLED_LANES_REG_IDX 1
34 #define _HRT_CSI_RX_ERROR_HANDLING_REG_IDX 2
35 #define _HRT_CSI_RX_STATUS_REG_IDX 3
36 #define _HRT_CSI_RX_STATUS_DLANE_HS_REG_IDX 4
37 #define _HRT_CSI_RX_STATUS_DLANE_LP_REG_IDX 5
38 //#define _HRT_CSI_RX_IRQ_CONFIG_REG_IDX 6
39 #define _HRT_CSI_RX_DLY_CNT_TERMEN_CLANE_REG_IDX 6
40 #define _HRT_CSI_RX_DLY_CNT_SETTLE_CLANE_REG_IDX 7
41 #define _HRT_CSI_RX_DLY_CNT_TERMEN_DLANE_REG_IDX(lane_idx) (8+(2*lane_idx))
42 #define _HRT_CSI_RX_DLY_CNT_SETTLE_DLANE_REG_IDX(lane_idx) (8+(2*lane_idx)+1)
44 #define _HRT_CSI_RX_NOF_REGISTERS(nof_dlanes) (8+2*(nof_dlanes))
47 //#define _HRT_CSI_RX_SOFTRESET_REG_WIDTH 1
48 #define _HRT_CSI_RX_ENABLE_REG_WIDTH 1
49 #define _HRT_CSI_RX_NOF_ENABLED_LANES_REG_WIDTH 3
50 #define _HRT_CSI_RX_ERROR_HANDLING_REG_WIDTH 4
51 #define _HRT_CSI_RX_STATUS_REG_WIDTH 1
52 #define _HRT_CSI_RX_STATUS_DLANE_HS_REG_WIDTH 8
53 #define _HRT_CSI_RX_STATUS_DLANE_LP_REG_WIDTH 24
54 #define _HRT_CSI_RX_IRQ_CONFIG_REG_WIDTH (CSI_RX_NOF_IRQS_ISP_DOMAIN)
55 #define _HRT_CSI_RX_DLY_CNT_REG_WIDTH 24
56 //#define _HRT_CSI_RX_IRQ_STATUS_REG_WIDTH NOF_IRQS
57 //#define _HRT_CSI_RX_IRQ_CLEAR_REG_WIDTH 0
60 #define ONE_LANE_ENABLED 0
61 #define TWO_LANES_ENABLED 1
62 #define THREE_LANES_ENABLED 2
63 #define FOUR_LANES_ENABLED 3
65 // Error handling reg bit positions
66 #define ERR_DECISION_BIT 0
67 #define DISC_RESERVED_SP_BIT 1
68 #define DISC_RESERVED_LP_BIT 2
69 #define DIS_INCOMP_PKT_CHK_BIT 3
71 #define _HRT_CSI_RX_IRQ_CONFIG_REG_VAL_POSEDGE 0
72 #define _HRT_CSI_RX_IRQ_CONFIG_REG_VAL_ORIGINAL 1
75 #define _HRT_RX_CSI_IRQ_SINGLE_PH_ERROR_CORRECTED 0
76 #define _HRT_RX_CSI_IRQ_MULTIPLE_PH_ERROR_DETECTED 1
77 #define _HRT_RX_CSI_IRQ_PAYLOAD_CHECKSUM_ERROR 2
78 #define _HRT_RX_CSI_IRQ_FIFO_FULL_ERROR 3
79 #define _HRT_RX_CSI_IRQ_RESERVED_SP_DETECTED 4
80 #define _HRT_RX_CSI_IRQ_RESERVED_LP_DETECTED 5
81 //#define _HRT_RX_CSI_IRQ_PREMATURE_SOP 6
82 #define _HRT_RX_CSI_IRQ_INCOMPLETE_PACKET 6
83 #define _HRT_RX_CSI_IRQ_FRAME_SYNC_ERROR 7
84 #define _HRT_RX_CSI_IRQ_LINE_SYNC_ERROR 8
85 #define _HRT_RX_CSI_IRQ_DLANE_HS_SOT_ERROR 9
86 #define _HRT_RX_CSI_IRQ_DLANE_HS_SOT_SYNC_ERROR 10
88 #define _HRT_RX_CSI_IRQ_DLANE_ESC_ERROR 11
89 #define _HRT_RX_CSI_IRQ_DLANE_TRIGGERESC 12
90 #define _HRT_RX_CSI_IRQ_DLANE_ULPSESC 13
91 #define _HRT_RX_CSI_IRQ_CLANE_ULPSCLKNOT 14
93 /* OLD ARASAN FRONTEND IRQs
94 #define _HRT_RX_CSI_IRQ_OVERRUN_BIT 0
95 #define _HRT_RX_CSI_IRQ_RESERVED_BIT 1
96 #define _HRT_RX_CSI_IRQ_SLEEP_MODE_ENTRY_BIT 2
97 #define _HRT_RX_CSI_IRQ_SLEEP_MODE_EXIT_BIT 3
98 #define _HRT_RX_CSI_IRQ_ERR_SOT_HS_BIT 4
99 #define _HRT_RX_CSI_IRQ_ERR_SOT_SYNC_HS_BIT 5
100 #define _HRT_RX_CSI_IRQ_ERR_CONTROL_BIT 6
101 #define _HRT_RX_CSI_IRQ_ERR_ECC_DOUBLE_BIT 7
102 #define _HRT_RX_CSI_IRQ_ERR_ECC_CORRECTED_BIT 8
103 #define _HRT_RX_CSI_IRQ_ERR_ECC_NO_CORRECTION_BIT 9
104 #define _HRT_RX_CSI_IRQ_ERR_CRC_BIT 10
105 #define _HRT_RX_CSI_IRQ_ERR_ID_BIT 11
106 #define _HRT_RX_CSI_IRQ_ERR_FRAME_SYNC_BIT 12
107 #define _HRT_RX_CSI_IRQ_ERR_FRAME_DATA_BIT 13
108 #define _HRT_RX_CSI_IRQ_DATA_TIMEOUT_BIT 14
109 #define _HRT_RX_CSI_IRQ_ERR_ESCAPE_BIT 15
110 #define _HRT_RX_CSI_IRQ_ERR_LINE_SYNC_BIT 16
114 ////Bit Description for reg _HRT_CSI_RX_STATUS_DLANE_HS_REG_IDX
115 #define _HRT_CSI_RX_STATUS_DLANE_HS_SOT_ERR_LANE0 0
116 #define _HRT_CSI_RX_STATUS_DLANE_HS_SOT_ERR_LANE1 1
117 #define _HRT_CSI_RX_STATUS_DLANE_HS_SOT_ERR_LANE2 2
118 #define _HRT_CSI_RX_STATUS_DLANE_HS_SOT_ERR_LANE3 3
119 #define _HRT_CSI_RX_STATUS_DLANE_HS_SOT_SYNC_ERR_LANE0 4
120 #define _HRT_CSI_RX_STATUS_DLANE_HS_SOT_SYNC_ERR_LANE1 5
121 #define _HRT_CSI_RX_STATUS_DLANE_HS_SOT_SYNC_ERR_LANE2 6
122 #define _HRT_CSI_RX_STATUS_DLANE_HS_SOT_SYNC_ERR_LANE3 7
124 ////Bit Description for reg _HRT_CSI_RX_STATUS_DLANE_LP_REG_IDX
125 #define _HRT_CSI_RX_STATUS_DLANE_LP_ESC_ERR_LANE0 0
126 #define _HRT_CSI_RX_STATUS_DLANE_LP_ESC_ERR_LANE1 1
127 #define _HRT_CSI_RX_STATUS_DLANE_LP_ESC_ERR_LANE2 2
128 #define _HRT_CSI_RX_STATUS_DLANE_LP_ESC_ERR_LANE3 3
129 #define _HRT_CSI_RX_STATUS_DLANE_LP_TRIGGERESC0_LANE0 4
130 #define _HRT_CSI_RX_STATUS_DLANE_LP_TRIGGERESC1_LANE0 5
131 #define _HRT_CSI_RX_STATUS_DLANE_LP_TRIGGERESC2_LANE0 6
132 #define _HRT_CSI_RX_STATUS_DLANE_LP_TRIGGERESC3_LANE0 7
133 #define _HRT_CSI_RX_STATUS_DLANE_LP_TRIGGERESC0_LANE1 8
134 #define _HRT_CSI_RX_STATUS_DLANE_LP_TRIGGERESC1_LANE1 9
135 #define _HRT_CSI_RX_STATUS_DLANE_LP_TRIGGERESC2_LANE1 10
136 #define _HRT_CSI_RX_STATUS_DLANE_LP_TRIGGERESC3_LANE1 11
137 #define _HRT_CSI_RX_STATUS_DLANE_LP_TRIGGERESC0_LANE2 12
138 #define _HRT_CSI_RX_STATUS_DLANE_LP_TRIGGERESC1_LANE2 13
139 #define _HRT_CSI_RX_STATUS_DLANE_LP_TRIGGERESC2_LANE2 14
140 #define _HRT_CSI_RX_STATUS_DLANE_LP_TRIGGERESC3_LANE2 15
141 #define _HRT_CSI_RX_STATUS_DLANE_LP_TRIGGERESC0_LANE3 16
142 #define _HRT_CSI_RX_STATUS_DLANE_LP_TRIGGERESC1_LANE3 17
143 #define _HRT_CSI_RX_STATUS_DLANE_LP_TRIGGERESC2_LANE3 18
144 #define _HRT_CSI_RX_STATUS_DLANE_LP_TRIGGERESC3_LANE3 19
145 #define _HRT_CSI_RX_STATUS_DLANE_LP_ULPSESC_LANE0 20
146 #define _HRT_CSI_RX_STATUS_DLANE_LP_ULPSESC_LANE1 21
147 #define _HRT_CSI_RX_STATUS_DLANE_LP_ULPSESC_LANE2 22
148 #define _HRT_CSI_RX_STATUS_DLANE_LP_ULPSESC_LANE3 23
150 /*********************************************************/
151 /*** Relevant declarations from rx_csi_common_defs.h *****/
152 /*********************************************************/
153 /* packet bit definition */
154 #define _HRT_RX_CSI_PKT_SOP_BITPOS 32
155 #define _HRT_RX_CSI_PKT_EOP_BITPOS 33
156 #define _HRT_RX_CSI_PKT_PAYLOAD_BITPOS 0
157 #define _HRT_RX_CSI_PH_CH_ID_BITPOS 22
158 #define _HRT_RX_CSI_PH_FMT_ID_BITPOS 16
159 #define _HRT_RX_CSI_PH_DATA_FIELD_BITPOS 0
161 #define _HRT_RX_CSI_PKT_SOP_BITS 1
162 #define _HRT_RX_CSI_PKT_EOP_BITS 1
163 #define _HRT_RX_CSI_PKT_PAYLOAD_BITS 32
164 #define _HRT_RX_CSI_PH_CH_ID_BITS 2
165 #define _HRT_RX_CSI_PH_FMT_ID_BITS 6
166 #define _HRT_RX_CSI_PH_DATA_FIELD_BITS 16
168 /* Definition of data format ID at the interface CSS_receiver units */
169 #define _HRT_RX_CSI_DATA_FORMAT_ID_SOF 0 /* 00 0000 frame start */
170 #define _HRT_RX_CSI_DATA_FORMAT_ID_EOF 1 /* 00 0001 frame end */
171 #define _HRT_RX_CSI_DATA_FORMAT_ID_SOL 2 /* 00 0010 line start */
172 #define _HRT_RX_CSI_DATA_FORMAT_ID_EOL 3 /* 00 0011 line end */
175 #endif /* _csi_rx_defs_h */