ec_fixme.go 1.9 KB

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