Message ID | 20220830110709.2037302-3-o.rempel@pengutronix.de (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v1,1/3] dt-bindings: iio: adc: ti,tsc2046: add vref-supply property | expand |
On Tue, 30 Aug 2022 13:07:09 +0200 Oleksij Rempel <o.rempel@pengutronix.de> wrote: > Add spi_device_id to silent following warning: > SPI driver tsc2046 has no spi_device_id for ti,tsc2046e-adc > > Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> > --- > drivers/iio/adc/ti-tsc2046.c | 17 ++++++++++++++++- > 1 file changed, 16 insertions(+), 1 deletion(-) > > diff --git a/drivers/iio/adc/ti-tsc2046.c b/drivers/iio/adc/ti-tsc2046.c > index bbc8b4137b0b1..b9a1fac659d46 100644 > --- a/drivers/iio/adc/ti-tsc2046.c > +++ b/drivers/iio/adc/ti-tsc2046.c > @@ -761,7 +761,15 @@ static int tsc2046_adc_probe(struct spi_device *spi) > return -EINVAL; > } > > - dcfg = device_get_match_data(dev); > + if (!dev_fwnode(dev)) { > + const struct spi_device_id *id; > + > + id = spi_get_device_id(spi); > + dcfg = (const struct tsc2046_adc_dcfg *)id->driver_data; Driver data not set below. Otherwise this looks good to me. An alternative more common form (I think...) is call device_get_match_data() unconditionally and if that is null follow the driver_data path. Either way is fine though. Could you add to the patch description where the warning is coming from? Build time / runtime etc and what tool? Thanks, Jonathan > + } else { > + dcfg = device_get_match_data(dev); > + } > + > if (!dcfg) > return -EINVAL; > > @@ -878,11 +886,18 @@ static const struct of_device_id ads7950_of_table[] = { > }; > MODULE_DEVICE_TABLE(of, ads7950_of_table); > > +static const struct spi_device_id tsc2046_adc_spi_ids[] = { > + { "tsc2046e-adc" }, > + { } > +}; > +MODULE_DEVICE_TABLE(spi, tsc2046_adc_spi_ids); > + > static struct spi_driver tsc2046_adc_driver = { > .driver = { > .name = "tsc2046", > .of_match_table = ads7950_of_table, > }, > + .id_table = tsc2046_adc_spi_ids, > .probe = tsc2046_adc_probe, > .remove = tsc2046_adc_remove, > };
On Tue, Aug 30, 2022 at 02:02:28PM +0100, Jonathan Cameron wrote: > On Tue, 30 Aug 2022 13:07:09 +0200 > Oleksij Rempel <o.rempel@pengutronix.de> wrote: > > > Add spi_device_id to silent following warning: > > SPI driver tsc2046 has no spi_device_id for ti,tsc2046e-adc > > > > Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> > > --- > > drivers/iio/adc/ti-tsc2046.c | 17 ++++++++++++++++- > > 1 file changed, 16 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/iio/adc/ti-tsc2046.c b/drivers/iio/adc/ti-tsc2046.c > > index bbc8b4137b0b1..b9a1fac659d46 100644 > > --- a/drivers/iio/adc/ti-tsc2046.c > > +++ b/drivers/iio/adc/ti-tsc2046.c > > @@ -761,7 +761,15 @@ static int tsc2046_adc_probe(struct spi_device *spi) > > return -EINVAL; > > } > > > > - dcfg = device_get_match_data(dev); > > + if (!dev_fwnode(dev)) { > > + const struct spi_device_id *id; > > + > > + id = spi_get_device_id(spi); > > + dcfg = (const struct tsc2046_adc_dcfg *)id->driver_data; > > Driver data not set below. ..facepalm.. > Otherwise this looks good to me. An alternative more common form (I think...) > is call device_get_match_data() unconditionally and if that is null follow > the driver_data path. Either way is fine though. > > Could you add to the patch description where > the warning is coming from? Build time / runtime etc and what tool? ack. It is runtime warning in the kernel log. Regards, Oleksij
On Tue, Aug 30, 2022 at 2:19 PM Oleksij Rempel <o.rempel@pengutronix.de> wrote: > > Add spi_device_id to silent following warning: > SPI driver tsc2046 has no spi_device_id for ti,tsc2046e-adc Missed period. ... > - dcfg = device_get_match_data(dev); Why remove this and duplicate the check below with the inverted conditional? > + if (!dev_fwnode(dev)) { > + const struct spi_device_id *id; > + > + id = spi_get_device_id(spi); > + dcfg = (const struct tsc2046_adc_dcfg *)id->driver_data; > + } else { > + dcfg = device_get_match_data(dev); > + } if (!dcfg) { ...try SPI ID... } if (!dfg) return -E...
diff --git a/drivers/iio/adc/ti-tsc2046.c b/drivers/iio/adc/ti-tsc2046.c index bbc8b4137b0b1..b9a1fac659d46 100644 --- a/drivers/iio/adc/ti-tsc2046.c +++ b/drivers/iio/adc/ti-tsc2046.c @@ -761,7 +761,15 @@ static int tsc2046_adc_probe(struct spi_device *spi) return -EINVAL; } - dcfg = device_get_match_data(dev); + if (!dev_fwnode(dev)) { + const struct spi_device_id *id; + + id = spi_get_device_id(spi); + dcfg = (const struct tsc2046_adc_dcfg *)id->driver_data; + } else { + dcfg = device_get_match_data(dev); + } + if (!dcfg) return -EINVAL; @@ -878,11 +886,18 @@ static const struct of_device_id ads7950_of_table[] = { }; MODULE_DEVICE_TABLE(of, ads7950_of_table); +static const struct spi_device_id tsc2046_adc_spi_ids[] = { + { "tsc2046e-adc" }, + { } +}; +MODULE_DEVICE_TABLE(spi, tsc2046_adc_spi_ids); + static struct spi_driver tsc2046_adc_driver = { .driver = { .name = "tsc2046", .of_match_table = ads7950_of_table, }, + .id_table = tsc2046_adc_spi_ids, .probe = tsc2046_adc_probe, .remove = tsc2046_adc_remove, };
Add spi_device_id to silent following warning: SPI driver tsc2046 has no spi_device_id for ti,tsc2046e-adc Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> --- drivers/iio/adc/ti-tsc2046.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)