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