Commit f2af493f authored by Gary Bisson's avatar Gary Bisson Committed by Thomas Petazzoni
Browse files

imx-vpu: bump version to 5.4.27

- imx-vpu version changed to internal version
- VPU share memory file open fixes
- Upgrade ion usage
- Remove obey-variables patch -now included in release

This patch is based on the Yocto equivalent:
https://github.com/Freescale/meta-fsl-arm/commit/db343da3e4eb2afa6a72f7526751bb8d8ba287e1

The IOGetVirtMem return value patch has now been included into the upstream
package.

This package has been implicitely tested through gstreamer as the plugins
rely on it for vpu decoding:
 # gst-launch-0.10 playbin uri=file:///root/tears_of_steel_1080p.webm
 # gst-launch-1.0 playbin uri=file:///root/tears_of_steel_1080p.webm


 # gst-launch-1.0 filesrc location=/root/tears_of_steel_1080p.webm ! \
   matroskademux ! imxvpudec ! imxipuvideosink

Signed-off-by: default avatarGary Bisson <gary.bisson@boundarydevices.com>
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
parent cf448c4f
Loading
Loading
Loading
Loading
+0 −32
Original line number Diff line number Diff line
[PATCH] vpu-io: fix IOSystemInit failure

When using a kernel where user/kernel split is 3G/1G, the address
returned by IOGetVirtMem() can appear to be a negative int.

IOSystemInit() incorrectly checks the return value of IOGetVirtMem().
IOGetVirtMem() returns -1 on error (and not MAP_FAILED, nor any other
negative value.)

Fix that by correctly checking against -1 (and not MAP_FAILED!)

Signed-off-by: Gary Bisson <bisson.gary@gmail.com>
[yann.morin.1998@free.fr: expand the commit log]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 vpu/vpu_io.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/vpu/vpu_io.c b/vpu/vpu_io.c
index 8cbb571..14759da 100644
--- a/vpu/vpu_io.c
+++ b/vpu/vpu_io.c
@@ -265,7 +265,7 @@ int IOSystemInit(void *callback)
 		goto err;
 	}
 
-	if (IOGetVirtMem(&bit_work_addr) <= 0)
+	if (IOGetVirtMem(&bit_work_addr) == -1)
 		goto err;
 #endif
 	UnlockVpu(vpu_semap);
+0 −59
Original line number Diff line number Diff line
[PATCH] vpu-lib: fix IOGetVirtMem return value checks

When using a kernel where user/kernel split is 3G/1G, the address
returned by IOGetVirtMem() can appear to be a negative int.

IOSystemInit() incorrectly checks the return value of IOGetVirtMem().
IOGetVirtMem() returns -1 on error (and not MAP_FAILED, nor any other
negative value.)

Fix that by correctly checking against -1 (and not MAP_FAILED!)

Signed-off-by: Gary Bisson <bisson.gary@gmail.com>
[yann.morin.1998@free.fr: expand the commit log]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 vpu/vpu_lib.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/vpu/vpu_lib.c b/vpu/vpu_lib.c
index 1fb731b..7a7f42d 100644
--- a/vpu/vpu_lib.c
+++ b/vpu/vpu_lib.c
@@ -1764,7 +1764,7 @@ RetCode vpu_EncStartOneFrame(EncHandle handle, EncParam * param)
 				err_msg("Unable to obtain physical mem\n");
 				return RETCODE_FAILURE;
 			}
-			if (IOGetVirtMem(&pEncInfo->picParaBaseMem) <= 0) {
+			if (IOGetVirtMem(&pEncInfo->picParaBaseMem) == -1) {
 				IOFreePhyMem(&pEncInfo->picParaBaseMem);
 				pEncInfo->picParaBaseMem.phy_addr = 0;
 				err_msg("Unable to obtain virtual mem\n");
@@ -2982,7 +2982,7 @@ RetCode vpu_DecGetInitialInfo(DecHandle handle, DecInitialInfo * info)
 			UnlockVpu(vpu_semap);
 			return RETCODE_FAILURE;
 		}
-		if (IOGetVirtMem(&pDecInfo->userDataBufMem) <= 0) {
+		if (IOGetVirtMem(&pDecInfo->userDataBufMem) == -1) {
 			IOFreePhyMem(&pDecInfo->userDataBufMem);
 			pDecInfo->userDataBufMem.phy_addr = 0;
 			err_msg("Unable to obtain virtual mem\n");
@@ -4017,7 +4017,7 @@ RetCode vpu_DecStartOneFrame(DecHandle handle, DecParam * param)
 				UnlockVpu(vpu_semap);
 				return RETCODE_FAILURE;
 			}
-			if (IOGetVirtMem(&pDecInfo->picParaBaseMem) <= 0) {
+			if (IOGetVirtMem(&pDecInfo->picParaBaseMem) == -1) {
 				IOFreePhyMem(&pDecInfo->picParaBaseMem);
 				pDecInfo->picParaBaseMem.phy_addr = 0;
 				err_msg("Unable to obtain virtual mem\n");
@@ -4057,7 +4057,7 @@ RetCode vpu_DecStartOneFrame(DecHandle handle, DecParam * param)
 			UnlockVpu(vpu_semap);
 			return RETCODE_FAILURE;
 		}
-		if (IOGetVirtMem(&pDecInfo->userDataBufMem) <= 0) {
+		if (IOGetVirtMem(&pDecInfo->userDataBufMem) == -1) {
 			IOFreePhyMem(&pDecInfo->userDataBufMem);
 			pDecInfo->userDataBufMem.phy_addr = 0;
 			err_msg("Unable to obtain virtual mem\n");
+1 −1
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@
#
################################################################################

IMX_VPU_VERSION = $(FREESCALE_IMX_VERSION)
IMX_VPU_VERSION = 5.4.27
IMX_VPU_SITE = $(FREESCALE_IMX_SITE)
IMX_VPU_SOURCE = imx-vpu-$(IMX_VPU_VERSION).bin