Module Name:    src
Committed By:   skrll
Date:           Fri Oct  3 17:57:48 UTC 2014

Modified Files:
        src/sys/arch/evbarm/rpi: vcprop_subr.c

Log Message:
Better error handling.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/evbarm/rpi/vcprop_subr.c

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_subr.c
diff -u src/sys/arch/evbarm/rpi/vcprop_subr.c:1.1 src/sys/arch/evbarm/rpi/vcprop_subr.c:1.2
--- src/sys/arch/evbarm/rpi/vcprop_subr.c:1.1	Sun Sep 28 14:38:29 2014
+++ src/sys/arch/evbarm/rpi/vcprop_subr.c	Fri Oct  3 17:57:48 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: vcprop_subr.c,v 1.1 2014/09/28 14:38:29 macallan Exp $	*/
+/*	$NetBSD: vcprop_subr.c,v 1.2 2014/10/03 17:57:48 skrll Exp $	*/
 
 /*
  * Copyright (c) 2014 Michael Lorenz
@@ -90,7 +90,15 @@ rpi_fb_set_video(int b)
 	    vb_setblank.vbt_blank.state, error, res,
 	    vb_setblank.vbt_blank.tag.vpt_rcode);
 #endif
-	return (error == 0);
+	if (error)
+		return error;
+
+	if (!vcprop_buffer_success_p(&vb_setblank.vb_hdr) ||
+	    !vcprop_tag_success_p(&vb_setblank.vbt_blank.tag)) {
+		return EIO;
+	}
+
+	return 0;
 }
 
 uint32_t
@@ -131,9 +139,16 @@ rpi_alloc_mem(uint32_t size, uint32_t al
 	    vb_allocmem.vbt_am.size, error, res,
 	    vb_allocmem.vbt_am.tag.vpt_rcode);
 #endif
-	if (error == 0)
-		return vb_allocmem.vbt_am.size;
-	return 0;
+	if (error)
+		return error;
+
+	if (!vcprop_buffer_success_p(&vb_allocmem.vb_hdr) ||
+	    !vcprop_tag_success_p(&vb_allocmem.vbt_am.tag)) {
+		return EIO;
+	}
+
+	/* Return the handle from the VC */
+	return vb_allocmem.vbt_am.size;
 }
 
 bus_addr_t
@@ -172,9 +187,15 @@ rpi_lock_mem(uint32_t handle)
 	    vb_lockmem.vbt_lm.handle, error, res,
 	    vb_lockmem.vbt_lm.tag.vpt_rcode);
 #endif
-	if (error == 0)
-		return (vb_lockmem.vbt_lm.handle /*& 0x3fffffff*/);
-	return 0;
+	if (error)
+		return 0;
+
+	if (!vcprop_buffer_success_p(&vb_lockmem.vb_hdr) ||
+	    !vcprop_tag_success_p(&vb_lockmem.vbt_lm.tag)) {
+		return 0;
+	}
+
+	return vb_lockmem.vbt_lm.handle;
 }
 
 int
@@ -213,7 +234,15 @@ rpi_unlock_mem(uint32_t handle)
 	    vb_unlockmem.vbt_lm.handle, error, res,
 	    vb_unlockmem.vbt_lm.tag.vpt_rcode);
 #endif
-	return (error == 0);
+	if (error)
+		return error;
+
+	if (!vcprop_buffer_success_p(&vb_unlockmem.vb_hdr) ||
+	    !vcprop_tag_success_p(&vb_unlockmem.vbt_lm.tag)) {
+		return EIO;
+	}
+
+	return 0;
 }
 
 int
@@ -252,7 +281,15 @@ rpi_release_mem(uint32_t handle)
 	    vb_releasemem.vbt_lm.handle, error, res,
 	    vb_releasemem.vbt_lm.tag.vpt_rcode);
 #endif
-	return (error == 0);
+	if (error)
+		return error;
+
+	if (!vcprop_buffer_success_p(&vb_releasemem.vb_hdr) ||
+	    !vcprop_tag_success_p(&vb_releasemem.vbt_lm.tag)) {
+		return EIO;
+	}
+
+	return 0;
 }
 
 int
@@ -294,7 +331,15 @@ rpi_fb_movecursor(int x, int y, int on)
 	    vb_cursorstate.vbt_cs.enable, error, res,
 	    vb_cursorstate.vbt_cs.tag.vpt_rcode);
 #endif
-	return (error == 0);
+	if (error)
+		return error;
+
+	if (!vcprop_buffer_success_p(&vb_cursorstate.vb_hdr) ||
+	    !vcprop_tag_success_p(&vb_cursorstate.vbt_cs.tag)) {
+		return EIO;
+	}
+
+	return 0;
 }
 
 int
@@ -339,5 +384,13 @@ rpi_fb_initcursor(bus_addr_t pixels, int
 	    vb_cursorinfo.vbt_ci.width, error, res,
 	    vb_cursorinfo.vbt_ci.tag.vpt_rcode);
 #endif
-	return (error == 0);
+	if (error)
+		return error;
+
+	if (!vcprop_buffer_success_p(&vb_cursorinfo.vb_hdr) ||
+	    !vcprop_tag_success_p(&vb_cursorinfo.vbt_ci.tag)) {
+		return EIO;
+	}
+
+	return 0;
 }

Reply via email to