[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