From: Randy Dunlap <randy.dunlap@oracle.com>
To: Nicolas Pitre <nico@cam.org>
Cc: Dmitry Torokhov <dtor@insightbb.com>,
lkml <linux-kernel@vger.kernel.org>, akpm <akpm@osdl.org>,
linux-next@vger.kernel.org
Subject: Re: [PATCH] ucb1400_ts depends SND_AC97_BUS
Date: Thu, 4 Sep 2008 19:57:44 -0700 [thread overview]
Message-ID: <20080904195744.f367cd2d.randy.dunlap@oracle.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0612102244140.2630@xanadu.home>
On Sun, 10 Dec 2006 22:55:25 -0500 (EST) Nicolas Pitre wrote:
> On Sat, 9 Dec 2006, Randy Dunlap wrote:
>
> > On Sat, 09 Dec 2006 22:17:55 -0500 (EST) Nicolas Pitre wrote:
> >
> > > Please consider what SND_CONFIG_AC97_BUS corresponds to. It is
> > > sound/pci/ac97/ac97_bus.c and if you look into this file you'll see that
> > > it is perfectly buildable even if sound is entirely configured out, just
> > > like some lib code would be.
> >
> > OK. Should it (CONFIG_SND_AC97_BUS -> sound/pci/ac97/ac97_bus.c)
> > be buildable when sound is disabled?
>
> Yes.
>
> > If so, where should it be moved to (since afaik, make won't even
> > descend into sound/ if SOUND=n; I don't see that changing
> > any time soon).
>
> What about this patch?
Can we get this patch or some patch into the input tree for linux-next?
Currently ucb1400_core using ac97_bus_type is the #1 build failure in linux-next.
In 50 randconfigs today, this was the failure in 20 builds.
> ----- >8
> Subject: break config ordering/dependency between UCB1400 touchscreen driver and sound subsystem
>
> Commit 2d4ba4a3b9aef95d328d74a17ae84f8d658059e2 introduced a dependency
> that was never meant to exist when the ac97_bus.c module was created.
> Move ac97_bus.c up the directory hierarchy to make sure it is built when
> selected even if sound is configured out so things work as originally
> expected.
>
> Signed-off-by: Nicolas Pitre <nico@cam.org>
>
> ---
>
> diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
> index 3d5f196..6b46c9b 100644
> --- a/drivers/input/touchscreen/Kconfig
> +++ b/drivers/input/touchscreen/Kconfig
> @@ -146,7 +146,7 @@ config TOUCHSCREEN_TOUCHWIN
>
> config TOUCHSCREEN_UCB1400
> tristate "Philips UCB1400 touchscreen"
> - depends on SND_AC97_BUS
> + select AC97_BUS
> help
> This enables support for the Philips UCB1400 touchscreen interface.
> The UCB1400 is an AC97 audio codec. The touchscreen interface
> diff --git a/sound/Kconfig b/sound/Kconfig
> index 95949b6..9d77300 100644
> --- a/sound/Kconfig
> +++ b/sound/Kconfig
> @@ -93,4 +93,12 @@ endmenu
>
> endif
>
> +config AC97_BUS
> + tristate
> + help
> + This is used to avoid config and link hard dependencies between the
> + sound subsystem and other function drivers completely unrelated to
> + sound although they're sharing the AC97 bus. Concerned drivers
> + should "select" this.
> +
> endmenu
> diff --git a/sound/Makefile b/sound/Makefile
> index 5f6bef5..9aee54c 100644
> --- a/sound/Makefile
> +++ b/sound/Makefile
> @@ -8,6 +8,9 @@ obj-$(CONFIG_DMASOUND) += oss/
> obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/ mips/
> obj-$(CONFIG_SND_AOA) += aoa/
>
> +# This one must be compilable even if sound is configured out
> +obj-$(CONFIG_AC97_BUS) += ac97_bus.o
> +
> ifeq ($(CONFIG_SND),y)
> obj-y += last.o
> endif
> diff --git a/sound/ac97_bus.c b/sound/ac97_bus.c
> new file mode 100644
> index 0000000..66de2c2
> --- /dev/null
> +++ b/sound/ac97_bus.c
> @@ -0,0 +1,72 @@
> +/*
> + * Linux driver model AC97 bus interface
> + *
> + * Author: Nicolas Pitre
> + * Created: Jan 14, 2005
> + * Copyright: (C) MontaVista Software Inc.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + */
> +
> +#include <linux/module.h>
> +#include <linux/init.h>
> +#include <linux/device.h>
> +#include <linux/string.h>
> +
> +/*
> + * Let drivers decide whether they want to support given codec from their
> + * probe method. Drivers have direct access to the struct snd_ac97 structure and may
> + * decide based on the id field amongst other things.
> + */
> +static int ac97_bus_match(struct device *dev, struct device_driver *drv)
> +{
> + return 1;
> +}
> +
> +static int ac97_bus_suspend(struct device *dev, pm_message_t state)
> +{
> + int ret = 0;
> +
> + if (dev->driver && dev->driver->suspend)
> + ret = dev->driver->suspend(dev, state);
> +
> + return ret;
> +}
> +
> +static int ac97_bus_resume(struct device *dev)
> +{
> + int ret = 0;
> +
> + if (dev->driver && dev->driver->resume)
> + ret = dev->driver->resume(dev);
> +
> + return ret;
> +}
> +
> +struct bus_type ac97_bus_type = {
> + .name = "ac97",
> + .match = ac97_bus_match,
> + .suspend = ac97_bus_suspend,
> + .resume = ac97_bus_resume,
> +};
> +
> +static int __init ac97_bus_init(void)
> +{
> + return bus_register(&ac97_bus_type);
> +}
> +
> +subsys_initcall(ac97_bus_init);
> +
> +static void __exit ac97_bus_exit(void)
> +{
> + bus_unregister(&ac97_bus_type);
> +}
> +
> +module_exit(ac97_bus_exit);
> +
> +EXPORT_SYMBOL(ac97_bus_type);
> +
> +MODULE_LICENSE("GPL");
> diff --git a/sound/drivers/Kconfig b/sound/drivers/Kconfig
> index 7971285..40ebd2f 100644
> --- a/sound/drivers/Kconfig
> +++ b/sound/drivers/Kconfig
> @@ -26,11 +26,7 @@ config SND_VX_LIB
> config SND_AC97_CODEC
> tristate
> select SND_PCM
> - select SND_AC97_BUS
> -
> -config SND_AC97_BUS
> - tristate
> -
> + select AC97_BUS
>
> config SND_DUMMY
> tristate "Dummy (/dev/null) soundcard"
> diff --git a/sound/pci/ac97/Makefile b/sound/pci/ac97/Makefile
> index 77b3482..3c32221 100644
> --- a/sound/pci/ac97/Makefile
> +++ b/sound/pci/ac97/Makefile
> @@ -10,11 +10,9 @@ snd-ac97-codec-objs += ac97_proc.o
> endif
>
> snd-ak4531-codec-objs := ak4531_codec.o
> -snd-ac97-bus-objs := ac97_bus.o
>
> # Toplevel Module Dependency
> obj-$(CONFIG_SND_AC97_CODEC) += snd-ac97-codec.o
> obj-$(CONFIG_SND_ENS1370) += snd-ak4531-codec.o
> -obj-$(CONFIG_SND_AC97_BUS) += snd-ac97-bus.o
>
> obj-m := $(sort $(obj-m))
> diff --git a/sound/pci/ac97/ac97_bus.c b/sound/pci/ac97/ac97_bus.c
> deleted file mode 100644
> index 66de2c2..0000000
> --- a/sound/pci/ac97/ac97_bus.c
> +++ /dev/null
> @@ -1,72 +0,0 @@
> -/*
> - * Linux driver model AC97 bus interface
> - *
> - * Author: Nicolas Pitre
> - * Created: Jan 14, 2005
> - * Copyright: (C) MontaVista Software Inc.
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License as published by
> - * the Free Software Foundation; either version 2 of the License, or
> - * (at your option) any later version.
> - */
> -
> -#include <linux/module.h>
> -#include <linux/init.h>
> -#include <linux/device.h>
> -#include <linux/string.h>
> -
> -/*
> - * Let drivers decide whether they want to support given codec from their
> - * probe method. Drivers have direct access to the struct snd_ac97 structure and may
> - * decide based on the id field amongst other things.
> - */
> -static int ac97_bus_match(struct device *dev, struct device_driver *drv)
> -{
> - return 1;
> -}
> -
> -static int ac97_bus_suspend(struct device *dev, pm_message_t state)
> -{
> - int ret = 0;
> -
> - if (dev->driver && dev->driver->suspend)
> - ret = dev->driver->suspend(dev, state);
> -
> - return ret;
> -}
> -
> -static int ac97_bus_resume(struct device *dev)
> -{
> - int ret = 0;
> -
> - if (dev->driver && dev->driver->resume)
> - ret = dev->driver->resume(dev);
> -
> - return ret;
> -}
> -
> -struct bus_type ac97_bus_type = {
> - .name = "ac97",
> - .match = ac97_bus_match,
> - .suspend = ac97_bus_suspend,
> - .resume = ac97_bus_resume,
> -};
> -
> -static int __init ac97_bus_init(void)
> -{
> - return bus_register(&ac97_bus_type);
> -}
> -
> -subsys_initcall(ac97_bus_init);
> -
> -static void __exit ac97_bus_exit(void)
> -{
> - bus_unregister(&ac97_bus_type);
> -}
> -
> -module_exit(ac97_bus_exit);
> -
> -EXPORT_SYMBOL(ac97_bus_type);
> -
> -MODULE_LICENSE("GPL");
> -
---
~Randy
Linux Plumbers Conference, 17-19 September 2008, Portland, Oregon USA
http://linuxplumbersconf.org/
next prev parent reply other threads:[~2008-09-05 2:58 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-09 8:36 [PATCH] ucb1400_ts depends SND_AC97_BUS Randy Dunlap
2006-12-10 2:50 ` Dmitry Torokhov
2006-12-10 2:57 ` Randy Dunlap
2006-12-10 3:05 ` Dmitry Torokhov
2006-12-10 3:17 ` Nicolas Pitre
2006-12-10 5:09 ` Randy Dunlap
2006-12-11 3:55 ` Nicolas Pitre
2006-12-11 4:45 ` Randy Dunlap
2008-09-05 2:57 ` Randy Dunlap [this message]
2008-09-05 4:37 ` Nicolas Pitre
2008-09-05 4:44 ` Randy Dunlap
2008-09-05 5:09 ` Nicolas Pitre
2008-09-05 6:46 ` Takashi Iwai
2008-09-05 14:52 ` Nicolas Pitre
2008-09-05 16:26 ` Takashi Iwai
2008-09-05 16:32 ` Nicolas Pitre
2008-09-05 17:17 ` Takashi Iwai
2008-09-05 18:33 ` Dmitry Torokhov
2008-09-06 9:54 ` Takashi Iwai
2008-09-05 21:09 ` Randy Dunlap
2008-09-06 9:53 ` Takashi Iwai
2008-09-05 5:27 ` Nicolas Pitre
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080904195744.f367cd2d.randy.dunlap@oracle.com \
--to=randy.dunlap@oracle.com \
--cc=akpm@osdl.org \
--cc=dtor@insightbb.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-next@vger.kernel.org \
--cc=nico@cam.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.