Message ID | 20210915155908.476767-37-miquel.raynal@bootlin.com |
---|---|
State | New |
Headers | show |
Series | TI AM437X ADC1 | expand |
Hi Lee, lee.jones@linaro.org wrote on Thu, 23 Sep 2021 10:11:13 +0100: > On Thu, 23 Sep 2021, Miquel Raynal wrote: > > > Hi Lee, > > > > lee.jones@linaro.org wrote on Wed, 22 Sep 2021 16:57:10 +0100: > > > > > On Wed, 15 Sep 2021, Miquel Raynal wrote: > > > > > > > There was in the past a typo in the coordinate readouts property. The > > > > bindings have been updated, the touchscreen driver as well and now > > > > supports both. However, the MFD driver that is in charge of verifying > > > > the validity of the property only checks the bogus one. Add support for > > > > the correctly spelled DT property. > > > > > > > > Fixes: c9aeb249bf72 ("Input: ti_am335x_tsc - fix spelling mistake in TSC/ADC DT binding") > > > > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> > > > > Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > > > --- > > > > drivers/mfd/ti_am335x_tscadc.c | 8 +++++++- > > > > 1 file changed, 7 insertions(+), 1 deletion(-) > > > > > > > > diff --git a/drivers/mfd/ti_am335x_tscadc.c b/drivers/mfd/ti_am335x_tscadc.c > > > > index 155a8ed879b3..aa46ed669016 100644 > > > > --- a/drivers/mfd/ti_am335x_tscadc.c > > > > +++ b/drivers/mfd/ti_am335x_tscadc.c > > > > @@ -144,8 +144,14 @@ static int ti_tscadc_probe(struct platform_device *pdev) > > > > if (tscadc->data->has_tsc) { > > > > node = of_get_child_by_name(pdev->dev.of_node, "tsc"); > > > > of_property_read_u32(node, "ti,wires", &tscmag_wires); > > > > - of_property_read_u32(node, "ti,coordiante-readouts", &readouts); > > > > + err = of_property_read_u32(node, "ti,coordinate-readouts", > > > > + &readouts); > > > > + if (err < 0) > > > > + of_property_read_u32(node, "ti,coordiante-readouts", > > > > + &readouts); > > > > + > > > > > > How long are you proposing that we support this churn? > > > > Well, I am not proposing anything, I am just "fixing" the driver so > > that it fits the bindings :) Given the fact that at the end of this > > series there is a patch that changes the "coordiante" typo to > > "coordinate" in a device tree source file, I believe it is still too > > soon... > > If this is something you're changing in this set, please reconsider. > > I'd rather have a slightly misspelled documented property than being > forced to support 2 for any length of time. I am not suggesting anything here: - "coordiante" was introduced back in 2014. - "coordinate" was introduced shortly later. - "coordiante" was considered part of the "stable API" back in 2014 and even though the right spelling got introduced very shortly after, DT stability rules wanted us to support it forever. - The touchscreen driver has immediately be fixed to support both but not the MFD driver, and this does not make any sense! We *should* either support only one property (1) or support both in the two drivers (2), but supporting the two in one driver and supporting only one in the other one does not make any sense (given the fact that these two drives are tied together, the touchscreen driver does not exist without the MFD driver). That is what I am fixing here. Is #1 valid? Theoretically it's the best scenario. In practice it is not (yet) possible because the two versions are still used in the mainline device trees: $ git grep coordiante-readouts -- arch/arm/boot/dts/ | wc -l 1 $ git grep coordinate-readouts -- arch/arm/boot/dts/ | wc -l 5 So in this series I am fixing the MFD driver to be sure it handles correctly the correctly spelled DT property which is used by 5 boards since at least 6 years and I am also updating the remaining DT to use the correctly spelled property as well. I suppose we could propose to drop support for the "coordiante" version of that property in a few years but if we decide to do it right now we're definitely gonna break users. Thanks, Miquèl
diff --git a/drivers/mfd/ti_am335x_tscadc.c b/drivers/mfd/ti_am335x_tscadc.c index 155a8ed879b3..aa46ed669016 100644 --- a/drivers/mfd/ti_am335x_tscadc.c +++ b/drivers/mfd/ti_am335x_tscadc.c @@ -144,8 +144,14 @@ static int ti_tscadc_probe(struct platform_device *pdev) if (tscadc->data->has_tsc) { node = of_get_child_by_name(pdev->dev.of_node, "tsc"); of_property_read_u32(node, "ti,wires", &tscmag_wires); - of_property_read_u32(node, "ti,coordiante-readouts", &readouts); + err = of_property_read_u32(node, "ti,coordinate-readouts", + &readouts); + if (err < 0) + of_property_read_u32(node, "ti,coordiante-readouts", + &readouts); + of_node_put(node); + if (tscmag_wires) use_tsc = true; } else {