summaryrefslogtreecommitdiffstats
path: root/include/uapi/sound/asequencer.h
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2023-05-23 09:53:49 +0200
committerTakashi Iwai <tiwai@suse.de>2023-05-23 12:11:25 +0200
commitff166a9d19fab3d77f50e9413df046fb1d7c01cc (patch)
tree83f10c67596229f116c898a0ee27622b16486cd6 /include/uapi/sound/asequencer.h
parent177ccf811df4a893df339a72dc732bb26b66d055 (diff)
downloadlinux-stable-ff166a9d19fab3d77f50e9413df046fb1d7c01cc.tar.gz
linux-stable-ff166a9d19fab3d77f50e9413df046fb1d7c01cc.tar.bz2
linux-stable-ff166a9d19fab3d77f50e9413df046fb1d7c01cc.zip
ALSA: seq: Add port direction to snd_seq_port_info
Add a new field "direction" to snd_seq_port_info for allowing a client to tell the expected direction of the port access. A port might still allow subscriptions for read/write (e.g. for MIDI-CI) even if the primary usage of the port is a single direction (either input or output only). This new "direction" field can help to indicate such cases. When the direction is unspecified at creating a port and the port has either read or write capability, the corresponding direction bits are set automatically as default. Reviewed-by: Jaroslav Kysela <perex@perex.cz> Link: https://lore.kernel.org/r/20230523075358.9672-29-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'include/uapi/sound/asequencer.h')
-rw-r--r--include/uapi/sound/asequencer.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/include/uapi/sound/asequencer.h b/include/uapi/sound/asequencer.h
index 67532c46b115..eae1e0b0bf37 100644
--- a/include/uapi/sound/asequencer.h
+++ b/include/uapi/sound/asequencer.h
@@ -455,6 +455,12 @@ struct snd_seq_remove_events {
#define SNDRV_SEQ_PORT_FLG_TIMESTAMP (1<<1)
#define SNDRV_SEQ_PORT_FLG_TIME_REAL (1<<2)
+/* port direction */
+#define SNDRV_SEQ_PORT_DIR_UNKNOWN 0
+#define SNDRV_SEQ_PORT_DIR_INPUT 1
+#define SNDRV_SEQ_PORT_DIR_OUTPUT 2
+#define SNDRV_SEQ_PORT_DIR_BIDIRECTION 3
+
struct snd_seq_port_info {
struct snd_seq_addr addr; /* client/port numbers */
char name[64]; /* port name */
@@ -471,7 +477,8 @@ struct snd_seq_port_info {
void *kernel; /* reserved for kernel use (must be NULL) */
unsigned int flags; /* misc. conditioning */
unsigned char time_queue; /* queue # for timestamping */
- char reserved[59]; /* for future use */
+ unsigned char direction; /* port usage direction (r/w/bidir) */
+ char reserved[58]; /* for future use */
};