• Dave Jones's avatar
    [CPUFREQ] Merge speedstep-smi driver. · e7a4d809
    Dave Jones authored
    From: Hiroshi Miura <miura@da-cha.org>
    
    Intel SpeedStep driver using a BIOS SMI call.
    
    Quoting his original announcement:
    
    "This driver is based on the information from
    
    1. Microsoft Windows XP Document.
    we can get the SMI interface values from ax=E980/int15 BIOS call.
    
    2. Intel SpeedStep Applet Document.(from HP.com)
    http://h18007.www1.hp.com/support/files/evonotebook/us/download/10631.html
    " Adds code to request transition ownership when processing
    the system critical resume message. When a critical hibernate occurs,
    the Applet does not receive any system level notification. The change forces
    the Applet to re-acquire transition ownership upon resume from a critical hibernate. "
    
    This is informative. This saied that  something 'ownership' call is needed on SMI
    interface first.
    
    3. Grover, Andrew's int 15h patch posted to cpufreq ml
    Message-ID: <F760B14C9561B941B89469F59BA3A847E96E28@orsmsx401.jf.intel.com>
    code which call BIOS to get SMI values. I included it.
    
    4. Malik Martin's rev engineering results.
    call is made with BX, CX, EDI register values.
    and need signature 'ISG' when call.
    find function values. bx=1(get) and bx=2(set)
    
    5. Marc Lehmann's 'speedstep' utility,
    sample of assembler code to call SMI.
    
    6. My work.
    find function to return max/min freq which system supportd. (bx=4)
    more values are gotten, but I cannot understand...
    find 'ownership' function value(bx=0, which is other than 1 2 4..).
    
    ToDo(in pregress)
    support governor "auto" and using smi_event call, imprement auto freqchange
    feature.
    test on 440BX/ZX platform.
    
    Memo
     module parameters are override result of an int 15h/eax=E890h call.
     these parameter value are gotten from Windows XP registory."
    
    Also includes some bugfixes, updates and workarounds from me.
    
    NB: A lot of BIOS out there are buggy. You might want to try this driver
    also with Intel's default values -- smi_cmd = 0x82 and smi_port = 0xb2
    e7a4d809
speedstep-smi.c 9.14 KB