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);
+ }
}
/**