xref: /freebsd/sys/contrib/dev/athk/ath12k/wifi7/ce.c (revision 60bac4d6438b6bcb3d7b439684211d05396d90ce)
1*60bac4d6SBjoern A. Zeeb // SPDX-License-Identifier: BSD-3-Clause-Clear
2*60bac4d6SBjoern A. Zeeb /*
3*60bac4d6SBjoern A. Zeeb  * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
4*60bac4d6SBjoern A. Zeeb  * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
5*60bac4d6SBjoern A. Zeeb  */
6*60bac4d6SBjoern A. Zeeb 
7*60bac4d6SBjoern A. Zeeb #include <linux/types.h>
8*60bac4d6SBjoern A. Zeeb #include <linux/bitops.h>
9*60bac4d6SBjoern A. Zeeb #include <linux/bitfield.h>
10*60bac4d6SBjoern A. Zeeb 
11*60bac4d6SBjoern A. Zeeb #include "../core.h"
12*60bac4d6SBjoern A. Zeeb #include "../ce.h"
13*60bac4d6SBjoern A. Zeeb #include "ce.h"
14*60bac4d6SBjoern A. Zeeb #include "../dp_rx.h"
15*60bac4d6SBjoern A. Zeeb 
16*60bac4d6SBjoern A. Zeeb /* Copy Engine (CE) configs for QCN9274 */
17*60bac4d6SBjoern A. Zeeb /* Target firmware's Copy Engine configuration. */
18*60bac4d6SBjoern A. Zeeb const struct ce_pipe_config ath12k_wifi7_target_ce_config_wlan_qcn9274[] = {
19*60bac4d6SBjoern A. Zeeb 	/* CE0: host->target HTC control and raw streams */
20*60bac4d6SBjoern A. Zeeb 	{
21*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(0),
22*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
23*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
24*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
25*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
26*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
27*60bac4d6SBjoern A. Zeeb 	},
28*60bac4d6SBjoern A. Zeeb 
29*60bac4d6SBjoern A. Zeeb 	/* CE1: target->host HTT + HTC control */
30*60bac4d6SBjoern A. Zeeb 	{
31*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(1),
32*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_IN),
33*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
34*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
35*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
36*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
37*60bac4d6SBjoern A. Zeeb 	},
38*60bac4d6SBjoern A. Zeeb 
39*60bac4d6SBjoern A. Zeeb 	/* CE2: target->host WMI */
40*60bac4d6SBjoern A. Zeeb 	{
41*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(2),
42*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_IN),
43*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
44*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
45*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
46*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
47*60bac4d6SBjoern A. Zeeb 	},
48*60bac4d6SBjoern A. Zeeb 
49*60bac4d6SBjoern A. Zeeb 	/* CE3: host->target WMI (mac0) */
50*60bac4d6SBjoern A. Zeeb 	{
51*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(3),
52*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
53*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
54*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
55*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
56*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
57*60bac4d6SBjoern A. Zeeb 	},
58*60bac4d6SBjoern A. Zeeb 
59*60bac4d6SBjoern A. Zeeb 	/* CE4: host->target HTT */
60*60bac4d6SBjoern A. Zeeb 	{
61*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(4),
62*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
63*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(256),
64*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(256),
65*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS | CE_ATTR_DIS_INTR),
66*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
67*60bac4d6SBjoern A. Zeeb 	},
68*60bac4d6SBjoern A. Zeeb 
69*60bac4d6SBjoern A. Zeeb 	/* CE5: target->host Pktlog */
70*60bac4d6SBjoern A. Zeeb 	{
71*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(5),
72*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_IN),
73*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
74*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
75*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
76*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
77*60bac4d6SBjoern A. Zeeb 	},
78*60bac4d6SBjoern A. Zeeb 
79*60bac4d6SBjoern A. Zeeb 	/* CE6: Reserved for target autonomous hif_memcpy */
80*60bac4d6SBjoern A. Zeeb 	{
81*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(6),
82*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_INOUT),
83*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
84*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(16384),
85*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
86*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
87*60bac4d6SBjoern A. Zeeb 	},
88*60bac4d6SBjoern A. Zeeb 
89*60bac4d6SBjoern A. Zeeb 	/* CE7: host->target WMI (mac1) */
90*60bac4d6SBjoern A. Zeeb 	{
91*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(7),
92*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
93*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
94*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
95*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
96*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
97*60bac4d6SBjoern A. Zeeb 	},
98*60bac4d6SBjoern A. Zeeb 
99*60bac4d6SBjoern A. Zeeb 	/* CE8: Reserved for target autonomous hif_memcpy */
100*60bac4d6SBjoern A. Zeeb 	{
101*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(8),
102*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_INOUT),
103*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
104*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(16384),
105*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
106*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
107*60bac4d6SBjoern A. Zeeb 	},
108*60bac4d6SBjoern A. Zeeb 
109*60bac4d6SBjoern A. Zeeb 	/* CE9, 10 and 11: Reserved for MHI */
110*60bac4d6SBjoern A. Zeeb 
111*60bac4d6SBjoern A. Zeeb 	/* CE12: Target CV prefetch */
112*60bac4d6SBjoern A. Zeeb 	{
113*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(12),
114*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
115*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
116*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
117*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
118*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
119*60bac4d6SBjoern A. Zeeb 	},
120*60bac4d6SBjoern A. Zeeb 
121*60bac4d6SBjoern A. Zeeb 	/* CE13: Target CV prefetch */
122*60bac4d6SBjoern A. Zeeb 	{
123*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(13),
124*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
125*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
126*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
127*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
128*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
129*60bac4d6SBjoern A. Zeeb 	},
130*60bac4d6SBjoern A. Zeeb 
131*60bac4d6SBjoern A. Zeeb 	/* CE14: WMI logging/CFR/Spectral/Radar */
132*60bac4d6SBjoern A. Zeeb 	{
133*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(14),
134*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_IN),
135*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
136*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
137*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
138*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
139*60bac4d6SBjoern A. Zeeb 	},
140*60bac4d6SBjoern A. Zeeb 
141*60bac4d6SBjoern A. Zeeb 	/* CE15: Reserved */
142*60bac4d6SBjoern A. Zeeb };
143*60bac4d6SBjoern A. Zeeb 
144*60bac4d6SBjoern A. Zeeb /* Map from service/endpoint to Copy Engine.
145*60bac4d6SBjoern A. Zeeb  * This table is derived from the CE_PCI TABLE, above.
146*60bac4d6SBjoern A. Zeeb  * It is passed to the Target at startup for use by firmware.
147*60bac4d6SBjoern A. Zeeb  * Pipe direction:
148*60bac4d6SBjoern A. Zeeb  *      PIPEDIR_OUT = UL = host -> target
149*60bac4d6SBjoern A. Zeeb  *      PIPEDIR_IN = DL = target -> host
150*60bac4d6SBjoern A. Zeeb  */
151*60bac4d6SBjoern A. Zeeb const struct service_to_pipe
152*60bac4d6SBjoern A. Zeeb ath12k_wifi7_target_service_to_ce_map_wlan_qcn9274[] = {
153*60bac4d6SBjoern A. Zeeb 	{
154*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VO),
155*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
156*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(3),
157*60bac4d6SBjoern A. Zeeb 	},
158*60bac4d6SBjoern A. Zeeb 	{
159*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VO),
160*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
161*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(2),
162*60bac4d6SBjoern A. Zeeb 	},
163*60bac4d6SBjoern A. Zeeb 	{
164*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BK),
165*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
166*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(3),
167*60bac4d6SBjoern A. Zeeb 	},
168*60bac4d6SBjoern A. Zeeb 	{
169*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BK),
170*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
171*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(2),
172*60bac4d6SBjoern A. Zeeb 	},
173*60bac4d6SBjoern A. Zeeb 	{
174*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BE),
175*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
176*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(3),
177*60bac4d6SBjoern A. Zeeb 	},
178*60bac4d6SBjoern A. Zeeb 	{
179*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BE),
180*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
181*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(2),
182*60bac4d6SBjoern A. Zeeb 	},
183*60bac4d6SBjoern A. Zeeb 	{
184*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VI),
185*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
186*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(3),
187*60bac4d6SBjoern A. Zeeb 	},
188*60bac4d6SBjoern A. Zeeb 	{
189*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VI),
190*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
191*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(2),
192*60bac4d6SBjoern A. Zeeb 	},
193*60bac4d6SBjoern A. Zeeb 	{
194*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL),
195*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
196*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(3),
197*60bac4d6SBjoern A. Zeeb 	},
198*60bac4d6SBjoern A. Zeeb 	{
199*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL),
200*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
201*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(2),
202*60bac4d6SBjoern A. Zeeb 	},
203*60bac4d6SBjoern A. Zeeb 	{
204*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_RSVD_CTRL),
205*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
206*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(0),
207*60bac4d6SBjoern A. Zeeb 	},
208*60bac4d6SBjoern A. Zeeb 	{
209*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_RSVD_CTRL),
210*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
211*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(1),
212*60bac4d6SBjoern A. Zeeb 	},
213*60bac4d6SBjoern A. Zeeb 	{
214*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_TEST_RAW_STREAMS),
215*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
216*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(0),
217*60bac4d6SBjoern A. Zeeb 	},
218*60bac4d6SBjoern A. Zeeb 	{
219*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_TEST_RAW_STREAMS),
220*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
221*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(1),
222*60bac4d6SBjoern A. Zeeb 	},
223*60bac4d6SBjoern A. Zeeb 	{
224*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_HTT_DATA_MSG),
225*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
226*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(4),
227*60bac4d6SBjoern A. Zeeb 	},
228*60bac4d6SBjoern A. Zeeb 	{
229*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_HTT_DATA_MSG),
230*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
231*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(1),
232*60bac4d6SBjoern A. Zeeb 	},
233*60bac4d6SBjoern A. Zeeb 	{
234*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL_MAC1),
235*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
236*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(7),
237*60bac4d6SBjoern A. Zeeb 	},
238*60bac4d6SBjoern A. Zeeb 	{
239*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL_MAC1),
240*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
241*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(2),
242*60bac4d6SBjoern A. Zeeb 	},
243*60bac4d6SBjoern A. Zeeb 	{
244*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_PKT_LOG),
245*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
246*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(5),
247*60bac4d6SBjoern A. Zeeb 	},
248*60bac4d6SBjoern A. Zeeb 	{
249*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL_DIAG),
250*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
251*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(14),
252*60bac4d6SBjoern A. Zeeb 	},
253*60bac4d6SBjoern A. Zeeb 
254*60bac4d6SBjoern A. Zeeb 	/* (Additions here) */
255*60bac4d6SBjoern A. Zeeb 
256*60bac4d6SBjoern A. Zeeb 	{ /* must be last */
257*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(0),
258*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(0),
259*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(0),
260*60bac4d6SBjoern A. Zeeb 	},
261*60bac4d6SBjoern A. Zeeb };
262*60bac4d6SBjoern A. Zeeb 
263*60bac4d6SBjoern A. Zeeb const struct ce_attr ath12k_wifi7_host_ce_config_qcn9274[] = {
264*60bac4d6SBjoern A. Zeeb 	/* CE0: host->target HTC control and raw streams */
265*60bac4d6SBjoern A. Zeeb 	{
266*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS,
267*60bac4d6SBjoern A. Zeeb 		.src_nentries = 16,
268*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 2048,
269*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
270*60bac4d6SBjoern A. Zeeb 	},
271*60bac4d6SBjoern A. Zeeb 
272*60bac4d6SBjoern A. Zeeb 	/* CE1: target->host HTT + HTC control */
273*60bac4d6SBjoern A. Zeeb 	{
274*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS,
275*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
276*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 2048,
277*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 512,
278*60bac4d6SBjoern A. Zeeb 		.recv_cb = ath12k_htc_rx_completion_handler,
279*60bac4d6SBjoern A. Zeeb 	},
280*60bac4d6SBjoern A. Zeeb 
281*60bac4d6SBjoern A. Zeeb 	/* CE2: target->host WMI */
282*60bac4d6SBjoern A. Zeeb 	{
283*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS,
284*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
285*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 2048,
286*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 128,
287*60bac4d6SBjoern A. Zeeb 		.recv_cb = ath12k_htc_rx_completion_handler,
288*60bac4d6SBjoern A. Zeeb 	},
289*60bac4d6SBjoern A. Zeeb 
290*60bac4d6SBjoern A. Zeeb 	/* CE3: host->target WMI (mac0) */
291*60bac4d6SBjoern A. Zeeb 	{
292*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS,
293*60bac4d6SBjoern A. Zeeb 		.src_nentries = 32,
294*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 2048,
295*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
296*60bac4d6SBjoern A. Zeeb 	},
297*60bac4d6SBjoern A. Zeeb 
298*60bac4d6SBjoern A. Zeeb 	/* CE4: host->target HTT */
299*60bac4d6SBjoern A. Zeeb 	{
300*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS | CE_ATTR_DIS_INTR,
301*60bac4d6SBjoern A. Zeeb 		.src_nentries = 2048,
302*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 256,
303*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
304*60bac4d6SBjoern A. Zeeb 	},
305*60bac4d6SBjoern A. Zeeb 
306*60bac4d6SBjoern A. Zeeb 	/* CE5: target->host pktlog */
307*60bac4d6SBjoern A. Zeeb 	{
308*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS,
309*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
310*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 2048,
311*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 512,
312*60bac4d6SBjoern A. Zeeb 		.recv_cb = ath12k_dp_htt_htc_t2h_msg_handler,
313*60bac4d6SBjoern A. Zeeb 	},
314*60bac4d6SBjoern A. Zeeb 
315*60bac4d6SBjoern A. Zeeb 	/* CE6: target autonomous hif_memcpy */
316*60bac4d6SBjoern A. Zeeb 	{
317*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS | CE_ATTR_DIS_INTR,
318*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
319*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 0,
320*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
321*60bac4d6SBjoern A. Zeeb 	},
322*60bac4d6SBjoern A. Zeeb 
323*60bac4d6SBjoern A. Zeeb 	/* CE7: host->target WMI (mac1) */
324*60bac4d6SBjoern A. Zeeb 	{
325*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS,
326*60bac4d6SBjoern A. Zeeb 		.src_nentries = 32,
327*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 2048,
328*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
329*60bac4d6SBjoern A. Zeeb 	},
330*60bac4d6SBjoern A. Zeeb 
331*60bac4d6SBjoern A. Zeeb 	/* CE8: target autonomous hif_memcpy */
332*60bac4d6SBjoern A. Zeeb 	{
333*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS | CE_ATTR_DIS_INTR,
334*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
335*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 0,
336*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
337*60bac4d6SBjoern A. Zeeb 	},
338*60bac4d6SBjoern A. Zeeb 
339*60bac4d6SBjoern A. Zeeb 	/* CE9: MHI */
340*60bac4d6SBjoern A. Zeeb 	{
341*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS | CE_ATTR_DIS_INTR,
342*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
343*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 0,
344*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
345*60bac4d6SBjoern A. Zeeb 	},
346*60bac4d6SBjoern A. Zeeb 
347*60bac4d6SBjoern A. Zeeb 	/* CE10: MHI */
348*60bac4d6SBjoern A. Zeeb 	{
349*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS | CE_ATTR_DIS_INTR,
350*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
351*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 0,
352*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
353*60bac4d6SBjoern A. Zeeb 	},
354*60bac4d6SBjoern A. Zeeb 
355*60bac4d6SBjoern A. Zeeb 	/* CE11: MHI */
356*60bac4d6SBjoern A. Zeeb 	{
357*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS | CE_ATTR_DIS_INTR,
358*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
359*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 0,
360*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
361*60bac4d6SBjoern A. Zeeb 	},
362*60bac4d6SBjoern A. Zeeb 
363*60bac4d6SBjoern A. Zeeb 	/* CE12: CV Prefetch */
364*60bac4d6SBjoern A. Zeeb 	{
365*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS | CE_ATTR_DIS_INTR,
366*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
367*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 0,
368*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
369*60bac4d6SBjoern A. Zeeb 	},
370*60bac4d6SBjoern A. Zeeb 
371*60bac4d6SBjoern A. Zeeb 	/* CE13: CV Prefetch */
372*60bac4d6SBjoern A. Zeeb 	{
373*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS | CE_ATTR_DIS_INTR,
374*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
375*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 0,
376*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
377*60bac4d6SBjoern A. Zeeb 	},
378*60bac4d6SBjoern A. Zeeb 
379*60bac4d6SBjoern A. Zeeb 	/* CE14: target->host dbg log */
380*60bac4d6SBjoern A. Zeeb 	{
381*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS,
382*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
383*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 2048,
384*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 512,
385*60bac4d6SBjoern A. Zeeb 		.recv_cb = ath12k_htc_rx_completion_handler,
386*60bac4d6SBjoern A. Zeeb 	},
387*60bac4d6SBjoern A. Zeeb 
388*60bac4d6SBjoern A. Zeeb 	/* CE15: reserved for future use */
389*60bac4d6SBjoern A. Zeeb 	{
390*60bac4d6SBjoern A. Zeeb 		.flags = (CE_ATTR_FLAGS | CE_ATTR_DIS_INTR),
391*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
392*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 0,
393*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
394*60bac4d6SBjoern A. Zeeb 	},
395*60bac4d6SBjoern A. Zeeb };
396*60bac4d6SBjoern A. Zeeb 
397*60bac4d6SBjoern A. Zeeb /* Copy Engine (CE) configs for WCN7850 */
398*60bac4d6SBjoern A. Zeeb /* Target firmware's Copy Engine configuration. */
399*60bac4d6SBjoern A. Zeeb const struct ce_pipe_config ath12k_wifi7_target_ce_config_wlan_wcn7850[] = {
400*60bac4d6SBjoern A. Zeeb 	/* CE0: host->target HTC control and raw streams */
401*60bac4d6SBjoern A. Zeeb 	{
402*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(0),
403*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
404*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
405*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
406*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
407*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
408*60bac4d6SBjoern A. Zeeb 	},
409*60bac4d6SBjoern A. Zeeb 
410*60bac4d6SBjoern A. Zeeb 	/* CE1: target->host HTT + HTC control */
411*60bac4d6SBjoern A. Zeeb 	{
412*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(1),
413*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_IN),
414*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
415*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
416*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
417*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
418*60bac4d6SBjoern A. Zeeb 	},
419*60bac4d6SBjoern A. Zeeb 
420*60bac4d6SBjoern A. Zeeb 	/* CE2: target->host WMI */
421*60bac4d6SBjoern A. Zeeb 	{
422*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(2),
423*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_IN),
424*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
425*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
426*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
427*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
428*60bac4d6SBjoern A. Zeeb 	},
429*60bac4d6SBjoern A. Zeeb 
430*60bac4d6SBjoern A. Zeeb 	/* CE3: host->target WMI */
431*60bac4d6SBjoern A. Zeeb 	{
432*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(3),
433*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
434*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
435*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
436*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
437*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
438*60bac4d6SBjoern A. Zeeb 	},
439*60bac4d6SBjoern A. Zeeb 
440*60bac4d6SBjoern A. Zeeb 	/* CE4: host->target HTT */
441*60bac4d6SBjoern A. Zeeb 	{
442*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(4),
443*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
444*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(256),
445*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(256),
446*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS | CE_ATTR_DIS_INTR),
447*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
448*60bac4d6SBjoern A. Zeeb 	},
449*60bac4d6SBjoern A. Zeeb 
450*60bac4d6SBjoern A. Zeeb 	/* CE5: target->host Pktlog */
451*60bac4d6SBjoern A. Zeeb 	{
452*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(5),
453*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_IN),
454*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
455*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
456*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
457*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
458*60bac4d6SBjoern A. Zeeb 	},
459*60bac4d6SBjoern A. Zeeb 
460*60bac4d6SBjoern A. Zeeb 	/* CE6: Reserved for target autonomous hif_memcpy */
461*60bac4d6SBjoern A. Zeeb 	{
462*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(6),
463*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_INOUT),
464*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
465*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(16384),
466*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
467*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
468*60bac4d6SBjoern A. Zeeb 	},
469*60bac4d6SBjoern A. Zeeb 
470*60bac4d6SBjoern A. Zeeb 	/* CE7 used only by Host */
471*60bac4d6SBjoern A. Zeeb 	{
472*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(7),
473*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_INOUT_H2H),
474*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(0),
475*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(0),
476*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS | CE_ATTR_DIS_INTR),
477*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
478*60bac4d6SBjoern A. Zeeb 	},
479*60bac4d6SBjoern A. Zeeb 
480*60bac4d6SBjoern A. Zeeb 	/* CE8 target->host used only by IPA */
481*60bac4d6SBjoern A. Zeeb 	{
482*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(8),
483*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_INOUT),
484*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
485*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(16384),
486*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
487*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
488*60bac4d6SBjoern A. Zeeb 	},
489*60bac4d6SBjoern A. Zeeb 	/* CE 9, 10, 11 are used by MHI driver */
490*60bac4d6SBjoern A. Zeeb };
491*60bac4d6SBjoern A. Zeeb 
492*60bac4d6SBjoern A. Zeeb const struct service_to_pipe
493*60bac4d6SBjoern A. Zeeb ath12k_wifi7_target_service_to_ce_map_wlan_wcn7850[] = {
494*60bac4d6SBjoern A. Zeeb 	{
495*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VO),
496*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
497*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(3),
498*60bac4d6SBjoern A. Zeeb 	},
499*60bac4d6SBjoern A. Zeeb 	{
500*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VO),
501*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
502*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(2),
503*60bac4d6SBjoern A. Zeeb 	},
504*60bac4d6SBjoern A. Zeeb 	{
505*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BK),
506*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
507*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(3),
508*60bac4d6SBjoern A. Zeeb 	},
509*60bac4d6SBjoern A. Zeeb 	{
510*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BK),
511*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
512*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(2),
513*60bac4d6SBjoern A. Zeeb 	},
514*60bac4d6SBjoern A. Zeeb 	{
515*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BE),
516*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
517*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(3),
518*60bac4d6SBjoern A. Zeeb 	},
519*60bac4d6SBjoern A. Zeeb 	{
520*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BE),
521*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
522*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(2),
523*60bac4d6SBjoern A. Zeeb 	},
524*60bac4d6SBjoern A. Zeeb 	{
525*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VI),
526*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
527*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(3),
528*60bac4d6SBjoern A. Zeeb 	},
529*60bac4d6SBjoern A. Zeeb 	{
530*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VI),
531*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
532*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(2),
533*60bac4d6SBjoern A. Zeeb 	},
534*60bac4d6SBjoern A. Zeeb 	{
535*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL),
536*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
537*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(3),
538*60bac4d6SBjoern A. Zeeb 	},
539*60bac4d6SBjoern A. Zeeb 	{
540*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL),
541*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
542*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(2),
543*60bac4d6SBjoern A. Zeeb 	},
544*60bac4d6SBjoern A. Zeeb 	{
545*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_RSVD_CTRL),
546*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
547*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(0),
548*60bac4d6SBjoern A. Zeeb 	},
549*60bac4d6SBjoern A. Zeeb 	{
550*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_RSVD_CTRL),
551*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
552*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(2),
553*60bac4d6SBjoern A. Zeeb 	},
554*60bac4d6SBjoern A. Zeeb 	{
555*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_HTT_DATA_MSG),
556*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
557*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(4),
558*60bac4d6SBjoern A. Zeeb 	},
559*60bac4d6SBjoern A. Zeeb 	{
560*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_HTT_DATA_MSG),
561*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
562*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(1),
563*60bac4d6SBjoern A. Zeeb 	},
564*60bac4d6SBjoern A. Zeeb 
565*60bac4d6SBjoern A. Zeeb 	/* (Additions here) */
566*60bac4d6SBjoern A. Zeeb 
567*60bac4d6SBjoern A. Zeeb 	{ /* must be last */
568*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(0),
569*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(0),
570*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(0),
571*60bac4d6SBjoern A. Zeeb 	},
572*60bac4d6SBjoern A. Zeeb };
573*60bac4d6SBjoern A. Zeeb 
574*60bac4d6SBjoern A. Zeeb const struct ce_attr ath12k_wifi7_host_ce_config_wcn7850[] = {
575*60bac4d6SBjoern A. Zeeb 	/* CE0: host->target HTC control and raw streams */
576*60bac4d6SBjoern A. Zeeb 	{
577*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS,
578*60bac4d6SBjoern A. Zeeb 		.src_nentries = 16,
579*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 2048,
580*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
581*60bac4d6SBjoern A. Zeeb 	},
582*60bac4d6SBjoern A. Zeeb 
583*60bac4d6SBjoern A. Zeeb 	/* CE1: target->host HTT + HTC control */
584*60bac4d6SBjoern A. Zeeb 	{
585*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS,
586*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
587*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 2048,
588*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 512,
589*60bac4d6SBjoern A. Zeeb 		.recv_cb = ath12k_htc_rx_completion_handler,
590*60bac4d6SBjoern A. Zeeb 	},
591*60bac4d6SBjoern A. Zeeb 
592*60bac4d6SBjoern A. Zeeb 	/* CE2: target->host WMI */
593*60bac4d6SBjoern A. Zeeb 	{
594*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS,
595*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
596*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 2048,
597*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 64,
598*60bac4d6SBjoern A. Zeeb 		.recv_cb = ath12k_htc_rx_completion_handler,
599*60bac4d6SBjoern A. Zeeb 	},
600*60bac4d6SBjoern A. Zeeb 
601*60bac4d6SBjoern A. Zeeb 	/* CE3: host->target WMI (mac0) */
602*60bac4d6SBjoern A. Zeeb 	{
603*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS,
604*60bac4d6SBjoern A. Zeeb 		.src_nentries = 32,
605*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 2048,
606*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
607*60bac4d6SBjoern A. Zeeb 	},
608*60bac4d6SBjoern A. Zeeb 
609*60bac4d6SBjoern A. Zeeb 	/* CE4: host->target HTT */
610*60bac4d6SBjoern A. Zeeb 	{
611*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS | CE_ATTR_DIS_INTR,
612*60bac4d6SBjoern A. Zeeb 		.src_nentries = 2048,
613*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 256,
614*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
615*60bac4d6SBjoern A. Zeeb 	},
616*60bac4d6SBjoern A. Zeeb 
617*60bac4d6SBjoern A. Zeeb 	/* CE5: target->host pktlog */
618*60bac4d6SBjoern A. Zeeb 	{
619*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS,
620*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
621*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 0,
622*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
623*60bac4d6SBjoern A. Zeeb 	},
624*60bac4d6SBjoern A. Zeeb 
625*60bac4d6SBjoern A. Zeeb 	/* CE6: target autonomous hif_memcpy */
626*60bac4d6SBjoern A. Zeeb 	{
627*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS | CE_ATTR_DIS_INTR,
628*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
629*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 0,
630*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
631*60bac4d6SBjoern A. Zeeb 	},
632*60bac4d6SBjoern A. Zeeb 
633*60bac4d6SBjoern A. Zeeb 	/* CE7: host->target WMI (mac1) */
634*60bac4d6SBjoern A. Zeeb 	{
635*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS | CE_ATTR_DIS_INTR,
636*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
637*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 2048,
638*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
639*60bac4d6SBjoern A. Zeeb 	},
640*60bac4d6SBjoern A. Zeeb 
641*60bac4d6SBjoern A. Zeeb 	/* CE8: target autonomous hif_memcpy */
642*60bac4d6SBjoern A. Zeeb 	{
643*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS | CE_ATTR_DIS_INTR,
644*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
645*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 0,
646*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
647*60bac4d6SBjoern A. Zeeb 	},
648*60bac4d6SBjoern A. Zeeb };
649*60bac4d6SBjoern A. Zeeb 
650*60bac4d6SBjoern A. Zeeb /* Copy Engine (CE) configs for IPQ5332 */
651*60bac4d6SBjoern A. Zeeb /* Target firmware's Copy Engine configuration. */
652*60bac4d6SBjoern A. Zeeb const struct ce_pipe_config ath12k_wifi7_target_ce_config_wlan_ipq5332[] = {
653*60bac4d6SBjoern A. Zeeb 	/* CE0: host->target HTC control and raw streams */
654*60bac4d6SBjoern A. Zeeb 	{
655*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(0),
656*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
657*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
658*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
659*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
660*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
661*60bac4d6SBjoern A. Zeeb 	},
662*60bac4d6SBjoern A. Zeeb 
663*60bac4d6SBjoern A. Zeeb 	/* CE1: target->host HTT */
664*60bac4d6SBjoern A. Zeeb 	{
665*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(1),
666*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_IN),
667*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
668*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
669*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
670*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
671*60bac4d6SBjoern A. Zeeb 	},
672*60bac4d6SBjoern A. Zeeb 
673*60bac4d6SBjoern A. Zeeb 	/* CE2: target->host WMI  + HTC control */
674*60bac4d6SBjoern A. Zeeb 	{
675*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(2),
676*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_IN),
677*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
678*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
679*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
680*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
681*60bac4d6SBjoern A. Zeeb 	},
682*60bac4d6SBjoern A. Zeeb 
683*60bac4d6SBjoern A. Zeeb 	/* CE3: host->target WMI */
684*60bac4d6SBjoern A. Zeeb 	{
685*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(3),
686*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
687*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
688*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
689*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
690*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
691*60bac4d6SBjoern A. Zeeb 	},
692*60bac4d6SBjoern A. Zeeb 
693*60bac4d6SBjoern A. Zeeb 	/* CE4: host->target HTT */
694*60bac4d6SBjoern A. Zeeb 	{
695*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(4),
696*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
697*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(256),
698*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(256),
699*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS | CE_ATTR_DIS_INTR),
700*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
701*60bac4d6SBjoern A. Zeeb 	},
702*60bac4d6SBjoern A. Zeeb 
703*60bac4d6SBjoern A. Zeeb 	/* CE5: Target -> host PKTLOG */
704*60bac4d6SBjoern A. Zeeb 	{
705*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(5),
706*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_IN),
707*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
708*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
709*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
710*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
711*60bac4d6SBjoern A. Zeeb 	},
712*60bac4d6SBjoern A. Zeeb 
713*60bac4d6SBjoern A. Zeeb 	/* CE6: Reserved for target autonomous HIF_memcpy */
714*60bac4d6SBjoern A. Zeeb 	{
715*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(6),
716*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_INOUT),
717*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
718*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(16384),
719*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
720*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
721*60bac4d6SBjoern A. Zeeb 	},
722*60bac4d6SBjoern A. Zeeb 
723*60bac4d6SBjoern A. Zeeb 	/* CE7: Reserved for CV Prefetch */
724*60bac4d6SBjoern A. Zeeb 	{
725*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(7),
726*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
727*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
728*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
729*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
730*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
731*60bac4d6SBjoern A. Zeeb 	},
732*60bac4d6SBjoern A. Zeeb 
733*60bac4d6SBjoern A. Zeeb 	/* CE8: Reserved for target generic HIF memcpy */
734*60bac4d6SBjoern A. Zeeb 	{
735*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(8),
736*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_INOUT),
737*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
738*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(16384),
739*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
740*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
741*60bac4d6SBjoern A. Zeeb 	},
742*60bac4d6SBjoern A. Zeeb 
743*60bac4d6SBjoern A. Zeeb 	/* CE9: WMI logging/CFR/Spectral/Radar/ */
744*60bac4d6SBjoern A. Zeeb 	{
745*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(9),
746*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_IN),
747*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(32),
748*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(2048),
749*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
750*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
751*60bac4d6SBjoern A. Zeeb 	},
752*60bac4d6SBjoern A. Zeeb 
753*60bac4d6SBjoern A. Zeeb 	/* CE10: Unused TBD */
754*60bac4d6SBjoern A. Zeeb 	{
755*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(10),
756*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_NONE),
757*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(0),
758*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(0),
759*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(0),
760*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
761*60bac4d6SBjoern A. Zeeb 	},
762*60bac4d6SBjoern A. Zeeb 	/* CE11: Unused TBD */
763*60bac4d6SBjoern A. Zeeb 	{
764*60bac4d6SBjoern A. Zeeb 		.pipenum = __cpu_to_le32(11),
765*60bac4d6SBjoern A. Zeeb 		.pipedir = __cpu_to_le32(PIPEDIR_NONE),
766*60bac4d6SBjoern A. Zeeb 		.nentries = __cpu_to_le32(0),
767*60bac4d6SBjoern A. Zeeb 		.nbytes_max = __cpu_to_le32(0),
768*60bac4d6SBjoern A. Zeeb 		.flags = __cpu_to_le32(0),
769*60bac4d6SBjoern A. Zeeb 		.reserved = __cpu_to_le32(0),
770*60bac4d6SBjoern A. Zeeb 	},
771*60bac4d6SBjoern A. Zeeb };
772*60bac4d6SBjoern A. Zeeb 
773*60bac4d6SBjoern A. Zeeb const struct service_to_pipe
774*60bac4d6SBjoern A. Zeeb ath12k_wifi7_target_service_to_ce_map_wlan_ipq5332[] = {
775*60bac4d6SBjoern A. Zeeb 	{
776*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VO),
777*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
778*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(3),
779*60bac4d6SBjoern A. Zeeb 	},
780*60bac4d6SBjoern A. Zeeb 	{
781*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VO),
782*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
783*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(2),
784*60bac4d6SBjoern A. Zeeb 	},
785*60bac4d6SBjoern A. Zeeb 	{
786*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BK),
787*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
788*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(3),
789*60bac4d6SBjoern A. Zeeb 	},
790*60bac4d6SBjoern A. Zeeb 	{
791*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BK),
792*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
793*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(2),
794*60bac4d6SBjoern A. Zeeb 	},
795*60bac4d6SBjoern A. Zeeb 	{
796*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BE),
797*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
798*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(3),
799*60bac4d6SBjoern A. Zeeb 	},
800*60bac4d6SBjoern A. Zeeb 	{
801*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_BE),
802*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
803*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(2),
804*60bac4d6SBjoern A. Zeeb 	},
805*60bac4d6SBjoern A. Zeeb 	{
806*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VI),
807*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
808*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(3),
809*60bac4d6SBjoern A. Zeeb 	},
810*60bac4d6SBjoern A. Zeeb 	{
811*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_DATA_VI),
812*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
813*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(2),
814*60bac4d6SBjoern A. Zeeb 	},
815*60bac4d6SBjoern A. Zeeb 	{
816*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL),
817*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
818*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(3),
819*60bac4d6SBjoern A. Zeeb 	},
820*60bac4d6SBjoern A. Zeeb 	{
821*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL),
822*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
823*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(2),
824*60bac4d6SBjoern A. Zeeb 	},
825*60bac4d6SBjoern A. Zeeb 	{
826*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_RSVD_CTRL),
827*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
828*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(0),
829*60bac4d6SBjoern A. Zeeb 	},
830*60bac4d6SBjoern A. Zeeb 	{
831*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_RSVD_CTRL),
832*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
833*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(1),
834*60bac4d6SBjoern A. Zeeb 	},
835*60bac4d6SBjoern A. Zeeb 	{
836*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_TEST_RAW_STREAMS),
837*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
838*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(0),
839*60bac4d6SBjoern A. Zeeb 	},
840*60bac4d6SBjoern A. Zeeb 	{
841*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_TEST_RAW_STREAMS),
842*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
843*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(1),
844*60bac4d6SBjoern A. Zeeb 	},
845*60bac4d6SBjoern A. Zeeb 	{
846*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_HTT_DATA_MSG),
847*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_OUT),
848*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(4),
849*60bac4d6SBjoern A. Zeeb 	},
850*60bac4d6SBjoern A. Zeeb 	{
851*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_HTT_DATA_MSG),
852*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
853*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(1),
854*60bac4d6SBjoern A. Zeeb 	},
855*60bac4d6SBjoern A. Zeeb 	{
856*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_PKT_LOG),
857*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
858*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(5),
859*60bac4d6SBjoern A. Zeeb 	},
860*60bac4d6SBjoern A. Zeeb 	{
861*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(ATH12K_HTC_SVC_ID_WMI_CONTROL_DIAG),
862*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(PIPEDIR_IN),
863*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(9),
864*60bac4d6SBjoern A. Zeeb 	},
865*60bac4d6SBjoern A. Zeeb 	/* (Additions here) */
866*60bac4d6SBjoern A. Zeeb 
867*60bac4d6SBjoern A. Zeeb 	{ /* must be last */
868*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(0),
869*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(0),
870*60bac4d6SBjoern A. Zeeb 		__cpu_to_le32(0),
871*60bac4d6SBjoern A. Zeeb 	},
872*60bac4d6SBjoern A. Zeeb };
873*60bac4d6SBjoern A. Zeeb 
874*60bac4d6SBjoern A. Zeeb const struct ce_attr ath12k_wifi7_host_ce_config_ipq5332[] = {
875*60bac4d6SBjoern A. Zeeb 	/* CE0: host->target HTC control and raw streams */
876*60bac4d6SBjoern A. Zeeb 	{
877*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS,
878*60bac4d6SBjoern A. Zeeb 		.src_nentries = 16,
879*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 2048,
880*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
881*60bac4d6SBjoern A. Zeeb 	},
882*60bac4d6SBjoern A. Zeeb 
883*60bac4d6SBjoern A. Zeeb 	/* CE1: target->host HTT + HTC control */
884*60bac4d6SBjoern A. Zeeb 	{
885*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS,
886*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
887*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 2048,
888*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 512,
889*60bac4d6SBjoern A. Zeeb 		.recv_cb = ath12k_htc_rx_completion_handler,
890*60bac4d6SBjoern A. Zeeb 	},
891*60bac4d6SBjoern A. Zeeb 
892*60bac4d6SBjoern A. Zeeb 	/* CE2: target->host WMI */
893*60bac4d6SBjoern A. Zeeb 	{
894*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS,
895*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
896*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 2048,
897*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 128,
898*60bac4d6SBjoern A. Zeeb 		.recv_cb = ath12k_htc_rx_completion_handler,
899*60bac4d6SBjoern A. Zeeb 	},
900*60bac4d6SBjoern A. Zeeb 
901*60bac4d6SBjoern A. Zeeb 	/* CE3: host->target WMI */
902*60bac4d6SBjoern A. Zeeb 	{
903*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS,
904*60bac4d6SBjoern A. Zeeb 		.src_nentries = 32,
905*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 2048,
906*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
907*60bac4d6SBjoern A. Zeeb 	},
908*60bac4d6SBjoern A. Zeeb 
909*60bac4d6SBjoern A. Zeeb 	/* CE4: host->target HTT */
910*60bac4d6SBjoern A. Zeeb 	{
911*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS | CE_ATTR_DIS_INTR,
912*60bac4d6SBjoern A. Zeeb 		.src_nentries = 2048,
913*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 256,
914*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
915*60bac4d6SBjoern A. Zeeb 	},
916*60bac4d6SBjoern A. Zeeb 
917*60bac4d6SBjoern A. Zeeb 	/* CE5: target -> host PKTLOG */
918*60bac4d6SBjoern A. Zeeb 	{
919*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS,
920*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
921*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 2048,
922*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 512,
923*60bac4d6SBjoern A. Zeeb 		.recv_cb = ath12k_dp_htt_htc_t2h_msg_handler,
924*60bac4d6SBjoern A. Zeeb 	},
925*60bac4d6SBjoern A. Zeeb 
926*60bac4d6SBjoern A. Zeeb 	/* CE6: Target autonomous HIF_memcpy */
927*60bac4d6SBjoern A. Zeeb 	{
928*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS | CE_ATTR_DIS_INTR,
929*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
930*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 0,
931*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
932*60bac4d6SBjoern A. Zeeb 	},
933*60bac4d6SBjoern A. Zeeb 
934*60bac4d6SBjoern A. Zeeb 	/* CE7: CV Prefetch */
935*60bac4d6SBjoern A. Zeeb 	{
936*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS | CE_ATTR_DIS_INTR,
937*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
938*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 0,
939*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
940*60bac4d6SBjoern A. Zeeb 	},
941*60bac4d6SBjoern A. Zeeb 
942*60bac4d6SBjoern A. Zeeb 	/* CE8: Target HIF memcpy (Generic HIF memcypy) */
943*60bac4d6SBjoern A. Zeeb 	{
944*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS | CE_ATTR_DIS_INTR,
945*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
946*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 0,
947*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
948*60bac4d6SBjoern A. Zeeb 	},
949*60bac4d6SBjoern A. Zeeb 
950*60bac4d6SBjoern A. Zeeb 	/* CE9: WMI logging/CFR/Spectral/Radar */
951*60bac4d6SBjoern A. Zeeb 	{
952*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS,
953*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
954*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 2048,
955*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 128,
956*60bac4d6SBjoern A. Zeeb 	},
957*60bac4d6SBjoern A. Zeeb 
958*60bac4d6SBjoern A. Zeeb 	/* CE10: Unused */
959*60bac4d6SBjoern A. Zeeb 	{
960*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS | CE_ATTR_DIS_INTR,
961*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
962*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 0,
963*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
964*60bac4d6SBjoern A. Zeeb 	},
965*60bac4d6SBjoern A. Zeeb 
966*60bac4d6SBjoern A. Zeeb 	/* CE11: Unused */
967*60bac4d6SBjoern A. Zeeb 	{
968*60bac4d6SBjoern A. Zeeb 		.flags = CE_ATTR_FLAGS | CE_ATTR_DIS_INTR,
969*60bac4d6SBjoern A. Zeeb 		.src_nentries = 0,
970*60bac4d6SBjoern A. Zeeb 		.src_sz_max = 0,
971*60bac4d6SBjoern A. Zeeb 		.dest_nentries = 0,
972*60bac4d6SBjoern A. Zeeb 	},
973*60bac4d6SBjoern A. Zeeb };
974