X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/c3e75d50143c5bcc3719b60e42465107de48c61f..694c4439dc31d020a5c8513234f26ee3d2b43367:/target/linux/generic/patches-3.0/102-ehci_hcd_ignore_oc.patch diff --git a/target/linux/generic/patches-3.0/102-ehci_hcd_ignore_oc.patch b/target/linux/generic/patches-3.0/102-ehci_hcd_ignore_oc.patch index 79e26b32d..a7eb07e4c 100644 --- a/target/linux/generic/patches-3.0/102-ehci_hcd_ignore_oc.patch +++ b/target/linux/generic/patches-3.0/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 -@@ -656,7 +656,7 @@ ehci_hub_status_data (struct usb_hcd *hc +@@ -655,7 +655,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; -@@ -881,7 +881,7 @@ static int ehci_hub_control ( +@@ -880,7 +880,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 -@@ -137,6 +137,7 @@ struct ehci_hcd { /* one per controlle - unsigned fs_i_thresh:1; /* Intel iso scheduling */ +@@ -138,6 +138,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 */