summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell King <rmk@arm.linux.org.uk>2012-11-11 10:14:08 +0000
committerRussell King <rmk@arm.linux.org.uk>2012-11-11 10:19:07 +0000
commit801a0d599a227430a9b2b5fd48e1602368d4736f (patch)
tree1c16ed76c347a94fcafb86e1bb84aae7c3e75125
parente2bea8f954d35b195c7987e3dbab18e4538201f8 (diff)
Convert to use shmem for shared software context
-rw-r--r--debian/changelog6
-rw-r--r--uio_vmeta.h8
-rw-r--r--vmeta_lib.c13
3 files changed, 22 insertions, 5 deletions
diff --git a/debian/changelog b/debian/changelog
index 80dad5f..28b8a8c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+libvmeta (1.0ubuntu2.rmk3) precise; urgency=low
+
+ * update for shmem backed shared software context
+
+ -- Russell King <rmk@arm.linux.org.uk> Sun, 11 Oct 2012 10:18:01 +0100
+
libvmeta (1.0ubuntu2.rmk2) precise; urgency=low
* update for aligned malloc in libbmm
diff --git a/uio_vmeta.h b/uio_vmeta.h
index 6f262a7..08ebaa1 100644
--- a/uio_vmeta.h
+++ b/uio_vmeta.h
@@ -55,7 +55,12 @@ struct vmeta_info {
struct {
uint32_t phys;
uint32_t size;
- } map[3];
+ } map[2];
+};
+
+struct vmeta_mmap {
+ uint64_t addr;
+ uint32_t size;
};
#define VMETA_STATUS_BIT_USED 0
@@ -87,5 +92,6 @@ struct vmeta_info {
#define VMETA_CMD_FORCE_INI _IO(IOP_MAGIC, 19)
#define VMETA_CMD_GET_USER_NUM _IOR(IOP_MAGIC, 20, unsigned)
#define VMETA_CMD_GET_INFO _IOR(IOP_MAGIC, 21, struct vmeta_info)
+#define VMETA_CMD_MAP_SW_CONTEXT _IOWR(IOP_MAGIC, 22, struct vmeta_mmap)
#endif /* __UIO_VMETA_H */
diff --git a/vmeta_lib.c b/vmeta_lib.c
index 9fccd3c..01ae124 100644
--- a/vmeta_lib.c
+++ b/vmeta_lib.c
@@ -49,7 +49,6 @@
#define MAP_IO_MEM 0
#define MAP_IO_HW_CONTEXT 1
-#define MAP_IO_VMETA_OBJ 2
#define VMETA_KERN_MIN_VER 104
#define VMETA_USER_VER "build-004"
@@ -520,6 +519,7 @@ static void dbg_printf(UNSG32 dbglevel, const char* format, ...)
SIGN32 vdec_os_api_get_hw_obj_addr(UNSG32* vaddr,UNSG32 size)
{
vdec_os_driver_cb_t *vdec = vdec_iface;
+ struct vmeta_mmap arg;
void *addr;
int ret;
@@ -529,12 +529,17 @@ SIGN32 vdec_os_api_get_hw_obj_addr(UNSG32* vaddr,UNSG32 size)
return VDEC_OS_DRIVER_OK;
}
- ret = vmeta_get_map(vdec, MAP_IO_VMETA_OBJ, size, &addr, NULL);
+ memset(&arg, 0, sizeof(arg));
+ arg.size = size;
+
+ ret = ioctl(vdec->fd, VMETA_CMD_MAP_SW_CONTEXT, &arg);
if (ret < 0)
return ret;
- dbg_printf(VDEC_DEBUG_MEM, "MAP_IO_VMETA_OBJ virtual 0x%p size=%d\n",
- addr, size);
+ addr = (void *)(uintptr_t)arg.addr;
+
+ dbg_printf(VDEC_DEBUG_MEM, "%s: virtual %p size=%d\n",
+ __FUNCTION__, addr, size);
*vaddr = (UNSG32)addr;
vdec->vdec_obj_va = addr;