sunxi: common VBUS detection logic in usbc

VBUS detection could be needed not only by the musb code (to prevent host mode),
but also by e.g. gadget drivers to start only when a cable is connected.

In addition, this allows more flexibility in vbus detection, as it could easily
be extended to other USBC indexes. Eventually, this would help making musb
support independent from a hardcoded USB controller index (0).

Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
diff --git a/drivers/usb/musb-new/sunxi.c b/drivers/usb/musb-new/sunxi.c
index 8049944..c9a6a16 100644
--- a/drivers/usb/musb-new/sunxi.c
+++ b/drivers/usb/musb-new/sunxi.c
@@ -235,42 +235,19 @@
 
 	pr_debug("%s():\n", __func__);
 
-	if (is_host_enabled(musb)) {
-		int vbus_det = sunxi_name_to_gpio(CONFIG_USB0_VBUS_DET);
-
-		if (vbus_det == -1) {
-			eprintf("Error invalid Vusb-det pin\n");
-			return -EINVAL;
-		}
-
-		err = gpio_request(vbus_det, "vbus0_det");
-		if (err)
-			return err;
-
-		err = gpio_direction_input(vbus_det);
-		if (err) {
-			gpio_free(vbus_det);
-			return err;
-		}
-
-		err = gpio_get_value(vbus_det);
-		if (err < 0) {
-			gpio_free(vbus_det);
-			return -EIO;
-		}
-
-		gpio_free(vbus_det);
-
-		if (err) {
-			eprintf("Error: A charger is plugged into the OTG\n");
-			return -EIO;
-		}
-	}
-
 	err = sunxi_usbc_request_resources(0);
 	if (err)
 		return err;
 
+	if (is_host_enabled(musb)) {
+		err = sunxi_usbc_vbus_detect(0);
+		if (err) {
+			eprintf("Error: A charger is plugged into the OTG\n");
+			sunxi_usbc_free_resources(0);
+			return -EIO;
+		}
+	}
+
 	musb->isr = sunxi_musb_interrupt;
 	sunxi_usbc_enable(0);