Add new ioctls for sequencer clients to query and set the UMP endpoint and block information. As a sequencer client corresponds to a UMP Endpoint, one UMP Endpoint information can be assigned at most to a single sequencer client while multiple UMP block infos can be assigned by passing the type with the offset of block id (i.e. type = block_id + 1). For the kernel client, only SNDRV_SEQ_IOCTL_GET_CLIENT_UMP_INFO is allowed.
Showing the changes to include/uapi (1 of 5 files). Show all
Unified · Split
| @@ -585,6 +585,18 @@ struct snd_seq_query_subs { · 584 unmodified lines | |||
| 585 | char reserved[64]; /* for future use */ | 585 | char reserved[64]; /* for future use */ |
| 586 | }; | 586 | }; |
| 587 | 587 | ||
| 588 | /* | ||
| 589 | * UMP-specific information | ||
| 590 | */ | ||
| 591 | /* type of UMP info query */ | ||
| 592 | #define SNDRV_SEQ_CLIENT_UMP_INFO_ENDPOINT 0 | ||
| 593 | #define SNDRV_SEQ_CLIENT_UMP_INFO_BLOCK 1 | ||
| 594 | |||
| 595 | struct snd_seq_client_ump_info { | ||
| 596 | int client; /* client number to inquire/set */ | ||
| 597 | int type; /* type to inquire/set */ | ||
| 598 | unsigned char info[512]; /* info (either UMP ep or block info) */ | ||
| 599 | } __packed; | ||
| 588 | 600 | ||
| 589 | /* | 601 | /* |
| 590 | * IOCTL commands | 602 | * IOCTL commands |
| @@ -598,6 +610,8 @@ struct snd_seq_query_subs { · 7 unmodified lines | |||
| 598 | 610 | ||
| 599 | #define SNDRV_SEQ_IOCTL_GET_CLIENT_INFO _IOWR('S', 0x10, struct snd_seq_client_info) | 611 | #define SNDRV_SEQ_IOCTL_GET_CLIENT_INFO _IOWR('S', 0x10, struct snd_seq_client_info) |
| 600 | #define SNDRV_SEQ_IOCTL_SET_CLIENT_INFO _IOW ('S', 0x11, struct snd_seq_client_info) | 612 | #define SNDRV_SEQ_IOCTL_SET_CLIENT_INFO _IOW ('S', 0x11, struct snd_seq_client_info) |
| 613 | #define SNDRV_SEQ_IOCTL_GET_CLIENT_UMP_INFO _IOWR('S', 0x12, struct snd_seq_client_ump_info) | ||
| 614 | #define SNDRV_SEQ_IOCTL_SET_CLIENT_UMP_INFO _IOWR('S', 0x13, struct snd_seq_client_ump_info) | ||
| 601 | 615 | ||
| 602 | #define SNDRV_SEQ_IOCTL_CREATE_PORT _IOWR('S', 0x20, struct snd_seq_port_info) | 616 | #define SNDRV_SEQ_IOCTL_CREATE_PORT _IOWR('S', 0x20, struct snd_seq_port_info) |
| 603 | #define SNDRV_SEQ_IOCTL_DELETE_PORT _IOW ('S', 0x21, struct snd_seq_port_info) | 617 | #define SNDRV_SEQ_IOCTL_DELETE_PORT _IOW ('S', 0x21, struct snd_seq_port_info) |