Re: [PATCH v2 2/4] dt-bindings: iio: ti,tmp117: add binding for the TMP116

Marco Felsch
2023-01-16T09:23:21Z

On 22-12-30, Jonathan Cameron wrote:
> On Tue, 27 Dec 2022 09:40:13 +0100
> Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote:
>
> > On 23/12/2022 18:13, Marco Felsch wrote:
> > > Hi Jonathan,
> > >
> > > On 22-12-23, Jonathan Cameron wrote:
> > >> On Fri, 23 Dec 2022 17:10:51 +0100
> > >> Marco Felsch <m.felsch@pengutronix.de> wrote:
> > >>
> > >>> On 22-12-23, Jonathan Cameron wrote:
> > >>>> On Fri, 23 Dec 2022 16:03:38 +0100
> > >>>> Marco Felsch <m.felsch@pengutronix.de> wrote:
> > >>>>
> > >>>>> On 22-12-23, Jonathan Cameron wrote:
> > >>>>>> On Wed, 21 Dec 2022 10:27:59 +0100
> > >>>>>> Marco Felsch <m.felsch@pengutronix.de> wrote:
> > >>>>>>
> > >>>>>>> The TMP116 is the predecessor of the TMP117.
> > >>>>>>>
> > >>>>>>> Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
> > >>>>>> I'm not sure this is introducing a valid fallback. The driver changes
> > >>>>>> imply some things the tmp117 driver supports, that this device
> > >>>>>> does not. A fallback compatible would mean that a new DT
> > >>>>>> with an old kernel would load the tmp117 against a tmp116 and
> > >>>>>> expect it to fully work.
> > >>>>>
> > >>>>> Since driver does all the detection an update of the bindings isn't
> > >>>>> really necessary. It is just to have a compatible already in place in
> > >>>>> case there a things we can't detected during runtime. This flow is
> > >>>>> common for a lot of SoC drivers. The fallback will be used as long as
> > >>>>> possible and once a specific feature can't be detected only via the
> > >>>>> binding, the driver adds the new binding to it of_compatible.
> > >>>>
> > >>>> That's true going forwards and for drivers that introduce a shared
> > >>>> generic compatible alongside the initial binding. It can't be easily
> > >>>> retrofit.
> > >>>>
> > >>>> Fallback compatible is also to allow this to work with old kernels
> >
> > Yes, if the devices are compatible, e.g. there is no need to change in
> > the driver to support new device.
> >
> > If the devices need auto-detection and are compatible in an auto-detect
> > way, then I don't think we have such goal.
> >
> > >>>
> > >>> What this small series does is adding the support for the chip. So the
> > >>> support starts with the kernel version which includes these patches. Why
> > >>> do you assume that one expect to have a proper support with an older
> > >>> kernel? I fully get the point that driver needs to deal with older
> > >>> device-tree's but having using a newer device-tree's (fw) on older
> > >>> kernels and expecting that older kernels does support the chip is a bit
> > >>> odd to me.
> > >>
> > >> Probably need the DT maintainers to offer the opinion on this as we
> > >> disagree on how fallback compatibles are supposed to work.
> > >> I'll accept whatever they say on this point (I've been persuaded
> > >> into a more relaxed stance in the past on this).
> >
> > DTS can be used outside of kernel - other projects or new DTS with old
> > kernel - and the way of working is bound by bindings. Therefore it is
> > really good if you use new DTS with older kernel and it works.
> >
> > As I said above, for devices that are fully compatible, this should be
> > the goal. Many SoC components are like this and we describe them that
> > way. However they do not have mostly auto-detection.
> >
> > Now for devices which are both:
> > - compatible according to the binding (so the interface is the same,
> > stable and handled by Linux),
> > - AND actually significantly different, where the difference is
> > recognized by auto-detection,
> > the Linux should be reasonable and it might freely choose not to support
> > unknown devices.
>
> Ok. In this case my gut feeling would be that a new ID and no fallback
> is the best balance. Ironically if we'd had a binding for the tmp116 first
> and fell back to that from the tmp117 we'd probably be fine (just
> have fewer features). I guess nothing stops us documenting that binding
> even though the tmp117 is already used to match in Linux.

Hi Jonathan, Krzysztof,

thanks for the detailed explanation. IMHO the fallback mechanism is
still fine but if you are worried about it I will change this to have a
separate compatible.

Regards,
Marco

> > You can compare it to the world without DT where everything is
> > auto-detectable. The Linux kernel performs auto-detection and based on
> > this either works or does not work with the device. But the kernel has
> > full discretion to decide about it.
> >
> > Users would be happy if kernel would work with unknown, new devices. But
> > also users would be unhappy if this damages their system because of e.g.
> > wrong voltage.
>
> Agreed - using old code is a nice to have, but not always the best choice.
>
> Jonathan
>
> >
> > Best regards,
> > Krzysztof
> >
>
>