usb: otg: add proxy_wait handler to otg_id

Some otg_id handlers can detect what's connected but can't detect a change.
This allows that handler to pass off the waiting for ID change to a proxy.

Change-Id: Ib38b750c3da4bffc35e37b620ecee37c5d64d31f
Signed-off-by: Erik Gilling <konkers@android.com>
diff --git a/drivers/usb/otg/otg_id.c b/drivers/usb/otg/otg_id.c
index 2398b1a..ce22b46 100644
--- a/drivers/usb/otg/otg_id.c
+++ b/drivers/usb/otg/otg_id.c
@@ -44,16 +44,24 @@
 {
 	int ret;
 	struct otg_id_notifier_block *otg_id_nb;
-
+	bool proxy_wait = false;
 	if (plist_head_empty(&otg_id_plist))
 		return;
 
 	plist_for_each_entry(otg_id_nb, &otg_id_plist, p) {
-		ret = otg_id_nb->detect(otg_id_nb);
+		if (proxy_wait) {
+			if (otg_id_nb->proxy_wait)
+				ret = otg_id_nb->proxy_wait(otg_id_nb);
+		} else {
+			ret = otg_id_nb->detect(otg_id_nb);
+		}
 		if (ret == OTG_ID_HANDLED) {
 			otg_id_active = otg_id_nb;
 			return;
 		}
+		if (ret == OTG_ID_PROXY_WAIT)
+			proxy_wait = true;
+
 	}
 
 	WARN(1, "otg id event not handled");