Re: [PATCH 1/2] input: generalize the Imagis touchscreen driver

From: Markuss Broks
Date: Sat Sep 30 2023 - 12:10:10 EST


Hi Karel,

On 9/29/23 19:37, Karel Balej wrote:
Hello, Markuss,

If you don't mind the extra hassle, I'm all in for my generalization
thing going together with your series.

Alternatively, I can resend it myself, but I believe it would be better
if they go in bulk since they need to be applied together.
great. Do you wish to make any changes to your original series? If not,
please let me know and I will use the v2 [1] as it is.
I believe that version should be fine.

As for the voltage set, I believe this does not belong in a kernel
driver. You should set it in device-tree with `regulator-max-microvolt`
and `regulator-min-microvolt`.
Please see my response to Jeff regarding this. I will be happy to hear
your thoughts on what I propose.
Actually, the regulator values belong to the device-tree, because the
device-tree for the board is what describes the board's regulators, and
since you know what components are installed on that specific board you
can know which regulator values are supposed to be set for it.

[...]

The actual min/max values for regulators or its voltage table is
provided by the regulator driver itself, so there's not much point in
specifying those again in the device-tree.
I see. I think the reason why I thought what I wrote before is that
downstream the regulator DTS lives separately from the board as a .dtsi
file which made me think that it can be used universally. So if I
understand correctly now, the hardware specifications of the regulator,
such as the minimal and maximal voltage should be part of the driver,
while the DT should contain requirements for the given use of the
regulator (with a specific board) - is this correct?
That is correct.

This manual voltage setting can cause conflicts with other drivers for
example. Also some device can use a variable wide voltage range, and
some only specific narrow one, and e.g. the driver with wide range
would set it to voltage that isn't suitable for the narrow range
device, so it's much better to just specify it manually than have it
resolved.
I would expect that in the case you describe, the kernel would set the
voltage to a value which would satisfy both the ranges. I don't know
what would happen if that was not possible (i. e. there was no
intersection in the two requested voltage ranges), though. Or does a
call to regulator_set_voltage set the voltage immediately taking notice
only of the hardware contraints? I think I am having trouble
understanding what this quote from the regulator_set_voltage
documentation means:

If the regulator is shared between several devices then the lowest
request voltage that meets the system constraints will be used.
But actually, it probably doesn't make sense that the kernel would try
to resolve a range suitable for all calls to this function as, I assume,
a single driver could call it multiple times with disjoint voltage
intervals.
Well, I assume kernel has some sort of behaviour for that stuff, but I believe setting the voltage by the device manually is discouraged in general. It should be possible, though.

Thank you for your patience.

Kind regards,
K. B.
- Markuss