Re: [PATCH] usb: typec: fusb302: Fix an undefined reference to 'extcon_get_state'

Heikki Krogerus
2019-12-12T11:18:16Z

On Thu, Dec 12, 2019 at 05:40:40PM +0800, zhong jiang wrote:
> On 2019/12/12 17:28, Greg KH wrote:
> > On Thu, Dec 12, 2019 at 05:15:28PM +0800, zhong jiang wrote:
> >> On 2019/12/12 17:01, Heikki Krogerus wrote:
> >>> On Thu, Dec 12, 2019 at 03:34:23PM +0800, zhong jiang wrote:
> >>>> Fixes the following compile error:
> >>>>
> >>>> drivers/usb/typec/tcpm/fusb302.o: In function `tcpm_get_current_limit':
> >>>> fusb302.c:(.text+0x3ee): undefined reference to `extcon_get_state'
> >>>> fusb302.c:(.text+0x422): undefined reference to `extcon_get_state'
> >>>> fusb302.c:(.text+0x450): undefined reference to `extcon_get_state'
> >>>> fusb302.c:(.text+0x48c): undefined reference to `extcon_get_state'
> >>>> drivers/usb/typec/tcpm/fusb302.o: In function `fusb302_probe':
> >>>> fusb302.c:(.text+0x980): undefined reference to `extcon_get_extcon_dev'
> >>>> make: *** [vmlinux] Error 1
> >>> There are stubs for those functions so that really should not be
> >>> happening. I can not reproduce that.
> >> It can be reproduced in next branch. you can try it in the latest next branch.
> > Can it be reproduced in 5.5-rc1?
> >
> commit 78adcacd4edbd6795e164bbda9a4b2b7e51666a7
> Author: Stephen Rothwell <sfr@canb.auug.org.au>
> Date: Thu Dec 12 15:48:07 2019 +1100
>
> Add linux-next specific files for 20191212
>
> I reproduce it based on this commit. The related config is attached.

OK, now I get what's going on. EXTCON is build as a module, but
FUSB302 is not. This should be explained in the commit message.

That does not mean we have to force everybody to enable EXTCON in
order to use this driver. Try something like this:

diff --git a/drivers/usb/typec/tcpm/Kconfig b/drivers/usb/typec/tcpm/Kconfig
index 72481bbb2af3..06e026f6325c 100644
--- a/drivers/usb/typec/tcpm/Kconfig
+++ b/drivers/usb/typec/tcpm/Kconfig
@@ -31,6 +31,7 @@ endif # TYPEC_TCPCI

config TYPEC_FUSB302
tristate "Fairchild FUSB302 Type-C chip driver"
+ depends on EXTCON=n || EXTCON=y || (EXTCON=m && m)
depends on I2C
help
The Fairchild FUSB302 Type-C chip driver that works with

It looks a bit silly, but I don't know of any other way (maybe
somebody else does?).

thanks,

--
heikki