1 // SPDX-License-Identifier: GPL-2.0
3 /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
4 * Copyright (C) 2019-2020 Linaro Ltd.
7 #include <linux/log2.h>
11 #include "ipa_endpoint.h"
14 /* Endpoint configuration for the SDM845 SoC. */
15 static const struct ipa_gsi_endpoint_data ipa_gsi_endpoint_data[] = {
16 [IPA_ENDPOINT_AP_COMMAND_TX] = {
27 .seq_type = IPA_SEQ_DMA_ONLY,
30 .dma_endpoint = IPA_ENDPOINT_AP_LAN_RX,
34 [IPA_ENDPOINT_AP_LAN_RX] = {
45 .seq_type = IPA_SEQ_INVALID,
49 .status_enable = true,
51 .pad_align = ilog2(sizeof(u32)),
56 [IPA_ENDPOINT_AP_MODEM_TX] = {
67 .filter_support = true,
69 IPA_SEQ_2ND_PKT_PROCESS_PASS_NO_DEC_UCP,
73 .status_enable = true,
76 IPA_ENDPOINT_MODEM_AP_RX,
82 [IPA_ENDPOINT_AP_MODEM_RX] = {
93 .seq_type = IPA_SEQ_INVALID,
99 .aggr_close_eof = true,
104 [IPA_ENDPOINT_MODEM_COMMAND_TX] = {
105 .ee_id = GSI_EE_MODEM,
110 [IPA_ENDPOINT_MODEM_LAN_TX] = {
111 .ee_id = GSI_EE_MODEM,
116 .filter_support = true,
119 [IPA_ENDPOINT_MODEM_LAN_RX] = {
120 .ee_id = GSI_EE_MODEM,
125 [IPA_ENDPOINT_MODEM_AP_TX] = {
126 .ee_id = GSI_EE_MODEM,
131 .filter_support = true,
134 [IPA_ENDPOINT_MODEM_AP_RX] = {
135 .ee_id = GSI_EE_MODEM,
142 /* For the SDM845, resource groups are allocated this way:
146 static const struct ipa_resource_src ipa_resource_src[] = {
148 .type = IPA_RESOURCE_TYPE_SRC_PKT_CONTEXTS,
159 .type = IPA_RESOURCE_TYPE_SRC_DESCRIPTOR_LISTS,
170 .type = IPA_RESOURCE_TYPE_SRC_DESCRIPTOR_BUFF,
181 .type = IPA_RESOURCE_TYPE_SRC_HPS_DMARS,
192 .type = IPA_RESOURCE_TYPE_SRC_ACK_ENTRIES,
204 static const struct ipa_resource_dst ipa_resource_dst[] = {
206 .type = IPA_RESOURCE_TYPE_DST_DATA_SECTORS,
217 .type = IPA_RESOURCE_TYPE_DST_DPS_DMARS,
229 /* Resource configuration for the SDM845 SoC. */
230 static const struct ipa_resource_data ipa_resource_data = {
231 .resource_src_count = ARRAY_SIZE(ipa_resource_src),
232 .resource_src = ipa_resource_src,
233 .resource_dst_count = ARRAY_SIZE(ipa_resource_dst),
234 .resource_dst = ipa_resource_dst,
237 /* IPA-resident memory region configuration for the SDM845 SoC. */
238 static const struct ipa_mem ipa_mem_data[] = {
239 [IPA_MEM_UC_SHARED] = {
244 [IPA_MEM_UC_INFO] = {
249 [IPA_MEM_V4_FILTER_HASHED] = {
254 [IPA_MEM_V4_FILTER] = {
259 [IPA_MEM_V6_FILTER_HASHED] = {
264 [IPA_MEM_V6_FILTER] = {
269 [IPA_MEM_V4_ROUTE_HASHED] = {
274 [IPA_MEM_V4_ROUTE] = {
279 [IPA_MEM_V6_ROUTE_HASHED] = {
284 [IPA_MEM_V6_ROUTE] = {
289 [IPA_MEM_MODEM_HEADER] = {
294 [IPA_MEM_AP_HEADER] = {
299 [IPA_MEM_MODEM_PROC_CTX] = {
304 [IPA_MEM_AP_PROC_CTX] = {
314 [IPA_MEM_UC_EVENT_RING] = {
321 /* Configuration data for the SDM845 SoC. */
322 const struct ipa_data ipa_data_sdm845 = {
323 .version = IPA_VERSION_3_5_1,
324 .endpoint_count = ARRAY_SIZE(ipa_gsi_endpoint_data),
325 .endpoint_data = ipa_gsi_endpoint_data,
326 .resource_data = &ipa_resource_data,
327 .mem_count = ARRAY_SIZE(ipa_mem_data),
328 .mem_data = ipa_mem_data,