summaryrefslogtreecommitdiff
path: root/ipa_reg_new.h
blob: 942c992d6b9ca88997c97675d8e7898f62010cfc (plain)
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
136
137
138
139
// SPDX-License-Identifier: GPL-2.0

#ifndef _IPA_REG_NEW_H
#define _IPA_REG_NEW_H

#include "linux.h"

struct ipa_reg {
	u32 offset;
	u32 field_count;
	u32 stride;
	const u32 *fmask;			/* BIT(nr) or GENMASK(h, l) */
	const char *name;
};

struct ipa_regs {
	u32 reg_count;
	const struct ipa_reg **reg;
};

enum ipa_reg_name {
	IPA_REG_COMP_CFG,
	IPA_REG_CLKON_CFG,
	IPA_REG_ROUTE,
	IPA_REG_SHARED_MEM_SIZE,
};

#define	IPA_REG(__NAME, __name, __offset)				\
	IPA_REG_STRIDE(__NAME, __name, __offset, 0)

#define	IPA_REG_STRIDE(__NAME, __name, __offset, __stride)		\
    static const struct ipa_reg ipa_reg_ ## __name = {			\
	.name		= #__NAME,					\
	.offset		= __offset,					\
	.stride		= __stride,					\
    }

#define	IPA_REG_FIELDS(__NAME, __name, __offset)			\
	IPA_REG_STRIDE_FIELDS(__NAME, __name, __offset, 0)

#define	IPA_REG_STRIDE_FIELDS(__NAME, __name, __offset, __stride)	\
    static const struct ipa_reg ipa_reg_ ## __name = {			\
	.name		= #__NAME,					\
	.offset		= __offset,					\
	.stride		= __stride,					\
	.field_count	= ARRAY_SIZE(ipa_reg_ ## __name ## _field),	\
	.fmask		= ipa_reg_ ## __name ## _field,			\
    }

enum ipa_reg_comp_cfg_field_name {
	COMP_CFG_ENABLE,				/* Not IPA v4.0+ */
	RAM_ARB_PRI_CLIENT_SAMP_FIX_DIS,		/* IPA v4.7+ */
	COMP_CFG_GSI_SNOC_BYPASS_DIS,
	COMP_CFG_GEN_QMB_0_SNOC_BYPASS_DIS,
	COMP_CFG_GEN_QMB_1_SNOC_BYPASS_DIS,
	COMP_CFG_IPA_DCMP_FAST_CLK_EN,			/* Not IPA v4.5+ */
	COMP_CFG_IPA_QMB_SELECT_CONS_EN,		/* IPA v4.0+ */
	COMP_CFG_IPA_QMB_SELECT_PROD_EN,		/* IPA v4.0+ */
	COMP_CFG_GSI_MULTI_INORDER_RD_DIS,		/* IPA v4.0+ */
	COMP_CFG_GSI_MULTI_INORDER_WR_DIS,		/* IPA v4.0+ */
	COMP_CFG_GEN_QMB_0_MULTI_INORDER_RD_DIS,	/* IPA v4.0+ */
	COMP_CFG_GEN_QMB_1_MULTI_INORDER_RD_DIS,	/* IPA v4.0+ */
	COMP_CFG_GEN_QMB_0_MULTI_INORDER_WR_DIS,	/* IPA v4.0+ */
	COMP_CFG_GEN_QMB_1_MULTI_INORDER_WR_DIS,	/* IPA v4.0+ */
	COMP_CFG_GEN_QMB_0_SNOC_CNOC_LOOP_PROT_DIS,	/* IPA v4.0+ */
	COMP_CFG_GSI_SNOC_CNOC_LOOP_PROT_DISABLE,	/* IPA v4.0+ */
	COMP_CFG_GSI_MULTI_AXI_MASTERS_DIS,		/* IPA v4.0+ */
	COMP_CFG_IPA_QMB_SELECT_GLOBAL_EN,		/* IPA v4.0+ */
	COMP_CFG_QMB_RAM_RD_CACHE_DISABLE,		/* IPA v4.9+ */
	COMP_CFG_GENQMB_AOOOWR,				/* IPA v4.9+ */
	COMP_CFG_IF_OUT_OF_BUF_STOP_RESET_MASK_EN,	/* IPA v4.9+ */
	COMP_CFG_GEN_QMB_1_DYNAMIC_ASIZE,		/* IPA v4.9+ */
	COMP_CFG_GEN_QMB_0_DYNAMIC_ASIZE,		/* IPA v4.9+ */
	COMP_CFG_ATOMIC_FETCHER_ARB_LOCK_DIS,		/* IPA v4.0+ */
	COMP_CFG_FULL_FLUSH_WAIT_RS_CLOSURE_EN,		/* IPA v4.5+ */
};

