| package main |
| |
| import "fmt" |
| |
| func FIXMEEC(ctx Context) { |
| ap := Create(ctx, "acpi/platform.asl") |
| defer ap.Close() |
| |
| hasKeyboard := IsIOPortUsedBy(ctx, 0x60, "keyboard") |
| |
| sbGPE := GuessECGPE(ctx) |
| var GPEUnsure bool |
| if sbGPE < 0 { |
| sbGPE = SouthBridge.EncodeGPE(1) |
| GPEUnsure = true |
| SouthBridge.NeedRouteGPIOManually() |
| } else { |
| GPEUnsure = false |
| SouthBridge.EnableGPE(SouthBridge.DecodeGPE(sbGPE)) |
| } |
| |
| ap.WriteString( |
| `Method(_WAK,1) |
| { |
| /* FIXME: EC support */ |
| Return(Package(){0,0}) |
| } |
| |
| Method(_PTS,1) |
| { |
| /* FIXME: EC support */ |
| } |
| `) |
| |
| ecs := ctx.InfoSource.GetEC() |
| MainboardIncludes = append(MainboardIncludes, "ec/acpi/ec.h") |
| MainboardIncludes = append(MainboardIncludes, "console/console.h") |
| |
| MainboardInit += |
| ` /* FIXME: trim this down or remove if necessary */ |
| { |
| int i; |
| const u8 dmp[256] = {` |
| for i := 0; i < 0x100; i++ { |
| if (i & 0xf) == 0 { |
| MainboardInit += fmt.Sprintf("\n\t\t\t/* %02x */ ", i) |
| } |
| MainboardInit += fmt.Sprintf("0x%02x,", ecs[i]) |
| if (i & 0xf) != 0xf { |
| MainboardInit += " " |
| } |
| } |
| MainboardInit += "\n\t\t};\n" |
| MainboardInit += ` |
| printk(BIOS_DEBUG, "Replaying EC dump ..."); |
| for (i = 0; i < 256; i++) |
| ec_write (i, dmp[i]); |
| printk(BIOS_DEBUG, "done\n"); |
| } |
| ` |
| |
| KconfigBool["EC_ACPI"] = true |
| si := Create(ctx, "acpi/superio.asl") |
| defer si.Close() |
| |
| if hasKeyboard { |
| si.WriteString("#include <drivers/pc80/ps2_controller.asl>\n") |
| MainboardInit += fmt.Sprintf("\tpc_keyboard_init();\n") |
| MainboardIncludes = append(MainboardIncludes, "pc80/keyboard.h") |
| } |
| |
| ec := Create(ctx, "acpi/ec.asl") |
| defer ec.Close() |
| |
| ec.WriteString(`Device(EC) |
| { |
| Name (_HID, EISAID("PNP0C09")) |
| Name (_UID, 0) |
| `) |
| if GPEUnsure { |
| ec.WriteString("\t/* FIXME: Set GPE */\n") |
| ec.WriteString("\t/* Name (_GPE, ?) */\n") |
| } else { |
| fmt.Fprintf(ec, "\tName (_GPE, %d)\n", sbGPE) |
| } |
| ec.WriteString("/* FIXME: EC support */\n") |
| ec.WriteString("}\n") |
| } |