Index: uspace/drv/fb/amdm37x_dispc/main.c
===================================================================
--- uspace/drv/fb/amdm37x_dispc/main.c	(revision 9cc4b2b474c0fb0b4f6e55bb4f264332f77f3fdd)
+++ uspace/drv/fb/amdm37x_dispc/main.c	(revision 96228d0961b452098db4e4b49b8651d7c99981a6)
@@ -57,4 +57,5 @@
 static int amdm37x_dispc_dev_add(ddf_dev_t *dev)
 {
+	/* Visualizer part */
 	ddf_fun_t *fun = ddf_fun_create(dev, fun_exposed, "dispc");
 	if (!fun) {
@@ -63,4 +64,15 @@
 	}
 
+	visualizer_t *vis = ddf_fun_data_alloc(fun, sizeof(visualizer_t));
+	if (!vis) {
+		ddf_log_error("Failed to allocate visualizer structure\n");
+		ddf_fun_destroy(fun);
+		return ENOMEM;
+	}
+
+	graph_init_visualizer(vis);
+	vis->reg_svc_handle = ddf_fun_get_handle(fun);
+
+	ddf_fun_set_ops(fun, &graph_fun_ops);
 	/* Hw part */
 	amdm37x_dispc_t *dispc =
@@ -72,5 +84,5 @@
 	}
 
-	int ret = amdm37x_dispc_init(dispc);
+	int ret = amdm37x_dispc_init(dispc, vis);
 	if (ret != EOK) {
 		ddf_log_error("Failed to init dispc: %s\n", str_error(ret));
@@ -79,20 +91,5 @@
 	}
 
-	/* Visualizer part */
-	visualizer_t *vis = ddf_fun_data_alloc(fun, sizeof(visualizer_t));
-	if (!vis) {
-		ddf_log_error("Failed to allocate visualizer structure\n");
-		ddf_fun_destroy(fun);
-		return ENOMEM;
-	}
-
-	graph_init_visualizer(vis);
-	vis->def_mode_idx = 0; // TODO: What is this? Why is this not handled
-	                       // via init?
-	vis->ops = amdm37x_dispc_vis_ops;
-	vis->dev_ctx = dispc;
-	vis->reg_svc_handle = ddf_fun_get_handle(fun);
-
-	ddf_fun_set_ops(fun, &graph_fun_ops);
+	/* Report to devman */
 	ret = ddf_fun_bind(fun);
 	if (ret != EOK) {
