[USBEHCI_NEW]

- 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
This commit is contained in:
Johannes Anderwald 2011-04-28 15:16:33 +00:00
parent 8df637b778
commit ede1d48da4
5 changed files with 82 additions and 36 deletions

View file

@ -603,6 +603,12 @@ CUSBRequest::BuildControlTransferQueueHead(
m_TransferDescriptors[1]->Token.Bits.PIDCode = PID_CODE_IN_TOKEN;
m_TransferDescriptors[1]->Token.Bits.TotalBytesToTransfer = m_TransferBufferLength;
//
// FIXME: check if the request spawns over a page -> fill other members
//
PC_ASSERT(m_TransferBufferLength <= PAGE_SIZE);
m_TransferDescriptors[1]->BufferPointer[0] = MmGetPhysicalAddress(MmGetMdlVirtualAddress(m_TransferBufferMDL)).LowPart;
//
// setup out descriptor
//
@ -845,12 +851,11 @@ NTSTATUS
CUSBRequest::BuildSetupPacket()
{
NTSTATUS Status;
PHYSICAL_ADDRESS PhysicalAddress;
//
// allocate common buffer setup packet
//
Status = m_DmaManager->Allocate(sizeof(USB_DEFAULT_PIPE_SETUP_PACKET), (PVOID*)&m_DescriptorPacket, &PhysicalAddress);
Status = m_DmaManager->Allocate(sizeof(USB_DEFAULT_PIPE_SETUP_PACKET), (PVOID*)&m_DescriptorPacket, &m_DescriptorSetupPacket);
if (!NT_SUCCESS(Status))
{
//
@ -865,7 +870,6 @@ CUSBRequest::BuildSetupPacket()
// copy setup packet
//
RtlCopyMemory(m_DescriptorPacket, m_SetupPacket, sizeof(USB_DEFAULT_PIPE_SETUP_PACKET));
m_DescriptorSetupPacket = PhysicalAddress;
}
else
{