Merge back thermal control material for 6.4-rc1.
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 27 Mar 2023 11:46:13 +0000 (13:46 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 27 Mar 2023 11:46:13 +0000 (13:46 +0200)
67 files changed:
drivers/acpi/thermal.c
drivers/ata/ahci_imx.c
drivers/hwmon/hwmon.c
drivers/hwmon/pmbus/pmbus_core.c
drivers/hwmon/scmi-hwmon.c
drivers/hwmon/scpi-hwmon.c
drivers/iio/adc/sun4i-gpadc-iio.c
drivers/input/touchscreen/sun4i-ts.c
drivers/net/ethernet/chelsio/cxgb4/cxgb4_thermal.c
drivers/net/ethernet/mellanox/mlxsw/core_thermal.c
drivers/net/wireless/intel/iwlwifi/mvm/tt.c
drivers/platform/x86/acerhdf.c
drivers/power/supply/power_supply_core.c
drivers/regulator/max8973-regulator.c
drivers/thermal/amlogic_thermal.c
drivers/thermal/armada_thermal.c
drivers/thermal/broadcom/bcm2711_thermal.c
drivers/thermal/broadcom/bcm2835_thermal.c
drivers/thermal/broadcom/brcmstb_thermal.c
drivers/thermal/broadcom/ns-thermal.c
drivers/thermal/broadcom/sr-thermal.c
drivers/thermal/da9062-thermal.c
drivers/thermal/db8500_thermal.c
drivers/thermal/dove_thermal.c
drivers/thermal/hisi_thermal.c
drivers/thermal/imx8mm_thermal.c
drivers/thermal/imx_sc_thermal.c
drivers/thermal/imx_thermal.c
drivers/thermal/intel/int340x_thermal/int3400_thermal.c
drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c
drivers/thermal/intel/int340x_thermal/processor_thermal_device_pci.c
drivers/thermal/intel/intel_pch_thermal.c
drivers/thermal/intel/intel_quark_dts_thermal.c
drivers/thermal/intel/intel_soc_dts_iosf.c
drivers/thermal/intel/x86_pkg_temp_thermal.c
drivers/thermal/k3_bandgap.c
drivers/thermal/k3_j72xx_bandgap.c
drivers/thermal/kirkwood_thermal.c
drivers/thermal/max77620_thermal.c
drivers/thermal/mediatek/auxadc_thermal.c
drivers/thermal/mediatek/lvts_thermal.c
drivers/thermal/qcom/qcom-spmi-adc-tm5.c
drivers/thermal/qcom/qcom-spmi-temp-alarm.c
drivers/thermal/qcom/tsens.c
drivers/thermal/qoriq_thermal.c
drivers/thermal/rcar_gen3_thermal.c
drivers/thermal/rcar_thermal.c
drivers/thermal/rockchip_thermal.c
drivers/thermal/rzg2l_thermal.c
drivers/thermal/samsung/exynos_tmu.c
drivers/thermal/spear_thermal.c
drivers/thermal/sprd_thermal.c
drivers/thermal/st/st_thermal.c
drivers/thermal/st/stm_thermal.c
drivers/thermal/sun8i_thermal.c
drivers/thermal/tegra/soctherm.c
drivers/thermal/tegra/tegra-bpmp-thermal.c
drivers/thermal/tegra/tegra30-tsensor.c
drivers/thermal/thermal-generic-adc.c
drivers/thermal/thermal_core.c
drivers/thermal/thermal_helpers.c
drivers/thermal/thermal_hwmon.c
drivers/thermal/thermal_hwmon.h
drivers/thermal/thermal_mmio.c
drivers/thermal/ti-soc-thermal/ti-thermal-common.c
drivers/thermal/uniphier_thermal.c
include/linux/thermal.h

index 0b4b844..255efa7 100644 (file)
@@ -498,7 +498,7 @@ static int acpi_thermal_get_trip_points(struct acpi_thermal *tz)
 
 static int thermal_get_temp(struct thermal_zone_device *thermal, int *temp)
 {
-       struct acpi_thermal *tz = thermal->devdata;
+       struct acpi_thermal *tz = thermal_zone_device_priv(thermal);
        int result;
 
        if (!tz)
@@ -516,7 +516,7 @@ static int thermal_get_temp(struct thermal_zone_device *thermal, int *temp)
 static int thermal_get_trip_type(struct thermal_zone_device *thermal,
                                 int trip, enum thermal_trip_type *type)
 {
-       struct acpi_thermal *tz = thermal->devdata;
+       struct acpi_thermal *tz = thermal_zone_device_priv(thermal);
        int i;
 
        if (!tz || trip < 0)
@@ -560,7 +560,7 @@ static int thermal_get_trip_type(struct thermal_zone_device *thermal,
 static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
                                 int trip, int *temp)
 {
-       struct acpi_thermal *tz = thermal->devdata;
+       struct acpi_thermal *tz = thermal_zone_device_priv(thermal);
        int i;
 
        if (!tz || trip < 0)
@@ -613,7 +613,7 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
 static int thermal_get_crit_temp(struct thermal_zone_device *thermal,
                                int *temperature)
 {
-       struct acpi_thermal *tz = thermal->devdata;
+       struct acpi_thermal *tz = thermal_zone_device_priv(thermal);
 
        if (tz->trips.critical.flags.valid) {
                *temperature = deci_kelvin_to_millicelsius_with_offset(
@@ -628,7 +628,7 @@ static int thermal_get_crit_temp(struct thermal_zone_device *thermal,
 static int thermal_get_trend(struct thermal_zone_device *thermal,
                             int trip, enum thermal_trend *trend)
 {
-       struct acpi_thermal *tz = thermal->devdata;
+       struct acpi_thermal *tz = thermal_zone_device_priv(thermal);
        enum thermal_trip_type type;
        int i;
 
@@ -670,7 +670,7 @@ static int thermal_get_trend(struct thermal_zone_device *thermal,
 
 static void acpi_thermal_zone_device_hot(struct thermal_zone_device *thermal)
 {
-       struct acpi_thermal *tz = thermal->devdata;
+       struct acpi_thermal *tz = thermal_zone_device_priv(thermal);
 
        acpi_bus_generate_netlink_event(tz->device->pnp.device_class,
                                        dev_name(&tz->device->dev),
@@ -679,7 +679,7 @@ static void acpi_thermal_zone_device_hot(struct thermal_zone_device *thermal)
 
 static void acpi_thermal_zone_device_critical(struct thermal_zone_device *thermal)
 {
-       struct acpi_thermal *tz = thermal->devdata;
+       struct acpi_thermal *tz = thermal_zone_device_priv(thermal);
 
        acpi_bus_generate_netlink_event(tz->device->pnp.device_class,
                                        dev_name(&tz->device->dev),
@@ -693,7 +693,7 @@ static int acpi_thermal_cooling_device_cb(struct thermal_zone_device *thermal,
                                          bool bind)
 {
        struct acpi_device *device = cdev->devdata;
-       struct acpi_thermal *tz = thermal->devdata;
+       struct acpi_thermal *tz = thermal_zone_device_priv(thermal);
        struct acpi_device *dev;
        acpi_handle handle;
        int i;
@@ -842,7 +842,7 @@ static int acpi_thermal_register_thermal_zone(struct acpi_thermal *tz)
                goto acpi_bus_detach;
 
        dev_info(&tz->device->dev, "registered as thermal_zone%d\n",
-                tz->thermal_zone->id);
+                thermal_zone_device_id(tz->thermal_zone));
 
        return 0;
 
index a950767..e45e91f 100644 (file)
@@ -418,7 +418,7 @@ static int __sata_ahci_read_temperature(void *dev, int *temp)
 
 static int sata_ahci_read_temperature(struct thermal_zone_device *tz, int *temp)
 {
-       return __sata_ahci_read_temperature(tz->devdata, temp);
+       return __sata_ahci_read_temperature(thermal_zone_device_priv(tz), temp);
 }
 
 static ssize_t sata_ahci_show_temp(struct device *dev,
index 33edb5c..3adf5c3 100644 (file)
@@ -154,7 +154,7 @@ static DEFINE_IDA(hwmon_ida);
 #ifdef CONFIG_THERMAL_OF
 static int hwmon_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct hwmon_thermal_data *tdata = tz->devdata;
+       struct hwmon_thermal_data *tdata = thermal_zone_device_priv(tz);
        struct hwmon_device *hwdev = to_hwmon_device(tdata->dev);
        int ret;
        long t;
@@ -171,7 +171,7 @@ static int hwmon_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
 
 static int hwmon_thermal_set_trips(struct thermal_zone_device *tz, int low, int high)
 {
-       struct hwmon_thermal_data *tdata = tz->devdata;
+       struct hwmon_thermal_data *tdata = thermal_zone_device_priv(tz);
        struct hwmon_device *hwdev = to_hwmon_device(tdata->dev);
        const struct hwmon_chip_info *chip = hwdev->chip;
        const struct hwmon_channel_info **info = chip->info;
index 95e9578..e39a327 100644 (file)
@@ -1272,7 +1272,7 @@ struct pmbus_thermal_data {
 
 static int pmbus_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct pmbus_thermal_data *tdata = tz->devdata;
+       struct pmbus_thermal_data *tdata = thermal_zone_device_priv(tz);
        struct pmbus_sensor *sensor = tdata->sensor;
        struct pmbus_data *pmbus_data = tdata->pmbus_data;
        struct i2c_client *client = to_i2c_client(pmbus_data->dev);
index e192f0c..364199b 100644 (file)
@@ -141,7 +141,7 @@ static int scmi_hwmon_thermal_get_temp(struct thermal_zone_device *tz,
 {
        int ret;
        long value;
-       struct scmi_thermal_sensor *th_sensor = tz->devdata;
+       struct scmi_thermal_sensor *th_sensor = thermal_zone_device_priv(tz);
 
        ret = scmi_hwmon_read_scaled_value(th_sensor->ph, th_sensor->info,
                                           &value);
@@ -220,7 +220,7 @@ static int scmi_thermal_sensor_register(struct device *dev,
                        sensor->name);
        } else {
                dev_dbg(dev, "Sensor '%s' attached to thermal zone ID:%d\n",
-                       sensor->name, tzd->id);
+                       sensor->name, thermal_zone_device_id(tzd));
        }
 
        return 0;
index 4d75385..121e5e9 100644 (file)
@@ -64,7 +64,7 @@ static void scpi_scale_reading(u64 *value, struct sensor_data *sensor)
 
 static int scpi_read_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct scpi_thermal_zone *zone = tz->devdata;
+       struct scpi_thermal_zone *zone = thermal_zone_device_priv(tz);
        struct scpi_sensors *scpi_sensors = zone->scpi_sensors;
        struct scpi_ops *scpi_ops = scpi_sensors->scpi_ops;
        struct sensor_data *sensor = &scpi_sensors->data[zone->sensor_id];
index a6ade70..a532255 100644 (file)
@@ -414,7 +414,7 @@ static int sun4i_gpadc_runtime_resume(struct device *dev)
 
 static int sun4i_gpadc_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct sun4i_gpadc_iio *info = tz->devdata;
+       struct sun4i_gpadc_iio *info = thermal_zone_device_priv(tz);
        int val, scale, offset;
 
        if (sun4i_gpadc_temp_read(info->indio_dev, &val))
index 73eb8f8..1117fba 100644 (file)
@@ -194,7 +194,7 @@ static int sun4i_get_temp(const struct sun4i_ts_data *ts, int *temp)
 
 static int sun4i_get_tz_temp(struct thermal_zone_device *tz, int *temp)
 {
-       return sun4i_get_temp(tz->devdata, temp);
+       return sun4i_get_temp(thermal_zone_device_priv(tz), temp);
 }
 
 static const struct thermal_zone_device_ops sun4i_ts_tz_ops = {
index 95e1b41..dea9d29 100644 (file)
@@ -12,7 +12,7 @@
 static int cxgb4_thermal_get_temp(struct thermal_zone_device *tzdev,
                                  int *temp)
 {
-       struct adapter *adap = tzdev->devdata;
+       struct adapter *adap = thermal_zone_device_priv(tzdev);
        u32 param, val;
        int ret;
 
index c5240d3..b0a169e 100644 (file)
@@ -177,7 +177,7 @@ mlxsw_thermal_module_trips_update(struct device *dev, struct mlxsw_core *core,
 
        if (crit_temp > emerg_temp) {
                dev_warn(dev, "%s : Critical threshold %d is above emergency threshold %d\n",
-                        tz->tzdev->type, crit_temp, emerg_temp);
+                        thermal_zone_device_type(tz->tzdev), crit_temp, emerg_temp);
                return 0;
        }
 
@@ -201,7 +201,7 @@ mlxsw_thermal_module_trips_update(struct device *dev, struct mlxsw_core *core,
 static int mlxsw_thermal_bind(struct thermal_zone_device *tzdev,
                              struct thermal_cooling_device *cdev)
 {
-       struct mlxsw_thermal *thermal = tzdev->devdata;
+       struct mlxsw_thermal *thermal = thermal_zone_device_priv(tzdev);
        struct device *dev = thermal->bus_info->dev;
        int i, err;
 
@@ -227,7 +227,7 @@ static int mlxsw_thermal_bind(struct thermal_zone_device *tzdev,
 static int mlxsw_thermal_unbind(struct thermal_zone_device *tzdev,
                                struct thermal_cooling_device *cdev)
 {
-       struct mlxsw_thermal *thermal = tzdev->devdata;
+       struct mlxsw_thermal *thermal = thermal_zone_device_priv(tzdev);
        struct device *dev = thermal->bus_info->dev;
        int i;
        int err;
@@ -249,7 +249,7 @@ static int mlxsw_thermal_unbind(struct thermal_zone_device *tzdev,
 static int mlxsw_thermal_get_temp(struct thermal_zone_device *tzdev,
                                  int *p_temp)
 {
-       struct mlxsw_thermal *thermal = tzdev->devdata;
+       struct mlxsw_thermal *thermal = thermal_zone_device_priv(tzdev);
        struct device *dev = thermal->bus_info->dev;
        char mtmp_pl[MLXSW_REG_MTMP_LEN];
        int temp;
@@ -281,7 +281,7 @@ static struct thermal_zone_device_ops mlxsw_thermal_ops = {
 static int mlxsw_thermal_module_bind(struct thermal_zone_device *tzdev,
                                     struct thermal_cooling_device *cdev)
 {
-       struct mlxsw_thermal_module *tz = tzdev->devdata;
+       struct mlxsw_thermal_module *tz = thermal_zone_device_priv(tzdev);
        struct mlxsw_thermal *thermal = tz->parent;
        int i, j, err;
 
@@ -310,7 +310,7 @@ err_thermal_zone_bind_cooling_device:
 static int mlxsw_thermal_module_unbind(struct thermal_zone_device *tzdev,
                                       struct thermal_cooling_device *cdev)
 {
-       struct mlxsw_thermal_module *tz = tzdev->devdata;
+       struct mlxsw_thermal_module *tz = thermal_zone_device_priv(tzdev);
        struct mlxsw_thermal *thermal = tz->parent;
        int i;
        int err;
@@ -356,7 +356,7 @@ mlxsw_thermal_module_temp_and_thresholds_get(struct mlxsw_core *core,
 static int mlxsw_thermal_module_temp_get(struct thermal_zone_device *tzdev,
                                         int *p_temp)
 {
-       struct mlxsw_thermal_module *tz = tzdev->devdata;
+       struct mlxsw_thermal_module *tz = thermal_zone_device_priv(tzdev);
        struct mlxsw_thermal *thermal = tz->parent;
        int temp, crit_temp, emerg_temp;
        struct device *dev;
@@ -391,7 +391,7 @@ static struct thermal_zone_device_ops mlxsw_thermal_module_ops = {
 static int mlxsw_thermal_gearbox_temp_get(struct thermal_zone_device *tzdev,
                                          int *p_temp)
 {
-       struct mlxsw_thermal_module *tz = tzdev->devdata;
+       struct mlxsw_thermal_module *tz = thermal_zone_device_priv(tzdev);
        struct mlxsw_thermal *thermal = tz->parent;
        char mtmp_pl[MLXSW_REG_MTMP_LEN];
        u16 index;
index 232c200..354d952 100644 (file)
@@ -615,7 +615,7 @@ send:
 static int iwl_mvm_tzone_get_temp(struct thermal_zone_device *device,
                                  int *temperature)
 {
-       struct iwl_mvm *mvm = (struct iwl_mvm *)device->devdata;
+       struct iwl_mvm *mvm = thermal_zone_device_priv(device);
        int ret;
        int temp;
 
@@ -641,7 +641,7 @@ out:
 static int iwl_mvm_tzone_set_trip_temp(struct thermal_zone_device *device,
                                       int trip, int temp)
 {
-       struct iwl_mvm *mvm = (struct iwl_mvm *)device->devdata;
+       struct iwl_mvm *mvm = thermal_zone_device_priv(device);
        struct iwl_mvm_thermal_device *tzone;
        int ret;
 
index a48638a..5c9293e 100644 (file)
@@ -79,7 +79,6 @@ static unsigned int list_supported;
 static unsigned int fanstate = ACERHDF_FAN_AUTO;
 static char force_bios[16];
 static char force_product[16];
-static unsigned int prev_interval;
 static struct thermal_zone_device *thz_dev;
 static struct thermal_cooling_device *cl_dev;
 static struct platform_device *acerhdf_dev;
@@ -346,20 +345,15 @@ static void acerhdf_check_param(struct thermal_zone_device *thermal)
        trips[0].temperature = fanon;
        trips[0].hysteresis  = fanon - fanoff;
 
-       if (kernelmode && prev_interval != interval) {
+       if (kernelmode) {
                if (interval > ACERHDF_MAX_INTERVAL) {
                        pr_err("interval too high, set to %d\n",
                               ACERHDF_MAX_INTERVAL);
                        interval = ACERHDF_MAX_INTERVAL;
                }
+
                if (verbose)
                        pr_notice("interval changed to: %d\n", interval);
-
-               if (thermal)
-                       thermal->polling_delay_jiffies =
-                               round_jiffies(msecs_to_jiffies(interval * 1000));
-
-               prev_interval = interval;
        }
 }
 
@@ -697,13 +691,6 @@ static int __init acerhdf_register_thermal(void)
        if (ret)
                return ret;
 
-       if (strcmp(thz_dev->governor->name,
-                               acerhdf_zone_params.governor_name)) {
-               pr_err("Didn't get thermal governor %s, perhaps not compiled into thermal subsystem.\n",
-                               acerhdf_zone_params.governor_name);
-               return -EINVAL;
-       }
-
        return 0;
 }
 
@@ -801,5 +788,5 @@ static const struct kernel_param_ops interval_ops = {
        .get = param_get_uint,
 };
 
-module_param_cb(interval, &interval_ops, &interval, 0600);
+module_param_cb(interval, &interval_ops, &interval, 0000);
 MODULE_PARM_DESC(interval, "Polling interval of temperature check");
index f3d7c1d..5bf3502 100644 (file)
@@ -1142,7 +1142,7 @@ static int power_supply_read_temp(struct thermal_zone_device *tzd,
        int ret;
 
        WARN_ON(tzd == NULL);
-       psy = tzd->devdata;
+       psy = thermal_zone_device_priv(tzd);
        ret = power_supply_get_property(psy, POWER_SUPPLY_PROP_TEMP, &val);
        if (ret)
                return ret;
index 7e00a45..3034261 100644 (file)
@@ -436,7 +436,7 @@ static int max8973_init_dcdc(struct max8973_chip *max,
 
 static int max8973_thermal_read_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct max8973_chip *mchip = tz->devdata;
+       struct max8973_chip *mchip = thermal_zone_device_priv(tz);
        unsigned int val;
        int ret;
 
index 9235fda..4bf3638 100644 (file)
@@ -181,7 +181,7 @@ static int amlogic_thermal_disable(struct amlogic_thermal *data)
 static int amlogic_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
 {
        unsigned int tval;
-       struct amlogic_thermal *pdata = tz->devdata;
+       struct amlogic_thermal *pdata = thermal_zone_device_priv(tz);
 
        if (!pdata)
                return -EINVAL;
@@ -285,7 +285,7 @@ static int amlogic_thermal_probe(struct platform_device *pdev)
                return ret;
        }
 
-       if (devm_thermal_add_hwmon_sysfs(pdata->tzd))
+       if (devm_thermal_add_hwmon_sysfs(&pdev->dev, pdata->tzd))
                dev_warn(&pdev->dev, "Failed to add hwmon sysfs attributes\n");
 
        ret = amlogic_thermal_initialize(pdata);
index 2efc222..0e8dfa6 100644 (file)
@@ -360,11 +360,8 @@ static int armada_select_channel(struct armada_thermal_priv *priv, int channel)
         * we must absolutely wait for the sensor validity bit to ensure we read
         * actual data.
         */
-       if (armada_wait_sensor_validity(priv)) {
-               dev_err(priv->dev,
-                       "Temperature sensor reading not valid\n");
+       if (armada_wait_sensor_validity(priv))
                return -EIO;
-       }
 
        return 0;
 }
@@ -398,15 +395,12 @@ static int armada_read_sensor(struct armada_thermal_priv *priv, int *temp)
 static int armada_get_temp_legacy(struct thermal_zone_device *thermal,
                                  int *temp)
 {
-       struct armada_thermal_priv *priv = thermal->devdata;
+       struct armada_thermal_priv *priv = thermal_zone_device_priv(thermal);
        int ret;
 
        /* Valid check */
-       if (!armada_is_valid(priv)) {
-               dev_err(priv->dev,
-                       "Temperature sensor reading not valid\n");
+       if (!armada_is_valid(priv))
                return -EIO;
-       }
 
        /* Do the actual reading */
        ret = armada_read_sensor(priv, temp);
@@ -420,7 +414,7 @@ static struct thermal_zone_device_ops legacy_ops = {
 
 static int armada_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct armada_thermal_sensor *sensor = tz->devdata;
+       struct armada_thermal_sensor *sensor = thermal_zone_device_priv(tz);
        struct armada_thermal_priv *priv = sensor->priv;
        int ret;
 
index 1f8651d..c243a76 100644 (file)
@@ -33,7 +33,7 @@ struct bcm2711_thermal_priv {
 
 static int bcm2711_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct bcm2711_thermal_priv *priv = tz->devdata;
+       struct bcm2711_thermal_priv *priv = thermal_zone_device_priv(tz);
        int slope = thermal_zone_get_slope(tz);
        int offset = thermal_zone_get_offset(tz);
        u32 val;
@@ -98,7 +98,6 @@ static int bcm2711_thermal_probe(struct platform_device *pdev)
 
        priv->thermal = thermal;
 
-       thermal->tzp->no_hwmon = false;
        return thermal_add_hwmon_sysfs(thermal);
 }
 
index 23918bb..a217d83 100644 (file)
@@ -90,7 +90,7 @@ static int bcm2835_thermal_temp2adc(int temp, int offset, int slope)
 
 static int bcm2835_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct bcm2835_thermal_data *data = tz->devdata;
+       struct bcm2835_thermal_data *data = thermal_zone_device_priv(tz);
        u32 val = readl(data->regs + BCM2835_TS_TSENSSTAT);
 
        if (!(val & BCM2835_TS_TSENSSTAT_VALID))
@@ -267,7 +267,6 @@ static int bcm2835_thermal_probe(struct platform_device *pdev)
         * Thermal_zone doesn't enable hwmon as default,
         * enable it here
         */
-       tz->tzp->no_hwmon = false;
        err = thermal_add_hwmon_sysfs(tz);
        if (err)
                goto err_tz;
index 4d02c28..72d1dbe 100644 (file)
@@ -152,16 +152,14 @@ static inline u32 avs_tmon_temp_to_code(struct brcmstb_thermal_priv *priv,
 
 static int brcmstb_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct brcmstb_thermal_priv *priv = tz->devdata;
+       struct brcmstb_thermal_priv *priv = thermal_zone_device_priv(tz);
        u32 val;
        long t;
 
        val = __raw_readl(priv->tmon_base + AVS_TMON_STATUS);
 
-       if (!(val & AVS_TMON_STATUS_valid_msk)) {
-               dev_err(priv->dev, "reading not valid\n");
+       if (!(val & AVS_TMON_STATUS_valid_msk))
                return -EIO;
-       }
 
        val = (val & AVS_TMON_STATUS_data_msk) >> AVS_TMON_STATUS_data_shift;
 
@@ -262,7 +260,7 @@ static irqreturn_t brcmstb_tmon_irq_thread(int irq, void *data)
 
 static int brcmstb_set_trips(struct thermal_zone_device *tz, int low, int high)
 {
-       struct brcmstb_thermal_priv *priv = tz->devdata;
+       struct brcmstb_thermal_priv *priv = thermal_zone_device_priv(tz);
 
        dev_dbg(priv->dev, "set trips %d <--> %d\n", low, high);
 
index 07a8a3f..d255aa8 100644 (file)
@@ -16,7 +16,7 @@
 
 static int ns_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       void __iomem *pvtmon = tz->devdata;
+       void __iomem *pvtmon = thermal_zone_device_priv(tz);
        int offset = thermal_zone_get_offset(tz);
        int slope = thermal_zone_get_slope(tz);
        u32 val;
index 2b93502..7479158 100644 (file)
@@ -32,7 +32,7 @@ struct sr_thermal {
 
 static int sr_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct sr_tmon *tmon = tz->devdata;
+       struct sr_tmon *tmon = thermal_zone_device_priv(tz);
        struct sr_thermal *sr_thermal = tmon->priv;
 
        *temp = readl(sr_thermal->regs + SR_TMON_TEMP_BASE(tmon->tmon_id));
index a805a66..2d31b1f 100644 (file)
@@ -41,6 +41,8 @@
 
 #define DA9062_MILLI_CELSIUS(t)                        ((t) * 1000)
 
+static unsigned int pp_tmp = DA9062_DEFAULT_POLLING_MS_PERIOD;
+
 struct da9062_thermal_config {
        const char *name;
 };
@@ -95,7 +97,10 @@ static void da9062_thermal_poll_on(struct work_struct *work)
                thermal_zone_device_update(thermal->zone,
                                           THERMAL_EVENT_UNSPECIFIED);
 
-               delay = thermal->zone->passive_delay_jiffies;
+               /*
+                * pp_tmp is between 1s and 10s, so we can round the jiffies
+                */
+               delay = round_jiffies(msecs_to_jiffies(pp_tmp));
                queue_delayed_work(system_freezable_wq, &thermal->work, delay);
                return;
        }
@@ -123,7 +128,7 @@ static irqreturn_t da9062_thermal_irq_handler(int irq, void *data)
 static int da9062_thermal_get_temp(struct thermal_zone_device *z,
                                   int *temp)
 {
-       struct da9062_thermal *thermal = z->devdata;
+       struct da9062_thermal *thermal = thermal_zone_device_priv(z);
 
        mutex_lock(&thermal->lock);
        *temp = thermal->temperature;
@@ -155,7 +160,6 @@ static int da9062_thermal_probe(struct platform_device *pdev)
 {
        struct da9062 *chip = dev_get_drvdata(pdev->dev.parent);
        struct da9062_thermal *thermal;
-       unsigned int pp_tmp = DA9062_DEFAULT_POLLING_MS_PERIOD;
        const struct of_device_id *match;
        int ret = 0;
 
@@ -208,8 +212,7 @@ static int da9062_thermal_probe(struct platform_device *pdev)
        }
 
        dev_dbg(&pdev->dev,
-               "TJUNC temperature polling period set at %d ms\n",
-               jiffies_to_msecs(thermal->zone->passive_delay_jiffies));
+               "TJUNC temperature polling period set at %d ms\n", pp_tmp);
 
        ret = platform_get_irq_byname(pdev, "THERMAL");
        if (ret < 0)
index cb10e28..c041849 100644 (file)
@@ -60,7 +60,7 @@ struct db8500_thermal_zone {
 /* Callback to get current temperature */
 static int db8500_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct db8500_thermal_zone *th = tz->devdata;
+       struct db8500_thermal_zone *th = thermal_zone_device_priv(tz);
 
        /*
         * TODO: There is no PRCMU interface to get temperature data currently,
index 056622a..9954040 100644 (file)
@@ -87,15 +87,12 @@ static int dove_get_temp(struct thermal_zone_device *thermal,
                          int *temp)
 {
        unsigned long reg;
-       struct dove_thermal_priv *priv = thermal->devdata;
+       struct dove_thermal_priv *priv = thermal_zone_device_priv(thermal);
 
        /* Valid check */
        reg = readl_relaxed(priv->control + PMU_TEMP_DIOD_CTRL1_REG);
-       if ((reg & PMU_TDC1_TEMP_VALID_MASK) == 0x0) {
-               dev_err(&thermal->device,
-                       "Temperature sensor reading not valid\n");
+       if ((reg & PMU_TDC1_TEMP_VALID_MASK) == 0x0)
                return -EIO;
-       }
 
        /*
         * Calculate temperature. According to Marvell internal
index 32a7c3c..0d135b8 100644 (file)
@@ -431,14 +431,11 @@ static int hi3660_thermal_probe(struct hisi_thermal_data *data)
 
 static int hisi_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct hisi_thermal_sensor *sensor = tz->devdata;
+       struct hisi_thermal_sensor *sensor = thermal_zone_device_priv(tz);
        struct hisi_thermal_data *data = sensor->data;
 
        *temp = data->ops->get_temp(sensor);
 
-       dev_dbg(&data->pdev->dev, "tzd=%p, id=%d, temp=%d, thres=%d\n",
-               sensor->tzd, sensor->id, *temp, sensor->thres_temp);
-
        return 0;
 }
 
index 72b5d6f..e0de6ac 100644 (file)
@@ -141,7 +141,7 @@ static int imx8mp_tmu_get_temp(void *data, int *temp)
 
 static int tmu_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct tmu_sensor *sensor = tz->devdata;
+       struct tmu_sensor *sensor = thermal_zone_device_priv(tz);
        struct imx8mm_tmu *tmu = sensor->priv;
 
        return tmu->socdata->get_temp(sensor, temp);
@@ -343,7 +343,7 @@ static int imx8mm_tmu_probe(struct platform_device *pdev)
                }
                tmu->sensors[i].hw_id = i;
 
-               if (devm_thermal_add_hwmon_sysfs(tmu->sensors[i].tzd))
+               if (devm_thermal_add_hwmon_sysfs(&pdev->dev, tmu->sensors[i].tzd))
                        dev_warn(&pdev->dev, "failed to add hwmon sysfs attributes\n");
        }
 
index f32e59e..839bb99 100644 (file)
@@ -46,7 +46,7 @@ static int imx_sc_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
 {
        struct imx_sc_msg_misc_get_temp msg;
        struct imx_sc_rpc_msg *hdr = &msg.hdr;
-       struct imx_sc_sensor *sensor = tz->devdata;
+       struct imx_sc_sensor *sensor = thermal_zone_device_priv(tz);
        int ret;
 
        msg.data.req.resource_id = sensor->resource_id;
@@ -58,11 +58,8 @@ static int imx_sc_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
        hdr->size = 2;
 
        ret = imx_scu_call_rpc(thermal_ipc_handle, &msg, true);
-       if (ret) {
-               dev_err(&sensor->tzd->device, "read temp sensor %d failed, ret %d\n",
-                       sensor->resource_id, ret);
+       if (ret)
                return ret;
-       }
 
        *temp = msg.data.resp.celsius * 1000 + msg.data.resp.tenths * 100;
 
@@ -119,7 +116,7 @@ static int imx_sc_thermal_probe(struct platform_device *pdev)
                        return ret;
                }
 
-               if (devm_thermal_add_hwmon_sysfs(sensor->tzd))
+               if (devm_thermal_add_hwmon_sysfs(&pdev->dev, sensor->tzd))
                        dev_warn(&pdev->dev, "failed to add hwmon sysfs attributes\n");
        }
 
index fb0d5ca..c313697 100644 (file)
@@ -252,7 +252,7 @@ static void imx_set_alarm_temp(struct imx_thermal_data *data,
 
 static int imx_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct imx_thermal_data *data = tz->devdata;
+       struct imx_thermal_data *data = thermal_zone_device_priv(tz);
        const struct thermal_soc_data *soc_data = data->socdata;
        struct regmap *map = data->tempmon;
        unsigned int n_meas;
@@ -265,10 +265,8 @@ static int imx_get_temp(struct thermal_zone_device *tz, int *temp)
 
        regmap_read(map, soc_data->temp_data, &val);
 
-       if ((val & soc_data->temp_valid_mask) == 0) {
-               dev_dbg(&tz->device, "temp measurement never finished\n");
+       if ((val & soc_data->temp_valid_mask) == 0)
                return -EAGAIN;
-       }
 
        n_meas = (val & soc_data->temp_value_mask)
                >> soc_data->temp_value_shift;
@@ -287,13 +285,13 @@ static int imx_get_temp(struct thermal_zone_device *tz, int *temp)
                if (data->alarm_temp == trips[IMX_TRIP_CRITICAL].temperature &&
                        *temp < trips[IMX_TRIP_PASSIVE].temperature) {
                        imx_set_alarm_temp(data, trips[IMX_TRIP_PASSIVE].temperature);
-                       dev_dbg(&tz->device, "thermal alarm off: T < %d\n",
+                       dev_dbg(data->dev, "thermal alarm off: T < %d\n",
                                data->alarm_temp / 1000);
                }
        }
 
        if (*temp != data->last_temp) {
-               dev_dbg(&tz->device, "millicelsius: %d\n", *temp);
+               dev_dbg(data->dev, "millicelsius: %d\n", *temp);
                data->last_temp = *temp;
        }
 
@@ -311,7 +309,7 @@ static int imx_get_temp(struct thermal_zone_device *tz, int *temp)
 static int imx_change_mode(struct thermal_zone_device *tz,
                           enum thermal_device_mode mode)
 {
-       struct imx_thermal_data *data = tz->devdata;
+       struct imx_thermal_data *data = thermal_zone_device_priv(tz);
 
        if (mode == THERMAL_DEVICE_ENABLED) {
                pm_runtime_get(data->dev);
@@ -342,7 +340,7 @@ static int imx_get_crit_temp(struct thermal_zone_device *tz, int *temp)
 static int imx_set_trip_temp(struct thermal_zone_device *tz, int trip,
                             int temp)
 {
-       struct imx_thermal_data *data = tz->devdata;
+       struct imx_thermal_data *data = thermal_zone_device_priv(tz);
        int ret;
 
        ret = pm_runtime_resume_and_get(data->dev);
@@ -369,36 +367,16 @@ static int imx_set_trip_temp(struct thermal_zone_device *tz, int trip,
 static int imx_bind(struct thermal_zone_device *tz,
                    struct thermal_cooling_device *cdev)
 {
-       int ret;
-
-       ret = thermal_zone_bind_cooling_device(tz, IMX_TRIP_PASSIVE, cdev,
-                                              THERMAL_NO_LIMIT,
-                                              THERMAL_NO_LIMIT,
-                                              THERMAL_WEIGHT_DEFAULT);
-       if (ret) {
-               dev_err(&tz->device,
-                       "binding zone %s with cdev %s failed:%d\n",
-                       tz->type, cdev->type, ret);
-               return ret;
-       }
-
-       return 0;
+       return thermal_zone_bind_cooling_device(tz, IMX_TRIP_PASSIVE, cdev,
+                                               THERMAL_NO_LIMIT,
+                                               THERMAL_NO_LIMIT,
+                                               THERMAL_WEIGHT_DEFAULT);
 }
 
 static int imx_unbind(struct thermal_zone_device *tz,
                      struct thermal_cooling_device *cdev)
 {
-       int ret;
-
-       ret = thermal_zone_unbind_cooling_device(tz, IMX_TRIP_PASSIVE, cdev);
-       if (ret) {
-               dev_err(&tz->device,
-                       "unbinding zone %s with cdev %s failed:%d\n",
-                       tz->type, cdev->type, ret);
-               return ret;
-       }
-
-       return 0;
+       return thermal_zone_unbind_cooling_device(tz, IMX_TRIP_PASSIVE, cdev);
 }
 
 static struct thermal_zone_device_ops imx_tz_ops = {
@@ -560,8 +538,7 @@ static irqreturn_t imx_thermal_alarm_irq_thread(int irq, void *dev)
 {
        struct imx_thermal_data *data = dev;
 
-       dev_dbg(&data->tz->device, "THERMAL ALARM: T > %d\n",
-               data->alarm_temp / 1000);
+       dev_dbg(data->dev, "THERMAL ALARM: T > %d\n", data->alarm_temp / 1000);
 
        thermal_zone_device_update(data->tz, THERMAL_EVENT_UNSPECIFIED);
 
index d029512..810231b 100644 (file)
@@ -497,7 +497,7 @@ static int int3400_thermal_get_temp(struct thermal_zone_device *thermal,
 static int int3400_thermal_change_mode(struct thermal_zone_device *thermal,
                                       enum thermal_device_mode mode)
 {
-       struct int3400_thermal_priv *priv = thermal->devdata;
+       struct int3400_thermal_priv *priv = thermal_zone_device_priv(thermal);
        int result = 0;
 
        if (!priv)
index 0066596..89cf007 100644 (file)
@@ -14,7 +14,7 @@
 static int int340x_thermal_get_zone_temp(struct thermal_zone_device *zone,
                                         int *temp)
 {
-       struct int34x_thermal_zone *d = zone->devdata;
+       struct int34x_thermal_zone *d = thermal_zone_device_priv(zone);
        unsigned long long tmp;
        acpi_status status;
 
@@ -41,7 +41,7 @@ static int int340x_thermal_get_zone_temp(struct thermal_zone_device *zone,
 static int int340x_thermal_set_trip_temp(struct thermal_zone_device *zone,
                                         int trip, int temp)
 {
-       struct int34x_thermal_zone *d = zone->devdata;
+       struct int34x_thermal_zone *d = thermal_zone_device_priv(zone);
        char name[] = {'P', 'A', 'T', '0' + trip, '\0'};
        acpi_status status;
 
index 90526f4..1a9063f 100644 (file)
@@ -135,7 +135,7 @@ static irqreturn_t proc_thermal_irq_handler(int irq, void *devid)
 
 static int sys_get_curr_temp(struct thermal_zone_device *tzd, int *temp)
 {
-       struct proc_thermal_pci *pci_info = tzd->devdata;
+       struct proc_thermal_pci *pci_info = thermal_zone_device_priv(tzd);
        u32 _temp;
 
        proc_thermal_mmio_read(pci_info, PROC_THERMAL_MMIO_PKG_TEMP, &_temp);
@@ -146,7 +146,7 @@ static int sys_get_curr_temp(struct thermal_zone_device *tzd, int *temp)
 
 static int sys_set_trip_temp(struct thermal_zone_device *tzd, int trip, int temp)
 {
-       struct proc_thermal_pci *pci_info = tzd->devdata;
+       struct proc_thermal_pci *pci_info = thermal_zone_device_priv(tzd);
        int tjmax, _temp;
 
        if (temp <= 0) {
index b855d03..dce50d2 100644 (file)
@@ -119,7 +119,7 @@ static int pch_wpt_add_acpi_psv_trip(struct pch_thermal_device *ptd, int trip)
 
 static int pch_thermal_get_temp(struct thermal_zone_device *tzd, int *temp)
 {
-       struct pch_thermal_device *ptd = tzd->devdata;
+       struct pch_thermal_device *ptd = thermal_zone_device_priv(tzd);
 
        *temp = GET_WPT_TEMP(WPT_TEMP_TSR & readw(ptd->hw_base + WPT_TEMP));
        return 0;
index ffdc950..646ca8b 100644 (file)
@@ -120,7 +120,7 @@ static DEFINE_MUTEX(dts_update_mutex);
 static int soc_dts_enable(struct thermal_zone_device *tzd)
 {
        u32 out;
-       struct soc_sensor_entry *aux_entry = tzd->devdata;
+       struct soc_sensor_entry *aux_entry = thermal_zone_device_priv(tzd);
        int ret;
 
        ret = iosf_mbi_read(QRK_MBI_UNIT_RMU, MBI_REG_READ,
@@ -148,7 +148,7 @@ static int soc_dts_enable(struct thermal_zone_device *tzd)
 static int soc_dts_disable(struct thermal_zone_device *tzd)
 {
        u32 out;
-       struct soc_sensor_entry *aux_entry = tzd->devdata;
+       struct soc_sensor_entry *aux_entry = thermal_zone_device_priv(tzd);
        int ret;
 
        ret = iosf_mbi_read(QRK_MBI_UNIT_RMU, MBI_REG_READ,
@@ -250,7 +250,7 @@ failed:
 static inline int sys_set_trip_temp(struct thermal_zone_device *tzd, int trip,
                                int temp)
 {
-       return update_trip_temp(tzd->devdata, trip, temp);
+       return update_trip_temp(thermal_zone_device_priv(tzd), trip, temp);
 }
 
 static int sys_get_curr_temp(struct thermal_zone_device *tzd,
index 8c26f7b..f99dc7e 100644 (file)
@@ -54,7 +54,7 @@ static int sys_get_trip_temp(struct thermal_zone_device *tzd, int trip,
        struct intel_soc_dts_sensor_entry *dts;
        struct intel_soc_dts_sensors *sensors;
 
-       dts = tzd->devdata;
+       dts = thermal_zone_device_priv(tzd);
        sensors = dts->sensors;
        mutex_lock(&sensors->dts_update_lock);
        status = iosf_mbi_read(BT_MBI_UNIT_PMC, MBI_REG_READ,
@@ -168,7 +168,7 @@ err_restore_ptps:
 static int sys_set_trip_temp(struct thermal_zone_device *tzd, int trip,
                             int temp)
 {
-       struct intel_soc_dts_sensor_entry *dts = tzd->devdata;
+       struct intel_soc_dts_sensor_entry *dts = thermal_zone_device_priv(tzd);
        struct intel_soc_dts_sensors *sensors = dts->sensors;
        int status;
 
@@ -176,7 +176,7 @@ static int sys_set_trip_temp(struct thermal_zone_device *tzd, int trip,
                return -EINVAL;
 
        mutex_lock(&sensors->dts_update_lock);
-       status = update_trip_temp(tzd->devdata, trip, temp,
+       status = update_trip_temp(dts, trip, temp,
                                  dts->trip_types[trip]);
        mutex_unlock(&sensors->dts_update_lock);
 
@@ -186,9 +186,7 @@ static int sys_set_trip_temp(struct thermal_zone_device *tzd, int trip,
 static int sys_get_trip_type(struct thermal_zone_device *tzd,
                             int trip, enum thermal_trip_type *type)
 {
-       struct intel_soc_dts_sensor_entry *dts;
-
-       dts = tzd->devdata;
+       struct intel_soc_dts_sensor_entry *dts = thermal_zone_device_priv(tzd);
 
        *type = dts->trip_types[trip];
 
@@ -200,11 +198,10 @@ static int sys_get_curr_temp(struct thermal_zone_device *tzd,
 {
        int status;
        u32 out;
-       struct intel_soc_dts_sensor_entry *dts;
+       struct intel_soc_dts_sensor_entry *dts = thermal_zone_device_priv(tzd);
        struct intel_soc_dts_sensors *sensors;
        unsigned long raw;
 
-       dts = tzd->devdata;
        sensors = dts->sensors;
        status = iosf_mbi_read(BT_MBI_UNIT_PMC, MBI_REG_READ,
                               SOC_DTS_OFFSET_TEMP, &out);
index 1c2de84..c4ec314 100644 (file)
@@ -107,7 +107,7 @@ static struct zone_device *pkg_temp_thermal_get_dev(unsigned int cpu)
 
 static int sys_get_curr_temp(struct thermal_zone_device *tzd, int *temp)
 {
-       struct zone_device *zonedev = tzd->devdata;
+       struct zone_device *zonedev = thermal_zone_device_priv(tzd);
        int val;
 
        val = intel_tcc_get_temp(zonedev->cpu, true);
@@ -122,7 +122,7 @@ static int sys_get_curr_temp(struct thermal_zone_device *tzd, int *temp)
 static int
 sys_set_trip_temp(struct thermal_zone_device *tzd, int trip, int temp)
 {
-       struct zone_device *zonedev = tzd->devdata;
+       struct zone_device *zonedev = thermal_zone_device_priv(tzd);
        u32 l, h, mask, shift, intr;
        int tj_max, ret;
 
index 22c9bcb..7912104 100644 (file)
@@ -141,7 +141,7 @@ static int k3_bgp_read_temp(struct k3_thermal_data *devdata,
 
 static int k3_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct k3_thermal_data *data = tz->devdata;
+       struct k3_thermal_data *data = thermal_zone_device_priv(tz);
        int ret = 0;
 
        ret = k3_bgp_read_temp(data, temp);
@@ -222,7 +222,7 @@ static int k3_bandgap_probe(struct platform_device *pdev)
                        goto err_alloc;
                }
 
-               if (devm_thermal_add_hwmon_sysfs(data[id].tzd))
+               if (devm_thermal_add_hwmon_sysfs(dev, data[id].tzd))
                        dev_warn(dev, "Failed to add hwmon sysfs attributes\n");
        }
 
index 031ea10..5be1f09 100644 (file)
@@ -248,7 +248,7 @@ static inline int k3_bgp_read_temp(struct k3_thermal_data *devdata,
 /* Get temperature callback function for thermal zone */
 static int k3_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       return k3_bgp_read_temp(tz->devdata, temp);
+       return k3_bgp_read_temp(thermal_zone_device_priv(tz), temp);
 }
 
 static const struct thermal_zone_device_ops k3_of_thermal_ops = {
index bec7ec2..668747b 100644 (file)
@@ -27,17 +27,14 @@ static int kirkwood_get_temp(struct thermal_zone_device *thermal,
                          int *temp)
 {
        unsigned long reg;
-       struct kirkwood_thermal_priv *priv = thermal->devdata;
+       struct kirkwood_thermal_priv *priv = thermal_zone_device_priv(thermal);
 
        reg = readl_relaxed(priv->sensor);
 
        /* Valid check */
        if (!((reg >> KIRKWOOD_THERMAL_VALID_OFFSET) &
-           KIRKWOOD_THERMAL_VALID_MASK)) {
-               dev_err(&thermal->device,
-                       "Temperature sensor reading not valid\n");
+           KIRKWOOD_THERMAL_VALID_MASK))
                return -EIO;
-       }
 
        /*
         * Calculate temperature. According to Marvell internal
index 6451a55..61c7622 100644 (file)
@@ -46,15 +46,13 @@ struct max77620_therm_info {
 
 static int max77620_thermal_read_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct max77620_therm_info *mtherm = tz->devdata;
+       struct max77620_therm_info *mtherm = thermal_zone_device_priv(tz);
        unsigned int val;
        int ret;
 
        ret = regmap_read(mtherm->rmap, MAX77620_REG_STATLBT, &val);
-       if (ret < 0) {
-               dev_err(mtherm->dev, "Failed to read STATLBT: %d\n", ret);
+       if (ret < 0)
                return ret;
-       }
 
        if (val & MAX77620_IRQ_TJALRM2_MASK)
                *temp = MAX77620_TJALARM2_TEMP;
index ab730f9..7b14635 100644 (file)
@@ -763,7 +763,7 @@ static int mtk_thermal_bank_temperature(struct mtk_thermal_bank *bank)
 
 static int mtk_read_temp(struct thermal_zone_device *tz, int *temperature)
 {
-       struct mtk_thermal *mt = tz->devdata;
+       struct mtk_thermal *mt = thermal_zone_device_priv(tz);
        int i;
        int tempmax = INT_MIN;
 
@@ -1210,7 +1210,7 @@ static int mtk_thermal_probe(struct platform_device *pdev)
                goto err_disable_clk_peri_therm;
        }
 
-       ret = devm_thermal_add_hwmon_sysfs(tzdev);
+       ret = devm_thermal_add_hwmon_sysfs(&pdev->dev, tzdev);
        if (ret)
                dev_warn(&pdev->dev, "error in thermal_add_hwmon_sysfs");
 
index 84ba65a..216f53e 100644 (file)
@@ -252,7 +252,7 @@ static u32 lvts_temp_to_raw(int temperature)
 
 static int lvts_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct lvts_sensor *lvts_sensor = tz->devdata;
+       struct lvts_sensor *lvts_sensor = thermal_zone_device_priv(tz);
        void __iomem *msr = lvts_sensor->msr;
        u32 value;
 
@@ -290,7 +290,7 @@ static int lvts_get_temp(struct thermal_zone_device *tz, int *temp)
 
 static int lvts_set_trips(struct thermal_zone_device *tz, int low, int high)
 {
-       struct lvts_sensor *lvts_sensor = tz->devdata;
+       struct lvts_sensor *lvts_sensor = thermal_zone_device_priv(tz);
        void __iomem *base = lvts_sensor->base;
        u32 raw_low = lvts_temp_to_raw(low);
        u32 raw_high = lvts_temp_to_raw(high);
@@ -305,7 +305,8 @@ static int lvts_set_trips(struct thermal_zone_device *tz, int low, int high)
         * 14-0 : Raw temperature for threshold
         */
        if (low != -INT_MAX) {
-               dev_dbg(&tz->device, "Setting low limit temperature interrupt: %d\n", low);
+               pr_debug("%s: Setting low limit temperature interrupt: %d\n",
+                        thermal_zone_device_type(tz), low);
                writel(raw_low, LVTS_H2NTHRE(base));
        }
 
@@ -318,7 +319,8 @@ static int lvts_set_trips(struct thermal_zone_device *tz, int low, int high)
         *
         * 14-0 : Raw temperature for threshold
         */
-       dev_dbg(&tz->device, "Setting high limit temperature interrupt: %d\n", high);
+       pr_debug("%s: Setting high limit temperature interrupt: %d\n",
+                thermal_zone_device_type(tz), high);
        writel(raw_high, LVTS_HTHRE(base));
 
        return 0;
index 31164ad..5749149 100644 (file)
@@ -360,7 +360,7 @@ static irqreturn_t adc_tm5_gen2_isr(int irq, void *data)
 
 static int adc_tm5_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct adc_tm5_channel *channel = tz->devdata;
+       struct adc_tm5_channel *channel = thermal_zone_device_priv(tz);
        int ret;
 
        if (!channel || !channel->iio)
@@ -642,7 +642,7 @@ config_fail:
 
 static int adc_tm5_set_trips(struct thermal_zone_device *tz, int low, int high)
 {
-       struct adc_tm5_channel *channel = tz->devdata;
+       struct adc_tm5_channel *channel = thermal_zone_device_priv(tz);
        struct adc_tm5_chip *chip;
        int ret;
 
@@ -689,7 +689,7 @@ static int adc_tm5_register_tzd(struct adc_tm5_chip *adc_tm)
                        return PTR_ERR(tzd);
                }
                adc_tm->channels[i].tzd = tzd;
-               if (devm_thermal_add_hwmon_sysfs(tzd))
+               if (devm_thermal_add_hwmon_sysfs(adc_tm->dev, tzd))
                        dev_warn(adc_tm->dev,
                                 "Failed to add hwmon sysfs attributes\n");
        }
index 101c75d..0f88e98 100644 (file)
@@ -187,7 +187,7 @@ static int qpnp_tm_update_temp_no_adc(struct qpnp_tm_chip *chip)
 
 static int qpnp_tm_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct qpnp_tm_chip *chip = tz->devdata;
+       struct qpnp_tm_chip *chip = thermal_zone_device_priv(tz);
        int ret, mili_celsius;
 
        if (!temp)
@@ -265,7 +265,7 @@ skip:
 
 static int qpnp_tm_set_trip_temp(struct thermal_zone_device *tz, int trip_id, int temp)
 {
-       struct qpnp_tm_chip *chip = tz->devdata;
+       struct qpnp_tm_chip *chip = thermal_zone_device_priv(tz);
        struct thermal_trip trip;
        int ret;
 
@@ -459,7 +459,7 @@ static int qpnp_tm_probe(struct platform_device *pdev)
                return ret;
        }
 
-       if (devm_thermal_add_hwmon_sysfs(chip->tz_dev))
+       if (devm_thermal_add_hwmon_sysfs(&pdev->dev, chip->tz_dev))
                dev_warn(&pdev->dev,
                         "Failed to add hwmon sysfs attributes\n");
 
index 8020ead..d321812 100644 (file)
@@ -673,7 +673,7 @@ static irqreturn_t tsens_combined_irq_thread(int irq, void *data)
 
 static int tsens_set_trips(struct thermal_zone_device *tz, int low, int high)
 {
-       struct tsens_sensor *s = tz->devdata;
+       struct tsens_sensor *s = thermal_zone_device_priv(tz);
        struct tsens_priv *priv = s->priv;
        struct device *dev = priv->dev;
        struct tsens_irq_data d;
@@ -1057,7 +1057,7 @@ err_put_device:
 
 static int tsens_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct tsens_sensor *s = tz->devdata;
+       struct tsens_sensor *s = thermal_zone_device_priv(tz);
        struct tsens_priv *priv = s->priv;
 
        return priv->ops->get_temp(s, temp);
@@ -1189,7 +1189,7 @@ static int tsens_register(struct tsens_priv *priv)
                if (priv->ops->enable)
                        priv->ops->enable(priv, i);
 
-               if (devm_thermal_add_hwmon_sysfs(tzd))
+               if (devm_thermal_add_hwmon_sysfs(priv->dev, tzd))
                        dev_warn(priv->dev,
                                 "Failed to add hwmon sysfs attributes\n");
        }
index 431c29c..e587563 100644 (file)
@@ -83,7 +83,7 @@ static struct qoriq_tmu_data *qoriq_sensor_to_data(struct qoriq_sensor *s)
 
 static int tmu_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct qoriq_sensor *qsensor = tz->devdata;
+       struct qoriq_sensor *qsensor = thermal_zone_device_priv(tz);
        struct qoriq_tmu_data *qdata = qoriq_sensor_to_data(qsensor);
        u32 val;
        /*
@@ -157,7 +157,7 @@ static int qoriq_tmu_register_tmu_zone(struct device *dev,
                        return ret;
                }
 
-               if (devm_thermal_add_hwmon_sysfs(tzd))
+               if (devm_thermal_add_hwmon_sysfs(dev, tzd))
                        dev_warn(dev,
                                 "Failed to add hwmon sysfs attributes\n");
 
index d6b5b59..3df00c9 100644 (file)
@@ -167,7 +167,7 @@ static int rcar_gen3_thermal_round(int temp)
 
 static int rcar_gen3_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct rcar_gen3_thermal_tsc *tsc = tz->devdata;
+       struct rcar_gen3_thermal_tsc *tsc = thermal_zone_device_priv(tz);
        int mcelsius, val;
        int reg;
 
@@ -206,7 +206,7 @@ static int rcar_gen3_thermal_mcelsius_to_temp(struct rcar_gen3_thermal_tsc *tsc,
 
 static int rcar_gen3_thermal_set_trips(struct thermal_zone_device *tz, int low, int high)
 {
-       struct rcar_gen3_thermal_tsc *tsc = tz->devdata;
+       struct rcar_gen3_thermal_tsc *tsc = thermal_zone_device_priv(tz);
        u32 irqmsk = 0;
 
        if (low != -INT_MAX) {
@@ -527,7 +527,6 @@ static int rcar_gen3_thermal_probe(struct platform_device *pdev)
                }
                tsc->zone = zone;
 
-               tsc->zone->tzp->no_hwmon = false;
                ret = thermal_add_hwmon_sysfs(tsc->zone);
                if (ret)
                        goto error_unregister;
index 436f5f9..b8571f7 100644 (file)
@@ -101,7 +101,6 @@ struct rcar_thermal_priv {
        list_for_each_entry(pos, &common->head, list)
 
 #define MCELSIUS(temp)                 ((temp) * 1000)
-#define rcar_zone_to_priv(zone)                ((zone)->devdata)
 #define rcar_priv_to_dev(priv)         ((priv)->common->dev)
 #define rcar_has_irq_support(priv)     ((priv)->common->base)
 #define rcar_id_to_shift(priv)         ((priv)->id * 8)
@@ -273,7 +272,7 @@ static int rcar_thermal_get_current_temp(struct rcar_thermal_priv *priv,
 
 static int rcar_thermal_get_temp(struct thermal_zone_device *zone, int *temp)
 {
-       struct rcar_thermal_priv *priv = rcar_zone_to_priv(zone);
+       struct rcar_thermal_priv *priv = thermal_zone_device_priv(zone);
 
        return rcar_thermal_get_current_temp(priv, temp);
 }
@@ -510,11 +509,6 @@ static int rcar_thermal_probe(struct platform_device *pdev)
                }
 
                if (chip->use_of_thermal) {
-                       /*
-                        * thermal_zone doesn't enable hwmon as default,
-                        * but, enable it here to keep compatible
-                        */
-                       priv->zone->tzp->no_hwmon = false;
                        ret = thermal_add_hwmon_sysfs(priv->zone);
                        if (ret)
                                goto error_unregister;
index 4b7c43f..bb254bd 100644 (file)
@@ -1213,7 +1213,7 @@ static irqreturn_t rockchip_thermal_alarm_irq_thread(int irq, void *dev)
 
 static int rockchip_thermal_set_trips(struct thermal_zone_device *tz, int low, int high)
 {
-       struct rockchip_thermal_sensor *sensor = tz->devdata;
+       struct rockchip_thermal_sensor *sensor = thermal_zone_device_priv(tz);
        struct rockchip_thermal_data *thermal = sensor->thermal;
        const struct rockchip_tsadc_chip *tsadc = thermal->chip;
 
@@ -1226,16 +1226,13 @@ static int rockchip_thermal_set_trips(struct thermal_zone_device *tz, int low, i
 
 static int rockchip_thermal_get_temp(struct thermal_zone_device *tz, int *out_temp)
 {
-       struct rockchip_thermal_sensor *sensor = tz->devdata;
+       struct rockchip_thermal_sensor *sensor = thermal_zone_device_priv(tz);
        struct rockchip_thermal_data *thermal = sensor->thermal;
        const struct rockchip_tsadc_chip *tsadc = sensor->thermal->chip;
        int retval;
 
        retval = tsadc->get_temp(&tsadc->table,
                                 sensor->id, thermal->regs, out_temp);
-       dev_dbg(&thermal->pdev->dev, "sensor %d - temp: %d, retval: %d\n",
-               sensor->id, *out_temp, retval);
-
        return retval;
 }
 
@@ -1454,7 +1451,6 @@ static int rockchip_thermal_probe(struct platform_device *pdev)
 
        for (i = 0; i < thermal->chip->chn_num; i++) {
                rockchip_thermal_toggle_sensor(&thermal->sensors[i], true);
-               thermal->sensors[i].tzd->tzp->no_hwmon = false;
                error = thermal_add_hwmon_sysfs(thermal->sensors[i].tzd);
                if (error)
                        dev_warn(&pdev->dev,
index 2e0649f..b56981f 100644 (file)
@@ -75,7 +75,7 @@ static inline void rzg2l_thermal_write(struct rzg2l_thermal_priv *priv, u32 reg,
 
 static int rzg2l_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct rzg2l_thermal_priv *priv = tz->devdata;
+       struct rzg2l_thermal_priv *priv = thermal_zone_device_priv(tz);
        u32 result = 0, dsensor, ts_code_ave;
        int val, i;
 
@@ -216,7 +216,6 @@ static int rzg2l_thermal_probe(struct platform_device *pdev)
        }
 
        priv->zone = zone;
-       priv->zone->tzp->no_hwmon = false;
        ret = thermal_add_hwmon_sysfs(priv->zone);
        if (ret)
                goto err;
index 527d1eb..45e5c84 100644 (file)
@@ -645,7 +645,7 @@ static void exynos7_tmu_control(struct platform_device *pdev, bool on)
 
 static int exynos_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct exynos_tmu_data *data = tz->devdata;
+       struct exynos_tmu_data *data = thermal_zone_device_priv(tz);
        int value, ret = 0;
 
        if (!data || !data->tmu_read)
@@ -723,7 +723,7 @@ static void exynos4412_tmu_set_emulation(struct exynos_tmu_data *data,
 
 static int exynos_tmu_set_emulation(struct thermal_zone_device *tz, int temp)
 {
-       struct exynos_tmu_data *data = tz->devdata;
+       struct exynos_tmu_data *data = thermal_zone_device_priv(tz);
        int ret = -EINVAL;
 
        if (data->soc == SOC_ARCH_EXYNOS4210)
index 6a722b1..6e78616 100644 (file)
@@ -31,7 +31,7 @@ struct spear_thermal_dev {
 static inline int thermal_get_temp(struct thermal_zone_device *thermal,
                                int *temp)
 {
-       struct spear_thermal_dev *stdev = thermal->devdata;
+       struct spear_thermal_dev *stdev = thermal_zone_device_priv(thermal);
 
        /*
         * Data are ready to be read after 628 usec from POWERDOWN signal
@@ -48,7 +48,7 @@ static struct thermal_zone_device_ops ops = {
 static int __maybe_unused spear_thermal_suspend(struct device *dev)
 {
        struct thermal_zone_device *spear_thermal = dev_get_drvdata(dev);
-       struct spear_thermal_dev *stdev = spear_thermal->devdata;
+       struct spear_thermal_dev *stdev = thermal_zone_device_priv(spear_thermal);
        unsigned int actual_mask = 0;
 
        /* Disable SPEAr Thermal Sensor */
@@ -64,7 +64,7 @@ static int __maybe_unused spear_thermal_suspend(struct device *dev)
 static int __maybe_unused spear_thermal_resume(struct device *dev)
 {
        struct thermal_zone_device *spear_thermal = dev_get_drvdata(dev);
-       struct spear_thermal_dev *stdev = spear_thermal->devdata;
+       struct spear_thermal_dev *stdev = thermal_zone_device_priv(spear_thermal);
        unsigned int actual_mask = 0;
        int ret = 0;
 
@@ -137,7 +137,7 @@ static int spear_thermal_probe(struct platform_device *pdev)
 
        platform_set_drvdata(pdev, spear_thermal);
 
-       dev_info(&spear_thermal->device, "Thermal Sensor Loaded at: 0x%p.\n",
+       dev_info(&pdev->dev, "Thermal Sensor Loaded at: 0x%p.\n",
                        stdev->thermal_base);
 
        return 0;
@@ -154,7 +154,7 @@ static int spear_thermal_exit(struct platform_device *pdev)
 {
        unsigned int actual_mask = 0;
        struct thermal_zone_device *spear_thermal = platform_get_drvdata(pdev);
-       struct spear_thermal_dev *stdev = spear_thermal->devdata;
+       struct spear_thermal_dev *stdev = thermal_zone_device_priv(spear_thermal);
 
        thermal_zone_device_unregister(spear_thermal);
 
index ac88451..2fb90fd 100644 (file)
@@ -206,7 +206,7 @@ static int sprd_thm_temp_to_rawdata(int temp, struct sprd_thermal_sensor *sen)
 
 static int sprd_thm_read_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct sprd_thermal_sensor *sen = tz->devdata;
+       struct sprd_thermal_sensor *sen = thermal_zone_device_priv(tz);
        u32 data;
 
        data = readl(sen->data->base + SPRD_THM_TEMP(sen->id)) &
index 1009f08..2d30420 100644 (file)
@@ -108,8 +108,7 @@ static int st_thermal_calibration(struct st_thermal_sensor *sensor)
 /* Callback to get temperature from HW*/
 static int st_thermal_get_temp(struct thermal_zone_device *th, int *temperature)
 {
-       struct st_thermal_sensor *sensor = th->devdata;
-       struct device *dev = sensor->dev;
+       struct st_thermal_sensor *sensor = thermal_zone_device_priv(th);
        unsigned int temp;
        unsigned int overflow;
        int ret;
@@ -127,8 +126,6 @@ static int st_thermal_get_temp(struct thermal_zone_device *th, int *temperature)
        temp += sensor->cdata->temp_adjust_val;
        temp = mcelsius(temp);
 
-       dev_dbg(dev, "temperature: %d\n", temp);
-
        *temperature = temp;
 
        return 0;
index 7354019..6f2bad8 100644 (file)
@@ -303,7 +303,7 @@ static int stm_disable_irq(struct stm_thermal_sensor *sensor)
 
 static int stm_thermal_set_trips(struct thermal_zone_device *tz, int low, int high)
 {
-       struct stm_thermal_sensor *sensor = tz->devdata;
+       struct stm_thermal_sensor *sensor = thermal_zone_device_priv(tz);
        u32 itr1, th;
        int ret;
 
@@ -351,7 +351,7 @@ static int stm_thermal_set_trips(struct thermal_zone_device *tz, int low, int hi
 /* Callback to get temperature from HW */
 static int stm_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct stm_thermal_sensor *sensor = tz->devdata;
+       struct stm_thermal_sensor *sensor = thermal_zone_device_priv(tz);
        u32 periods;
        int freqM, ret;
 
index 497beac..793ddce 100644 (file)
@@ -110,7 +110,7 @@ static int sun50i_h5_calc_temp(struct ths_device *tmdev,
 
 static int sun8i_ths_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct tsensor *s = tz->devdata;
+       struct tsensor *s = thermal_zone_device_priv(tz);
        struct ths_device *tmdev = s->tmdev;
        int val = 0;
 
@@ -475,7 +475,7 @@ static int sun8i_ths_register(struct ths_device *tmdev)
                if (IS_ERR(tmdev->sensor[i].tzd))
                        return PTR_ERR(tmdev->sensor[i].tzd);
 
-               if (devm_thermal_add_hwmon_sysfs(tmdev->sensor[i].tzd))
+               if (devm_thermal_add_hwmon_sysfs(tmdev->dev, tmdev->sensor[i].tzd))
                        dev_warn(tmdev->dev,
                                 "Failed to add hwmon sysfs attributes\n");
        }
index 2208732..ea66cba 100644 (file)
@@ -423,7 +423,7 @@ static int translate_temp(u16 val)
 
 static int tegra_thermctl_get_temp(struct thermal_zone_device *tz, int *out_temp)
 {
-       struct tegra_thermctl_zone *zone = tz->devdata;
+       struct tegra_thermctl_zone *zone = thermal_zone_device_priv(tz);
        u32 val;
 
        val = readl(zone->reg);
@@ -584,7 +584,7 @@ static int tsensor_group_thermtrip_get(struct tegra_soctherm *ts, int id)
 
 static int tegra_thermctl_set_trip_temp(struct thermal_zone_device *tz, int trip_id, int temp)
 {
-       struct tegra_thermctl_zone *zone = tz->devdata;
+       struct tegra_thermctl_zone *zone = thermal_zone_device_priv(tz);
        struct tegra_soctherm *ts = zone->ts;
        struct thermal_trip trip;
        const struct tegra_tsensor_group *sg = zone->sg;
@@ -658,7 +658,7 @@ static void thermal_irq_disable(struct tegra_thermctl_zone *zn)
 
 static int tegra_thermctl_set_trips(struct thermal_zone_device *tz, int lo, int hi)
 {
-       struct tegra_thermctl_zone *zone = tz->devdata;
+       struct tegra_thermctl_zone *zone = thermal_zone_device_priv(tz);
        u32 r;
 
        thermal_irq_disable(zone);
index 0b7a1a1..b1d5aaf 100644 (file)
@@ -62,12 +62,14 @@ static int __tegra_bpmp_thermal_get_temp(struct tegra_bpmp_thermal_zone *zone,
 
 static int tegra_bpmp_thermal_get_temp(struct thermal_zone_device *tz, int *out_temp)
 {
-       return __tegra_bpmp_thermal_get_temp(tz->devdata, out_temp);
+       struct tegra_bpmp_thermal_zone *zone = thermal_zone_device_priv(tz);
+
+       return __tegra_bpmp_thermal_get_temp(zone, out_temp);
 }
 
 static int tegra_bpmp_thermal_set_trips(struct thermal_zone_device *tz, int low, int high)
 {
-       struct tegra_bpmp_thermal_zone *zone = tz->devdata;
+       struct tegra_bpmp_thermal_zone *zone = thermal_zone_device_priv(tz);
        struct mrq_thermal_host_to_bpmp_request req;
        struct tegra_bpmp_message msg;
        int err;
index b3218b7..cb584a5 100644 (file)
@@ -160,7 +160,7 @@ static void devm_tegra_tsensor_hw_disable(void *data)
 
 static int tegra_tsensor_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       const struct tegra_tsensor_channel *tsc = tz->devdata;
+       const struct tegra_tsensor_channel *tsc = thermal_zone_device_priv(tz);
        const struct tegra_tsensor *ts = tsc->ts;
        int err, c1, c2, c3, c4, counter;
        u32 val;
@@ -218,7 +218,7 @@ static int tegra_tsensor_temp_to_counter(const struct tegra_tsensor *ts, int tem
 
 static int tegra_tsensor_set_trips(struct thermal_zone_device *tz, int low, int high)
 {
-       const struct tegra_tsensor_channel *tsc = tz->devdata;
+       const struct tegra_tsensor_channel *tsc = thermal_zone_device_priv(tz);
        const struct tegra_tsensor *ts = tsc->ts;
        u32 val;
 
@@ -359,9 +359,6 @@ static int tegra_tsensor_enable_hw_channel(const struct tegra_tsensor *ts,
 
        tegra_tsensor_get_hw_channel_trips(tzd, &hot_trip, &crit_trip);
 
-       /* prevent potential racing with tegra_tsensor_set_trips() */
-       mutex_lock(&tzd->lock);
-
        dev_info_once(ts->dev, "ch%u: PMC emergency shutdown trip set to %dC\n",
                      id, DIV_ROUND_CLOSEST(crit_trip, 1000));
 
@@ -404,8 +401,6 @@ static int tegra_tsensor_enable_hw_channel(const struct tegra_tsensor *ts,
        val |= FIELD_PREP(TSENSOR_SENSOR0_CONFIG0_INTR_THERMAL_RST_EN, 1);
        writel_relaxed(val, tsc->regs + TSENSOR_SENSOR0_CONFIG0);
 
-       mutex_unlock(&tzd->lock);
-
        err = thermal_zone_device_enable(tzd);
        if (err) {
                dev_err(ts->dev, "ch%u: failed to enable zone: %d\n", id, err);
@@ -528,7 +523,7 @@ static int tegra_tsensor_register_channel(struct tegra_tsensor *ts,
                return 0;
        }
 
-       if (devm_thermal_add_hwmon_sysfs(tsc->tzd))
+       if (devm_thermal_add_hwmon_sysfs(ts->dev, tsc->tzd))
                dev_warn(ts->dev, "failed to add hwmon sysfs attributes\n");
 
        return 0;
@@ -585,6 +580,20 @@ static int tegra_tsensor_probe(struct platform_device *pdev)
                        return err;
        }
 
+       /*
+        * Enable the channels before setting the interrupt so
+        * set_trips() can not be called while we are setting up the
+        * register TSENSOR_SENSOR0_CONFIG1. With this we close a
+        * potential race window where we are setting up the TH2 and
+        * the temperature hits TH1 resulting to an update of the
+        * TSENSOR_SENSOR0_CONFIG1 register in the ISR.
+        */
+       for (i = 0; i < ARRAY_SIZE(ts->ch); i++) {
+               err = tegra_tsensor_enable_hw_channel(ts, i);
+               if (err)
+                       return err;
+       }
+
        err = devm_request_threaded_irq(&pdev->dev, irq, NULL,
                                        tegra_tsensor_isr, IRQF_ONESHOT,
                                        "tegra_tsensor", ts);
@@ -592,12 +601,6 @@ static int tegra_tsensor_probe(struct platform_device *pdev)
                return dev_err_probe(&pdev->dev, err,
                                     "failed to request interrupt\n");
 
-       for (i = 0; i < ARRAY_SIZE(ts->ch); i++) {
-               err = tegra_tsensor_enable_hw_channel(ts, i);
-               if (err)
-                       return err;
-       }
-
        return 0;
 }
 
index 323e273..017b0ce 100644 (file)
@@ -54,15 +54,14 @@ static int gadc_thermal_adc_to_temp(struct gadc_thermal_info *gti, int val)
 
 static int gadc_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
 {
-       struct gadc_thermal_info *gti = tz->devdata;
+       struct gadc_thermal_info *gti = thermal_zone_device_priv(tz);
        int val;
        int ret;
 
        ret = iio_read_channel_processed(gti->channel, &val);
-       if (ret < 0) {
-               dev_err(gti->dev, "IIO channel read failed %d\n", ret);
+       if (ret < 0)
                return ret;
-       }
+
        *temp = gadc_thermal_adc_to_temp(gti, val);
 
        return 0;
index 566df45..9cb0a78 100644 (file)
@@ -1467,6 +1467,24 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type, int n
 }
 EXPORT_SYMBOL_GPL(thermal_zone_device_register);
 
+void *thermal_zone_device_priv(struct thermal_zone_device *tzd)
+{
+       return tzd->devdata;
+}
+EXPORT_SYMBOL_GPL(thermal_zone_device_priv);
+
+const char *thermal_zone_device_type(struct thermal_zone_device *tzd)
+{
+       return tzd->type;
+}
+EXPORT_SYMBOL_GPL(thermal_zone_device_type);
+
+int thermal_zone_device_id(struct thermal_zone_device *tzd)
+{
+       return tzd->id;
+}
+EXPORT_SYMBOL_GPL(thermal_zone_device_id);
+
 /**
  * thermal_zone_device_unregister - removes the registered thermal zone device
  * @tz: the thermal zone device to remove
index 0f64813..92e7e7f 100644 (file)
@@ -107,6 +107,9 @@ int __thermal_zone_get_temp(struct thermal_zone_device *tz, int *temp)
                        *temp = tz->emul_temperature;
        }
 
+       if (ret)
+               dev_dbg(&tz->device, "Failed to get temperature: %d\n", ret);
+
        return ret;
 }
 
index c594c42..c59db17 100644 (file)
@@ -17,6 +17,7 @@
 #include <linux/thermal.h>
 
 #include "thermal_hwmon.h"
+#include "thermal_core.h"
 
 /* hwmon sys I/F */
 /* thermal zone devices with the same type share one hwmon device */
@@ -228,14 +229,14 @@ void thermal_remove_hwmon_sysfs(struct thermal_zone_device *tz)
        hwmon = thermal_hwmon_lookup_by_type(tz);
        if (unlikely(!hwmon)) {
                /* Should never happen... */
-               dev_dbg(&tz->device, "hwmon device lookup failed!\n");
+               dev_dbg(hwmon->device, "hwmon device lookup failed!\n");
                return;
        }
 
        temp = thermal_hwmon_lookup_temp(hwmon, tz);
        if (unlikely(!temp)) {
                /* Should never happen... */
-               dev_dbg(&tz->device, "temperature input lookup failed!\n");
+               dev_dbg(hwmon->device, "temperature input lookup failed!\n");
                return;
        }
 
@@ -263,7 +264,7 @@ static void devm_thermal_hwmon_release(struct device *dev, void *res)
        thermal_remove_hwmon_sysfs(*(struct thermal_zone_device **)res);
 }
 
-int devm_thermal_add_hwmon_sysfs(struct thermal_zone_device *tz)
+int devm_thermal_add_hwmon_sysfs(struct device *dev, struct thermal_zone_device *tz)
 {
        struct thermal_zone_device **ptr;
        int ret;
@@ -280,7 +281,7 @@ int devm_thermal_add_hwmon_sysfs(struct thermal_zone_device *tz)
        }
 
        *ptr = tz;
-       devres_add(&tz->device, ptr);
+       devres_add(dev, ptr);
 
        return ret;
 }
index 1a9d65f..b429f6e 100644 (file)
@@ -17,7 +17,7 @@
 
 #ifdef CONFIG_THERMAL_HWMON
 int thermal_add_hwmon_sysfs(struct thermal_zone_device *tz);
-int devm_thermal_add_hwmon_sysfs(struct thermal_zone_device *tz);
+int devm_thermal_add_hwmon_sysfs(struct device *dev, struct thermal_zone_device *tz);
 void thermal_remove_hwmon_sysfs(struct thermal_zone_device *tz);
 #else
 static inline int
@@ -27,7 +27,7 @@ thermal_add_hwmon_sysfs(struct thermal_zone_device *tz)
 }
 
 static inline int
-devm_thermal_add_hwmon_sysfs(struct thermal_zone_device *tz)
+devm_thermal_add_hwmon_sysfs(struct device *dev, struct thermal_zone_device *tz)
 {
        return 0;
 }
index ea61673..6845756 100644 (file)
@@ -23,7 +23,7 @@ static u32 thermal_mmio_readb(void __iomem *mmio_base)
 static int thermal_mmio_get_temperature(struct thermal_zone_device *tz, int *temp)
 {
        int t;
-       struct thermal_mmio *sensor = tz->devdata;
+       struct thermal_mmio *sensor = thermal_zone_device_priv(tz);
 
        t = sensor->read_mmio(sensor->mmio_base) & sensor->mask;
        t *= sensor->factor;
index 8a9055b..0c89140 100644 (file)
@@ -43,8 +43,8 @@ static void ti_thermal_work(struct work_struct *work)
 
        thermal_zone_device_update(data->ti_thermal, THERMAL_EVENT_UNSPECIFIED);
 
-       dev_dbg(&data->ti_thermal->device, "updated thermal zone %s\n",
-               data->ti_thermal->type);
+       dev_dbg(data->bgp->dev, "updated thermal zone %s\n",
+               thermal_zone_device_type(data->ti_thermal));
 }
 
 /**
@@ -68,7 +68,7 @@ static inline int ti_thermal_hotspot_temperature(int t, int s, int c)
 static inline int __ti_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
 {
        struct thermal_zone_device *pcb_tz = NULL;
-       struct ti_thermal_data *data = tz->devdata;
+       struct ti_thermal_data *data = thermal_zone_device_priv(tz);
        struct ti_bandgap *bgp;
        const struct ti_temp_sensor *s;
        int ret, tmp, slope, constant;
@@ -109,7 +109,7 @@ static inline int __ti_thermal_get_temp(struct thermal_zone_device *tz, int *tem
 
 static int __ti_thermal_get_trend(struct thermal_zone_device *tz, int trip, enum thermal_trend *trend)
 {
-       struct ti_thermal_data *data = tz->devdata;
+       struct ti_thermal_data *data = thermal_zone_device_priv(tz);
        struct ti_bandgap *bgp;
        int id, tr, ret = 0;
 
@@ -182,7 +182,7 @@ int ti_thermal_expose_sensor(struct ti_bandgap *bgp, int id,
        ti_bandgap_set_sensor_data(bgp, id, data);
        ti_bandgap_write_update_interval(bgp, data->sensor_id, interval);
 
-       if (devm_thermal_add_hwmon_sysfs(data->ti_thermal))
+       if (devm_thermal_add_hwmon_sysfs(bgp->dev, data->ti_thermal))
                dev_warn(bgp->dev, "failed to add hwmon sysfs attributes\n");
 
        return 0;
index 4780184..aef6119 100644 (file)
@@ -187,7 +187,7 @@ static void uniphier_tm_disable_sensor(struct uniphier_tm_dev *tdev)
 
 static int uniphier_tm_get_temp(struct thermal_zone_device *tz, int *out_temp)
 {
-       struct uniphier_tm_dev *tdev = tz->devdata;
+       struct uniphier_tm_dev *tdev = thermal_zone_device_priv(tz);
        struct regmap *map = tdev->regmap;
        int ret;
        u32 temp;
index 13c6aae..fef625f 100644 (file)
@@ -365,6 +365,10 @@ thermal_zone_device_register_with_trips(const char *, struct thermal_trip *, int
                                        void *, struct thermal_zone_device_ops *,
                                        struct thermal_zone_params *, int, int);
 
+void *thermal_zone_device_priv(struct thermal_zone_device *tzd);
+const char *thermal_zone_device_type(struct thermal_zone_device *tzd);
+int thermal_zone_device_id(struct thermal_zone_device *tzd);
+
 int thermal_zone_bind_cooling_device(struct thermal_zone_device *, int,
                                     struct thermal_cooling_device *,
                                     unsigned long, unsigned long,
@@ -437,6 +441,21 @@ static inline int thermal_zone_get_offset(
                struct thermal_zone_device *tz)
 { return -ENODEV; }
 
+static inline void *thermal_zone_device_priv(struct thermal_zone_device *tz)
+{
+       return NULL;
+}
+
+static inline const char *thermal_zone_device_type(struct thermal_zone_device *tzd)
+{
+       return NULL;
+}
+
+static inline int thermal_zone_device_id(struct thermal_zone_device *tzd)
+{
+       return -ENODEV;
+}
+
 static inline int thermal_zone_device_enable(struct thermal_zone_device *tz)
 { return -ENODEV; }