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

Pierre-Louis Bossart pierre-louis.bossart at linux.intel.com
Fri Jul 19 22:21:19 CEST 2019


On 7/19/19 1:55 PM, Takashi Iwai wrote:
> 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.

Makes sense, thanks for the feedback. Will send a v2 shortly.
Have a nice week-end.




More information about the Alsa-devel mailing list