Hi Lukasz, On Thu, Jan 22, 2015 at 2:31 PM, Lukasz Majewski <l.majewski@xxxxxxxxxxx> wrote: > Hi Abhilash, > >> Hi Lukasz, >> >> On Mon, Jan 19, 2015 at 5:14 PM, Lukasz Majewski >> <l.majewski@xxxxxxxxxxx> wrote: >> > The exynos_map_dt_data() function must be called before >> > thermal_zone_of_sensor_register(), and hence provide tmu_read() >> > function, before it is needed. >> > >> > This change is driven by adding support for enabling thermal_zoneX >> > when it is properly initialized. >> > >> > One can read the mode of operation >> > at /sys/class/thermal/thermal_zone0/mode Such functionality was >> > missing in the of-thermal.c code. >> > >> > Reported-by: Abhilash Kesavan <a.kesavan@xxxxxxxxxxx> >> > Signed-off-by: Lukasz Majewski <l.majewski@xxxxxxxxxxx> >> > --- >> > drivers/thermal/samsung/exynos_tmu.c | 7 ++++--- >> > 1 file changed, 4 insertions(+), 3 deletions(-) >> > >> > diff --git a/drivers/thermal/samsung/exynos_tmu.c >> > b/drivers/thermal/samsung/exynos_tmu.c index 9d2d685..5d946ab 100644 >> > --- a/drivers/thermal/samsung/exynos_tmu.c >> > +++ b/drivers/thermal/samsung/exynos_tmu.c >> > @@ -975,15 +975,16 @@ static int exynos_tmu_probe(struct >> > platform_device *pdev) platform_set_drvdata(pdev, data); >> > mutex_init(&data->lock); >> > >> > + ret = exynos_map_dt_data(pdev); >> > + if (ret) >> > + goto err_sensor; >> > + >> > data->tzd = thermal_zone_of_sensor_register(&pdev->dev, 0, >> > data, &exynos_sensor_ops); >> > if (IS_ERR(data->tzd)) { >> > pr_err("thermal: tz: %p ERROR\n", data->tzd); >> > return PTR_ERR(data->tzd); >> > } >> > - ret = exynos_map_dt_data(pdev); >> > - if (ret) >> > - goto err_sensor; >> > >> > pdata = data->pdata; >> >> I have been testing this along with your v5 patch set and am seeing >> incorrect temperature being reported at boot-up on exynos7. > > Does it show a maximal temperature value (0x1FF)? I did not print the current temperature register, but I remember the message showing ~105C. Will give you the register value when I test with more debug prints tomorrow. > >> It looks >> like exynos_tmu_read gets called from thermal_zone_of_device_update >> during boot-up, now that we have it populated early. However, as the >> tmu initialization function has not been called yet it returns a wrong >> value. Does that sound correct ? > > No, this is a mistake. However, I'm wondering why on Exynos4/5 this > error didn't show up... I have been lowering the software trip point temperature in the exynos7 dts file (to 55C) for testing purposes. Hence, when the temperature is read incorrectly as ~105C the board trips at boot-up itself. Maybe for exynos4/5 the incorrect value read during boot-up is in the non-tripping range and once the tmu is initialized later it continues to function properly thereafter ? > > The reordering is needed to be able to call set_mode callback at > of-thermal.c to set the mode. > > If this change causes problems, then another solution (probably not so > neat) must be found. Please let me know if you need any further details. Thanks, Abhilash -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html