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

Commit 798a2a7f authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: ipa: Move the QMI for mhi pipe info to modem bootup"

parents 92baf3a1 128102b4
Loading
Loading
Loading
Loading
+0 −40
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@
#include <linux/ipa_mhi.h>
#include "../ipa_common_i.h"
#include "ipa_i.h"
#include "ipa_qmi_service.h"

#define IPA_MHI_DRV_NAME "ipa_mhi"

@@ -106,33 +105,6 @@ bool ipa3_mhi_stop_gsi_channel(enum ipa_client_type client)
	return false;
}

static int ipa3_mhi_send_endp_ind_to_modem(void)
{
	struct ipa_endp_desc_indication_msg_v01 req;
	struct ipa_ep_id_type_v01 *ep_info;
	int ipa_mhi_prod_ep_idx =
		ipa3_get_ep_mapping(IPA_CLIENT_MHI_LOW_LAT_PROD);
	int ipa_mhi_cons_ep_idx =
		ipa3_get_ep_mapping(IPA_CLIENT_MHI_LOW_LAT_CONS);

	memset(&req, 0, sizeof(struct ipa_endp_desc_indication_msg_v01));
	req.ep_info_len = 2;
	req.ep_info_valid = true;
	req.num_eps_valid = true;
	req.num_eps = 2;
	ep_info = &req.ep_info[0];
	ep_info->ep_id = ipa_mhi_cons_ep_idx;
	ep_info->ic_type = DATA_IC_TYPE_MHI_V01;
	ep_info->ep_type = DATA_EP_DESC_TYPE_EMB_FLOW_CTL_PROD_V01;
	ep_info->ep_status = DATA_EP_STATUS_CONNECTED_V01;
	ep_info = &req.ep_info[1];
	ep_info->ep_id = ipa_mhi_prod_ep_idx;
	ep_info->ic_type = DATA_IC_TYPE_MHI_V01;
	ep_info->ep_type = DATA_EP_DESC_TYPE_EMB_FLOW_CTL_CONS_V01;
	ep_info->ep_status = DATA_EP_STATUS_CONNECTED_V01;
	return ipa3_qmi_send_endp_desc_indication(&req);
}

static int ipa3_mhi_reset_gsi_channel(enum ipa_client_type client)
{
	int res;
@@ -553,10 +525,6 @@ int ipa3_connect_mhi_pipe(struct ipa_mhi_connect_params_internal *in,
	int ipa_ep_idx;
	int res;
	enum ipa_client_type client;
	int ipa_mhi_prod_ep_idx =
		ipa3_get_ep_mapping(IPA_CLIENT_MHI_LOW_LAT_PROD);
	int ipa_mhi_cons_ep_idx =
		ipa3_get_ep_mapping(IPA_CLIENT_MHI_LOW_LAT_CONS);

	IPA_MHI_FUNC_ENTRY();

@@ -602,14 +570,6 @@ int ipa3_connect_mhi_pipe(struct ipa_mhi_connect_params_internal *in,
	ipa3_ctx->skip_ep_cfg_shadow[ipa_ep_idx] = ep->skip_ep_cfg;
	IPA_MHI_DBG("client %d (ep: %d) connected\n", client, ipa_ep_idx);

	if ((client == IPA_CLIENT_MHI_LOW_LAT_PROD ||
		client == IPA_CLIENT_MHI_LOW_LAT_CONS) &&
		ipa_mhi_prod_ep_idx != -1 &&
		ipa3_ctx->ep[ipa_mhi_prod_ep_idx].valid &&
		ipa_mhi_cons_ep_idx != -1 &&
		ipa3_ctx->ep[ipa_mhi_cons_ep_idx].valid)
		ipa3_mhi_send_endp_ind_to_modem();

	IPA_MHI_FUNC_EXIT();

	return 0;
+31 −1
Original line number Diff line number Diff line
@@ -1486,8 +1486,35 @@ static void apps_ipa_packet_receive_notify(void *priv,
	}
}

/* Send RSC endpoint info to modem using QMI indication message */
/* Send MHI endpoint info to modem using QMI indication message */
static int ipa_send_mhi_endp_ind_to_modem(void)
{
	struct ipa_endp_desc_indication_msg_v01 req;
	struct ipa_ep_id_type_v01 *ep_info;
	int ipa_mhi_prod_ep_idx =
		ipa3_get_ep_mapping(IPA_CLIENT_MHI_LOW_LAT_PROD);
	int ipa_mhi_cons_ep_idx =
		ipa3_get_ep_mapping(IPA_CLIENT_MHI_LOW_LAT_CONS);

	memset(&req, 0, sizeof(struct ipa_endp_desc_indication_msg_v01));
	req.ep_info_len = 2;
	req.ep_info_valid = true;
	req.num_eps_valid = true;
	req.num_eps = 2;
	ep_info = &req.ep_info[0];
	ep_info->ep_id = ipa_mhi_cons_ep_idx;
	ep_info->ic_type = DATA_IC_TYPE_MHI_V01;
	ep_info->ep_type = DATA_EP_DESC_TYPE_EMB_FLOW_CTL_PROD_V01;
	ep_info->ep_status = DATA_EP_STATUS_CONNECTED_V01;
	ep_info = &req.ep_info[1];
	ep_info->ep_id = ipa_mhi_prod_ep_idx;
	ep_info->ic_type = DATA_IC_TYPE_MHI_V01;
	ep_info->ep_type = DATA_EP_DESC_TYPE_EMB_FLOW_CTL_CONS_V01;
	ep_info->ep_status = DATA_EP_STATUS_CONNECTED_V01;
	return ipa3_qmi_send_endp_desc_indication(&req);
}

/* Send RSC endpoint info to modem using QMI indication message */
static int ipa_send_rsc_pipe_ind_to_modem(void)
{
	struct ipa_endp_desc_indication_msg_v01 req;
@@ -4137,6 +4164,9 @@ void ipa3_q6_handshake_complete(bool ssr_bootup)
	}
	if (ipa3_ctx->ipa_mhi_proxy)
		imp_handle_modem_ready();

	if (ipa3_ctx->ipa_config_is_mhi)
		ipa_send_mhi_endp_ind_to_modem();
}

static inline bool rmnet_ipa3_check_any_client_inited