+int prop_setres(int xsz, int ysz)
+{
+ uint32_t *pb = propbuf;
+
+ *pb++ = 32;
+ *pb++ = 0;
+ *pb++ = PROP_TAG_PHYSRES | PROP_TAG_SET;
+ *pb++ = 8; /* data size */
+ *pb++ = PROP_CODE_REQ;
+ *pb++ = xsz;
+ *pb++ = ysz;
+ *pb++ = PROP_TAG_END;
+
+ return send_prop(propbuf);
+}
+
+int prop_getres(int *xsz, int *ysz)
+{
+ uint32_t *pb = propbuf;
+ uint32_t *data;
+
+ *pb++ = 32;
+ *pb++ = 0;
+ *pb++ = PROP_TAG_PHYSRES;
+ *pb++ = 8;
+ *pb++ = PROP_CODE_REQ;
+ data = pb;
+ *pb++ = 0;
+ *pb++ = 0;
+ *pb++ = PROP_TAG_END;
+
+ if(send_prop(propbuf) == -1) {
+ return -1;
+ }
+ *xsz = data[0];
+ *ysz = data[1];
+ return 0;
+}
+
+int prop_setvres(int xsz, int ysz)
+{
+ uint32_t *pb = propbuf;
+
+ *pb++ = 32;
+ *pb++ = 0;
+ *pb++ = PROP_TAG_VIRTRES | PROP_TAG_SET;
+ *pb++ = 8; /* data size */
+ *pb++ = PROP_CODE_REQ;
+ *pb++ = xsz;
+ *pb++ = ysz;
+ *pb++ = PROP_TAG_END;
+
+ return send_prop(propbuf);
+}
+
+int prop_getvres(int *xsz, int *ysz)
+{
+ uint32_t *pb = propbuf;
+ uint32_t *data;
+
+ *pb++ = 32;
+ *pb++ = 0;
+ *pb++ = PROP_TAG_VIRTRES;
+ *pb++ = 8;
+ *pb++ = PROP_CODE_REQ;
+ data = pb;
+ *pb++ = 0;
+ *pb++ = 0;
+ *pb++ = PROP_TAG_END;
+
+ if(send_prop(propbuf) == -1) {
+ return -1;
+ }
+ *xsz = data[0];
+ *ysz = data[1];
+ return 0;
+}
+
+int prop_setdepth(int bpp)
+{
+ uint32_t *pb = propbuf;
+
+ *pb++ = 32;
+ *pb++ = 0;
+ *pb++ = PROP_TAG_DEPTH | PROP_TAG_SET;
+ *pb++ = 4;
+ *pb++ = PROP_CODE_REQ;
+ *pb++ = bpp;
+ *pb++ = PROP_TAG_END;
+ *pb++ = 0; /* padding */
+
+ return send_prop(propbuf);
+}
+
+int prop_getdepth(void)
+{
+ uint32_t *pb = propbuf;
+ uint32_t *data;
+
+ *pb++ = 32;
+ *pb++ = 0;
+ *pb++ = PROP_TAG_DEPTH;
+ *pb++ = 4; /* data size */
+ *pb++ = PROP_CODE_REQ;
+ data = pb;
+ *pb++ = 0;
+ *pb++ = PROP_TAG_END;
+ *pb++ = 0; /* padding */
+
+ if(send_prop(propbuf) == -1) {
+ return 0;
+ }
+ return *data;
+}
+
+int prop_getpitch(void)
+{
+ uint32_t *pb = propbuf;
+ uint32_t *data;
+
+ *pb++ = 32;
+ *pb++ = 0;
+ *pb++ = PROP_TAG_PITCH;
+ *pb++ = 4; /* data size */
+ *pb++ = PROP_CODE_REQ;
+ data = pb;
+ *pb++ = 0;
+ *pb++ = PROP_TAG_END;
+ *pb++ = 0; /* padding */
+
+ if(send_prop(propbuf) == -1) {
+ return 0;
+ }
+ return *data;
+}
+
+void *prop_allocbuf(int *size)
+{
+ uint32_t *pb = propbuf;
+ uint32_t *data;
+
+ *pb++ = 32;
+ *pb++ = 0;
+ *pb++ = PROP_TAG_ALLOCBUF;
+ *pb++ = 8; /* data size */
+ *pb++ = PROP_CODE_REQ;
+ data = pb;
+ *pb++ = 16; /* alignment */
+ *pb++ = 0;
+ *pb++ = PROP_TAG_END;
+
+ if(send_prop(propbuf) == -1) {
+ return 0;
+ }
+ *size = data[1];
+ return (void*)bus2phys(data[0]);