Skip to content
  • Henrik Rydberg's avatar
    hwmon: applesmc: fix the 'wait status failed: c != 8' problem · 84d2d7f2
    Henrik Rydberg authored
    
    
    On many Macbooks since mid 2007, the Pro, C2D and Air models, applesmc
    fails to read some or all SMC ports.  This problem has various effects,
    such as flooded logfiles, malfunctioning temperature sensors,
    accelerometers failing to initialize, and difficulties getting backlight
    functionality to work properly.
    
    The root of the problem seems to be the command protocol.  The current
    code sends out a command byte, then repeatedly polls for an ack before
    continuing to send or recieve data.  From experiments leading to this
    patch, it seems the command protocol never quite worked or changed so that
    one now sends a command byte, waits a little bit, polls for an ack, and if
    it fails, repeats the whole thing by sending the command byte again.
    
    This patch implements a send_command function according to the new
    interpretation of the protocol, and should work also for earlier models.
    
    Signed-off-by: default avatarHenrik Rydberg <rydberg@euromail.se>
    Cc: Nicolas Boichat <nicolas@boichat.ch>
    Cc: Riki Oktarianto <rkoktarianto@gmail.com>
    Cc: Mark M. Hoffman <mhoffman@lightlink.com>
    Cc: Jean Delvare <khali@linux-fr.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    84d2d7f2