- Rewrite GetDeviceIds function
- Don't rely on hardcoded constants when building the device id strings
- Don't corrupt the device id string when building the instance id string
- Fix bug in GetUsbStringDescriptor which read beyond the allocated string when copying the result.
svn path=/branches/usb-bringup-trunk/; revision=55238
- Fix initialization bugs for EHCI controllers
- Try again to release ownership of low-speed devices after reset
- Wait for the port reset to complete
svn path=/branches/usb-bringup-trunk/; revision=55232
- Set the correct transfer direction value in the CBW
- Fixes the infamous system hang that occurred when writing to a USB drive
svn path=/branches/usb-bringup-trunk/; revision=55223
- Implement querying device relations for FDO
- Implement creating device objects for each discovered function
- Invalidate device relations after the child pdo have been created
- Implement PDO device relations, most of query id, query device capabilities, start device
- USBCCGP should now initialize and create the child pdos
- Next is device control handling
- WIP, untested
svn path=/branches/usb-bringup-trunk/; revision=55219
- Merge r55212 and 55215
- Add a temporary hack to allow testing installation on a device not bootable by the BIOS (like USB drives in VirtualBox)
- USB devices now show up as installation targets during setup but attempting to install onto them results in setup hanging due to bugs in the USB code
svn path=/branches/usb-bringup-trunk/; revision=55217
- Query bus interface and check if USBC_DEVICE_CONFIGURATION_INTERFACE_V1 is supported. This interface is implemented by attached usb filter drivers and is used to enumerate functions of the composite usb device
- Implement enumeration of function by using usb interface association descriptors and by the USBC_DEVICE_CONFIGURATION_INTERFACE_V1
- Needs audio legacy method and union function descriptors to be fully functional
- WIP, not yet tested
- Fix build with mingw by declaring _DISK_GEOMETRY_EX outside the function
svn path=/branches/usb-bringup-trunk/; revision=55197
- Start implement USB Composite generic parent driver which is used for USB composite devices
- Start implement FDO initialization, needs to implement parsing of usb interface assocaition descriptor to complete FDO initialization
svn path=/branches/usb-bringup-trunk/; revision=55195
- Implement IRP_MN_REMOVE_DEVICE for FDOs and PDOs
- USB mice will now work after being disconnected then reconnected
svn path=/branches/usb-bringup-trunk/; revision=55194
- Multiple the scroll value by WHEEL_DELTA (120) like i8042prt does
- Scrolling with USB mice works now
- Disable debugging
svn path=/branches/usb-bringup-trunk/; revision=55191
- Properly dismiss the enable status changed interrupt to avoid an interrupt storm after a device is disconnected
svn path=/branches/usb-bringup-trunk/; revision=55189
- Fix GetPortStatus() and remove the cached status stuff (except for reset that we have to cache because the EHCI spec has no port reset complete bit)
svn path=/branches/usb-bringup-trunk/; revision=55188
- Revert r55167 now that OHCI is fixed
- USB drives attached to an OHCI controller before boot are now enumerated without a reconnect needed
svn path=/branches/usb-bringup-trunk/; revision=55187
- Remove the hacky way of determining if a device connect occurred (prone to all sorts of race conditions) and just always create a device since the only reason we reset right now is for a device connect
svn path=/branches/usb-bringup-trunk/; revision=55186
- Fix and enable the proper GetPortStatus implementation
- Remove the old hacked cached port status mess
svn path=/branches/usb-bringup-trunk/; revision=55185
- Fix StartController() to perform initialization according to OHCI spec
- Fixes the infamous OHCI initialization hang on real hardware
svn path=/branches/usb-bringup-trunk/; revision=55181
- No need to turn off interrupts
- Check if bios is active
- Check for timeouts when resetting host controller
svn path=/branches/usb-bringup-trunk/; revision=55171
- Don't turn off interrupts before setting the OHCI_OWNERSHIP_CHANGE_REQUEST bit because it prevents the SMM driver from receiving the interrupt that tells it to give up ownership of the host controller
- This fix should be merged to Haiku also which has the same bug
svn path=/branches/usb-bringup-trunk/; revision=55170
- Add debug trace
[USBOHCI]
- Implement proper GetPortStatus
[USBHUB]
- Reset all connected ports before sending first SCE
- USB Devices present before booting are now detected with OHCI controller. EHCI code is present but not yet activated
svn path=/branches/usb-bringup-trunk/; revision=55167
- Rewrite pending SRB handling and change some behavior of the IRP queue
- The caller is no longer responsible for checking whether it can call USBSTOR_QueueNextRequest; frozen IRP queue and pending SRB are both handled for them
- It's no longer required for the caller of USBSTOR_QueueTerminateRequest to know whether the SRB was active (which was impossible before when handling a cancellation)
- Many potential race issues with IRP cancellation are eliminated
- Debugging hung SRBs is much easier now that pointer to the active one is stored in the FDO
svn path=/branches/usb-bringup-trunk/; revision=55157
Finally add the long awaited Mount Point Manager (aka mountmgr).
It's not complete yet, but will do most of the job it's been designed for.
What's missing is some dos volumes handlers, complete database support (local - registry - is complete, remote - files - is not).
It handles NTFS properties like reparse points.
It also handles devices with drive letters and those without drive letters (by using their unique ID).
Devices removal/arrival is detected through notifications (might be an issue).
Some work will have to be done in storage stack to fully support it.
Most of its IOCTL have been implemented (it's possible, for example, to notify a volume arrival through them, in case notifications don't work).
There's still some work to do on it to have it complete and fully implemented.
Enjoy!
svn path=/branches/usb-bringup-trunk/; revision=55156
- Fix bugs introduced in 55134, 55135
- USB Mass Storage devices should now automatically install again
svn path=/branches/usb-bringup-trunk/; revision=55147
- Fix cancellation for IRPs that have already been dispatched for processing by IoStartNextPacket
- Don't complete IRPs with the IRP list lock held
- Clear the cancel routine before completing the IRP
svn path=/branches/usb-bringup-trunk/; revision=55138