diff --git a/arch/arm/mach-rockchip/rv1108-board.c b/arch/arm/mach-rockchip/rv1108-board.c
index 3412f2c..3c683cb 100644
--- a/arch/arm/mach-rockchip/rv1108-board.c
+++ b/arch/arm/mach-rockchip/rv1108-board.c
@@ -11,7 +11,7 @@
 #include <usb.h>
 #include <usb/dwc2_udc.h>
 
-static struct dwc2_plat_otg_data rv1108_otg_data = {
+static struct dwc2_plat_otg_data otg_data = {
 	.rx_fifo_sz	= 512,
 	.np_tx_fifo_sz	= 16,
 	.tx_fifo_sz	= 128,
@@ -19,14 +19,14 @@
 
 int board_usb_init(int index, enum usb_init_type init)
 {
-	const void *blob = gd->fdt_blob;
-	bool matched = false;
-	int node, phy_node;
-	u32 grf_phy_offset;
+	int node;
 	const char *mode;
+	bool matched = false;
+	const void *blob = gd->fdt_blob;
 
 	/* find the usb_otg node */
-	node = fdt_node_offset_by_compatible(blob, -1, "rockchip,rk3066-usb");
+	node = fdt_node_offset_by_compatible(blob, -1, "snps,dwc2");
+
 	while (node > 0) {
 		mode = fdt_getprop(blob, node, "dr_mode", NULL);
 		if (mode && strcmp(mode, "otg") == 0) {
@@ -34,44 +34,15 @@
 			break;
 		}
 
-		node = fdt_node_offset_by_compatible(blob, node,
-						     "rockchip,rk3066-usb");
+		node = fdt_node_offset_by_compatible(blob, node, "snps,dwc2");
 	}
-
 	if (!matched) {
-		debug("usb_otg device not found\n");
-		return -ENODEV;
-	}
-
-	rv1108_otg_data.regs_otg = fdtdec_get_addr(blob, node, "reg");
-
-	node = fdtdec_lookup_phandle(blob, node, "phys");
-	if (node <= 0) {
-		debug("phys node not found\n");
+		debug("Not found usb_otg device\n");
 		return -ENODEV;
 	}
-
-	phy_node = fdt_parent_offset(blob, node);
-	if (phy_node <= 0) {
-		debug("usb phy node not found\n");
-		return -ENODEV;
-	}
-
-	rv1108_otg_data.phy_of_node = phy_node;
-	grf_phy_offset = fdtdec_get_addr(blob, node, "reg");
-
-	/* find the grf node */
-	node = fdt_node_offset_by_compatible(blob, -1,
-					     "rockchip,rv1108-grf");
-	if (node <= 0) {
-		debug("grf node not found\n");
-		return -ENODEV;
-	}
-
-	rv1108_otg_data.regs_phy = grf_phy_offset + fdtdec_get_addr(blob, node,
-								    "reg");
+	otg_data.regs_otg = fdtdec_get_addr(blob, node, "reg");
 
-	return dwc2_udc_probe(&rv1108_otg_data);
+	return dwc2_udc_probe(&otg_data);
 }
 
 int board_usb_cleanup(int index, enum usb_init_type init)
