^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) 2019-2020 Linaro Ltd. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #include <linux/log2.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #include "gsi.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #include "ipa_data.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include "ipa_endpoint.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include "ipa_mem.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) /* Endpoint configuration for the SC7180 SoC. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) static const struct ipa_gsi_endpoint_data ipa_gsi_endpoint_data[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) [IPA_ENDPOINT_AP_COMMAND_TX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) .ee_id = GSI_EE_AP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) .channel_id = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) .endpoint_id = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) .toward_ipa = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) .channel = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) .tre_count = 256,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) .event_count = 256,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) .tlv_count = 20,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) .endpoint = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) .seq_type = IPA_SEQ_DMA_ONLY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) .config = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) .dma_mode = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) .dma_endpoint = IPA_ENDPOINT_AP_LAN_RX,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) [IPA_ENDPOINT_AP_LAN_RX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) .ee_id = GSI_EE_AP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) .channel_id = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) .endpoint_id = 8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) .toward_ipa = false,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) .channel = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) .tre_count = 256,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) .event_count = 256,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) .tlv_count = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) .endpoint = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) .seq_type = IPA_SEQ_INVALID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) .config = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) .aggregation = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) .status_enable = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) .rx = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) .pad_align = ilog2(sizeof(u32)),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) },
^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) [IPA_ENDPOINT_AP_MODEM_TX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) .ee_id = GSI_EE_AP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) .channel_id = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) .endpoint_id = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) .toward_ipa = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) .channel = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) .tre_count = 512,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) .event_count = 512,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) .tlv_count = 8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) .endpoint = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) .filter_support = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) .seq_type =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) IPA_SEQ_PKT_PROCESS_NO_DEC_NO_UCP_DMAP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) .config = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) .checksum = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) .qmap = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) .status_enable = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) .tx = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) .status_endpoint =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) IPA_ENDPOINT_MODEM_AP_RX,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) },
^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) [IPA_ENDPOINT_AP_MODEM_RX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) .ee_id = GSI_EE_AP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) .channel_id = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) .endpoint_id = 9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) .toward_ipa = false,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) .channel = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) .tre_count = 256,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) .event_count = 256,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) .tlv_count = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) .endpoint = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) .seq_type = IPA_SEQ_INVALID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) .config = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) .checksum = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) .qmap = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) .aggregation = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) .rx = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) .aggr_close_eof = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) },
^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) [IPA_ENDPOINT_MODEM_COMMAND_TX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) .ee_id = GSI_EE_MODEM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) .channel_id = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) .endpoint_id = 5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) .toward_ipa = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) [IPA_ENDPOINT_MODEM_LAN_RX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) .ee_id = GSI_EE_MODEM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) .channel_id = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) .endpoint_id = 11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) .toward_ipa = false,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) [IPA_ENDPOINT_MODEM_AP_TX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) .ee_id = GSI_EE_MODEM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) .channel_id = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) .endpoint_id = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) .toward_ipa = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) .endpoint = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) .filter_support = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) [IPA_ENDPOINT_MODEM_AP_RX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) .ee_id = GSI_EE_MODEM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) .channel_id = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) .endpoint_id = 10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) .toward_ipa = false,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) /* For the SC7180, resource groups are allocated this way:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) * group 0: UL_DL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) static const struct ipa_resource_src ipa_resource_src[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) .type = IPA_RESOURCE_TYPE_SRC_PKT_CONTEXTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) .limits[0] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) .min = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) .max = 63,
^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) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) .type = IPA_RESOURCE_TYPE_SRC_DESCRIPTOR_LISTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) .limits[0] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) .min = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) .max = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) .type = IPA_RESOURCE_TYPE_SRC_DESCRIPTOR_BUFF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) .limits[0] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) .min = 10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) .max = 10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) .type = IPA_RESOURCE_TYPE_SRC_HPS_DMARS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) .limits[0] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) .min = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) .max = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) .type = IPA_RESOURCE_TYPE_SRC_ACK_ENTRIES,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) .limits[0] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) .min = 5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) .max = 5,
^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) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) static const struct ipa_resource_dst ipa_resource_dst[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) .type = IPA_RESOURCE_TYPE_DST_DATA_SECTORS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) .limits[0] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) .min = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) .max = 3,
^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_DST_DPS_DMARS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) .limits[0] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) .min = 1,
^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) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) /* Resource configuration for the SC7180 SoC. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) static const struct ipa_resource_data ipa_resource_data = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) .resource_src_count = ARRAY_SIZE(ipa_resource_src),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) .resource_src = ipa_resource_src,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) .resource_dst_count = ARRAY_SIZE(ipa_resource_dst),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) .resource_dst = ipa_resource_dst,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) /* IPA-resident memory region configuration for the SC7180 SoC. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) static const struct ipa_mem ipa_mem_local_data[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) [IPA_MEM_UC_SHARED] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) .offset = 0x0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) .size = 0x0080,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) .canary_count = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) [IPA_MEM_UC_INFO] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) .offset = 0x0080,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) .size = 0x0200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) .canary_count = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) [IPA_MEM_V4_FILTER_HASHED] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) .offset = 0x0288,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) .size = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) .canary_count = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) [IPA_MEM_V4_FILTER] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) .offset = 0x0290,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) .size = 0x0078,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) .canary_count = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) [IPA_MEM_V6_FILTER_HASHED] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) .offset = 0x0310,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) .size = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) .canary_count = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) [IPA_MEM_V6_FILTER] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) .offset = 0x0318,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) .size = 0x0078,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) .canary_count = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) [IPA_MEM_V4_ROUTE_HASHED] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) .offset = 0x0398,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) .size = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) .canary_count = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) [IPA_MEM_V4_ROUTE] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) .offset = 0x03a0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) .size = 0x0078,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) .canary_count = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) [IPA_MEM_V6_ROUTE_HASHED] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) .offset = 0x0420,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) .size = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) .canary_count = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) [IPA_MEM_V6_ROUTE] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) .offset = 0x0428,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) .size = 0x0078,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) .canary_count = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) [IPA_MEM_MODEM_HEADER] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) .offset = 0x04a8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) .size = 0x0140,
^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_AP_HEADER] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) .offset = 0x05e8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) .size = 0x0000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) .canary_count = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) [IPA_MEM_MODEM_PROC_CTX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) .offset = 0x05f0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) .size = 0x0200,
^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_AP_PROC_CTX] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) .offset = 0x07f0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) .size = 0x0200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) .canary_count = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) [IPA_MEM_PDN_CONFIG] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) .offset = 0x09f8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) .size = 0x0050,
^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_STATS_QUOTA] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) .offset = 0x0a50,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) .size = 0x0060,
^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_STATS_TETHERING] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) .offset = 0x0ab0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) .size = 0x0140,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) .canary_count = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) [IPA_MEM_STATS_DROP] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) .offset = 0x0bf0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) .size = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) .canary_count = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) [IPA_MEM_MODEM] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) .offset = 0x0bf0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) .size = 0x140c,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) .canary_count = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) [IPA_MEM_UC_EVENT_RING] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) .offset = 0x2000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) .size = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) .canary_count = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) static struct ipa_mem_data ipa_mem_data = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) .local_count = ARRAY_SIZE(ipa_mem_local_data),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) .local = ipa_mem_local_data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) .imem_addr = 0x146a8000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) .imem_size = 0x00002000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) .smem_id = 497,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) .smem_size = 0x00002000,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) /* Configuration data for the SC7180 SoC. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) const struct ipa_data ipa_data_sc7180 = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) .version = IPA_VERSION_4_2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) .endpoint_count = ARRAY_SIZE(ipa_gsi_endpoint_data),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) .endpoint_data = ipa_gsi_endpoint_data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) .resource_data = &ipa_resource_data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) .mem_data = &ipa_mem_data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) };