[x86 setup] Make struct ist_info cross-architecture, and use in setup code
authorH. Peter Anvin <hpa@zytor.com>
Thu, 19 Jul 2007 00:19:30 +0000 (17:19 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Wed, 25 Jul 2007 19:02:21 +0000 (12:02 -0700)
Make "struct ist_info" valid on both i386 and x86-64, and use the
structure by name in the setup code.  Additionally, "Intel SpeedStep
IST" is redundant, refer to it as IST consistently.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
arch/i386/boot/main.c
include/asm-i386/bootparam.h
include/asm-i386/ist.h
include/asm-x86_64/ist.h [new file with mode: 0644]

index 7f01f96..0eeef39 100644 (file)
@@ -73,15 +73,15 @@ static void keyboard_set_repeat(void)
 }
 
 /*
- * Get Intel SpeedStep IST information.
+ * Get Intel SpeedStep (IST) information.
  */
-static void query_speedstep_ist(void)
+static void query_ist(void)
 {
        asm("int $0x15"
-           : "=a" (boot_params.speedstep_info[0]),
-             "=b" (boot_params.speedstep_info[1]),
-             "=c" (boot_params.speedstep_info[2]),
-             "=d" (boot_params.speedstep_info[3])
+           : "=a" (boot_params.ist_info.signature),
+             "=b" (boot_params.ist_info.command),
+             "=c" (boot_params.ist_info.event),
+             "=d" (boot_params.ist_info.perf_level)
            : "a" (0x0000e980),  /* IST Support */
              "d" (0x47534943)); /* Request value */
 }
@@ -144,8 +144,8 @@ void main(void)
        query_voyager();
 #endif
 
-       /* Query SpeedStep IST information */
-       query_speedstep_ist();
+       /* Query Intel SpeedStep (IST) information */
+       query_ist();
 
        /* Query APM information */
 #if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE)
index 211f3f9..b91b017 100644 (file)
@@ -4,8 +4,9 @@
 #include <linux/types.h>
 #include <linux/screen_info.h>
 #include <linux/apm_bios.h>
-#include <asm/e820.h>
 #include <linux/edd.h>
+#include <asm/e820.h>
+#include <asm/ist.h>
 #include <video/edid.h>
 
 struct setup_header {
@@ -59,7 +60,7 @@ struct boot_params {
        struct screen_info screen_info;                 /* 0x000 */
        struct apm_bios_info apm_bios_info;             /* 0x040 */
        u8  _pad2[12];                                  /* 0x054 */
-       u32 speedstep_info[4];                          /* 0x060 */
+       struct ist_info ist_info;                       /* 0x060 */
        u8  _pad3[16];                                  /* 0x070 */
        u8  hd0_info[16];       /* obsolete! */         /* 0x080 */
        u8  hd1_info[16];       /* obsolete! */         /* 0x090 */
index d13d1e6..ef2003e 100644 (file)
 
 #ifdef __KERNEL__
 
+#include <linux/types.h>
+
 struct ist_info {
-       unsigned long   signature;
-       unsigned long   command;
-       unsigned long   event;
-       unsigned long   perf_level;
+       u32 signature;
+       u32 command;
+       u32 event;
+       u32 perf_level;
 };
 
 extern struct ist_info ist_info;
diff --git a/include/asm-x86_64/ist.h b/include/asm-x86_64/ist.h
new file mode 100644 (file)
index 0000000..338857e
--- /dev/null
@@ -0,0 +1 @@
+#include <asm-i386/ist.h>