|
@@ -1,7 +1,7 @@
|
|
|
// SPDX-License-Identifier: GPL-2.0-only
|
|
|
/*
|
|
|
* 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>
|
|
@@ -204,6 +204,13 @@
|
|
|
#define IPA_v5_0_DST_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_DL (1)
|
|
|
#define IPA_v5_5_GROUP_DMA (2)
|
|
@@ -322,6 +329,7 @@ enum ipa_ver {
|
|
|
IPA_5_0_MHI,
|
|
|
IPA_5_1,
|
|
|
IPA_5_1_APQ,
|
|
|
+ IPA_5_2,
|
|
|
IPA_5_5,
|
|
|
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}, },
|
|
|
},
|
|
|
|
|
|
+ [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] = {
|
|
|
/* UL DL unused unused URLLC UC_RX_Q N/A */
|
|
|
[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}, },
|
|
|
},
|
|
|
|
|
|
+ [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] = {
|
|
|
/* UL DL unused unused unused UC_RX_Q DRBIP N/A */
|
|
|
[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] = {
|
|
|
{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] = {
|
|
|
/* 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_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 {
|
|
@@ -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_9][IPA_QMB_INSTANCE_DDR] = {16, 8, 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_PCIE] = {16, 8, 0},
|
|
|
};
|
|
@@ -5117,6 +5166,248 @@ static const struct ipa_ep_configuration ipa3_ep_mapping
|
|
|
IPA_DPS_HPS_SEQ_TYPE_INVALID,
|
|
|
QMB_MASTER_SELECT_DDR,
|
|
|
{ 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_CLIENT_USB_PROD] = {
|
|
|
true, IPA_v5_5_GROUP_UL,
|
|
@@ -6309,6 +6600,101 @@ static struct ipa3_mem_partition ipa_5_1_mem_part = {
|
|
|
.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 = {
|
|
|
.uc_descriptor_ram_ofst = 0x0,
|
|
|
.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)
|
|
|
hw_type_index = IPA_5_1_APQ;
|
|
|
break;
|
|
|
+ case IPA_HW_v5_2:
|
|
|
+ hw_type_index = IPA_5_2;
|
|
|
+ break;
|
|
|
case IPA_HW_v5_5:
|
|
|
hw_type_index = IPA_5_5;
|
|
|
break;
|
|
@@ -9560,6 +9949,9 @@ int ipa3_init_mem_partition(enum ipa_hw_type type)
|
|
|
case IPA_HW_v5_1:
|
|
|
ipa3_ctx->ctrl->mem_partition = &ipa_5_1_mem_part;
|
|
|
break;
|
|
|
+ case IPA_HW_v5_2:
|
|
|
+ ipa3_ctx->ctrl->mem_partition = &ipa_5_2_mem_part;
|
|
|
+ break;
|
|
|
case IPA_HW_v5_5:
|
|
|
ipa3_ctx->ctrl->mem_partition = &ipa_5_5_mem_part;
|
|
|
break;
|
|
@@ -11373,6 +11765,50 @@ static void ipa3_write_rsrc_grp_type_reg(int group_index,
|
|
|
}
|
|
|
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:
|
|
|
if (src) {
|
|
|
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;
|
|
|
dst_grp_idx_max = IPA_v5_0_DST_GROUP_MAX;
|
|
|
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:
|
|
|
src_rsrc_type_max = IPA_v5_0_RSRC_GRP_TYPE_SRC_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_11:
|
|
|
case IPA_HW_v5_1:
|
|
|
+ case IPA_HW_v5_2:
|
|
|
case IPA_HW_v5_5:
|
|
|
return true;
|
|
|
default:
|