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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





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?
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux