Browse Source

ipa: Update IP_PACKET_INIT IC for IPAv5

Change-Id: Id2d2ea617e3f2ed70a986e0478538574730199d2
Acked-by: Nadav Levintov <[email protected]>
Signed-off-by: Sivan Reinstein <[email protected]>
Sivan Reinstein 4 năm trước cách đây
mục cha
commit
2bef2805b3

+ 33 - 1
drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c

@@ -335,6 +335,33 @@ static struct ipahal_imm_cmd_pyld *ipa_imm_cmd_construct_ip_packet_init(
 	return pyld;
 }
 
+static struct ipahal_imm_cmd_pyld *ipa_imm_cmd_construct_ip_packet_init_v_5_0(
+	enum ipahal_imm_cmd_name cmd, const void *params, bool is_atomic_ctx)
+{
+	struct ipahal_imm_cmd_pyld *pyld;
+	struct ipa_imm_cmd_hw_ip_packet_init_v_5_0 *data;
+	struct ipahal_imm_cmd_ip_packet_init *pktinit_params =
+		(struct ipahal_imm_cmd_ip_packet_init *)params;
+
+	pyld = IPAHAL_MEM_ALLOC(sizeof(*pyld) + sizeof(*data), is_atomic_ctx);
+	if (unlikely(!pyld)) {
+		IPAHAL_ERR("kzalloc err\n");
+		return pyld;
+	}
+	pyld->opcode = ipahal_imm_cmd_get_opcode(cmd);
+	pyld->len = sizeof(*data);
+	data = (struct ipa_imm_cmd_hw_ip_packet_init_v_5_0 *)pyld->data;
+
+	if (unlikely(pktinit_params->destination_pipe_index & ~0xFF)) {
+		IPAHAL_ERR("Dst pipe idx is bigger than 8bit width 0x%x\n",
+			pktinit_params->destination_pipe_index);
+		WARN_ON(1);
+	}
+	data->destination_pipe_index = pktinit_params->destination_pipe_index;
+
+	return pyld;
+}
+
 static struct ipahal_imm_cmd_pyld *ipa_imm_cmd_construct_nat_dma(
 	enum ipahal_imm_cmd_name cmd, const void *params, bool is_atomic_ctx)
 {
@@ -706,7 +733,12 @@ static struct ipahal_imm_cmd_obj
 		19},
 	[IPA_HW_v4_0][IPA_IMM_CMD_IP_V6_CT_INIT] = {
 		ipa_imm_cmd_construct_ip_v6_ct_init,
-		23}
+		23},
+
+	/* IPAv5 */
+	[IPA_HW_v5_0][IPA_IMM_CMD_IP_PACKET_INIT] = {
+		ipa_imm_cmd_construct_ip_packet_init_v_5_0,
+		16},
 };
 
 /*

+ 15 - 0
drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_i.h

@@ -351,6 +351,21 @@ struct ipa_imm_cmd_hw_ip_packet_init {
 	u64 rsv1:59;
 };
 
+
+/*
+ * struct ipa_imm_cmd_hw_ip_packet_init_v_5_0 - IP_PACKET_INIT command payload
+ *  in H/W format for IPA v5_0.
+ * Configuration for specific IP pkt. Shall be called prior to an IP pkt
+ *  data. Pkt will not go through IP pkt processing.
+ * @destination_pipe_index: Destination pipe index  (in case routing
+ *  is enabled, this field will overwrite the rt  rule)
+ * @rsvd: reserved
+ */
+struct ipa_imm_cmd_hw_ip_packet_init_v_5_0 {
+    u64 destination_pipe_index : 8;
+    u64 rsv1 : 56;
+};
+
 /*
  * struct ipa_imm_cmd_hw_register_write - REGISTER_WRITE command payload
  *  in H/W format.