Hi Kamil, I found an issue while testing this patch on Exynos4. On Wed, Oct 24, 2012 at 7:45 PM, Kamil Debski <k.debski@xxxxxxxxxxx> wrote: > Change internal buffer allocation from vb2 memory ops call to direct > calls of dma_alloc_coherent. This change shortens the code and makes it > much more readable. > > Signed-off-by: Kamil Debski <k.debski@xxxxxxxxxxx> > Signed-off-by: Kyungmin Park <kyungmin.park@xxxxxxxxxxx> > --- > drivers/media/platform/s5p-mfc/s5p_mfc_common.h | 20 +-- > drivers/media/platform/s5p-mfc/s5p_mfc_opr.c | 30 ++++ > drivers/media/platform/s5p-mfc/s5p_mfc_opr.h | 5 + > drivers/media/platform/s5p-mfc/s5p_mfc_opr_v5.c | 198 ++++++++--------------- > drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c | 121 +++++--------- > 5 files changed, 144 insertions(+), 230 deletions(-) > [snip] > /* Allocate memory for instance data buffer */ > @@ -233,58 +204,38 @@ int s5p_mfc_alloc_instance_buffer_v5(struct s5p_mfc_ctx *ctx) > { > struct s5p_mfc_dev *dev = ctx->dev; > struct s5p_mfc_buf_size_v5 *buf_size = dev->variant->buf_size->priv; > + int ret; > > if (ctx->codec_mode == S5P_MFC_CODEC_H264_DEC || > ctx->codec_mode == S5P_MFC_CODEC_H264_ENC) > ctx->ctx.size = buf_size->h264_ctx; > else > ctx->ctx.size = buf_size->non_h264_ctx; > - ctx->ctx.alloc = vb2_dma_contig_memops.alloc( > - dev->alloc_ctx[MFC_BANK1_ALLOC_CTX], ctx->ctx.size); > - if (IS_ERR(ctx->ctx.alloc)) { > - mfc_err("Allocating context buffer failed\n"); > - ctx->ctx.alloc = NULL; > - return -ENOMEM; > - } > - ctx->ctx.dma = s5p_mfc_mem_cookie( > - dev->alloc_ctx[MFC_BANK1_ALLOC_CTX], ctx->ctx.alloc); > - BUG_ON(ctx->ctx.dma & ((1 << MFC_BANK1_ALIGN_ORDER) - 1)); > - ctx->ctx.ofs = OFFSETA(ctx->ctx.dma); > - ctx->ctx.virt = vb2_dma_contig_memops.vaddr(ctx->ctx.alloc); > - if (!ctx->ctx.virt) { > - mfc_err("Remapping instance buffer failed\n"); > - vb2_dma_contig_memops.put(ctx->ctx.alloc); > - ctx->ctx.alloc = NULL; > - ctx->ctx.ofs = 0; > - ctx->ctx.dma = 0; > - return -ENOMEM; > + > + ret = s5p_mfc_alloc_priv_buf(dev->mem_dev_l, &ctx->ctx); > + if (ret) { > + mfc_err("Failed to allocate instance buffer\n"); > + return ret; > } > + ctx->ctx.ofs = ctx->ctx.dma - dev->bank1; > + Here the original code does ctx->ctx.ofs = OFFSETA(ctx->ctx.dma); The macro OFFSETA also does a right shift of MFC_OFFSET_SHIFT. Without this change, the decoding is not working on Exynos4. > /* Zero content of the allocated memory */ > memset(ctx->ctx.virt, 0, ctx->ctx.size); > wmb(); > All these patches are working well on Exynos5. Regards Arun -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html