From 48101de6fa0dbff83ffbcaafc1a1b8e89806630b Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Tue, 9 Jul 2024 07:23:23 +0200 Subject: [PATCH] seq: Fix wrong FB direction at snd_seq_create_ump_block() snd_seq_create_ump_block() receives a snd_ump_block_info_t data at the creation of a FB and updates its associated sequencer port, but it handled the port direction incorrectly. The UMP / port direction means the connectivity, but the current code translated other way round. The correct translation should be that input = receiver, i.e. a writable port for applications, and output = source, a readable port for applications. This patch corrects the translation, and add more comments to the direction definition. Signed-off-by: Takashi Iwai --- include/seq.h | 4 ++-- src/seq/seqmid.c | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/include/seq.h b/include/seq.h index 3bad5dd9..4f03df43 100644 --- a/include/seq.h +++ b/include/seq.h @@ -250,8 +250,8 @@ typedef struct _snd_seq_port_info snd_seq_port_info_t; /** port direction */ #define SND_SEQ_PORT_DIR_UNKNOWN 0 /**< Unknown */ -#define SND_SEQ_PORT_DIR_INPUT 1 /**< Input only */ -#define SND_SEQ_PORT_DIR_OUTPUT 2 /**< Output only */ +#define SND_SEQ_PORT_DIR_INPUT 1 /**< Input only; sink, receiver */ +#define SND_SEQ_PORT_DIR_OUTPUT 2 /**< Output only; source, transmitter */ #define SND_SEQ_PORT_DIR_BIDIRECTION 3 /**< Input/output bidirectional */ /* port type */ diff --git a/src/seq/seqmid.c b/src/seq/seqmid.c index d7eac6ca..08c62d5c 100644 --- a/src/seq/seqmid.c +++ b/src/seq/seqmid.c @@ -645,16 +645,16 @@ static void update_group_ports(snd_seq_t *seq, snd_ump_endpoint_info_t *ep) i >= bp->first_group + bp->num_groups) continue; switch (bp->direction) { - case SNDRV_UMP_DIR_INPUT: - caps |= SNDRV_SEQ_PORT_CAP_READ | - SNDRV_SEQ_PORT_CAP_SYNC_READ | - SNDRV_SEQ_PORT_CAP_SUBS_READ; - break; - case SNDRV_UMP_DIR_OUTPUT: + case SNDRV_UMP_DIR_INPUT: /* sink, receiver */ caps |= SNDRV_SEQ_PORT_CAP_WRITE | SNDRV_SEQ_PORT_CAP_SYNC_WRITE | SNDRV_SEQ_PORT_CAP_SUBS_WRITE; break; + case SNDRV_UMP_DIR_OUTPUT: /* source, transmitter */ + caps |= SNDRV_SEQ_PORT_CAP_READ | + SNDRV_SEQ_PORT_CAP_SYNC_READ | + SNDRV_SEQ_PORT_CAP_SUBS_READ; + break; case SNDRV_UMP_DIR_BIDIRECTION: caps |= SNDRV_SEQ_PORT_CAP_READ | SNDRV_SEQ_PORT_CAP_SYNC_READ |