^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * Copyright (C) 2019-2020 Linaro Ltd.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #include <linux/log2.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include "gsi.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include "ipa_data.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include "ipa_endpoint.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include "ipa_mem.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) /* Endpoint configuration for the SDM845 SoC. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) static const struct ipa_gsi_endpoint_data ipa_gsi_endpoint_data[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) [IPA_ENDPOINT_AP_COMMAND_TX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) .ee_id = GSI_EE_AP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) .channel_id = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) .endpoint_id = 5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) .toward_ipa = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) .channel = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) .tre_count = 512,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) .event_count = 256,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) .tlv_count = 20,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) .endpoint = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) .seq_type = IPA_SEQ_DMA_ONLY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) .config = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) .dma_mode = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) .dma_endpoint = IPA_ENDPOINT_AP_LAN_RX,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) [IPA_ENDPOINT_AP_LAN_RX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) .ee_id = GSI_EE_AP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) .channel_id = 5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) .endpoint_id = 9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) .toward_ipa = false,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) .channel = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) .tre_count = 256,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) .event_count = 256,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) .tlv_count = 8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) .endpoint = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) .seq_type = IPA_SEQ_INVALID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) .config = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) .aggregation = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) .status_enable = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) .rx = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) .pad_align = ilog2(sizeof(u32)),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) [IPA_ENDPOINT_AP_MODEM_TX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) .ee_id = GSI_EE_AP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) .channel_id = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) .endpoint_id = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) .toward_ipa = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) .channel = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) .tre_count = 512,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) .event_count = 512,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) .tlv_count = 16,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) .endpoint = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) .filter_support = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) .seq_type =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) IPA_SEQ_2ND_PKT_PROCESS_PASS_NO_DEC_UCP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) .config = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) .checksum = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) .qmap = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) .status_enable = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) .tx = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) .status_endpoint =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) IPA_ENDPOINT_MODEM_AP_RX,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) [IPA_ENDPOINT_AP_MODEM_RX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) .ee_id = GSI_EE_AP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) .channel_id = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) .endpoint_id = 10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) .toward_ipa = false,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) .channel = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) .tre_count = 256,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) .event_count = 256,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) .tlv_count = 8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) .endpoint = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) .seq_type = IPA_SEQ_INVALID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) .config = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) .checksum = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) .qmap = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) .aggregation = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) .rx = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) .aggr_close_eof = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) [IPA_ENDPOINT_MODEM_COMMAND_TX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) .ee_id = GSI_EE_MODEM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) .channel_id = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) .endpoint_id = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) .toward_ipa = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) [IPA_ENDPOINT_MODEM_LAN_TX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) .ee_id = GSI_EE_MODEM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) .channel_id = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) .endpoint_id = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) .toward_ipa = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) .endpoint = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) .filter_support = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) [IPA_ENDPOINT_MODEM_LAN_RX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) .ee_id = GSI_EE_MODEM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) .channel_id = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) .endpoint_id = 13,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) .toward_ipa = false,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) [IPA_ENDPOINT_MODEM_AP_TX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) .ee_id = GSI_EE_MODEM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) .channel_id = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) .endpoint_id = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) .toward_ipa = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) .endpoint = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) .filter_support = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) [IPA_ENDPOINT_MODEM_AP_RX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) .ee_id = GSI_EE_MODEM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) .channel_id = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) .endpoint_id = 12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) .toward_ipa = false,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) /* For the SDM845, resource groups are allocated this way:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) * group 0: LWA_DL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) * group 1: UL_DL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) static const struct ipa_resource_src ipa_resource_src[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) .type = IPA_RESOURCE_TYPE_SRC_PKT_CONTEXTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) .limits[0] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) .min = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) .max = 63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) .limits[1] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) .min = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) .max = 63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) .type = IPA_RESOURCE_TYPE_SRC_DESCRIPTOR_LISTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) .limits[0] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) .min = 10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) .max = 10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) .limits[1] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) .min = 10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) .max = 10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) .type = IPA_RESOURCE_TYPE_SRC_DESCRIPTOR_BUFF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) .limits[0] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) .min = 12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) .max = 12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) .limits[1] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) .min = 14,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) .max = 14,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) .type = IPA_RESOURCE_TYPE_SRC_HPS_DMARS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) .limits[0] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) .min = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) .max = 63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) .limits[1] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) .min = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) .max = 63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) .type = IPA_RESOURCE_TYPE_SRC_ACK_ENTRIES,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) .limits[0] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) .min = 14,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) .max = 14,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) .limits[1] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) .min = 20,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) .max = 20,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) static const struct ipa_resource_dst ipa_resource_dst[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) .type = IPA_RESOURCE_TYPE_DST_DATA_SECTORS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) .limits[0] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) .min = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) .max = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) .limits[1] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) .min = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) .max = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) .type = IPA_RESOURCE_TYPE_DST_DPS_DMARS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) .limits[0] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) .min = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) .max = 63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) .limits[1] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) .min = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) .max = 63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) /* Resource configuration for the SDM845 SoC. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) static const struct ipa_resource_data ipa_resource_data = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) .resource_src_count = ARRAY_SIZE(ipa_resource_src),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) .resource_src = ipa_resource_src,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) .resource_dst_count = ARRAY_SIZE(ipa_resource_dst),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) .resource_dst = ipa_resource_dst,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) /* IPA-resident memory region configuration for the SDM845 SoC. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) static const struct ipa_mem ipa_mem_local_data[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) [IPA_MEM_UC_SHARED] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) .offset = 0x0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) .size = 0x0080,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) .canary_count = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) [IPA_MEM_UC_INFO] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) .offset = 0x0080,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) .size = 0x0200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) .canary_count = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) [IPA_MEM_V4_FILTER_HASHED] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) .offset = 0x0288,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) .size = 0x0078,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) .canary_count = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) [IPA_MEM_V4_FILTER] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) .offset = 0x0308,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) .size = 0x0078,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) .canary_count = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) [IPA_MEM_V6_FILTER_HASHED] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) .offset = 0x0388,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) .size = 0x0078,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) .canary_count = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) [IPA_MEM_V6_FILTER] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) .offset = 0x0408,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) .size = 0x0078,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) .canary_count = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) [IPA_MEM_V4_ROUTE_HASHED] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) .offset = 0x0488,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) .size = 0x0078,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) .canary_count = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) [IPA_MEM_V4_ROUTE] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) .offset = 0x0508,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) .size = 0x0078,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) .canary_count = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) [IPA_MEM_V6_ROUTE_HASHED] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) .offset = 0x0588,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) .size = 0x0078,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) .canary_count = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) [IPA_MEM_V6_ROUTE] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) .offset = 0x0608,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) .size = 0x0078,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) .canary_count = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) [IPA_MEM_MODEM_HEADER] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) .offset = 0x0688,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) .size = 0x0140,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) .canary_count = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) [IPA_MEM_AP_HEADER] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) .offset = 0x07c8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) .size = 0x0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) .canary_count = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) [IPA_MEM_MODEM_PROC_CTX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) .offset = 0x07d0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) .size = 0x0200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) .canary_count = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) [IPA_MEM_AP_PROC_CTX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) .offset = 0x09d0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) .size = 0x0200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) .canary_count = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) [IPA_MEM_MODEM] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) .offset = 0x0bd8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) .size = 0x1024,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) .canary_count = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) [IPA_MEM_UC_EVENT_RING] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) .offset = 0x1c00,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) .size = 0x0400,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) .canary_count = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) static struct ipa_mem_data ipa_mem_data = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) .local_count = ARRAY_SIZE(ipa_mem_local_data),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) .local = ipa_mem_local_data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) .imem_addr = 0x146bd000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) .imem_size = 0x00002000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) .smem_id = 497,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) .smem_size = 0x00002000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) /* Configuration data for the SDM845 SoC. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) const struct ipa_data ipa_data_sdm845 = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) .version = IPA_VERSION_3_5_1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) .endpoint_count = ARRAY_SIZE(ipa_gsi_endpoint_data),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) .endpoint_data = ipa_gsi_endpoint_data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) .resource_data = &ipa_resource_data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) .mem_data = &ipa_mem_data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) };