]> git.hungrycats.org Git - linux/commit
[CPUFREQ] Merge speedstep-smi driver.
authorDave Jones <davej@redhat.com>
Tue, 9 Sep 2003 22:35:48 +0000 (23:35 +0100)
committerDave Jones <davej@redhat.com>
Tue, 9 Sep 2003 22:35:48 +0000 (23:35 +0100)
commite7a4d809d218a0cb17846757506bba3c47dc5dc0
treeed4371239f946991adcb48568e69cbb9bc05a3c3
parentfa1d243483f93f00710fe61b75fc0b22773bd9a1
[CPUFREQ] Merge speedstep-smi driver.
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
arch/i386/boot/setup.S
arch/i386/kernel/cpu/cpufreq/Kconfig
arch/i386/kernel/cpu/cpufreq/Makefile
arch/i386/kernel/cpu/cpufreq/speedstep-smi.c [new file with mode: 0644]
arch/i386/kernel/i386_ksyms.c
arch/i386/kernel/setup.c
include/asm-i386/ist.h [new file with mode: 0644]
include/asm-i386/setup.h