[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200414180105.20042-7-andrzej.p@collabora.com>
Date: Tue, 14 Apr 2020 20:01:02 +0200
From: Andrzej Pietrasiewicz <andrzej.p@...labora.com>
To: linux-pm@...r.kernel.org
Cc: Zhang Rui <rui.zhang@...el.com>,
"Rafael J . Wysocki" <rjw@...ysocki.net>,
Len Brown <lenb@...nel.org>, Jiri Pirko <jiri@...lanox.com>,
Ido Schimmel <idosch@...lanox.com>,
"David S . Miller" <davem@...emloft.net>,
Peter Kaestle <peter@...e.net>,
Darren Hart <dvhart@...radead.org>,
Andy Shevchenko <andy@...radead.org>,
Support Opensource <support.opensource@...semi.com>,
Daniel Lezcano <daniel.lezcano@...aro.org>,
Amit Kucheria <amit.kucheria@...durent.com>,
Shawn Guo <shawnguo@...nel.org>,
Sascha Hauer <s.hauer@...gutronix.de>,
Pengutronix Kernel Team <kernel@...gutronix.de>,
Fabio Estevam <festevam@...il.com>,
NXP Linux Team <linux-imx@....com>,
Allison Randal <allison@...utok.net>,
Enrico Weigelt <info@...ux.net>,
Gayatri Kammela <gayatri.kammela@...el.com>,
Thomas Gleixner <tglx@...utronix.de>,
linux-acpi@...r.kernel.org, netdev@...r.kernel.org,
platform-driver-x86@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org, kernel@...labora.com,
Andrzej Pietrasiewicz <andrzej.p@...labora.com>
Subject: [RFC v2 6/9] thermal: Remove get_mode() method
Now that mode of all thermal zone devices is stored in struct
thermal_zone_device the get_mode() method is not used nor necessary any
more. All its former users used it only to report the state of their
then-internal variable.
The sysfs "mode" attribute is always exposed from now on. It doesn't hurt
the drivers which don't provide their own set_mode(), because writing to
"mode" will result in -EPERM, as expected.
thermal_zone_device_get_mode() will always succeed, so let it return the
actual value rather than an always-zero return code.
Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@...labora.com>
---
drivers/acpi/thermal.c | 12 ++--------
drivers/thermal/imx_thermal.c | 6 +----
.../intel/int340x_thermal/int3400_thermal.c | 6 +----
drivers/thermal/thermal_core.c | 16 +-------------
drivers/thermal/thermal_sysfs.c | 22 +------------------
include/linux/thermal.h | 16 ++++++++------
6 files changed, 15 insertions(+), 63 deletions(-)
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index 755f12b76c20..bfe573076a3f 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -500,11 +500,7 @@ static void acpi_thermal_check(void *data)
struct acpi_thermal *tz = data;
enum thermal_device_mode mode;
- /*
- * this driver does not provide ->get_mode(), so calling
- * thermal_zone_device_get_mode() always succeeds
- */
- thermal_zone_device_get_mode(tz->thermal_zone, &mode);
+ mode = thermal_zone_device_get_mode(tz->thermal_zone);
if (mode != THERMAL_DEVICE_ENABLED)
return;
@@ -546,11 +542,7 @@ static int thermal_set_mode(struct thermal_zone_device *thermal,
if (mode == THERMAL_DEVICE_DISABLED)
pr_warn("thermal zone will be disabled\n");
- /*
- * this driver does not provide ->get_mode(), so calling
- * thermal_zone_device_get_mode() always succeeds
- */
- thermal_zone_device_get_mode(thermal, &old_mode);
+ old_mode = thermal_zone_device_get_mode(thermal);
if (mode != old_mode) {
thermal_zone_device_store_mode(thermal, mode);
diff --git a/drivers/thermal/imx_thermal.c b/drivers/thermal/imx_thermal.c
index f3f602b4ece5..8b683c6585cf 100644
--- a/drivers/thermal/imx_thermal.c
+++ b/drivers/thermal/imx_thermal.c
@@ -256,11 +256,7 @@ static int imx_get_temp(struct thermal_zone_device *tz, int *temp)
bool wait;
u32 val;
- /*
- * this driver does not provide ->get_mode(), so calling
- * thermal_zone_device_get_mode() always succeeds
- */
- thermal_zone_device_get_mode(tz, &mode);
+ mode = thermal_zone_device_get_mode(tz);
if (mode == THERMAL_DEVICE_ENABLED) {
/* Check if a measurement is currently in progress */
regmap_read(map, soc_data->temp_data, &val);
diff --git a/drivers/thermal/intel/int340x_thermal/int3400_thermal.c b/drivers/thermal/intel/int340x_thermal/int3400_thermal.c
index a7d9b42c060d..20007fafc04b 100644
--- a/drivers/thermal/intel/int340x_thermal/int3400_thermal.c
+++ b/drivers/thermal/intel/int340x_thermal/int3400_thermal.c
@@ -240,11 +240,7 @@ static int int3400_thermal_set_mode(struct thermal_zone_device *thermal,
mode != THERMAL_DEVICE_DISABLED)
return -EINVAL;
- /*
- * this driver does not provide ->get_mode(), so calling
- * thermal_zone_device_get_mode() always succeeds
- */
- thermal_zone_device_get_mode(thermal, &old_mode);
+ old_mode = thermal_zone_device_get_mode(thermal);
if (mode != old_mode) {
thermal_zone_device_store_mode(thermal, mode);
result = int3400_thermal_run_osc(priv->adev->handle,
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index cb0ff47f0dbe..a59c3411fb9c 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -469,18 +469,6 @@ static void thermal_zone_device_reset(struct thermal_zone_device *tz)
thermal_zone_device_init(tz);
}
-int thermal_zone_device_get_mode(struct thermal_zone_device *tz,
- enum thermal_device_mode *mode)
-{
- if (tz->ops->get_mode)
- return tz->ops->get_mode(tz, mode);
-
- *mode = tz->mode;
-
- return 0;
-}
-EXPORT_SYMBOL_GPL(thermal_zone_device_get_mode);
-
int thermal_zone_device_set_mode(struct thermal_zone_device *tz,
enum thermal_device_mode mode)
{
@@ -1507,9 +1495,7 @@ 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);
+ tz_mode = thermal_zone_device_get_mode(tz);
if (tz_mode == THERMAL_DEVICE_DISABLED)
continue;
diff --git a/drivers/thermal/thermal_sysfs.c b/drivers/thermal/thermal_sysfs.c
index 66d9691b8bd6..cbb27b3c96d2 100644
--- a/drivers/thermal/thermal_sysfs.c
+++ b/drivers/thermal/thermal_sysfs.c
@@ -50,11 +50,8 @@ mode_show(struct device *dev, struct device_attribute *attr, char *buf)
{
struct thermal_zone_device *tz = to_thermal_zone(dev);
enum thermal_device_mode mode;
- int result;
- result = thermal_zone_device_get_mode(tz, &mode);
- if (result)
- return result;
+ mode = thermal_zone_device_get_mode(tz);
return sprintf(buf, "%s\n", mode == THERMAL_DEVICE_ENABLED ? "enabled"
: "disabled");
@@ -425,30 +422,13 @@ static struct attribute_group thermal_zone_attribute_group = {
.attrs = thermal_zone_dev_attrs,
};
-/* We expose mode only if .get_mode is present */
static struct attribute *thermal_zone_mode_attrs[] = {
&dev_attr_mode.attr,
NULL,
};
-static umode_t thermal_zone_mode_is_visible(struct kobject *kobj,
- struct attribute *attr,
- int attrno)
-{
- struct device *dev = container_of(kobj, struct device, kobj);
- struct thermal_zone_device *tz;
-
- tz = container_of(dev, struct thermal_zone_device, device);
-
- if (tz->ops->get_mode)
- return attr->mode;
-
- return 0;
-}
-
static struct attribute_group thermal_zone_mode_attribute_group = {
.attrs = thermal_zone_mode_attrs,
- .is_visible = thermal_zone_mode_is_visible,
};
/* We expose passive only if passive trips are present */
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index 9ff8542b7e7d..efb481088035 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -86,8 +86,6 @@ struct thermal_zone_device_ops {
struct thermal_cooling_device *);
int (*get_temp) (struct thermal_zone_device *, int *);
int (*set_trips) (struct thermal_zone_device *, int, int);
- int (*get_mode) (struct thermal_zone_device *,
- enum thermal_device_mode *);
int (*set_mode) (struct thermal_zone_device *,
enum thermal_device_mode);
int (*get_trip_type) (struct thermal_zone_device *, int,
@@ -440,8 +438,12 @@ int thermal_zone_bind_cooling_device(struct thermal_zone_device *, int,
int thermal_zone_unbind_cooling_device(struct thermal_zone_device *, int,
struct thermal_cooling_device *);
-int thermal_zone_device_get_mode(struct thermal_zone_device *tz,
- enum thermal_device_mode *mode);
+static inline enum thermal_device_mode
+thermal_zone_device_get_mode(struct thermal_zone_device *tz)
+{
+ return tz->mode;
+}
+
int thermal_zone_device_set_mode(struct thermal_zone_device *tz,
enum thermal_device_mode mode);
@@ -509,9 +511,9 @@ static inline int thermal_zone_unbind_cooling_device(
struct thermal_zone_device *tz, int trip,
struct thermal_cooling_device *cdev)
{ return -ENODEV; }
-static inline int thermal_zone_device_get_mode(struct thermal_zone_device *tz,
- enum thermal_device_mode *mode)
-{ return -ENODEV; }
+static inline enum thermal_device_mode
+thermal_zone_device_get_mode(struct thermal_zone_device *tz)
+{ return THERMAL_DEVICE_DISABLED; }
static inline int thermal_zone_device_set_mode(struct thermal_zone_device *tz,
enum thermal_device_mode mode)
{ return -ENODEV; }
--
2.17.1
Powered by blists - more mailing lists