payloads/edk2: Disable the CPU Timer Lib unless supported
[coreboot.git] / src / mainboard / system76 / kbl-u / acpi / ec.asl
blobde25eca12904fc231d82b4697e27399426189b7c
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 Device (EC0)
5         Name (_HID, EisaId ("PNP0C09") /* Embedded Controller Device */)  // _HID: Hardware ID
6         Name (_GPE, 0x50 /* GPP_E16 */)  // _GPE: General Purpose Events
7         Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
8         {
9                 IO (Decode16,
10                         0x0062,             // Range Minimum
11                         0x0062,             // Range Maximum
12                         0x00,               // Alignment
13                         0x01,               // Length
14                         )
15                 IO (Decode16,
16                         0x0066,             // Range Minimum
17                         0x0066,             // Range Maximum
18                         0x00,               // Alignment
19                         0x01,               // Length
20                         )
21         })
23         #include "acpi/ec_ram.asl"
25         Name (ECOK, Zero)
26         Method (_REG, 2, Serialized)  // _REG: Region Availability
27         {
28                 Debug = Concatenate("EC: _REG", Concatenate(ToHexString(Arg0), Concatenate(" ", ToHexString(Arg1))))
29                 If ((Arg0 == 0x03) && (Arg1 == One)) {
30                         // Enable hardware touchpad lock, airplane mode, and keyboard backlight keys
31                         ECOS = 1
33                         // Enable software display brightness keys
34                         WINF = 1
36                         // Set current AC state
37                         ^^^^AC.ACFG = ADP
38                         // Update battery information and status
39                         ^^^^BAT0.UPBI()
40                         ^^^^BAT0.UPBS()
42                         // Notify of changes
43                         Notify(^^^^AC, Zero)
44                         Notify(^^^^BAT0, Zero)
46                         PNOT ()
48                         // EC is now available
49                         ECOK = Arg1
51                         // Reset System76 Device
52                         ^^^^S76D.RSET()
53                 }
54         }
56         Name (S3OS, Zero)
57         Method (PTS, 1, Serialized) {
58                 Debug = Concatenate("EC: PTS: ", ToHexString(Arg0))
59                 If (ECOK) {
60                         // Save ECOS during sleep
61                         S3OS = ECOS
63                         // Clear wake cause
64                         WFNO = Zero
65                 }
66         }
68         Method (WAK, 1, Serialized) {
69                 Debug = Concatenate("EC: WAK: ", ToHexString(Arg0))
70                 If (ECOK) {
71                         // Restore ECOS after sleep
72                         ECOS = S3OS
74                         // Set current AC state
75                         ^^^^AC.ACFG = ADP
77                         // Update battery information and status
78                         ^^^^BAT0.UPBI()
79                         ^^^^BAT0.UPBS()
81                         // Notify of changes
82                         Notify(^^^^AC, Zero)
83                         Notify(^^^^BAT0, Zero)
85                         // Reset System76 Device
86                         ^^^^S76D.RSET()
87                 }
88         }
90         Method (_Q0A, 0, NotSerialized) // Touchpad Toggle
91         {
92                 Debug = "EC: Touchpad Toggle"
93         }
95         Method (_Q0B, 0, NotSerialized) // Screen Toggle
96         {
97                 Debug = "EC: Screen Toggle"
98         }
100         Method (_Q0C, 0, NotSerialized)  // Mute
101         {
102                 Debug = "EC: Mute"
103         }
105         Method (_Q0D, 0, NotSerialized) // Keyboard Backlight
106         {
107                 Debug = "EC: Keyboard Backlight"
108         }
110         Method (_Q0E, 0, NotSerialized) // Volume Down
111         {
112                 Debug = "EC: Volume Down"
113         }
115         Method (_Q0F, 0, NotSerialized) // Volume Up
116         {
117                 Debug = "EC: Volume Up"
118         }
120         Method (_Q10, 0, NotSerialized) // Switch Video Mode
121         {
122                 Debug = "EC: Switch Video Mode"
123         }
125         Method (_Q11, 0, NotSerialized) // Brightness Down
126         {
127                 Debug = "EC: Brightness Down"
128                 if (^^^^HIDD.HRDY) {
129                         ^^^^HIDD.HPEM (20)
130                 }
131         }
133         Method (_Q12, 0, NotSerialized) // Brightness Up
134         {
135                 Debug = "EC: Brightness Up"
136                 if (^^^^HIDD.HRDY) {
137                         ^^^^HIDD.HPEM (19)
138                 }
139         }
141         Method (_Q13, 0, NotSerialized) // Camera Toggle
142         {
143                 Debug = "EC: Camera Toggle"
144         }
146         Method (_Q14, 0, NotSerialized) // Airplane Mode
147         {
148                 Debug = "EC: Airplane Mode"
149                 if (^^^^HIDD.HRDY) {
150                         ^^^^HIDD.HPEM (8)
151                 }
152                 // TODO: hardware airplane mode
153         }
155         Method (_Q15, 0, NotSerialized) // Suspend Button
156         {
157                 Debug = "EC: Suspend Button"
158                 Notify (SLPB, 0x80)
159         }
161         Method (_Q16, 0, NotSerialized) // AC Detect
162         {
163                 Debug = "EC: AC Detect"
164                 ^^^^AC.ACFG = ADP
165                 Notify (AC, 0x80) // Status Change
166                 If (BAT0)
167                 {
168                         Notify (^^^^BAT0, 0x81) // Information Change
169                         Notify (^^^^BAT0, 0x80) // Status Change
170                 }
171         }
173         Method (_Q17, 0, NotSerialized)  // BAT0 Update
174         {
175                 Debug = "EC: BAT0 Update (17)"
176                 Notify (^^^^BAT0, 0x81) // Information Change
177         }
179         Method (_Q19, 0, NotSerialized)  // BAT0 Update
180         {
181                 Debug = "EC: BAT0 Update (19)"
182                 Notify (^^^^BAT0, 0x81) // Information Change
183         }
185         Method (_Q1B, 0, NotSerialized) // Lid Close
186         {
187                 Debug = "EC: Lid Close"
188                 Notify (LID0, 0x80)
189         }
191         Method (_Q1C, 0, NotSerialized) // Thermal Trip
192         {
193                 Debug = "EC: Thermal Trip"
194                 /* TODO
195                 Notify (\_TZ.TZ0, 0x81) // Thermal Trip Point Change
196                 Notify (\_TZ.TZ0, 0x80) // Thermal Status Change
197                 */
198         }
200         Method (_Q1D, 0, NotSerialized) // Power Button
201         {
202                 Debug = "EC: Power Button"
203                 Notify (PWRB, 0x80)
204         }
206         Method (_Q50, 0, NotSerialized) // Other Events
207         {
208                 Local0 = OEM4
209                 If (Local0 == 0x8A) {
210                         Debug = "EC: White Keyboard Backlight"
211                         Notify (^^^^S76D, 0x80)
212                 } ElseIf (Local0 == 0x9F) {
213                         Debug = "EC: Color Keyboard Toggle"
214                         Notify (^^^^S76D, 0x81)
215                 } ElseIf (Local0 == 0x81) {
216                         Debug = "EC: Color Keyboard Down"
217                         Notify (^^^^S76D, 0x82)
218                 } ElseIf (Local0 == 0x82) {
219                         Debug = "EC: Color Keyboard Up"
220                         Notify (^^^^S76D, 0x83)
221                 } ElseIf (Local0 == 0x80) {
222                         Debug = "EC: Color Keyboard Color Change"
223                         Notify (^^^^S76D, 0x84)
224                 } Else {
225                         Debug = Concatenate("EC: Other: ", ToHexString(Local0))
226                 }
227         }