Loading drivers/platform/msm/ipa/ipa_v3/ipa_hdr.c +2 −1 Original line number Diff line number Diff line Loading @@ -92,7 +92,8 @@ static int ipa3_hdr_proc_ctx_to_hw_format(struct ipa_mem_buffer *mem, entry->hdr->phys_base, hdr_base_addr, entry->hdr->offset_entry, entry->l2tp_params); entry->l2tp_params, ipa3_ctx->use_64_bit_dma_mask); if (ret) return ret; } Loading drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c +38 −18 Original line number Diff line number Diff line Loading @@ -1182,6 +1182,13 @@ static void ipahal_cp_hdr_to_hw_buff_v3(void *const base, u32 offset, memcpy(base + offset, hdr, hdr_len); } /* Header address update logic. */ #define IPAHAL_CP_PROC_CTX_HEADER_UPDATE(hdr_lsb, hdr_msb, addr) \ do { \ hdr_lsb = lower_32_bits(addr); \ hdr_msb = upper_32_bits(addr); \ } while (0) /* * ipahal_cp_proc_ctx_to_hw_buff_v3() - copy processing context to * base address and offset given. Loading @@ -1195,26 +1202,31 @@ static void ipahal_cp_hdr_to_hw_buff_v3(void *const base, u32 offset, * @hdr_base_addr: base address in table * @offset_entry: offset from hdr_base_addr in table * @l2tp_params: l2tp parameters * @is_64: Indicates whether header base address/dma base address is 64 bit. */ static int ipahal_cp_proc_ctx_to_hw_buff_v3(enum ipa_hdr_proc_type type, void *const base, u32 offset, u32 hdr_len, bool is_hdr_proc_ctx, dma_addr_t phys_base, u64 hdr_base_addr, struct ipa_hdr_offset_entry *offset_entry, struct ipa_l2tp_hdr_proc_ctx_params l2tp_params) struct ipa_l2tp_hdr_proc_ctx_params l2tp_params, bool is_64) { u64 hdr_addr; if (type == IPA_HDR_PROC_NONE) { struct ipa_hw_hdr_proc_ctx_add_hdr_seq *ctx; ctx = (struct ipa_hw_hdr_proc_ctx_add_hdr_seq *) (base + offset); ctx->hdr_add.tlv.type = IPA_PROC_CTX_TLV_TYPE_HDR_ADD; ctx->hdr_add.tlv.length = 1; ctx->hdr_add.tlv.length = is_64 ? 2 : 1; ctx->hdr_add.tlv.value = hdr_len; ctx->hdr_add.hdr_addr = is_hdr_proc_ctx ? phys_base : hdr_addr = is_hdr_proc_ctx ? phys_base : hdr_base_addr + offset_entry->offset; IPAHAL_DBG("header address 0x%llx\n", ctx->hdr_add.hdr_addr); hdr_addr); IPAHAL_CP_PROC_CTX_HEADER_UPDATE(ctx->hdr_add.hdr_addr, ctx->hdr_add.hdr_addr_hi, hdr_addr); ctx->end.type = IPA_PROC_CTX_TLV_TYPE_END; ctx->end.length = 0; ctx->end.value = 0; Loading @@ -1224,12 +1236,14 @@ static int ipahal_cp_proc_ctx_to_hw_buff_v3(enum ipa_hdr_proc_type type, ctx = (struct ipa_hw_hdr_proc_ctx_add_l2tp_hdr_cmd_seq *) (base + offset); ctx->hdr_add.tlv.type = IPA_PROC_CTX_TLV_TYPE_HDR_ADD; ctx->hdr_add.tlv.length = 1; ctx->hdr_add.tlv.length = is_64 ? 2 : 1; ctx->hdr_add.tlv.value = hdr_len; ctx->hdr_add.hdr_addr = is_hdr_proc_ctx ? phys_base : hdr_addr = is_hdr_proc_ctx ? phys_base : hdr_base_addr + offset_entry->offset; IPAHAL_DBG("header address 0x%llx\n", ctx->hdr_add.hdr_addr); hdr_addr); IPAHAL_CP_PROC_CTX_HEADER_UPDATE(ctx->hdr_add.hdr_addr, ctx->hdr_add.hdr_addr_hi, hdr_addr); ctx->l2tp_params.tlv.type = IPA_PROC_CTX_TLV_TYPE_PROC_CMD; ctx->l2tp_params.tlv.length = 1; ctx->l2tp_params.tlv.value = Loading @@ -1251,12 +1265,14 @@ static int ipahal_cp_proc_ctx_to_hw_buff_v3(enum ipa_hdr_proc_type type, ctx = (struct ipa_hw_hdr_proc_ctx_remove_l2tp_hdr_cmd_seq *) (base + offset); ctx->hdr_add.tlv.type = IPA_PROC_CTX_TLV_TYPE_HDR_ADD; ctx->hdr_add.tlv.length = 1; ctx->hdr_add.tlv.length = is_64 ? 2 : 1; ctx->hdr_add.tlv.value = hdr_len; ctx->hdr_add.hdr_addr = is_hdr_proc_ctx ? phys_base : hdr_addr = is_hdr_proc_ctx ? phys_base : hdr_base_addr + offset_entry->offset; IPAHAL_DBG("header address 0x%llx length %d\n", ctx->hdr_add.hdr_addr, ctx->hdr_add.tlv.value); hdr_addr, ctx->hdr_add.tlv.value); IPAHAL_CP_PROC_CTX_HEADER_UPDATE(ctx->hdr_add.hdr_addr, ctx->hdr_add.hdr_addr_hi, hdr_addr); ctx->l2tp_params.tlv.type = IPA_PROC_CTX_TLV_TYPE_PROC_CMD; ctx->l2tp_params.tlv.length = 1; ctx->l2tp_params.tlv.value = Loading Loading @@ -1287,12 +1303,14 @@ static int ipahal_cp_proc_ctx_to_hw_buff_v3(enum ipa_hdr_proc_type type, ctx = (struct ipa_hw_hdr_proc_ctx_add_hdr_cmd_seq *) (base + offset); ctx->hdr_add.tlv.type = IPA_PROC_CTX_TLV_TYPE_HDR_ADD; ctx->hdr_add.tlv.length = 1; ctx->hdr_add.tlv.length = is_64 ? 2 : 1; ctx->hdr_add.tlv.value = hdr_len; ctx->hdr_add.hdr_addr = is_hdr_proc_ctx ? phys_base : hdr_addr = is_hdr_proc_ctx ? phys_base : hdr_base_addr + offset_entry->offset; IPAHAL_DBG("header address 0x%llx\n", ctx->hdr_add.hdr_addr); hdr_addr); IPAHAL_CP_PROC_CTX_HEADER_UPDATE(ctx->hdr_add.hdr_addr, ctx->hdr_add.hdr_addr_hi, hdr_addr); ctx->cmd.type = IPA_PROC_CTX_TLV_TYPE_PROC_CMD; ctx->cmd.length = 0; switch (type) { Loading Loading @@ -1350,7 +1368,8 @@ struct ipahal_hdr_funcs { bool is_hdr_proc_ctx, dma_addr_t phys_base, u64 hdr_base_addr, struct ipa_hdr_offset_entry *offset_entry, struct ipa_l2tp_hdr_proc_ctx_params l2tp_params); struct ipa_l2tp_hdr_proc_ctx_params l2tp_params, bool is_64); int (*ipahal_get_proc_ctx_needed_len)(enum ipa_hdr_proc_type type); }; Loading Loading @@ -1416,17 +1435,18 @@ void ipahal_cp_hdr_to_hw_buff(void *base, u32 offset, u8 *const hdr, * @hdr_base_addr: base address in table * @offset_entry: offset from hdr_base_addr in table * @l2tp_params: l2tp parameters * @is_64: Indicates whether header base address/dma base address is 64 bit. */ int ipahal_cp_proc_ctx_to_hw_buff(enum ipa_hdr_proc_type type, void *const base, u32 offset, u32 hdr_len, bool is_hdr_proc_ctx, dma_addr_t phys_base, u64 hdr_base_addr, struct ipa_hdr_offset_entry *offset_entry, struct ipa_l2tp_hdr_proc_ctx_params l2tp_params) struct ipa_l2tp_hdr_proc_ctx_params l2tp_params, bool is_64) { IPAHAL_DBG( "type %d, base %pK, offset %d, hdr_len %d, is_hdr_proc_ctx %d, hdr_base_addr %llu, offset_entry %pK\n" "type %d, base %pK, offset %d, hdr_len %d, is_hdr_proc_ctx %d, hdr_base_addr %llu, offset_entry %pK, bool %d\n" , type, base, offset, hdr_len, is_hdr_proc_ctx, hdr_base_addr, offset_entry); hdr_base_addr, offset_entry, is_64); if (!base || !hdr_len || Loading @@ -1442,7 +1462,7 @@ int ipahal_cp_proc_ctx_to_hw_buff(enum ipa_hdr_proc_type type, return hdr_funcs.ipahal_cp_proc_ctx_to_hw_buff(type, base, offset, hdr_len, is_hdr_proc_ctx, phys_base, hdr_base_addr, offset_entry, l2tp_params); hdr_base_addr, offset_entry, l2tp_params, is_64); } /* Loading drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.h +2 −1 Original line number Diff line number Diff line Loading @@ -630,13 +630,14 @@ void ipahal_cp_hdr_to_hw_buff(void *base, u32 offset, u8 *hdr, u32 hdr_len); * @hdr_base_addr: base address in table * @offset_entry: offset from hdr_base_addr in table * @l2tp_params: l2tp parameters * @is_64: Indicates whether header base address/dma base address is 64 bit. */ int ipahal_cp_proc_ctx_to_hw_buff(enum ipa_hdr_proc_type type, void *base, u32 offset, u32 hdr_len, bool is_hdr_proc_ctx, dma_addr_t phys_base, u64 hdr_base_addr, struct ipa_hdr_offset_entry *offset_entry, struct ipa_l2tp_hdr_proc_ctx_params l2tp_params); struct ipa_l2tp_hdr_proc_ctx_params l2tp_params, bool is_64); /* * ipahal_get_proc_ctx_needed_len() - calculates the needed length for addition Loading drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_i.h +2 −1 Original line number Diff line number Diff line Loading @@ -648,7 +648,8 @@ struct ipa_hw_hdr_proc_ctx_tlv { */ struct ipa_hw_hdr_proc_ctx_hdr_add { struct ipa_hw_hdr_proc_ctx_tlv tlv; u64 hdr_addr; u32 hdr_addr; u32 hdr_addr_hi; }; /** Loading Loading
drivers/platform/msm/ipa/ipa_v3/ipa_hdr.c +2 −1 Original line number Diff line number Diff line Loading @@ -92,7 +92,8 @@ static int ipa3_hdr_proc_ctx_to_hw_format(struct ipa_mem_buffer *mem, entry->hdr->phys_base, hdr_base_addr, entry->hdr->offset_entry, entry->l2tp_params); entry->l2tp_params, ipa3_ctx->use_64_bit_dma_mask); if (ret) return ret; } Loading
drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c +38 −18 Original line number Diff line number Diff line Loading @@ -1182,6 +1182,13 @@ static void ipahal_cp_hdr_to_hw_buff_v3(void *const base, u32 offset, memcpy(base + offset, hdr, hdr_len); } /* Header address update logic. */ #define IPAHAL_CP_PROC_CTX_HEADER_UPDATE(hdr_lsb, hdr_msb, addr) \ do { \ hdr_lsb = lower_32_bits(addr); \ hdr_msb = upper_32_bits(addr); \ } while (0) /* * ipahal_cp_proc_ctx_to_hw_buff_v3() - copy processing context to * base address and offset given. Loading @@ -1195,26 +1202,31 @@ static void ipahal_cp_hdr_to_hw_buff_v3(void *const base, u32 offset, * @hdr_base_addr: base address in table * @offset_entry: offset from hdr_base_addr in table * @l2tp_params: l2tp parameters * @is_64: Indicates whether header base address/dma base address is 64 bit. */ static int ipahal_cp_proc_ctx_to_hw_buff_v3(enum ipa_hdr_proc_type type, void *const base, u32 offset, u32 hdr_len, bool is_hdr_proc_ctx, dma_addr_t phys_base, u64 hdr_base_addr, struct ipa_hdr_offset_entry *offset_entry, struct ipa_l2tp_hdr_proc_ctx_params l2tp_params) struct ipa_l2tp_hdr_proc_ctx_params l2tp_params, bool is_64) { u64 hdr_addr; if (type == IPA_HDR_PROC_NONE) { struct ipa_hw_hdr_proc_ctx_add_hdr_seq *ctx; ctx = (struct ipa_hw_hdr_proc_ctx_add_hdr_seq *) (base + offset); ctx->hdr_add.tlv.type = IPA_PROC_CTX_TLV_TYPE_HDR_ADD; ctx->hdr_add.tlv.length = 1; ctx->hdr_add.tlv.length = is_64 ? 2 : 1; ctx->hdr_add.tlv.value = hdr_len; ctx->hdr_add.hdr_addr = is_hdr_proc_ctx ? phys_base : hdr_addr = is_hdr_proc_ctx ? phys_base : hdr_base_addr + offset_entry->offset; IPAHAL_DBG("header address 0x%llx\n", ctx->hdr_add.hdr_addr); hdr_addr); IPAHAL_CP_PROC_CTX_HEADER_UPDATE(ctx->hdr_add.hdr_addr, ctx->hdr_add.hdr_addr_hi, hdr_addr); ctx->end.type = IPA_PROC_CTX_TLV_TYPE_END; ctx->end.length = 0; ctx->end.value = 0; Loading @@ -1224,12 +1236,14 @@ static int ipahal_cp_proc_ctx_to_hw_buff_v3(enum ipa_hdr_proc_type type, ctx = (struct ipa_hw_hdr_proc_ctx_add_l2tp_hdr_cmd_seq *) (base + offset); ctx->hdr_add.tlv.type = IPA_PROC_CTX_TLV_TYPE_HDR_ADD; ctx->hdr_add.tlv.length = 1; ctx->hdr_add.tlv.length = is_64 ? 2 : 1; ctx->hdr_add.tlv.value = hdr_len; ctx->hdr_add.hdr_addr = is_hdr_proc_ctx ? phys_base : hdr_addr = is_hdr_proc_ctx ? phys_base : hdr_base_addr + offset_entry->offset; IPAHAL_DBG("header address 0x%llx\n", ctx->hdr_add.hdr_addr); hdr_addr); IPAHAL_CP_PROC_CTX_HEADER_UPDATE(ctx->hdr_add.hdr_addr, ctx->hdr_add.hdr_addr_hi, hdr_addr); ctx->l2tp_params.tlv.type = IPA_PROC_CTX_TLV_TYPE_PROC_CMD; ctx->l2tp_params.tlv.length = 1; ctx->l2tp_params.tlv.value = Loading @@ -1251,12 +1265,14 @@ static int ipahal_cp_proc_ctx_to_hw_buff_v3(enum ipa_hdr_proc_type type, ctx = (struct ipa_hw_hdr_proc_ctx_remove_l2tp_hdr_cmd_seq *) (base + offset); ctx->hdr_add.tlv.type = IPA_PROC_CTX_TLV_TYPE_HDR_ADD; ctx->hdr_add.tlv.length = 1; ctx->hdr_add.tlv.length = is_64 ? 2 : 1; ctx->hdr_add.tlv.value = hdr_len; ctx->hdr_add.hdr_addr = is_hdr_proc_ctx ? phys_base : hdr_addr = is_hdr_proc_ctx ? phys_base : hdr_base_addr + offset_entry->offset; IPAHAL_DBG("header address 0x%llx length %d\n", ctx->hdr_add.hdr_addr, ctx->hdr_add.tlv.value); hdr_addr, ctx->hdr_add.tlv.value); IPAHAL_CP_PROC_CTX_HEADER_UPDATE(ctx->hdr_add.hdr_addr, ctx->hdr_add.hdr_addr_hi, hdr_addr); ctx->l2tp_params.tlv.type = IPA_PROC_CTX_TLV_TYPE_PROC_CMD; ctx->l2tp_params.tlv.length = 1; ctx->l2tp_params.tlv.value = Loading Loading @@ -1287,12 +1303,14 @@ static int ipahal_cp_proc_ctx_to_hw_buff_v3(enum ipa_hdr_proc_type type, ctx = (struct ipa_hw_hdr_proc_ctx_add_hdr_cmd_seq *) (base + offset); ctx->hdr_add.tlv.type = IPA_PROC_CTX_TLV_TYPE_HDR_ADD; ctx->hdr_add.tlv.length = 1; ctx->hdr_add.tlv.length = is_64 ? 2 : 1; ctx->hdr_add.tlv.value = hdr_len; ctx->hdr_add.hdr_addr = is_hdr_proc_ctx ? phys_base : hdr_addr = is_hdr_proc_ctx ? phys_base : hdr_base_addr + offset_entry->offset; IPAHAL_DBG("header address 0x%llx\n", ctx->hdr_add.hdr_addr); hdr_addr); IPAHAL_CP_PROC_CTX_HEADER_UPDATE(ctx->hdr_add.hdr_addr, ctx->hdr_add.hdr_addr_hi, hdr_addr); ctx->cmd.type = IPA_PROC_CTX_TLV_TYPE_PROC_CMD; ctx->cmd.length = 0; switch (type) { Loading Loading @@ -1350,7 +1368,8 @@ struct ipahal_hdr_funcs { bool is_hdr_proc_ctx, dma_addr_t phys_base, u64 hdr_base_addr, struct ipa_hdr_offset_entry *offset_entry, struct ipa_l2tp_hdr_proc_ctx_params l2tp_params); struct ipa_l2tp_hdr_proc_ctx_params l2tp_params, bool is_64); int (*ipahal_get_proc_ctx_needed_len)(enum ipa_hdr_proc_type type); }; Loading Loading @@ -1416,17 +1435,18 @@ void ipahal_cp_hdr_to_hw_buff(void *base, u32 offset, u8 *const hdr, * @hdr_base_addr: base address in table * @offset_entry: offset from hdr_base_addr in table * @l2tp_params: l2tp parameters * @is_64: Indicates whether header base address/dma base address is 64 bit. */ int ipahal_cp_proc_ctx_to_hw_buff(enum ipa_hdr_proc_type type, void *const base, u32 offset, u32 hdr_len, bool is_hdr_proc_ctx, dma_addr_t phys_base, u64 hdr_base_addr, struct ipa_hdr_offset_entry *offset_entry, struct ipa_l2tp_hdr_proc_ctx_params l2tp_params) struct ipa_l2tp_hdr_proc_ctx_params l2tp_params, bool is_64) { IPAHAL_DBG( "type %d, base %pK, offset %d, hdr_len %d, is_hdr_proc_ctx %d, hdr_base_addr %llu, offset_entry %pK\n" "type %d, base %pK, offset %d, hdr_len %d, is_hdr_proc_ctx %d, hdr_base_addr %llu, offset_entry %pK, bool %d\n" , type, base, offset, hdr_len, is_hdr_proc_ctx, hdr_base_addr, offset_entry); hdr_base_addr, offset_entry, is_64); if (!base || !hdr_len || Loading @@ -1442,7 +1462,7 @@ int ipahal_cp_proc_ctx_to_hw_buff(enum ipa_hdr_proc_type type, return hdr_funcs.ipahal_cp_proc_ctx_to_hw_buff(type, base, offset, hdr_len, is_hdr_proc_ctx, phys_base, hdr_base_addr, offset_entry, l2tp_params); hdr_base_addr, offset_entry, l2tp_params, is_64); } /* Loading
drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.h +2 −1 Original line number Diff line number Diff line Loading @@ -630,13 +630,14 @@ void ipahal_cp_hdr_to_hw_buff(void *base, u32 offset, u8 *hdr, u32 hdr_len); * @hdr_base_addr: base address in table * @offset_entry: offset from hdr_base_addr in table * @l2tp_params: l2tp parameters * @is_64: Indicates whether header base address/dma base address is 64 bit. */ int ipahal_cp_proc_ctx_to_hw_buff(enum ipa_hdr_proc_type type, void *base, u32 offset, u32 hdr_len, bool is_hdr_proc_ctx, dma_addr_t phys_base, u64 hdr_base_addr, struct ipa_hdr_offset_entry *offset_entry, struct ipa_l2tp_hdr_proc_ctx_params l2tp_params); struct ipa_l2tp_hdr_proc_ctx_params l2tp_params, bool is_64); /* * ipahal_get_proc_ctx_needed_len() - calculates the needed length for addition Loading
drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_i.h +2 −1 Original line number Diff line number Diff line Loading @@ -648,7 +648,8 @@ struct ipa_hw_hdr_proc_ctx_tlv { */ struct ipa_hw_hdr_proc_ctx_hdr_add { struct ipa_hw_hdr_proc_ctx_tlv tlv; u64 hdr_addr; u32 hdr_addr; u32 hdr_addr_hi; }; /** Loading