1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Copyright (C) 2014 Google Inc. 4 * Copyright (C) 2016 Intel Corporation. 5 */ 6 7/* Thermal Threshold Event Handler */ 8#define HAVE_THERM_EVENT_HANDLER 9Method (TEVT, 1, NotSerialized) 10{ 11 Store (ToInteger (Arg0), Local0) 12 13#ifdef DPTF_TSR0_SENSOR_ID 14 If (LEqual (Local0, DPTF_TSR0_SENSOR_ID)) { 15 Notify (^TSR0, 0x90) 16 } 17#endif 18#ifdef DPTF_TSR1_SENSOR_ID 19 If (LEqual (Local0, DPTF_TSR1_SENSOR_ID)) { 20 Notify (^TSR1, 0x90) 21 } 22#endif 23#ifdef DPTF_TSR2_SENSOR_ID 24 If (LEqual (Local0, DPTF_TSR2_SENSOR_ID)) { 25 Notify (^TSR2, 0x90) 26 } 27#endif 28#ifdef DPTF_TSR3_SENSOR_ID 29 If (LEqual (Local0, DPTF_TSR3_SENSOR_ID)) { 30 Notify (^TSR3, 0x90) 31 } 32#endif 33} 34 35/* Thermal device initialization - Disable Aux Trip Points */ 36Method (TINI) 37{ 38#ifdef DPTF_TSR0_SENSOR_ID 39 ^TSR0.PATD () 40#endif 41#ifdef DPTF_TSR1_SENSOR_ID 42 ^TSR1.PATD () 43#endif 44#ifdef DPTF_TSR2_SENSOR_ID 45 ^TSR2.PATD () 46#endif 47#ifdef DPTF_TSR3_SENSOR_ID 48 ^TSR3.PATD () 49#endif 50} 51 52/* Thermal Trip Points Change Event Handler */ 53Method (TPET) 54{ 55#ifdef DPTF_TSR0_SENSOR_ID 56 Notify (^TSR0, 0x81) 57#endif 58#ifdef DPTF_TSR1_SENSOR_ID 59 Notify (^TSR1, 0x81) 60#endif 61#ifdef DPTF_TSR2_SENSOR_ID 62 Notify (^TSR2, 0x81) 63#endif 64#ifdef DPTF_TSR3_SENSOR_ID 65 Notify (^TSR3, 0x81) 66#endif 67} 68 69/* 70 * Method to return trip temperature value depending upon the device mode. 71 * Arg0 --> Value to return when device is in tablet mode 72 * Arg1 --> Value to return when device is not in tablet mode. 73 */ 74Method (DTRP, 2, Serialized) 75{ 76#ifdef EC_ENABLE_MULTIPLE_DPTF_PROFILES 77 If (LEqual (\_SB.PCI0.LPCB.EC0.RCDP, One)) { 78 Return (CTOK (Arg0)) 79 } Else { 80#endif 81 Return (CTOK (Arg1)) 82#ifdef EC_ENABLE_MULTIPLE_DPTF_PROFILES 83 } 84#endif 85} 86 87#ifdef DPTF_TSR0_SENSOR_ID 88 89#ifndef DPTF_TSR0_TABLET_PASSIVE 90#define DPTF_TSR0_TABLET_PASSIVE DPTF_TSR0_PASSIVE 91#endif 92#ifndef DPTF_TSR0_TABLET_CRITICAL 93#define DPTF_TSR0_TABLET_CRITICAL DPTF_TSR0_CRITICAL 94#endif 95 96Device (TSR0) 97{ 98 Name (_HID, EISAID ("INT3403")) 99 Name (_UID, 1) 100 Name (PTYP, 0x03) 101 Name (TMPI, DPTF_TSR0_SENSOR_ID) 102 Name (_STR, Unicode (DPTF_TSR0_SENSOR_NAME)) 103 Name (GTSH, 20) /* 2 degree hysteresis */ 104 105 Method (_STA) 106 { 107 If (LEqual (\DPTE, One)) { 108 Return (0xF) 109 } Else { 110 Return (0x0) 111 } 112 } 113 114 Method (_TMP, 0, Serialized) 115 { 116 Return (\_SB.PCI0.LPCB.EC0.TSRD (TMPI)) 117 } 118 119 Method (_PSV) 120 { 121 Return (DTRP (DPTF_TSR0_TABLET_PASSIVE, DPTF_TSR0_PASSIVE)) 122 } 123 124 Method (_CRT) 125 { 126 Return (DTRP (DPTF_TSR0_TABLET_CRITICAL, DPTF_TSR0_CRITICAL)) 127 } 128 129 Name (PATC, 2) 130 131 /* Set Aux Trip Point */ 132 Method (PAT0, 1, Serialized) 133 { 134 \_SB.PCI0.LPCB.EC0.PAT0 (TMPI, Arg0) 135 } 136 137 /* Set Aux Trip Point */ 138 Method (PAT1, 1, Serialized) 139 { 140 \_SB.PCI0.LPCB.EC0.PAT1 (TMPI, Arg0) 141 } 142 143 /* Disable Aux Trip Point */ 144 Method (PATD, 0, Serialized) 145 { 146 \_SB.PCI0.LPCB.EC0.PATD (TMPI) 147 } 148 149#ifdef DPTF_ENABLE_FAN_CONTROL 150#ifdef DPTF_TSR0_ACTIVE_AC0 151 Method (_AC0) 152 { 153 Return (\_SB.DPTF.CTOK (DPTF_TSR0_ACTIVE_AC0)) 154 } 155#endif 156#ifdef DPTF_TSR0_ACTIVE_AC1 157 Method (_AC1) 158 { 159 Return (\_SB.DPTF.CTOK (DPTF_TSR0_ACTIVE_AC1)) 160 } 161#endif 162#ifdef DPTF_TSR0_ACTIVE_AC2 163 Method (_AC2) 164 { 165 Return (\_SB.DPTF.CTOK (DPTF_TSR0_ACTIVE_AC2)) 166 } 167#endif 168#ifdef DPTF_TSR0_ACTIVE_AC3 169 Method (_AC3) 170 { 171 Return (\_SB.DPTF.CTOK (DPTF_TSR0_ACTIVE_AC3)) 172 } 173#endif 174#ifdef DPTF_TSR0_ACTIVE_AC4 175 Method (_AC4) 176 { 177 Return (\_SB.DPTF.CTOK (DPTF_TSR0_ACTIVE_AC4)) 178 } 179#endif 180#ifdef DPTF_TSR0_ACTIVE_AC5 181 Method (_AC5) 182 { 183 Return (\_SB.DPTF.CTOK (DPTF_TSR0_ACTIVE_AC5)) 184 } 185#endif 186#ifdef DPTF_TSR0_ACTIVE_AC6 187 Method (_AC6) 188 { 189 Return (\_SB.DPTF.CTOK (DPTF_TSR0_ACTIVE_AC6)) 190 } 191#endif 192#endif 193} 194#endif 195 196#ifdef DPTF_TSR1_SENSOR_ID 197 198#ifndef DPTF_TSR1_TABLET_PASSIVE 199#define DPTF_TSR1_TABLET_PASSIVE DPTF_TSR1_PASSIVE 200#endif 201#ifndef DPTF_TSR1_TABLET_CRITICAL 202#define DPTF_TSR1_TABLET_CRITICAL DPTF_TSR1_CRITICAL 203#endif 204 205Device (TSR1) 206{ 207 Name (_HID, EISAID ("INT3403")) 208 Name (_UID, 2) 209 Name (PTYP, 0x03) 210 Name (TMPI, DPTF_TSR1_SENSOR_ID) 211 Name (_STR, Unicode (DPTF_TSR1_SENSOR_NAME)) 212 Name (GTSH, 20) /* 2 degree hysteresis */ 213 214 Method (_STA) 215 { 216 If (LEqual (\DPTE, One)) { 217 Return (0xF) 218 } Else { 219 Return (0x0) 220 } 221 } 222 223 Method (_TMP, 0, Serialized) 224 { 225 Return (\_SB.PCI0.LPCB.EC0.TSRD (TMPI)) 226 } 227 228 Method (_PSV) 229 { 230 Return (DTRP (DPTF_TSR1_TABLET_PASSIVE, DPTF_TSR1_PASSIVE)) 231 } 232 233 Method (_CRT) 234 { 235 Return (DTRP (DPTF_TSR1_TABLET_CRITICAL, DPTF_TSR1_CRITICAL)) 236 } 237 238 Name (PATC, 2) 239 240 /* Set Aux Trip Point */ 241 Method (PAT0, 1, Serialized) 242 { 243 \_SB.PCI0.LPCB.EC0.PAT0 (TMPI, Arg0) 244 } 245 246 /* Set Aux Trip Point */ 247 Method (PAT1, 1, Serialized) 248 { 249 \_SB.PCI0.LPCB.EC0.PAT1 (TMPI, Arg0) 250 } 251 252 /* Disable Aux Trip Point */ 253 Method (PATD, 0, Serialized) 254 { 255 \_SB.PCI0.LPCB.EC0.PATD (TMPI) 256 } 257 258#ifdef DPTF_ENABLE_FAN_CONTROL 259#ifdef DPTF_TSR1_ACTIVE_AC0 260 Method (_AC0) 261 { 262 Return (\_SB.DPTF.CTOK (DPTF_TSR1_ACTIVE_AC0)) 263 } 264#endif 265#ifdef DPTF_TSR1_ACTIVE_AC1 266 Method (_AC1) 267 { 268 Return (\_SB.DPTF.CTOK (DPTF_TSR1_ACTIVE_AC1)) 269 } 270#endif 271#ifdef DPTF_TSR1_ACTIVE_AC2 272 Method (_AC2) 273 { 274 Return (\_SB.DPTF.CTOK (DPTF_TSR1_ACTIVE_AC2)) 275 } 276#endif 277#ifdef DPTF_TSR1_ACTIVE_AC3 278 Method (_AC3) 279 { 280 Return (\_SB.DPTF.CTOK (DPTF_TSR1_ACTIVE_AC3)) 281 } 282#endif 283#ifdef DPTF_TSR1_ACTIVE_AC4 284 Method (_AC4) 285 { 286 Return (\_SB.DPTF.CTOK (DPTF_TSR1_ACTIVE_AC4)) 287 } 288#endif 289#ifdef DPTF_TSR1_ACTIVE_AC5 290 Method (_AC5) 291 { 292 Return (\_SB.DPTF.CTOK (DPTF_TSR1_ACTIVE_AC5)) 293 } 294#endif 295#ifdef DPTF_TSR1_ACTIVE_AC6 296 Method (_AC6) 297 { 298 Return (\_SB.DPTF.CTOK (DPTF_TSR1_ACTIVE_AC6)) 299 } 300#endif 301#endif 302} 303#endif 304 305#ifdef DPTF_TSR2_SENSOR_ID 306 307#ifndef DPTF_TSR2_TABLET_PASSIVE 308#define DPTF_TSR2_TABLET_PASSIVE DPTF_TSR2_PASSIVE 309#endif 310#ifndef DPTF_TSR2_TABLET_CRITICAL 311#define DPTF_TSR2_TABLET_CRITICAL DPTF_TSR2_CRITICAL 312#endif 313 314Device (TSR2) 315{ 316 Name (_HID, EISAID ("INT3403")) 317 Name (_UID, 3) 318 Name (PTYP, 0x03) 319 Name (TMPI, DPTF_TSR2_SENSOR_ID) 320 Name (_STR, Unicode (DPTF_TSR2_SENSOR_NAME)) 321 Name (GTSH, 20) /* 2 degree hysteresis */ 322 323 Method (_STA) 324 { 325 If (LEqual (\DPTE, One)) { 326 Return (0xF) 327 } Else { 328 Return (0x0) 329 } 330 } 331 332 Method (_TMP, 0, Serialized) 333 { 334 Return (\_SB.PCI0.LPCB.EC0.TSRD (TMPI)) 335 } 336 337 Method (_PSV) 338 { 339 Return (DTRP (DPTF_TSR2_TABLET_PASSIVE, DPTF_TSR2_PASSIVE)) 340 } 341 342 Method (_CRT) 343 { 344 Return (DTRP (DPTF_TSR2_TABLET_CRITICAL, DPTF_TSR2_CRITICAL)) 345 } 346 347 Name (PATC, 2) 348 349 /* Set Aux Trip Point */ 350 Method (PAT0, 1, Serialized) 351 { 352 \_SB.PCI0.LPCB.EC0.PAT0 (TMPI, Arg0) 353 } 354 355 /* Set Aux Trip Point */ 356 Method (PAT1, 1, Serialized) 357 { 358 \_SB.PCI0.LPCB.EC0.PAT1 (TMPI, Arg0) 359 } 360 361 /* Disable Aux Trip Point */ 362 Method (PATD, 0, Serialized) 363 { 364 \_SB.PCI0.LPCB.EC0.PATD (TMPI) 365 } 366 367#ifdef DPTF_ENABLE_FAN_CONTROL 368#ifdef DPTF_TSR2_ACTIVE_AC0 369 Method (_AC0) 370 { 371 Return (\_SB.DPTF.CTOK (DPTF_TSR2_ACTIVE_AC0)) 372 } 373#endif 374#ifdef DPTF_TSR2_ACTIVE_AC1 375 Method (_AC1) 376 { 377 Return (\_SB.DPTF.CTOK (DPTF_TSR2_ACTIVE_AC1)) 378 } 379#endif 380#ifdef DPTF_TSR2_ACTIVE_AC2 381 Method (_AC2) 382 { 383 Return (\_SB.DPTF.CTOK (DPTF_TSR2_ACTIVE_AC2)) 384 } 385#endif 386#ifdef DPTF_TSR2_ACTIVE_AC3 387 Method (_AC3) 388 { 389 Return (\_SB.DPTF.CTOK (DPTF_TSR2_ACTIVE_AC3)) 390 } 391#endif 392#ifdef DPTF_TSR2_ACTIVE_AC4 393 Method (_AC4) 394 { 395 Return (\_SB.DPTF.CTOK (DPTF_TSR2_ACTIVE_AC4)) 396 } 397#endif 398#ifdef DPTF_TSR2_ACTIVE_AC5 399 Method (_AC5) 400 { 401 Return (\_SB.DPTF.CTOK (DPTF_TSR2_ACTIVE_AC5)) 402 } 403#endif 404#ifdef DPTF_TSR2_ACTIVE_AC6 405 Method (_AC6) 406 { 407 Return (\_SB.DPTF.CTOK (DPTF_TSR2_ACTIVE_AC6)) 408 } 409#endif 410#endif 411} 412#endif 413 414#ifdef DPTF_TSR3_SENSOR_ID 415 416#ifndef DPTF_TSR3_TABLET_PASSIVE 417#define DPTF_TSR3_TABLET_PASSIVE DPTF_TSR3_PASSIVE 418#endif 419#ifndef DPTF_TSR3_TABLET_CRITICAL 420#define DPTF_TSR3_TABLET_CRITICAL DPTF_TSR3_CRITICAL 421#endif 422 423Device (TSR3) 424{ 425 Name (_HID, EISAID ("INT3403")) 426 Name (_UID, 4) 427 Name (PTYP, 0x03) 428 Name (TMPI, DPTF_TSR3_SENSOR_ID) 429 Name (_STR, Unicode (DPTF_TSR3_SENSOR_NAME)) 430 Name (GTSH, 20) /* 2 degree hysteresis */ 431 432 Method (_STA) 433 { 434 If (LEqual (\DPTE, One)) { 435 Return (0xF) 436 } Else { 437 Return (0x0) 438 } 439 } 440 441 Method (_TMP, 0, Serialized) 442 { 443 Return (\_SB.PCI0.LPCB.EC0.TSRD (TMPI)) 444 } 445 446 Method (_PSV) 447 { 448 Return (DTRP (DPTF_TSR3_TABLET_PASSIVE, DPTF_TSR3_PASSIVE)) 449 } 450 451 Method (_CRT) 452 { 453 Return (DTRP (DPTF_TSR3_TABLET_CRITICAL, DPTF_TSR3_CRITICAL)) 454 } 455 456 Name (PATC, 2) 457 458 /* Set Aux Trip Point */ 459 Method (PAT0, 1, Serialized) 460 { 461 \_SB.PCI0.LPCB.EC0.PAT0 (TMPI, Arg0) 462 } 463 464 /* Set Aux Trip Point */ 465 Method (PAT1, 1, Serialized) 466 { 467 \_SB.PCI0.LPCB.EC0.PAT1 (TMPI, Arg0) 468 } 469 470 /* Disable Aux Trip Point */ 471 Method (PATD, 0, Serialized) 472 { 473 \_SB.PCI0.LPCB.EC0.PATD (TMPI) 474 } 475 476#ifdef DPTF_ENABLE_FAN_CONTROL 477#ifdef DPTF_TSR3_ACTIVE_AC0 478 Method (_AC0) 479 { 480 Return (\_SB.DPTF.CTOK (DPTF_TSR3_ACTIVE_AC0)) 481 } 482#endif 483#ifdef DPTF_TSR3_ACTIVE_AC1 484 Method (_AC1) 485 { 486 Return (\_SB.DPTF.CTOK (DPTF_TSR3_ACTIVE_AC1)) 487 } 488#endif 489#ifdef DPTF_TSR3_ACTIVE_AC2 490 Method (_AC2) 491 { 492 Return (\_SB.DPTF.CTOK (DPTF_TSR3_ACTIVE_AC2)) 493 } 494#endif 495#ifdef DPTF_TSR3_ACTIVE_AC3 496 Method (_AC3) 497 { 498 Return (\_SB.DPTF.CTOK (DPTF_TSR3_ACTIVE_AC3)) 499 } 500#endif 501#ifdef DPTF_TSR3_ACTIVE_AC4 502 Method (_AC4) 503 { 504 Return (\_SB.DPTF.CTOK (DPTF_TSR3_ACTIVE_AC4)) 505 } 506#endif 507#ifdef DPTF_TSR3_ACTIVE_AC5 508 Method (_AC5) 509 { 510 Return (\_SB.DPTF.CTOK (DPTF_TSR3_ACTIVE_AC5)) 511 } 512#endif 513#ifdef DPTF_TSR3_ACTIVE_AC6 514 Method (_AC6) 515 { 516 Return (\_SB.DPTF.CTOK (DPTF_TSR3_ACTIVE_AC6)) 517 } 518#endif 519#endif 520} 521#endif 522