History

Merge tag 'sound-6.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound updates from Takashi Iwai: "Lots of changes as usual, but the only significant stuff in ALSA core part is the MIDI 2.0 support, while ASoC core kept receiving the code refactoring. The majority of changes are seen rather in device drivers, and quite a few new drivers can be found there. Here we go, some highlights: ALSA and ASoC Core: - Support of MIDI 2.0 devices: rawmidi and sequencer API have been extended for the support of the new UMP (Universal MIDI Packet) protocol, USB audio driver got the USB MIDI 2.0 interface support - Continued refactoring around ASoC DAI links and the ordering of trigger callbacks - PCM ABI extension for better drain support ASoC Drivers: - Conversions of many drivers to use maple tree based caches - Everlasting improvement works on ASoC Intel drivers - Compressed audio support for Qualcomm - Support for AMD SoundWire, Analog Devices SSM3515, Google Chameleon, Ingenic X1000, Intel systems with various CODECs, Loongson platforms, Maxim MAX98388, Mediatek MT8188, Nuvoton NAU8825C, NXP platforms with NAU8822, Qualcomm WSA884x, StarFive JH7110, Texas Instruments TAS2781 HD-audio: - Quirks for HP and ASUS machines - CS35L41 HD-audio codec fixes - Loongson HD-audio support Misc: - A new virtual PCM test driver for kselftests - Continued refactoring and improvements on the legacy emu10k1 driver" * tag 'sound-6.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (556 commits) ALSA: hda/realtek: Enable mute/micmute LEDs and limit mic boost on EliteBook ASoC: hdmi-codec: fix channel info for compressed formats ALSA: pcm: fix ELD constraints for (E)AC3, DTS(-HD) and MLP formats ASoC: core: Always store of_node when getting DAI link component ASoC: tas2781: Fix error code in tas2781_load_calibration() ASoC: amd: update pm_runtime enable sequence ALSA: ump: Export MIDI1 / UMP conversion helpers ASoC: tas2781: fix Kconfig dependencies ASoC: amd: acp: remove acp poweroff function ASoC: amd: acp: clear pdm dma interrupt mask ASoC: codecs: max98090: Allow dsp_a mode ASoC: qcom: common: add default jack dapm pins ASoC: loongson: fix address space confusion ASoC: dt-bindings: microchip,sama7g5-pdmc: Simplify "microchip,mic-pos" constraints ASoC: tegra: Remove stale comments in AHUB ASoC: tegra: Use normal system sleep for ASRC ALSA: hda/realtek: Add quirks for ROG ALLY CS35l41 audio ASoC: fsl-asoc-card: Allow passing the number of slots in use ASoC: codecs: wsa884x: Add WSA884x family of speakers ASoC: dt-bindings: qcom,wsa8840: Add WSA884x family of speakers ...

Linus Torvalds committed 3 years ago

Commit f8824e12 parents 86e203e d6048fd607 files · +33532 −7069Browse files

Showing the changes to include/uapi (3 of 607 files). Show all

Unified · Split

3 files
  1. include/uapi/sound/asequencer.h +69 −17
  2. include/uapi/sound/asound.h +79 −2
  3. include/uapi/sound/emu10k1.h +5 −3
