Skip to content

OHCI

OH0 initialization

ohci_core (0x138A00AC) initializes the OH0 controller at 0x0D050000. It writes 0x80000000 to 0x0D050014 then reads a 32 bit value from 0x0D050000 and checks its revision field.

Bits Field Required value
7:0 Revision 0x10

If the revision does not match, initialization reports -4 through ohci_core: OHCI initialization failed: %d and takes the exit path before resetting the controller. The comparison ignores the upper 24 bits of the revision register.

Controller reset

After the revision and controller-state checks succeed, OH0 requests a reset through 0x0D050008. It uses 32 bit accesses and preserves the other bits when setting the reset request.

Bits Field Firmware use
0 Host controller reset Set to request reset. Wait for the controller to clear it.

OH0 calls delay (0x138A0048) with 10000 microseconds before checking completion. This helper restarts an IOS timer and waits for a message on its completion queue. If the reset request remains set, OH0 waits 2 microseconds between further checks for up to 10000 iterations. A request that remains set after those checks causes initialization to report -10.