Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1e710841 authored by Ghanim Fodi's avatar Ghanim Fodi Committed by Gerrit - the friendly Code Review server
Browse files

msm: ipa4: Add IPA endpoints mapping for IPA 4.5



Add IPA endpoints mapping for regular case and MHI
case. For each EP, configure resource group
filtering capability, sequence, QMB, EE, GSI channel,
TLV/AOS and GSI smart prefetch info.

CRs-Fixed: 2275215
Change-Id: I0905d5937ca3d15fabb2d144ce62592145db7caa
Signed-off-by: default avatarGhanim Fodi <gfodi@codeaurora.org>
parent d8b7cb92
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -184,7 +184,16 @@ const char *ipa_clients_strings[IPA_CLIENT_MAX] = {
	__stringify(IPA_CLIENT_TEST3_CONS),
	__stringify(IPA_CLIENT_TEST4_PROD),
	__stringify(IPA_CLIENT_TEST4_CONS),
	__stringify(RESERVERD_PROD_72),
	__stringify(IPA_CLIENT_DUMMY_CONS),
	__stringify(IPA_CLIENT_Q6_DL_NLO_DATA_PROD),
	__stringify(IPA_CLIENT_Q6_UL_NLO_DATA_CONS),
	__stringify(RESERVERD_PROD_76),
	__stringify(IPA_CLIENT_Q6_UL_NLO_ACK_CONS),
	__stringify(RESERVERD_PROD_78),
	__stringify(IPA_CLIENT_Q6_QBAP_STATUS_CONS),
	__stringify(RESERVERD_PROD_80),
	__stringify(IPA_CLIENT_MHI_DPL_CONS),
};

/**
+2 −2
Original line number Diff line number Diff line
@@ -3491,8 +3491,8 @@ static const struct file_operations ipa3_drv_fops = {

static int ipa3_get_clks(struct device *dev)
{
	if (ipa3_ctx->ipa3_hw_mode == IPA_HW_MODE_EMULATION) {
		IPADBG("No clock manipulation when running emulation\n");
	if (ipa3_ctx->ipa3_hw_mode != IPA_HW_MODE_NORMAL) {
		IPADBG("not supported in this HW mode\n");
		ipa3_clk = NULL;
		return 0;
	}
+3 −0
Original line number Diff line number Diff line
@@ -812,6 +812,9 @@ int ipa3_request_gsi_channel(struct ipa_request_gsi_channel_params *params,

	params->chan_params.evt_ring_hdl = ep->gsi_evt_ring_hdl;
	params->chan_params.ch_id = gsi_ep_cfg_ptr->ipa_gsi_chan_num;
	params->chan_params.prefetch_mode = gsi_ep_cfg_ptr->prefetch_mode;
	params->chan_params.empty_lvl_threshold =
		gsi_ep_cfg_ptr->prefetch_threshold;
	gsi_res = gsi_alloc_channel(&params->chan_params, gsi_dev_hdl,
		&ep->gsi_chan_hdl);
	if (gsi_res != GSI_STATUS_SUCCESS) {
+5 −1
Original line number Diff line number Diff line
@@ -1075,7 +1075,7 @@ int ipa3_setup_sys_pipe(struct ipa_sys_connect_params *sys_in, u32 *clnt_hdl)
	if (result != GSI_STATUS_SUCCESS) {
		IPAERR("gsi_start_channel failed res=%d ep=%d.\n", result,
			ipa_ep_idx);
		goto fail_gen2;
		goto fail_gen3;
	}

	if (!ep->keep_ipa_awake)
@@ -1086,6 +1086,8 @@ int ipa3_setup_sys_pipe(struct ipa_sys_connect_params *sys_in, u32 *clnt_hdl)

	return 0;

fail_gen3:
	ipa3_disable_data_path(ipa_ep_idx);
fail_gen2:
	if (ipa3_ctx->use_ipa_pm)
		ipa_pm_deregister(ep->sys->pm_hdl);
@@ -3785,6 +3787,8 @@ static int ipa_gsi_setup_channel(struct ipa_sys_connect_params *in,
		gsi_channel_props.low_weight = IPA_GSI_MAX_CH_LOW_WEIGHT;
	else
		gsi_channel_props.low_weight = 1;
	gsi_channel_props.prefetch_mode = gsi_ep_info->prefetch_mode;
	gsi_channel_props.empty_lvl_threshold = gsi_ep_info->prefetch_threshold;
	gsi_channel_props.chan_user_data = ep->sys;
	gsi_channel_props.err_cb = ipa_gsi_chan_err_cb;
	if (IPA_CLIENT_IS_PROD(ep->client))
+2 −0
Original line number Diff line number Diff line
@@ -283,6 +283,8 @@ static int ipa_mhi_start_gsi_channel(enum ipa_client_type client,
	ch_props.use_db_eng = GSI_CHAN_DB_MODE;
	ch_props.max_prefetch = GSI_ONE_PREFETCH_SEG;
	ch_props.low_weight = 1;
	ch_props.prefetch_mode = ep_cfg->prefetch_mode;
	ch_props.empty_lvl_threshold = ep_cfg->prefetch_threshold;
	ch_props.err_cb = params->ch_err_cb;
	ch_props.chan_user_data = params->channel;
	res = gsi_alloc_channel(&ch_props, ipa3_ctx->gsi_dev_hdl,
Loading