Subject: Re: linux-next: Tree for January 7 (pcmcia)

From: Dominik Brodowski <[email-masked]>
Date: Fri, 8 Jan 2010 18:54:23 +0100

Hey,

On Thu, Jan 07, 2010 at 01:55:57PM -0800, Randy Dunlap wrote:
> > On Thu, Jan 07, 2010 at 09:57:28PM +0100, Dominik Brodowski wrote:
> > > Hey,
> > > 
> > > On Thu, Jan 07, 2010 at 10:10:06AM -0800, Randy Dunlap wrote:
> > > > > Hi all,
> > > > > 
> > > > > Changes since 20100106:
> > > > 
> > > > 
> > > > drivers/built-in.o: In function `yenta_probe':
> > > > yenta_socket.c:(.devinit.text+0x1e582): undefined reference to `pccard_nonstatic_ops'
> > > > 
> > > > CONFIG_PCCARD=y
> > > > CONFIG_PCMCIA=m
> > > > CONFIG_PCCARD_NONSTATIC=m
> > > > CONFIG_YENTA=y
> > > > 
> > > > so yenta code (built-in) tries to reference data that lives in a
> > > > loadable module.
> > > 
> > > Uh, that was I. If kconfig can't be fixed easily, I'll revert the change
> > 
> > Hi Randy, Dominik,
> > 
> > Please try this one-liner. The problem is that 'if X' and 'if X!=n' are not
> > the same in ternary logic.
> > 
> > Michal
> > 
> > From e7b12e70272484da2161c0b6c459f2eff2a989a8 Mon Sep 17 00:00:00 2001
> > From: Michal Marek <[email-masked]>
> > Date: Thu, 7 Jan 2010 21:03:11 +0100
> > Subject: [PATCH] pcmcia: fix yenta dependency on PCCARD_NONSTATIC
> > 
> > With CONFIG_PCMCIA=m and CONFIG_YENTA=y, we get
> > 
> > drivers/built-in.o: In function `yenta_probe':
> > yenta_socket.c:(.devinit.text+0x1e582): undefined reference to
> > `pccard_nonstatic_ops'
> > 
> > This is because
> > 
> > select PCCARD_NONSTATIC if PCMCIA
> > 
> > sets PCCARD_NONSTATIC = min(YENTA, PCMCIA). Change it to 'if PCMCIA!=n'
> > to remove the upper limit.
> > 
> > Reported-by: Randy Dunlap <[email-masked]>
> > Signed-off-by: Michal Marek <[email-masked]>
> 
> Acked-by: Randy Dunlap <[email-masked]>
> 
> Thanks.

Thanks for the patch. I extended it a bit further:

>>From 77f9eb4599f1d0f5a43cadece9809018b534e308 Mon Sep 17 00:00:00 2001
From: Michal Marek <[email-masked]>
Date: Thu, 7 Jan 2010 21:03:11 +0100
Subject: [PATCH] pcmcia: fix yenta dependency on PCCARD_NONSTATIC

With CONFIG_PCMCIA=m and CONFIG_YENTA=y, we get

drivers/built-in.o: In function `yenta_probe':
yenta_socket.c:(.devinit.text+0x1e582): undefined reference to
`pccard_nonstatic_ops'

This is because

select PCCARD_NONSTATIC if PCMCIA

sets PCCARD_NONSTATIC = min(YENTA, PCMCIA). Change it to 'if PCMCIA!=n'
to remove the upper limit.

[[email-masked]: propagate change to PCMICA_M8XX]
Reported-by: Randy Dunlap <[email-masked]>
Signed-off-by: Michal Marek <[email-masked]>
Acked-by: Randy Dunlap <[email-masked]>
Signed-off-by: Dominik Brodowski <[email-masked]>

diff --git a/drivers/pcmcia/Kconfig b/drivers/pcmcia/Kconfig
index efc51b9..e8f35da 100644
--- a/drivers/pcmcia/Kconfig
+++ b/drivers/pcmcia/Kconfig
@@ -84,7 +84,7 @@ config YENTA
 	tristate "CardBus yenta-compatible bridge support"
 	depends on PCI
 	select CARDBUS if !EMBEDDED
-	select PCCARD_NONSTATIC if PCMCIA
+	select PCCARD_NONSTATIC if PCMCIA != n
 	---help---
 	  This option enables support for CardBus host bridges.  Virtually
 	  all modern PCMCIA bridges are CardBus compatible.  A "bridge" is
@@ -161,8 +161,8 @@ config TCIC
 
 config PCMCIA_M8XX
 	tristate "MPC8xx PCMCIA support"
-	depends on PCMCIA && PPC && 8xx
-	select PCCARD_IODYN if PCMCIA
+	depends on PCCARD && PPC && 8xx
+	select PCCARD_IODYN if PCMCIA != n
 	help
 	  Say Y here to include support for PowerPC 8xx series PCMCIA
 	  controller.