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 _input_system_ctrl_defs_h
16 #define _input_system_ctrl_defs_h
18 #define _INPUT_SYSTEM_CTRL_REG_ALIGN 4 /* assuming 32 bit control bus width */
20 /* --------------------------------------------------*/
22 /* --------------------------------------------------*/
24 /* --------------------------------------------------*/
26 // Number of registers
27 #define ISYS_CTRL_NOF_REGS 23
29 // Register id's of MMIO slave accesible registers
30 #define ISYS_CTRL_CAPT_START_ADDR_A_REG_ID 0
31 #define ISYS_CTRL_CAPT_START_ADDR_B_REG_ID 1
32 #define ISYS_CTRL_CAPT_START_ADDR_C_REG_ID 2
33 #define ISYS_CTRL_CAPT_MEM_REGION_SIZE_A_REG_ID 3
34 #define ISYS_CTRL_CAPT_MEM_REGION_SIZE_B_REG_ID 4
35 #define ISYS_CTRL_CAPT_MEM_REGION_SIZE_C_REG_ID 5
36 #define ISYS_CTRL_CAPT_NUM_MEM_REGIONS_A_REG_ID 6
37 #define ISYS_CTRL_CAPT_NUM_MEM_REGIONS_B_REG_ID 7
38 #define ISYS_CTRL_CAPT_NUM_MEM_REGIONS_C_REG_ID 8
39 #define ISYS_CTRL_ACQ_START_ADDR_REG_ID 9
40 #define ISYS_CTRL_ACQ_MEM_REGION_SIZE_REG_ID 10
41 #define ISYS_CTRL_ACQ_NUM_MEM_REGIONS_REG_ID 11
42 #define ISYS_CTRL_INIT_REG_ID 12
43 #define ISYS_CTRL_LAST_COMMAND_REG_ID 13
44 #define ISYS_CTRL_NEXT_COMMAND_REG_ID 14
45 #define ISYS_CTRL_LAST_ACKNOWLEDGE_REG_ID 15
46 #define ISYS_CTRL_NEXT_ACKNOWLEDGE_REG_ID 16
47 #define ISYS_CTRL_FSM_STATE_INFO_REG_ID 17
48 #define ISYS_CTRL_CAPT_A_FSM_STATE_INFO_REG_ID 18
49 #define ISYS_CTRL_CAPT_B_FSM_STATE_INFO_REG_ID 19
50 #define ISYS_CTRL_CAPT_C_FSM_STATE_INFO_REG_ID 20
51 #define ISYS_CTRL_ACQ_FSM_STATE_INFO_REG_ID 21
52 #define ISYS_CTRL_CAPT_RESERVE_ONE_MEM_REGION_REG_ID 22
54 /* register reset value */
55 #define ISYS_CTRL_CAPT_START_ADDR_A_REG_RSTVAL 0
56 #define ISYS_CTRL_CAPT_START_ADDR_B_REG_RSTVAL 0
57 #define ISYS_CTRL_CAPT_START_ADDR_C_REG_RSTVAL 0
58 #define ISYS_CTRL_CAPT_MEM_REGION_SIZE_A_REG_RSTVAL 128
59 #define ISYS_CTRL_CAPT_MEM_REGION_SIZE_B_REG_RSTVAL 128
60 #define ISYS_CTRL_CAPT_MEM_REGION_SIZE_C_REG_RSTVAL 128
61 #define ISYS_CTRL_CAPT_NUM_MEM_REGIONS_A_REG_RSTVAL 3
62 #define ISYS_CTRL_CAPT_NUM_MEM_REGIONS_B_REG_RSTVAL 3
63 #define ISYS_CTRL_CAPT_NUM_MEM_REGIONS_C_REG_RSTVAL 3
64 #define ISYS_CTRL_ACQ_START_ADDR_REG_RSTVAL 0
65 #define ISYS_CTRL_ACQ_MEM_REGION_SIZE_REG_RSTVAL 128
66 #define ISYS_CTRL_ACQ_NUM_MEM_REGIONS_REG_RSTVAL 3
67 #define ISYS_CTRL_INIT_REG_RSTVAL 0
68 #define ISYS_CTRL_LAST_COMMAND_REG_RSTVAL 15 //0x0000_000F (to signal non-valid cmd/ack after reset/soft-reset)
69 #define ISYS_CTRL_NEXT_COMMAND_REG_RSTVAL 15 //0x0000_000F (to signal non-valid cmd/ack after reset/soft-reset)
70 #define ISYS_CTRL_LAST_ACKNOWLEDGE_REG_RSTVAL 15 //0x0000_000F (to signal non-valid cmd/ack after reset/soft-reset)
71 #define ISYS_CTRL_NEXT_ACKNOWLEDGE_REG_RSTVAL 15 //0x0000_000F (to signal non-valid cmd/ack after reset/soft-reset)
72 #define ISYS_CTRL_FSM_STATE_INFO_REG_RSTVAL 0
73 #define ISYS_CTRL_CAPT_A_FSM_STATE_INFO_REG_RSTVAL 0
74 #define ISYS_CTRL_CAPT_B_FSM_STATE_INFO_REG_RSTVAL 0
75 #define ISYS_CTRL_CAPT_C_FSM_STATE_INFO_REG_RSTVAL 0
76 #define ISYS_CTRL_ACQ_FSM_STATE_INFO_REG_RSTVAL 0
77 #define ISYS_CTRL_CAPT_RESERVE_ONE_MEM_REGION_REG_RSTVAL 0
79 /* register width value */
80 #define ISYS_CTRL_CAPT_START_ADDR_A_REG_WIDTH 9
81 #define ISYS_CTRL_CAPT_START_ADDR_B_REG_WIDTH 9
82 #define ISYS_CTRL_CAPT_START_ADDR_C_REG_WIDTH 9
83 #define ISYS_CTRL_CAPT_MEM_REGION_SIZE_A_REG_WIDTH 9
84 #define ISYS_CTRL_CAPT_MEM_REGION_SIZE_B_REG_WIDTH 9
85 #define ISYS_CTRL_CAPT_MEM_REGION_SIZE_C_REG_WIDTH 9
86 #define ISYS_CTRL_CAPT_NUM_MEM_REGIONS_A_REG_WIDTH 9
87 #define ISYS_CTRL_CAPT_NUM_MEM_REGIONS_B_REG_WIDTH 9
88 #define ISYS_CTRL_CAPT_NUM_MEM_REGIONS_C_REG_WIDTH 9
89 #define ISYS_CTRL_ACQ_START_ADDR_REG_WIDTH 9
90 #define ISYS_CTRL_ACQ_MEM_REGION_SIZE_REG_WIDTH 9
91 #define ISYS_CTRL_ACQ_NUM_MEM_REGIONS_REG_WIDTH 9
92 #define ISYS_CTRL_INIT_REG_WIDTH 3
93 #define ISYS_CTRL_LAST_COMMAND_REG_WIDTH 32 /* slave data width */
94 #define ISYS_CTRL_NEXT_COMMAND_REG_WIDTH 32
95 #define ISYS_CTRL_LAST_ACKNOWLEDGE_REG_WIDTH 32
96 #define ISYS_CTRL_NEXT_ACKNOWLEDGE_REG_WIDTH 32
97 #define ISYS_CTRL_FSM_STATE_INFO_REG_WIDTH 32
98 #define ISYS_CTRL_CAPT_A_FSM_STATE_INFO_REG_WIDTH 32
99 #define ISYS_CTRL_CAPT_B_FSM_STATE_INFO_REG_WIDTH 32
100 #define ISYS_CTRL_CAPT_C_FSM_STATE_INFO_REG_WIDTH 32
101 #define ISYS_CTRL_ACQ_FSM_STATE_INFO_REG_WIDTH 32
102 #define ISYS_CTRL_CAPT_RESERVE_ONE_MEM_REGION_REG_WIDTH 1
104 /* bit definitions */
106 /* --------------------------------------------------*/
108 /* --------------------------------------------------*/
111 InpSysCaptFramesAcq 1/0 [3:0] - 'b0000
117 InpSysCaptFrameExt 2/0 [3:0] - 'b0001'
123 2/1 [31:0] - external capture address
124 InpSysAcqFrame 2/0 [3:0] - 'b0010,
125 [31:4] - NOF_ext_mem_words
126 2/1 [31:0] - external memory read start address
127 InpSysOverruleON 1/0 [3:0] - 'b0011,
128 [7:4] - overrule port id (opid)
135 InpSysOverruleOFF 1/0 [3:0] - 'b0100,
136 [7:4] - overrule port id (opid)
143 InpSysOverruleCmd 2/0 [3:0] - 'b0101,
144 [7:4] - overrule port id (opid)
151 2/1 [31:0] - command token value for port opid
155 InpSysAckCFA 1/0 [3:0] - 'b0000
161 InpSysAckCFE 1/0 [3:0] - 'b0001'
167 InpSysAckAF 1/0 [3:0] - 'b0010
168 InpSysAckOverruleON 1/0 [3:0] - 'b0011,
169 [7:4] - overrule port id (opid)
176 InpSysAckOverruleOFF 1/0 [3:0] - 'b0100,
177 [7:4] - overrule port id (opid)
184 InpSysAckOverrule 2/0 [3:0] - 'b0101,
185 [7:4] - overrule port id (opid)
192 2/1 [31:0] - acknowledge token value from port opid
196 /* Command and acknowledge tokens IDs */
197 #define ISYS_CTRL_CAPT_FRAMES_ACQ_TOKEN_ID 0 /* 0000b */
198 #define ISYS_CTRL_CAPT_FRAME_EXT_TOKEN_ID 1 /* 0001b */
199 #define ISYS_CTRL_ACQ_FRAME_TOKEN_ID 2 /* 0010b */
200 #define ISYS_CTRL_OVERRULE_ON_TOKEN_ID 3 /* 0011b */
201 #define ISYS_CTRL_OVERRULE_OFF_TOKEN_ID 4 /* 0100b */
202 #define ISYS_CTRL_OVERRULE_TOKEN_ID 5 /* 0101b */
204 #define ISYS_CTRL_ACK_CFA_TOKEN_ID 0
205 #define ISYS_CTRL_ACK_CFE_TOKEN_ID 1
206 #define ISYS_CTRL_ACK_AF_TOKEN_ID 2
207 #define ISYS_CTRL_ACK_OVERRULE_ON_TOKEN_ID 3
208 #define ISYS_CTRL_ACK_OVERRULE_OFF_TOKEN_ID 4
209 #define ISYS_CTRL_ACK_OVERRULE_TOKEN_ID 5
210 #define ISYS_CTRL_ACK_DEVICE_ERROR_TOKEN_ID 6
212 #define ISYS_CTRL_TOKEN_ID_MSB 3
213 #define ISYS_CTRL_TOKEN_ID_LSB 0
214 #define ISYS_CTRL_PORT_ID_TOKEN_MSB 7
215 #define ISYS_CTRL_PORT_ID_TOKEN_LSB 4
216 #define ISYS_CTRL_NOF_CAPT_TOKEN_MSB 31
217 #define ISYS_CTRL_NOF_CAPT_TOKEN_LSB 16
218 #define ISYS_CTRL_NOF_EXT_TOKEN_MSB 31
219 #define ISYS_CTRL_NOF_EXT_TOKEN_LSB 8
221 #define ISYS_CTRL_TOKEN_ID_IDX 0
222 #define ISYS_CTRL_TOKEN_ID_BITS (ISYS_CTRL_TOKEN_ID_MSB - ISYS_CTRL_TOKEN_ID_LSB + 1)
223 #define ISYS_CTRL_PORT_ID_IDX (ISYS_CTRL_TOKEN_ID_IDX + ISYS_CTRL_TOKEN_ID_BITS)
224 #define ISYS_CTRL_PORT_ID_BITS (ISYS_CTRL_PORT_ID_TOKEN_MSB - ISYS_CTRL_PORT_ID_TOKEN_LSB + 1)
225 #define ISYS_CTRL_NOF_CAPT_IDX ISYS_CTRL_NOF_CAPT_TOKEN_LSB
226 #define ISYS_CTRL_NOF_CAPT_BITS (ISYS_CTRL_NOF_CAPT_TOKEN_MSB - ISYS_CTRL_NOF_CAPT_TOKEN_LSB + 1)
227 #define ISYS_CTRL_NOF_EXT_IDX ISYS_CTRL_NOF_EXT_TOKEN_LSB
228 #define ISYS_CTRL_NOF_EXT_BITS (ISYS_CTRL_NOF_EXT_TOKEN_MSB - ISYS_CTRL_NOF_EXT_TOKEN_LSB + 1)
230 #define ISYS_CTRL_PORT_ID_CAPT_A 0 /* device ID for capture unit A */
231 #define ISYS_CTRL_PORT_ID_CAPT_B 1 /* device ID for capture unit B */
232 #define ISYS_CTRL_PORT_ID_CAPT_C 2 /* device ID for capture unit C */
233 #define ISYS_CTRL_PORT_ID_ACQUISITION 3 /* device ID for acquistion unit */
234 #define ISYS_CTRL_PORT_ID_DMA_CAPT_A 4 /* device ID for dma unit */
235 #define ISYS_CTRL_PORT_ID_DMA_CAPT_B 5 /* device ID for dma unit */
236 #define ISYS_CTRL_PORT_ID_DMA_CAPT_C 6 /* device ID for dma unit */
237 #define ISYS_CTRL_PORT_ID_DMA_ACQ 7 /* device ID for dma unit */
239 #define ISYS_CTRL_NO_ACQ_ACK 16 /* no ack from acquisition unit */
240 #define ISYS_CTRL_NO_DMA_ACK 0
241 #define ISYS_CTRL_NO_CAPT_ACK 16
243 #endif /* _input_system_ctrl_defs_h */