forked from Minki/linux
4faeaf9c0f
Look up of buffers in s5p_mfc_handle_frame_new, s5p_mfc_handle_frame_copy_time functions is not working properly for DMA addresses above 2 GiB. As a result flags and timestamp of returned buffers are not set correctly and it breaks operation of GStreamer/OMX plugins which rely on the CAPTURE buffer queue flags. Due to improper return type of the get_dec_y_adr, get_dspl_y_adr callbacks and sign bit extension these callbacks return incorrect address values, e.g. 0xfffffffffefc0000 instead of 0x00000000fefc0000. Then the statement: "if (vb2_dma_contig_plane_dma_addr(&dst_buf->b->vb2_buf, 0) == dec_y_addr)" is always false, which breaks looking up capture queue buffers. To ensure proper matching by address u32 type is used for the DMA addresses. This should work on all related SoCs, since the MFC DMA address width is not larger than 32-bit. Changes done in this patch are minimal as there is a larger patch series pending refactoring the whole driver. Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> |
||
---|---|---|
.. | ||
Makefile | ||
regs-mfc-v6.h | ||
regs-mfc-v7.h | ||
regs-mfc-v8.h | ||
regs-mfc-v10.h | ||
regs-mfc.h | ||
s5p_mfc_cmd_v5.c | ||
s5p_mfc_cmd_v5.h | ||
s5p_mfc_cmd_v6.c | ||
s5p_mfc_cmd_v6.h | ||
s5p_mfc_cmd.c | ||
s5p_mfc_cmd.h | ||
s5p_mfc_common.h | ||
s5p_mfc_ctrl.c | ||
s5p_mfc_ctrl.h | ||
s5p_mfc_debug.h | ||
s5p_mfc_dec.c | ||
s5p_mfc_dec.h | ||
s5p_mfc_enc.c | ||
s5p_mfc_enc.h | ||
s5p_mfc_intr.c | ||
s5p_mfc_intr.h | ||
s5p_mfc_iommu.h | ||
s5p_mfc_opr_v5.c | ||
s5p_mfc_opr_v5.h | ||
s5p_mfc_opr_v6.c | ||
s5p_mfc_opr_v6.h | ||
s5p_mfc_opr.c | ||
s5p_mfc_opr.h | ||
s5p_mfc_pm.c | ||
s5p_mfc_pm.h | ||
s5p_mfc.c |