GNU Linux-libre 4.14.295-gnu1
[releases.git] / drivers / staging / media / atomisp / pci / atomisp2 / css2400 / css_2401_csi2p_system / hrt / rx_csi_defs.h
1 /*
2  * Support for Intel Camera Imaging ISP subsystem.
3  * Copyright (c) 2015, Intel Corporation.
4  *
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.
8  *
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
12  * more details.
13  */
14
15 #ifndef _csi_rx_defs_h
16 #define _csi_rx_defs_h
17
18 //#include "rx_csi_common_defs.h"
19
20
21
22 #define MIPI_PKT_DATA_WIDTH                         32
23 //#define CLK_CROSSING_FIFO_DEPTH                     16
24 #define _CSI_RX_REG_ALIGN                            4
25
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
29
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)
43
44 #define _HRT_CSI_RX_NOF_REGISTERS(nof_dlanes)      (8+2*(nof_dlanes))
45
46
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
58
59
60 #define ONE_LANE_ENABLED                             0
61 #define TWO_LANES_ENABLED                            1
62 #define THREE_LANES_ENABLED                          2    
63 #define FOUR_LANES_ENABLED                           3
64
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
70
71 #define _HRT_CSI_RX_IRQ_CONFIG_REG_VAL_POSEDGE      0
72 #define _HRT_CSI_RX_IRQ_CONFIG_REG_VAL_ORIGINAL     1
73
74 // Interrupt bits 
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
87
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
92
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
111 */
112
113
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
123
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
149
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
160
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
167
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                                         */
173
174
175 #endif /* _csi_rx_defs_h */