From 0dcbcf1741e65a2eff04fd531a1a3d1a5bab42d7 Mon Sep 17 00:00:00 2001 From: Alan Stern Date: Mon, 14 May 2012 13:48:16 -0400 Subject: [PATCH] --- yaml --- r: 303943 b: refs/heads/master c: 1996e6c572969a8cf6d7fa97eef621219acd94a9 h: refs/heads/master i: 303941: eaf45e3429ef7bda310eef2c9587f476c73befef 303939: c66b93e793a6096376f9b9527e4eb66bf65a084f 303935: 9a32d3d69824f94a930d34eb066031c2aa6d259f v: v3 --- [refs] | 2 +- trunk/drivers/usb/host/ehci-hcd.c | 2 +- trunk/drivers/usb/host/ehci-pci.c | 7 +++++++ trunk/drivers/usb/host/ehci.h | 1 + 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 696c0808819a..137292b45f9b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 65b8e5cbdddc86474372bdb48dc233b06710a576 +refs/heads/master: 1996e6c572969a8cf6d7fa97eef621219acd94a9 diff --git a/trunk/drivers/usb/host/ehci-hcd.c b/trunk/drivers/usb/host/ehci-hcd.c index 5cb775b1802d..f644ba9529ed 100644 --- a/trunk/drivers/usb/host/ehci-hcd.c +++ b/trunk/drivers/usb/host/ehci-hcd.c @@ -639,7 +639,7 @@ static int ehci_init(struct usb_hcd *hcd) INIT_LIST_HEAD(&ehci->cached_itd_list); INIT_LIST_HEAD(&ehci->cached_sitd_list); - if (HCC_PGM_FRAMELISTLEN(hcc_params)) { + if (HCC_PGM_FRAMELISTLEN(hcc_params) && !ehci->sched_size_bug) { /* periodic schedule size can be smaller than default */ switch (EHCI_TUNE_FLS) { case 0: ehci->periodic_size = 1024; break; diff --git a/trunk/drivers/usb/host/ehci-pci.c b/trunk/drivers/usb/host/ehci-pci.c index bc94d7bf072d..4baafa3e80b2 100644 --- a/trunk/drivers/usb/host/ehci-pci.c +++ b/trunk/drivers/usb/host/ehci-pci.c @@ -97,6 +97,13 @@ static int ehci_pci_setup(struct usb_hcd *hcd) break; } break; + + case PCI_VENDOR_ID_PHILIPS: + /* + * Philips controllers set HCC_PGM_FRAMELISTLEN, but + * they don't implement schedule sizes shorter than 1024. + */ + ehci->sched_size_bug = 1; } /* cache this readonly data; minimize chip reads */ diff --git a/trunk/drivers/usb/host/ehci.h b/trunk/drivers/usb/host/ehci.h index 2694ed6558d2..2a6652fd5400 100644 --- a/trunk/drivers/usb/host/ehci.h +++ b/trunk/drivers/usb/host/ehci.h @@ -149,6 +149,7 @@ struct ehci_hcd { /* one per controller */ 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 sched_size_bug:1; /* Philips */ /* required for usb32 quirk */ #define OHCI_CTRL_HCFS (3 << 6)