Skip to content

Commit

Permalink
ALSA: firewire-motu: parse messages for mixer output parameters in re…
Browse files Browse the repository at this point in the history
…gister DSP model

This commit parses message and cache current parameters of mixer output
function, commonly available for all of register DSP model

Signed-off-by: Takashi Sakamoto <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Takashi Iwai <[email protected]>
  • Loading branch information
takaswie authored and tiwai committed Oct 15, 2021
1 parent dc36a97 commit ce69bed
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
6 changes: 6 additions & 0 deletions include/uapi/sound/firewire.h
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,8 @@ struct snd_firewire_motu_register_dsp_meter {
* Audio Express.
* @mixer.source.paired_width: The width of paired source to mixer, only for 4 pre and
* Audio Express.
* @mixer.output.paired_volume: The volume of paired output from mixer.
* @mixer.output.paired_flag: The flag of paired output from mixer.
*
* The structure expresses the set of parameters for DSP controlled by register access.
*/
Expand All @@ -170,6 +172,10 @@ struct snd_firewire_motu_register_dsp_parameter {
__u8 paired_balance[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_SRC_COUNT];
__u8 paired_width[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_SRC_COUNT];
} source[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_COUNT];
struct {
__u8 paired_volume[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_COUNT];
__u8 paired_flag[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_COUNT];
} output;
} mixer;
};

Expand Down
20 changes: 20 additions & 0 deletions sound/firewire/motu/motu-register-dsp-message-parser.c
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,26 @@ void snd_motu_register_dsp_message_parser_parse(struct snd_motu *motu, const str
}
break;
}
case MIXER_OUTPUT_PAIRED_VOLUME:
case MIXER_OUTPUT_PAIRED_FLAG:
{
struct snd_firewire_motu_register_dsp_parameter *param = &parser->param;
u8 mixer_ch = parser->mixer_ch;

if (mixer_ch < SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_COUNT) {
switch (msg_type) {
case MIXER_OUTPUT_PAIRED_VOLUME:
param->mixer.output.paired_volume[mixer_ch] = val;
break;
case MIXER_OUTPUT_PAIRED_FLAG:
param->mixer.output.paired_flag[mixer_ch] = val;
break;
default:
break;
}
}
break;
}
case METER:
{
u8 pos;
Expand Down

0 comments on commit ce69bed

Please sign in to comment.