| 1 | # SPDX-License-Identifier: GPL-2.0-only |
| 2 | # |
| 3 | # Generic thermal drivers configuration |
| 4 | # |
| 5 | |
| 6 | menuconfig THERMAL |
| 7 | bool "Thermal drivers" |
| 8 | help |
| 9 | Thermal drivers offer a generic mechanism for |
| 10 | thermal management. Usually it's made up of one or more thermal |
| 11 | zones and cooling devices. |
| 12 | Each thermal zone contains its own temperature, trip points, |
| 13 | and cooling devices. |
| 14 | All platforms with ACPI or Open Firmware thermal support can use |
| 15 | this driver. |
| 16 | If you want this support, you should say Y here. |
| 17 | |
| 18 | if THERMAL |
| 19 | |
| 20 | config THERMAL_NETLINK |
| 21 | bool "Thermal netlink management" |
| 22 | depends on NET |
| 23 | help |
| 24 | The thermal framework has a netlink interface to do thermal |
| 25 | zones discovery, temperature readings and events such as |
| 26 | trip point crossed, cooling device update or governor |
| 27 | change. It is recommended to enable the feature. |
| 28 | |
| 29 | config THERMAL_STATISTICS |
| 30 | bool "Thermal state transition statistics" |
| 31 | help |
| 32 | Export thermal state transition statistics information through sysfs. |
| 33 | |
| 34 | If in doubt, say N. |
| 35 | |
| 36 | config THERMAL_DEBUGFS |
| 37 | bool "Thermal subsystem debug support" |
| 38 | depends on DEBUG_FS |
| 39 | help |
| 40 | Say Y to allow the thermal subsystem to collect diagnostic |
| 41 | information that can be accessed via debugfs. |
| 42 | |
| 43 | config THERMAL_CORE_TESTING |
| 44 | tristate "Thermal core testing facility" |
| 45 | depends on DEBUG_FS |
| 46 | help |
| 47 | Say Y to add a debugfs-based thermal core testing facility. |
| 48 | It allows test thermal zones to be created and populated |
| 49 | with trip points in order to exercise the thermal core |
| 50 | functionality in a controlled way. |
| 51 | |
| 52 | config THERMAL_EMERGENCY_POWEROFF_DELAY_MS |
| 53 | int "Emergency poweroff delay in milli-seconds" |
| 54 | default 0 |
| 55 | help |
| 56 | Thermal subsystem will issue a graceful shutdown when |
| 57 | critical temperatures are reached using orderly_poweroff(). In |
| 58 | case of failure of an orderly_poweroff(), the thermal emergency |
| 59 | poweroff kicks in after a delay has elapsed and shuts down the system. |
| 60 | This config is number of milliseconds to delay before emergency |
| 61 | poweroff kicks in. Similarly to the critical trip point, |
| 62 | the delay should be carefully profiled so as to give adequate |
| 63 | time for orderly_poweroff() to finish on regular execution. |
| 64 | If set to 0 emergency poweroff will not be supported. |
| 65 | |
| 66 | In doubt, leave as 0. |
| 67 | |
| 68 | config THERMAL_HWMON |
| 69 | bool |
| 70 | prompt "Expose thermal sensors as hwmon device" |
| 71 | depends on HWMON=y || HWMON=THERMAL |
| 72 | default y |
| 73 | help |
| 74 | In case a sensor is registered with the thermal |
| 75 | framework, this option will also register it |
| 76 | as a hwmon. The sensor will then have the common |
| 77 | hwmon sysfs interface. |
| 78 | |
| 79 | Say 'Y' here if you want all thermal sensors to |
| 80 | have hwmon sysfs interface too. |
| 81 | |
| 82 | config THERMAL_OF |
| 83 | bool |
| 84 | prompt "APIs to parse thermal data out of device tree" |
| 85 | depends on OF |
| 86 | default y |
| 87 | help |
| 88 | This options provides helpers to add the support to |
| 89 | read and parse thermal data definitions out of the |
| 90 | device tree blob. |
| 91 | |
| 92 | Say 'Y' here if you need to build thermal infrastructure |
| 93 | based on device tree. |
| 94 | |
| 95 | choice |
| 96 | prompt "Default Thermal governor" |
| 97 | default THERMAL_DEFAULT_GOV_STEP_WISE |
| 98 | help |
| 99 | This option sets which thermal governor shall be loaded at |
| 100 | startup. If in doubt, select 'step_wise'. |
| 101 | |
| 102 | config THERMAL_DEFAULT_GOV_STEP_WISE |
| 103 | bool "step_wise" |
| 104 | select THERMAL_GOV_STEP_WISE |
| 105 | help |
| 106 | Use the step_wise governor as default. This throttles the |
| 107 | devices one step at a time. |
| 108 | |
| 109 | config THERMAL_DEFAULT_GOV_FAIR_SHARE |
| 110 | bool "fair_share" |
| 111 | select THERMAL_GOV_FAIR_SHARE |
| 112 | help |
| 113 | Use the fair_share governor as default. This throttles the |
| 114 | devices based on their 'contribution' to a zone. The |
| 115 | contribution should be provided through platform data. |
| 116 | |
| 117 | config THERMAL_DEFAULT_GOV_USER_SPACE |
| 118 | bool "user_space" |
| 119 | select THERMAL_GOV_USER_SPACE |
| 120 | help |
| 121 | The Userspace governor allows to get trip point crossed |
| 122 | notification from the kernel via uevents. It is recommended |
| 123 | to use the netlink interface instead which gives richer |
| 124 | information about the thermal framework events. |
| 125 | |
| 126 | config THERMAL_DEFAULT_GOV_POWER_ALLOCATOR |
| 127 | bool "power_allocator" |
| 128 | depends on THERMAL_GOV_POWER_ALLOCATOR |
| 129 | help |
| 130 | Select this if you want to control temperature based on |
| 131 | system and device power allocation. This governor can only |
| 132 | operate on cooling devices that implement the power API. |
| 133 | |
| 134 | config THERMAL_DEFAULT_GOV_BANG_BANG |
| 135 | bool "bang_bang" |
| 136 | depends on THERMAL_GOV_BANG_BANG |
| 137 | help |
| 138 | Use the bang_bang governor as default. This throttles the |
| 139 | devices one step at the time, taking into account the trip |
| 140 | point hysteresis. |
| 141 | |
| 142 | endchoice |
| 143 | |
| 144 | config THERMAL_GOV_FAIR_SHARE |
| 145 | bool "Fair-share thermal governor" |
| 146 | help |
| 147 | Enable this to manage platform thermals using fair-share governor. |
| 148 | |
| 149 | config THERMAL_GOV_STEP_WISE |
| 150 | bool "Step_wise thermal governor" |
| 151 | help |
| 152 | Enable this to manage platform thermals using a simple linear |
| 153 | governor. |
| 154 | |
| 155 | config THERMAL_GOV_BANG_BANG |
| 156 | bool "Bang Bang thermal governor" |
| 157 | default n |
| 158 | help |
| 159 | Enable this to manage platform thermals using bang bang governor. |
| 160 | |
| 161 | Say 'Y' here if you want to use two point temperature regulation |
| 162 | used for fans without throttling. Some fan drivers depend on this |
| 163 | governor to be enabled (e.g. acerhdf). |
| 164 | |
| 165 | config THERMAL_GOV_USER_SPACE |
| 166 | bool "User_space thermal governor" |
| 167 | help |
| 168 | Enable this to let the user space manage the platform thermals. |
| 169 | |
| 170 | config THERMAL_GOV_POWER_ALLOCATOR |
| 171 | bool "Power allocator thermal governor" |
| 172 | depends on ENERGY_MODEL |
| 173 | help |
| 174 | Enable this to manage platform thermals by dynamically |
| 175 | allocating and limiting power to devices. |
| 176 | |
| 177 | config CPU_THERMAL |
| 178 | bool "Generic cpu cooling support" |
| 179 | depends on THERMAL_OF |
| 180 | help |
| 181 | Enable the CPU cooling features. If the system has no active |
| 182 | cooling device available, this option allows to use the CPU |
| 183 | as a cooling device. |
| 184 | |
| 185 | if CPU_THERMAL |
| 186 | |
| 187 | config CPU_FREQ_THERMAL |
| 188 | bool "CPU frequency cooling device" |
| 189 | depends on CPU_FREQ |
| 190 | default y |
| 191 | help |
| 192 | This implements the generic cpu cooling mechanism through frequency |
| 193 | reduction. An ACPI version of this already exists |
| 194 | (drivers/acpi/processor_thermal.c). |
| 195 | This will be useful for platforms using the generic thermal interface |
| 196 | and not the ACPI interface. |
| 197 | |
| 198 | config CPU_IDLE_THERMAL |
| 199 | bool "CPU idle cooling device" |
| 200 | depends on IDLE_INJECT |
| 201 | help |
| 202 | This implements the CPU cooling mechanism through |
| 203 | idle injection. This will throttle the CPU by injecting |
| 204 | idle cycle. |
| 205 | endif |
| 206 | |
| 207 | config DEVFREQ_THERMAL |
| 208 | bool "Generic device cooling support" |
| 209 | depends on PM_DEVFREQ |
| 210 | depends on PM_OPP |
| 211 | help |
| 212 | This implements the generic devfreq cooling mechanism through |
| 213 | frequency reduction for devices using devfreq. |
| 214 | |
| 215 | This will throttle the device by limiting the maximum allowed DVFS |
| 216 | frequency corresponding to the cooling level. |
| 217 | |
| 218 | In order to use the power extensions of the cooling device, |
| 219 | devfreq should use the simple_ondemand governor. |
| 220 | |
| 221 | If you want this support, you should say Y here. |
| 222 | |
| 223 | config PCIE_THERMAL |
| 224 | bool "PCIe cooling support" |
| 225 | depends on PCIEPORTBUS |
| 226 | help |
| 227 | This implements PCIe cooling mechanism through bandwidth reduction |
| 228 | for PCIe devices. |
| 229 | |
| 230 | If you want this support, you should say Y here. |
| 231 | |
| 232 | config THERMAL_EMULATION |
| 233 | bool "Thermal emulation mode support" |
| 234 | help |
| 235 | Enable this option to make a emul_temp sysfs node in thermal zone |
| 236 | directory to support temperature emulation. With emulation sysfs node, |
| 237 | user can manually input temperature and test the different trip |
| 238 | threshold behaviour for simulation purpose. |
| 239 | |
| 240 | WARNING: Be careful while enabling this option on production systems, |
| 241 | because userland can easily disable the thermal policy by simply |
| 242 | flooding this sysfs node with low temperature values. |
| 243 | |
| 244 | config THERMAL_MMIO |
| 245 | tristate "Generic Thermal MMIO driver" |
| 246 | depends on OF |
| 247 | depends on HAS_IOMEM |
| 248 | help |
| 249 | This option enables the generic thermal MMIO driver that will use |
| 250 | memory-mapped reads to get the temperature. Any HW/System that |
| 251 | allows temperature reading by a single memory-mapped reading, be it |
| 252 | register or shared memory, is a potential candidate to work with this |
| 253 | driver. |
| 254 | |
| 255 | config HISI_THERMAL |
| 256 | tristate "Hisilicon thermal driver" |
| 257 | depends on ARCH_HISI || COMPILE_TEST |
| 258 | depends on HAS_IOMEM |
| 259 | depends on OF |
| 260 | default ARCH_HISI |
| 261 | help |
| 262 | Enable this to plug hisilicon's thermal sensor driver into the Linux |
| 263 | thermal framework. cpufreq is used as the cooling device to throttle |
| 264 | CPUs when the passive trip is crossed. |
| 265 | |
| 266 | config IMX_THERMAL |
| 267 | tristate "Temperature sensor driver for Freescale i.MX SoCs" |
| 268 | depends on ARCH_MXC || COMPILE_TEST |
| 269 | depends on NVMEM || !NVMEM |
| 270 | depends on MFD_SYSCON |
| 271 | depends on OF |
| 272 | help |
| 273 | Support for Temperature Monitor (TEMPMON) found on Freescale i.MX SoCs. |
| 274 | It supports one critical trip point and one passive trip point. The |
| 275 | cpufreq is used as the cooling device to throttle CPUs when the |
| 276 | passive trip is crossed. |
| 277 | |
| 278 | config IMX_SC_THERMAL |
| 279 | tristate "Temperature sensor driver for NXP i.MX SoCs with System Controller" |
| 280 | depends on IMX_SCU |
| 281 | depends on OF |
| 282 | help |
| 283 | Support for Temperature Monitor (TEMPMON) found on NXP i.MX SoCs with |
| 284 | system controller inside, Linux kernel has to communicate with system |
| 285 | controller via MU (message unit) IPC to get temperature from thermal |
| 286 | sensor. It supports one critical trip point and one |
| 287 | passive trip point for each thermal sensor. |
| 288 | |
| 289 | config IMX8MM_THERMAL |
| 290 | tristate "Temperature sensor driver for Freescale i.MX8MM SoC" |
| 291 | depends on ARCH_MXC || COMPILE_TEST |
| 292 | depends on OF |
| 293 | help |
| 294 | Support for Thermal Monitoring Unit (TMU) found on Freescale i.MX8MM SoC. |
| 295 | It supports one critical trip point and one passive trip point. The |
| 296 | cpufreq is used as the cooling device to throttle CPUs when the passive |
| 297 | trip is crossed. |
| 298 | |
| 299 | config IMX91_THERMAL |
| 300 | tristate "Temperature sensor driver for NXP i.MX91 SoC" |
| 301 | depends on ARCH_MXC || COMPILE_TEST |
| 302 | depends on OF |
| 303 | help |
| 304 | Include one sensor and six comparators. Each of them compares the |
| 305 | temperature value (from the sensor) against the programmable |
| 306 | threshold values. The direction of the comparison is configurable |
| 307 | (greater / lesser than). |
| 308 | |
| 309 | config K3_THERMAL |
| 310 | tristate "Texas Instruments K3 thermal support" |
| 311 | depends on ARCH_K3 || COMPILE_TEST |
| 312 | help |
| 313 | If you say yes here you get thermal support for the Texas Instruments |
| 314 | K3 SoC family. The current chip supported is: |
| 315 | - AM654 |
| 316 | |
| 317 | This includes temperature reading functionality. |
| 318 | |
| 319 | config MAX77620_THERMAL |
| 320 | tristate "Temperature sensor driver for Maxim MAX77620 PMIC" |
| 321 | depends on MFD_MAX77620 |
| 322 | depends on OF |
| 323 | help |
| 324 | Support for die junction temperature warning alarm for Maxim |
| 325 | Semiconductor PMIC MAX77620 device. Device generates two alarm |
| 326 | interrupts when PMIC die temperature cross the threshold of |
| 327 | 120 degC and 140 degC. |
| 328 | |
| 329 | config QORIQ_THERMAL |
| 330 | tristate "QorIQ Thermal Monitoring Unit" |
| 331 | depends on THERMAL_OF && HAS_IOMEM |
| 332 | depends on PPC_E500MC || SOC_LS1021A || ARCH_LAYERSCAPE || (ARCH_MXC && ARM64) || COMPILE_TEST |
| 333 | select REGMAP_MMIO |
| 334 | help |
| 335 | Support for Thermal Monitoring Unit (TMU) found on QorIQ platforms. |
| 336 | It supports one critical trip point and one passive trip point. The |
| 337 | cpufreq is used as the cooling device to throttle CPUs when the |
| 338 | passive trip is crossed. |
| 339 | |
| 340 | config AIROHA_THERMAL |
| 341 | tristate "Airoha thermal sensor driver" |
| 342 | depends on ARCH_AIROHA || COMPILE_TEST |
| 343 | depends on MFD_SYSCON |
| 344 | depends on OF |
| 345 | help |
| 346 | Enable this to plug the Airoha thermal sensor driver into the Linux |
| 347 | thermal framework. |
| 348 | |
| 349 | config SPEAR_THERMAL |
| 350 | tristate "SPEAr thermal sensor driver" |
| 351 | depends on PLAT_SPEAR || COMPILE_TEST |
| 352 | depends on HAS_IOMEM |
| 353 | depends on OF |
| 354 | help |
| 355 | Enable this to plug the SPEAr thermal sensor driver into the Linux |
| 356 | thermal framework. |
| 357 | |
| 358 | config SUN8I_THERMAL |
| 359 | tristate "Allwinner sun8i thermal driver" |
| 360 | depends on ARCH_SUNXI || COMPILE_TEST |
| 361 | depends on HAS_IOMEM |
| 362 | depends on NVMEM |
| 363 | depends on OF |
| 364 | depends on RESET_CONTROLLER |
| 365 | help |
| 366 | Support for the sun8i thermal sensor driver into the Linux thermal |
| 367 | framework. |
| 368 | |
| 369 | To compile this driver as a module, choose M here: the |
| 370 | module will be called sun8i-thermal. |
| 371 | |
| 372 | config ROCKCHIP_THERMAL |
| 373 | tristate "Rockchip thermal driver" |
| 374 | depends on ARCH_ROCKCHIP || COMPILE_TEST |
| 375 | depends on RESET_CONTROLLER |
| 376 | depends on HAS_IOMEM |
| 377 | help |
| 378 | Rockchip thermal driver provides support for Temperature sensor |
| 379 | ADC (TS-ADC) found on Rockchip SoCs. It supports one critical |
| 380 | trip point. Cpufreq is used as the cooling device and will throttle |
| 381 | CPUs when the Temperature crosses the passive trip point. |
| 382 | |
| 383 | config KIRKWOOD_THERMAL |
| 384 | tristate "Temperature sensor on Marvell Kirkwood SoCs" |
| 385 | depends on MACH_KIRKWOOD || COMPILE_TEST |
| 386 | depends on HAS_IOMEM |
| 387 | depends on OF |
| 388 | help |
| 389 | Support for the Kirkwood thermal sensor driver into the Linux thermal |
| 390 | framework. Only kirkwood 88F6282 and 88F6283 have this sensor. |
| 391 | |
| 392 | config DOVE_THERMAL |
| 393 | tristate "Temperature sensor on Marvell Dove SoCs" |
| 394 | depends on ARCH_DOVE || MACH_DOVE || COMPILE_TEST |
| 395 | depends on HAS_IOMEM |
| 396 | depends on OF |
| 397 | help |
| 398 | Support for the Dove thermal sensor driver in the Linux thermal |
| 399 | framework. |
| 400 | |
| 401 | config DB8500_THERMAL |
| 402 | tristate "DB8500 thermal management" |
| 403 | depends on MFD_DB8500_PRCMU && OF |
| 404 | default y |
| 405 | help |
| 406 | Adds DB8500 thermal management implementation according to the thermal |
| 407 | management framework. A thermal zone with several trip points will be |
| 408 | created. Cooling devices can be bound to the trip points to cool this |
| 409 | thermal zone if trip points reached. |
| 410 | |
| 411 | config ARMADA_THERMAL |
| 412 | tristate "Marvell EBU Armada SoCs thermal management" |
| 413 | depends on ARCH_MVEBU || COMPILE_TEST |
| 414 | depends on HAS_IOMEM |
| 415 | depends on OF |
| 416 | help |
| 417 | Enable this option if you want to have support for thermal management |
| 418 | controller present in Marvell EBU Armada SoCs (370,375,XP,38x,7K,8K). |
| 419 | |
| 420 | config DA9062_THERMAL |
| 421 | tristate "DA9062/DA9061 Dialog Semiconductor thermal driver" |
| 422 | depends on MFD_DA9062 || COMPILE_TEST |
| 423 | depends on OF |
| 424 | help |
| 425 | Enable this for the Dialog Semiconductor thermal sensor driver. |
| 426 | This will report PMIC junction over-temperature for one thermal trip |
| 427 | zone. |
| 428 | Compatible with the DA9062 and DA9061 PMICs. |
| 429 | |
| 430 | menu "Mediatek thermal drivers" |
| 431 | depends on ARCH_MEDIATEK || COMPILE_TEST |
| 432 | source "drivers/thermal/mediatek/Kconfig" |
| 433 | endmenu |
| 434 | |
| 435 | config AMLOGIC_THERMAL |
| 436 | tristate "Amlogic Thermal Support" |
| 437 | default ARCH_MESON |
| 438 | depends on OF && ARCH_MESON |
| 439 | depends on MESON_SM |
| 440 | help |
| 441 | If you say yes here you get support for Amlogic Thermal |
| 442 | for G12 SoC Family. |
| 443 | |
| 444 | This driver can also be built as a module. If so, the module will |
| 445 | be called amlogic_thermal. |
| 446 | |
| 447 | menu "Intel thermal drivers" |
| 448 | depends on X86 || X86_INTEL_QUARK || COMPILE_TEST |
| 449 | source "drivers/thermal/intel/Kconfig" |
| 450 | endmenu |
| 451 | |
| 452 | menu "Broadcom thermal drivers" |
| 453 | depends on ARCH_BCM || ARCH_BRCMSTB || ARCH_BCM2835 || ARCH_BCM_IPROC || \ |
| 454 | COMPILE_TEST |
| 455 | source "drivers/thermal/broadcom/Kconfig" |
| 456 | endmenu |
| 457 | |
| 458 | menu "Texas Instruments thermal drivers" |
| 459 | depends on ARCH_HAS_BANDGAP || COMPILE_TEST |
| 460 | depends on HAS_IOMEM |
| 461 | source "drivers/thermal/ti-soc-thermal/Kconfig" |
| 462 | endmenu |
| 463 | |
| 464 | menu "Samsung thermal drivers" |
| 465 | depends on ARCH_EXYNOS || COMPILE_TEST |
| 466 | source "drivers/thermal/samsung/Kconfig" |
| 467 | endmenu |
| 468 | |
| 469 | menu "STMicroelectronics thermal drivers" |
| 470 | depends on (ARCH_STI || ARCH_STM32) && THERMAL_OF |
| 471 | source "drivers/thermal/st/Kconfig" |
| 472 | endmenu |
| 473 | |
| 474 | source "drivers/thermal/renesas/Kconfig" |
| 475 | |
| 476 | source "drivers/thermal/spacemit/Kconfig" |
| 477 | |
| 478 | source "drivers/thermal/tegra/Kconfig" |
| 479 | |
| 480 | config GENERIC_ADC_THERMAL |
| 481 | tristate "Generic ADC based thermal sensor" |
| 482 | depends on IIO |
| 483 | help |
| 484 | This enabled a thermal sysfs driver for the temperature sensor |
| 485 | which is connected to the General Purpose ADC. The ADC channel |
| 486 | is read via IIO framework and the channel information is provided |
| 487 | to this driver. This driver reports the temperature by reading ADC |
| 488 | channel and converts it to temperature based on lookup table. |
| 489 | |
| 490 | menu "Qualcomm thermal drivers" |
| 491 | depends on (ARCH_QCOM && OF) || COMPILE_TEST |
| 492 | source "drivers/thermal/qcom/Kconfig" |
| 493 | endmenu |
| 494 | |
| 495 | config UNIPHIER_THERMAL |
| 496 | tristate "Socionext UniPhier thermal driver" |
| 497 | depends on ARCH_UNIPHIER || COMPILE_TEST |
| 498 | depends on THERMAL_OF && MFD_SYSCON |
| 499 | help |
| 500 | Enable this to plug in UniPhier on-chip PVT thermal driver into the |
| 501 | thermal framework. The driver supports CPU thermal zone temperature |
| 502 | reporting and a couple of trip points. |
| 503 | |
| 504 | config SPRD_THERMAL |
| 505 | tristate "Temperature sensor on Spreadtrum SoCs" |
| 506 | depends on ARCH_SPRD || COMPILE_TEST |
| 507 | help |
| 508 | Support for the Spreadtrum thermal sensor driver in the Linux thermal |
| 509 | framework. |
| 510 | |
| 511 | config KHADAS_MCU_FAN_THERMAL |
| 512 | tristate "Khadas MCU controller FAN cooling support" |
| 513 | depends on OF |
| 514 | depends on MFD_KHADAS_MCU |
| 515 | select MFD_CORE |
| 516 | select REGMAP |
| 517 | help |
| 518 | If you say yes here you get support for the FAN controlled |
| 519 | by the Microcontroller found on the Khadas VIM boards. |
| 520 | |
| 521 | config LOONGSON2_THERMAL |
| 522 | tristate "Loongson-2 SoC series thermal driver" |
| 523 | depends on LOONGARCH || COMPILE_TEST |
| 524 | depends on OF |
| 525 | help |
| 526 | Support for Thermal driver found on Loongson-2 SoC series platforms. |
| 527 | The thermal driver realizes get_temp and set_trips function, which |
| 528 | are used to obtain the temperature of the current node and set the |
| 529 | temperature range to trigger the interrupt. When the input temperature |
| 530 | is higher than the high temperature threshold or lower than the low |
| 531 | temperature threshold, the interrupt will occur. |
| 532 | |
| 533 | endif |