Module Name: src
Committed By: macallan
Date: Tue Sep 23 10:52:21 UTC 2014
Modified Files:
src/sys/arch/evbarm/rpi: vcprop.h
Log Message:
add VC memory management goop
To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/evbarm/rpi/vcprop.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/evbarm/rpi/vcprop.h
diff -u src/sys/arch/evbarm/rpi/vcprop.h:1.10 src/sys/arch/evbarm/rpi/vcprop.h:1.11
--- src/sys/arch/evbarm/rpi/vcprop.h:1.10 Tue Sep 23 09:18:33 2014
+++ src/sys/arch/evbarm/rpi/vcprop.h Tue Sep 23 10:52:21 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: vcprop.h,v 1.10 2014/09/23 09:18:33 macallan Exp $ */
+/* $NetBSD: vcprop.h,v 1.11 2014/09/23 10:52:21 macallan Exp $ */
/*-
* Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -88,6 +88,11 @@ struct vcprop_tag {
#define VCPROPTAG_GET_EDID_BLOCK 0x00030020
+#define VCPROPTAG_ALLOCMEM 0x0003000c
+#define VCPROPTAG_LOCKMEM 0x0003000d
+#define VCPROPTAG_UNLOCKMEM 0x0003000e
+#define VCPROPTAG_RELEASEMEM 0x0003000f
+
#define VCPROPTAG_SET_CURSOR_INFO 0x00008011
#define VCPROPTAG_SET_CURSOR_STATE 0x00008010
@@ -283,7 +288,7 @@ struct vcprop_tag_cursorinfo {
uint32_t width;
uint32_t height;
uint32_t __pad; /* unused */
- uint32_t pixels;
+ uint32_t pixels; /* bus address in VC memory */
uint32_t hotspot_x;
uint32_t hotspot_y;
};
@@ -296,6 +301,31 @@ struct vcprop_tag_cursorstate {
uint32_t flags; /* 0 - display coord. 1 - fb coord. */
};
+struct vcprop_tag_allocmem {
+ struct vcprop_tag tag;
+ uint32_t size; /* handle returned here */
+ uint32_t align;
+ uint32_t flags;
+/*
+ * flag definitions from
+ * https://github.com/raspberrypi/firmware/wiki/Mailbox-property-interface
+ */
+#define MEM_FLAG_DISCARDABLE (1 << 0) /* can be resized to 0 at any time. Use for cached data */
+#define MEM_FLAG_NORMAL (0 << 2) /* normal allocating alias. Don't use from ARM */
+#define MEM_FLAG_DIRECT (1 << 2) /* 0xC alias uncached */
+#define MEM_FLAG_COHERENT (2 << 2) /* 0x8 alias. Non-allocating in L2 but coherent */
+#define MEM_FLAG_L1_NONALLOCATING (MEM_FLAG_DIRECT | MEM_FLAG_COHERENT) /* Allocating in L2 */
+#define MEM_FLAG_ZERO (1 << 4) /* initialise buffer to all zeros */
+#define MEM_FLAG_NO_INIT (1 << 5) /* don't initialise (default is initialise to all ones */
+#define MEM_FLAG_HINT_PERMALOCK (1 << 6) /* Likely to be locked for long periods of time. */
+};
+
+/* also for unlock and release */
+struct vcprop_tag_lockmem {
+ struct vcprop_tag tag;
+ uint32_t handle; /* bus address returned here */
+};
+
struct vcprop_buffer_hdr {
uint32_t vpb_len;
uint32_t vpb_rcode;