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; }
