All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
To: Jaroslav Kysela <perex@perex.cz>,
	ALSA development <alsa-devel@alsa-project.org>
Cc: Takashi Iwai <tiwai@suse.de>,
	Cezary Rojewski <cezary.rojewski@intel.com>
Subject: Re: [alsa-devel] [PATCH v2] ALSA: hda: add Intel DSP configuration / probe code
Date: Wed, 2 Oct 2019 12:06:39 -0500	[thread overview]
Message-ID: <30dad9e7-12ef-7796-59fd-171693611357@linux.intel.com> (raw)
In-Reply-To: <20191002164307.28642-1-perex@perex.cz>


> +module_param(dsp_driver, int, 0444);
> +MODULE_PARM_DESC(dsp_driver, "Force the DSP driver for Intel DSP (0=auto, 1=noDSP, 2=legacy, 3=SST, 4=SOF)");

remove noDSP?

> +
> +static const u16 sof_skl_table[] = {
> +#if IS_ENABLED(CONFIG_SND_SOC_SOF_COMETLAKE_LP)
> +	0x02c8,	/* Cometlake-LP */
> +#endif
> +#if IS_ENABLED(CONFIG_SND_SOC_SOF_COMETLAKE_H)
> +	0x06c8,	/* Cometlake-H */
> +#endif
> +#if IS_ENABLED(CONFIG_SND_SOC_SOF_GEMINILAKE)
> +	0x3198,	/* Geminilake */
> +#endif
> +#if IS_ENABLED(CONFIG_SND_SOC_SOF_CANNONLAKE)
> +	0x9dc8, /* Cannonlake */
> +#endif
> +#if IS_ENABLED(CONFIG_SND_SOC_SOF_COFFEELAKE)
> +	0xa348, /* Coffelake */
> +#endif

I am lost here, is this to handle the cases between legacy and SOF? If 
yes, we need to add all PCI IDs after gemini lake.

> +};
> +
> +static int snd_intel_dsp_check_device(u16 device, const u16 *table, u32 len)
> +{
> +	for (; len > 0; len--, table++) {
> +		if (*table == device)
> +			return 1;
> +	}
> +	return 0;
> +}
> +
> +static int snd_intel_dsp_check_dmic(struct pci_dev *pci)
> +{
> +	struct nhlt_acpi_table *nhlt;
> +	int ret = 0;
> +
> +	if (snd_intel_dsp_check_device(pci->device, sof_skl_table, ARRAY_SIZE(sof_skl_table))) {
> +		nhlt = intel_nhlt_init(&pci->dev);
> +		if (nhlt) {
> +			if (intel_nhlt_get_dmic_geo(&pci->dev, nhlt))
> +				ret = 1;
> +			intel_nhlt_free(nhlt);
> +		}
> +	}
> +	return ret;
> +}
> +
> +int snd_intel_dsp_driver_probe(struct pci_dev *pci)
> +{
> +	if (dsp_driver > 0 && dsp_driver <= SND_INTEL_DSP_DRIVER_LAST)
> +		return dsp_driver;
> +
> +	/* Intel vendor only */
> +	if (snd_BUG_ON(pci->vendor != 0x8086))
> +		return SND_INTEL_DSP_DRIVER_ANY;
> +
> +	/*
> +	 * detect DSP by checking class/subclass/prog-id information
> +	 * class=04 subclass 03 prog-if 00: no DSP, use legacy driver
> +	 * class=04 subclass 01 prog-if 00: DSP is present
> +	 *  (and may be required e.g. for DMIC or SSP support)
> +	 * class=04 subclass 03 prog-if 80: use DSP or legacy mode
> +	 */
> +	if (pci->class == 0x040300)
> +		return SND_INTEL_DSP_DRIVER_LEGACY;
> +	if (pci->class != 0x040100 && pci->class != 0x040380) {
> +		dev_err(&pci->dev, "Unknown PCI class/subclass/prog-if information (0x%06x) found, selecting HDA legacy driver\n", pci->class);
> +		return SND_INTEL_DSP_DRIVER_LEGACY;
> +	}
> +
> +	dev_info(&pci->dev, "DSP detected with PCI class/subclass/prog-if info 0x%06x\n", pci->class);
> +
> +	/* Prefer SST driver for Broxton-P (Appololake) */
> +#if IS_ENABLED(CONFIG_SND_SOC_INTEL_APL) || IS_ENABLED(CONFIG_SND_SOC_SOF_APOLLOLAKE)
> +	if (pci->device == 0x5a98)
> +#if IS_ENABLED(CONFIG_SND_SOC_INTEL_APL)
> +		return SND_INTEL_DSP_DRIVER_SST;
> +#else
> +		return SND_INTEL_DSP_DRIVER_SOF;
> +#endif
> +#endif

This should be done with quirks, where we select SST for Chromebooks for 
APL, SKL, KBL.

Using the PCI ID + class only will break at least one device, I remotely 
debugged Hans de Goede's APL platform and saw the same issues with HDMI 
probe as on Linus' laptop.

I am running out of time for this week, so will check updates next week.

> +
> +	/* DMIC check for Skylake+ */
> +	if (snd_intel_dsp_check_dmic(pci)) {
> +		dev_info(&pci->dev, "Digital mics found on Skylake+ platform, using SOF driver\n");
> +		return SND_INTEL_DSP_DRIVER_SOF;
> +	}
> +
> +	return SND_INTEL_DSP_DRIVER_ANY;
> +}
> +
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel

  reply	other threads:[~2019-10-02 17:07 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-02 16:43 [alsa-devel] [PATCH v2] ALSA: hda: add Intel DSP configuration / probe code Jaroslav Kysela
2019-10-02 17:06 ` Pierre-Louis Bossart [this message]
2019-10-06 15:25   ` Jaroslav Kysela

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=30dad9e7-12ef-7796-59fd-171693611357@linux.intel.com \
    --to=pierre-louis.bossart@linux.intel.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=cezary.rojewski@intel.com \
    --cc=perex@perex.cz \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.