ALSA: ump: Don't enumeration invalid groups for legacy rawmidi

The legacy rawmidi tries to enumerate all possible UMP groups
belonging to the UMP endpoint.  But currently it shows all 16 ports
when the UMP endpoint is configured with static blocks, although most
of them may be unused.

There was already a fix for the sequencer client side to ignore such
groups in the commit 3bfd7c0ba1 ("ALSA: seq: ump: Skip useless ports
for static blocks"), and this commit is a similar fix for UMP
rawmidi devices; it adds simply the check for the validity of each
group that has been already parsed.  (Note that the group info was
moved to snd_ump_endpoint.groups[] by the commit 0642a3c5ca
("ALSA: ump: Update substream name from assigned FB names")).

Link: https://patch.msgid.link/20241104100735.16127-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Takashi Iwai 2024-11-04 11:07:34 +01:00
parent c9363bbb0f
commit c2d188e137

View File

@ -1233,7 +1233,7 @@ static int fill_legacy_mapping(struct snd_ump_endpoint *ump)
num = 0; num = 0;
for (i = 0; i < SNDRV_UMP_MAX_GROUPS; i++) for (i = 0; i < SNDRV_UMP_MAX_GROUPS; i++)
if (group_maps & (1U << i)) if ((group_maps & (1U << i)) && ump->groups[i].valid)
ump->legacy_mapping[num++] = i; ump->legacy_mapping[num++] = i;
return num; return num;