Skip to content

Commit

Permalink
ALSA: ump: Update legacy substream names upon FB info update
Browse files Browse the repository at this point in the history
The legacy rawmidi substreams should be updated when UMP FB Info or
UMP FB Name are received, too.

Link: https://patch.msgid.link/20241129094546.32119-4-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Takashi Iwai committed Nov 29, 2024
1 parent e29e504 commit edad3f9
Showing 1 changed file with 15 additions and 4 deletions.
19 changes: 15 additions & 4 deletions sound/core/ump.c
Original file line number Diff line number Diff line change
@@ -37,6 +37,7 @@ static int process_legacy_output(struct snd_ump_endpoint *ump,
u32 *buffer, int count);
static void process_legacy_input(struct snd_ump_endpoint *ump, const u32 *src,
int words);
static void update_legacy_names(struct snd_ump_endpoint *ump);
#else
static inline int process_legacy_output(struct snd_ump_endpoint *ump,
u32 *buffer, int count)
@@ -47,6 +48,9 @@ static inline void process_legacy_input(struct snd_ump_endpoint *ump,
const u32 *src, int words)
{
}
static inline void update_legacy_names(struct snd_ump_endpoint *ump)
{
}
#endif

static const struct snd_rawmidi_global_ops snd_ump_rawmidi_ops = {
@@ -861,6 +865,7 @@ static int ump_handle_fb_info_msg(struct snd_ump_endpoint *ump,
fill_fb_info(ump, &fb->info, buf);
if (ump->parsed) {
snd_ump_update_group_attrs(ump);
update_legacy_names(ump);
seq_notify_fb_change(ump, fb);
}
}
@@ -893,6 +898,7 @@ static int ump_handle_fb_name_msg(struct snd_ump_endpoint *ump,
/* notify the FB name update to sequencer, too */
if (ret > 0 && ump->parsed) {
snd_ump_update_group_attrs(ump);
update_legacy_names(ump);
seq_notify_fb_change(ump, fb);
}
return ret;
@@ -1262,6 +1268,14 @@ static void fill_substream_names(struct snd_ump_endpoint *ump,
}
}

static void update_legacy_names(struct snd_ump_endpoint *ump)
{
struct snd_rawmidi *rmidi = ump->legacy_rmidi;

fill_substream_names(ump, rmidi, SNDRV_RAWMIDI_STREAM_INPUT);
fill_substream_names(ump, rmidi, SNDRV_RAWMIDI_STREAM_OUTPUT);
}

int snd_ump_attach_legacy_rawmidi(struct snd_ump_endpoint *ump,
char *id, int device)
{
@@ -1298,10 +1312,7 @@ int snd_ump_attach_legacy_rawmidi(struct snd_ump_endpoint *ump,
rmidi->ops = &snd_ump_legacy_ops;
rmidi->private_data = ump;
ump->legacy_rmidi = rmidi;
if (input)
fill_substream_names(ump, rmidi, SNDRV_RAWMIDI_STREAM_INPUT);
if (output)
fill_substream_names(ump, rmidi, SNDRV_RAWMIDI_STREAM_OUTPUT);
update_legacy_names(ump);

ump_dbg(ump, "Created a legacy rawmidi #%d (%s)\n", device, id);
return 0;

0 comments on commit edad3f9

Please sign in to comment.