Thread (14 messages) 14 messages, 7 authors, 2025-06-10

Re: [PATCH v2 1/2] dt-bindings: iio: temperature: add support for MCP998X

From: Conor Dooley <conor@kernel.org>
Date: 2025-06-10 15:17:16
Also in: linux-iio, lkml

On Tue, Jun 10, 2025 at 01:29:01PM +0000, Victor.Duicu@microchip.com wrote:
On Fri, 2025-06-06 at 16:15 +0100, Conor Dooley wrote:
quoted
Jonathan,

On Mon, Jun 02, 2025 at 02:48:52PM +0000,
Victor.Duicu@microchip.com wrote:
quoted
On Fri, 2025-05-30 at 16:55 +0100, Conor Dooley wrote:
quoted
On Thu, May 29, 2025 at 01:13:38PM -0500, David Lechner wrote:
quoted
On 5/29/25 4:36 AM, victor.duicu@microchip.com wrote:
quoted
From: Victor Duicu <victor.duicu@microchip.com>
+  microchip,recd12:
+    description:
+      Enable resistance error correction for external
channels 1
and 2.
+      Omit this tag to disable REC for channels 1 and 2.
+    type: boolean
+
+  microchip,recd34:
+    description:
+      Enable resistance error correction for external
channels 3
and 4.
+      Omit this tag to disable REC for channels 3 and 4.
Why are these two devicetree properties, rather than runtime
controls?
The parasitic resistance added to the series resistance is
dependent
only on the circuit. 
It is possible for the chip and the transistor to be at some
distance
from each other. The manufacturer can approximate the error added
and
decide if resistance error correction should be applied.
I don't think I buy this line of argument. The property is not
describing the hardware, it's literally being used as a toggle for
some
software feature. It'd be more acceptable if it indicated that the
chip
and transistor were distant, leaving software to make a decision on
what
that meant. One user (say bsd) might want decide that the driver
should
always enable it, but another (say linux) might expose it as a
control
to userspace defaulting based the dt property.
Additionally, the name of the property is pretty awful, and does not
even hint at what it's doing - and there's no mention of why channel
1/2
and 3/4 are bound together.
You are correct that the parameters recd12 and recd34 do not directly
describe the hardware, but they control a software feature of the chip
itself. Resistance error correction is capable of counterbalancing
the parasitic resistance added to the external diodes, which can be
significant.
The manufacturer knows where the chip and diode are and can decide if
correction is necessary. The user does not have that insight.
The user _may_ not have it. The properties should not be written such
that they exclude the control of these things from userspace, and just
indicate that the hardware configuration has the chip and diode
sufficiently far apart that the feature can help.

I can change the name of the parameter to something like
resistance_err_correction and mention in the description which channels
are affected.
No _s are allowed in properties, so bear that in mind. Again, I don't
think the property should be responsible for turning it on, just
indicate that there is a parasitic resistance, so and the name should
really be something that indicates a parasitic resistance. E.g.
microchip,parasitic-res-on-channel1. Software (be it userspace or
driver) can then made a decision about turning on the error correction
with that information.
quoted
quoted
The user cannot influence the parasitic resistance nor calculate
it.
I don't think that's super relevant here, since the property has
nothing
to do with influencing or calculating the value. I meant deciding
whether
or not the correction is applied, just as the dt property you propose
does now.

Cheers,
Conor.
Kind Regards,
Victor Duicu

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help