]> www.infradead.org Git - users/willy/linux.git/commitdiff
tools include UAPI: Sync sound/asound.h copy with the kernel sources
authorArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 30 Sep 2024 15:15:18 +0000 (12:15 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 30 Sep 2024 15:21:54 +0000 (12:21 -0300)
Picking the changes from:

  37745918e0e7575b ("ALSA: timer: Introduce virtual userspace-driven timers")

Which entails no changes in the tooling side as it only introduces new
SNDRV_TIMER_IOCTL_ ioctls, and the ones tracked by scripts in
tools/perf/trace/beauty/ are only SNDRV_PCM_IOCTL_ and SNDRV_CTL_IOCTL_,
we still need to support SNDRV_TIMER_IOCTL_ ones, but that probably will
be one of the first for a BTF enumeration based approach :-)

This silences this perf tools build warning:

  diff -u tools/perf/trace/beauty/include/uapi/sound/asound.h include/uapi/sound/asound.h

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ivan Orlov <ivan.orlov0322@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Takashi Iwai <tiwai@suse.de>
Link: https://lore.kernel.org/lkml/ZvrB-g_E7g2ArlYW@x1
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/trace/beauty/include/uapi/sound/asound.h

index 8bf7e8a0eb6f03a8026e07f1968568fb099e7c9f..4cd513215bcd8f74b56fbff8376d0b891babb22d 100644 (file)
@@ -869,7 +869,7 @@ struct snd_ump_block_info {
  *  Timer section - /dev/snd/timer
  */
 
-#define SNDRV_TIMER_VERSION            SNDRV_PROTOCOL_VERSION(2, 0, 7)
+#define SNDRV_TIMER_VERSION            SNDRV_PROTOCOL_VERSION(2, 0, 8)
 
 enum {
        SNDRV_TIMER_CLASS_NONE = -1,
@@ -894,6 +894,7 @@ enum {
 #define SNDRV_TIMER_GLOBAL_RTC         1       /* unused */
 #define SNDRV_TIMER_GLOBAL_HPET                2
 #define SNDRV_TIMER_GLOBAL_HRTIMER     3
+#define SNDRV_TIMER_GLOBAL_UDRIVEN     4
 
 /* info flags */
 #define SNDRV_TIMER_FLG_SLAVE          (1<<0)  /* cannot be controlled */
@@ -974,6 +975,18 @@ struct snd_timer_status {
 };
 #endif
 
+/*
+ * This structure describes the userspace-driven timer. Such timers are purely virtual,
+ * and can only be triggered from software (for instance, by userspace application).
+ */
+struct snd_timer_uinfo {
+       /* To pretend being a normal timer, we need to know the resolution in ns. */
+       __u64 resolution;
+       int fd;
+       unsigned int id;
+       unsigned char reserved[16];
+};
+
 #define SNDRV_TIMER_IOCTL_PVERSION     _IOR('T', 0x00, int)
 #define SNDRV_TIMER_IOCTL_NEXT_DEVICE  _IOWR('T', 0x01, struct snd_timer_id)
 #define SNDRV_TIMER_IOCTL_TREAD_OLD    _IOW('T', 0x02, int)
@@ -990,6 +1003,8 @@ struct snd_timer_status {
 #define SNDRV_TIMER_IOCTL_CONTINUE     _IO('T', 0xa2)
 #define SNDRV_TIMER_IOCTL_PAUSE                _IO('T', 0xa3)
 #define SNDRV_TIMER_IOCTL_TREAD64      _IOW('T', 0xa4, int)
+#define SNDRV_TIMER_IOCTL_CREATE       _IOWR('T', 0xa5, struct snd_timer_uinfo)
+#define SNDRV_TIMER_IOCTL_TRIGGER      _IO('T', 0xa6)
 
 #if __BITS_PER_LONG == 64
 #define SNDRV_TIMER_IOCTL_TREAD SNDRV_TIMER_IOCTL_TREAD_OLD