diff options
Diffstat (limited to 'target/linux/brcm2708/patches-3.10/0054-dwc_otg-add-handling-of-SPLIT-transaction-data-toggl.patch')
-rw-r--r-- | target/linux/brcm2708/patches-3.10/0054-dwc_otg-add-handling-of-SPLIT-transaction-data-toggl.patch | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/target/linux/brcm2708/patches-3.10/0054-dwc_otg-add-handling-of-SPLIT-transaction-data-toggl.patch b/target/linux/brcm2708/patches-3.10/0054-dwc_otg-add-handling-of-SPLIT-transaction-data-toggl.patch deleted file mode 100644 index d00bbe1df7..0000000000 --- a/target/linux/brcm2708/patches-3.10/0054-dwc_otg-add-handling-of-SPLIT-transaction-data-toggl.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 70303c1e07d940f6f0b2b8b9359930be1c0f566e Mon Sep 17 00:00:00 2001 -From: P33M <P33M@github.com> -Date: Sun, 3 Mar 2013 14:45:53 +0000 -Subject: [PATCH 054/196] dwc_otg: add handling of SPLIT transaction data - toggle errors - -Previously a data toggle error on packets from a USB1.1 device behind -a TT would result in the Pi locking up as the driver never handled -the associated interrupt. Patch adds basic retry mechanism and -interrupt acknowledgement to cater for either a chance toggle error or -for devices that have a broken initial toggle state (FT8U232/FT232BM). ---- - drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c | 19 ++++++++++++++----- - 1 file changed, 14 insertions(+), 5 deletions(-) - -diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c -index 0c81a64..16e8c6c 100644 ---- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c -+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c -@@ -1921,13 +1921,20 @@ static int32_t handle_hc_datatglerr_intr(dwc_otg_hcd_t * hcd, - dwc_otg_qtd_t * qtd) - { - DWC_DEBUGPL(DBG_HCDI, "--Host Channel %d Interrupt: " -- "Data Toggle Error--\n", hc->hc_num); -+ "Data Toggle Error on %s transfer--\n", -+ hc->hc_num, (hc->ep_is_in ? "IN" : "OUT")); - -- if (hc->ep_is_in) { -+ /* Data toggles on split transactions cause the hc to halt. -+ * restart transfer */ -+ if(hc->qh->do_split) -+ { -+ qtd->error_count++; -+ dwc_otg_hcd_save_data_toggle(hc, hc_regs, qtd); -+ update_urb_state_xfer_intr(hc, hc_regs, -+ qtd->urb, qtd, DWC_OTG_HC_XFER_XACT_ERR); -+ halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_XACT_ERR); -+ } else if (hc->ep_is_in) { - qtd->error_count = 0; -- } else { -- DWC_ERROR("Data Toggle Error on OUT transfer," -- "channel %d\n", hc->hc_num); - } - - disable_hc_int(hc_regs, datatglerr); -@@ -2080,6 +2087,8 @@ static void handle_hc_chhltd_intr_dma(dwc_otg_hcd_t * hcd, - handle_hc_babble_intr(hcd, hc, hc_regs, qtd); - } else if (hcint.b.frmovrun) { - handle_hc_frmovrun_intr(hcd, hc, hc_regs, qtd); -+ } else if (hcint.b.datatglerr) { -+ handle_hc_datatglerr_intr(hcd, hc, hc_regs, qtd); - } else if (!out_nak_enh) { - if (hcint.b.nyet) { - /* --- -1.9.1 - |