msm: ipa3: End point configuration changes for IPA-V5.2

Added end point, resource config, GSI configuration and
SRAM entries for IPAv-5.2

Enabling IPA, GSI driver compilation as vendor DLKM
modules for pitti target.

Change-Id: Ib0ae6d6605f11a2b08c63782f8a11d8011d46bbe
Signed-off-by: Pavan Kumar M <quic_rpavan@quicinc.com>
This commit is contained in:
Pavan Kumar M
2021-10-27 10:44:44 +05:30
parent 1c9e811cbf
commit 0736e5599e
6 changed files with 460 additions and 6 deletions

View File

@@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/* /*
* Copyright (c) 2015-2021, The Linux Foundation. All rights reserved. * Copyright (c) 2015-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2022, 2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/ */
#include <linux/of.h> #include <linux/of.h>
@@ -1240,6 +1240,7 @@ static uint32_t gsi_get_max_event_rings(enum gsi_ver ver)
max_ev = hw_param.gsi_ev_ch_num; max_ev = hw_param.gsi_ev_ch_num;
break; break;
case GSI_VER_3_0: case GSI_VER_3_0:
case GSI_VER_5_2:
case GSI_VER_5_5: case GSI_VER_5_5:
gsihal_read_reg_n_fields(GSI_EE_n_GSI_HW_PARAM_4, gsihal_read_reg_n_fields(GSI_EE_n_GSI_HW_PARAM_4,
gsi_ctx->per.ee, &hw_param4); gsi_ctx->per.ee, &hw_param4);

View File

@@ -2,7 +2,7 @@
/* /*
* Copyright (c) 2015-2021, The Linux Foundation. All rights reserved. * Copyright (c) 2015-2021, The Linux Foundation. All rights reserved.
* *
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2022, 2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/ */
#ifndef GSI_H #ifndef GSI_H
@@ -114,8 +114,9 @@ enum gsi_ver {
GSI_VER_2_9 = 8, GSI_VER_2_9 = 8,
GSI_VER_2_11 = 9, GSI_VER_2_11 = 9,
GSI_VER_3_0 = 10, GSI_VER_3_0 = 10,
GSI_VER_5_5 = 11, GSI_VER_5_2 = 11,
GSI_VER_6_0 = 12, GSI_VER_5_5 = 12,
GSI_VER_6_0 = 13,
GSI_VER_MAX, GSI_VER_MAX,
}; };

View File

@@ -1,6 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/* /*
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/ */
#include "gsihal_i.h" #include "gsihal_i.h"
@@ -2421,6 +2422,9 @@ unsigned long gsihal_get_inst_ram_size(void)
case GSI_VER_3_0: case GSI_VER_3_0:
maxn = GSI_V3_0_GSI_INST_RAM_n_MAXn; maxn = GSI_V3_0_GSI_INST_RAM_n_MAXn;
break; break;
case GSI_VER_5_2:
maxn = GSI_V5_2_GSI_INST_RAM_n_MAXn;
break;
case GSI_VER_ERR: case GSI_VER_ERR:
case GSI_VER_MAX: case GSI_VER_MAX:
default: default:

View File

@@ -1,6 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
/* /*
* Copyright (c) 2020, The Linux Foundation. All rights reserved. * Copyright (c) 2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/ */
#ifndef _GSIHAL_REG_I_H_ #ifndef _GSIHAL_REG_I_H_
@@ -25,6 +26,7 @@
#define GSI_V2_7_GSI_INST_RAM_n_MAXn 5119 #define GSI_V2_7_GSI_INST_RAM_n_MAXn 5119
#define GSI_V2_9_GSI_INST_RAM_n_MAXn 6143 #define GSI_V2_9_GSI_INST_RAM_n_MAXn 6143
#define GSI_V3_0_GSI_INST_RAM_n_MAXn 8255 #define GSI_V3_0_GSI_INST_RAM_n_MAXn 8255
#define GSI_V5_2_GSI_INST_RAM_n_MAXn 6207
/* GSI_EE_n_CNTXT_TYPE_IRQ */ /* GSI_EE_n_CNTXT_TYPE_IRQ */
#define GSI_EE_n_CNTXT_TYPE_IRQ_GENERAL_BMSK 0x40 #define GSI_EE_n_CNTXT_TYPE_IRQ_GENERAL_BMSK 0x40

