Message ID | 51827DB1.7000304@redhat.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers |
Received: from mail.tu-berlin.de ([130.149.7.33]) by www.linuxtv.org with esmtp (Exim 4.72) (envelope-from <linux-media-owner@vger.kernel.org>) id 1UXut1-00052o-Ow; Thu, 02 May 2013 16:53:31 +0200 X-tubIT-Incoming-IP: 209.132.180.67 Received: from vger.kernel.org ([209.132.180.67]) by mail.tu-berlin.de (exim-4.72/mailfrontend-8) with esmtp id 1UXusz-0006ow-l6; Thu, 02 May 2013 16:53:31 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758866Ab3EBOxM (ORCPT <rfc822;mkrufky@linuxtv.org> + 1 other); Thu, 2 May 2013 10:53:12 -0400 Received: from mx1.redhat.com ([209.132.183.28]:48581 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751611Ab3EBOxK (ORCPT <rfc822;linux-media@vger.kernel.org>); Thu, 2 May 2013 10:53:10 -0400 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r42EqcCS032025 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 2 May 2013 10:52:38 -0400 Received: from [10.97.4.31] (vpn1-4-31.gru2.redhat.com [10.97.4.31]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id r42EqXNQ012642 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Thu, 2 May 2013 10:52:35 -0400 Message-ID: <51827DB1.7000304@redhat.com> Date: Thu, 02 May 2013 11:52:33 -0300 From: Mauro Carvalho Chehab <mchehab@redhat.com> User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130402 Thunderbird/17.0.5 MIME-Version: 1.0 To: Randy Dunlap <rdunlap@infradead.org>, "Yann E. MORIN" <yann.morin.1998@free.fr>, =?UTF-8?B?RXplcXVpZWwgR2FyY8OtYQ==?= <elezegarcia@gmail.com> CC: Stephen Rothwell <sfr@canb.auug.org.au>, linux-next@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media <linux-media@vger.kernel.org>, linux-kbuild@vger.kernel.org Subject: Re: linux-next: Tree for May 1 (media/usb/stk1160) References: <20130501183734.7ad1efca2d06e75432edabbd@canb.auug.org.au> <518157EB.3010700@infradead.org> In-Reply-To: <518157EB.3010700@infradead.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: <linux-media.vger.kernel.org> X-Mailing-List: linux-media@vger.kernel.org X-PMX-Version: 6.0.0.2142326, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2013.5.2.144520 X-PMX-Spam: Gauge=IIIIIIIII, Probability=9%, Report=' MULTIPLE_RCPTS 0.1, HTML_00_01 0.05, HTML_00_10 0.05, MSGID_ADDED_BY_MTA 0.05, BODY_SIZE_5000_5999 0, BODY_SIZE_7000_LESS 0, FROM_NAME_PHRASE 0, URI_ENDS_IN_HTML 0, __ANY_URI 0, __BOUNCE_CHALLENGE_SUBJ 0, __BOUNCE_NDR_SUBJ_EXEMPT 0, __CP_MEDIA_BODY 0, __CP_URI_IN_BODY 0, __CT 0, __CTE 0, __CT_TEXT_PLAIN 0, __FORWARDED_MSG 0, __HAS_FROM 0, __HAS_MSGID 0, __HAS_X_MAILING_LIST 0, __IN_REP_TO 0, __MIME_TEXT_ONLY 0, __MIME_VERSION 0, __MOZILLA_MSGID 0, __MOZILLA_USER_AGENT 0, __MULTIPLE_RCPTS_CC_X2 0, __SANE_MSGID 0, __TO_MALFORMED_2 0, __URI_NO_WWW 0, __URI_NS , __USER_AGENT 0' |
Commit Message
Mauro Carvalho Chehab
May 2, 2013, 2:52 p.m. UTC
Em 01-05-2013 14:59, Randy Dunlap escreveu: > On 05/01/13 01:37, Stephen Rothwell wrote: >> Hi all, >> >> Please do not add any v3.11 destined work to your linux-next included >> branches until after v3.10-rc1 is released. >> >> Changes since 20130430: >> > > > When CONFIG_SND=m and CONFIG_SND_AC97_CODEC=m and > CONFIG_VIDEO_STK1160=y > CONFIG_VIDEO_STK1160_AC97=y > > drivers/built-in.o: In function `stk1160_ac97_register': > (.text+0x122706): undefined reference to `snd_card_create' > drivers/built-in.o: In function `stk1160_ac97_register': > (.text+0x1227b2): undefined reference to `snd_ac97_bus' > drivers/built-in.o: In function `stk1160_ac97_register': > (.text+0x1227cd): undefined reference to `snd_card_free' > drivers/built-in.o: In function `stk1160_ac97_register': > (.text+0x12281b): undefined reference to `snd_ac97_mixer' > drivers/built-in.o: In function `stk1160_ac97_register': > (.text+0x122832): undefined reference to `snd_card_register' > drivers/built-in.o: In function `stk1160_ac97_unregister': > (.text+0x12285e): undefined reference to `snd_card_free' > > > This kconfig fragment: > config VIDEO_STK1160_AC97 > bool "STK1160 AC97 codec support" > depends on VIDEO_STK1160 && SND > select SND_AC97_CODEC > > is unreliable (doesn't do what some people expect) when SND=m and SND_AC97_CODEC=m, > since VIDEO_STK1160_AC97 is a bool. Using select is always tricky. I can see a few possible fixes for it: 1) split the alsa part into a separate module. IMHO, this is cleaner, but requires a little more work. 2) Use the Kconfig syntax: depends on SND || (SND=n) on a tristate symbol. That behaves like: if SND is 'n', it won't depend on SND; if SND is 'm', the symbol will be 'm' if SND is 'y', the symbol will be 'y'. However, as as VIDEO_STK1160_AC97 is boolean, this will require an additional hidden Kconfig. Something like: config VIDEO_STK1160_COMMON tristate "STK1160 USB video capture support" depends on VIDEO_DEV && I2C config VIDEO_STK1160_AC97 bool "STK1160 AC97 codec support" depends on VIDEO_STK1160_COMMON && SND config VIDEO_STK1160 tristate depends on ((SND || (SND=n) || !VIDEO_STK1160_AC97) && VIDEO_STK1160_COMMON default y select SND_AC97_CODEC if SND select VIDEOBUF2_VMALLOC select VIDEO_SAA711X select SND_AC97_CODEC We do already something similar to the above for the mutual dependency of most media drivers for I2C and V4L2 and/or DVB core. There's just one small drawback with the above: if SND='m', even if the user selects VIDEO_STK1160_COMMON='y', VIDEO_STK1160 will be 'm'. A quick test here with make allyesconfig and then changing SND to m seemed to produce the right value for CONFIG_VIDEO_STK1160: Selecting STK1160_AC97: $ grep -e STK1160 -e SND= .config CONFIG_VIDEO_STK1160_COMMON=y CONFIG_VIDEO_STK1160_AC97=y CONFIG_VIDEO_STK1160=m CONFIG_SND=m Unselecting STK1160_AC97: $ grep -e STK1160 -e SND= .config CONFIG_VIDEO_STK1160_COMMON=y # CONFIG_VIDEO_STK1160_AC97 is not set CONFIG_VIDEO_STK1160=y CONFIG_SND=m With a little more work, it could be possible to find a way to avoid the drawback of saying to the user that the module will be builtin, but compiling it as a module. Regards, Mauro. - [media] stk1160: Make stk1160 module if SND is m and audio support is selected As reported by Randy: When CONFIG_SND=m and CONFIG_SND_AC97_CODEC=m and CONFIG_VIDEO_STK1160=y CONFIG_VIDEO_STK1160_AC97=y drivers/built-in.o: In function `stk1160_ac97_register': (.text+0x122706): undefined reference to `snd_card_create' drivers/built-in.o: In function `stk1160_ac97_register': (.text+0x1227b2): undefined reference to `snd_ac97_bus' drivers/built-in.o: In function `stk1160_ac97_register': (.text+0x1227cd): undefined reference to `snd_card_free' drivers/built-in.o: In function `stk1160_ac97_register': (.text+0x12281b): undefined reference to `snd_ac97_mixer' drivers/built-in.o: In function `stk1160_ac97_register': (.text+0x122832): undefined reference to `snd_card_register' drivers/built-in.o: In function `stk1160_ac97_unregister': (.text+0x12285e): undefined reference to `snd_card_free' Reported-by: Randy Dunlap <rdunlap@infradead.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Comments
On 05/02/13 07:52, Mauro Carvalho Chehab wrote: > [media] stk1160: Make stk1160 module if SND is m and audio support is selected > > As reported by Randy: > > When CONFIG_SND=m and CONFIG_SND_AC97_CODEC=m and > CONFIG_VIDEO_STK1160=y > CONFIG_VIDEO_STK1160_AC97=y > > drivers/built-in.o: In function `stk1160_ac97_register': > (.text+0x122706): undefined reference to `snd_card_create' > drivers/built-in.o: In function `stk1160_ac97_register': > (.text+0x1227b2): undefined reference to `snd_ac97_bus' > drivers/built-in.o: In function `stk1160_ac97_register': > (.text+0x1227cd): undefined reference to `snd_card_free' > drivers/built-in.o: In function `stk1160_ac97_register': > (.text+0x12281b): undefined reference to `snd_ac97_mixer' > drivers/built-in.o: In function `stk1160_ac97_register': > (.text+0x122832): undefined reference to `snd_card_register' > drivers/built-in.o: In function `stk1160_ac97_unregister': > (.text+0x12285e): undefined reference to `snd_card_free' > > Reported-by: Randy Dunlap <rdunlap@infradead.org> > Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> Acked-by: Randy Dunlap <rdunlap@infradead.org> Thanks. > > diff --git a/drivers/media/usb/stk1160/Kconfig b/drivers/media/usb/stk1160/Kconfig > index 1c3a1ec..2bf6392 100644 > --- a/drivers/media/usb/stk1160/Kconfig > +++ b/drivers/media/usb/stk1160/Kconfig > @@ -1,8 +1,6 @@ > -config VIDEO_STK1160 > +config VIDEO_STK1160_COMMON > tristate "STK1160 USB video capture support" > depends on VIDEO_DEV && I2C > - select VIDEOBUF2_VMALLOC > - select VIDEO_SAA711X > > ---help--- > This is a video4linux driver for STK1160 based video capture devices. > @@ -12,9 +10,14 @@ config VIDEO_STK1160 > > config VIDEO_STK1160_AC97 > bool "STK1160 AC97 codec support" > - depends on VIDEO_STK1160 && SND > - select SND_AC97_CODEC > - > + depends on VIDEO_STK1160_COMMON && SND > ---help--- > Enables AC97 codec support for stk1160 driver. > -. > + > +config VIDEO_STK1160 > + tristate > + depends on (!VIDEO_STK1160_AC97 || (SND='n') || SND) && VIDEO_STK1160_COMMON > + default y > + select VIDEOBUF2_VMALLOC > + select VIDEO_SAA711X > + select SND_AC97_CODEC if SND > > > --
Hi Mauro, On Thu, May 02, 2013 at 11:52:33AM -0300, Mauro Carvalho Chehab wrote: > > > > is unreliable (doesn't do what some people expect) when SND=m and SND_AC97_CODEC=m, > > since VIDEO_STK1160_AC97 is a bool. > > Using select is always tricky. > > I can see a few possible fixes for it: > > 1) split the alsa part into a separate module. IMHO, this is cleaner, > but requires a little more work. > I'm trying to split the ac97 support into a separate module. So far I've managed to do this with two different approaches, but both of them are broken in some way :-( Couple questions: 1. Is it possible to force two symbols to be both built-in (=y) or both modules (=m)? This would make one of my solutions work. 2. Do you think it's possible to split this as a module *without* requesting the driver dynamically? I've tried the same extensions approach as in em28xx and others, but found some problems with the way snd-usb-audio driver registers. Thanks,
Ezequiel, All, On Sat, May 04, 2013 at 02:21:44PM -0300, Ezequiel Garcia wrote: > I'm trying to split the ac97 support into a separate module. > So far I've managed to do this with two different approaches, > but both of them are broken in some way :-( > > Couple questions: > > 1. Is it possible to force two symbols to be both built-in (=y) or both > modules (=m)? This would make one of my solutions work. If they are always the same value, there is no need to have two symbols in the first place. However, given the original problem from this thread, if what you meant was to have the second symbol either 'n' or the same as the first symbol, ie. the following table: A: n m m y y B: n n m n y Then the closest I came up with is: config MODULES bool "Modules" config A tristate "A" config B_dummy bool "B" depends on A config B tristate default m if A=m && B_dummy default y if A=y && B_dummy where B_dummy is not used outside of Kconfig, and only A and B are the symbols of interest (eg. to build the drivers). Otherwise, I was not able to get the desired behviour with only the A and B symbols. Regards, Yann E. MORIN.
On Sat, May 04, 2013 at 09:59:50PM +0200, Yann E. MORIN wrote: > Ezequiel, All, > > On Sat, May 04, 2013 at 02:21:44PM -0300, Ezequiel Garcia wrote: > > I'm trying to split the ac97 support into a separate module. > > So far I've managed to do this with two different approaches, > > but both of them are broken in some way :-( > > > > Couple questions: > > > > 1. Is it possible to force two symbols to be both built-in (=y) or both > > modules (=m)? This would make one of my solutions work. > > If they are always the same value, there is no need to have two symbols > in the first place. > > However, given the original problem from this thread, if what you meant > was to have the second symbol either 'n' or the same as the first symbol, > ie. the following table: > > A: n m m y y > B: n n m n y > > Then the closest I came up with is: > > config MODULES > bool "Modules" > > config A > tristate "A" > > config B_dummy > bool "B" > depends on A > > config B > tristate > default m if A=m && B_dummy > default y if A=y && B_dummy > > where B_dummy is not used outside of Kconfig, and only A and B are the > symbols of interest (eg. to build the drivers). > That worked like a charm! Thanks a lot,
diff --git a/drivers/media/usb/stk1160/Kconfig b/drivers/media/usb/stk1160/Kconfig index 1c3a1ec..2bf6392 100644 --- a/drivers/media/usb/stk1160/Kconfig +++ b/drivers/media/usb/stk1160/Kconfig @@ -1,8 +1,6 @@ -config VIDEO_STK1160 +config VIDEO_STK1160_COMMON tristate "STK1160 USB video capture support" depends on VIDEO_DEV && I2C - select VIDEOBUF2_VMALLOC - select VIDEO_SAA711X ---help--- This is a video4linux driver for STK1160 based video capture devices. @@ -12,9 +10,14 @@ config VIDEO_STK1160 config VIDEO_STK1160_AC97 bool "STK1160 AC97 codec support" - depends on VIDEO_STK1160 && SND - select SND_AC97_CODEC - + depends on VIDEO_STK1160_COMMON && SND ---help--- Enables AC97 codec support for stk1160 driver. -. + +config VIDEO_STK1160 + tristate + depends on (!VIDEO_STK1160_AC97 || (SND='n') || SND) && VIDEO_STK1160_COMMON + default y + select VIDEOBUF2_VMALLOC + select VIDEO_SAA711X + select SND_AC97_CODEC if SND