|
@@ -291,6 +291,7 @@ enum ipa_ver {
|
|
|
IPA_5_0,
|
|
|
IPA_5_0_MHI,
|
|
|
IPA_5_1,
|
|
|
+ IPA_5_1_APQ,
|
|
|
IPA_VER_MAX,
|
|
|
};
|
|
|
|
|
@@ -551,6 +552,21 @@ static const struct rsrc_min_max ipa3_rsrc_src_grp_config
|
|
|
[IPA_v5_0_RSRC_GRP_TYPE_SRC_ACK_ENTRIES] = {
|
|
|
{22, 22}, {16, 16}, {0, 0}, {0, 0}, {16, 16}, {0, 0}, {0, 0}, },
|
|
|
},
|
|
|
+
|
|
|
+ [IPA_5_1_APQ] = {
|
|
|
+ /* UL DL unused unused URLLC UC_RX_Q N/A */
|
|
|
+ [IPA_v5_0_RSRC_GRP_TYPE_SRC_PKT_CONTEXTS] = {
|
|
|
+ {3, 9}, {4, 10}, {0, 0}, {0, 0}, {1, 63}, {0, 63}, {0, 0}, },
|
|
|
+ [IPA_v5_0_RSRC_GRP_TYPE_SRC_DESCRIPTOR_LISTS] = {
|
|
|
+ {9, 9}, {12, 12}, {0, 0}, {0, 0}, {10, 10}, {0, 0}, {0, 0}, },
|
|
|
+ [IPA_v5_0_RSRC_GRP_TYPE_SRC_DESCRIPTOR_BUFF] = {
|
|
|
+ {9, 9}, {24, 24}, {0, 0}, {0, 0}, {20, 20}, {0, 0}, {0, 0}, },
|
|
|
+ [IPA_v5_0_RSRC_GRP_TYPE_SRC_HPS_DMARS] = {
|
|
|
+ {0, 63}, {0, 63}, {0, 63}, {0, 63}, {1, 63}, {0, 63}, {0, 0}, },
|
|
|
+ [IPA_v5_0_RSRC_GRP_TYPE_SRC_ACK_ENTRIES] = {
|
|
|
+ {22, 22}, {16, 16}, {0, 0}, {0, 0}, {16, 16}, {0, 0}, {0, 0}, },
|
|
|
+ },
|
|
|
+
|
|
|
};
|
|
|
|
|
|
static const struct rsrc_min_max ipa3_rsrc_dst_grp_config
|
|
@@ -691,6 +707,15 @@ static const struct rsrc_min_max ipa3_rsrc_dst_grp_config
|
|
|
[IPA_v5_0_RSRC_GRP_TYPE_DST_DPS_DMARS] = {
|
|
|
{0, 3}, {0, 3}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, },
|
|
|
},
|
|
|
+
|
|
|
+ [IPA_5_1_APQ] = {
|
|
|
+ /* UL DL unused unused unused UC_RX_Q DRBIP N/A */
|
|
|
+ [IPA_v5_0_RSRC_GRP_TYPE_DST_DATA_SECTORS] = {
|
|
|
+ {6, 6}, {5, 5}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {39, 39}, },
|
|
|
+ [IPA_v5_0_RSRC_GRP_TYPE_DST_DPS_DMARS] = {
|
|
|
+ {0, 3}, {0, 3}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, },
|
|
|
+ },
|
|
|
+
|
|
|
};
|
|
|
|
|
|
static const struct rsrc_min_max ipa3_rsrc_rx_grp_config
|
|
@@ -791,6 +816,13 @@ 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_1_APQ] = {
|
|
|
+ /* UL DL unused unused URLLC UC_RX_Q */
|
|
|
+ [IPA_RSRC_GRP_TYPE_RX_HPS_CMDQ] = {
|
|
|
+ {3, 3}, {3, 3}, {0, 0}, {0, 0}, {3, 3}, {0, 0} },
|
|
|
+ },
|
|
|
+
|
|
|
};
|
|
|
|
|
|
static const u32 ipa3_rsrc_rx_grp_hps_weight_config
|
|
@@ -4790,6 +4822,86 @@ static const struct ipa_ep_configuration ipa3_ep_mapping
|
|
|
QMB_MASTER_SELECT_PCIE,
|
|
|
{ 34, 25, 9, 9, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3 },
|
|
|
IPA_TX_INSTANCE_DL },
|
|
|
+
|
|
|
+ /* IPA_5_1_APQ */
|
|
|
+ [IPA_5_1_APQ][IPA_CLIENT_MHI_PRIME_DPL_PROD] = {
|
|
|
+ true, IPA_v5_0_GROUP_DL,
|
|
|
+ true,
|
|
|
+ IPA_DPS_HPS_SEQ_TYPE_DMA_ONLY,
|
|
|
+ QMB_MASTER_SELECT_DDR,
|
|
|
+ {8, 18, 8, 16, IPA_EE_AP, GSI_ESCAPE_BUF_ONLY, 0 },
|
|
|
+ IPA_TX_INSTANCE_NA },
|
|
|
+ [IPA_5_1_APQ][IPA_CLIENT_MHI_PRIME_RMNET_PROD] = {
|
|
|
+ true, IPA_v5_0_GROUP_DL,
|
|
|
+ true,
|
|
|
+ IPA_DPS_HPS_SEQ_TYPE_DMA_ONLY,
|
|
|
+ QMB_MASTER_SELECT_DDR,
|
|
|
+ { 3, 15, 8, 16, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3 },
|
|
|
+ IPA_TX_INSTANCE_NA },
|
|
|
+ [IPA_5_1_APQ][IPA_CLIENT_USB_PROD] = {
|
|
|
+ true, IPA_v5_0_GROUP_UL,
|
|
|
+ true,
|
|
|
+ IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP,
|
|
|
+ QMB_MASTER_SELECT_DDR,
|
|
|
+ { 1, 0, 8, 16, IPA_EE_AP, GSI_ESCAPE_BUF_ONLY, 0},
|
|
|
+ IPA_TX_INSTANCE_NA },
|
|
|
+ [IPA_5_1_APQ][IPA_CLIENT_APPS_WAN_PROD] = {
|
|
|
+ true, IPA_v5_0_GROUP_UL,
|
|
|
+ true,
|
|
|
+ IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP,
|
|
|
+ QMB_MASTER_SELECT_DDR,
|
|
|
+ { 2, 11, 25, 32, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3},
|
|
|
+ IPA_TX_INSTANCE_NA },
|
|
|
+ [IPA_5_1_APQ][IPA_CLIENT_APPS_LAN_PROD] = {
|
|
|
+ true, IPA_v5_0_GROUP_UL,
|
|
|
+ false,
|
|
|
+ IPA_DPS_HPS_SEQ_TYPE_PKT_PROCESS_NO_DEC_UCP,
|
|
|
+ QMB_MASTER_SELECT_DDR,
|
|
|
+ { 9, 19, 26, 32, IPA_EE_AP, GSI_SMART_PRE_FETCH, 4},
|
|
|
+ IPA_TX_INSTANCE_NA },
|
|
|
+ [IPA_5_1_APQ][IPA_CLIENT_APPS_CMD_PROD] = {
|
|
|
+ true, IPA_v5_0_GROUP_UL,
|
|
|
+ false,
|
|
|
+ IPA_DPS_HPS_SEQ_TYPE_DMA_ONLY,
|
|
|
+ QMB_MASTER_SELECT_DDR,
|
|
|
+ { 14, 12, 20, 24, IPA_EE_AP, GSI_ESCAPE_BUF_ONLY, 0},
|
|
|
+ IPA_TX_INSTANCE_NA },
|
|
|
+
|
|
|
+ [IPA_5_1_APQ][IPA_CLIENT_MHI_PRIME_RMNET_CONS] = {
|
|
|
+ true, IPA_v5_0_GROUP_UL,
|
|
|
+ false,
|
|
|
+ IPA_DPS_HPS_SEQ_TYPE_INVALID,
|
|
|
+ QMB_MASTER_SELECT_DDR,
|
|
|
+ { 31, 8, 9, 9, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3 },
|
|
|
+ IPA_TX_INSTANCE_DL },
|
|
|
+ [IPA_5_1_APQ][IPA_CLIENT_APPS_LAN_CONS] = {
|
|
|
+ true, IPA_v5_0_GROUP_UL,
|
|
|
+ false,
|
|
|
+ IPA_DPS_HPS_SEQ_TYPE_INVALID,
|
|
|
+ QMB_MASTER_SELECT_DDR,
|
|
|
+ { 16, 13, 9, 9, IPA_EE_AP, GSI_ESCAPE_BUF_ONLY, 0},
|
|
|
+ IPA_TX_INSTANCE_UL },
|
|
|
+ [IPA_5_1_APQ][IPA_CLIENT_USB_DPL_CONS] = {
|
|
|
+ true, IPA_v5_0_GROUP_DL,
|
|
|
+ false,
|
|
|
+ IPA_DPS_HPS_SEQ_TYPE_INVALID,
|
|
|
+ QMB_MASTER_SELECT_DDR,
|
|
|
+ { 24, 20, 5, 5, IPA_EE_AP, GSI_ESCAPE_BUF_ONLY, 0},
|
|
|
+ IPA_TX_INSTANCE_DL },
|
|
|
+ [IPA_5_1_APQ][IPA_CLIENT_ODL_DPL_CONS] = {
|
|
|
+ true, IPA_v5_0_GROUP_DL,
|
|
|
+ false,
|
|
|
+ IPA_DPS_HPS_SEQ_TYPE_INVALID,
|
|
|
+ QMB_MASTER_SELECT_DDR,
|
|
|
+ { 25, 2, 5, 5, IPA_EE_AP, GSI_ESCAPE_BUF_ONLY, 0},
|
|
|
+ IPA_TX_INSTANCE_DL },
|
|
|
+ [IPA_5_1_APQ][IPA_CLIENT_USB_CONS] = {
|
|
|
+ true, IPA_v5_0_GROUP_DL,
|
|
|
+ false,
|
|
|
+ IPA_DPS_HPS_SEQ_TYPE_INVALID,
|
|
|
+ QMB_MASTER_SELECT_DDR,
|
|
|
+ { 29, 23, 9, 9, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3},
|
|
|
+ IPA_TX_INSTANCE_DL },
|
|
|
};
|
|
|
|
|
|
static struct ipa3_mem_partition ipa_4_1_mem_part = {
|
|
@@ -6189,6 +6301,8 @@ u8 ipa3_get_hw_type_index(void)
|
|
|
break;
|
|
|
case IPA_HW_v5_1:
|
|
|
hw_type_index = IPA_5_1;
|
|
|
+ if (ipa3_ctx->platform_type == IPA_PLAT_TYPE_APQ)
|
|
|
+ hw_type_index = IPA_5_1_APQ;
|
|
|
break;
|
|
|
default:
|
|
|
IPAERR("Incorrect IPA version %d\n", ipa3_ctx->ipa_hw_type);
|
|
@@ -10009,6 +10123,7 @@ static void ipa3_write_rsrc_grp_type_reg(int group_index,
|
|
|
case IPA_5_0:
|
|
|
case IPA_5_0_MHI:
|
|
|
case IPA_5_1:
|
|
|
+ case IPA_5_1_APQ:
|
|
|
if (src) {
|
|
|
switch (group_index) {
|
|
|
case IPA_v5_0_GROUP_UL:
|
|
@@ -10250,6 +10365,7 @@ void ipa3_set_resorce_groups_min_max_limits(void)
|
|
|
case IPA_5_0:
|
|
|
case IPA_5_0_MHI:
|
|
|
case IPA_5_1:
|
|
|
+ case IPA_5_1_APQ:
|
|
|
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_0_SRC_GROUP_MAX;
|