Re: [PATCH RESEND v2] staging: wfx: fix an undefined reference error when CONFIG_MMC=m

From: Jerome Pouiller
Date: Mon Oct 14 2019 - 05:53:27 EST


On Saturday 12 October 2019 04:48:55 CEST zhong jiang wrote:
> On 2019/10/12 0:57, Jerome Pouiller wrote:
> > On Friday 11 October 2019 18:38:17 CEST zhong jiang wrote:
> >> I hit the following error when compile the kernel.
> >>
> >> drivers/staging/wfx/main.o: In function `wfx_core_init':
> >> /home/z00352263/linux-next/linux-next/drivers/staging/wfx/main.c:488: undefined reference to `sdio_register_driver'
> >> drivers/staging/wfx/main.o: In function `wfx_core_exit':
> >> /home/z00352263/linux-next/linux-next/drivers/staging/wfx/main.c:496: undefined reference to `sdio_unregister_driver'
> >> drivers/staging/wfx/main.o:(.debug_addr+0x1a8): undefined reference to `sdio_register_driver'
> >> drivers/staging/wfx/main.o:(.debug_addr+0x6f0): undefined reference to `sdio_unregister_driver'
> > For information, I cannot reproduce your issue (it does not mean that
> > the issue does not exist). In add, if you obtain undefined references,
> > it should only happen when CONFIG_MMC is not defined.
> I attach the config, you can test it and reproduce the issue.
>
> Thanks,
> zhogn jiang
> > Can you check that your Modules.symvers is up-to-date (by running a
> > 'make modules') ?
Hello Zhong,

Now, I see the problem. It happens when CONFIG_MMC=m and CONFIG_WFX=y
(if CONFIG_WFX=m, it works).

I think the easiest way to solve problem is to disallow CONFIG_WFX=y if
CONFIG_MMC=m.

This solution impacts users who want to use SPI bus with configuration:
CONFIG_WFX=y + CONFIG_SPI=y + CONFIG_MMC=m. However, I think this is a
twisted case. So, I think it won't be missed.

I think that patch below do the right thing:

-----8<----------8<----------------------8<-----------------

diff --git i/drivers/staging/wfx/Kconfig w/drivers/staging/wfx/Kconfig
index 9b8a1c7a9e90..833f3b05b6b4 100644
--- i/drivers/staging/wfx/Kconfig
+++ w/drivers/staging/wfx/Kconfig
@@ -1,7 +1,7 @@
config WFX
tristate "Silicon Labs wireless chips WF200 and further"
depends on MAC80211
- depends on (SPI || MMC)
+ depends on (MMC=m && m) || MMC=y || (SPI && MMC!=m)
help
This is a driver for Silicons Labs WFxxx series (WF200 and further)
chipsets. This chip can be found on SPI or SDIO buses.


--
Jérôme Pouiller