tools include UAPI: Sync the sound/asound.h copy with the kernel sources
Picking the changes from:01dfa8e969
("ALSA: ump: Add info flag bit for static blocks")e375b8a045
("ALSA: ump: Add more attributes to UMP EP and FB info")30fc139260
("ALSA: ump: Add ioctls to inquiry UMP EP and Block info via control API")127ae6f6da
("ALSA: rawmidi: Skip UMP devices at SNDRV_CTL_IOCTL_RAWMIDI_NEXT_DEVICE")e3a8a5b726
("ALSA: rawmidi: UMP support")a4bb75c4f1
("ALSA: uapi: pcm: control the filling of the silence samples for drain") That harvests some new ioctls: $ tools/perf/trace/beauty/sndrv_ctl_ioctl.sh > before.ctl $ tools/perf/trace/beauty/sndrv_pcm_ioctl.sh > before.pcm $ cp include/uapi/sound/asound.h tools/include/uapi/sound/asound.h $ tools/perf/trace/beauty/sndrv_ctl_ioctl.sh > after.ctl $ tools/perf/trace/beauty/sndrv_pcm_ioctl.sh > after.pcm $ diff -u before.ctl after.ctl --- before.ctl 2023-07-14 10:17:00.319591889 -0300 +++ after.ctl 2023-07-14 10:17:24.668248373 -0300 @@ -22,6 +22,9 @@ [0x40] = "RAWMIDI_NEXT_DEVICE", [0x41] = "RAWMIDI_INFO", [0x42] = "RAWMIDI_PREFER_SUBDEVICE", + [0x43] = "UMP_NEXT_DEVICE", + [0x44] = "UMP_ENDPOINT_INFO", + [0x45] = "UMP_BLOCK_INFO", [0xd0] = "POWER", [0xd1] = "POWER_STATE", }; $ diff -u before.pcm after.pcm $ Now those will be decoded when they appear, see a system wide 'perf trace' session example here: # perf trace -e ioctl --max-events=10 0.000 ( 0.010 ms): gnome-shell/2240 ioctl(fd: 9, cmd: DRM_MODE_RMFB, arg: 0x7ffc0041d54c) = 0 2.444 ( 0.005 ms): wireplumber/2304 ioctl(fd: 47, cmd: TIOCOUTQ, arg: 0x7f16e9afea24) = 0 2.452 ( 0.002 ms): wireplumber/2304 ioctl(fd: 47, cmd: TIOCOUTQ, arg: 0x7f16e9afea24) = 0 11.348 ( 0.010 ms): gnome-shell/2240 ioctl(fd: 14, cmd: DRM_I915_IRQ_WAIT, arg: 0x7ffc0041ccf0) = 0 11.406 ( 0.037 ms): gnome-shel:cs0/2259 ioctl(fd: 14, cmd: DRM_I915_IRQ_EMIT, arg: 0x7f3cf69fdc60) = 0 11.476 ( 0.009 ms): gnome-shell/2240 ioctl(fd: 9, cmd: DRM_MODE_ADDFB2, arg: 0x7ffc0041ce50) = 0 11.497 ( 0.019 ms): gnome-shell/2240 ioctl(fd: 9, cmd: DRM_MODE_ATOMIC, arg: 0x7ffc0041cdf0) = 0 12.481 ( 0.020 ms): firefox:cs0/3651 ioctl(fd: 40, cmd: DRM_I915_IRQ_EMIT, arg: 0x7f1c365fea60) = 0 12.529 ( 0.009 ms): firefox:cs0/3651 ioctl(fd: 40, cmd: DRM_I915_IRQ_EMIT, arg: 0x7f1c365feab0) = 0 12.624 ( 0.018 ms): firefox:cs0/3651 ioctl(fd: 40, cmd: DRM_I915_IRQ_EMIT, arg: 0x7f1c365fea30) = 0 # Silencing these perf build warnings: Warning: Kernel ABI header differences: diff -u tools/include/uapi/sound/asound.h include/uapi/sound/asound.h Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Ian Rogers <irogers@google.com> Cc: Jaroslav Kysela <perex@perex.cz> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Takashi Iwai <tiwai@suse.de> Link: https://lore.kernel.org/lkml/ZLFOrTE2+xZBgHGe@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
7b86159355
commit
28e898ffa0
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in New Issue