#8987: ps2: initial setup of command byte failed ----------------------------------+---------------------------------------- Reporter: x-ist | Owner: siarzhuk Type: bug | Status: new Priority: normal | Milestone: R1 Component: | Version: R1/Development Drivers/Keyboard/PS2 | Keywords: ps2 keyboard touchpad OHCI Resolution: | Blocking: Blocked By: | Platform: All Has a Patch: 0 | ----------------------------------+---------------------------------------- Comment (by x-ist): > That is most probably related to legacy emulation. The first syslog mentions the SMM (System Management Mode, i.e. firmware/BIOS) being in control at the time OHCI is initialized and it not responding to the handover request. I had a look at the freeBSD implementation of that handover. That's where we borrowed this code part from, right? Actually there is a difference in performing the ownership change request. FreeBSD: {{{ /* Determine in what context we are running. */ ctl = OREAD4(sc, OHCI_CONTROL); if (ctl & OHCI_IR) { /* SMM active, request change */ DPRINTF("SMM active, request owner change\n"); OWRITE4(sc, OHCI_COMMAND_STATUS, OHCI_OCR); ... }}} Haiku: {{{ // Determine in what context we are running (Kindly copied from FreeBSD) uint32 control = _ReadReg(OHCI_CONTROL); if (control & OHCI_INTERRUPT_ROUTING) { TRACE_ALWAYS("smm is in control of the host controller\n"); uint32 status = _ReadReg(OHCI_COMMAND_STATUS); _WriteReg(OHCI_COMMAND_STATUS, status | OHCI_OWNERSHIP_CHANGE_REQUEST); }}} I wondered why we are OR-ing the status with OHCI_OWNERSHIP_CHANGE_REQUEST, which FreeBSD does not. -- Ticket URL: <http://dev.haiku-os.org/ticket/8987#comment:10> Haiku <http://dev.haiku-os.org> Haiku - the operating system.