aboutsummaryrefslogtreecommitdiff
path: root/util/autoport/ec_fixme.go
diff options
context:
space:
mode:
authorVladimir Serbinenko <phcoder@gmail.com>2014-10-15 21:51:47 +0200
committerVladimir Serbinenko <phcoder@gmail.com>2015-05-29 11:26:29 +0200
commit3129f792f77e310ea246503f8b68b76fc269cfd2 (patch)
tree9f7538131d0cbb87e39f19be9c9d0c56fbf80107 /util/autoport/ec_fixme.go
parentb06a249c3b766531ca247bb1278d34875f0d86e4 (diff)
autoport: Write autoport together with porting guide for sandy/ivybridge.
This should be able to generate bootable ports for sandy/ivy, possible with minor fixes. Howto is in readme.md Change-Id: Ia126cf0939ef2dc2cdbb7ea100d2b63ea6b02f28 Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com> Reviewed-on: http://review.coreboot.org/7131 Tested-by: build bot (Jenkins) Reviewed-by: Edward O'Callaghan <edward.ocallaghan@koparo.com>
Diffstat (limited to 'util/autoport/ec_fixme.go')
-rw-r--r--util/autoport/ec_fixme.go85
1 files changed, 85 insertions, 0 deletions
diff --git a/util/autoport/ec_fixme.go b/util/autoport/ec_fixme.go
new file mode 100644
index 0000000000..589a101a78
--- /dev/null
+++ b/util/autoport/ec_fixme.go
@@ -0,0 +1,85 @@
+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")
+
+ 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");
+ }
+`
+
+ 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")
+}