@@ -23,6 +23,7 @@
#define TMR_DISABLE 0x0
#define TMR_ME 0x80000000
#define TMR_ALPF 0x0c000000
+#define TMR_MSITE_ALL GENMASK(15, 0)
#define REGS_TMTMIR 0x008 /* Temperature measurement interval Register */
#define TMTMIR_DEFAULT 0x0000000f
@@ -75,7 +76,10 @@ static const struct thermal_zone_of_device_ops tmu_tz_ops = {
static int qoriq_tmu_register_tmu_zone(struct device *dev,
struct qoriq_tmu_data *qdata)
{
- int id, sites = 0;
+ int id, ret;
+
+ regmap_write(qdata->regmap, REGS_TMR,
+ TMR_MSITE_ALL | TMR_ME | TMR_ALPF);
for (id = 0; id < SITES_MAX; id++) {
struct thermal_zone_device *tzd;
@@ -86,21 +90,16 @@ static int qoriq_tmu_register_tmu_zone(struct device *dev,
tzd = devm_thermal_zone_of_sensor_register(dev, id,
sensor,
&tmu_tz_ops);
- if (IS_ERR(tzd)) {
- if (PTR_ERR(tzd) == -ENODEV)
+ ret = PTR_ERR_OR_ZERO(tzd);
+ if (ret) {
+ if (ret == -ENODEV)
continue;
- else
- return PTR_ERR(tzd);
- }
- sites |= 0x1 << (15 - id);
+ regmap_write(qdata->regmap, REGS_TMR, TMR_DISABLE);
+ return ret;
+ }
}
- /* Enable monitoring */
- if (sites != 0)
- regmap_write(qdata->regmap, REGS_TMR,
- sites | TMR_ME | TMR_ALPF);
-
return 0;
}