2022-03-28 22:40:32

by Michael Walle

[permalink] [raw]
Subject: [PATCH v2 0/4] hwmon: add lan9668 driver

Add a temperature and fan controller driver for the Microchip LAN9668 SoC.

The temperature sensor uses a polynomial to calculate the actual
temperature. Fortunately, the bt1-pvt already has such a calculation.
It seems that the LAN9668 uses the same Analog Bits sensor as the
BT1 although with a different characteristic. To be able to reuse the
code move it to lib/ as it seems pretty generic to calculate any
polynomial using integers only, which might also be used by other parts
of the kernel. Another option might be to move the code to hwmon-poly.c,
I'm not sure. Thoughts?

I also plan on submitting patches to add temperature sensor support for
the GPYxxx and LAN8814 PHYs which also use polynomial_calc().

The last two patches adds the actual driver and the dt-binding for it.

changes since v1:
- add doc string to polynomial_calc(), moved the comment
into the function.
- add missing "select POLYNOMIAL" to the bt1_pvt driver
Kconfig symbol
- add hwmon driver documentation
- cache sys_clk rate during probe
- add missing ERR_CAST()
- adapted comment for the PPS->RPM calculation
- add temporary variable in lan966x_hwmon_read_pwm_freq()

Michael Walle (4):
lib: add generic polynomial calculation
hwmon: (bt1-pvt) use generic polynomial functions
dt-bindings: hwmon: add Microchip LAN966x bindings
hwmon: add driver for the Microchip LAN966x SoC

.../bindings/hwmon/microchip,lan966x.yaml | 53 +++
Documentation/hwmon/lan966x.rst | 47 +++
drivers/hwmon/Kconfig | 13 +
drivers/hwmon/Makefile | 1 +
drivers/hwmon/bt1-pvt.c | 50 +--
drivers/hwmon/lan966x-hwmon.c | 390 ++++++++++++++++++
include/linux/polynomial.h | 35 ++
lib/Kconfig | 3 +
lib/Makefile | 2 +
lib/polynomial.c | 108 +++++
10 files changed, 665 insertions(+), 37 deletions(-)
create mode 100644 Documentation/devicetree/bindings/hwmon/microchip,lan966x.yaml
create mode 100644 Documentation/hwmon/lan966x.rst
create mode 100644 drivers/hwmon/lan966x-hwmon.c
create mode 100644 include/linux/polynomial.h
create mode 100644 lib/polynomial.c

--
2.30.2