1package main 2 3import "fmt" 4 5func FIXMEEC(ctx Context) { 6 ap := Create(ctx, "acpi/platform.asl") 7 defer ap.Close() 8 9 hasKeyboard := ctx.InfoSource.HasPS2() 10 11 sbGPE := GuessECGPE(ctx) 12 var GPEUnsure bool 13 if sbGPE < 0 { 14 sbGPE = SouthBridge.EncodeGPE(1) 15 GPEUnsure = true 16 SouthBridge.NeedRouteGPIOManually() 17 } else { 18 GPEUnsure = false 19 SouthBridge.EnableGPE(SouthBridge.DecodeGPE(sbGPE)) 20 } 21 22 Add_gpl(ap) 23 ap.WriteString( 24 `Method(_WAK, 1) 25{ 26 /* FIXME: EC support */ 27 Return(Package() {0, 0}) 28} 29 30Method(_PTS,1) 31{ 32 /* FIXME: EC support */ 33} 34`) 35 36 ecs := ctx.InfoSource.GetEC() 37 MainboardIncludes = append(MainboardIncludes, "ec/acpi/ec.h") 38 MainboardIncludes = append(MainboardIncludes, "console/console.h") 39 40 MainboardInit += 41 ` /* FIXME: trim this down or remove if necessary */ 42 { 43 int i; 44 const u8 dmp[256] = {` 45 for i := 0; i < 0x100; i++ { 46 if (i & 0xf) == 0 { 47 MainboardInit += fmt.Sprintf("\n\t\t\t/* %02x */ ", i) 48 } 49 MainboardInit += fmt.Sprintf("0x%02x,", ecs[i]) 50 if (i & 0xf) != 0xf { 51 MainboardInit += " " 52 } 53 } 54 MainboardInit += "\n\t\t};\n" 55 MainboardInit += ` 56 printk(BIOS_DEBUG, "Replaying EC dump ..."); 57 for (i = 0; i < 256; i++) 58 ec_write (i, dmp[i]); 59 printk(BIOS_DEBUG, "done\n"); 60 } 61` 62 63 KconfigBool["EC_ACPI"] = true 64 si := Create(ctx, "acpi/superio.asl") 65 defer si.Close() 66 67 if hasKeyboard { 68 Add_gpl(si) 69 si.WriteString("#include <drivers/pc80/pc/ps2_controller.asl>\n") 70 MainboardInit += fmt.Sprintf("\tpc_keyboard_init(NO_AUX_DEVICE);\n") 71 MainboardIncludes = append(MainboardIncludes, "pc80/keyboard.h") 72 } 73 74 ec := Create(ctx, "acpi/ec.asl") 75 defer ec.Close() 76 77 Add_gpl(ec) 78 ec.WriteString(`Device(EC) 79{ 80 Name (_HID, EISAID("PNP0C09")) 81 Name (_UID, 0) 82`) 83 if GPEUnsure { 84 ec.WriteString("\t/* FIXME: Set GPE */\n") 85 ec.WriteString("\t/* Name (_GPE, ?) */\n") 86 } else { 87 fmt.Fprintf(ec, "\tName (_GPE, %d)\n", sbGPE) 88 } 89 ec.WriteString("/* FIXME: EC support */\n") 90 ec.WriteString("}\n") 91} 92