X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/c3e75d50143c5bcc3719b60e42465107de48c61f..9f0871090d031ad656d1d1e77f2881c9a864b343:/target/linux/generic/patches-3.1/102-ehci_hcd_ignore_oc.patch diff --git a/target/linux/generic/patches-3.1/102-ehci_hcd_ignore_oc.patch b/target/linux/generic/patches-3.1/102-ehci_hcd_ignore_oc.patch index 6cef4d991..c94d718af 100644 --- a/target/linux/generic/patches-3.1/102-ehci_hcd_ignore_oc.patch +++ b/target/linux/generic/patches-3.1/102-ehci_hcd_ignore_oc.patch @@ -11,30 +11,30 @@ &ehci->regs->intr_enable); /* Turn On Interrupts */ --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c -@@ -581,7 +581,7 @@ ehci_hub_status_data (struct usb_hcd *hc +@@ -580,7 +580,7 @@ ehci_hub_status_data (struct usb_hcd *hc * always set, seem to clear PORT_OCC and PORT_CSC when writing to * PORT_POWER; that's surprising, but maybe within-spec. */ - if (!ignore_oc) -+ if (!ignore_oc || !ehci->ignore_oc) ++ if (!ignore_oc && !ehci->ignore_oc) mask = PORT_CSC | PORT_PEC | PORT_OCC; else mask = PORT_CSC | PORT_PEC; -@@ -806,7 +806,7 @@ static int ehci_hub_control ( +@@ -805,7 +805,7 @@ static int ehci_hub_control ( if (temp & PORT_PEC) status |= USB_PORT_STAT_C_ENABLE << 16; - if ((temp & PORT_OCC) && !ignore_oc){ -+ if ((temp & PORT_OCC) && (!ignore_oc || !ehci->ignore_oc)){ ++ if ((temp & PORT_OCC) && (!ignore_oc && !ehci->ignore_oc)){ status |= USB_PORT_STAT_C_OVERCURRENT << 16; /* --- a/drivers/usb/host/ehci.h +++ b/drivers/usb/host/ehci.h -@@ -139,6 +139,7 @@ struct ehci_hcd { /* one per controlle - unsigned fs_i_thresh:1; /* Intel iso scheduling */ +@@ -140,6 +140,7 @@ struct ehci_hcd { /* one per controlle unsigned use_dummy_qh:1; /* AMD Frame List table quirk*/ unsigned has_synopsys_hc_bug:1; /* Synopsys HC */ + unsigned frame_index_bug:1; /* MosChip (AKA NetMos) */ + unsigned ignore_oc:1; /* required for usb32 quirk */