--- sys/dev/mvs/mvs_soc.c.orig	2010-05-22 23:16:43.239261000 +0900
+++ sys/dev/mvs/mvs_soc.c	2010-06-19 16:15:28.024566573 +0900
@@ -43,6 +43,8 @@
 #include <sys/rman.h>
 #include <arm/mv/mvreg.h>
 #include <arm/mv/mvvar.h>
+#include <dev/ofw/ofw_bus.h>
+#include <dev/ofw/ofw_bus_subr.h>
 #include "mvs.h"
 
 /* local prototypes */
@@ -73,6 +75,9 @@
 	int i;
 	uint32_t devid, revid;
 
+	if (!ofw_bus_is_compatible(dev, "mrvl,sata"))
+		return (ENXIO);
+
 	soc_id(&devid, &revid);
 	for (i = 0; mvs_ids[i].id != 0; i++) {
 		if (mvs_ids[i].id == devid &&
@@ -445,6 +450,6 @@
         mvs_methods,
         sizeof(struct mvs_controller)
 };
-DRIVER_MODULE(sata, mbus, mvs_driver, mvs_devclass, 0, 0);
+DRIVER_MODULE(sata, simplebus, mvs_driver, mvs_devclass, 0, 0);
 MODULE_VERSION(sata, 1);
 

