]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ALSA: firewire-motu: parse messages for mixer output parameters in register DSP model
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Fri, 15 Oct 2021 08:08:20 +0000 (17:08 +0900)
committerTakashi Iwai <tiwai@suse.de>
Fri, 15 Oct 2021 15:52:12 +0000 (17:52 +0200)
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 <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20211015080826.34847-6-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>
include/uapi/sound/firewire.h
sound/firewire/motu/motu-register-dsp-message-parser.c

index bb5ecff738964fefff92af024e6148ce0bd7b311..f663a26c5205969854d8b77345e8f28465707204 100644 (file)
@@ -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.
  */
@@ -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;
 };
 
index 6df40e5ee9db705930502c6a8a6a2db2d7c2db2b..867cb09a35219a5d3ec8298c71ea5c0049a17d14 100644 (file)
@@ -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;