diff mbox series

ucm2: hdadsp: add basic ucm config

Message ID 20200306113031.713-1-mateusz.gorski@linux.intel.com (mailing list archive)
State New, archived
Headers show
Series ucm2: hdadsp: add basic ucm config | expand

Commit Message

Gorski, Mateusz March 6, 2020, 11:30 a.m. UTC
Basic UCM configuration for HDA DSP generic enabling codec playback and
capture on both HDA codec and DMIC ports.

Signed-off-by: Mateusz Gorski <mateusz.gorski@linux.intel.com>
---
 ucm2/hdadsp/hdadsp.conf | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
 create mode 100644 ucm2/hdadsp/hdadsp.conf

Comments

Jaroslav Kysela March 9, 2020, 1:01 p.m. UTC | #1
Dne 06. 03. 20 v 12:30 Mateusz Gorski napsal(a):
> Basic UCM configuration for HDA DSP generic enabling codec playback and
> capture on both HDA codec and DMIC ports.

Could you describe for what Linux driver (source code) is this configuration?

> 
> Signed-off-by: Mateusz Gorski <mateusz.gorski@linux.intel.com>
> ---
>   ucm2/hdadsp/hdadsp.conf | 16 ++++++++++++++++
>   1 file changed, 16 insertions(+)
>   create mode 100644 ucm2/hdadsp/hdadsp.conf
> 
> diff --git a/ucm2/hdadsp/hdadsp.conf b/ucm2/hdadsp/hdadsp.conf
> new file mode 100644
> index 0000000..4e98545
> --- /dev/null
> +++ b/ucm2/hdadsp/hdadsp.conf
> @@ -0,0 +1,16 @@
> +# UCM for Intel CAVS platforms
> +# For Audio in HDA and DMIC mode
> +
> +ValueDefaults {
> +	PlaybackChannels "2"
> +	PlaybackPriority "1"
> +	CaptureChannels "2"
> +	CapturePriority "2"
> +}

Remove PlaybackChannel and Priority defaults. The priorities should be defined 
in the device section.

> +
> +SectionDefaults [
> +	cdev "hw:hdadsp"

It should be "hw:${CardId}" for ucm2.

> +	cset "name='codec0_out mo media0_in mi Switch' 1"
> +	cset "name='media0_out mo codec0_in mi Switch' 1"
> +	cset "name='mch_cap_out mo mch_cap_in mi Switch' 1"
> +]

This file does not define any devices. Does pulseaudio work with this 
configuration?

						Jaroslav
Gorski, Mateusz March 13, 2020, 10:59 a.m. UTC | #2
>> Basic UCM configuration for HDA DSP generic enabling codec playback and
>> capture on both HDA codec and DMIC ports.
>
> Could you describe for what Linux driver (source code) is this 
> configuration?


This file is for Intel Skylake SST driver. Information added in v2.


>> +ValueDefaults {
>> +    PlaybackChannels "2"
>> +    PlaybackPriority "1"
>> +    CaptureChannels "2"
>> +    CapturePriority "2"
>> +}
>
> Remove PlaybackChannel and Priority defaults. The priorities should be 
> defined in the device section.


Thanks, moved to device section in v2.


>> +
>> +SectionDefaults [
>> +    cdev "hw:hdadsp"
>
> It should be "hw:${CardId}" for ucm2.


Thanks, applied in v2.


>> +    cset "name='codec0_out mo media0_in mi Switch' 1"
>> +    cset "name='media0_out mo codec0_in mi Switch' 1"
>> +    cset "name='mch_cap_out mo mch_cap_in mi Switch' 1"
>> +]
>
> This file does not define any devices. Does pulseaudio work with this 
> configuration?


Devices added in v2. Regarding pulseaudio - are there any guidelines on 
how to test UCM files with it? These UCM files were writted mainly based 
on existing ones for other cards. Of course basic tests were made.


Thanks,
Mateusz
Jaroslav Kysela March 13, 2020, 11:14 a.m. UTC | #3
Dne 13. 03. 20 v 11:59 Gorski, Mateusz napsal(a):
> 
>>> Basic UCM configuration for HDA DSP generic enabling codec playback and
>>> capture on both HDA codec and DMIC ports.
>>
>> Could you describe for what Linux driver (source code) is this
>> configuration?
> 
> 
> This file is for Intel Skylake SST driver. Information added in v2.

Ok, do we have this code in the vanilla linux kernel? Which .c file? The 
driver name 'hdadsp' looks suspicious. We usually have a delimiter in the 
driver name (like sof-hda-dsp).

