mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
Merge branch 'for-next' into for-linus
Pull the 6.5-devel branch for upstreaming. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
#include <sound/asound.h>
|
||||
|
||||
/** version of the sequencer */
|
||||
#define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 2)
|
||||
#define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 3)
|
||||
|
||||
/**
|
||||
* definition of sequencer event types
|
||||
@@ -174,6 +174,7 @@ struct snd_seq_connect {
|
||||
#define SNDRV_SEQ_PRIORITY_HIGH (1<<4) /* event should be processed before others */
|
||||
#define SNDRV_SEQ_PRIORITY_MASK (1<<4)
|
||||
|
||||
#define SNDRV_SEQ_EVENT_UMP (1<<5) /* event holds a UMP packet */
|
||||
|
||||
/* note event */
|
||||
struct snd_seq_ev_note {
|
||||
@@ -252,6 +253,19 @@ struct snd_seq_ev_quote {
|
||||
struct snd_seq_event *event; /* quoted event */
|
||||
} __attribute__((packed));
|
||||
|
||||
union snd_seq_event_data { /* event data... */
|
||||
struct snd_seq_ev_note note;
|
||||
struct snd_seq_ev_ctrl control;
|
||||
struct snd_seq_ev_raw8 raw8;
|
||||
struct snd_seq_ev_raw32 raw32;
|
||||
struct snd_seq_ev_ext ext;
|
||||
struct snd_seq_ev_queue_control queue;
|
||||
union snd_seq_timestamp time;
|
||||
struct snd_seq_addr addr;
|
||||
struct snd_seq_connect connect;
|
||||
struct snd_seq_result result;
|
||||
struct snd_seq_ev_quote quote;
|
||||
};
|
||||
|
||||
/* sequencer event */
|
||||
struct snd_seq_event {
|
||||
@@ -262,25 +276,27 @@ struct snd_seq_event {
|
||||
unsigned char queue; /* schedule queue */
|
||||
union snd_seq_timestamp time; /* schedule time */
|
||||
|
||||
|
||||
struct snd_seq_addr source; /* source address */
|
||||
struct snd_seq_addr dest; /* destination address */
|
||||
|
||||
union { /* event data... */
|
||||
struct snd_seq_ev_note note;
|
||||
struct snd_seq_ev_ctrl control;
|
||||
struct snd_seq_ev_raw8 raw8;
|
||||
struct snd_seq_ev_raw32 raw32;
|
||||
struct snd_seq_ev_ext ext;
|
||||
struct snd_seq_ev_queue_control queue;
|
||||
union snd_seq_timestamp time;
|
||||
struct snd_seq_addr addr;
|
||||
struct snd_seq_connect connect;
|
||||
struct snd_seq_result result;
|
||||
struct snd_seq_ev_quote quote;
|
||||
} data;
|
||||
union snd_seq_event_data data;
|
||||
};
|
||||
|
||||
/* (compatible) event for UMP-capable clients */
|
||||
struct snd_seq_ump_event {
|
||||
snd_seq_event_type_t type; /* event type */
|
||||
unsigned char flags; /* event flags */
|
||||
char tag;
|
||||
unsigned char queue; /* schedule queue */
|
||||
union snd_seq_timestamp time; /* schedule time */
|
||||
struct snd_seq_addr source; /* source address */
|
||||
struct snd_seq_addr dest; /* destination address */
|
||||
|
||||
union {
|
||||
union snd_seq_event_data data;
|
||||
unsigned int ump[4];
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* bounce event - stored as variable size data
|
||||
@@ -331,6 +347,7 @@ typedef int __bitwise snd_seq_client_type_t;
|
||||
#define SNDRV_SEQ_FILTER_BROADCAST (1U<<0) /* accept broadcast messages */
|
||||
#define SNDRV_SEQ_FILTER_MULTICAST (1U<<1) /* accept multicast messages */
|
||||
#define SNDRV_SEQ_FILTER_BOUNCE (1U<<2) /* accept bounce event in error */
|
||||
#define SNDRV_SEQ_FILTER_NO_CONVERT (1U<<30) /* don't convert UMP events */
|
||||
#define SNDRV_SEQ_FILTER_USE_EVENT (1U<<31) /* use event filter */
|
||||
|
||||
struct snd_seq_client_info {
|
||||
@@ -344,9 +361,18 @@ struct snd_seq_client_info {
|
||||
int event_lost; /* number of lost events */
|
||||
int card; /* RO: card number[kernel] */
|
||||
int pid; /* RO: pid[user] */
|
||||
char reserved[56]; /* for future use */
|
||||
unsigned int midi_version; /* MIDI version */
|
||||
unsigned int group_filter; /* UMP group filter bitmap
|
||||
* (bit 0 = groupless messages,
|
||||
* bit 1-16 = messages for groups 1-16)
|
||||
*/
|
||||
char reserved[48]; /* for future use */
|
||||
};
|
||||
|
||||
/* MIDI version numbers in client info */
|
||||
#define SNDRV_SEQ_CLIENT_LEGACY_MIDI 0 /* Legacy client */
|
||||
#define SNDRV_SEQ_CLIENT_UMP_MIDI_1_0 1 /* UMP MIDI 1.0 */
|
||||
#define SNDRV_SEQ_CLIENT_UMP_MIDI_2_0 2 /* UMP MIDI 2.0 */
|
||||
|
||||
/* client pool size */
|
||||
struct snd_seq_client_pool {
|
||||
@@ -406,6 +432,8 @@ struct snd_seq_remove_events {
|
||||
#define SNDRV_SEQ_PORT_CAP_SUBS_READ (1<<5) /* allow read subscription */
|
||||
#define SNDRV_SEQ_PORT_CAP_SUBS_WRITE (1<<6) /* allow write subscription */
|
||||
#define SNDRV_SEQ_PORT_CAP_NO_EXPORT (1<<7) /* routing not allowed */
|
||||
#define SNDRV_SEQ_PORT_CAP_INACTIVE (1<<8) /* inactive port */
|
||||
#define SNDRV_SEQ_PORT_CAP_UMP_ENDPOINT (1<<9) /* MIDI 2.0 UMP Endpoint port */
|
||||
|
||||
/* port type */
|
||||
#define SNDRV_SEQ_PORT_TYPE_SPECIFIC (1<<0) /* hardware specific */
|
||||
@@ -415,6 +443,7 @@ struct snd_seq_remove_events {
|
||||
#define SNDRV_SEQ_PORT_TYPE_MIDI_XG (1<<4) /* XG compatible device */
|
||||
#define SNDRV_SEQ_PORT_TYPE_MIDI_MT32 (1<<5) /* MT-32 compatible device */
|
||||
#define SNDRV_SEQ_PORT_TYPE_MIDI_GM2 (1<<6) /* General MIDI 2 compatible device */
|
||||
#define SNDRV_SEQ_PORT_TYPE_MIDI_UMP (1<<7) /* UMP */
|
||||
|
||||
/* other standards...*/
|
||||
#define SNDRV_SEQ_PORT_TYPE_SYNTH (1<<10) /* Synth device (no MIDI compatible - direct wavetable) */
|
||||
@@ -432,6 +461,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 */
|
||||
@@ -448,7 +483,9 @@ 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) */
|
||||
unsigned char ump_group; /* 0 = UMP EP (no conversion), 1-16 = UMP group number */
|
||||
char reserved[57]; /* for future use */
|
||||
};
|
||||
|
||||
|
||||
@@ -552,6 +589,18 @@ struct snd_seq_query_subs {
|
||||
char reserved[64]; /* for future use */
|
||||
};
|
||||
|
||||
/*
|
||||
* UMP-specific information
|
||||
*/
|
||||
/* type of UMP info query */
|
||||
#define SNDRV_SEQ_CLIENT_UMP_INFO_ENDPOINT 0
|
||||
#define SNDRV_SEQ_CLIENT_UMP_INFO_BLOCK 1
|
||||
|
||||
struct snd_seq_client_ump_info {
|
||||
int client; /* client number to inquire/set */
|
||||
int type; /* type to inquire/set */
|
||||
unsigned char info[512]; /* info (either UMP ep or block info) */
|
||||
} __packed;
|
||||
|
||||
/*
|
||||
* IOCTL commands
|
||||
@@ -561,9 +610,12 @@ struct snd_seq_query_subs {
|
||||
#define SNDRV_SEQ_IOCTL_CLIENT_ID _IOR ('S', 0x01, int)
|
||||
#define SNDRV_SEQ_IOCTL_SYSTEM_INFO _IOWR('S', 0x02, struct snd_seq_system_info)
|
||||
#define SNDRV_SEQ_IOCTL_RUNNING_MODE _IOWR('S', 0x03, struct snd_seq_running_info)
|
||||
#define SNDRV_SEQ_IOCTL_USER_PVERSION _IOW('S', 0x04, int)
|
||||
|
||||
#define SNDRV_SEQ_IOCTL_GET_CLIENT_INFO _IOWR('S', 0x10, struct snd_seq_client_info)
|
||||
#define SNDRV_SEQ_IOCTL_SET_CLIENT_INFO _IOW ('S', 0x11, struct snd_seq_client_info)
|
||||
#define SNDRV_SEQ_IOCTL_GET_CLIENT_UMP_INFO _IOWR('S', 0x12, struct snd_seq_client_ump_info)
|
||||
#define SNDRV_SEQ_IOCTL_SET_CLIENT_UMP_INFO _IOWR('S', 0x13, struct snd_seq_client_ump_info)
|
||||
|
||||
#define SNDRV_SEQ_IOCTL_CREATE_PORT _IOWR('S', 0x20, struct snd_seq_port_info)
|
||||
#define SNDRV_SEQ_IOCTL_DELETE_PORT _IOW ('S', 0x21, struct snd_seq_port_info)
|
||||
|
@@ -274,6 +274,7 @@ typedef int __bitwise snd_pcm_subformat_t;
|
||||
#define SNDRV_PCM_INFO_DOUBLE 0x00000004 /* Double buffering needed for PCM start/stop */
|
||||
#define SNDRV_PCM_INFO_BATCH 0x00000010 /* double buffering */
|
||||
#define SNDRV_PCM_INFO_SYNC_APPLPTR 0x00000020 /* need the explicit sync of appl_ptr update */
|
||||
#define SNDRV_PCM_INFO_PERFECT_DRAIN 0x00000040 /* silencing at the end of stream is not required */
|
||||
#define SNDRV_PCM_INFO_INTERLEAVED 0x00000100 /* channels are interleaved */
|
||||
#define SNDRV_PCM_INFO_NONINTERLEAVED 0x00000200 /* channels are not interleaved */
|
||||
#define SNDRV_PCM_INFO_COMPLEX 0x00000400 /* complex frame organization (mmap only) */
|
||||
@@ -383,6 +384,9 @@ typedef int snd_pcm_hw_param_t;
|
||||
#define SNDRV_PCM_HW_PARAMS_NORESAMPLE (1<<0) /* avoid rate resampling */
|
||||
#define SNDRV_PCM_HW_PARAMS_EXPORT_BUFFER (1<<1) /* export buffer */
|
||||
#define SNDRV_PCM_HW_PARAMS_NO_PERIOD_WAKEUP (1<<2) /* disable period wakeups */
|
||||
#define SNDRV_PCM_HW_PARAMS_NO_DRAIN_SILENCE (1<<3) /* suppress drain with the filling
|
||||
* of the silence samples
|
||||
*/
|
||||
|
||||
struct snd_interval {
|
||||
unsigned int min, max;
|
||||
@@ -708,7 +712,7 @@ enum {
|
||||
* Raw MIDI section - /dev/snd/midi??
|
||||
*/
|
||||
|
||||
#define SNDRV_RAWMIDI_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 2)
|
||||
#define SNDRV_RAWMIDI_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 4)
|
||||
|
||||
enum {
|
||||
SNDRV_RAWMIDI_STREAM_OUTPUT = 0,
|
||||
@@ -719,6 +723,7 @@ enum {
|
||||
#define SNDRV_RAWMIDI_INFO_OUTPUT 0x00000001
|
||||
#define SNDRV_RAWMIDI_INFO_INPUT 0x00000002
|
||||
#define SNDRV_RAWMIDI_INFO_DUPLEX 0x00000004
|
||||
#define SNDRV_RAWMIDI_INFO_UMP 0x00000008
|
||||
|
||||
struct snd_rawmidi_info {
|
||||
unsigned int device; /* RO/WR (control): device number */
|
||||
@@ -779,6 +784,72 @@ struct snd_rawmidi_status {
|
||||
};
|
||||
#endif
|
||||
|
||||
/* UMP EP info flags */
|
||||
#define SNDRV_UMP_EP_INFO_STATIC_BLOCKS 0x01
|
||||
|
||||
/* UMP EP Protocol / JRTS capability bits */
|
||||
#define SNDRV_UMP_EP_INFO_PROTO_MIDI_MASK 0x0300
|
||||
#define SNDRV_UMP_EP_INFO_PROTO_MIDI1 0x0100 /* MIDI 1.0 */
|
||||
#define SNDRV_UMP_EP_INFO_PROTO_MIDI2 0x0200 /* MIDI 2.0 */
|
||||
#define SNDRV_UMP_EP_INFO_PROTO_JRTS_MASK 0x0003
|
||||
#define SNDRV_UMP_EP_INFO_PROTO_JRTS_TX 0x0001 /* JRTS Transmit */
|
||||
#define SNDRV_UMP_EP_INFO_PROTO_JRTS_RX 0x0002 /* JRTS Receive */
|
||||
|
||||
/* UMP Endpoint information */
|
||||
struct snd_ump_endpoint_info {
|
||||
int card; /* card number */
|
||||
int device; /* device number */
|
||||
unsigned int flags; /* additional info */
|
||||
unsigned int protocol_caps; /* protocol capabilities */
|
||||
unsigned int protocol; /* current protocol */
|
||||
unsigned int num_blocks; /* # of function blocks */
|
||||
unsigned short version; /* UMP major/minor version */
|
||||
unsigned short family_id; /* MIDI device family ID */
|
||||
unsigned short model_id; /* MIDI family model ID */
|
||||
unsigned int manufacturer_id; /* MIDI manufacturer ID */
|
||||
unsigned char sw_revision[4]; /* software revision */
|
||||
unsigned short padding;
|
||||
unsigned char name[128]; /* endpoint name string */
|
||||
unsigned char product_id[128]; /* unique product id string */
|
||||
unsigned char reserved[32];
|
||||
} __packed;
|
||||
|
||||
/* UMP direction */
|
||||
#define SNDRV_UMP_DIR_INPUT 0x01
|
||||
#define SNDRV_UMP_DIR_OUTPUT 0x02
|
||||
#define SNDRV_UMP_DIR_BIDIRECTION 0x03
|
||||
|
||||
/* UMP block info flags */
|
||||
#define SNDRV_UMP_BLOCK_IS_MIDI1 (1U << 0) /* MIDI 1.0 port w/o restrict */
|
||||
#define SNDRV_UMP_BLOCK_IS_LOWSPEED (1U << 1) /* 31.25Kbps B/W MIDI1 port */
|
||||
|
||||
/* UMP block user-interface hint */
|
||||
#define SNDRV_UMP_BLOCK_UI_HINT_UNKNOWN 0x00
|
||||
#define SNDRV_UMP_BLOCK_UI_HINT_RECEIVER 0x01
|
||||
#define SNDRV_UMP_BLOCK_UI_HINT_SENDER 0x02
|
||||
#define SNDRV_UMP_BLOCK_UI_HINT_BOTH 0x03
|
||||
|
||||
/* UMP groups and blocks */
|
||||
#define SNDRV_UMP_MAX_GROUPS 16
|
||||
#define SNDRV_UMP_MAX_BLOCKS 32
|
||||
|
||||
/* UMP Block information */
|
||||
struct snd_ump_block_info {
|
||||
int card; /* card number */
|
||||
int device; /* device number */
|
||||
unsigned char block_id; /* block ID (R/W) */
|
||||
unsigned char direction; /* UMP direction */
|
||||
unsigned char active; /* Activeness */
|
||||
unsigned char first_group; /* first group ID */
|
||||
unsigned char num_groups; /* number of groups */
|
||||
unsigned char midi_ci_version; /* MIDI-CI support version */
|
||||
unsigned char sysex8_streams; /* max number of sysex8 streams */
|
||||
unsigned char ui_hint; /* user interface hint */
|
||||
unsigned int flags; /* various info flags */
|
||||
unsigned char name[128]; /* block name string */
|
||||
unsigned char reserved[32];
|
||||
} __packed;
|
||||
|
||||
#define SNDRV_RAWMIDI_IOCTL_PVERSION _IOR('W', 0x00, int)
|
||||
#define SNDRV_RAWMIDI_IOCTL_INFO _IOR('W', 0x01, struct snd_rawmidi_info)
|
||||
#define SNDRV_RAWMIDI_IOCTL_USER_PVERSION _IOW('W', 0x02, int)
|
||||
@@ -786,6 +857,9 @@ struct snd_rawmidi_status {
|
||||
#define SNDRV_RAWMIDI_IOCTL_STATUS _IOWR('W', 0x20, struct snd_rawmidi_status)
|
||||
#define SNDRV_RAWMIDI_IOCTL_DROP _IOW('W', 0x30, int)
|
||||
#define SNDRV_RAWMIDI_IOCTL_DRAIN _IOW('W', 0x31, int)
|
||||
/* Additional ioctls for UMP rawmidi devices */
|
||||
#define SNDRV_UMP_IOCTL_ENDPOINT_INFO _IOR('W', 0x40, struct snd_ump_endpoint_info)
|
||||
#define SNDRV_UMP_IOCTL_BLOCK_INFO _IOR('W', 0x41, struct snd_ump_block_info)
|
||||
|
||||
/*
|
||||
* Timer section - /dev/snd/timer
|
||||
@@ -961,7 +1035,7 @@ struct snd_timer_tread {
|
||||
* *
|
||||
****************************************************************************/
|
||||
|
||||
#define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 8)
|
||||
#define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 9)
|
||||
|
||||
struct snd_ctl_card_info {
|
||||
int card; /* card number */
|
||||
@@ -1122,6 +1196,9 @@ struct snd_ctl_tlv {
|
||||
#define SNDRV_CTL_IOCTL_RAWMIDI_NEXT_DEVICE _IOWR('U', 0x40, int)
|
||||
#define SNDRV_CTL_IOCTL_RAWMIDI_INFO _IOWR('U', 0x41, struct snd_rawmidi_info)
|
||||
#define SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE _IOW('U', 0x42, int)
|
||||
#define SNDRV_CTL_IOCTL_UMP_NEXT_DEVICE _IOWR('U', 0x43, int)
|
||||
#define SNDRV_CTL_IOCTL_UMP_ENDPOINT_INFO _IOWR('U', 0x44, struct snd_ump_endpoint_info)
|
||||
#define SNDRV_CTL_IOCTL_UMP_BLOCK_INFO _IOWR('U', 0x45, struct snd_ump_block_info)
|
||||
#define SNDRV_CTL_IOCTL_POWER _IOWR('U', 0xd0, int)
|
||||
#define SNDRV_CTL_IOCTL_POWER_STATE _IOR('U', 0xd1, int)
|
||||
|
||||
|
@@ -308,6 +308,8 @@ struct snd_emu10k1_fx8010_info {
|
||||
#define EMU10K1_GPR_TRANSLATION_BASS 2
|
||||
#define EMU10K1_GPR_TRANSLATION_TREBLE 3
|
||||
#define EMU10K1_GPR_TRANSLATION_ONOFF 4
|
||||
#define EMU10K1_GPR_TRANSLATION_NEGATE 5
|
||||
#define EMU10K1_GPR_TRANSLATION_NEG_TABLE100 6
|
||||
|
||||
enum emu10k1_ctl_elem_iface {
|
||||
EMU10K1_CTL_ELEM_IFACE_MIXER = 2, /* virtual mixer device */
|
||||
@@ -328,9 +330,9 @@ struct snd_emu10k1_fx8010_control_gpr {
|
||||
unsigned int vcount; /* visible count */
|
||||
unsigned int count; /* count of GPR (1..16) */
|
||||
unsigned short gpr[32]; /* GPR number(s) */
|
||||
unsigned int value[32]; /* initial values */
|
||||
unsigned int min; /* minimum range */
|
||||
unsigned int max; /* maximum range */
|
||||
int value[32]; /* initial values */
|
||||
int min; /* minimum range */
|
||||
int max; /* maximum range */
|
||||
unsigned int translation; /* translation type (EMU10K1_GPR_TRANSLATION*) */
|
||||
const unsigned int *tlv;
|
||||
};
|
||||
|
Reference in New Issue
Block a user