include/uapi/sound/asequencer.h+69−17
@@ -10,7 +10,7 @@ · 9 unmodified lines
10#include <sound/asound.h>10#include <sound/asound.h>
11 11
12/** version of the sequencer */12/** version of the sequencer */
13#define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 2)13#define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 3)
14 14
15/**15/**
16 * definition of sequencer event types16 * definition of sequencer event types
@@ -174,6 +174,7 @@ struct snd_seq_connect { · 157 unmodified lines
174#define SNDRV_SEQ_PRIORITY_HIGH (1<<4) /* event should be processed before others */174#define SNDRV_SEQ_PRIORITY_HIGH (1<<4) /* event should be processed before others */
175#define SNDRV_SEQ_PRIORITY_MASK (1<<4)175#define SNDRV_SEQ_PRIORITY_MASK (1<<4)
176 176
177#define SNDRV_SEQ_EVENT_UMP (1<<5) /* event holds a UMP packet */
177 178
178 /* note event */179 /* note event */
179struct snd_seq_ev_note {180struct snd_seq_ev_note {
@@ -252,6 +253,19 @@ struct snd_seq_ev_quote { · 72 unmodified lines
252 struct snd_seq_event *event; /* quoted event */253 struct snd_seq_event *event; /* quoted event */
253} __attribute__((packed));254} __attribute__((packed));
254 255
256union snd_seq_event_data { /* event data... */
257 struct snd_seq_ev_note note;
258 struct snd_seq_ev_ctrl control;
259 struct snd_seq_ev_raw8 raw8;
260 struct snd_seq_ev_raw32 raw32;
261 struct snd_seq_ev_ext ext;
262 struct snd_seq_ev_queue_control queue;
263 union snd_seq_timestamp time;
264 struct snd_seq_addr addr;
265 struct snd_seq_connect connect;
266 struct snd_seq_result result;
267 struct snd_seq_ev_quote quote;
268};
255 269
256 /* sequencer event */270 /* sequencer event */
257struct snd_seq_event {271struct snd_seq_event {
@@ -262,25 +276,27 @@ struct snd_seq_event { · 4 unmodified lines
262 unsigned char queue; /* schedule queue */276 unsigned char queue; /* schedule queue */
263 union snd_seq_timestamp time; /* schedule time */277 union snd_seq_timestamp time; /* schedule time */
264 278
265
266 struct snd_seq_addr source; /* source address */279 struct snd_seq_addr source; /* source address */
267 struct snd_seq_addr dest; /* destination address */280 struct snd_seq_addr dest; /* destination address */
268 281
269 union { /* event data... */282 union snd_seq_event_data data;
270 struct snd_seq_ev_note note;
271 struct snd_seq_ev_ctrl control;
272 struct snd_seq_ev_raw8 raw8;
273 struct snd_seq_ev_raw32 raw32;
274 struct snd_seq_ev_ext ext;
275 struct snd_seq_ev_queue_control queue;
276 union snd_seq_timestamp time;
277 struct snd_seq_addr addr;
278 struct snd_seq_connect connect;
279 struct snd_seq_result result;
280 struct snd_seq_ev_quote quote;
281 } data;
282};283};
283 284
285 /* (compatible) event for UMP-capable clients */
286struct snd_seq_ump_event {
287 snd_seq_event_type_t type; /* event type */
288 unsigned char flags; /* event flags */
289 char tag;
290 unsigned char queue; /* schedule queue */
291 union snd_seq_timestamp time; /* schedule time */
292 struct snd_seq_addr source; /* source address */
293 struct snd_seq_addr dest; /* destination address */
294
295 union {
296 union snd_seq_event_data data;
297 unsigned int ump[4];
298 };
299};
284 300
285/*301/*
286 * bounce event - stored as variable size data302 * bounce event - stored as variable size data
@@ -331,6 +347,7 @@ typedef int __bitwise snd_seq_client_type_t; · 44 unmodified lines
331#define SNDRV_SEQ_FILTER_BROADCAST (1U<<0) /* accept broadcast messages */347#define SNDRV_SEQ_FILTER_BROADCAST (1U<<0) /* accept broadcast messages */
332#define SNDRV_SEQ_FILTER_MULTICAST (1U<<1) /* accept multicast messages */348#define SNDRV_SEQ_FILTER_MULTICAST (1U<<1) /* accept multicast messages */
333#define SNDRV_SEQ_FILTER_BOUNCE (1U<<2) /* accept bounce event in error */349#define SNDRV_SEQ_FILTER_BOUNCE (1U<<2) /* accept bounce event in error */
350#define SNDRV_SEQ_FILTER_NO_CONVERT (1U<<30) /* don't convert UMP events */
334#define SNDRV_SEQ_FILTER_USE_EVENT (1U<<31) /* use event filter */351#define SNDRV_SEQ_FILTER_USE_EVENT (1U<<31) /* use event filter */
335 352
336struct snd_seq_client_info {353struct snd_seq_client_info {
@@ -344,9 +361,18 @@ struct snd_seq_client_info { · 7 unmodified lines
344 int event_lost; /* number of lost events */361 int event_lost; /* number of lost events */
345 int card; /* RO: card number[kernel] */362 int card; /* RO: card number[kernel] */
346 int pid; /* RO: pid[user] */363 int pid; /* RO: pid[user] */
347 char reserved[56]; /* for future use */364 unsigned int midi_version; /* MIDI version */
365 unsigned int group_filter; /* UMP group filter bitmap
366 * (bit 0 = groupless messages,
367 * bit 1-16 = messages for groups 1-16)
368 */
369 char reserved[48]; /* for future use */
348};370};
349 371
372/* MIDI version numbers in client info */
373#define SNDRV_SEQ_CLIENT_LEGACY_MIDI 0 /* Legacy client */
374#define SNDRV_SEQ_CLIENT_UMP_MIDI_1_0 1 /* UMP MIDI 1.0 */
375#define SNDRV_SEQ_CLIENT_UMP_MIDI_2_0 2 /* UMP MIDI 2.0 */
350 376
351/* client pool size */377/* client pool size */
352struct snd_seq_client_pool {378struct snd_seq_client_pool {
@@ -406,6 +432,8 @@ struct snd_seq_remove_events { · 53 unmodified lines
406#define SNDRV_SEQ_PORT_CAP_SUBS_READ (1<<5) /* allow read subscription */432#define SNDRV_SEQ_PORT_CAP_SUBS_READ (1<<5) /* allow read subscription */
407#define SNDRV_SEQ_PORT_CAP_SUBS_WRITE (1<<6) /* allow write subscription */433#define SNDRV_SEQ_PORT_CAP_SUBS_WRITE (1<<6) /* allow write subscription */
408#define SNDRV_SEQ_PORT_CAP_NO_EXPORT (1<<7) /* routing not allowed */434#define SNDRV_SEQ_PORT_CAP_NO_EXPORT (1<<7) /* routing not allowed */
435#define SNDRV_SEQ_PORT_CAP_INACTIVE (1<<8) /* inactive port */
436#define SNDRV_SEQ_PORT_CAP_UMP_ENDPOINT (1<<9) /* MIDI 2.0 UMP Endpoint port */
409 437
410 /* port type */438 /* port type */
411#define SNDRV_SEQ_PORT_TYPE_SPECIFIC (1<<0) /* hardware specific */439#define SNDRV_SEQ_PORT_TYPE_SPECIFIC (1<<0) /* hardware specific */
@@ -415,6 +443,7 @@ struct snd_seq_remove_events { · 3 unmodified lines
415#define SNDRV_SEQ_PORT_TYPE_MIDI_XG (1<<4) /* XG compatible device */443#define SNDRV_SEQ_PORT_TYPE_MIDI_XG (1<<4) /* XG compatible device */
416#define SNDRV_SEQ_PORT_TYPE_MIDI_MT32 (1<<5) /* MT-32 compatible device */444#define SNDRV_SEQ_PORT_TYPE_MIDI_MT32 (1<<5) /* MT-32 compatible device */
417#define SNDRV_SEQ_PORT_TYPE_MIDI_GM2 (1<<6) /* General MIDI 2 compatible device */445#define SNDRV_SEQ_PORT_TYPE_MIDI_GM2 (1<<6) /* General MIDI 2 compatible device */
446#define SNDRV_SEQ_PORT_TYPE_MIDI_UMP (1<<7) /* UMP */
418 447
419/* other standards...*/448/* other standards...*/
420#define SNDRV_SEQ_PORT_TYPE_SYNTH (1<<10) /* Synth device (no MIDI compatible - direct wavetable) */449#define SNDRV_SEQ_PORT_TYPE_SYNTH (1<<10) /* Synth device (no MIDI compatible - direct wavetable) */
@@ -432,6 +461,12 @@ struct snd_seq_remove_events { · 11 unmodified lines
432#define SNDRV_SEQ_PORT_FLG_TIMESTAMP (1<<1)461#define SNDRV_SEQ_PORT_FLG_TIMESTAMP (1<<1)
433#define SNDRV_SEQ_PORT_FLG_TIME_REAL (1<<2)462#define SNDRV_SEQ_PORT_FLG_TIME_REAL (1<<2)
434 463
464/* port direction */
465#define SNDRV_SEQ_PORT_DIR_UNKNOWN 0
466#define SNDRV_SEQ_PORT_DIR_INPUT 1
467#define SNDRV_SEQ_PORT_DIR_OUTPUT 2
468#define SNDRV_SEQ_PORT_DIR_BIDIRECTION 3
469
435struct snd_seq_port_info {470struct snd_seq_port_info {
436 struct snd_seq_addr addr; /* client/port numbers */471 struct snd_seq_addr addr; /* client/port numbers */
437 char name[64]; /* port name */472 char name[64]; /* port name */
@@ -448,7 +483,9 @@ struct snd_seq_port_info { · 10 unmodified lines
448 void *kernel; /* reserved for kernel use (must be NULL) */483 void *kernel; /* reserved for kernel use (must be NULL) */
449 unsigned int flags; /* misc. conditioning */484 unsigned int flags; /* misc. conditioning */
450 unsigned char time_queue; /* queue # for timestamping */485 unsigned char time_queue; /* queue # for timestamping */
451 char reserved[59]; /* for future use */486 unsigned char direction; /* port usage direction (r/w/bidir) */
487 unsigned char ump_group; /* 0 = UMP EP (no conversion), 1-16 = UMP group number */
488 char reserved[57]; /* for future use */
452};489};
453 490
454 491
@@ -552,6 +589,18 @@ struct snd_seq_query_subs { · 97 unmodified lines
552 char reserved[64]; /* for future use */589 char reserved[64]; /* for future use */
553};590};
554 591
592/*
593 * UMP-specific information
594 */
595/* type of UMP info query */
596#define SNDRV_SEQ_CLIENT_UMP_INFO_ENDPOINT 0
597#define SNDRV_SEQ_CLIENT_UMP_INFO_BLOCK 1
598
599struct snd_seq_client_ump_info {
600 int client; /* client number to inquire/set */
601 int type; /* type to inquire/set */
602 unsigned char info[512]; /* info (either UMP ep or block info) */
603} __packed;
555 604
556/*605/*
557 * IOCTL commands606 * IOCTL commands
@@ -561,9 +610,12 @@ struct snd_seq_query_subs { · 3 unmodified lines
561#define SNDRV_SEQ_IOCTL_CLIENT_ID _IOR ('S', 0x01, int)610#define SNDRV_SEQ_IOCTL_CLIENT_ID _IOR ('S', 0x01, int)
562#define SNDRV_SEQ_IOCTL_SYSTEM_INFO _IOWR('S', 0x02, struct snd_seq_system_info)611#define SNDRV_SEQ_IOCTL_SYSTEM_INFO _IOWR('S', 0x02, struct snd_seq_system_info)
563#define SNDRV_SEQ_IOCTL_RUNNING_MODE _IOWR('S', 0x03, struct snd_seq_running_info)612#define SNDRV_SEQ_IOCTL_RUNNING_MODE _IOWR('S', 0x03, struct snd_seq_running_info)
613#define SNDRV_SEQ_IOCTL_USER_PVERSION _IOW('S', 0x04, int)
564 614
565#define SNDRV_SEQ_IOCTL_GET_CLIENT_INFO _IOWR('S', 0x10, struct snd_seq_client_info)615#define SNDRV_SEQ_IOCTL_GET_CLIENT_INFO _IOWR('S', 0x10, struct snd_seq_client_info)
566#define SNDRV_SEQ_IOCTL_SET_CLIENT_INFO _IOW ('S', 0x11, struct snd_seq_client_info)616#define SNDRV_SEQ_IOCTL_SET_CLIENT_INFO _IOW ('S', 0x11, struct snd_seq_client_info)
617#define SNDRV_SEQ_IOCTL_GET_CLIENT_UMP_INFO _IOWR('S', 0x12, struct snd_seq_client_ump_info)
618#define SNDRV_SEQ_IOCTL_SET_CLIENT_UMP_INFO _IOWR('S', 0x13, struct snd_seq_client_ump_info)
567 619
568#define SNDRV_SEQ_IOCTL_CREATE_PORT _IOWR('S', 0x20, struct snd_seq_port_info)620#define SNDRV_SEQ_IOCTL_CREATE_PORT _IOWR('S', 0x20, struct snd_seq_port_info)
569#define SNDRV_SEQ_IOCTL_DELETE_PORT _IOW ('S', 0x21, struct snd_seq_port_info)621#define SNDRV_SEQ_IOCTL_DELETE_PORT _IOW ('S', 0x21, struct snd_seq_port_info)
include/uapi/sound/asound.h+79−2
@@ -274,6 +274,7 @@ typedef int __bitwise snd_pcm_subformat_t; · 273 unmodified lines
274#define SNDRV_PCM_INFO_DOUBLE 0x00000004 /* Double buffering needed for PCM start/stop */274#define SNDRV_PCM_INFO_DOUBLE 0x00000004 /* Double buffering needed for PCM start/stop */
275#define SNDRV_PCM_INFO_BATCH 0x00000010 /* double buffering */275#define SNDRV_PCM_INFO_BATCH 0x00000010 /* double buffering */
276#define SNDRV_PCM_INFO_SYNC_APPLPTR 0x00000020 /* need the explicit sync of appl_ptr update */276#define SNDRV_PCM_INFO_SYNC_APPLPTR 0x00000020 /* need the explicit sync of appl_ptr update */
277#define SNDRV_PCM_INFO_PERFECT_DRAIN 0x00000040 /* silencing at the end of stream is not required */
277#define SNDRV_PCM_INFO_INTERLEAVED 0x00000100 /* channels are interleaved */278#define SNDRV_PCM_INFO_INTERLEAVED 0x00000100 /* channels are interleaved */
278#define SNDRV_PCM_INFO_NONINTERLEAVED 0x00000200 /* channels are not interleaved */279#define SNDRV_PCM_INFO_NONINTERLEAVED 0x00000200 /* channels are not interleaved */
279#define SNDRV_PCM_INFO_COMPLEX 0x00000400 /* complex frame organization (mmap only) */280#define SNDRV_PCM_INFO_COMPLEX 0x00000400 /* complex frame organization (mmap only) */
@@ -383,6 +384,9 @@ typedef int snd_pcm_hw_param_t; · 103 unmodified lines
383#define SNDRV_PCM_HW_PARAMS_NORESAMPLE (1<<0) /* avoid rate resampling */384#define SNDRV_PCM_HW_PARAMS_NORESAMPLE (1<<0) /* avoid rate resampling */
384#define SNDRV_PCM_HW_PARAMS_EXPORT_BUFFER (1<<1) /* export buffer */385#define SNDRV_PCM_HW_PARAMS_EXPORT_BUFFER (1<<1) /* export buffer */
385#define SNDRV_PCM_HW_PARAMS_NO_PERIOD_WAKEUP (1<<2) /* disable period wakeups */386#define SNDRV_PCM_HW_PARAMS_NO_PERIOD_WAKEUP (1<<2) /* disable period wakeups */
387#define SNDRV_PCM_HW_PARAMS_NO_DRAIN_SILENCE (1<<3) /* suppress drain with the filling
388 * of the silence samples
389 */
386 390
387struct snd_interval {391struct snd_interval {
388 unsigned int min, max;392 unsigned int min, max;
@@ -708,7 +712,7 @@ enum { · 319 unmodified lines
708 * Raw MIDI section - /dev/snd/midi??712 * Raw MIDI section - /dev/snd/midi??
709 */713 */
710 714
711#define SNDRV_RAWMIDI_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 2)715#define SNDRV_RAWMIDI_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 4)
712 716
713enum {717enum {
714 SNDRV_RAWMIDI_STREAM_OUTPUT = 0,718 SNDRV_RAWMIDI_STREAM_OUTPUT = 0,
@@ -719,6 +723,7 @@ enum { · 4 unmodified lines
719#define SNDRV_RAWMIDI_INFO_OUTPUT 0x00000001723#define SNDRV_RAWMIDI_INFO_OUTPUT 0x00000001
720#define SNDRV_RAWMIDI_INFO_INPUT 0x00000002724#define SNDRV_RAWMIDI_INFO_INPUT 0x00000002
721#define SNDRV_RAWMIDI_INFO_DUPLEX 0x00000004725#define SNDRV_RAWMIDI_INFO_DUPLEX 0x00000004
726#define SNDRV_RAWMIDI_INFO_UMP 0x00000008
722 727
723struct snd_rawmidi_info {728struct snd_rawmidi_info {
724 unsigned int device; /* RO/WR (control): device number */729 unsigned int device; /* RO/WR (control): device number */
@@ -779,6 +784,72 @@ struct snd_rawmidi_status { · 54 unmodified lines
779};784};
780#endif785#endif
781 786
787/* UMP EP info flags */
788#define SNDRV_UMP_EP_INFO_STATIC_BLOCKS 0x01
789
790/* UMP EP Protocol / JRTS capability bits */
791#define SNDRV_UMP_EP_INFO_PROTO_MIDI_MASK 0x0300
792#define SNDRV_UMP_EP_INFO_PROTO_MIDI1 0x0100 /* MIDI 1.0 */
793#define SNDRV_UMP_EP_INFO_PROTO_MIDI2 0x0200 /* MIDI 2.0 */
794#define SNDRV_UMP_EP_INFO_PROTO_JRTS_MASK 0x0003
795#define SNDRV_UMP_EP_INFO_PROTO_JRTS_TX 0x0001 /* JRTS Transmit */
796#define SNDRV_UMP_EP_INFO_PROTO_JRTS_RX 0x0002 /* JRTS Receive */
797
798/* UMP Endpoint information */
799struct snd_ump_endpoint_info {
800 int card; /* card number */
801 int device; /* device number */
802 unsigned int flags; /* additional info */
803 unsigned int protocol_caps; /* protocol capabilities */
804 unsigned int protocol; /* current protocol */
805 unsigned int num_blocks; /* # of function blocks */
806 unsigned short version; /* UMP major/minor version */
807 unsigned short family_id; /* MIDI device family ID */
808 unsigned short model_id; /* MIDI family model ID */
809 unsigned int manufacturer_id; /* MIDI manufacturer ID */
810 unsigned char sw_revision[4]; /* software revision */
811 unsigned short padding;
812 unsigned char name[128]; /* endpoint name string */
813 unsigned char product_id[128]; /* unique product id string */
814 unsigned char reserved[32];
815} __packed;
816
817/* UMP direction */
818#define SNDRV_UMP_DIR_INPUT 0x01
819#define SNDRV_UMP_DIR_OUTPUT 0x02
820#define SNDRV_UMP_DIR_BIDIRECTION 0x03
821
822/* UMP block info flags */
823#define SNDRV_UMP_BLOCK_IS_MIDI1 (1U << 0) /* MIDI 1.0 port w/o restrict */
824#define SNDRV_UMP_BLOCK_IS_LOWSPEED (1U << 1) /* 31.25Kbps B/W MIDI1 port */
825
826/* UMP block user-interface hint */
827#define SNDRV_UMP_BLOCK_UI_HINT_UNKNOWN 0x00
828#define SNDRV_UMP_BLOCK_UI_HINT_RECEIVER 0x01
829#define SNDRV_UMP_BLOCK_UI_HINT_SENDER 0x02
830#define SNDRV_UMP_BLOCK_UI_HINT_BOTH 0x03
831
832/* UMP groups and blocks */
833#define SNDRV_UMP_MAX_GROUPS 16
834#define SNDRV_UMP_MAX_BLOCKS 32
835
836/* UMP Block information */
837struct snd_ump_block_info {
838 int card; /* card number */
839 int device; /* device number */
840 unsigned char block_id; /* block ID (R/W) */
841 unsigned char direction; /* UMP direction */
842 unsigned char active; /* Activeness */
843 unsigned char first_group; /* first group ID */
844 unsigned char num_groups; /* number of groups */
845 unsigned char midi_ci_version; /* MIDI-CI support version */
846 unsigned char sysex8_streams; /* max number of sysex8 streams */
847 unsigned char ui_hint; /* user interface hint */
848 unsigned int flags; /* various info flags */
849 unsigned char name[128]; /* block name string */
850 unsigned char reserved[32];
851} __packed;
852
782#define SNDRV_RAWMIDI_IOCTL_PVERSION _IOR('W', 0x00, int)853#define SNDRV_RAWMIDI_IOCTL_PVERSION _IOR('W', 0x00, int)
783#define SNDRV_RAWMIDI_IOCTL_INFO _IOR('W', 0x01, struct snd_rawmidi_info)854#define SNDRV_RAWMIDI_IOCTL_INFO _IOR('W', 0x01, struct snd_rawmidi_info)
784#define SNDRV_RAWMIDI_IOCTL_USER_PVERSION _IOW('W', 0x02, int)855#define SNDRV_RAWMIDI_IOCTL_USER_PVERSION _IOW('W', 0x02, int)
@@ -786,6 +857,9 @@ struct snd_rawmidi_status { · 1 unmodified line
786#define SNDRV_RAWMIDI_IOCTL_STATUS _IOWR('W', 0x20, struct snd_rawmidi_status)857#define SNDRV_RAWMIDI_IOCTL_STATUS _IOWR('W', 0x20, struct snd_rawmidi_status)
787#define SNDRV_RAWMIDI_IOCTL_DROP _IOW('W', 0x30, int)858#define SNDRV_RAWMIDI_IOCTL_DROP _IOW('W', 0x30, int)
788#define SNDRV_RAWMIDI_IOCTL_DRAIN _IOW('W', 0x31, int)859#define SNDRV_RAWMIDI_IOCTL_DRAIN _IOW('W', 0x31, int)
860/* Additional ioctls for UMP rawmidi devices */
861#define SNDRV_UMP_IOCTL_ENDPOINT_INFO _IOR('W', 0x40, struct snd_ump_endpoint_info)
862#define SNDRV_UMP_IOCTL_BLOCK_INFO _IOR('W', 0x41, struct snd_ump_block_info)
789 863
790/*864/*
791 * Timer section - /dev/snd/timer865 * Timer section - /dev/snd/timer
@@ -961,7 +1035,7 @@ struct snd_timer_tread { · 169 unmodified lines
961 * *1035 * *
962 ****************************************************************************/1036 ****************************************************************************/
963 1037
964#define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 8)1038#define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 9)
965 1039
966struct snd_ctl_card_info {1040struct snd_ctl_card_info {
967 int card; /* card number */1041 int card; /* card number */
@@ -1122,6 +1196,9 @@ struct snd_ctl_tlv { · 154 unmodified lines
1122#define SNDRV_CTL_IOCTL_RAWMIDI_NEXT_DEVICE _IOWR('U', 0x40, int)1196#define SNDRV_CTL_IOCTL_RAWMIDI_NEXT_DEVICE _IOWR('U', 0x40, int)
1123#define SNDRV_CTL_IOCTL_RAWMIDI_INFO _IOWR('U', 0x41, struct snd_rawmidi_info)1197#define SNDRV_CTL_IOCTL_RAWMIDI_INFO _IOWR('U', 0x41, struct snd_rawmidi_info)
1124#define SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE _IOW('U', 0x42, int)1198#define SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE _IOW('U', 0x42, int)
1199#define SNDRV_CTL_IOCTL_UMP_NEXT_DEVICE _IOWR('U', 0x43, int)
1200#define SNDRV_CTL_IOCTL_UMP_ENDPOINT_INFO _IOWR('U', 0x44, struct snd_ump_endpoint_info)
1201#define SNDRV_CTL_IOCTL_UMP_BLOCK_INFO _IOWR('U', 0x45, struct snd_ump_block_info)
1125#define SNDRV_CTL_IOCTL_POWER _IOWR('U', 0xd0, int)1202#define SNDRV_CTL_IOCTL_POWER _IOWR('U', 0xd0, int)
1126#define SNDRV_CTL_IOCTL_POWER_STATE _IOR('U', 0xd1, int)1203#define SNDRV_CTL_IOCTL_POWER_STATE _IOR('U', 0xd1, int)
1127 1204
include/uapi/sound/emu10k1.h+5−3
@@ -308,6 +308,8 @@ struct snd_emu10k1_fx8010_info { · 307 unmodified lines
308#define EMU10K1_GPR_TRANSLATION_BASS 2308#define EMU10K1_GPR_TRANSLATION_BASS 2
309#define EMU10K1_GPR_TRANSLATION_TREBLE 3309#define EMU10K1_GPR_TRANSLATION_TREBLE 3
310#define EMU10K1_GPR_TRANSLATION_ONOFF 4310#define EMU10K1_GPR_TRANSLATION_ONOFF 4
311#define EMU10K1_GPR_TRANSLATION_NEGATE 5
312#define EMU10K1_GPR_TRANSLATION_NEG_TABLE100 6
311 313
312enum emu10k1_ctl_elem_iface {314enum emu10k1_ctl_elem_iface {
313 EMU10K1_CTL_ELEM_IFACE_MIXER = 2, /* virtual mixer device */315 EMU10K1_CTL_ELEM_IFACE_MIXER = 2, /* virtual mixer device */
@@ -328,9 +330,9 @@ struct snd_emu10k1_fx8010_control_gpr { · 14 unmodified lines
328 unsigned int vcount; /* visible count */330 unsigned int vcount; /* visible count */
329 unsigned int count; /* count of GPR (1..16) */331 unsigned int count; /* count of GPR (1..16) */
330 unsigned short gpr[32]; /* GPR number(s) */332 unsigned short gpr[32]; /* GPR number(s) */
331 unsigned int value[32]; /* initial values */333 int value[32]; /* initial values */
332 unsigned int min; /* minimum range */334 int min; /* minimum range */
333 unsigned int max; /* maximum range */335 int max; /* maximum range */
334 unsigned int translation; /* translation type (EMU10K1_GPR_TRANSLATION*) */336 unsigned int translation; /* translation type (EMU10K1_GPR_TRANSLATION*) */
335 const unsigned int *tlv;337 const unsigned int *tlv;
336};338};