/ util / autoport / ec_fixme.go
ec_fixme.go
 1  package main
 2  
 3  import "fmt"
 4  
 5  func 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_SPDX(ap, ASL, GPL2_only)
23  	ap.WriteString(
24  		`Method(_WAK, 1)
25  {
26  	/* FIXME: EC support  */
27  	Return(Package() {0, 0})
28  }
29  
30  Method(_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_SPDX(si, ASL, GPL2_only)
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_SPDX(ec, ASL, GPL2_only)
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  }