[haiku-bugs] Re: [Haiku] #8987: ps2: initial setup of command byte failed

  • From: "x-ist" <trac@xxxxxxxxxxxx>
  • Date: Thu, 20 Sep 2012 07:26:58 -0000

#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.

Other related posts: