All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] iio: accel: fxls8962af: fix i2c dependency
@ 2021-07-21 15:13 Arnd Bergmann
  2021-07-21 15:50 ` Andy Shevchenko
  0 siblings, 1 reply; 7+ messages in thread
From: Arnd Bergmann @ 2021-07-21 15:13 UTC (permalink / raw)
  To: Jonathan Cameron, Sean Nyekjaer
  Cc: Arnd Bergmann, Lars-Peter Clausen, Andy Shevchenko,
	Linus Walleij, Stephan Gerhold, Hans de Goede, Tomas Melin,
	Mike Looijmans, Alexandru Ardelean, linux-iio, linux-kernel

From: Arnd Bergmann <arnd@arndb.de>

With CONFIG_SPI=y and CONFIG_I2C=m, building fxls8962af into vmlinux
causes a link error against the I2C module:

aarch64-linux-ld: drivers/iio/accel/fxls8962af-core.o: in function `fxls8962af_fifo_flush':
fxls8962af-core.c:(.text+0x3a0): undefined reference to `i2c_verify_client'

Work around it by adding a Kconfig dependency that forces the SPI driver
to be a loadable module whenever I2C is a module.

Fixes: af959b7b96b8 ("iio: accel: fxls8962af: fix errata bug E3 - I2C burst reads")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
I'm not overly happy with the fix either, but couldn't think of
a better idea. If someone provide a different fix, please ignore
mine.
---
 drivers/iio/accel/Kconfig | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/iio/accel/Kconfig b/drivers/iio/accel/Kconfig
index 0e56ace61103..8d8b1ba42ff8 100644
--- a/drivers/iio/accel/Kconfig
+++ b/drivers/iio/accel/Kconfig
@@ -231,6 +231,7 @@ config DMARD10
 
 config FXLS8962AF
 	tristate
+	depends on I2C || !I2C # cannot be built-in for modular I2C
 
 config FXLS8962AF_I2C
 	tristate "NXP FXLS8962AF/FXLS8964AF Accelerometer I2C Driver"
@@ -247,6 +248,7 @@ config FXLS8962AF_I2C
 config FXLS8962AF_SPI
 	tristate "NXP FXLS8962AF/FXLS8964AF Accelerometer SPI Driver"
 	depends on SPI
+	depends on I2C || !I2C
 	select FXLS8962AF
 	select REGMAP_SPI
 	help
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] iio: accel: fxls8962af: fix i2c dependency
  2021-07-21 15:13 [PATCH] iio: accel: fxls8962af: fix i2c dependency Arnd Bergmann
@ 2021-07-21 15:50 ` Andy Shevchenko
  2021-07-21 16:12   ` Arnd Bergmann
  0 siblings, 1 reply; 7+ messages in thread
From: Andy Shevchenko @ 2021-07-21 15:50 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Jonathan Cameron, Sean Nyekjaer, Arnd Bergmann,
	Lars-Peter Clausen, Linus Walleij, Stephan Gerhold,
	Hans de Goede, Tomas Melin, Mike Looijmans, Alexandru Ardelean,
	linux-iio, linux-kernel

On Wed, Jul 21, 2021 at 6:13 PM Arnd Bergmann <arnd@kernel.org> wrote:
>
> From: Arnd Bergmann <arnd@arndb.de>
>
> With CONFIG_SPI=y and CONFIG_I2C=m, building fxls8962af into vmlinux
> causes a link error against the I2C module:
>
> aarch64-linux-ld: drivers/iio/accel/fxls8962af-core.o: in function `fxls8962af_fifo_flush':
> fxls8962af-core.c:(.text+0x3a0): undefined reference to `i2c_verify_client'
>
> Work around it by adding a Kconfig dependency that forces the SPI driver
> to be a loadable module whenever I2C is a module.

...

>  config FXLS8962AF
>         tristate
> +       depends on I2C || !I2C # cannot be built-in for modular I2C

Can you enlighten me how this will not be a no-op?

-- 
With Best Regards,
Andy Shevchenko

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] iio: accel: fxls8962af: fix i2c dependency
  2021-07-21 15:50 ` Andy Shevchenko
@ 2021-07-21 16:12   ` Arnd Bergmann
  2021-07-21 17:33     ` Andy Shevchenko
  0 siblings, 1 reply; 7+ messages in thread
From: Arnd Bergmann @ 2021-07-21 16:12 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Jonathan Cameron, Sean Nyekjaer, Arnd Bergmann,
	Lars-Peter Clausen, Linus Walleij, Stephan Gerhold,
	Hans de Goede, Tomas Melin, Mike Looijmans, Alexandru Ardelean,
	linux-iio, Linux Kernel Mailing List

On Wed, Jul 21, 2021 at 5:52 PM Andy Shevchenko
<andy.shevchenko@gmail.com> wrote:
>
> On Wed, Jul 21, 2021 at 6:13 PM Arnd Bergmann <arnd@kernel.org> wrote:
> >
> > From: Arnd Bergmann <arnd@arndb.de>
> >
> > With CONFIG_SPI=y and CONFIG_I2C=m, building fxls8962af into vmlinux
> > causes a link error against the I2C module:
> >
> > aarch64-linux-ld: drivers/iio/accel/fxls8962af-core.o: in function `fxls8962af_fifo_flush':
> > fxls8962af-core.c:(.text+0x3a0): undefined reference to `i2c_verify_client'
> >
> > Work around it by adding a Kconfig dependency that forces the SPI driver
> > to be a loadable module whenever I2C is a module.
>
> ...
>
> >  config FXLS8962AF
> >         tristate
> > +       depends on I2C || !I2C # cannot be built-in for modular I2C
>
> Can you enlighten me how this will not be a no-op?

This part does nothing, it only causes a warning when FXLS8962AF
gets selected =y when I2C=m.

The important bit is the other hunk that adds the same dependency
to the FXLS8962AF_SPI symbol, which enforces that either I2C
is completely disabled, or treated as a dependency that prevents
the user from setting FXLS8962AF_SPI=y when that would cause
a link failure.

The effect is similar to a 'depends on SND_SOC_I2C_AND_SPI',
except we only need it on the SPI symbol here because the SPI
core cannot be in a module itself.

        Arnd

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] iio: accel: fxls8962af: fix i2c dependency
  2021-07-21 16:12   ` Arnd Bergmann
@ 2021-07-21 17:33     ` Andy Shevchenko
  2021-07-21 18:40       ` Arnd Bergmann
  0 siblings, 1 reply; 7+ messages in thread
From: Andy Shevchenko @ 2021-07-21 17:33 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Jonathan Cameron, Sean Nyekjaer, Arnd Bergmann,
	Lars-Peter Clausen, Linus Walleij, Stephan Gerhold,
	Hans de Goede, Tomas Melin, Mike Looijmans, Alexandru Ardelean,
	linux-iio, Linux Kernel Mailing List

On Wed, Jul 21, 2021 at 7:12 PM Arnd Bergmann <arnd@kernel.org> wrote:
> On Wed, Jul 21, 2021 at 5:52 PM Andy Shevchenko
> <andy.shevchenko@gmail.com> wrote:
> > On Wed, Jul 21, 2021 at 6:13 PM Arnd Bergmann <arnd@kernel.org> wrote:

...

> > >  config FXLS8962AF
> > >         tristate
> > > +       depends on I2C || !I2C # cannot be built-in for modular I2C
> >
> > Can you enlighten me how this will not be a no-op?
>
> This part does nothing, it only causes a warning when FXLS8962AF
> gets selected =y when I2C=m.

This is something new to me. But shouldn't the other chunk guarantee
that warning won't happen?

> The important bit is the other hunk that adds the same dependency
> to the FXLS8962AF_SPI symbol, which enforces that either I2C
> is completely disabled, or treated as a dependency that prevents
> the user from setting FXLS8962AF_SPI=y when that would cause
> a link failure.

This part I understand and neither object to nor comment on.

> The effect is similar to a 'depends on SND_SOC_I2C_AND_SPI',
> except we only need it on the SPI symbol here because the SPI
> core cannot be in a module itself.

I see. Thanks for elaboration.

-- 
With Best Regards,
Andy Shevchenko

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] iio: accel: fxls8962af: fix i2c dependency
  2021-07-21 17:33     ` Andy Shevchenko
@ 2021-07-21 18:40       ` Arnd Bergmann
  2021-07-24 15:16         ` Jonathan Cameron
  0 siblings, 1 reply; 7+ messages in thread
From: Arnd Bergmann @ 2021-07-21 18:40 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Jonathan Cameron, Sean Nyekjaer, Arnd Bergmann,
	Lars-Peter Clausen, Linus Walleij, Stephan Gerhold,
	Hans de Goede, Tomas Melin, Mike Looijmans, Alexandru Ardelean,
	linux-iio, Linux Kernel Mailing List

On Wed, Jul 21, 2021 at 7:34 PM Andy Shevchenko
<andy.shevchenko@gmail.com> wrote:
> On Wed, Jul 21, 2021 at 7:12 PM Arnd Bergmann <arnd@kernel.org> wrote:
> > On Wed, Jul 21, 2021 at 5:52 PM Andy Shevchenko
> > <andy.shevchenko@gmail.com> wrote:
> > > On Wed, Jul 21, 2021 at 6:13 PM Arnd Bergmann <arnd@kernel.org> wrote:
>
> ...
>
> > > >  config FXLS8962AF
> > > >         tristate
> > > > +       depends on I2C || !I2C # cannot be built-in for modular I2C
> > >
> > > Can you enlighten me how this will not be a no-op?
> >
> > This part does nothing, it only causes a warning when FXLS8962AF
> > gets selected =y when I2C=m.
>
> This is something new to me. But shouldn't the other chunk guarantee
> that warning won't happen?

Correct, it works without that, but if that fails after something changes,
this version would provide better diagnostics than the FXLS8962AF
core driver causing a link failure, and I found it documents better
why the other driver needs the dependency.

Let me know if you prefer me to resend the patch without this hunk.

      Arnd

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] iio: accel: fxls8962af: fix i2c dependency
  2021-07-21 18:40       ` Arnd Bergmann
@ 2021-07-24 15:16         ` Jonathan Cameron
  2021-07-24 17:00           ` Arnd Bergmann
  0 siblings, 1 reply; 7+ messages in thread
From: Jonathan Cameron @ 2021-07-24 15:16 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Andy Shevchenko, Sean Nyekjaer, Arnd Bergmann,
	Lars-Peter Clausen, Linus Walleij, Stephan Gerhold,
	Hans de Goede, Tomas Melin, Mike Looijmans, Alexandru Ardelean,
	linux-iio, Linux Kernel Mailing List

On Wed, 21 Jul 2021 20:40:30 +0200
Arnd Bergmann <arnd@kernel.org> wrote:

> On Wed, Jul 21, 2021 at 7:34 PM Andy Shevchenko
> <andy.shevchenko@gmail.com> wrote:
> > On Wed, Jul 21, 2021 at 7:12 PM Arnd Bergmann <arnd@kernel.org> wrote:  
> > > On Wed, Jul 21, 2021 at 5:52 PM Andy Shevchenko
> > > <andy.shevchenko@gmail.com> wrote:  
> > > > On Wed, Jul 21, 2021 at 6:13 PM Arnd Bergmann <arnd@kernel.org> wrote:  
> >
> > ...
> >  
> > > > >  config FXLS8962AF
> > > > >         tristate
> > > > > +       depends on I2C || !I2C # cannot be built-in for modular I2C  
> > > >
> > > > Can you enlighten me how this will not be a no-op?  
> > >
> > > This part does nothing, it only causes a warning when FXLS8962AF
> > > gets selected =y when I2C=m.  
> >
> > This is something new to me. But shouldn't the other chunk guarantee
> > that warning won't happen?  
> 
> Correct, it works without that, but if that fails after something changes,
> this version would provide better diagnostics than the FXLS8962AF
> core driver causing a link failure, and I found it documents better
> why the other driver needs the dependency.
> 
> Let me know if you prefer me to resend the patch without this hunk.
> 
>       Arnd

Hi Arnd,

I didn't think of this particularly combination when we dealt with
last build issue the workaround brought in.  I've applied this to the
fixes-togreg branch of iio.git as an immediately solution, but longer
term we should think about just using a function pointer to allow us
to move this into the i2c specific module.  If we do that we can
drop this complex build logic later.

Thanks,

Jonathan



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] iio: accel: fxls8962af: fix i2c dependency
  2021-07-24 15:16         ` Jonathan Cameron
@ 2021-07-24 17:00           ` Arnd Bergmann
  0 siblings, 0 replies; 7+ messages in thread
From: Arnd Bergmann @ 2021-07-24 17:00 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: Andy Shevchenko, Sean Nyekjaer, Arnd Bergmann,
	Lars-Peter Clausen, Linus Walleij, Stephan Gerhold,
	Hans de Goede, Tomas Melin, Mike Looijmans, Alexandru Ardelean,
	linux-iio, Linux Kernel Mailing List

On Sat, Jul 24, 2021 at 5:15 PM Jonathan Cameron <jic23@kernel.org> wrote:
> On Wed, 21 Jul 2021 20:40:30 +0200 Arnd Bergmann <arnd@kernel.org> wrote:

> I didn't think of this particularly combination when we dealt with
> last build issue the workaround brought in.  I've applied this to the
> fixes-togreg branch of iio.git as an immediately solution, but longer
> term we should think about just using a function pointer to allow us
> to move this into the i2c specific module.  If we do that we can
> drop this complex build logic later.

Ok, that sounds good to me, thanks!

       Arnd

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-07-24 17:01 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-21 15:13 [PATCH] iio: accel: fxls8962af: fix i2c dependency Arnd Bergmann
2021-07-21 15:50 ` Andy Shevchenko
2021-07-21 16:12   ` Arnd Bergmann
2021-07-21 17:33     ` Andy Shevchenko
2021-07-21 18:40       ` Arnd Bergmann
2021-07-24 15:16         ` Jonathan Cameron
2021-07-24 17:00           ` Arnd Bergmann

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.