Confira !!
Para : AngeloGioacchino Del Regno <angelogioacchino.delregno@xxxxxxxxxxxxxx>, Elder @ xxxxxxxxxx
Assunto : Re: [PATCH v1 5/7] net: ipa: Adicionar suporte para IPA em MSM8998
De : Alex Elder <Elder @ xxxxxxxx>
Data : Quarta, 5 de maio de 2021 17:42:58 -0500
Cc : bjorn.andersson@xxxxxxxxxx, agross @ xxxxxxxxxx, davem @ xxxxxxxxxxxxx, kuba @ xxxxxxxxxx, linux-arm-msm @ xxxxxxxxxxxxxxx, netdev @ xxxxxxxxxxxxxxxxx, devicetree @ xxxxxxxxxxxxx, kuba @ xxxxxxxxxx, linux-arm-msm @ xxxxxxxxxxxxxxx, netdev @ xxxxxxxxxxxxxxxxx, devicetree @ xxxxxxxxxxxxx @ xxxxxxxxxx, linux-arm-msm @ xxxxxxxxxxxxxxx, netdev @ xxxxxxxxxxxxxxxxx, devicetree @ xxxxxxxnocioxxxxxxxxxxxxxxxxnxxnxxnxxxx, xxxxxxxxxxxnxxnxxxxxx, xxxxxnxxxxxxxx. suijten @ xxxxxxxxxxxxxx, phone-devel @ xxxxxxxxxxxxxxx
Em resposta a : < 20210211175015.200772-6-angelogioacchino.delregno@somainline.org >
Referências : < 20210211175015.200772-1-angelogioacchino.delregno@somainline.org > < 20210211175015.200772-6-angelogioacchino.delregno@somainline.org >
Agente do usuário : Mozilla / 5.0 (X11; Linux x86_64; rv: 78.0) Gecko / 20100101 Thunderbird / 78.7.1
Em 21/02/21 11h50, AngeloGioacchino Del Regno escreveu:
MSM8998 apresenta IPA v3.1 (GSI v1.0): adicione a configuração necessária
dados para isso.
Assinado por: AngeloGioacchino Del Regno <angelogioacchino.delregno@xxxxxxxxxxxxxx>
Parece ótimo, mas desde que você postou este código pela primeira vez, nós
nomeie esses arquivos de dados com base na versão IPA e,
são algumas coisas novas definidas dentro deles.
Duas coisas que descobri que você errou foi a atribuição de
o grupo de recursos do endpoint, e você estava perdendo a atribuição
de limites de alguns grupos de recursos. Eu acho que todo o resto
que você forneceu parece correto ou está bem parecido.
Vou definir uma região real de pseudo memória para marcar o fim de
memória (em vez de usar UC_EVENT_RING).
Vou verificar todas as informações que você forneceu aqui, e
atualizará o arquivo com o nome "ipa_data-v3.1.c", e
irá adicionar ou revisar as informações para coincidir com o atual
forma como esses arquivos são definidos.
Vou creditar a você e incluir um link para o seu original
publicar.
-Alex
---
drivers / net / ipa / Makefile | 3 + -
drivers / net / ipa / ipa_data-msm8998.c | 407 +++++++++++++++++++++++++++++
drivers / net / ipa / ipa_data.h | 5 +
drivers / net / ipa / ipa_main.c | 4 +
4 arquivos alterados, 418 inserções (+), 1 exclusão (-)
modo de criação 100.644 drivers / net / ipa / ipa_data-msm8998.c
diff --git a / drivers / net / ipa / Makefile b / drivers / net / ipa / Makefile
índice afe5df1e6eee..4a6f4053dce2 100644
--- a / drivers / net / ipa / Makefile
+++ b / drivers / net / ipa / Makefile
@@ -9,4 +9,5 @@ ipa-y: = ipa_main.o ipa_clock.o ipa_reg.o ipa_mem.o \
ipa_endpoint.o ipa_cmd.o ipa_modem.o \
ipa_qmi.o ipa_qmi_msg.o
-ipa-y + = ipa_data-sdm845.o ipa_data-sc7180.o
+ ipa-y + = ipa_data-msm8998.o ipa_data-sdm845.o \
+ ipa_data-sc7180.o
diff --git a / drivers / net / ipa / ipa_data-msm8998.cb / drivers / net / ipa / ipa_data-msm8998.c
novo modo de arquivo 100644
índice 000000000000..90e724468e40
--- / dev / null
+++ b / drivers / net / ipa / ipa_data-msm8998.c
@@ -0,0 +1.407 @@
+ // SPDX-License-Identifier: GPL-2.0
+
+ / * Copyright (c) 2012-2018, The Linux Foundation. Todos os direitos reservados.
+ * Copyright (C) 2019-2020 Linaro Ltd.
+ * Coypright (C) 2021, AngeloGioacchino Del Regno
+ * <angelogioacchino.delregno@xxxxxxxxxxxxxx>
+ * /
+
+ # inclui <linux / log2.h>
+
+ # inclui "gsi.h"
+ # inclui "ipa_data.h"
+ # inclui "ipa_endpoint.h"
+ # inclui "ipa_mem.h"
+
+ / * Configuração de endpoint para o SoC MSM8998. * /
+ estática const struct ipa_gsi_endpoint_data ipa_gsi_endpoint_data [] = {
+ [IPA_ENDPOINT_AP_COMMAND_TX] = {
+ .ee_id = GSI_EE_AP,
+ .channel_id = 6,
+ .endpoint_id = 22,
+ .toward_ipa = true,
+ .channel = {
+ .tre_count = 256,
+ .event_count = 256,
+ .tlv_count = 18,
+},
+ .endpoint = {
+ .seq_type = IPA_SEQ_DMA_ONLY,
+ .config = {
+ .resource_group = 1,
+ .dma_mode = true,
+ .dma_endpoint = IPA_ENDPOINT_AP_LAN_RX,
+},
+},
+},
+ [IPA_ENDPOINT_AP_LAN_RX] = {
+ .ee_id = GSI_EE_AP,
+ .channel_id = 7,
+ .endpoint_id = 15,
+ .toward_ipa = false,
+ .channel = {
+ .tre_count = 256,
+ .event_count = 256,
+ .tlv_count = 8,
+},
+ .endpoint = {
+ .seq_type = IPA_SEQ_INVALID,
+ .config = {
+ .resource_group = 1,
+ .aggregation = true,
+ .status_enable = true,
+ .rx = {
+ .pad_align = ilog2 (sizeof (u32)),
+},
+},
+},
+},
+ [IPA_ENDPOINT_AP_MODEM_TX] = {
+ .ee_id = GSI_EE_AP,
+ .channel_id = 5,
+ .endpoint_id = 3,
+ .toward_ipa = true,
+ .channel = {
+ .tre_count = 512,
+ .event_count = 512,
+ .tlv_count = 16,
+},
+ .endpoint = {
+ .filter_support = true,
+ .seq_type =
+ IPA_SEQ_2ND_PKT_PROCESS_PASS_NO_DEC_UCP,
+ .config = {
+ .resource_group = 1,
+ .checksum = true,
+ .qmap = true,
+ .status_enable = true,
+ .tx = {
+ .status_endpoint =
+ IPA_ENDPOINT_MODEM_AP_RX,
+},
+},
+},
+},
+ [IPA_ENDPOINT_AP_MODEM_RX] = {
+ .ee_id = GSI_EE_AP,
+ .channel_id = 8,
+ .endpoint_id = 16,
+ .toward_ipa = false,
+ .channel = {
+ .tre_count = 256,
+ .event_count = 256,
+ .tlv_count = 8,
+},
+ .endpoint = {
+ .seq_type = IPA_SEQ_INVALID,
+ .config = {
+ .resource_group = 1,
+ .checksum = true,
+ .qmap = true,
+ .aggregation = true,
+ .rx = {
+ .aggr_close_eof = true,
+},
+},
+},
+},
+ [IPA_ENDPOINT_MODEM_COMMAND_TX] = {
+ .ee_id = GSI_EE_MODEM,
+ .channel_id = 1,
+ .endpoint_id = 6,
+ .toward_ipa = true,
+},
+ [IPA_ENDPOINT_MODEM_LAN_TX] = {
+ .ee_id = GSI_EE_MODEM,
+ .channel_id = 4,
+ .endpoint_id = 9,
+ .toward_ipa = true,
+ .endpoint = {
+ .filter_support = true,
+},
+},
+ [IPA_ENDPOINT_MODEM_LAN_RX] = {
+ .ee_id = GSI_EE_MODEM,
+ .channel_id = 6,
+ .endpoint_id = 19,
+ .toward_ipa = false,
+},
+ [IPA_ENDPOINT_MODEM_AP_TX] = {
+ .ee_id = GSI_EE_MODEM,
+ .channel_id = 0,
+ .endpoint_id = 5,
+ .toward_ipa = true,
+ .endpoint = {
+ .filter_support = true,
+},
+},
+ [IPA_ENDPOINT_MODEM_AP_RX] = {
+ .ee_id = GSI_EE_MODEM,
+ .channel_id = 5,
+ .endpoint_id = 18,
+ .toward_ipa = false,
+},
+};
+
+ / * Para o MSM8998, os grupos de recursos são alocados desta forma:
+ * SRC DST
+ * grupo 0: UL UL
+ * grupo 1: DL DL / DPL
+ * /
+ estática const struct ipa_resource_src ipa_resource_src [] = {
+ {
+ .type = IPA_RESOURCE_TYPE_SRC_PKT_CONTEXTS,
+ .limits [0] = {
+ .min = 3,
+ .max = 255,
+},
+ .limits [1] = {
+ .min = 3,
+ .max = 255,
+},
+},
+ {
+ .type = IPA_RESOURCE_TYPE_SRC_HDR_SECTORS,
+ .limits [0] = {
+ .min = 0,
+ .max = 255,
+},
+ .limits [1] = {
+ .min = 0,
+ .max = 255,
+},
+},
+ {
+ .type = IPA_RESOURCE_TYPE_SRC_HDRI1_BUFFER,
+ .limits [0] = {
+ .min = 0,
+ .max = 255,
+},
+ .limits [1] = {
+ .min = 0,
+ .max = 255,
+},
+},
+ {
+ .type = IPA_RESOURCE_TYPE_SRC_DESCRIPTOR_LISTS,
+ .limits [0] = {
+ .min = 14,
+ .max = 14,
+},
+ .limits [1] = {
+ .min = 16,
+ .max = 16,
+},
+},
+ {
+ .type = IPA_RESOURCE_TYPE_SRC_DESCRIPTOR_BUFF,
+ .limits [0] = {
+ .min = 19,
+ .max = 19,
+},
+ .limits [1] = {
+ .min = 26,
+ .max = 26,
+},
+},
+ {
+ .type = IPA_RESOURCE_TYPE_SRC_HDRI2_BUFFERS,
+ .limits [0] = {
+ .min = 0,
+ .max = 255,
+},
+ .limits [1] = {
+ .min = 0,
+ .max = 255,
+},
+},
+ {
+ .type = IPA_RESOURCE_TYPE_SRC_HPS_DMARS,
+ .limits [0] = {
+ .min = 0,
+ .max = 255,
+},
+ .limits [1] = {
+ .min = 0,
+ .max = 255,
+},
+},
+ {
+ .type = IPA_RESOURCE_TYPE_SRC_ACK_ENTRIES,
+ .limits [0] = {
+ .min = 14,
+ .max = 14,
+},
+ .limits [1] = {
+ .min = 16,
+ .max = 16,
+},
+},
+};
+
+ estática const struct ipa_resource_dst ipa_resource_dst [] = {
+ {
+ .type = IPA_RESOURCE_TYPE_DST_DATA_SECTORS,
+ .limits [0] = {
+ .min = 2,
+ .max = 2,
+},
+ .limits [1] = {
+ .min = 3,
+ .max = 3,
+},
+},
+ {
+ .type = IPA_RESOURCE_TYPE_DST_DATA_SECTOR_LISTS,
+ .limits [0] = {
+ .min = 0,
+ .max = 255,
+},
+ .limits [1] = {
+ .min = 0,
+ .max = 255,
+},
+},
+ {
+ .type = IPA_RESOURCE_TYPE_DST_DPS_DMARS,
+ .limits [0] = {
+ .min = 2,
+ .max = 63,
+},
+ .limits [1] = {
+ .min = 1,
+ .max = 63,
+},
+},
+};
+
+ / * Configuração de recursos para o SoC MSM8998. * /
+ estática const struct ipa_resource_data ipa_resource_data = {
+ .resource_src_count = ARRAY_SIZE (ipa_resource_src),
+ .resource_src = ipa_resource_src,
+ .resource_dst_count = ARRAY_SIZE (ipa_resource_dst),
+ .resource_dst = ipa_resource_dst,
+};
+
+ / * Configuração da região de memória residente em IPA para o SoC MSM8998. * /
+ const struct ipa_mem ipa_mem_local_data estático [] = {
+ [IPA_MEM_UC_SHARED] = {
+ .offset = 0x0000,
+ .size = 0x0080,
+ .canary_count = 0,
+},
+ [IPA_MEM_UC_INFO] = {
+ .offset = 0x0080,
+ .size = 0x0200,
+ .canary_count = 0,
+},
+ [IPA_MEM_V4_FILTER_HASHED] = {
+ .offset = 0x0288,
+ .size = 0x0078,
+ .canary_count = 2,
+},
+ [IPA_MEM_V4_FILTER] = {
+ .offset = 0x0308,
+ .size = 0x0078,
+ .canary_count = 2,
+},
+ [IPA_MEM_V6_FILTER_HASHED] = {
+ .offset = 0x0388,
+ .size = 0x0078,
+ .canary_count = 2,
+},
+ [IPA_MEM_V6_FILTER] = {
+ .offset = 0x0408,
+ .size = 0x0078,
+ .canary_count = 2,
+},
+ [IPA_MEM_V4_ROUTE_HASHED] = {
+ .offset = 0x0488,
+ .size = 0x0078,
+ .canary_count = 2,
+},
+ [IPA_MEM_V4_ROUTE] = {
+ .offset = 0x0508,
+ .size = 0x0078,
+ .canary_count = 2,
+},
+ [IPA_MEM_V6_ROUTE_HASHED] = {
+ .offset = 0x0588,
+ .size = 0x0078,
+ .canary_count = 2,
+},
+ [IPA_MEM_V6_ROUTE] = {
+ .offset = 0x0608,
+ .size = 0x0078,
+ .canary_count = 2,
+},
+ [IPA_MEM_MODEM_HEADER] = {
+ .offset = 0x0688,
+ .size = 0x0140,
+ .canary_count = 2,
+},
+ [IPA_MEM_AP_HEADER] = {
+ .offset = 0x07c8,
+ .size = 0x0000,
+ .canary_count = 0,
+},
+ [IPA_MEM_MODEM_PROC_CTX] = {
+ .offset = 0x07d0,
+ .size = 0x0200,
+ .canary_count = 2,
+},
+ [IPA_MEM_AP_PROC_CTX] = {
+ .offset = 0x09d0,
+ .size = 0x0200,
+ .canary_count = 0,
+},
+ [IPA_MEM_MODEM] = {
+ .offset = 0x0 resolver,
+ .size = 0x1424,
+ .canary_count = 0,
+},
+ [IPA_MEM_UC_EVENT_RING] = {/ * end_ofst * /
+ .offset = 0x2000,
+ .size = 0,
+ .canary_count = 1,
+},
+};
+
+ estrutura estática ipa_mem_data ipa_mem_data = {
+ .local_count = ARRAY_SIZE (ipa_mem_local_data),
+ .local = ipa_mem_local_data,
+ .imem_addr = 0x146bd000,
+ .imem_size = 0x00002000,
+ .smem_id = 497,
+ .smem_size = 0x00002000,
+};
+
+ estrutura estática ipa_clock_data ipa_clock_data = {
+ .core_clock_rate = 75 * 1000 * 1000, / * Hz * /
+ / * As taxas de interconexão são em unidades de 1000 bytes / segundo * /
+ .interconnect = {
+ [IPA_INTERCONNECT_MEMORY] = {
+ .peak_rate = 640000, / * 640 MBps * /
+ .average_rate = 80000, / * 80 MBps * /
+},
+ / * Taxa média não utilizada para as próximas duas interconexões * /
+ [IPA_INTERCONNECT_IMEM] = {
+ .peak_rate = 640000, / * 350 MBps * /
+ .average_rate = 0, / * não utilizado * /
+},
+ [IPA_INTERCONNECT_CONFIG] = {
+ .peak_rate = 80000, / * 40 MBps * /
+ .average_rate = 0, / * não utilizado * /
+},
+},
+};
+
+ / * Dados de configuração para o SoC MSM8998. * /
+ const struct ipa_data ipa_data_msm8998 = {
+ .version = IPA_VERSION_3_1,
+ .endpoint_count = ARRAY_SIZE (ipa_gsi_endpoint_data),
+ .endpoint_data = ipa_gsi_endpoint_data,
+ .resource_data = & ipa_resource_data,
+ .mem_data = & ipa_mem_data,
+ .clock_data = & ipa_clock_data,
+};
diff --git a / drivers / net / ipa / ipa_data.hb / drivers / net / ipa / ipa_data.h
índice 0ed5ffe2b8da..da2141f6888f 100644
--- a / drivers / net / ipa / ipa_data.h
+++ b / drivers / net / ipa / ipa_data.h
@@ -179,8 +179,11 @@ struct ipa_gsi_endpoint_data {
/ ** enum ipa_resource_type_src - tipos de recursos de origem * /
enum ipa_resource_type_src {
IPA_RESOURCE_TYPE_SRC_PKT_CONTEXTS,
+ IPA_RESOURCE_TYPE_SRC_HDR_SECTORS,
+ IPA_RESOURCE_TYPE_SRC_HDRI1_BUFFER,
IPA_RESOURCE_TYPE_SRC_DESCRIPTOR_LISTS,
IPA_RESOURCE_TYPE_SRC_DESCRIPTOR_BUFF,
+ IPA_RESOURCE_TYPE_SRC_HDRI2_BUFFERS,
IPA_RESOURCE_TYPE_SRC_HPS_DMARS,
IPA_RESOURCE_TYPE_SRC_ACK_ENTRIES,
};
@@ -188,6 +191,7 @@ enum ipa_resource_type_src {
/ ** enum ipa_resource_type_dst - tipos de recursos de destino * /
enum ipa_resource_type_dst {
IPA_RESOURCE_TYPE_DST_DATA_SECTORS,
+ IPA_RESOURCE_TYPE_DST_DATA_SECTOR_LISTS,
IPA_RESOURCE_TYPE_DST_DPS_DMARS,
};
@@ -304,6 +308,7 @@ struct ipa_data {
const struct ipa_clock_data * clock_data;
};
+ extern const struct ipa_data ipa_data_msm8998;
extern const struct ipa_data ipa_data_sdm845;
extern const struct ipa_data ipa_data_sc7180;
diff --git a / drivers / net / ipa / ipa_main.cb / drivers / net / ipa / ipa_main.c
índice be191993fbec..33a7d483c5e0 100644
--- a / drivers / net / ipa / ipa_main.c
+++ b / drivers / net / ipa / ipa_main.c
@@ -721,6 +721,10 @@ static int ipa_firmware_load (struct dispositivo * dev)
}
static const struct of_device_id ipa_match [] = {
+ {
+ .compatible = "qcom, msm8998-ipa",
+ .data = & ipa_data_msm8998,
+},
{
.compatible = "qcom, sdm845-ipa",
.data = & ipa_data_sdm845,
Referências :
[PATCH v1 0/7] Adicionar suporte para IPA v3.1, GSI v1.0, MSM8998 IPA
De: AngeloGioacchino Del Regno
[PATCH v1 5/7] net: ipa: Adicione suporte para IPA em MSM8998
De: AngeloGioacchino Del Regno
Anterior por Data: Re: [PATCH v1 4/7] net: ipa: gsi: Use máscaras certas para canais GSI v1.0 hw param
Próximo por Data: Re: [PATCH v1 6/7] dt-bindings: net: qcom-ipa: Documento qcom, compatível com sc7180-ipa
Anterior por discussão: Re: [PATCH v1 5/7] net: ipa: Adicionar suporte para IPA em MSM8998
Próximo por tópico: [PATCH v1 4/7] net: ipa: gsi: Use máscaras certas para canais GSI v1.0 hw param
Índice (s):
Fonte
Até a próxima !!
Nenhum comentário:
Postar um comentário