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

Commit ab12d575 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: ipa: remove ipa clock proxy vote after uC loading is complete"

parents 8b44fe68 258fdfc0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -790,7 +790,7 @@ static void ipa_q6_clnt_svc_arrive(struct work_struct *work)
		return;
	}
	qmi_modem_init_fin = true;
	ipa2_proxy_clk_unvote();

	/* is_load_uc=FALSE indicates that SSR has occurred */
	ipa_q6_handshake_complete(!is_load_uc);
	IPAWANDBG("complete, qmi_modem_init_fin : %d\n",
+5 −0
Original line number Diff line number Diff line
@@ -443,6 +443,11 @@ static void ipa_uc_response_hdlr(enum ipa_irq_type interrupt,
			IPA_HW_2_CPU_RESPONSE_INIT_COMPLETED) {
		ipa_ctx->uc_ctx.uc_loaded = true;
		IPAERR("IPA uC loaded\n");
		/*
		 * The proxy vote is held until uC is loaded to ensure that
		 * IPA_HW_2_CPU_RESPONSE_INIT_COMPLETED is received.
		 */
		ipa2_proxy_clk_unvote();
		for (i = 0; i < IPA_HW_NUM_FEATURES; i++) {
			if (uc_hdlrs[i].ipa_uc_loaded_hdlr)
				uc_hdlrs[i].ipa_uc_loaded_hdlr();
+15 −1
Original line number Diff line number Diff line
@@ -2449,9 +2449,23 @@ void ipa_broadcast_quota_reach_ind(u32 mux_id)
void ipa_q6_handshake_complete(bool ssr_bootup)
{
	/* It is required to recover the network stats after SSR recovery */
	if (ssr_bootup)
	if (ssr_bootup) {
		/*
		 * In case the uC is required to be loaded by the Modem,
		 * the proxy vote will be removed only when uC loading is
		 * complete and indication is received by the AP. After SSR,
		 * uC is already loaded. Therefore, proxy vote can be removed
		 * once Modem init is complete.
		 */
		ipa2_proxy_clk_unvote();

		/*
		 * It is required to recover the network stats after
		 * SSR recovery
		 */
		rmnet_ipa_get_network_stats_and_update();
	}
}

static int __init ipa_wwan_init(void)
{
+1 −1
Original line number Diff line number Diff line
@@ -795,7 +795,7 @@ static void ipa3_q6_clnt_svc_arrive(struct work_struct *work)
		return;
	}
	ipa3_qmi_modem_init_fin = true;
	ipa3_proxy_clk_unvote();

	/* is_load_uc=FALSE indicates that SSR has occurred */
	ipa3_q6_handshake_complete(!is_load_uc);
	IPAWANDBG("complete, ipa3_qmi_modem_init_fin : %d\n",
+5 −0
Original line number Diff line number Diff line
@@ -421,6 +421,11 @@ static void ipa3_uc_response_hdlr(enum ipa_irq_type interrupt,
			IPA_HW_2_CPU_RESPONSE_INIT_COMPLETED) {
		ipa3_ctx->uc_ctx.uc_loaded = true;
		IPAERR("IPA uC loaded\n");
		/*
		 * The proxy vote is held until uC is loaded to ensure that
		 * IPA_HW_2_CPU_RESPONSE_INIT_COMPLETED is received.
		 */
		ipa3_proxy_clk_unvote();
		for (i = 0; i < IPA_HW_NUM_FEATURES; i++) {
			if (ipa3_uc_hdlrs[i].ipa_uc_loaded_hdlr)
				ipa3_uc_hdlrs[i].ipa_uc_loaded_hdlr();
Loading