>>> +ValueDefaults {
>>> +    PlaybackChannels "2"
>>> +    PlaybackPriority "1"
>>> +    CaptureChannels "2"
>>> +    CapturePriority "2"
>>> +}
>>
>> Remove PlaybackChannel and Priority defaults. The priorities should be
>> defined in the device section.

I will check...

> 
> 
> Thanks, moved to device section in v2.
> 
> 
>>> +
>>> +SectionDefaults [
>>> +    cdev "hw:hdadsp"
>>
>> It should be "hw:${CardId}" for ucm2.
> 
> 
> Thanks, applied in v2.
> 
> 
>>> +    cset "name='codec0_out mo media0_in mi Switch' 1"
>>> +    cset "name='media0_out mo codec0_in mi Switch' 1"
>>> +    cset "name='mch_cap_out mo mch_cap_in mi Switch' 1"
>>> +]
>>
>> This file does not define any devices. Does pulseaudio work with this
>> configuration?
> 
> 
> Devices added in v2. Regarding pulseaudio - are there any guidelines on
> how to test UCM files with it? These UCM files were writted mainly based
> on existing ones for other cards. Of course basic tests were made.

I wrote an ucm validator:

https://github.com/alsa-project/alsa-tests/tree/master/python/ucm-validator

Just type 'make' in the ucm-validator directory, the alsa-info.sh output 
should be added to the configs subtree.

The PA should be used latest from gitlab with the volume control and HDMI support.

					Jaroslav

> 
> 
> Thanks,
> Mateusz
>
Gorski, Mateusz March 17, 2020, 11:45 a.m. UTC | #4
>>>> Basic UCM configuration for HDA DSP generic enabling codec playback 
>>>> and
>>>> capture on both HDA codec and DMIC ports.
>>>
>>> Could you describe for what Linux driver (source code) is this
>>> configuration?
>>
>>
>> This file is for Intel Skylake SST driver. Information added in v2.
>
> Ok, do we have this code in the vanilla linux kernel? Which .c file? 
> The driver name 'hdadsp' looks suspicious. We usually have a delimiter 
> in the driver name (like sof-hda-dsp).


Yes, it is a part of Skylake driver, "hdadsp" is the name of sound card 
created on machine when using HDA generic machine driver. This machine 
driver is made of 2 .c files:

     - skl_hda_dsp_common.c
     - skl_hda_dsp_generic.c

both are located in: sound/soc/intel/boards/

Example on production laptop:

test@test-Swift-SF515-51T:/proc/asound$ cat cards
  0 [hdadsp         ]: hda-dsp - hda-dsp
                       WL-SwiftSF515_51T-V1.02-Guinness_WL

>
>>>> +ValueDefaults {
>>>> +    PlaybackChannels "2"
>>>> +    PlaybackPriority "1"
>>>> +    CaptureChannels "2"
>>>> +    CapturePriority "2"
>>>> +}
>>>
>>> Remove PlaybackChannel and Priority defaults. The priorities should be
>>> defined in the device section.
>
> I will check...
>
>>
>>
>> Thanks, moved to device section in v2.
>>
>>
>>>> +
>>>> +SectionDefaults [
>>>> +    cdev "hw:hdadsp"
>>>
>>> It should be "hw:${CardId}" for ucm2.
>>
>>
>> Thanks, applied in v2.
>>
>>
>>>> +    cset "name='codec0_out mo media0_in mi Switch' 1"
>>>> +    cset "name='media0_out mo codec0_in mi Switch' 1"
>>>> +    cset "name='mch_cap_out mo mch_cap_in mi Switch' 1"
>>>> +]
>>>
>>> This file does not define any devices. Does pulseaudio work with this
>>> configuration?
>>
>>
>> Devices added in v2. Regarding pulseaudio - are there any guidelines on
>> how to test UCM files with it? These UCM files were writted mainly based
>> on existing ones for other cards. Of course basic tests were made.
>
> I wrote an ucm validator:
>
> https://github.com/alsa-project/alsa-tests/tree/master/python/ucm-validator 
>
>
> Just type 'make' in the ucm-validator directory, the alsa-info.sh 
> output should be added to the configs subtree.
>
> The PA should be used latest from gitlab with the volume control and 
> HDMI support.
>
>                     Jaroslav


Thanks, used the validator on PATCH v2, it pointed out one more thing to 
be corrected. One thing that I've noticed - there are some problems when 
validating "included" files, for example:

<skylake-rt286/Hdmi1.conf>
<skylake-rt286/Hdmi2.conf>

raise "aconfig.AlsaConfigError: unable to load config" error

