public inbox for alsa-devel@alsa-project.org
 help / color / mirror / Atom feed
From: Julian Scheel <julian@jusst.de>
To: Daniel Mack <daniel@zonque.org>, alsa-devel@alsa-project.org
Cc: Takashi Iwai <tiwai@suse.de>
Subject: Re: [PATCH] ALSA: usb-audio: Recurse before saving terminal properties
Date: Mon, 17 Aug 2015 07:56:48 +0200	[thread overview]
Message-ID: <55D177A0.9020501@jusst.de> (raw)
In-Reply-To: <55D077D0.90005@zonque.org>

Hi Daniel,

On 16.08.15 13:45, Daniel Mack wrote:
> On 08/14/2015 03:25 PM, Julian Scheel wrote:
>> Am 14.08.2015 um 15:06 schrieb Takashi Iwai:
>
>>>> @@ -715,15 +715,16 @@ static int check_input_term(struct mixer_build *state, int id,
>>>>    				term->name = d->iTerminal;
>>>>    			} else { /* UAC_VERSION_2 */
>>>>    				struct uac2_input_terminal_descriptor *d = p1;
>>>> -				term->type = le16_to_cpu(d->wTerminalType);
>>>> -				term->channels = d->bNrChannels;
>>>> -				term->chconfig = le32_to_cpu(d->bmChannelConfig);
>>>> -				term->name = d->iTerminal;
>>>>
>>>>    				/* call recursively to get the clock selectors */
>>>>    				err = check_input_term(state, d->bCSourceID, term);
>>>>    				if (err < 0)
>>>>    					return err;
>>>> +
>>>> +				term->type = le16_to_cpu(d->wTerminalType);
>>>> +				term->channels = d->bNrChannels;
>>>> +				term->chconfig = le32_to_cpu(d->bmChannelConfig);
>>>> +				term->name = d->iTerminal;
>>>
>>> ... by this override, essentially all fields except for id are
>>> restored.  Then what's the point to call check_input_term() for the
>>> clock source?
>>
>> This is a good point indeed, but due do my understanding the recursion
>> is not about filling missing information, but about verifying a valid
>> descriptor. So in case there are broken references in the descriptor it
>> gets abandoned. I'm happy to be corrected if this understanding is wrong.
>
> Hmm, good point. It' been a while since I worked on this, but looking at
> the code right now, you're right, the mixer unit for input terminal is
> indeed just overridden by the information of the clock selector on UAC2.
> That doesn't seem right.
>
> I guess what we really want is to add a 2nd mixer control in such cases,
> and that would mean we need to call into parse_audio_selector_unit()
> instead.

Ah, you're right. The Clock Selector shall actually be exposed as a 
mixer unit. This never happened with the current code, but it just 
renamed all other selectors to the name of the clock selector if it existed.

> I can cook up or test a patch next week, when I have access to test
> hardware.

I can update my patch to reflect this as well. If you haven't done 
before I'll try to do it later today.

-Julian

  reply	other threads:[~2015-08-17  5:56 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-12 20:14 [PATCH] ALSA: usb-audio: Recurse before saving terminal properties Julian Scheel
2015-08-14 13:06 ` Takashi Iwai
2015-08-14 13:25   ` Julian Scheel
2015-08-16 11:45     ` Daniel Mack
2015-08-17  5:56       ` Julian Scheel [this message]
2015-08-17  8:35       ` Julian Scheel
2015-08-18  8:09         ` Daniel Mack
2015-09-06 15:34   ` Johan Aires Rastén

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=55D177A0.9020501@jusst.de \
    --to=julian@jusst.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=daniel@zonque.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox