else
{
LOG("Relocated OUT/SETUP");
- tVAddr ptr = MM_MapTemp(td->BufferPointer);
- memcpy( (void*)ptr, Data, Length );
+ void *ptr = MM_MapTemp(td->BufferPointer);
+ memcpy( ptr, Data, Length );
MM_FreeTemp(ptr);
td->Control |= TD_CTL_IOC;
}
{
char *src, *dest;
int src_ofs = TD->BufferPointer & (PAGE_SIZE-1);
- src = (void *) MM_MapTemp(TD->BufferPointer);
- dest = (void *) MM_MapTemp(info->FirstPage);
+ src = MM_MapTemp(TD->BufferPointer);
+ dest = MM_MapTemp(info->FirstPage);
// Check for a single page transfer
if( byte_count + info->Offset <= PAGE_SIZE )
{
TD->BufferPointer, info->FirstPage, info->SecondPage, TD);
int part_len = PAGE_SIZE - info->Offset;
memcpy(dest + info->Offset, src + src_ofs, part_len);
- MM_FreeTemp( (tVAddr)dest );
- dest = (void *) MM_MapTemp(info->SecondPage);
+ MM_FreeTemp( dest );
+ dest = MM_MapTemp(info->SecondPage);
memcpy(dest, src + src_ofs + part_len, byte_count - part_len);
}
- MM_FreeTemp( (tVAddr)src );
- MM_FreeTemp( (tVAddr)dest );
+ MM_FreeTemp( src );
+ MM_FreeTemp( dest );
}
// Callback
if( info->Callback != NULL )
{
LOG("Calling cb %p (%i bytes)", info->Callback, byte_count);
- void *ptr = (void *) MM_MapTemp( TD->BufferPointer );
+ void *ptr = MM_MapTemp( TD->BufferPointer );
info->Callback( info->CallbackPtr, ptr, byte_count );
- MM_FreeTemp( (tVAddr)ptr );
+ MM_FreeTemp( ptr );
}
// Clean up info
Uint16 status = _InWord(Host, USBSTS);
LOG("%p: status = 0x%04x", Ptr, status);
+
// Interrupt-on-completion
if( status & 1 )
{
Semaphore_Signal(&gUHCI_InterruptSempahore, 1);
}
+ // USB Error Interrupt
+ if( status & 2 )
+ {
+
+ }
+
+ // Resume Detect
+ // - Fired if in suspend state and a USB device sends the RESUME signal
+ if( status & 4 )
+ {
+
+ }
+
+ // Host System Error
+ if( status & 8 )
+ {
+
+ }
+
+ // Host Controller Process Error
+ if( status & 0x10 )
+ {
+ Log_Error("UHCI", "Host controller process error on controller %p", Ptr);
+ }
+
_OutWord(Host, USBSTS, status);
}