diff --git a/drivers/platform/msm/ipa/ipa_api.c b/drivers/platform/msm/ipa/ipa_api.c index dc3cfca2c1fc..9cc070958f32 100644 --- a/drivers/platform/msm/ipa/ipa_api.c +++ b/drivers/platform/msm/ipa/ipa_api.c @@ -220,6 +220,8 @@ const char *ipa_clients_strings[IPA_CLIENT_MAX] = { __stringify(IPA_CLIENT_MHI2_CONS), __stringify(IPA_CLIENT_Q6_CV2X_PROD), __stringify(IPA_CLIENT_Q6_CV2X_CONS), + __stringify(IPA_CLIENT_MHI_QMAP_PROD), + __stringify(IPA_CLIENT_MHI_QMAP_CONS), }; /** diff --git a/drivers/platform/msm/ipa/ipa_clients/ipa_mhi_client.c b/drivers/platform/msm/ipa/ipa_clients/ipa_mhi_client.c index 47135547b1ba..21f6ed602413 100644 --- a/drivers/platform/msm/ipa/ipa_clients/ipa_mhi_client.c +++ b/drivers/platform/msm/ipa/ipa_clients/ipa_mhi_client.c @@ -63,8 +63,8 @@ #define IPA_MHI_SUSPEND_SLEEP_MIN 900 #define IPA_MHI_SUSPEND_SLEEP_MAX 1100 -#define IPA_MHI_MAX_UL_CHANNELS 2 -#define IPA_MHI_MAX_DL_CHANNELS 3 +#define IPA_MHI_MAX_UL_CHANNELS 3 +#define IPA_MHI_MAX_DL_CHANNELS 4 /* bit #40 in address should be asserted for MHI transfers over pcie */ #define IPA_MHI_CLIENT_HOST_ADDR_COND(addr) \ diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c b/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c index d755222b2c80..552f5f5ef27f 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c @@ -2602,6 +2602,12 @@ static const struct ipa_ep_configuration ipa3_ep_mapping IPA_DPS_HPS_SEQ_TYPE_DMA_ONLY, QMB_MASTER_SELECT_DDR, { 10, 13, 8, 16, IPA_EE_AP, GSI_ESCAPE_BUF_ONLY, 0 } }, + [IPA_4_5_MHI][IPA_CLIENT_MHI_QMAP_PROD] = { + true, IPA_v4_5_MHI_GROUP_PCIE, + false, + IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, + QMB_MASTER_SELECT_PCIE, + { 3, 5, 8, 16, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3 } }, /* Only for test purpose */ [IPA_4_5_MHI][IPA_CLIENT_TEST_PROD] = { true, QMB_MASTER_SELECT_DDR, @@ -2688,7 +2694,12 @@ static const struct ipa_ep_configuration ipa3_ep_mapping IPA_DPS_HPS_SEQ_TYPE_INVALID, QMB_MASTER_SELECT_PCIE, { 22, 2, 5, 5, IPA_EE_AP, GSI_ESCAPE_BUF_ONLY, 0 } }, - + [IPA_4_5_MHI][IPA_CLIENT_MHI_QMAP_CONS] = { + true, IPA_v4_5_MHI_GROUP_PCIE, + false, + IPA_DPS_HPS_SEQ_TYPE_INVALID, + QMB_MASTER_SELECT_PCIE, + { 30, 6, 9, 9, IPA_EE_AP, GSI_SMART_PRE_FETCH, 4 } }, /* Dummy consumer (pipe 31) is used in L2TP rt rule */ [IPA_4_5_MHI][IPA_CLIENT_DUMMY_CONS] = { true, QMB_MASTER_SELECT_DDR, diff --git a/include/uapi/linux/ipa_qmi_service_v01.h b/include/uapi/linux/ipa_qmi_service_v01.h index 5f18d7cfbf69..d8f5869a3df7 100644 --- a/include/uapi/linux/ipa_qmi_service_v01.h +++ b/include/uapi/linux/ipa_qmi_service_v01.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2013-2019, The Linux Foundation. All rights reserved. +/* Copyright (c) 2013-2020, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -2494,6 +2494,8 @@ enum ipa_ep_desc_type_enum_v01 { DATA_EP_DESC_TYPE_TETH_PROD_V01 = 0x07, DATA_EP_DESC_TYPE_TETH_RMNET_CONS_V01 = 0x08, DATA_EP_DESC_TYPE_TETH_RMNET_PROD_V01 = 0x09, + DATA_EP_DESC_TYPE_EMB_FLOW_CTL_CONS_V01 = 0x0A, + DATA_EP_DESC_TYPE_EMB_FLOW_CTL_PROD_V01 = 0x0B, IPA_EP_DESC_TYPE_ENUM_MAX_VAL_V01 = IPA_INT_MAX, }; diff --git a/include/uapi/linux/msm_ipa.h b/include/uapi/linux/msm_ipa.h index 0872130469a1..2617fa1c9c04 100644 --- a/include/uapi/linux/msm_ipa.h +++ b/include/uapi/linux/msm_ipa.h @@ -402,9 +402,12 @@ enum ipa_client_type { IPA_CLIENT_Q6_CV2X_PROD = 106, IPA_CLIENT_Q6_CV2X_CONS = 107, + + IPA_CLIENT_MHI_QMAP_PROD = 108, + IPA_CLIENT_MHI_QMAP_CONS = 109, }; -#define IPA_CLIENT_MAX (IPA_CLIENT_Q6_CV2X_CONS + 1) +#define IPA_CLIENT_MAX (IPA_CLIENT_MHI_QMAP_CONS + 1) #define IPA_CLIENT_WLAN2_PROD IPA_CLIENT_A5_WLAN_AMPDU_PROD #define IPA_CLIENT_Q6_DL_NLO_DATA_PROD IPA_CLIENT_Q6_DL_NLO_DATA_PROD @@ -519,6 +522,8 @@ enum ipa_client_type { (client) == IPA_CLIENT_MHI_PROD || \ (client) == IPA_CLIENT_MHI2_PROD || \ (client) == IPA_CLIENT_MHI2_CONS || \ + (client) == IPA_CLIENT_MHI_QMAP_PROD || \ + (client) == IPA_CLIENT_MHI_QMAP_CONS || \ (client) == IPA_CLIENT_MHI_DPL_CONS) #define IPA_CLIENT_IS_TEST_PROD(client) \