Mateusz
Jaroslav Kysela March 17, 2020, 1:23 p.m. UTC | #5
Dne 17. 03. 20 v 12:45 Gorski, Mateusz napsal(a):
> 
>>>>> Basic UCM configuration for HDA DSP generic enabling codec playback
>>>>> and
>>>>> capture on both HDA codec and DMIC ports.
>>>>
>>>> Could you describe for what Linux driver (source code) is this
>>>> configuration?
>>>
>>>
>>> This file is for Intel Skylake SST driver. Information added in v2.
>>
>> Ok, do we have this code in the vanilla linux kernel? Which .c file?
>> The driver name 'hdadsp' looks suspicious. We usually have a delimiter
>> in the driver name (like sof-hda-dsp).
> 
> 
> Yes, it is a part of Skylake driver, "hdadsp" is the name of sound card
> created on machine when using HDA generic machine driver. This machine
> driver is made of 2 .c files:
> 
>       - skl_hda_dsp_common.c
>       - skl_hda_dsp_generic.c
> 
> both are located in: sound/soc/intel/boards/
> 
> Example on production laptop:
> 
> test@test-Swift-SF515-51T:/proc/asound$ cat cards
>    0 [hdadsp         ]: hda-dsp - hda-dsp
>                         WL-SwiftSF515_51T-V1.02-Guinness_WL

Ok, I see now. The 'hdadsp' is the user configurable card identification 
(alias to the card number) not the driver name. The UCM should be in 'hda-dsp' 
directory. If the UCM validator works for you, it should be corrected.

Could you point me to the alsa-info.sh output for this hardware?

			Thank you,
				Jaroslav
Gorski, Mateusz March 18, 2020, 10:25 a.m. UTC | #6
>>>>>> Basic UCM configuration for HDA DSP generic enabling codec playback
>>>>>> and
>>>>>> capture on both HDA codec and DMIC ports.
>>>>>
>>>>> Could you describe for what Linux driver (source code) is this
>>>>> configuration?
>>>>
>>>>
>>>> This file is for Intel Skylake SST driver. Information added in v2.
>>>
>>> Ok, do we have this code in the vanilla linux kernel? Which .c file?
>>> The driver name 'hdadsp' looks suspicious. We usually have a delimiter
>>> in the driver name (like sof-hda-dsp).
>>
>>
>> Yes, it is a part of Skylake driver, "hdadsp" is the name of sound card
>> created on machine when using HDA generic machine driver. This machine
>> driver is made of 2 .c files:
>>
>>       - skl_hda_dsp_common.c
>>       - skl_hda_dsp_generic.c
>>
>> both are located in: sound/soc/intel/boards/
>>
>> Example on production laptop:
>>
>> test@test-Swift-SF515-51T:/proc/asound$ cat cards
>>    0 [hdadsp         ]: hda-dsp - hda-dsp
>>                         WL-SwiftSF515_51T-V1.02-Guinness_WL
>
> Ok, I see now. The 'hdadsp' is the user configurable card 
> identification (alias to the card number) not the driver name. The UCM 
> should be in 'hda-dsp' directory. If the UCM validator works for you, 
> it should be corrected.
>
> Could you point me to the alsa-info.sh output for this hardware?
>

Thank you for the explanation, adjustments are coming in v4. Still, I 
was able to test ucm's on DUT using "alsaucm -c hdadsp" command and it 
worked..

I had some problems uploading the output automatically, so done it 
manually, here's the link:

http://www.alsa-project.org/db/?f=986bf4515b2af1de75d42f2df2f812664fb7ec6e


I also sent a patch adding output to configs subtree in alsa-tests repo.

V4 was tested with ucm-validator, no errors.


> Thank you,
>                 Jaroslav
>

Thanks,
Mateusz
Kai Vehmanen March 18, 2020, 3:34 p.m. UTC | #7
Hey,

On Tue, 17 Mar 2020, Gorski, Mateusz wrote:
> Yes, it is a part of Skylake driver, "hdadsp" is the name of sound card
> created on machine when using HDA generic machine driver. This machine driver
> is made of 2 .c files:
> 
>     - skl_hda_dsp_common.c
>     - skl_hda_dsp_generic.c

btw, this machine driver is also used by SOF, but name is prefixed:

 - HDA with DSP and SST FW -> "hda-dsp" as the card name
 - HDA with DSP and SOF FW -> "sof-hda-dsp" as the card name

And of course without DSP we have also:
 - HDA no DSP	           -> "HDA-Intel" as card name

While we try to share what is possible, the topologies will be different 
for all three, and thus different UCM files are needed.

