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 | 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 | 602 | * IOCTL commands |
| @@ -598,6 +610,8 @@ struct snd_seq_query_subs { · 7 unmodified lines | ||
| 598 | 610 | |
| 599 | 611 | #define SNDRV_SEQ_IOCTL_GET_CLIENT_INFO _IOWR('S', 0x10, struct snd_seq_client_info) |
| 600 | 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 | 616 | #define SNDRV_SEQ_IOCTL_CREATE_PORT _IOWR('S', 0x20, struct snd_seq_port_info) |
| 603 | 617 | #define SNDRV_SEQ_IOCTL_DELETE_PORT _IOW ('S', 0x21, struct snd_seq_port_info) |