thermal.asl 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. /** @file
  2. Copyright (c) 2021, Benjamin Doran
  3. SPDX-License-Identifier: BSD-2-Clause-Patent
  4. **/
  5. Scope (_TZ)
  6. {
  7. Name (CRT0, 0)
  8. Name (PSV0, 0)
  9. ThermalZone (TZ01)
  10. {
  11. Method (_TMP, 0, Serialized) // _TMP: Temperature
  12. {
  13. #ifdef LGMR_ENABLED
  14. Local0 = \_SB.PCI0.LPCB.EC0.MS0T
  15. // Local1 = \_SB.PCI0.LPCB.EC0.MCSS
  16. Local2 = \_SB.PCI0.LPCB.EC0.MOSD
  17. #else
  18. Local0 = \_SB.PCI0.LPCB.EC0.ES0T
  19. // Local1 = \_SB.PCI0.LPCB.EC0.ESSF // "MCSS": Considering neighbouring bits, likely
  20. // "ESSF" in thermals, not "ECSS" in notify
  21. Local2 = \_SB.PCI0.LPCB.EC0.EOSD
  22. #endif
  23. If (Local2) // Thermal trip
  24. {
  25. If (Local0 <= CRT0)
  26. {
  27. Local0 = (CRT0 + 2)
  28. }
  29. }
  30. Return (C2K (Local0))
  31. }
  32. Method (_CRT, 0, Serialized) // _CRT: Critical Temperature
  33. {
  34. #ifdef LGMR_ENABLED
  35. Local0 = \_SB.PCI0.LPCB.EC0.MSC0
  36. #else
  37. Local0 = \_SB.PCI0.LPCB.EC0.ESC0
  38. #endif
  39. If ((Local0 >= 128) || (Local0 < 30))
  40. {
  41. Local0 = 120
  42. }
  43. CRT0 = Local0
  44. Return (C2K (Local0))
  45. }
  46. Method (_SCP, 1, Serialized) // _SCP: Set Cooling Policy
  47. {
  48. If (ECOK)
  49. {
  50. \_SB.PCI0.LPCB.EC0.SCPM = Arg0
  51. }
  52. Else
  53. {
  54. /* MBEC: Called SMI function 0x12 */
  55. // \_SB.PCI0.LPCB.EC0.MBEC (0x90, 0xFE, Arg0) // SCPM = Arg0
  56. }
  57. }
  58. Method (_PSV, 0, Serialized) // _PSV: Passive Temperature
  59. {
  60. #ifdef LGMR_ENABLED
  61. Local0 = \_SB.PCI0.LPCB.EC0.MSP0
  62. #else
  63. Local0 = \_SB.PCI0.LPCB.EC0.ESP0
  64. #endif
  65. If ((Local0 >= 128) || (Local0 < 30))
  66. {
  67. Local0 = 30
  68. }
  69. PSV0 = Local0
  70. Return (C2K (Local0))
  71. }
  72. }
  73. ThermalZone (TZ00)
  74. {
  75. Method (_TMP, 0, Serialized) // _TMP: Temperature
  76. {
  77. #ifdef LGMR_ENABLED
  78. Local0 = \_SB.PCI0.LPCB.EC0.MS1T
  79. #else
  80. Local0 = \_SB.PCI0.LPCB.EC0.ES1T
  81. #endif
  82. Return (C2K (Local0))
  83. }
  84. Method (_CRT, 0, Serialized) // _CRT: Critical Temperature
  85. {
  86. #ifdef LGMR_ENABLED
  87. Local0 = \_SB.PCI0.LPCB.EC0.MSC1
  88. #else
  89. Local0 = \_SB.PCI0.LPCB.EC0.ESC1
  90. #endif
  91. If ((Local0 >= 128) || (Local0 < 30))
  92. {
  93. Local0 = 120
  94. }
  95. Return (C2K (Local0))
  96. }
  97. }
  98. Method (C2K, 1, NotSerialized)
  99. {
  100. Local0 = Arg0
  101. If ((Local0 >= 127) || (Local0 <= 16))
  102. {
  103. Local0 = 30
  104. }
  105. Local0 = ((Local0 * 10) + 2732) // Celsius to Kelvin
  106. Return (Local0)
  107. }
  108. }