Skip to content

Commit 4021d85

Browse files
simonelombardobinarymaster
authored andcommitted
[USBOHCI] Workaround for interrupts problem on Xbox
CORE-16352
1 parent 0d78db5 commit 4021d85

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

drivers/usb/usbohci/usbohci.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2124,6 +2124,10 @@ OHCI_CheckController(IN PVOID ohciExtension)
21242124
ULONG FmNumber;
21252125
USHORT FmDiff;
21262126
POHCI_HCCA HcHCCA;
2127+
PULONG InterruptEnableReg = (PULONG)&OhciExtension->OperationalRegs->HcInterruptEnable;
2128+
PULONG InterruptStatusReg = (PULONG)&OhciExtension->OperationalRegs->HcInterruptStatus;
2129+
OHCI_REG_INTERRUPT_STATUS IntStatus;
2130+
OHCI_REG_INTERRUPT_ENABLE_DISABLE IntEnable;
21272131

21282132
//DPRINT_OHCI("OHCI_CheckController: ...\n");
21292133

@@ -2132,6 +2136,14 @@ OHCI_CheckController(IN PVOID ohciExtension)
21322136
if (!OHCI_HardwarePresent(OhciExtension, TRUE))
21332137
return;
21342138

2139+
/* Clear all bits in HcInterruptStatus register */
2140+
IntStatus.AsULONG = 0xFFFFFFFF;
2141+
WRITE_REGISTER_ULONG(InterruptStatusReg, IntStatus.AsULONG);
2142+
/* Setup HcInterruptEnable register */
2143+
IntEnable.AsULONG = 0xFFFFFFFF;
2144+
IntEnable.Reserved1 = 0;
2145+
WRITE_REGISTER_ULONG(InterruptEnableReg, IntEnable.AsULONG);
2146+
21352147
HcControlReg = (PULONG)&OperationalRegs->HcControl;
21362148
HcControl.AsULONG = READ_REGISTER_ULONG(HcControlReg);
21372149

0 commit comments

Comments
 (0)