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

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

Merge "msm: ipa3: Fix to use client mapping instead of getting pipe index"

parents 73a9e4eb d59f72f3
Loading
Loading
Loading
Loading
+14 −12
Original line number Original line Diff line number Diff line
@@ -367,13 +367,11 @@ int ipa3_smmu_map_peer_buff(u64 iova, u32 size, bool map, struct sg_table *sgt,
	return 0;
	return 0;
}
}


static enum ipa_client_cb_type ipa_get_client_cb_type(u32 ipa_ep_idx)
static enum ipa_client_cb_type ipa_get_client_cb_type(
					enum ipa_client_type client_type)
{
{
	enum ipa_client_type client_type;
	enum ipa_client_cb_type client_cb;
	enum ipa_client_cb_type client_cb;


	client_type = ipa3_get_client_by_pipe(ipa_ep_idx);

	if (client_type == IPA_CLIENT_USB_PROD ||
	if (client_type == IPA_CLIENT_USB_PROD ||
			client_type == IPA_CLIENT_USB_CONS) {
			client_type == IPA_CLIENT_USB_CONS) {
		IPADBG("USB Client registered\n");
		IPADBG("USB Client registered\n");
@@ -393,10 +391,12 @@ void ipa3_register_lock_unlock_callback(int (*client_cb)(bool is_lock),
						u32 ipa_ep_idx)
						u32 ipa_ep_idx)
{
{
	enum ipa_client_cb_type client;
	enum ipa_client_cb_type client;
	enum ipa_client_type client_type;


	IPADBG("entry\n");
	IPADBG("entry\n");


	client = ipa_get_client_cb_type(ipa_ep_idx);
	client_type = ipa3_get_client_by_pipe(ipa_ep_idx);
	client = ipa_get_client_cb_type(client_type);
	if (client == IPA_MAX_CLNT)
	if (client == IPA_MAX_CLNT)
		return;
		return;


@@ -413,10 +413,12 @@ void ipa3_register_lock_unlock_callback(int (*client_cb)(bool is_lock),
void ipa3_deregister_lock_unlock_callback(u32 ipa_ep_idx)
void ipa3_deregister_lock_unlock_callback(u32 ipa_ep_idx)
{
{
	enum ipa_client_cb_type client_cb;
	enum ipa_client_cb_type client_cb;
	enum ipa_client_type client_type;


	IPADBG("entry\n");
	IPADBG("entry\n");


	client_cb = ipa_get_client_cb_type(ipa_ep_idx);
	client_type = ipa3_get_client_by_pipe(ipa_ep_idx);
	client_cb = ipa_get_client_cb_type(client_type);
	if (client_cb == IPA_MAX_CLNT)
	if (client_cb == IPA_MAX_CLNT)
		return;
		return;


@@ -429,13 +431,13 @@ void ipa3_deregister_lock_unlock_callback(u32 ipa_ep_idx)
	IPADBG("exit\n");
	IPADBG("exit\n");
}
}


static void client_lock_unlock_cb(u32 ipa_ep_idx, bool is_lock)
static void client_lock_unlock_cb(enum ipa_client_type client, bool is_lock)
{
{
	enum ipa_client_cb_type client_cb;
	enum ipa_client_cb_type client_cb;


	IPADBG("entry\n");
	IPADBG("entry\n");


	client_cb = ipa_get_client_cb_type(ipa_ep_idx);
	client_cb = ipa_get_client_cb_type(client);
	if (client_cb == IPA_MAX_CLNT)
	if (client_cb == IPA_MAX_CLNT)
		return;
		return;


@@ -1120,7 +1122,7 @@ int ipa3_set_reset_client_prod_pipe_delay(bool set_reset,
	ep = &ipa3_ctx->ep[pipe_idx];
	ep = &ipa3_ctx->ep[pipe_idx];


	/* Setting delay on USB_PROD with skip_ep_cfg */
	/* Setting delay on USB_PROD with skip_ep_cfg */
	client_lock_unlock_cb(pipe_idx, true);
	client_lock_unlock_cb(client, true);
	if (ep->valid && ep->skip_ep_cfg) {
	if (ep->valid && ep->skip_ep_cfg) {
		ep->ep_delay_set = ep_ctrl.ipa_ep_delay;
		ep->ep_delay_set = ep_ctrl.ipa_ep_delay;
		result = ipa3_cfg_ep_ctrl(pipe_idx, &ep_ctrl);
		result = ipa3_cfg_ep_ctrl(pipe_idx, &ep_ctrl);
@@ -1130,7 +1132,7 @@ int ipa3_set_reset_client_prod_pipe_delay(bool set_reset,
		else
		else
			IPADBG("client (ep: %d) success\n", pipe_idx);
			IPADBG("client (ep: %d) success\n", pipe_idx);
	}
	}
	client_lock_unlock_cb(pipe_idx, false);
	client_lock_unlock_cb(client, false);
	return result;
	return result;
}
}


@@ -1163,7 +1165,7 @@ int ipa3_set_reset_client_cons_pipe_sus_holb(bool set_reset,


	ep = &ipa3_ctx->ep[pipe_idx];
	ep = &ipa3_ctx->ep[pipe_idx];
	/* Setting sus/holb on MHI_CONS with skip_ep_cfg */
	/* Setting sus/holb on MHI_CONS with skip_ep_cfg */
	client_lock_unlock_cb(pipe_idx, true);
	client_lock_unlock_cb(client, true);
	if (ep->valid && ep->skip_ep_cfg) {
	if (ep->valid && ep->skip_ep_cfg) {
		if (ipa3_ctx->ipa_hw_type < IPA_HW_v4_0)
		if (ipa3_ctx->ipa_hw_type < IPA_HW_v4_0)
			ipahal_write_reg_n_fields(
			ipahal_write_reg_n_fields(
@@ -1182,7 +1184,7 @@ int ipa3_set_reset_client_cons_pipe_sus_holb(bool set_reset,
			IPA_ENDP_INIT_HOL_BLOCK_EN_n,
			IPA_ENDP_INIT_HOL_BLOCK_EN_n,
			pipe_idx, &ep_holb);
			pipe_idx, &ep_holb);
	}
	}
	client_lock_unlock_cb(pipe_idx, false);
	client_lock_unlock_cb(client, false);
	return 0;
	return 0;
}
}