Chameleon

View ps2_fix.diff

1diff -iru cham-stock/trunk/i386/boot2/boot.h cham-new/trunk/i386/boot2/boot.h
2--- trunk/i386/boot2/boot.h2012-06-07 12:14:58.000000000 +0400
3+++ trunk/i386/boot2/boot.h2012-06-07 13:40:26.000000000 +0400
4@@ -78,6 +78,7 @@
5 #define kDSDT"DSDT"/* acpi_patcher.c */
6 #define kDropSSDT"DropSSDT"/* acpi_patcher.c */
7 #define kRestartFix"RestartFix"/* acpi_patcher.c */
8+#define kPS2RestartFix"PS2RestartFix"/* acpi_patcher.c */
9 #define kGeneratePStates"GeneratePStates"/* acpi_patcher.c */
10 #define kGenerateCStates"GenerateCStates"/* acpi_patcher.c */
11 #define kCSTUsingSystemIO"CSTUsingSystemIO"/* acpi_patcher.c */
12Only in cham-new/trunk/i386/libsaio: .DS_Store
13diff -iru cham-stock/trunk/i386/libsaio/acpi_patcher.c cham-new/trunk/i386/libsaio/acpi_patcher.c
14--- trunk/i386/libsaio/acpi_patcher.c2012-06-07 12:14:48.000000000 +0400
15+++ trunk/i386/libsaio/acpi_patcher.c2012-06-07 17:32:45.000000000 +0400
16@@ -681,12 +681,18 @@
17 struct acpi_2_fadt *fadt_mod;
18 bool fadt_rev2_needed = false;
19 bool fix_restart;
20+bool fix_restart_ps2;
21 const char * value;
22
23 // Restart Fix
24 if (Platform.CPU.Vendor == 0x756E6547) {/* Intel */
25 fix_restart = true;
26-getBoolForKey(kRestartFix, &fix_restart, &bootInfo->chameleonConfig);
27+fix_restart_ps2 = false;
28+if ( getBoolForKey(kPS2RestartFix, &fix_restart_ps2, &bootInfo->chameleonConfig) && fix_restart_ps2)
29+fix_restart = true;
30+else
31+getBoolForKey(kRestartFix, &fix_restart, &bootInfo->chameleonConfig);
32+
33 } else {
34 verbose ("Not an Intel platform: Restart Fix not applied !!!\n");
35 fix_restart = false;
36@@ -741,14 +747,27 @@
37 // Patch FADT to fix restart
38 if (fix_restart)
39 {
40-fadt_mod->Flags|= 0x400;
41-fadt_mod->Reset_SpaceID= 0x01; // System I/O
42-fadt_mod->Reset_BitWidth= 0x08; // 1 byte
43-fadt_mod->Reset_BitOffset= 0x00; // Offset 0
44-fadt_mod->Reset_AccessWidth= 0x01; // Byte access
45-fadt_mod->Reset_Address= 0x0cf9; // Address of the register
46-fadt_mod->Reset_Value= 0x06; // Value to write to reset the system
47-verbose("FADT: Restart Fix applied!\n");
48+if (fix_restart_ps2) {
49+fadt_mod->Flags|= 0x400;
50+fadt_mod->Reset_SpaceID= 0x01; // System I/O
51+fadt_mod->Reset_BitWidth= 0x08; // 1 byte
52+fadt_mod->Reset_BitOffset= 0x00; // Offset 0
53+fadt_mod->Reset_AccessWidth= 0x01; // Byte access
54+fadt_mod->Reset_Address= 0x64; // Address of the register
55+fadt_mod->Reset_Value= 0xfe; // Value to write to reset the system
56+msglog("FADT: PS2 Restart Fix applied!\n");
57+}
58+else {
59+fadt_mod->Flags|= 0x400;
60+fadt_mod->Reset_SpaceID= 0x01; // System I/O
61+fadt_mod->Reset_BitWidth= 0x08; // 1 byte
62+fadt_mod->Reset_BitOffset= 0x00; // Offset 0
63+fadt_mod->Reset_AccessWidth= 0x01; // Byte access
64+fadt_mod->Reset_Address= 0x0cf9; // Address of the register
65+fadt_mod->Reset_Value= 0x06; // Value to write to reset the system
66+verbose("FADT: ACPI Restart Fix applied!\n");
67+}
68+
69 }
70
71 // Patch DSDT Address if we have loaded DSDT.aml
72

Archive Download this file

Attachment to issue 264

Created: 11 years 10 months ago by DM