ipq806x: rework ipq806x specific tsense temp driver
authorAnsuel Smith <ansuelsmth@gmail.com>
Thu, 19 Dec 2019 03:01:28 +0000 (04:01 +0100)
committerPetr Štetiar <ynezz@true.cz>
Thu, 26 Dec 2019 07:31:42 +0000 (08:31 +0100)
commit77f4d5c6bb8323ec67248176a5a2907475041a79
treec164759fd55b66526c189dffc734ad129360c3b5
parenta666f817a27c01adb9d4e5d5a25367254b556a44
ipq806x: rework ipq806x specific tsense temp driver

Tsense driver for ipq806x have various problem.
- Emit wrong error. On probing of this driver, nvmem driver can be
  not ready and this cause a EDEFER error. Actually this is not an
  error as the kernel will retry to probe the driver after the
  nvmem driver is loaded.
- Use uninitialized value on trigger of critical temp
- Doesn't free allocated memory

Because of this, rework the driver and improve it by removing extra
load of data.

Change the logic of loading data. Use the backup calib data only
when the calib data is not present. As the calibration is only
needed to set the temp offset, we don't really need to read
both calib data and set the offset based only on the backup one.
Also change how the notifier function work. At times when we
output the trigger message, we already have read the temp so
remove the extra read and the wrong uninitialized data that
probably caused a kernel panic for null pointer exception.
(Think we never experience this bug because the router
never reached that temp ever... So just lucky)

Tested-by: Stefan Lippers-Hollmann <s.l-h@gmx.de> [nbg6817/ipq8065]
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
target/linux/ipq806x/patches-4.19/0063-4-ip806x-tsense-rework-driver.patch [new file with mode: 0644]