[alsa-devel] [PATCH 6/6] ALSA: hda/intel: stop probe if DMICS are detected on Skylake+ platforms

Takashi Iwai tiwai at suse.de
Fri Jul 19 20:55:30 CEST 2019


On Fri, 19 Jul 2019 20:29:10 +0200,
Pierre-Louis Bossart wrote:
> 
> 
> >> @@ -2055,6 +2078,17 @@ static int azx_probe(struct pci_dev *pci,
> >>   	card->private_data = chip;
> >>   	hda = container_of(chip, struct hda_intel, chip);
> >>   +	/*
> >> +	 * stop probe if digital microphones detected on Skylake+ platform
> >> +	 * with the DSP enabled. This is an opt-in behavior defined at build
> >> +	 * time or at run-time with a module parameter
> >> +	 */
> >> +	if (IS_ENABLED(CONFIG_SND_HDA_INTEL_DETECT_DMIC) || dmic_detect >= 0) {
> >
> > Isn't it "dmic_detect != 0" ?  Otherwise passing dmic_detect=0 would
> > be treated as positive here.
> 
> Ah, good catch. I literally copied the enable_msi example here, which
> relies on >= 0.
> 
> 	if (enable_msi >= 0) {
> 		chip->msi = !!enable_msi;
> 		return;
> 	}
> 
> Not sure what the intention was here.

The MSI-enablement depends on the platform.  enable_msi >=0 means that
user passed module option explicitly so we follow that.  Otherwise,
let the system chooses whether to enable MSI or not.

> Using dmic_detect != 0 wouldn't work for the default -1 value,
> maybe dmic_detect > 0 is probably a better solution?

In your case, the logic doesn't look like the dynamically platform
dependent, so it should be simpler as below:

static bool dmic_detect = IS_ENABLED(CONFIG_SND_HDA_INTEL_DETECT_DMIC);
module_param(dmic_detect, bool, 0444);

and evaluate it

	if (dmic_detect) {
		ret = azx_check_dmic();
		....
		
That is, if Kconfig is set, it's per default enabled, but user can
still turn it off via option.  Otherwise user needs to enable it via
option.


Takashi


More information about the Alsa-devel mailing list