enum ipa_reg_clkon_cfg_field_name {
	CLKON_CFG_RX,
	CLKON_CFG_PROC,
	CLKON_CFG_TX_WRAPPER,
	CLKON_CFG_MISC,
	CLKON_CFG_RAM_ARB,
	CLKON_CFG_FTCH_HPS,
	CLKON_CFG_FTCH_DPS,
	CLKON_CFG_HPS,
	CLKON_CFG_DPS,
	CLKON_CFG_RX_HPS_CMDQS,
	CLKON_CFG_HPS_DPS_CMDQS,
	CLKON_CFG_DPS_TX_CMDQS,
	CLKON_CFG_RSRC_MNGR,
	CLKON_CFG_CTX_HANDLER,
	CLKON_CFG_ACK_MNGR,
	CLKON_CFG_D_DCPH,
	CLKON_CFG_H_DCPH,
	CLKON_CFG_DCMP,					/* Not IPA v4.5+ */
	CLKON_CFG_NTF_TX_CMDQS,				/* IPA v3.5+ */
	CLKON_CFG_TX_0,					/* IPA v3.5+ */
	CLKON_CFG_TX_1,					/* IPA v3.5+ */
	CLKON_CFG_FNR,					/* IPA v3.5.1+ */
	CLKON_CFG_QSB2AXI_CMDQ_L,			/* IPA v4.0+ */
	CLKON_CFG_AGGR_WRAPPER,				/* IPA v4.0+ */
	CLKON_CFG_RAM_SLAVEWAY,				/* IPA v4.0+ */
	CLKON_CFG_QMB,					/* IPA v4.0+ */
	CLKON_CFG_WEIGHT_ARB,				/* IPA v4.0+ */
	CLKON_CFG_GSI_IF,				/* IPA v4.0+ */
	CLKON_CFG_GLOBAL,				/* IPA v4.0+ */
	CLKON_CFG_GLOBAL_2X_CLK,			/* IPA v4.0+ */
	CLKON_CFG_DPL_FIFO,				/* IPA v4.5+ */
	CLKON_CFG_DRBIP,				/* IPA v4.7+ */
};

enum ipa_reg_route_field_name {
	ROUTE_DIS,
	ROUTE_DEF_PIPE,
	ROUTE_DEF_HDR_TABLE,
	ROUTE_DEF_HDR_OFST,
	ROUTE_FRAG_DEF_PIPE,
	ROUTE_DEF_RETAIN_HDR,
};

enum ipa_reg_shared_mem_size_field_name {
	SHARED_MEM_SIZE,
	SHARED_MEM_BADDR,
};

extern const struct ipa_regs ipa_regs_v3_0;
extern const struct ipa_regs ipa_regs_v3_1;
extern const struct ipa_regs ipa_regs_v3_5;
extern const struct ipa_regs ipa_regs_v3_5_1;
extern const struct ipa_regs ipa_regs_v4_0;
extern const struct ipa_regs ipa_regs_v4_1;
extern const struct ipa_regs ipa_regs_v4_2;
extern const struct ipa_regs ipa_regs_v4_5;
extern const struct ipa_regs ipa_regs_v4_7;
extern const struct ipa_regs ipa_regs_v4_9;
extern const struct ipa_regs ipa_regs_v4_11;

#endif /* _IPA_REG_NEW_H */