Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux
Pull thermal management updates from Zhang Rui: - Remove the 'module' Kconfig option for thermal subsystem framework because the thermal framework are required to be ready as early as possible to avoid overheat at boot time (Daniel Lezcano) - Fix a bug that thermal framework pokes disabled thermal zones upon resume (Wei Wang) - A couple of cleanups and trivial fixes on int340x thermal drivers (Srinivas Pandruvada, Zhang Rui, Sumeet Pawnikar) * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux: drivers: thermal: processor_thermal: Downgrade error message mlxsw: Remove obsolete dependency on THERMAL=m hwmon/drivers/core: Simplify complex dependency thermal/drivers/core: Fix typo in the option name thermal/drivers/core: Remove depends on THERMAL in Kconfig thermal/drivers/core: Remove module unload code thermal/drivers/core: Remove the module Kconfig's option thermal: core: skip update disabled thermal zones after suspend thermal: make device_register's type argument const thermal: intel: int340x: processor_thermal_device: simplify to get driver data thermal/int3403_thermal: favor _TMP instead of PTYP
This commit is contained in:
commit
2c45e7fbc9
|
@ -152,7 +152,7 @@ CONFIG_SPI_S3C24XX=y
|
|||
CONFIG_SPI_SPIDEV=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
CONFIG_SENSORS_LM75=y
|
||||
CONFIG_THERMAL=m
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_S3C2410_WATCHDOG=y
|
||||
CONFIG_FB=y
|
||||
|
|
|
@ -387,7 +387,7 @@ CONFIG_SENSORS_LM75=m
|
|||
CONFIG_SENSORS_LM90=m
|
||||
CONFIG_SENSORS_LM95245=m
|
||||
CONFIG_SENSORS_NTC_THERMISTOR=m
|
||||
CONFIG_THERMAL=m
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_XILINX_WATCHDOG=m
|
||||
CONFIG_SA1100_WATCHDOG=m
|
||||
|
|
|
@ -228,7 +228,7 @@ CONFIG_SERIAL_IP22_ZILOG=m
|
|||
# CONFIG_HW_RANDOM is not set
|
||||
CONFIG_RAW_DRIVER=m
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_THERMAL=m
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_INDYDOG=m
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
|
|
|
@ -271,7 +271,7 @@ CONFIG_I2C_PARPORT_LIGHT=m
|
|||
CONFIG_I2C_TAOS_EVM=m
|
||||
CONFIG_I2C_STUB=m
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_THERMAL=m
|
||||
CONFIG_THERMAL=y
|
||||
CONFIG_MFD_PCF50633=m
|
||||
CONFIG_PCF50633_ADC=m
|
||||
CONFIG_PCF50633_GPIO=m
|
||||
|
|
|
@ -119,7 +119,7 @@ CONFIG_I2C_PUV3=y
|
|||
# Hardware Monitoring support
|
||||
#CONFIG_SENSORS_LM75=m
|
||||
# Generic Thermal sysfs driver
|
||||
#CONFIG_THERMAL=m
|
||||
#CONFIG_THERMAL=y
|
||||
#CONFIG_THERMAL_HWMON=y
|
||||
|
||||
# Multimedia support
|
||||
|
|
|
@ -118,9 +118,7 @@ static DEFINE_IDA(hwmon_ida);
|
|||
* The complex conditional is necessary to avoid a cyclic dependency
|
||||
* between hwmon and thermal_sys modules.
|
||||
*/
|
||||
#if IS_REACHABLE(CONFIG_THERMAL) && defined(CONFIG_THERMAL_OF) && \
|
||||
(!defined(CONFIG_THERMAL_HWMON) || \
|
||||
!(defined(MODULE) && IS_MODULE(CONFIG_THERMAL)))
|
||||
#ifdef CONFIG_THERMAL_OF
|
||||
static int hwmon_thermal_get_temp(void *data, int *temp)
|
||||
{
|
||||
struct hwmon_thermal_data *tdata = data;
|
||||
|
|
|
@ -22,7 +22,6 @@ config MLXSW_CORE_HWMON
|
|||
config MLXSW_CORE_THERMAL
|
||||
bool "Thermal zone support for Mellanox Technologies Switch ASICs"
|
||||
depends on MLXSW_CORE && THERMAL
|
||||
depends on !(MLXSW_CORE=y && THERMAL=m)
|
||||
default y
|
||||
---help---
|
||||
Say Y here if you want to automatically control fans speed according
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
|
||||
menuconfig THERMAL
|
||||
tristate "Generic Thermal sysfs driver"
|
||||
bool "Generic Thermal sysfs driver"
|
||||
help
|
||||
Generic Thermal Sysfs driver offers a generic mechanism for
|
||||
thermal management. Usually it's made up of one or more thermal
|
||||
|
@ -11,7 +11,7 @@ menuconfig THERMAL
|
|||
Each thermal zone contains its own temperature, trip points,
|
||||
cooling devices.
|
||||
All platforms with ACPI thermal support can use this driver.
|
||||
If you want this support, you should say Y or M here.
|
||||
If you want this support, you should say Y here.
|
||||
|
||||
if THERMAL
|
||||
|
||||
|
@ -24,7 +24,6 @@ config THERMAL_STATISTICS
|
|||
|
||||
config THERMAL_EMERGENCY_POWEROFF_DELAY_MS
|
||||
int "Emergency poweroff delay in milli-seconds"
|
||||
depends on THERMAL
|
||||
default 0
|
||||
help
|
||||
Thermal subsystem will issue a graceful shutdown when
|
||||
|
@ -149,10 +148,9 @@ config THERMAL_GOV_POWER_ALLOCATOR
|
|||
allocating and limiting power to devices.
|
||||
|
||||
config CPU_THERMAL
|
||||
bool "generic cpu cooling support"
|
||||
bool "Generic cpu cooling support"
|
||||
depends on CPU_FREQ
|
||||
depends on THERMAL_OF
|
||||
depends on THERMAL=y
|
||||
help
|
||||
This implements the generic cpu cooling mechanism through frequency
|
||||
reduction. An ACPI version of this already exists
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
config INTEL_POWERCLAMP
|
||||
tristate "Intel PowerClamp idle injection driver"
|
||||
depends on THERMAL
|
||||
depends on X86
|
||||
depends on CPU_SUP_INTEL
|
||||
help
|
||||
|
|
|
@ -220,6 +220,7 @@ static int int3403_add(struct platform_device *pdev)
|
|||
{
|
||||
struct int3403_priv *priv;
|
||||
int result = 0;
|
||||
unsigned long long tmp;
|
||||
acpi_status status;
|
||||
|
||||
priv = devm_kzalloc(&pdev->dev, sizeof(struct int3403_priv),
|
||||
|
@ -234,19 +235,18 @@ static int int3403_add(struct platform_device *pdev)
|
|||
goto err;
|
||||
}
|
||||
|
||||
status = acpi_evaluate_integer(priv->adev->handle, "PTYP",
|
||||
NULL, &priv->type);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
unsigned long long tmp;
|
||||
|
||||
status = acpi_evaluate_integer(priv->adev->handle, "_TMP",
|
||||
NULL, &tmp);
|
||||
status = acpi_evaluate_integer(priv->adev->handle, "_TMP",
|
||||
NULL, &tmp);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
status = acpi_evaluate_integer(priv->adev->handle, "PTYP",
|
||||
NULL, &priv->type);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
result = -EINVAL;
|
||||
goto err;
|
||||
} else {
|
||||
priv->type = INT3403_TYPE_SENSOR;
|
||||
}
|
||||
} else {
|
||||
priv->type = INT3403_TYPE_SENSOR;
|
||||
}
|
||||
|
||||
platform_set_drvdata(pdev, priv);
|
||||
|
|
|
@ -81,22 +81,13 @@ static ssize_t power_limit_##index##_##suffix##_show(struct device *dev, \
|
|||
struct device_attribute *attr, \
|
||||
char *buf) \
|
||||
{ \
|
||||
struct pci_dev *pci_dev; \
|
||||
struct platform_device *pdev; \
|
||||
struct proc_thermal_device *proc_dev; \
|
||||
struct proc_thermal_device *proc_dev = dev_get_drvdata(dev); \
|
||||
\
|
||||
if (proc_thermal_emum_mode == PROC_THERMAL_NONE) { \
|
||||
dev_warn(dev, "Attempted to get power limit before device was initialized!\n"); \
|
||||
return 0; \
|
||||
} \
|
||||
\
|
||||
if (proc_thermal_emum_mode == PROC_THERMAL_PLATFORM_DEV) { \
|
||||
pdev = to_platform_device(dev); \
|
||||
proc_dev = platform_get_drvdata(pdev); \
|
||||
} else { \
|
||||
pci_dev = to_pci_dev(dev); \
|
||||
proc_dev = pci_get_drvdata(pci_dev); \
|
||||
} \
|
||||
return sprintf(buf, "%lu\n",\
|
||||
(unsigned long)proc_dev->power_limits[index].suffix * 1000); \
|
||||
}
|
||||
|
@ -274,7 +265,7 @@ static void proc_thermal_notify(acpi_handle handle, u32 event, void *data)
|
|||
THERMAL_DEVICE_POWER_CAPABILITY_CHANGED);
|
||||
break;
|
||||
default:
|
||||
dev_err(proc_priv->dev, "Unsupported event [0x%x]\n", event);
|
||||
dev_dbg(proc_priv->dev, "Unsupported event [0x%x]\n", event);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
config QCOM_TSENS
|
||||
tristate "Qualcomm TSENS Temperature Alarm"
|
||||
depends on THERMAL
|
||||
depends on QCOM_QFPROM
|
||||
depends on ARCH_QCOM || COMPILE_TEST
|
||||
help
|
||||
|
|
|
@ -266,7 +266,7 @@ static int __init thermal_register_governors(void)
|
|||
return thermal_gov_power_allocator_register();
|
||||
}
|
||||
|
||||
static void thermal_unregister_governors(void)
|
||||
static void __init thermal_unregister_governors(void)
|
||||
{
|
||||
thermal_gov_step_wise_unregister();
|
||||
thermal_gov_fair_share_unregister();
|
||||
|
@ -941,7 +941,7 @@ static void bind_cdev(struct thermal_cooling_device *cdev)
|
|||
*/
|
||||
static struct thermal_cooling_device *
|
||||
__thermal_cooling_device_register(struct device_node *np,
|
||||
char *type, void *devdata,
|
||||
const char *type, void *devdata,
|
||||
const struct thermal_cooling_device_ops *ops)
|
||||
{
|
||||
struct thermal_cooling_device *cdev;
|
||||
|
@ -1015,7 +1015,7 @@ __thermal_cooling_device_register(struct device_node *np,
|
|||
* ERR_PTR. Caller must check return value with IS_ERR*() helpers.
|
||||
*/
|
||||
struct thermal_cooling_device *
|
||||
thermal_cooling_device_register(char *type, void *devdata,
|
||||
thermal_cooling_device_register(const char *type, void *devdata,
|
||||
const struct thermal_cooling_device_ops *ops)
|
||||
{
|
||||
return __thermal_cooling_device_register(NULL, type, devdata, ops);
|
||||
|
@ -1039,7 +1039,7 @@ EXPORT_SYMBOL_GPL(thermal_cooling_device_register);
|
|||
*/
|
||||
struct thermal_cooling_device *
|
||||
thermal_of_cooling_device_register(struct device_node *np,
|
||||
char *type, void *devdata,
|
||||
const char *type, void *devdata,
|
||||
const struct thermal_cooling_device_ops *ops)
|
||||
{
|
||||
return __thermal_cooling_device_register(np, type, devdata, ops);
|
||||
|
@ -1543,6 +1543,7 @@ static int thermal_pm_notify(struct notifier_block *nb,
|
|||
unsigned long mode, void *_unused)
|
||||
{
|
||||
struct thermal_zone_device *tz;
|
||||
enum thermal_device_mode tz_mode;
|
||||
|
||||
switch (mode) {
|
||||
case PM_HIBERNATION_PREPARE:
|
||||
|
@ -1555,6 +1556,13 @@ static int thermal_pm_notify(struct notifier_block *nb,
|
|||
case PM_POST_SUSPEND:
|
||||
atomic_set(&in_suspend, 0);
|
||||
list_for_each_entry(tz, &thermal_tz_list, node) {
|
||||
tz_mode = THERMAL_DEVICE_ENABLED;
|
||||
if (tz->ops->get_mode)
|
||||
tz->ops->get_mode(tz, &tz_mode);
|
||||
|
||||
if (tz_mode == THERMAL_DEVICE_DISABLED)
|
||||
continue;
|
||||
|
||||
thermal_zone_device_init(tz);
|
||||
thermal_zone_device_update(tz,
|
||||
THERMAL_EVENT_UNSPECIFIED);
|
||||
|
@ -1612,19 +1620,4 @@ static int __init thermal_init(void)
|
|||
mutex_destroy(&poweroff_lock);
|
||||
return result;
|
||||
}
|
||||
|
||||
static void __exit thermal_exit(void)
|
||||
{
|
||||
unregister_pm_notifier(&thermal_pm_nb);
|
||||
of_thermal_destroy_zones();
|
||||
genetlink_exit();
|
||||
class_unregister(&thermal_class);
|
||||
thermal_unregister_governors();
|
||||
ida_destroy(&thermal_tz_ida);
|
||||
ida_destroy(&thermal_cdev_ida);
|
||||
mutex_destroy(&thermal_list_lock);
|
||||
mutex_destroy(&thermal_governor_lock);
|
||||
}
|
||||
|
||||
fs_initcall(thermal_init);
|
||||
module_exit(thermal_exit);
|
||||
|
|
|
@ -442,10 +442,10 @@ void thermal_zone_device_update(struct thermal_zone_device *,
|
|||
enum thermal_notify_event);
|
||||
void thermal_zone_set_trips(struct thermal_zone_device *);
|
||||
|
||||
struct thermal_cooling_device *thermal_cooling_device_register(char *, void *,
|
||||
const struct thermal_cooling_device_ops *);
|
||||
struct thermal_cooling_device *thermal_cooling_device_register(const char *,
|
||||
void *, const struct thermal_cooling_device_ops *);
|
||||
struct thermal_cooling_device *
|
||||
thermal_of_cooling_device_register(struct device_node *np, char *, void *,
|
||||
thermal_of_cooling_device_register(struct device_node *np, const char *, void *,
|
||||
const struct thermal_cooling_device_ops *);
|
||||
struct thermal_cooling_device *
|
||||
devm_thermal_of_cooling_device_register(struct device *dev,
|
||||
|
|
Loading…
Reference in New Issue