From ae6b312494501a0509757dd3c638b13b5b84767a Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Fri, 2 Mar 2012 18:02:50 +0000 Subject: [PATCH] [USBUHCI] - Enable usbuhci for testing [USBOHCI] - Add back getting port count in a loop to work around AMD chipset errata svn path=/trunk/; revision=55959 --- reactos/boot/bootdata/hivesys_i386.inf | 14 +++++++------- reactos/boot/bootdata/txtsetup.sif | 4 ++-- reactos/drivers/usb/usbohci/hardware.cpp | 9 +++++++-- reactos/media/inf/usbport.inf | Bin 17488 -> 17432 bytes 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/reactos/boot/bootdata/hivesys_i386.inf b/reactos/boot/bootdata/hivesys_i386.inf index 80140ef9d26..cb767b8ca6e 100644 --- a/reactos/boot/bootdata/hivesys_i386.inf +++ b/reactos/boot/bootdata/hivesys_i386.inf @@ -16,8 +16,8 @@ HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\*PNP0A03","ClassGU HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\*PNP0C08","Service",0x00000000,"acpi" HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\*PNP0C08","ClassGUID",0x00000000,"{4D36E97D-E325-11CE-BFC1-08002BE10318}" -;HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\PCI#CC_0C0300","Service",0x00000000,"usbuhci" -;HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\PCI#CC_0C0300","ClassGUID",0x00000000,"{36FC9E60-C465-11CF-8056-444553540000}" +HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\PCI#CC_0C0300","Service",0x00000000,"usbuhci" +HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\PCI#CC_0C0300","ClassGUID",0x00000000,"{36FC9E60-C465-11CF-8056-444553540000}" HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\PCI#CC_0C0310","Service",0x00000000,"usbohci" HKLM,"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\PCI#CC_0C0310","ClassGUID",0x00000000,"{36FC9E60-C465-11CF-8056-444553540000}" @@ -1511,11 +1511,11 @@ HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","Start",0x00010001,0x00000000 HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","Type",0x00010001,0x00000001 ; UHCI controller driver -;HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","ErrorControl",0x00010001,0x00000001 -;HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Group",0x00000000,"Boot Bus Extender" -;HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","ImagePath",0x00020000,"system32\drivers\usbuhci.sys" -;HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Start",0x00010001,0x00000000 -;HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Type",0x00010001,0x00000001 +HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","ErrorControl",0x00010001,0x00000001 +HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Group",0x00000000,"Boot Bus Extender" +HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","ImagePath",0x00020000,"system32\drivers\usbuhci.sys" +HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Start",0x00010001,0x00000000 +HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Type",0x00010001,0x00000001 ; USB storage driver HKLM,"SYSTEM\CurrentControlSet\Services\usbstor","ErrorControl",0x00010001,0x00000001 diff --git a/reactos/boot/bootdata/txtsetup.sif b/reactos/boot/bootdata/txtsetup.sif index ccfab346a29..0d8181903d1 100644 --- a/reactos/boot/bootdata/txtsetup.sif +++ b/reactos/boot/bootdata/txtsetup.sif @@ -39,7 +39,7 @@ hidusb.sys=,,,,,,,,,,,,4 usbccgp.sys=,,,,,,x,,,,,,4 usbd.sys=,,,,,,x,,,,,,4 usbhub.sys=,,,,,,x,,,,,,4 -;usbuhci.sys=,,,,,,x,,,,,,4 +usbuhci.sys=,,,,,,x,,,,,,4 usbohci.sys=,,,,,,x,,,,,,4 usbehci.sys=,,,,,,x,,,,,,4 usbstor.sys=,,,,,,x,,,,,,4 @@ -75,7 +75,7 @@ PCI\CC_0106 = uniata ;USB\CLASS_09 = usbhub USB\ROOT_HUB = usbhub USB\ROOT_HUB20 = usbhub -;PCI\CC_0C0300 = usbuhci +PCI\CC_0C0300 = usbuhci PCI\CC_0C0310 = usbohci PCI\CC_0C0320 = usbehci USB\Class_08&SubClass_06&Prot_50 = usbstor diff --git a/reactos/drivers/usb/usbohci/hardware.cpp b/reactos/drivers/usb/usbohci/hardware.cpp index 97f99517a1b..f80eeed4bad 100644 --- a/reactos/drivers/usb/usbohci/hardware.cpp +++ b/reactos/drivers/usb/usbohci/hardware.cpp @@ -662,9 +662,14 @@ retry: Descriptor = READ_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_RH_DESCRIPTOR_A_OFFSET)); // - // get port count + // get port count (in a loop due to AMD errata) // - m_NumberOfPorts = OHCI_RH_GET_PORT_COUNT(Descriptor); + do + { + KeStallExecutionProcessor(20); + m_NumberOfPorts = OHCI_RH_GET_PORT_COUNT(Descriptor); + } while (m_NumberOfPorts == 0); + DPRINT1("NumberOfPorts %lu\n", m_NumberOfPorts); ASSERT(m_NumberOfPorts < OHCI_MAX_PORT_COUNT); diff --git a/reactos/media/inf/usbport.inf b/reactos/media/inf/usbport.inf index 5d633b6e59444a3a2d18828e63c928e85a1a392a..ad291075f3611be4cd9a32c6987dff34a9c50e08 100644 GIT binary patch delta 26 icmcc6!8oIXal!Bp|U_j_a2t0Gzi9BLDyZ