Index: kernel/arch/sparc64/include/drivers/scr.h
===================================================================
--- kernel/arch/sparc64/include/drivers/scr.h	(revision bc1f1c27820ae147ea90ebc58ae2f9a5e0b343ca)
+++ kernel/arch/sparc64/include/drivers/scr.h	(revision c7852969f0c5469654556df5028f6c5eab11367c)
@@ -42,5 +42,6 @@
 	SCR_UNKNOWN,
 	SCR_ATYFB,
-	SCR_FFB
+	SCR_FFB,
+	SCR_CGSIX
 } scr_type_t;
 
Index: kernel/arch/sparc64/src/drivers/scr.c
===================================================================
--- kernel/arch/sparc64/src/drivers/scr.c	(revision bc1f1c27820ae147ea90ebc58ae2f9a5e0b343ca)
+++ kernel/arch/sparc64/src/drivers/scr.c	(revision c7852969f0c5469654556df5028f6c5eab11367c)
@@ -64,4 +64,6 @@
 	else if (strcmp(name, "SUNW,ffb") == 0)
 		scr_type = SCR_FFB;
+	else if (strcmp(name, "cgsix") == 0)
+		scr_type = SCR_CGSIX;
 	
 	if (scr_type == SCR_UNKNOWN) {
@@ -152,4 +154,22 @@
 
 		break;
+	case SCR_CGSIX:
+		switch (fb_depth) {
+		case 8:
+			fb_scanline = fb_linebytes;
+			visual = VISUAL_INDIRECT_8;
+			break;
+		default:
+			printf("Not implemented.\n");
+			return;
+		}
+		
+		ofw_sbus_reg_t *cg6_reg = &((ofw_sbus_reg_t *) prop->value)[0];
+		if (!ofw_sbus_apply_ranges(node->parent, cg6_reg, &fb_addr)) {
+			printf("Failed to determine screen address.\n");
+			return;
+		}
+	
+		break;
 	default:
 		panic("Unexpected type.\n");
