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