diff options
Diffstat (limited to 'target/linux/brcm2708/patches-3.18/0045-dwc_otg-Fix-various-issues-with-root-port-and-transa.patch')
-rw-r--r-- | target/linux/brcm2708/patches-3.18/0045-dwc_otg-Fix-various-issues-with-root-port-and-transa.patch | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/target/linux/brcm2708/patches-3.18/0045-dwc_otg-Fix-various-issues-with-root-port-and-transa.patch b/target/linux/brcm2708/patches-3.18/0045-dwc_otg-Fix-various-issues-with-root-port-and-transa.patch deleted file mode 100644 index 83778b6..0000000 --- a/target/linux/brcm2708/patches-3.18/0045-dwc_otg-Fix-various-issues-with-root-port-and-transa.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 8eb79690a70cce34e9a1c35cf165716f78301d2e Mon Sep 17 00:00:00 2001 -From: P33M <P33M@github.com> -Date: Fri, 20 Jun 2014 16:03:12 +0100 -Subject: [PATCH 045/114] dwc_otg: Fix various issues with root port and - transaction errors - -Process the host port interrupts correctly (and don't trample them). -Root port hotplug now functional again. - -Fix a few thinkos with the transaction error passthrough for fiq_fsm. ---- - drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c | 7 +++---- - drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c | 6 +++++- - drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 2 +- - 3 files changed, 9 insertions(+), 6 deletions(-) - ---- a/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c -+++ b/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c -@@ -1348,10 +1348,9 @@ static inline uint32_t dwc_otg_read_comm - local_fiq_disable(); - /* Pull in the interrupts that the FIQ has masked */ - gintmsk.d32 |= ~(hcd->fiq_state->gintmsk_saved.d32); -+ gintmsk.d32 |= gintmsk_common.d32; - /* for the upstairs function to reenable - have to read it here in case FIQ triggers again */ -- reenable_gintmsk->d32 |= gintmsk.d32; -- reenable_gintmsk->d32 |= ~(hcd->fiq_state->gintmsk_saved.d32); -- reenable_gintmsk->d32 &= gintmsk_common.d32; -+ reenable_gintmsk->d32 = gintmsk.d32; - local_fiq_enable(); - } - -@@ -1535,7 +1534,7 @@ int32_t dwc_otg_handle_common_intr(void - // fiq_print(FIQDBG_INT, otg_dev->hcd->fiq_state, "CILOUT %1d", retval); - // fiq_print(FIQDBG_INT, otg_dev->hcd->fiq_state, "%08x", gintsts.d32); - // fiq_print(FIQDBG_INT, otg_dev->hcd->fiq_state, "%08x", gintmsk_reenable.d32); -- if (retval) { -+ if (retval && fiq_enable) { - DWC_WRITE_REG32(&core_if->core_global_regs->gintmsk, gintmsk_reenable.d32); - } - ---- a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c -+++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c -@@ -696,7 +696,11 @@ static int notrace noinline fiq_fsm_do_h - fiq_print(FIQDBG_ERR, state, "ERRST %02d", n); - if (hcint_probe.b.nak || hcint_probe.b.ack || hcint_probe.b.datatglerr) { - fiq_print(FIQDBG_ERR, state, "RESET %02d", n); -- st->nr_errors = 0; -+ /* In some random cases we can get a NAK interrupt coincident with a Xacterr -+ * interrupt, after the device has disappeared. -+ */ -+ if (!hcint.b.xacterr) -+ st->nr_errors = 0; - hcintmsk.b.nak = 0; - hcintmsk.b.ack = 0; - hcintmsk.b.datatglerr = 0; ---- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c -+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c -@@ -2619,7 +2619,7 @@ int32_t dwc_otg_hcd_handle_hc_n_intr(dwc - case FIQ_PASSTHROUGH_ERRORSTATE: - /* Hook into the error count */ - fiq_print(FIQDBG_ERR, dwc_otg_hcd->fiq_state, "HCDERR%02d", num); -- if (dwc_otg_hcd->fiq_state->channel[num].nr_errors) { -+ if (!dwc_otg_hcd->fiq_state->channel[num].nr_errors) { - qtd->error_count = 0; - fiq_print(FIQDBG_ERR, dwc_otg_hcd->fiq_state, "RESET "); - } |