New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 755599 link

Starred by 2 users

Issue metadata

Status: Assigned
Owner:
Last visit > 30 days ago
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug



Sign in to add a comment

DSP name should be specified in the device section of UCM

Project Member Reported by dgreid@chromium.org, Aug 15 2017

Issue description

I had to move OutputDspName "speaker_eq" to SectionVerb instead of the speakers Section Device.

Specifying the dsp in speaker device doesn't work becasue there isn't a jack for speaker.

We should change the logic so that any fullyspecified device can have a DSP name specified even if there isn't a jack for that device.


Below was what I had to make dsp.ini applied to the speaker EQ.

--- a/HiFi.conf
+++ b/HiFi.conf
@@ -1,5 +1,6 @@
 SectionVerb {
        Value {
+               OutputDspName "speaker_eq"
                FullySpecifiedUCM "1"
        }
 
@@ -36,7 +37,6 @@ SectionVerb {
 SectionDevice."Speaker".0 {
        Value {
                PlaybackPCM "hw:kblr55145663max,0"
-               OutputDspName "speaker_eq"
        }
 
I'll visit MTV next week and don't have time writing code. I'll come back to this in two weeks.

Comment 2 by hychao@chromium.org, Aug 28 2017

Owner: itspeter@chromium.org
Peter is very kind to take this.
Hi Dylan,

I did the following experiment and it seems not "jack-associated"

1. Add debug message prints on alsa_iodev_set_active_node
2. Make sure an OutputDspName in SectionVerb showed on Headphone
3. Remove OutputDspName from SectionVerb
4. Insert OutputDspName "speaker_eq" on SectionDevice."Headphone"
5. seaker_eq is not showed in debug message.

My wild guess is that there some logic other than if a device has jack or not. Will dig it further, please let me know if I'm on the wrong path :o

Comment 4 by dgreid@chromium.org, Aug 30 2017

It could be that there are multiple places that depend on there being a default DSP name set.

My suspicions about jacks were based on the get_active_dsp_name function:
static const char *get_active_dsp_name(struct alsa_io *aio)
{
	struct cras_ionode *node = aio->base.active_node;
	const struct cras_alsa_jack *jack;

	if (node == NULL)
		return NULL;

	if (aio->base.direction == CRAS_STREAM_OUTPUT)
		jack = ((struct alsa_output_node *) node)->jack;
	else
		jack = ((struct alsa_input_node *) node)->jack;

	return cras_alsa_jack_get_dsp_name(jack) ? : aio->dsp_name_default;
}

Sign in to add a comment