Br, Kai
Gorski, Mateusz March 19, 2020, 8:21 a.m. UTC | #8
> Hey,
>
> On Tue, 17 Mar 2020, Gorski, Mateusz wrote:
>> Yes, it is a part of Skylake driver, "hdadsp" is the name of sound card
>> created on machine when using HDA generic machine driver. This machine driver
>> is made of 2 .c files:
>>
>>      - skl_hda_dsp_common.c
>>      - skl_hda_dsp_generic.c
> btw, this machine driver is also used by SOF, but name is prefixed:
>
>   - HDA with DSP and SST FW -> "hda-dsp" as the card name
>   - HDA with DSP and SOF FW -> "sof-hda-dsp" as the card name
>
> And of course without DSP we have also:
>   - HDA no DSP	           -> "HDA-Intel" as card name
>
> While we try to share what is possible, the topologies will be different
> for all three, and thus different UCM files are needed.
>
> Br, Kai


UCMs for "sof-hda-dsp" and "HDA-Intel" are already present on the 
alsa-ucm-conf repo, only the "hda-dsp" one is missing right now.
There is also a second e-mail thread with patch adding topology for 
hda-dsp which is compatible with this UCM configuration.

Thanks,
Mateusz
Gorski, Mateusz March 25, 2020, 12:21 p.m. UTC | #9
>
>>>>>>> Basic UCM configuration for HDA DSP generic enabling codec playback
>>>>>>> and
>>>>>>> capture on both HDA codec and DMIC ports.
>>>>>>
>>>>>> Could you describe for what Linux driver (source code) is this
>>>>>> configuration?
>>>>>
>>>>>
>>>>> This file is for Intel Skylake SST driver. Information added in v2.
>>>>
>>>> Ok, do we have this code in the vanilla linux kernel? Which .c file?
>>>> The driver name 'hdadsp' looks suspicious. We usually have a delimiter
>>>> in the driver name (like sof-hda-dsp).
>>>
>>>
>>> Yes, it is a part of Skylake driver, "hdadsp" is the name of sound card
>>> created on machine when using HDA generic machine driver. This machine
>>> driver is made of 2 .c files:
>>>
>>>       - skl_hda_dsp_common.c
>>>       - skl_hda_dsp_generic.c
>>>
>>> both are located in: sound/soc/intel/boards/
>>>
>>> Example on production laptop:
>>>
>>> test@test-Swift-SF515-51T:/proc/asound$ cat cards
>>>    0 [hdadsp         ]: hda-dsp - hda-dsp
>>>                         WL-SwiftSF515_51T-V1.02-Guinness_WL
>>
>> Ok, I see now. The 'hdadsp' is the user configurable card 
>> identification (alias to the card number) not the driver name. The 
>> UCM should be in 'hda-dsp' directory. If the UCM validator works for 
>> you, it should be corrected.
>>
>> Could you point me to the alsa-info.sh output for this hardware?
>>
>
> Thank you for the explanation, adjustments are coming in v4. Still, I 
> was able to test ucm's on DUT using "alsaucm -c hdadsp" command and it 
> worked..
>
> I had some problems uploading the output automatically, so done it 
> manually, here's the link:
>
> http://www.alsa-project.org/db/?f=986bf4515b2af1de75d42f2df2f812664fb7ec6e 
>
>
>
> I also sent a patch adding output to configs subtree in alsa-tests repo.
>
> V4 was tested with ucm-validator, no errors.
>
>
>> Thank you,
>>                 Jaroslav
>>
>
> Thanks,
> Mateusz
>

Is there anything else I could do regarding this change? I think all of 
the issues/hints were adressed.

Thanks,
Mateusz
diff mbox series

Patch

diff --git a/ucm2/hdadsp/hdadsp.conf b/ucm2/hdadsp/hdadsp.conf
new file mode 100644
index 0000000..4e98545
--- /dev/null
+++ b/ucm2/hdadsp/hdadsp.conf
@@ -0,0 +1,16 @@ 
+# UCM for Intel CAVS platforms
+# For Audio in HDA and DMIC mode
+
+ValueDefaults {
+	PlaybackChannels "2"
+	PlaybackPriority "1"
+	CaptureChannels "2"
+	CapturePriority "2"
+}
+
+SectionDefaults [
+	cdev "hw:hdadsp"
+	cset "name='codec0_out mo media0_in mi Switch' 1"
+	cset "name='media0_out mo codec0_in mi Switch' 1"
+	cset "name='mch_cap_out mo mch_cap_in mi Switch' 1"
+]