I'm not sure why my email to and from the list is delayed, but I sent a corrected patch to the list almost two days ago that hasn't been posted yet. The reason for the correction is that I messed up my merge with HEAD (as caught by Pete Zaitcev). I accidentally I had this in my patch:
- /* Some NForce2 chips have problems with selective suspend; - * fixed in newer silicon. - */ - case 0x0068: - pci_read_config_dword(pdev, PCI_REVISION_ID, &temp); - if ((temp & 0xff) < 0xa4) - ehci->no_selective_suspend = 1; - break; - } - break; Sorry for the inconvience. I will resend the corrected patch by private email. Paul Serice David Brownell wrote: > On Saturday 03 June 2006 12:17 am, Paul Serice wrote: > >>The workaround in commit f7201c3dcd7799f2aa3d6ec427b194225360ecee >>broke. The work around requires memory for DMA transfers for some >>NVidia EHCI controllers to be below 2GB, but recent changes have >>caused the DMA memory to be allocated before the DMA mask is set. >> >>Signed-off-by: Paul Serice <[EMAIL PROTECTED]> > > > Signed-off-by: David Brownell <[EMAIL PROTECTED]> > > ... Greg, this might be a good candidate for 2.6.17 still ... > > >>--- >> >> drivers/usb/host/ehci-pci.c | 51 >> ++++++++++++++++++++----------------------- >> 1 files changed, 24 insertions(+), 27 deletions(-) >> >>d844399ebad91e3b0415b3de479be17687d2544a >>diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c >>index a1bd2be..82bea65 100644 >>--- a/drivers/usb/host/ehci-pci.c >>+++ b/drivers/usb/host/ehci-pci.c >>@@ -76,6 +76,30 @@ static int ehci_pci_setup(struct usb_hcd >> dbg_hcs_params(ehci, "reset"); >> dbg_hcc_params(ehci, "reset"); >> >>+ /* ehci_init() causes memory for DMA transfers to be >>+ * allocated. Thus, any vendor-specific workarounds based on >>+ * limiting the type of memory used for DMA transfers must >>+ * happen before ehci_init() is called. */ >>+ switch (pdev->vendor) { >>+ case PCI_VENDOR_ID_NVIDIA: >>+ /* NVidia reports that certain chips don't handle >>+ * QH, ITD, or SITD addresses above 2GB. (But TD, >>+ * data buffer, and periodic schedule are normal.) >>+ */ >>+ switch (pdev->device) { >>+ case 0x003c: /* MCP04 */ >>+ case 0x005b: /* CK804 */ >>+ case 0x00d8: /* CK8 */ >>+ case 0x00e8: /* CK8S */ >>+ if (pci_set_consistent_dma_mask(pdev, >>+ DMA_31BIT_MASK) < 0) >>+ ehci_warn(ehci, "can't enable NVidia " >>+ "workaround for >2GB RAM\n"); >>+ break; >>+ } >>+ break; >>+ } >>+ >> /* cache this readonly data; minimize chip reads */ >> ehci->hcs_params = readl(&ehci->caps->hcs_params); >> >>@@ -88,8 +112,6 @@ static int ehci_pci_setup(struct usb_hcd >> if (retval) >> return retval; >> >>- /* NOTE: only the parts below this line are PCI-specific */ >>- >> switch (pdev->vendor) { >> case PCI_VENDOR_ID_TDI: >> if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) { >>@@ -105,31 +127,6 @@ static int ehci_pci_setup(struct usb_hcd >> goto done; >> } >> break; >>- case PCI_VENDOR_ID_NVIDIA: >>- switch (pdev->device) { >>- /* NVidia reports that certain chips don't handle >>- * QH, ITD, or SITD addresses above 2GB. (But TD, >>- * data buffer, and periodic schedule are normal.) >>- */ >>- case 0x003c: /* MCP04 */ >>- case 0x005b: /* CK804 */ >>- case 0x00d8: /* CK8 */ >>- case 0x00e8: /* CK8S */ >>- if (pci_set_consistent_dma_mask(pdev, >>- DMA_31BIT_MASK) < 0) >>- ehci_warn(ehci, "can't enable NVidia " >>- "workaround for >2GB RAM\n"); >>- break; >>- /* Some NForce2 chips have problems with selective suspend; >>- * fixed in newer silicon. >>- */ >>- case 0x0068: >>- pci_read_config_dword(pdev, PCI_REVISION_ID, &temp); >>- if ((temp & 0xff) < 0xa4) >>- ehci->no_selective_suspend = 1; >>- break; >>- } >>- break; >> } >> >> if (ehci_is_TDI(ehci)) >>-- >>1.3.2 >> >> >> >>_______________________________________________ >>linux-usb-devel@lists.sourceforge.net >>To unsubscribe, use the last form field at: >>https://lists.sourceforge.net/lists/listinfo/linux-usb-devel >> _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel