Apply the latest usb driver patch from freescale.

Google-Bug-Id: 19432272
Change-Id: Id3c3e80d6172b91103538fedbad5a2fb2f6df904
diff --git a/drivers/usb/dwc_otg/dwc_otg_cil_intr.c b/drivers/usb/dwc_otg/dwc_otg_cil_intr.c
index 0581b49..0ff4fbe 100644
--- a/drivers/usb/dwc_otg/dwc_otg_cil_intr.c
+++ b/drivers/usb/dwc_otg/dwc_otg_cil_intr.c
@@ -336,8 +336,10 @@
 		    " ++Connector ID Status Change Interrupt++  (%s)\n",
 		    (dwc_otg_is_host_mode(core_if) ? "Host" : "Device"));
 	
-	if (core_if->lock)
-		DWC_SPINUNLOCK(core_if->lock);
+	if ((core_if == NULL) || (core_if->lock == NULL) || (core_if->wq_otg == NULL))
+		return 1;
+
+	DWC_SPINUNLOCK(core_if->lock);
 
 	/*
 	 * Need to schedule a work, as there are possible DELAY function calls
diff --git a/drivers/usb/dwc_otg/dwc_otg_hcd.c b/drivers/usb/dwc_otg/dwc_otg_hcd.c
old mode 100644
new mode 100755
index d49f475..480bf20
--- a/drivers/usb/dwc_otg/dwc_otg_hcd.c
+++ b/drivers/usb/dwc_otg/dwc_otg_hcd.c
@@ -449,6 +449,9 @@
 	dwc_otg_qtd_t *qtd;
 	gintmsk_data_t intr_mask = {.d32 = 0 };
 
+	if (NULL ==  dwc_otg_urb)
+		return 0;
+
 	if (!hcd->flags.b.port_connect_status) {
 		/* No longer connected. */
 		DWC_ERROR("Not connected\n");
@@ -495,7 +498,14 @@
 	dwc_otg_qh_t *qh;
 	dwc_otg_qtd_t *urb_qtd;
 
+	if (NULL ==  dwc_otg_urb)
+		return 0;
+
 	urb_qtd = dwc_otg_urb->qtd;
+
+	if (NULL ==  urb_qtd->qh)
+		return 0;
+
 	qh = urb_qtd->qh;
 #ifdef DEBUG
 	if (CHK_DEBUG_LEVEL(DBG_HCDV | DBG_HCD_URB)) {
diff --git a/drivers/usb/dwc_otg/dwc_otg_hcd_intr.c b/drivers/usb/dwc_otg/dwc_otg_hcd_intr.c
index 9fb3602..856b150 100644
--- a/drivers/usb/dwc_otg/dwc_otg_hcd_intr.c
+++ b/drivers/usb/dwc_otg/dwc_otg_hcd_intr.c
@@ -786,7 +786,7 @@
 {
 	dwc_otg_transaction_type_e tr_type;
 	int free_qtd;
-    gintmsk_data_t intr_mask = {.d32 = 0 };
+        // gintmsk_data_t intr_mask = {.d32 = 0 };
 
 	DWC_DEBUGPL(DBG_HCDV, "  %s: channel %d, halt_status %d\n",
 		    __func__, hc->hc_num, halt_status);
@@ -862,13 +862,10 @@
 	}
 
 	/* Try to queue more transfers now that there's a free channel. */
-    intr_mask.d32 = DWC_READ_REG32(&hcd->core_if->core_global_regs->gintmsk);
-    if (!intr_mask.b.sofintr) {
-        tr_type = dwc_otg_hcd_select_transactions(hcd);
-        if (tr_type != DWC_OTG_TRANSACTION_NONE) {
-            dwc_otg_hcd_queue_transactions(hcd, tr_type);
-        }
-    }
+	tr_type = dwc_otg_hcd_select_transactions(hcd);
+	if (tr_type != DWC_OTG_TRANSACTION_NONE) {
+		dwc_otg_hcd_queue_transactions(hcd, tr_type);
+	}
 }
 
 /**