On Tue, May 16, 2023 at 06:42:13PM +0200, Aleksa Savic wrote: > Extend aquacomputer_d5next driver to expose various hardware sensors of the > Aquacomputer Leakshield leak prevention system, which communicates > through a proprietary USB HID protocol. Implemented by Noah Bergbauer [1]. > > Two temperature sensors are exposed, along with pressure (current, min, max > and target), reservoir volume (total and filled), pump speed and flow. Pump > speed and flow values are user provided and allow the Leakshield to > optimize its operation. Writing them to the device is subject of future > patches. > > [1] https://github.com/aleksamagicka/aquacomputer_d5next-hwmon/pull/41 > > Originally-from: Noah Bergbauer <main@xxxxxxxx> > Signed-off-by: Aleksa Savic <savicaleksa83@xxxxxxxxx> > --- > Documentation/hwmon/aquacomputer_d5next.rst | 9 ++ > drivers/hwmon/aquacomputer_d5next.c | 117 ++++++++++++++++++-- > 2 files changed, 118 insertions(+), 8 deletions(-) > > diff --git a/Documentation/hwmon/aquacomputer_d5next.rst b/Documentation/hwmon/aquacomputer_d5next.rst > index 14b37851af0c..94dc2d93d180 100644 > --- a/Documentation/hwmon/aquacomputer_d5next.rst > +++ b/Documentation/hwmon/aquacomputer_d5next.rst > @@ -12,6 +12,7 @@ Supported devices: > * Aquacomputer Octo fan controller > * Aquacomputer Quadro fan controller > * Aquacomputer High Flow Next sensor > +* Aquacomputer Leakshield leak prevention system > * Aquacomputer Aquastream XT watercooling pump > * Aquacomputer Aquastream Ultimate watercooling pump > * Aquacomputer Poweradjust 3 fan controller > @@ -57,6 +58,11 @@ The High Flow Next exposes +5V voltages, water quality, conductivity and flow re > A temperature sensor can be connected to it, in which case it provides its reading > and an estimation of the dissipated/absorbed power in the liquid cooling loop. > > +The Leakshield exposes two temperature sensors and coolant pressure (current, min, max and > +target readings). It also exposes the estimated reservoir volume and how much of it is > +filled with coolant. Pump RPM and flow can be set to enhance on-device calculations, > +but this is not yet implemented here. > + > The Aquastream XT pump exposes temperature readings for the coolant, external sensor > and fan IC. It also exposes pump and fan speeds (in RPM), voltages, as well as pump > current. > @@ -83,6 +89,9 @@ Sysfs entries > temp[1-20]_input Physical/virtual temperature sensors (in millidegrees Celsius) > temp[1-8]_offset Temperature sensor correction offset (in millidegrees Celsius) > fan[1-8]_input Pump/fan speed (in RPM) / Flow speed (in dL/h) > +fan1_min Minimal fan speed (in RPM) > +fan1_max Maximal fan speed (in RPM) > +fan1_target Target fan speed (in RPM) > fan5_pulses Quadro flow sensor pulses > power[1-8]_input Pump/fan power (in micro Watts) > in[0-7]_input Pump/fan voltage (in milli Volts) > diff --git a/drivers/hwmon/aquacomputer_d5next.c b/drivers/hwmon/aquacomputer_d5next.c > index a4fcd4ebf76c..a981f7086114 100644 > --- a/drivers/hwmon/aquacomputer_d5next.c > +++ b/drivers/hwmon/aquacomputer_d5next.c > @@ -1,7 +1,7 @@ > // SPDX-License-Identifier: GPL-2.0+ > /* > * hwmon driver for Aquacomputer devices (D5 Next, Farbwerk, Farbwerk 360, Octo, > - * Quadro, High Flow Next, Aquaero, Aquastream Ultimate) > + * Quadro, High Flow Next, Aquaero, Aquastream Ultimate, Leakshield) > * > * Aquacomputer devices send HID reports (with ID 0x01) every second to report > * sensor values, except for devices that communicate through the > @@ -29,6 +29,7 @@ > #define USB_PRODUCT_ID_FARBWERK360 0xf010 > #define USB_PRODUCT_ID_OCTO 0xf011 > #define USB_PRODUCT_ID_HIGHFLOWNEXT 0xf012 > +#define USB_PRODUCT_ID_LEAKSHIELD 0xf014 > #define USB_PRODUCT_ID_AQUASTREAMXT 0xf0b6 > #define USB_PRODUCT_ID_AQUASTREAMULT 0xf00b > #define USB_PRODUCT_ID_POWERADJUST3 0xf0bd > @@ -36,7 +37,7 @@ > enum kinds { > d5next, farbwerk, farbwerk360, octo, quadro, > highflownext, aquaero, poweradjust3, aquastreamult, > - aquastreamxt > + aquastreamxt, leakshield > }; > > static const char *const aqc_device_names[] = { > @@ -46,6 +47,7 @@ static const char *const aqc_device_names[] = { > [octo] = "octo", > [quadro] = "quadro", > [highflownext] = "highflownext", > + [leakshield] = "leakshield", > [aquastreamxt] = "aquastreamxt", > [aquaero] = "aquaero", > [aquastreamult] = "aquastreamultimate", > @@ -93,7 +95,7 @@ static u8 aquaero_secondary_ctrl_report[] = { > #define AQC_FIRMWARE_VERSION 0xD > > #define AQC_SENSOR_SIZE 0x02 > -#define AQC_TEMP_SENSOR_DISCONNECTED 0x7FFF > +#define AQC_SENSOR_NA 0x7FFF This would have to be a separate change. Guenter