aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/staging/media/atomisp/pci/css_2401_system/hrt/ibuf_cntrl_defs.h
blob: 374466e6b7bf54a0d373c24a05bb1822ae1c3767 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/* 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 _ibuf_cntrl_defs_h_
#define _ibuf_cntrl_defs_h_

#include <stream2mmio_defs.h>
#include <dma_v2_defs.h>

#define _IBUF_CNTRL_REG_ALIGN 4
/* alignment of register banks, first bank are shared configuration and status registers: */
#define _IBUF_CNTRL_PROC_REG_ALIGN        32

/* the actual amount of configuration registers per proc: */
#define _IBUF_CNTRL_CONFIG_REGS_PER_PROC 18
/* the actual amount of shared configuration registers: */
#define _IBUF_CNTRL_CONFIG_REGS_NO_PROC  0

/* the actual amount of status registers per proc */
#define _IBUF_CNTRL_STATUS_REGS_PER_PROC (_IBUF_CNTRL_CONFIG_REGS_PER_PROC + 10)
/* the actual amount shared status registers */
#define _IBUF_CNTRL_STATUS_REGS_NO_PROC  (_IBUF_CNTRL_CONFIG_REGS_NO_PROC + 2)

/* time out bits, maximum time out value is 2^_IBUF_CNTRL_TIME_OUT_BITS - 1 */
#define _IBUF_CNTRL_TIME_OUT_BITS         5

/* command token definition */
#define _IBUF_CNTRL_CMD_TOKEN_LSB          0
#define _IBUF_CNTRL_CMD_TOKEN_MSB          1

/* Str2MMIO defines */
#define _IBUF_CNTRL_STREAM2MMIO_CMD_TOKEN_MSB        _STREAM2MMIO_CMD_TOKEN_CMD_MSB
#define _IBUF_CNTRL_STREAM2MMIO_CMD_TOKEN_LSB        _STREAM2MMIO_CMD_TOKEN_CMD_LSB
#define _IBUF_CNTRL_STREAM2MMIO_NUM_ITEMS_BITS       _STREAM2MMIO_PACK_NUM_ITEMS_BITS
#define _IBUF_CNTRL_STREAM2MMIO_ACK_EOF_BIT          _STREAM2MMIO_PACK_ACK_EOF_BIT
#define _IBUF_CNTRL_STREAM2MMIO_ACK_TOKEN_VALID_BIT  _STREAM2MMIO_ACK_TOKEN_VALID_BIT

/* acknowledge token definition */
#define _IBUF_CNTRL_ACK_TOKEN_STORES_IDX    0
#define _IBUF_CNTRL_ACK_TOKEN_STORES_BITS   15
#define _IBUF_CNTRL_ACK_TOKEN_ITEMS_IDX     (_IBUF_CNTRL_ACK_TOKEN_STORES_BITS + _IBUF_CNTRL_ACK_TOKEN_STORES_IDX)
#define _IBUF_CNTRL_ACK_TOKEN_ITEMS_BITS    _STREAM2MMIO_PACK_NUM_ITEMS_BITS
#define _IBUF_CNTRL_ACK_TOKEN_LSB          _IBUF_CNTRL_ACK_TOKEN_STORES_IDX
#define _IBUF_CNTRL_ACK_TOKEN_MSB          (_IBUF_CNTRL_ACK_TOKEN_ITEMS_BITS + _IBUF_CNTRL_ACK_TOKEN_ITEMS_IDX - 1)
/* bit 31 indicates a valid ack: */
#define _IBUF_CNTRL_ACK_TOKEN_VALID_BIT    (_IBUF_CNTRL_ACK_TOKEN_ITEMS_BITS + _IBUF_CNTRL_ACK_TOKEN_ITEMS_IDX)

/*shared registers:*/
#define _IBUF_CNTRL_RECALC_WORDS_STATUS     0
#define _IBUF_CNTRL_ARBITERS_STATUS         1

#define _IBUF_CNTRL_SET_CRUN                2 /* NO PHYSICAL REGISTER!! Only used in HSS model */

/*register addresses for each proc: */
#define _IBUF_CNTRL_CMD                   0
#define _IBUF_CNTRL_ACK                   1

/* number of items (packets or words) per frame: */
#define _IBUF_CNTRL_NUM_ITEMS_PER_STORE   2

/* number of stores (packets or words) per store/buffer: */
#define _IBUF_CNTRL_NUM_STORES_PER_FRAME  3

/* the channel and command in the DMA */
#define _IBUF_CNTRL_DMA_CHANNEL           4
#define _IBUF_CNTRL_DMA_CMD               5

/* the start address and stride of the buffers */
#define _IBUF_CNTRL_BUFFER_START_ADDRESS  6
#define _IBUF_CNTRL_BUFFER_STRIDE         7
#define _IBUF_CNTRL_BUFFER_END_ADDRESS    8

/* destination start address, stride and end address; should be the same as in the DMA */
#define _IBUF_CNTRL_DEST_START_ADDRESS    9
#define _IBUF_CNTRL_DEST_STRIDE           10
#define _IBUF_CNTRL_DEST_END_ADDRESS      11

/* send a frame sync or not, default 1 */
#define _IBUF_CNTRL_SYNC_FRAME            12

/* str2mmio cmds */
#define _IBUF_CNTRL_STR2MMIO_SYNC_CMD     13
#define _IBUF_CNTRL_STR2MMIO_STORE_CMD    14

/* num elems p word*/
#define _IBUF_CNTRL_SHIFT_ITEMS           15
#define _IBUF_CNTRL_ELEMS_P_WORD_IBUF     16
#define _IBUF_CNTRL_ELEMS_P_WORD_DEST     17

/* STATUS */
/* current frame and stores in buffer */
#define _IBUF_CNTRL_CUR_STORES            18
#define _IBUF_CNTRL_CUR_ACKS              19

/* current buffer and destination address for DMA cmd's */
#define _IBUF_CNTRL_CUR_S2M_IBUF_ADDR     20
#define _IBUF_CNTRL_CUR_DMA_IBUF_ADDR     21
#define _IBUF_CNTRL_CUR_DMA_DEST_ADDR     22
#define _IBUF_CNTRL_CUR_ISP_DEST_ADDR     23

#define _IBUF_CNTRL_CUR_NR_DMA_CMDS_SEND  24

#define _IBUF_CNTRL_MAIN_CNTRL_STATE      25
#define _IBUF_CNTRL_DMA_SYNC_STATE        26
#define _IBUF_CNTRL_ISP_SYNC_STATE        27

/*Commands: */
#define _IBUF_CNTRL_CMD_STORE_FRAME_IDX     0
#define _IBUF_CNTRL_CMD_ONLINE_IDX          1

/* initialize, copy st_addr to cur_addr etc */
#define _IBUF_CNTRL_CMD_INITIALIZE          0

/* store an online frame (sync with ISP, use end cfg start, stride and end address: */
#define _IBUF_CNTRL_CMD_STORE_ONLINE_FRAME  ((1 << _IBUF_CNTRL_CMD_STORE_FRAME_IDX) | (1 << _IBUF_CNTRL_CMD_ONLINE_IDX))

/* store an offline frame (don't sync with ISP, requires start address as 2nd token, no end address: */
#define _IBUF_CNTRL_CMD_STORE_OFFLINE_FRAME  BIT(_IBUF_CNTRL_CMD_STORE_FRAME_IDX)

/* false command token, should be different then commands. Use online bit, not store frame: */
#define _IBUF_CNTRL_FALSE_ACK               2

#endif