- Move error checking if controller reported an error inside the door bell ring check block
- Extend interface of IUSBRequest to include DeviceAddress, which is needed to retrieve configuration descriptor of newly set address
- Allocate CtrlSetup from nonpaged pool
- Release setup packet on cleanup
- Devices now receive an device address
- Currently asserts while retrieving configuration descriptor as this code path is not yet existant
*** Assertion failed: Urb->UrbHeader.UsbdDeviceHandle == NULL
*** Source File: d:\usb-bringup\drivers\usb\usbehci_new\hub_controller.cpp, line 1118
svn path=/branches/usb-bringup/; revision=51477
- Change interface to return real async queue head
- Set the async queue head register after the controller has been started
- Enable async queue in StartController
- Port DumpDeviceDescriptor from mjmartin usbehci driver
- Remove pseudo queue head from usb queue, instead use the real async queue head exported from IUSBHardwareDevice
- Get physical address for transfer data in BuildControlTransferQueueHead
- Retrieving device descriptor now ~works, currently stops at setting device address (needs more work)
svn path=/branches/usb-bringup/; revision=51476
- Check if the current request type is supported (currently only control is supported, bulk will be implemented soon)
- Fix bug in IUSBRequest::CreateQueueHead
- Code runs now until first device descriptor get request (async / periodic queue not yet enabled)
- mjmartin usbehci status not yet reached
- Let the fun now begin ;)
svn path=/branches/usb-bringup/; revision=51474
- Cache port status & port change settings because it appears that some ehci controllers do not store the status reset register bit correctly
- This commit is a temporary solutions, needs to be reworked
- Return correct status from HandleClassOther
- Handle IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION to return status success
svn path=/branches/usb-bringup/; revision=51473
- Return the physical address of the async queue head in CUSBHardwareDevice::GetAsyncListRegister
- Remove superflous entries from queue head structure, they are processed within IUSBRequest class
- Remove USBHI_GetPortHackFlags, this function has been deprecated
- Add interface functions for IUSBRequest / IUSBQueue
- Callback into IUSBQueue when a hardware interrupt arrives
- Implement callback function to check for completed queue heads / free completed queue head depending on the Async Advance interrupt bit
svn path=/branches/usb-bringup/; revision=51466
- Create member for storing the request object
- Add interface function which is invoked when the queue head should be freed
- Add support functions which deal with completed queue heads
svn path=/branches/usb-bringup/; revision=51440
hub_controller:
- Implement StatusChangeEndpointCallBack called by HardwareDevice class when port status has changed on controller.
- Move Status Change Endpoint query code to IQueryStatusChageEndpoint as it is also needed by StatusChangeEndpointCallBack.
usb_request:
- Implement InternalCreateUsbRequest.
usb_queue:
- Implement CreateUsbRequest and AddUsbRequest
hardware:
- Implement GetAsyncListRegister and GetPeriodicListRegister.
- Implement SetStatusChangeEndpointCallBack for setting callback and context. Call the callback when a port status changes.
- Initialize the UsbQueue after creating the AsyncQueueHead, as the UsbQueue calls will call back with GetAsyncListRegister.
svn path=/branches/usb-bringup/; revision=51407
- Fix warning because comparing signed vs unsigned
- Implement function for retrieving the device descriptor
- Implement function for retrieving a configuration descriptor (including contained interface descriptor and endpoint descriptor)
- Cleanup interface for IUSBRequest:
- When caller initializes IUSBRequest with an IRP, then the operation mode is asynchronously. Therefore when the request is completed, IUSBRequest::ShouldReleaseRequestAfterCompletion will return true, which makes IUSBQueue call Release on IUSBRequest
- When the caller initializes IUSBRequest with an setup packet, the operation mode is synchronously. After submitting the IUSBRequest to queue, the caller should call IUSBRequest::GetResultStatus. This function will then block untill the operation has been completed. However, the caller needs to call Release() as those requests are not cleaned up by the IUSBQueue
svn path=/branches/usb-bringup/; revision=51406
- Initialize the MemoryManager only after allocating a CommonBuffer to pass to it.
- Create a QueueHead to put into the AsyncList Register.
svn path=/branches/usb-bringup/; revision=51402
- hub_controller: Implement Status Change Endpoint for RootHub.
Handling the URB can return STATUS_PENDING, as in the new SCE code. Check for this before completing the Irp.
Uncomment calls to PortStatus, SetPortFeature, and ClearPortStatus now that they are implemented.
- For function receiving a port number check that its not larger than the actual number of ports on the controller.
svn path=/branches/usb-bringup/; revision=51401
- Move USB_REQUEST_SET_FEATURE / USB_REQUEST_GET_FEATURE flags to header file.
- Remove QueueHead and Descriptor creation as its in UsbRequest.
- Move DMACommon Buffer allocation back to UsbHardwareDevice class.
- Implement Port Handling functions GetPortStatus, ClearPortStatus and SetPortFeature.
- Implement GetUSBQueue for returning pointer to UsbQueue and GetDMA to return DMAMemoryManager.
- Fix a typo in one of the defines for Port Register Flags.
svn path=/branches/usb-bringup/; revision=51397
- Use PQUEUE_HEAD as the Head of pending list and Async (Active) list vice using PLIST_ENTRY.
- Implement linking/unlinking a QueueHead to these Head QueueHeads.
- Implement chain linking/unlinking of QueueHeads. Thr plan being to used these functions during DMA operations to pull a number of QueueHeads from the pending list to place into the Async list for execution.
- Will look for optimization in these functions later.
svn path=/branches/usb-bringup/; revision=51390
- Use LIST_ENTRY in QueueHeads and Descriptors vice Next and Previous Pointers.
- Add functions to interface for setting AsyncListRegister and PeriodicListRegister.
- USBHardwareDevice: Initialize USBQueue when handling PNPStart.
- USBQueue: Allocate Common Buffer and use it to Create and Initialize DmaMemoryManager object.
- USBQueue: Implement CreateQueueHead and CreateDescriptor.
svn path=/branches/usb-bringup/; revision=51388
- Update interfaces with new methods needed for UsbHardWare class.
- Remove GetDmaMemoryManager as the DmaMemory will only be needed by UsbQueue class.
- GetDeviceDetails: Only fill in a parameter if its not null.
- Start implementing UsbQueue class.
svn path=/branches/usb-bringup/; revision=51386
- Implement IRP_MN_QUERY_DEVICE_RELATIONS for hub controller object
- Implement stub handler for URB_FUNCTION_CLASS_OTHER, URB_FUNCTION_SELECT_CONFIGURATION
- Partly implement URB_FUNCTION_GET_STATUS_FROM_DEVICE
- Return success from unimplemented USBHI_Initialize20Hub routine
- based on mjmartin usbehci driver
- Tested in Windows XP SP2
svn path=/branches/usb-bringup/; revision=51385
- Setup a default device descriptor for the root hub and initialize it with vendor & product id
- Partly implement URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE, URB_FUNCTION_CLASS_DEVICE
- based on mjmartin usbehci
svn path=/branches/usb-bringup/; revision=51384
- Fix bug in CDMAMemoryManager initialization, which calculated the bitmap length wrong
- Create interface IUSBDevice, which will be used to abstract connected usb devices
- Implement support functions for the device interface.
- Implement USBHI_CreateUsbDevice, USBHI_InitializeUsbDevice, USBHI_GetUsbDescriptors, USBHI_RemoveUsbDevice, USBHI_GetExtendedHubInformation, USBHI_RootHubInitNotification, USBHI_SetDeviceHandleData, USBDI_GetUSBDIVersion, USBDI_IsDeviceHighSpeed
- Partly implement USBHI_QueryDeviceInformation
- Based on mjmartin usbehci
svn path=/branches/usb-bringup/; revision=51372
- Implement IDMAMemoryManager interface, with IDMAMemoryManager::Allocate, IDMAMemoryManager::Free
- Fix interface of IDMAMemoryManager
- Will be used by IUSBHardwareDevice
svn path=/branches/usb-bringup/; revision=51369
- Add reference count when the hub controller is created. Necessary to prevent the controller from getting deleted when the hub driver performs interface reference removes
- Implement IRP_MN_QUERY_ID, based on mjmartin ehci driver
- Fix bug in IRP_MN_QUERY_BUS_INFORMATION, it is supposed to return a PNP_BUS_INFORMATION not a simple guid
- Implement IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE, IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO, IOCTL_INTERNAL_USB_GET_HUB_COUNT based on mjmartin ehci driver
- Add interfaces for communicating with the hub driver
- Dispatch internal device requests not wmi requests (EHCI_Dispatch)
svn path=/branches/usb-bringup/; revision=51368
- Change VendorId and DeviceId to the same size as PciConfig members, PUSHORT.
- Add support function GetBusInterface.
- Implement GetDeviceDetails and ResetPort.
svn path=/branches/usb-bringup/; revision=51367
- Add flags for Port Status Control Register and remove structiures for Port Status Control Register.
- Remove USB Status Register and use the flags instead.
- Remove functions that are not used and never will be.
- Implement InterruptServiceRoutine and Deffered Procedure Routine.
- Partially implement port status change to detect device insert and removal.
svn path=/branches/usb-bringup/; revision=51366
- Add flags and structures needed for communicating with controller and handling schedules.
- Add support routines for modifying operational registers on controller.
- Implement getting the controller capabilties, starting and stopping the controller.
svn path=/branches/usb-bringup/; revision=51365
- Create Interface IDispatchIrp which is used to handle ioctl requests
- Partly implement IHubController interface
svn path=/branches/usb-bringup/; revision=51355
- Define tag for allocations
- Fixes assert hit in ReactOS
- Fix typo in IHubController interface declaration
svn path=/branches/usb-bringup/; revision=51353
- Fix IOCTL_GET_HCD_DRIVERKEY_NAME implementation
- Now needs IOCTL_USB_GET_ROOT_HUB_NAME to get further in usbview
- Tested in Windows XP SP2
svn path=/branches/usb-bringup/; revision=51350
- Build fix#1 for mingw
- Define cxa_pure_virtual which is required that gcc is aware that it should really use the libc++ instead of falling back to libc
svn path=/branches/usb-bringup/; revision=51348
- Implement CHCDController::Initialize, CHCDController::HandlePnp for PDO / FDO,
- Partly implement CHCDController::HandleDeviceControl
- Based on mjmartin usbehci sources
- Driver now startups and acquires pnp resources
- Fails in HandleDeviceControl with IOCTL_GET_HCD_DRIVERKEY_NAME when usbview is launched
- Tested in Windows XP SP2 + Vmware Server 2.0.2
svn path=/branches/usb-bringup/; revision=51343
- Create empty USB EHCI driver in c++
- Design & review the interfaces with mjmartin
- Create stubs for creating IUSBHardwareDevice / IHCDController classes
- Implement DriverEntry, EHCI_AddDevice and EHCI_Dispatch
svn path=/branches/usb-bringup/; revision=51335
- Re-implement DMA buffer routines. It is now faster and consumes less memory overhead per allocated memory block.
- IoGetDeviceProperty needs a PDO
- Add few comments
- No need to clear buffer twice in CreateQueueHead / CreateDescriptor
svn path=/branches/cmake-bringup/; revision=51324
* Return 1 in WM_ERASEBKGND when desktop is painted
* Fix background for desktop icons and their labels
* Moreover fixes explorer_new background
svn path=/trunk/; revision=51322
* Sync listview to Wine 1.3.17
* Set background and text color before calling DrawFocusRect. Those colors are used by monochrome brush during painting. Tested this function in Windows and our implementation is correct. Wine has DrawFocusRect not correctly implemented and that's why they don't see this bug. Should be sent to wine (tm).
svn path=/trunk/; revision=51321
* Copy RegQueryValueExA from Wine. Fixes 24 winetests fails which appeared after r51222. They are caused by calling RegQueryValueExA with buffer size set to large value. Old implementation was allocating new buffer with specified size (it was failing) and using unicode function. New implementation use given buffer size only when coping data.
See issue #6105 for more details.
svn path=/trunk/; revision=51314
NetUserModalsGet failed if the domain SID returned by LsaQueryInformationPolicy was NULL. Handle the NULL SID case correctly.
See issue #6102 for more details.
svn path=/trunk/; revision=51313