[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 20:29:10 CEST 2019
On 7/19/19 1:13 PM, Takashi Iwai wrote:
> On Fri, 19 Jul 2019 19:06:10 +0200,
> Pierre-Louis Bossart wrote:
>>
>> +static int azx_check_dmic(struct pci_dev *pci, struct azx *chip)
>> +{
>> + struct nhlt_acpi_table *nhlt;
>> + int ret = 0;
>> +
>> + if (chip->driver_type == AZX_DRIVER_SKL &&
>> + pci->class != 0x040300) {
>> + nhlt = intel_nhlt_init(&pci->dev);
>> + if (nhlt) {
>> + if (intel_nhlt_get_dmic_geo(&pci->dev, nhlt)) {
>> + ret = -ENODEV;
>> + dev_dbg(&pci->dev, "Digital mics found on Skylake+ platform, aborting probe\n");
>
> IMO, this can be verbose, dev_info() would be suitable.
> Otherwise user has no idea why the module load is skipped.
sure, will do.
>
>
>> @@ -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.
Using dmic_detect != 0 wouldn't work for the default -1 value,
maybe dmic_detect > 0 is probably a better solution?
More information about the Alsa-devel
mailing list