[alsa-devel] [PATCH] sound/pci/hda: depends on instead of select for INPUT

Takashi Iwai tiwai at suse.de
Mon Jan 15 10:50:18 CET 2018


On Mon, 15 Jan 2018 08:50:17 +0100,
Takashi Iwai wrote:
> 
> On Mon, 15 Jan 2018 06:11:56 +0100,
> Randy Dunlap wrote:
> > 
> > From: Randy Dunlap <rdunlap at infradead.org>
> > 
> > Drivers should not 'select' a subsystem. Instead they should depend
> > on it. If the subsystem is disabled, the user probably did that for
> > a purpose and one driver shouldn't be changing that.
> > 
> > This also makes all sound/ drivers consistent w.r.t depending on INPUT
> > instead of selecting it.
> > 
> > Signed-off-by: Randy Dunlap <rdunlap at infradead.org>
> > Cc: Jaroslav Kysela <perex at perex.cz>
> > Cc: Takashi Iwai <tiwai at suse.com>
> > Cc: alsa-devel at alsa-project.org (moderated for non-subscribers)
> > ---
> >  sound/pci/hda/Kconfig |    2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > --- lnx-415-rc8.orig/sound/pci/hda/Kconfig
> > +++ lnx-415-rc8/sound/pci/hda/Kconfig
> > @@ -87,8 +87,8 @@ config SND_HDA_PATCH_LOADER
> >  
> >  config SND_HDA_CODEC_REALTEK
> >  	tristate "Build Realtek HD-audio codec support"
> > +	depends on INPUT
> >  	select SND_HDA_GENERIC
> > -	select INPUT
> 
> This would break if INPUT=m and SND_HDA_CODEC_REALTEK=y.
> Usually, we take a trick like
> 
> 	depends on INPUT=y || INPUT=SND_HDA_CODEC_REALTEK
> 
> But, looking at the change that introduced the dependency (commit
> 33f4acd3b214), the code doesn't necessarily depend on INPUT at all.
> The select above was put there just because the random build with
> INPUT=m and SND_HDA_CODEC_REALTEK=y would break otherwise.
> 
> The right fix in this case would be to replace IS_ENABLE(INPUT) with
> IS_REACHABLE(INPUT) instead.

... that is, a patch like below.


Takashi

-- 8< --
From: Takashi Iwai <tiwai at suse.de>
Subject: [PATCH] ALSA: hda - Use IS_REACHABLE() for dependency on input

The commit ffcd28d88e4f ("ALSA: hda - Select INPUT for Realtek
HD-audio codec") introduced the reverse-selection of CONFIG_INPUT for
Realtek codec in order to avoid the mess with dependency between
built-in and modules.  Later on, we obtained IS_REACHABLE() macro
exactly for this kind of problems, and now we can remove th INPUT
selection in Kconfig and put IS_REACHABLE(INPUT) to the appropriate
places in the code, so that the driver doesn't need to select other
subsystem forcibly.

Fixes: ffcd28d88e4f ("ALSA: hda - Select INPUT for Realtek HD-audio codec")
Reported-by: Randy Dunlap <rdunlap at infradead.org>
Signed-off-by: Takashi Iwai <tiwai at suse.de>
---
 sound/pci/hda/Kconfig         | 1 -
 sound/pci/hda/patch_realtek.c | 5 +++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/sound/pci/hda/Kconfig b/sound/pci/hda/Kconfig
index 7f3b5ed81995..f7a492c382d9 100644
--- a/sound/pci/hda/Kconfig
+++ b/sound/pci/hda/Kconfig
@@ -88,7 +88,6 @@ config SND_HDA_PATCH_LOADER
 config SND_HDA_CODEC_REALTEK
 	tristate "Build Realtek HD-audio codec support"
 	select SND_HDA_GENERIC
-	select INPUT
 	help
 	  Say Y or M here to include Realtek HD-audio codec support in
 	  snd-hda-intel driver, such as ALC880.
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 440972975bd4..9a98c53e0124 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -3810,6 +3810,7 @@ static void alc280_fixup_hp_gpio4(struct hda_codec *codec,
 	}
 }
 
+#if IS_REACHABLE(INPUT)
 static void gpio2_mic_hotkey_event(struct hda_codec *codec,
 				   struct hda_jack_callback *event)
 {
@@ -3942,6 +3943,10 @@ static void alc233_fixup_lenovo_line2_mic_hotkey(struct hda_codec *codec,
 		spec->kb_dev = NULL;
 	}
 }
+#else /* INPUT */
+#define alc280_fixup_hp_gpio2_mic_hotkey	NULL
+#define alc233_fixup_lenovo_line2_mic_hotkey	NULL
+#endif /* INPUT */
 
 static void alc269_fixup_hp_line1_mic1_led(struct hda_codec *codec,
 				const struct hda_fixup *fix, int action)
-- 
2.15.1



More information about the Alsa-devel mailing list