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

Commit a7f27f32 authored by Michael Adisumarta's avatar Michael Adisumarta
Browse files

msm: ipa4: Change uC EE enum and add new uC protocol struct for IPA4.0



Change the Execution Environment for IPA uC to the correct value.
Add new protocol structs whose protocol type is u32 instead of u8.
Add IPA4.0 cases for functions that use these structs.

Change-Id: I5a884dca1d98b5a19c8fb4c6cb406b70fcb58cd6
CRs-Fixed: 2092890
Signed-off-by: default avatarMichael Adisumarta <madisuma@codeaurora.org>
parent d9089f47
Loading
Loading
Loading
Loading
+30 −9
Original line number Diff line number Diff line
@@ -204,6 +204,7 @@ static int ipa3_uc_send_ntn_setup_pipe_cmd(
	struct ipa_mem_buffer cmd;
	struct Ipa3HwNtnSetUpCmdData_t *Ntn_params;
	struct IpaHwOffloadSetUpCmdData_t *cmd_data;
	struct IpaHwOffloadSetUpCmdData_t_v4_0 *cmd_data_v4_0;

	if (ntn_info == NULL) {
		IPAERR("invalid input\n");
@@ -225,7 +226,9 @@ static int ipa3_uc_send_ntn_setup_pipe_cmd(
	IPADBG("num_buffers = %d\n", ntn_info->num_buffers);
	IPADBG("data_buff_size = %d\n", ntn_info->data_buff_size);
	IPADBG("tail_ptr_base_pa = 0x%pa\n", &ntn_info->ntn_reg_base_ptr_pa);

	if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_0)
		cmd.size = sizeof(*cmd_data_v4_0);
	else
		cmd.size = sizeof(*cmd_data);
	cmd.base = dma_alloc_coherent(ipa3_ctx->uc_pdev, cmd.size,
			&cmd.phys_base, GFP_KERNEL);
@@ -234,10 +237,17 @@ static int ipa3_uc_send_ntn_setup_pipe_cmd(
		return -ENOMEM;
	}

	if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_0) {
		cmd_data_v4_0 = (struct IpaHwOffloadSetUpCmdData_t_v4_0 *)
			cmd.base;
		cmd_data_v4_0->protocol = IPA_HW_FEATURE_NTN;
		Ntn_params = &cmd_data_v4_0->SetupCh_params.NtnSetupCh_params;
	} else {
		cmd_data = (struct IpaHwOffloadSetUpCmdData_t *)cmd.base;
		cmd_data->protocol = IPA_HW_FEATURE_NTN;

		Ntn_params = &cmd_data->SetupCh_params.NtnSetupCh_params;
	}

	Ntn_params->ring_base_pa = ntn_info->ring_base_pa;
	Ntn_params->buff_pool_base_pa = ntn_info->buff_pool_base_pa;
	Ntn_params->ntn_ring_size = ntn_info->ntn_ring_size;
@@ -372,6 +382,7 @@ int ipa3_tear_down_uc_offload_pipes(int ipa_ep_idx_ul,
	struct ipa_mem_buffer cmd;
	struct ipa3_ep_context *ep_ul, *ep_dl;
	struct IpaHwOffloadCommonChCmdData_t *cmd_data;
	struct IpaHwOffloadCommonChCmdData_t_v4_0 *cmd_data_v4_0;
	union Ipa3HwNtnCommonChCmdData_t *tear;
	int result = 0;

@@ -388,6 +399,9 @@ int ipa3_tear_down_uc_offload_pipes(int ipa_ep_idx_ul,
		return -EFAULT;
	}

	if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_0)
		cmd.size = sizeof(*cmd_data_v4_0);
	else
		cmd.size = sizeof(*cmd_data);
	cmd.base = dma_alloc_coherent(ipa3_ctx->uc_pdev, cmd.size,
		&cmd.phys_base, GFP_KERNEL);
@@ -397,9 +411,16 @@ int ipa3_tear_down_uc_offload_pipes(int ipa_ep_idx_ul,
	}

	IPA_ACTIVE_CLIENTS_INC_SIMPLE();
	if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_0) {
		cmd_data_v4_0 = (struct IpaHwOffloadCommonChCmdData_t_v4_0 *)
			cmd.base;
		cmd_data_v4_0->protocol = IPA_HW_FEATURE_NTN;
		tear = &cmd_data_v4_0->CommonCh_params.NtnCommonCh_params;
	} else {
		cmd_data = (struct IpaHwOffloadCommonChCmdData_t *)cmd.base;
		cmd_data->protocol = IPA_HW_FEATURE_NTN;
		tear = &cmd_data->CommonCh_params.NtnCommonCh_params;
	}

	/* teardown the DL pipe */
	ipa3_disable_data_path(ipa_ep_idx_dl);
+16 −0
Original line number Diff line number Diff line
@@ -535,6 +535,16 @@ struct IpaHwOffloadSetUpCmdData_t {
	union IpaHwSetUpCmd SetupCh_params;
} __packed;

/**
 * struct IpaHwOffloadSetUpCmdData_t_v4_0  -
 *
 *
 */
struct IpaHwOffloadSetUpCmdData_t_v4_0 {
	u32 protocol;
	union IpaHwSetUpCmd SetupCh_params;
} __packed;

/**
 * struct IpaHwCommonChCmd  - Structure holding the parameters
 * for IPA_CPU_2_HW_CMD_OFFLOAD_TEAR_DOWN
@@ -550,4 +560,10 @@ struct IpaHwOffloadCommonChCmdData_t {
	union IpaHwCommonChCmd CommonCh_params;
} __packed;

struct IpaHwOffloadCommonChCmdData_t_v4_0 {
	u32 protocol;
	union IpaHwCommonChCmd CommonCh_params;
} __packed;


#endif /* _IPA_UC_OFFLOAD_I_H_ */
+1 −1
Original line number Diff line number Diff line
@@ -408,7 +408,7 @@ static const u32 ipa3_rsrc_rx_grp_hps_weight_config
enum ipa_ees {
	IPA_EE_AP = 0,
	IPA_EE_Q6 = 1,
	IPA_EE_UC = 3,
	IPA_EE_UC = 2,
};

struct ipa_ep_configuration {