#11054 NORM Future : EC SCI mask not written correctly when going into suspend

Zarro Boogs per Child bugtracker at laptop.org
Wed Jul 27 17:47:47 EDT 2011

#11054: EC SCI mask not written correctly when going into suspend
           Reporter:  dsd                  |       Owner:  pgf           
               Type:  defect               |      Status:  new           
           Priority:  normal               |   Milestone:  Future Release
          Component:  embedded controller  |     Version:  not specified 
         Resolution:                       |    Keywords:                
        Next_action:  never set            |    Verified:  0             
Deployment_affected:                       |   Blockedby:                
           Blocking:                       |  

Comment(by rsmith):

 Replying to [comment:8 dsd]:
 > As requested by Richard, here is a bzImage that reproduces the issue:

 I did further research into this issue because the previous explanation
 did not match what I see in the posted EC log.  The EC log shows
 'SCIMask=00'. This means that the EC indeed received 2 bytes.  The S068IBF
 message that occur after that line occurs because the ibf flag is stuck.
 This is something that has always happened on suspend.

 The core problem is not a missing 2nd data byte but the fact that its zero
 rather than 01.  After debugging further what I believe is happening is
 that we don't allow enough time to pass between writing the last byte and
 when the bus power turns off for suspend.  Suspend drops the power to the
 LPC bus.  So the EC reads the value but its zero rather than 01 and the
 LPC bridge goes into a wacky mode until power is restored on a resume.

 This is is supported by the fact that you can also make things work by
 adding a mdelay() call after the call to olpc_ec_cmd().

 Paul's patch is exactly the right fix.  With the patch we now wait for the
 ibf flag to clear which means that we don't turn off the power to the bus
 anymore while the EC is in the process of reading the byte.  ibf is
 cleared after the byte has been read.  This not only fixes the 2nd byte
 zero problem but also fixes the infinite ibf flag that used to occur when
 going into suspend.

Ticket URL: <http://dev.laptop.org/ticket/11054#comment:9>
One Laptop Per Child <http://laptop.org/>
OLPC bug tracking system

More information about the Bugs mailing list