View File

@@ -2,7 +2,7 @@
/* /*
* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
* *
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/ */
#include <linux/clk.h> #include <linux/clk.h>
@@ -7709,6 +7709,9 @@ static enum gsi_ver ipa3_get_gsi_ver(enum ipa_hw_type ipa_hw_type)
case IPA_HW_v5_1: case IPA_HW_v5_1:
gsi_ver = GSI_VER_3_0; gsi_ver = GSI_VER_3_0;
break; break;
case IPA_HW_v5_2:
gsi_ver = GSI_VER_5_2;
break;
case IPA_HW_v5_5: case IPA_HW_v5_5:
gsi_ver = GSI_VER_5_5; gsi_ver = GSI_VER_5_5;
break; break;

View File

@@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/* /*
* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2022, 2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/ */
#include <net/ip.h> #include <net/ip.h>
@@ -204,6 +204,13 @@
#define IPA_v5_0_DST_GROUP_MAX (7) #define IPA_v5_0_DST_GROUP_MAX (7)
#define IPA_v5_0_GROUP_MAX (7) #define IPA_v5_0_GROUP_MAX (7)
#define IPA_v5_2_GROUP_UL (0)
#define IPA_v5_2_GROUP_DL (1)
#define IPA_v5_2_GROUP_URLLC (2)
#define IPA_v5_2_GROUP_DRB_IP (3)
#define IPA_v5_2_SRC_GROUP_MAX (3)
#define IPA_v5_2_DST_GROUP_MAX (4)
#define IPA_v5_5_GROUP_UL (0) #define IPA_v5_5_GROUP_UL (0)
#define IPA_v5_5_GROUP_DL (1) #define IPA_v5_5_GROUP_DL (1)
#define IPA_v5_5_GROUP_DMA (2) #define IPA_v5_5_GROUP_DMA (2)
@@ -322,6 +329,7 @@ enum ipa_ver {
IPA_5_0_MHI, IPA_5_0_MHI,
IPA_5_1, IPA_5_1,
IPA_5_1_APQ, IPA_5_1_APQ,
IPA_5_2,
IPA_5_5, IPA_5_5,
IPA_VER_MAX, IPA_VER_MAX,
}; };
@@ -598,6 +606,20 @@ static const struct rsrc_min_max ipa3_rsrc_src_grp_config
{22, 22}, {16, 16}, {0, 0}, {0, 0}, {16, 16}, {0, 0}, {0, 0}, }, {22, 22}, {16, 16}, {0, 0}, {0, 0}, {16, 16}, {0, 0}, {0, 0}, },
}, },
[IPA_5_2] = {
/* what does above comment mean. */
[IPA_v5_0_RSRC_GRP_TYPE_SRC_PKT_CONTEXTS] = {
{1, 7}, {1, 7}, {0, 5}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, },
[IPA_v5_0_RSRC_GRP_TYPE_SRC_DESCRIPTOR_LISTS] = {
{8, 8}, {8, 8}, {8, 8}, {0, 0}, {0, 0}, {0, 0}, {0, 0} },
[IPA_v5_0_RSRC_GRP_TYPE_SRC_DESCRIPTOR_BUFF] = {
{10, 10}, {12, 12}, {12, 12}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, },
[IPA_v5_0_RSRC_GRP_TYPE_SRC_HPS_DMARS] = {
{0, 63}, {0, 63}, {0, 63}, {0, 0}, {0, 0}, {0, 0}, {0, 0} },
[IPA_v5_0_RSRC_GRP_TYPE_SRC_ACK_ENTRIES] = {
{15, 15}, {15, 15}, {12, 12}, {0, 0}, {0, 0}, {0, 0}, {0, 0} },
},
[IPA_5_5] = { [IPA_5_5] = {
/* UL DL unused unused URLLC UC_RX_Q N/A */ /* UL DL unused unused URLLC UC_RX_Q N/A */
[IPA_v5_0_RSRC_GRP_TYPE_SRC_PKT_CONTEXTS] = { [IPA_v5_0_RSRC_GRP_TYPE_SRC_PKT_CONTEXTS] = {
@@ -764,6 +786,17 @@ static const struct rsrc_min_max ipa3_rsrc_dst_grp_config
{0, 3}, {0, 3}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, }, {0, 3}, {0, 3}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, },
}, },
[IPA_5_2] = {
/* UL DL unused unused unused UC_RX_Q DRBIP N/A */
[IPA_v5_0_RSRC_GRP_TYPE_DST_DATA_SECTORS] = {
{3, 3}, {3, 3}, {0, 0}, {23, 23}, {0, 0}, {0, 0}, {0, 0}, },
[IPA_v5_0_RSRC_GRP_TYPE_DST_DPS_DMARS] = {
{1, 2}, {1, 2}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, },
[IPA_v5_0_RSRC_GRP_TYPE_DST_ULSO_SEGMENTS] = {
{1, 63}, {1, 63}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, },
},
[IPA_5_5] = { [IPA_5_5] = {
/* UL DL unused unused unused UC_RX_Q DRBIP N/A */ /* UL DL unused unused unused UC_RX_Q DRBIP N/A */
[IPA_v5_0_RSRC_GRP_TYPE_DST_DATA_SECTORS] = { [IPA_v5_0_RSRC_GRP_TYPE_DST_DATA_SECTORS] = {
@@ -879,6 +912,11 @@ static const struct rsrc_min_max ipa3_rsrc_rx_grp_config
[IPA_RSRC_GRP_TYPE_RX_HPS_CMDQ] = { [IPA_RSRC_GRP_TYPE_RX_HPS_CMDQ] = {
{3, 3}, {3, 3}, {0, 0}, {0, 0}, {3, 3}, {0, 0} }, {3, 3}, {3, 3}, {0, 0}, {0, 0}, {3, 3}, {0, 0} },
}, },
[IPA_5_2] = {
/* UL DL unused unused URLLC UC_RX_Q */
[IPA_RSRC_GRP_TYPE_RX_HPS_CMDQ] = {
{3, 3}, {3, 3}, {3, 3}, {0, 0}, {0, 0}, {0, 0} },
},
[IPA_5_5] = { [IPA_5_5] = {
/* UL DL unused unused URLLC UC_RX_Q */ /* UL DL unused unused URLLC UC_RX_Q */
@@ -940,6 +978,16 @@ static const struct ipa_rsrc_cfg ipa_rsrc_config[IPA_VER_MAX] = {
.src_grp_2nd_prio_index = 1, .src_grp_2nd_prio_index = 1,
.src_grp_2nd_prio_valid = 1, .src_grp_2nd_prio_valid = 1,
}, },
[IPA_5_2] = {
.src_grp_index = 2,
.src_grp_valid = 1,
.dst_pipe_index = 0,
.dst_pipe_valid = 0,
.dst_grp_index = 0,
.dst_grp_valid = 0,
.src_grp_2nd_prio_index = 0,
.src_grp_2nd_prio_valid = 0,
},
}; };
enum ipa_qmb_instance_type { enum ipa_qmb_instance_type {
@@ -989,6 +1037,7 @@ static const struct ipa_qmb_outstanding ipa3_qmb_outstanding
[IPA_4_7][IPA_QMB_INSTANCE_DDR] = {13, 12, 120}, [IPA_4_7][IPA_QMB_INSTANCE_DDR] = {13, 12, 120},
[IPA_4_9][IPA_QMB_INSTANCE_DDR] = {16, 8, 120}, [IPA_4_9][IPA_QMB_INSTANCE_DDR] = {16, 8, 120},
[IPA_4_11][IPA_QMB_INSTANCE_DDR] = {13, 12, 120}, [IPA_4_11][IPA_QMB_INSTANCE_DDR] = {13, 12, 120},
[IPA_5_2][IPA_QMB_INSTANCE_DDR] = {13, 13, 0},
[IPA_5_5][IPA_QMB_INSTANCE_DDR] = {16, 12, 0}, [IPA_5_5][IPA_QMB_INSTANCE_DDR] = {16, 12, 0},
[IPA_5_5][IPA_QMB_INSTANCE_PCIE] = {16, 8, 0}, [IPA_5_5][IPA_QMB_INSTANCE_PCIE] = {16, 8, 0},
}; };
@@ -5117,6 +5166,248 @@ static const struct ipa_ep_configuration ipa3_ep_mapping
IPA_DPS_HPS_SEQ_TYPE_INVALID, IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR, QMB_MASTER_SELECT_DDR,
{ 36, 36, 8, 8, IPA_EE_AP }, IPA_TX_INSTANCE_NA }, { 36, 36, 8, 8, IPA_EE_AP }, IPA_TX_INSTANCE_NA },
/* IPA_5_2 */
[IPA_5_2][IPA_CLIENT_USB_PROD] = {
true, IPA_v5_2_GROUP_UL,
true,
IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP,
QMB_MASTER_SELECT_DDR,
{ 0, 0, 8, 16, IPA_EE_AP, GSI_ESCAPE_BUF_ONLY, 0}, IPA_TX_INSTANCE_NA },
[IPA_5_2][IPA_CLIENT_APPS_WAN_LOW_LAT_PROD] = {
true, IPA_v5_2_GROUP_URLLC,
false,
IPA_DPS_HPS_SEQ_TYPE_DMA_ONLY,
QMB_MASTER_SELECT_DDR,
{ 3, 2, 12, 20, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3}, IPA_TX_INSTANCE_NA },
[IPA_5_2][IPA_CLIENT_Q6_DL_NLO_LL_DATA_PROD] = {
true, IPA_v5_2_GROUP_URLLC,
false,
IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP,
QMB_MASTER_SELECT_DDR,
{ 4, 8, 28, 32, IPA_EE_Q6, GSI_FREE_PRE_FETCH, 3}, IPA_TX_INSTANCE_NA },
[IPA_5_2][IPA_CLIENT_WLAN2_PROD] = {
true, IPA_v5_2_GROUP_UL,
true,
IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP,
QMB_MASTER_SELECT_DDR,
{ 5, 3, 8, 16, IPA_EE_AP, GSI_SMART_PRE_FETCH, 2}, IPA_TX_INSTANCE_NA },
[IPA_5_2][IPA_CLIENT_APPS_LAN_PROD] = {
true, IPA_v5_2_GROUP_UL,
false,
IPA_DPS_HPS_SEQ_TYPE_PKT_PROCESS_NO_DEC_NO_UCP,
QMB_MASTER_SELECT_DDR,
{ 6, 4, 26, 32, IPA_EE_AP, GSI_SMART_PRE_FETCH, 4}, IPA_TX_INSTANCE_NA },
[IPA_5_2][IPA_CLIENT_APPS_WAN_PROD] = {
true, IPA_v5_2_GROUP_UL,
true,
IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP,
QMB_MASTER_SELECT_DDR,
{ 2, 5, 25, 32, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3}, IPA_TX_INSTANCE_NA },
[IPA_5_2][IPA_CLIENT_Q6_WAN_PROD] = {
true, IPA_v5_2_GROUP_DL,
true,
IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_DEC_UCP,
QMB_MASTER_SELECT_DDR,
{ 7, 0, 16, 28, IPA_EE_Q6, GSI_SMART_PRE_FETCH, 2}, IPA_TX_INSTANCE_NA },
[IPA_5_2][IPA_CLIENT_Q6_CMD_PROD] = {
true, IPA_v5_2_GROUP_UL,
false,
IPA_DPS_HPS_SEQ_TYPE_PKT_PROCESS_NO_DEC_NO_UCP,
QMB_MASTER_SELECT_DDR,
{ 8, 1, 20, 24, IPA_EE_Q6, GSI_ESCAPE_BUF_ONLY, 0}, IPA_TX_INSTANCE_NA },
[IPA_5_2][IPA_CLIENT_APPS_CMD_PROD] = {
true, IPA_v5_2_GROUP_UL,
false,
IPA_DPS_HPS_SEQ_TYPE_DMA_ONLY,
QMB_MASTER_SELECT_DDR,
{ 9, 6, 20, 24, IPA_EE_AP, GSI_ESCAPE_BUF_ONLY, 0}, IPA_TX_INSTANCE_NA },
[IPA_5_2][IPA_CLIENT_Q6_DL_NLO_DATA_PROD] = {
true, IPA_v5_2_GROUP_DL,
true,
IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_DEC_UCP,
QMB_MASTER_SELECT_DDR,
{ 10, 2, 28, 32, IPA_EE_Q6, GSI_FREE_PRE_FETCH, 3}, IPA_TX_INSTANCE_NA },
[IPA_5_2][IPA_CLIENT_APPS_WAN_COAL_CONS] = {
true, IPA_v5_2_GROUP_DL,
false,
IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR,
{ 17, 8, 8, 11, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3}, IPA_TX_INSTANCE_UL },
[IPA_5_2][IPA_CLIENT_APPS_WAN_CONS] = {
true, IPA_v5_2_GROUP_DL,
false,
IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR,
{ 18, 9, 9, 9, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3}, IPA_TX_INSTANCE_UL },
[IPA_5_2][IPA_CLIENT_USB_DPL_CONS] = {
true, IPA_v5_2_GROUP_DL,
false,
IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR,
{ 19, 10, 5, 5, IPA_EE_AP, GSI_ESCAPE_BUF_ONLY, 0}, IPA_TX_INSTANCE_UL },
[IPA_5_2][IPA_CLIENT_ODL_DPL_CONS] = {
true, IPA_v5_2_GROUP_DL,
false,
IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR,
{ 20, 11, 5, 5, IPA_EE_AP, GSI_ESCAPE_BUF_ONLY, 0}, IPA_TX_INSTANCE_UL },
[IPA_5_2][IPA_CLIENT_WLAN2_CONS] = {
true, IPA_v5_2_GROUP_DL,
false,
IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR,
{ 21, 12, 8, 14, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3}, IPA_TX_INSTANCE_UL },
[IPA_5_2][IPA_CLIENT_WLAN2_CONS1] = {
true, IPA_v5_2_GROUP_DL,
false,
IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR,
{ 22, 13, 8, 14, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3}, IPA_TX_INSTANCE_UL },
[IPA_5_2][IPA_CLIENT_USB_CONS] = {
true, IPA_v5_2_GROUP_DL,
false,
IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR,
{ 23, 14, 9, 9, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3}, IPA_TX_INSTANCE_UL },
[IPA_5_2][IPA_CLIENT_APPS_WAN_LOW_LAT_CONS] = {
true, IPA_v5_2_GROUP_DL,
false,
IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR,
{ 24, 15, 9, 9, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3}, IPA_TX_INSTANCE_UL },
[IPA_5_2][IPA_CLIENT_APPS_LAN_CONS] = {
true, IPA_v5_2_GROUP_UL,
false,
IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR,
{ 11, 7, 9, 9, IPA_EE_AP, GSI_ESCAPE_BUF_ONLY, 0}, IPA_TX_INSTANCE_UL },
[IPA_5_2][IPA_CLIENT_Q6_LAN_CONS] = {
true, IPA_v5_2_GROUP_DL,
false,
IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR,
{ 12, 3, 9, 9, IPA_EE_Q6, GSI_ESCAPE_BUF_ONLY, 0}, IPA_TX_INSTANCE_UL },
[IPA_5_2][IPA_CLIENT_Q6_QBAP_STATUS_CONS] = {
true, IPA_v5_2_GROUP_UL,
false,
IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR,
{ 13, 4, 9, 9, IPA_EE_Q6, GSI_ESCAPE_BUF_ONLY, 0}, IPA_TX_INSTANCE_UL },
[IPA_5_2][IPA_CLIENT_Q6_UL_NLO_DATA_CONS] = {
true, IPA_v5_2_GROUP_UL,
false,
IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR,
{ 14, 5, 5, 5, IPA_EE_Q6, GSI_SMART_PRE_FETCH, 2}, IPA_TX_INSTANCE_UL },
[IPA_5_2][IPA_CLIENT_Q6_UL_NLO_ACK_CONS] = {
true, IPA_v5_2_GROUP_UL,
false,
IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR,
{ 15, 6, 5, 5, IPA_EE_Q6, GSI_SMART_PRE_FETCH, 2}, IPA_TX_INSTANCE_UL },
[IPA_5_2][IPA_CLIENT_Q6_WAN_CONS] = {
true, IPA_v5_2_GROUP_UL,
false,
IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR,
{ 16, 7, 9, 9, IPA_EE_Q6, GSI_ESCAPE_BUF_ONLY, 0}, IPA_TX_INSTANCE_UL },
[IPA_5_2][IPA_CLIENT_TEST_PROD] = {
true, IPA_v5_2_GROUP_URLLC,
true,
IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP,
QMB_MASTER_SELECT_DDR,
{ 3, 2, 12, 20, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3}, IPA_TX_INSTANCE_NA },
[IPA_5_2][IPA_CLIENT_TEST1_PROD] = {
true, IPA_v5_2_GROUP_UL,
true,
IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP,
QMB_MASTER_SELECT_DDR,
{ 1, 1, 8, 16, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3}, IPA_TX_INSTANCE_NA },
[IPA_5_2][IPA_CLIENT_TEST2_PROD] = {
true, IPA_v5_2_GROUP_UL,
true,
IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP,
QMB_MASTER_SELECT_DDR,
{ 0, 0, 8, 16, IPA_EE_AP, GSI_ESCAPE_BUF_ONLY, 0}, IPA_TX_INSTANCE_NA },
[IPA_5_2][IPA_CLIENT_TEST3_PROD] = {
true, IPA_v5_2_GROUP_UL,
true,
IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP,
QMB_MASTER_SELECT_DDR,
{ 5, 3, 8, 16, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3}, IPA_TX_INSTANCE_NA },
[IPA_5_2][IPA_CLIENT_TEST4_PROD] = {
true, IPA_v5_2_GROUP_UL,
true,
IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP,
QMB_MASTER_SELECT_DDR,
{ 2, 5, 25, 32, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3}, IPA_TX_INSTANCE_NA },
[IPA_5_2][IPA_CLIENT_TEST_CONS] = {
true, IPA_v5_2_GROUP_UL,
false,
IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR,
{ 19, 10, 5, 5, IPA_EE_AP, GSI_ESCAPE_BUF_ONLY, 0}, IPA_TX_INSTANCE_UL },
[IPA_5_2][IPA_CLIENT_TEST1_CONS] = {
true, IPA_v5_2_GROUP_UL,
false,
IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR,
{ 21, 12, 8, 14, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3}, IPA_TX_INSTANCE_UL },
[IPA_5_2][IPA_CLIENT_TEST2_CONS] = {
true, IPA_v5_2_GROUP_UL,
false,
IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR,
{ 22, 13, 8, 14, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3}, IPA_TX_INSTANCE_DL },
[IPA_5_2][IPA_CLIENT_TEST3_CONS] = {
true, IPA_v5_2_GROUP_UL,
false,
IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR,
{ 23, 14, 9, 9, IPA_EE_AP, GSI_ESCAPE_BUF_ONLY, 0}, IPA_TX_INSTANCE_UL },
[IPA_5_2][IPA_CLIENT_TEST4_CONS] = {
true, IPA_v5_2_GROUP_UL,
false,
IPA_DPS_HPS_SEQ_TYPE_INVALID,
QMB_MASTER_SELECT_DDR, //UPDATE AS DDR
{ 20, 11, 5, 5, IPA_EE_AP, GSI_ESCAPE_BUF_ONLY, 0}, IPA_TX_INSTANCE_UL },
/* IPA_5_5 */ /* IPA_5_5 */
[IPA_5_5][IPA_CLIENT_USB_PROD] = { [IPA_5_5][IPA_CLIENT_USB_PROD] = {
true, IPA_v5_5_GROUP_UL, true, IPA_v5_5_GROUP_UL,
@@ -6309,6 +6600,101 @@ static struct ipa3_mem_partition ipa_5_1_mem_part = {
.end_ofst = 0x4fe8, .end_ofst = 0x4fe8,
}; };
static struct ipa3_mem_partition ipa_5_2_mem_part = {
.uc_ofst = 0x0,
.uc_size = 0x80,
.uc_info_ofst = 0x80,
.uc_info_size = 0x200,
.ofst_start = 0x280,
.v4_flt_hash_ofst = 0x288,
.v4_flt_hash_size = 0x78,
.v4_flt_hash_size_ddr = 0x4000,
.v4_flt_nhash_ofst = 0x308,
.v4_flt_nhash_size = 0x78,
.v4_flt_nhash_size_ddr = 0x4000,
.v6_flt_hash_ofst = 0x388,
.v6_flt_hash_size = 0x78,
.v6_flt_hash_size_ddr = 0x4000,
.v6_flt_nhash_ofst = 0x408,
.v6_flt_nhash_size = 0x78,
.v6_flt_nhash_size_ddr = 0x4000,
.v4_rt_num_index = 0x13,
.v4_modem_rt_index_lo = 0x0,
.v4_modem_rt_index_hi = 0xa,
.v4_apps_rt_index_lo = 0xb,
.v4_apps_rt_index_hi = 0x12,
.v4_rt_hash_ofst = 0x488,
.v4_rt_hash_size = 0x98,
.v4_rt_hash_size_ddr = 0x4000,
.v4_rt_nhash_ofst = 0x528,
.v4_rt_nhash_size = 0x98,
.v4_rt_nhash_size_ddr = 0x4000,
.v6_rt_num_index = 0x13,
.v6_modem_rt_index_lo = 0x0,
.v6_modem_rt_index_hi = 0xa,
.v6_apps_rt_index_lo = 0xb,
.v6_apps_rt_index_hi = 0x12,
.v6_rt_hash_ofst = 0x5c8,
.v6_rt_hash_size = 0x98,
.v6_rt_hash_size_ddr = 0x4000,
.v6_rt_nhash_ofst = 0x668,
.v6_rt_nhash_size = 0x098,
.v6_rt_nhash_size_ddr = 0x4000,
.modem_hdr_ofst = 0x708,
.modem_hdr_size = 0x240,
.apps_hdr_ofst = 0x948,
.apps_hdr_size = 0x1e0,
.apps_hdr_size_ddr = 0x800,
.modem_hdr_proc_ctx_ofst = 0xb40,
.modem_hdr_proc_ctx_size = 0xb20,
.apps_hdr_proc_ctx_ofst = 0x1660,
.apps_hdr_proc_ctx_size = 0x200,
.apps_hdr_proc_ctx_size_ddr = 0x0,
.stats_quota_q6_ofst = 0x1868,
.stats_quota_q6_size = 0x48,
.stats_quota_ap_ofst = 0x18B0,
.stats_quota_ap_size = 0x60,
.stats_tethering_ofst = 0x1910,
.stats_tethering_size = 0x0,
.apps_v4_flt_nhash_ofst = 0x1918,
.apps_v4_flt_nhash_size = 0x188,
.apps_v6_flt_nhash_ofst = 0x1aa0,
.apps_v6_flt_nhash_size = 0x228,
.stats_flt_v4_ofst = 0,
.stats_flt_v4_size = 0,
.stats_flt_v6_ofst = 0,
.stats_flt_v6_size = 0,
.stats_rt_v4_ofst = 0,
.stats_rt_v4_size = 0,
.stats_rt_v6_ofst = 0,
.stats_rt_v6_size = 0,
.stats_fnr_ofst = 0x1cd0,
.stats_fnr_size = 0xba0,
.stats_drop_ofst = 0x2870,
.stats_drop_size = 0x20,
.modem_comp_decomp_ofst = 0x0,
.modem_comp_decomp_size = 0x0,
.modem_ofst = 0x2898,
.modem_size = 0xd48,
.nat_tbl_ofst = 0x35e0,
.nat_tbl_size = 0x900,
.apps_v4_flt_hash_ofst = 0x2718,
.apps_v4_flt_hash_size = 0x0,
.apps_v6_flt_hash_ofst = 0x2718,
.apps_v6_flt_hash_size = 0x0,
.apps_v4_rt_hash_ofst = 0x2718,
.apps_v4_rt_hash_size = 0x0,
.apps_v4_rt_nhash_ofst = 0x2718,
.apps_v4_rt_nhash_size = 0x0,
.apps_v6_rt_hash_ofst = 0x2718,
.apps_v6_rt_hash_size = 0x0,
.apps_v6_rt_nhash_ofst = 0x2718,
.apps_v6_rt_nhash_size = 0x0,
.pdn_config_ofst = 0x3ee8,
.pdn_config_size = 0x100,
.end_ofst = 0x3fe8,
};
static struct ipa3_mem_partition ipa_5_5_mem_part = { static struct ipa3_mem_partition ipa_5_5_mem_part = {
.uc_descriptor_ram_ofst = 0x0, .uc_descriptor_ram_ofst = 0x0,
.uc_descriptor_ram_size = 0x1000, .uc_descriptor_ram_size = 0x1000,
@@ -7141,6 +7527,9 @@ u8 ipa3_get_hw_type_index(void)
if (ipa3_ctx->platform_type == IPA_PLAT_TYPE_APQ) if (ipa3_ctx->platform_type == IPA_PLAT_TYPE_APQ)
hw_type_index = IPA_5_1_APQ; hw_type_index = IPA_5_1_APQ;
break; break;
case IPA_HW_v5_2:
hw_type_index = IPA_5_2;
break;
case IPA_HW_v5_5: case IPA_HW_v5_5:
hw_type_index = IPA_5_5; hw_type_index = IPA_5_5;
break; break;
@@ -9560,6 +9949,9 @@ int ipa3_init_mem_partition(enum ipa_hw_type type)
case IPA_HW_v5_1: case IPA_HW_v5_1:
ipa3_ctx->ctrl->mem_partition = &ipa_5_1_mem_part; ipa3_ctx->ctrl->mem_partition = &ipa_5_1_mem_part;
break; break;
case IPA_HW_v5_2:
ipa3_ctx->ctrl->mem_partition = &ipa_5_2_mem_part;
break;
case IPA_HW_v5_5: case IPA_HW_v5_5:
ipa3_ctx->ctrl->mem_partition = &ipa_5_5_mem_part; ipa3_ctx->ctrl->mem_partition = &ipa_5_5_mem_part;
break; break;
@@ -11373,6 +11765,50 @@ static void ipa3_write_rsrc_grp_type_reg(int group_index,
} }
break; break;
case IPA_5_2:
if (src) {
switch (group_index) {
case IPA_v5_2_GROUP_UL:
case IPA_v5_2_GROUP_DL:
ipahal_write_reg_n_fields(
IPA_SRC_RSRC_GRP_01_RSRC_TYPE_n,
n, val);
break;
case IPA_v5_2_GROUP_URLLC:
case IPA_v5_2_GROUP_DRB_IP:
ipahal_write_reg_n_fields(
IPA_SRC_RSRC_GRP_23_RSRC_TYPE_n,
n, val);
break;
default:
IPAERR(
" Invalid source resource group,index #%d\n",
group_index);
break;
}
} else {
switch (group_index) {
case IPA_v5_2_GROUP_UL:
case IPA_v5_2_GROUP_DL:
ipahal_write_reg_n_fields(
IPA_DST_RSRC_GRP_01_RSRC_TYPE_n,
n, val);
break;
case IPA_v5_2_GROUP_URLLC:
case IPA_v5_2_GROUP_DRB_IP:
ipahal_write_reg_n_fields(
IPA_DST_RSRC_GRP_23_RSRC_TYPE_n,
n, val);
break;
default:
IPAERR(
" Invalid destination resource group,index #%d\n",
group_index);
break;
}
}
break;
case IPA_5_5: case IPA_5_5:
if (src) { if (src) {
switch (group_index) { switch (group_index) {
@@ -11620,6 +12056,12 @@ void ipa3_set_resorce_groups_min_max_limits(void)
src_grp_idx_max = IPA_v5_0_SRC_GROUP_MAX; src_grp_idx_max = IPA_v5_0_SRC_GROUP_MAX;
dst_grp_idx_max = IPA_v5_0_DST_GROUP_MAX; dst_grp_idx_max = IPA_v5_0_DST_GROUP_MAX;
break; break;
case IPA_5_2:
src_rsrc_type_max = IPA_v5_0_RSRC_GRP_TYPE_SRC_MAX;
dst_rsrc_type_max = IPA_v5_0_RSRC_GRP_TYPE_DST_MAX;
src_grp_idx_max = IPA_v5_2_SRC_GROUP_MAX;
dst_grp_idx_max = IPA_v5_2_DST_GROUP_MAX;
break;
case IPA_5_5: case IPA_5_5:
src_rsrc_type_max = IPA_v5_0_RSRC_GRP_TYPE_SRC_MAX; src_rsrc_type_max = IPA_v5_0_RSRC_GRP_TYPE_SRC_MAX;
dst_rsrc_type_max = IPA_v5_0_RSRC_GRP_TYPE_DST_MAX; dst_rsrc_type_max = IPA_v5_0_RSRC_GRP_TYPE_DST_MAX;
@@ -12897,6 +13339,7 @@ bool ipa3_is_msm_device(void)
case IPA_HW_v4_9: case IPA_HW_v4_9:
case IPA_HW_v4_11: case IPA_HW_v4_11:
case IPA_HW_v5_1: case IPA_HW_v5_1:
case IPA_HW_v5_2:
case IPA_HW_v5_5: case IPA_HW_v5_5:
return true; return true;
default: default: