[alsa-devel] [PATCH 0/2] Introduce dmic mode switch delay parameter

Tc, Jenny jenny.tc at intel.com
Tue Oct 23 19:11:57 CEST 2018


> Allowing some timing adjustments for the clock transitions is a good 
> thing. The way it's done is questionable and raises a number of concerns.
>
> First, there was an Intel internal discussion before my extended break 
> on why this 'dmic-codec' is needed on Intel platforms. To the best of 
> my knowledge we don't control the mics with GPIOs, which was the 
> initial purpose of this driver. We have experimental evidence on 
> ApolloLake and GeminiLake that using the soc-dummy/soc-dummy-dai 
> definitions are enough, and it may be a good thing to agree on the 
> direction here. If you want a parameter, you can still use a machine 
> driver DMI-based kernel quirk and/or pass a kernel parameter, the need 
> to extend this dmic-codec is far from obvious to me.

The driver already exposes another parameter (wakeup-delay-ms) using device tree. 
Enabling ACPI device enumeration provides a way to pass existing parameter
and also cover the new parameter(modeswitch_delay_ms) introduced in this patch set.
Isn't it good to adopt ACPI enumeration if the driver has multiple parameters to handle?
 
> Assuming you still want to use this codec, then there are still major 
> concerns about the ACPI directions. As Mark noted it, "DMIC" does not 
> follow any of the guidelines or accepted definitions with an 
> unambiguous vendor and part ID. We know we already have conflicts 
> between Intel-defined ACPI IDs, e.g. for RT298 on multiple platforms, 
> let's be careful here, shall we?

Agree, need to find proper ACPI ID for the device.
 
>
> And I am coming to my last point. The Skylake driver already contains 
> code to create the dmic devices by hand (see below the git grep 
> results). So I wonder what happens if you use both ACPI-based 
> enumeration AND manually create the dmic device - I view these 
> solutions as mutually incompatible. Either you have not tested against 
> the upstream code or something is missing from your patchset. What am 
> I missing?

Skl driver already registers a DMIC (dmic-codec) device and with ACPI enumeration
one more device (DMIC:00) gets registered. The snd_soc_dai_link  structure populated
in the machine driver decides which codec device to be used in the capture path and 
there by handles the compatibility issue you pointed out. 
 

>I forgot to add another open on ACPI support: what would be the scope of the "DMIC" device? 
>With ACPI we typically have a parent-child relationship, e.g. we put audio codec below the relevant
>I2C/SPI controller in the DSDT definitions. In the absence of a DMIC bus, you need to be careful how
>the DMIC device is added in the DSDT - it'd likely need to be below the scope of the HDaudio controller.

In DSDT, the device is added under the Intel HDA (1f.3 for SKL/KBL) parent device.

-Jenny


More information about the Alsa-devel mailing list