libdrm: bbappend to patch xf86drm.h with arm support

Add libdrm bbappend to patch xf86drm.h with arm support
This fixes hangs from stopping vivante sample applications run with X11
This includes the fix for if "lock" is 0, the macro should return failure.

Signed-off-by: Evan Kotara <evan.kotara@freescale.com>
This commit is contained in:
Evan Kotara 2013-08-16 13:46:26 -05:00
parent 7b33514d31
commit 2aef108da6
2 changed files with 38 additions and 0 deletions

View File

@ -0,0 +1,32 @@
Add ARM support into xf86arm.h. This provides support for Xorg interface.
Without this the vivante samples will hang during close requiring a reboot
Signed-off-by: Lauren Post <lauren.post@freescale.com>
Signed-off-by: Evan Kotara <evan.kotara@freescale.com>
diff --git a/xf86drm.h b/xf86drm.h
--- a/xf86drm.h
+++ b/xf86drm.h
@@ -455,6 +455,22 @@ do { register unsigned int __old __asm("o0"); \
: "cr0", "memory"); \
} while (0)
+#elif defined(__arm__)
+ #undef DRM_DEV_MODE
+ #define DRM_DEV_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
+
+ #define DRM_CAS(lock,old,new,__ret) \
+ do { \
+ __asm__ __volatile__ ( \
+ "1: ldrex %0, [%1]\n" \
+ " teq %0, %2\n" \
+ " strexeq %0, %3, [%1]\n" \
+ " movne %0, #1\n" \
+ : "=&r" (__ret) \
+ : "r" (lock), "r" (old), "r" (new) \
+ : "cc","memory"); \
+ } while (0)
+
#endif /* architecture */
#endif /* __GNUC__ >= 2 */

View File

@ -0,0 +1,6 @@
# Freescale imx update xf86drm.h
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
PACKAGE_ARCH_mx6 = "${MACHINE_ARCH}"
SRC_URI_append_mx6 = "file://drm-update-arm.patch"