|  | @@ -0,0 +1,289 @@
 | 
	
		
			
				|  |  | +diff -ur a/generic/include/sound/asound.h b/generic/include/sound/asound.h
 | 
	
		
			
				|  |  | +--- a/generic/include/sound/asound.h	2019-10-15 12:26:39.634141383 -0400
 | 
	
		
			
				|  |  | ++++ b/generic/include/sound/asound.h	2020-01-30 21:43:56.477450321 -0500
 | 
	
		
			
				|  |  | +@@ -35,6 +35,8 @@
 | 
	
		
			
				|  |  | + #include <time.h>
 | 
	
		
			
				|  |  | + #endif
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | ++#include <asm/byteorder.h>
 | 
	
		
			
				|  |  | ++
 | 
	
		
			
				|  |  | + /*
 | 
	
		
			
				|  |  | +  *  protocol version
 | 
	
		
			
				|  |  | +  */
 | 
	
		
			
				|  |  | +@@ -154,7 +156,7 @@
 | 
	
		
			
				|  |  | +  *                                                                           *
 | 
	
		
			
				|  |  | +  *****************************************************************************/
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | +-#define SNDRV_PCM_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 14)
 | 
	
		
			
				|  |  | ++#define SNDRV_PCM_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 15)
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | + typedef unsigned long snd_pcm_uframes_t;
 | 
	
		
			
				|  |  | + typedef signed long snd_pcm_sframes_t;
 | 
	
		
			
				|  |  | +@@ -301,7 +303,9 @@
 | 
	
		
			
				|  |  | + #define SNDRV_PCM_INFO_DRAIN_TRIGGER	0x40000000		/* internal kernel flag - trigger in drain */
 | 
	
		
			
				|  |  | + #define SNDRV_PCM_INFO_FIFO_IN_FRAMES	0x80000000	/* internal kernel flag - FIFO size is in frames */
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | +-
 | 
	
		
			
				|  |  | ++#if (__BITS_PER_LONG == 32 && defined(__USE_TIME_BITS64)) || defined __KERNEL__
 | 
	
		
			
				|  |  | ++#define __SND_STRUCT_TIME64
 | 
	
		
			
				|  |  | ++#endif
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | + typedef int __bitwise snd_pcm_state_t;
 | 
	
		
			
				|  |  | + #define	SNDRV_PCM_STATE_OPEN		((__force snd_pcm_state_t) 0) /* stream is open */
 | 
	
		
			
				|  |  | +@@ -317,8 +321,17 @@
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | + enum {
 | 
	
		
			
				|  |  | + 	SNDRV_PCM_MMAP_OFFSET_DATA = 0x00000000,
 | 
	
		
			
				|  |  | +-	SNDRV_PCM_MMAP_OFFSET_STATUS = 0x80000000,
 | 
	
		
			
				|  |  | +-	SNDRV_PCM_MMAP_OFFSET_CONTROL = 0x81000000,
 | 
	
		
			
				|  |  | ++	SNDRV_PCM_MMAP_OFFSET_STATUS_OLD = 0x80000000,
 | 
	
		
			
				|  |  | ++	SNDRV_PCM_MMAP_OFFSET_CONTROL_OLD = 0x81000000,
 | 
	
		
			
				|  |  | ++	SNDRV_PCM_MMAP_OFFSET_STATUS_NEW = 0x82000000,
 | 
	
		
			
				|  |  | ++	SNDRV_PCM_MMAP_OFFSET_CONTROL_NEW = 0x83000000,
 | 
	
		
			
				|  |  | ++#ifdef __SND_STRUCT_TIME64
 | 
	
		
			
				|  |  | ++	SNDRV_PCM_MMAP_OFFSET_STATUS = SNDRV_PCM_MMAP_OFFSET_STATUS_NEW,
 | 
	
		
			
				|  |  | ++	SNDRV_PCM_MMAP_OFFSET_CONTROL = SNDRV_PCM_MMAP_OFFSET_CONTROL_NEW,
 | 
	
		
			
				|  |  | ++#else
 | 
	
		
			
				|  |  | ++	SNDRV_PCM_MMAP_OFFSET_STATUS = SNDRV_PCM_MMAP_OFFSET_STATUS_OLD,
 | 
	
		
			
				|  |  | ++	SNDRV_PCM_MMAP_OFFSET_CONTROL = SNDRV_PCM_MMAP_OFFSET_CONTROL_OLD,
 | 
	
		
			
				|  |  | ++#endif
 | 
	
		
			
				|  |  | + };
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | + union snd_pcm_sync_id {
 | 
	
		
			
				|  |  | +@@ -456,8 +469,13 @@
 | 
	
		
			
				|  |  | + 	SNDRV_PCM_AUDIO_TSTAMP_TYPE_LAST = SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_SYNCHRONIZED
 | 
	
		
			
				|  |  | + };
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | ++#ifndef __KERNEL__
 | 
	
		
			
				|  |  | ++/* explicit padding avoids incompatibility between i386 and x86-64 */
 | 
	
		
			
				|  |  | ++typedef struct { unsigned char pad[sizeof(time_t) - sizeof(int)] } __time_pad;
 | 
	
		
			
				|  |  | ++
 | 
	
		
			
				|  |  | + struct snd_pcm_status {
 | 
	
		
			
				|  |  | + 	snd_pcm_state_t state;		/* stream state */
 | 
	
		
			
				|  |  | ++	__time_pad pad1;		/* align to timespec */
 | 
	
		
			
				|  |  | + 	struct timespec trigger_tstamp;	/* time when stream was started/stopped/paused */
 | 
	
		
			
				|  |  | + 	struct timespec tstamp;		/* reference timestamp */
 | 
	
		
			
				|  |  | + 	snd_pcm_uframes_t appl_ptr;	/* appl ptr */
 | 
	
		
			
				|  |  | +@@ -473,17 +491,48 @@
 | 
	
		
			
				|  |  | + 	__u32 audio_tstamp_accuracy;	/* in ns units, only valid if indicated in audio_tstamp_data */
 | 
	
		
			
				|  |  | + 	unsigned char reserved[52-2*sizeof(struct timespec)]; /* must be filled with zero */
 | 
	
		
			
				|  |  | + };
 | 
	
		
			
				|  |  | ++#endif
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | +-struct snd_pcm_mmap_status {
 | 
	
		
			
				|  |  | ++/*
 | 
	
		
			
				|  |  | ++ * For mmap operations, we need the 64-bit layout, both for compat mode,
 | 
	
		
			
				|  |  | ++ * and for y2038 compatibility. For 64-bit applications, the two definitions
 | 
	
		
			
				|  |  | ++ * are identical, so we keep the traditional version.
 | 
	
		
			
				|  |  | ++ */
 | 
	
		
			
				|  |  | ++#ifdef __SND_STRUCT_TIME64
 | 
	
		
			
				|  |  | ++#define __snd_pcm_mmap_status64		snd_pcm_mmap_status
 | 
	
		
			
				|  |  | ++#define __snd_pcm_mmap_control64	snd_pcm_mmap_control
 | 
	
		
			
				|  |  | ++#define __snd_pcm_sync_ptr64		snd_pcm_sync_ptr
 | 
	
		
			
				|  |  | ++#ifdef __KERNEL__
 | 
	
		
			
				|  |  | ++#define __snd_timespec64		__kernel_timespec
 | 
	
		
			
				|  |  | ++#else
 | 
	
		
			
				|  |  | ++#define __snd_timespec64		timespec
 | 
	
		
			
				|  |  | ++#endif
 | 
	
		
			
				|  |  | ++struct __snd_timespec {
 | 
	
		
			
				|  |  | ++	__s32 tv_sec;
 | 
	
		
			
				|  |  | ++	__s32 tv_nsec;
 | 
	
		
			
				|  |  | ++};
 | 
	
		
			
				|  |  | ++#else
 | 
	
		
			
				|  |  | ++#define __snd_pcm_mmap_status		snd_pcm_mmap_status
 | 
	
		
			
				|  |  | ++#define __snd_pcm_mmap_control		snd_pcm_mmap_control
 | 
	
		
			
				|  |  | ++#define __snd_pcm_sync_ptr		snd_pcm_sync_ptr
 | 
	
		
			
				|  |  | ++#define __snd_timespec			timespec
 | 
	
		
			
				|  |  | ++struct __snd_timespec64 {
 | 
	
		
			
				|  |  | ++	__s64 tv_sec;
 | 
	
		
			
				|  |  | ++	__s64 tv_nsec;
 | 
	
		
			
				|  |  | ++};
 | 
	
		
			
				|  |  | ++
 | 
	
		
			
				|  |  | ++#endif
 | 
	
		
			
				|  |  | ++
 | 
	
		
			
				|  |  | ++struct __snd_pcm_mmap_status {
 | 
	
		
			
				|  |  | + 	snd_pcm_state_t state;		/* RO: state - SNDRV_PCM_STATE_XXXX */
 | 
	
		
			
				|  |  | + 	int pad1;			/* Needed for 64 bit alignment */
 | 
	
		
			
				|  |  | + 	snd_pcm_uframes_t hw_ptr;	/* RO: hw ptr (0...boundary-1) */
 | 
	
		
			
				|  |  | +-	struct timespec tstamp;		/* Timestamp */
 | 
	
		
			
				|  |  | ++	struct __snd_timespec tstamp;	/* Timestamp */
 | 
	
		
			
				|  |  | + 	snd_pcm_state_t suspended_state; /* RO: suspended stream state */
 | 
	
		
			
				|  |  | +-	struct timespec audio_tstamp;	/* from sample counter or wall clock */
 | 
	
		
			
				|  |  | ++	struct __snd_timespec audio_tstamp; /* from sample counter or wall clock */
 | 
	
		
			
				|  |  | + };
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | +-struct snd_pcm_mmap_control {
 | 
	
		
			
				|  |  | ++struct __snd_pcm_mmap_control {
 | 
	
		
			
				|  |  | + 	snd_pcm_uframes_t appl_ptr;	/* RW: appl ptr (0...boundary-1) */
 | 
	
		
			
				|  |  | + 	snd_pcm_uframes_t avail_min;	/* RW: min available frames for wakeup */
 | 
	
		
			
				|  |  | + };
 | 
	
		
			
				|  |  | +@@ -492,14 +541,59 @@
 | 
	
		
			
				|  |  | + #define SNDRV_PCM_SYNC_PTR_APPL		(1<<1)	/* get appl_ptr from driver (r/w op) */
 | 
	
		
			
				|  |  | + #define SNDRV_PCM_SYNC_PTR_AVAIL_MIN	(1<<2)	/* get avail_min from driver */
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | +-struct snd_pcm_sync_ptr {
 | 
	
		
			
				|  |  | ++struct __snd_pcm_sync_ptr {
 | 
	
		
			
				|  |  | + 	unsigned int flags;
 | 
	
		
			
				|  |  | + 	union {
 | 
	
		
			
				|  |  | +-		struct snd_pcm_mmap_status status;
 | 
	
		
			
				|  |  | ++		struct __snd_pcm_mmap_status status;
 | 
	
		
			
				|  |  | + 		unsigned char reserved[64];
 | 
	
		
			
				|  |  | + 	} s;
 | 
	
		
			
				|  |  | + 	union {
 | 
	
		
			
				|  |  | +-		struct snd_pcm_mmap_control control;
 | 
	
		
			
				|  |  | ++		struct __snd_pcm_mmap_control control;
 | 
	
		
			
				|  |  | ++		unsigned char reserved[64];
 | 
	
		
			
				|  |  | ++	} c;
 | 
	
		
			
				|  |  | ++};
 | 
	
		
			
				|  |  | ++
 | 
	
		
			
				|  |  | ++#if defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
 | 
	
		
			
				|  |  | ++typedef char __pad_before_uframe[sizeof(__u64) - sizeof(snd_pcm_uframes_t)];
 | 
	
		
			
				|  |  | ++typedef char __pad_after_uframe[0];
 | 
	
		
			
				|  |  | ++#endif
 | 
	
		
			
				|  |  | ++
 | 
	
		
			
				|  |  | ++#if defined(__BYTE_ORDER) ? __BYTE_ORDER == __LITTLE_ENDIAN : defined(__LITTLE_ENDIAN)
 | 
	
		
			
				|  |  | ++typedef char __pad_before_uframe[0];
 | 
	
		
			
				|  |  | ++typedef char __pad_after_uframe[sizeof(__u64) - sizeof(snd_pcm_uframes_t)];
 | 
	
		
			
				|  |  | ++#endif
 | 
	
		
			
				|  |  | ++
 | 
	
		
			
				|  |  | ++struct __snd_pcm_mmap_status64 {
 | 
	
		
			
				|  |  | ++	__s32 state;			/* RO: state - SNDRV_PCM_STATE_XXXX */
 | 
	
		
			
				|  |  | ++	__u32 pad1;			/* Needed for 64 bit alignment */
 | 
	
		
			
				|  |  | ++	__pad_before_uframe __pad1;
 | 
	
		
			
				|  |  | ++	snd_pcm_uframes_t hw_ptr;	/* RO: hw ptr (0...boundary-1) */
 | 
	
		
			
				|  |  | ++	__pad_after_uframe __pad2;
 | 
	
		
			
				|  |  | ++	struct __snd_timespec64 tstamp;	/* Timestamp */
 | 
	
		
			
				|  |  | ++	__s32 suspended_state;		/* RO: suspended stream state */
 | 
	
		
			
				|  |  | ++	__u32 pad3;			/* Needed for 64 bit alignment */
 | 
	
		
			
				|  |  | ++	struct __snd_timespec64 audio_tstamp; /* sample counter or wall clock */
 | 
	
		
			
				|  |  | ++};
 | 
	
		
			
				|  |  | ++
 | 
	
		
			
				|  |  | ++struct __snd_pcm_mmap_control64 {
 | 
	
		
			
				|  |  | ++	__pad_before_uframe __pad1;
 | 
	
		
			
				|  |  | ++	snd_pcm_uframes_t appl_ptr;	 /* RW: appl ptr (0...boundary-1) */
 | 
	
		
			
				|  |  | ++	__pad_before_uframe __pad2;
 | 
	
		
			
				|  |  | ++
 | 
	
		
			
				|  |  | ++	__pad_before_uframe __pad3;
 | 
	
		
			
				|  |  | ++	snd_pcm_uframes_t  avail_min;	 /* RW: min available frames for wakeup */
 | 
	
		
			
				|  |  | ++	__pad_after_uframe __pad4;
 | 
	
		
			
				|  |  | ++};
 | 
	
		
			
				|  |  | ++
 | 
	
		
			
				|  |  | ++struct __snd_pcm_sync_ptr64 {
 | 
	
		
			
				|  |  | ++	__u32 flags;
 | 
	
		
			
				|  |  | ++	__u32 pad1;
 | 
	
		
			
				|  |  | ++	union {
 | 
	
		
			
				|  |  | ++		struct __snd_pcm_mmap_status64 status;
 | 
	
		
			
				|  |  | ++		unsigned char reserved[64];
 | 
	
		
			
				|  |  | ++	} s;
 | 
	
		
			
				|  |  | ++	union {
 | 
	
		
			
				|  |  | ++		struct __snd_pcm_mmap_control64 control;
 | 
	
		
			
				|  |  | + 		unsigned char reserved[64];
 | 
	
		
			
				|  |  | + 	} c;
 | 
	
		
			
				|  |  | + };
 | 
	
		
			
				|  |  | +@@ -584,6 +678,8 @@
 | 
	
		
			
				|  |  | + #define SNDRV_PCM_IOCTL_STATUS		_IOR('A', 0x20, struct snd_pcm_status)
 | 
	
		
			
				|  |  | + #define SNDRV_PCM_IOCTL_DELAY		_IOR('A', 0x21, snd_pcm_sframes_t)
 | 
	
		
			
				|  |  | + #define SNDRV_PCM_IOCTL_HWSYNC		_IO('A', 0x22)
 | 
	
		
			
				|  |  | ++#define __SNDRV_PCM_IOCTL_SYNC_PTR	_IOWR('A', 0x23, struct __snd_pcm_sync_ptr)
 | 
	
		
			
				|  |  | ++#define __SNDRV_PCM_IOCTL_SYNC_PTR64	_IOWR('A', 0x23, struct __snd_pcm_sync_ptr64)
 | 
	
		
			
				|  |  | + #define SNDRV_PCM_IOCTL_SYNC_PTR	_IOWR('A', 0x23, struct snd_pcm_sync_ptr)
 | 
	
		
			
				|  |  | + #define SNDRV_PCM_IOCTL_STATUS_EXT	_IOWR('A', 0x24, struct snd_pcm_status)
 | 
	
		
			
				|  |  | + #define SNDRV_PCM_IOCTL_CHANNEL_INFO	_IOR('A', 0x32, struct snd_pcm_channel_info)
 | 
	
		
			
				|  |  | +@@ -614,7 +710,7 @@
 | 
	
		
			
				|  |  | +  *  Raw MIDI section - /dev/snd/midi??
 | 
	
		
			
				|  |  | +  */
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | +-#define SNDRV_RAWMIDI_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 0)
 | 
	
		
			
				|  |  | ++#define SNDRV_RAWMIDI_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 1)
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | + enum {
 | 
	
		
			
				|  |  | + 	SNDRV_RAWMIDI_STREAM_OUTPUT = 0,
 | 
	
		
			
				|  |  | +@@ -648,13 +744,16 @@
 | 
	
		
			
				|  |  | + 	unsigned char reserved[16];	/* reserved for future use */
 | 
	
		
			
				|  |  | + };
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | ++#ifndef __KERNEL__
 | 
	
		
			
				|  |  | + struct snd_rawmidi_status {
 | 
	
		
			
				|  |  | + 	int stream;
 | 
	
		
			
				|  |  | ++	__time_pad pad1;
 | 
	
		
			
				|  |  | + 	struct timespec tstamp;		/* Timestamp */
 | 
	
		
			
				|  |  | + 	size_t avail;			/* available bytes */
 | 
	
		
			
				|  |  | + 	size_t xruns;			/* count of overruns since last status (in bytes) */
 | 
	
		
			
				|  |  | + 	unsigned char reserved[16];	/* reserved for future use */
 | 
	
		
			
				|  |  | + };
 | 
	
		
			
				|  |  | ++#endif
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | + #define SNDRV_RAWMIDI_IOCTL_PVERSION	_IOR('W', 0x00, int)
 | 
	
		
			
				|  |  | + #define SNDRV_RAWMIDI_IOCTL_INFO	_IOR('W', 0x01, struct snd_rawmidi_info)
 | 
	
		
			
				|  |  | +@@ -667,7 +766,7 @@
 | 
	
		
			
				|  |  | +  *  Timer section - /dev/snd/timer
 | 
	
		
			
				|  |  | +  */
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | +-#define SNDRV_TIMER_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 6)
 | 
	
		
			
				|  |  | ++#define SNDRV_TIMER_VERSION		SNDRV_PROTOCOL_VERSION(2, 0, 7)
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | + enum {
 | 
	
		
			
				|  |  | + 	SNDRV_TIMER_CLASS_NONE = -1,
 | 
	
		
			
				|  |  | +@@ -761,6 +860,7 @@
 | 
	
		
			
				|  |  | + 	unsigned char reserved[60];	/* reserved */
 | 
	
		
			
				|  |  | + };
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | ++#ifndef __KERNEL__
 | 
	
		
			
				|  |  | + struct snd_timer_status {
 | 
	
		
			
				|  |  | + 	struct timespec tstamp;		/* Timestamp - last update */
 | 
	
		
			
				|  |  | + 	unsigned int resolution;	/* current period resolution in ns */
 | 
	
		
			
				|  |  | +@@ -769,10 +869,11 @@
 | 
	
		
			
				|  |  | + 	unsigned int queue;		/* used queue size */
 | 
	
		
			
				|  |  | + 	unsigned char reserved[64];	/* reserved */
 | 
	
		
			
				|  |  | + };
 | 
	
		
			
				|  |  | ++#endif
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | + #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		_IOW('T', 0x02, int)
 | 
	
		
			
				|  |  | ++#define SNDRV_TIMER_IOCTL_TREAD_OLD	_IOW('T', 0x02, int)
 | 
	
		
			
				|  |  | + #define SNDRV_TIMER_IOCTL_GINFO		_IOWR('T', 0x03, struct snd_timer_ginfo)
 | 
	
		
			
				|  |  | + #define SNDRV_TIMER_IOCTL_GPARAMS	_IOW('T', 0x04, struct snd_timer_gparams)
 | 
	
		
			
				|  |  | + #define SNDRV_TIMER_IOCTL_GSTATUS	_IOWR('T', 0x05, struct snd_timer_gstatus)
 | 
	
		
			
				|  |  | +@@ -785,6 +886,15 @@
 | 
	
		
			
				|  |  | + #define SNDRV_TIMER_IOCTL_STOP		_IO('T', 0xa1)
 | 
	
		
			
				|  |  | + #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)
 | 
	
		
			
				|  |  | ++
 | 
	
		
			
				|  |  | ++#if __BITS_PER_LONG == 64
 | 
	
		
			
				|  |  | ++#define SNDRV_TIMER_IOCTL_TREAD SNDRV_TIMER_IOCTL_TREAD_OLD
 | 
	
		
			
				|  |  | ++#else
 | 
	
		
			
				|  |  | ++#define SNDRV_TIMER_IOCTL_TREAD ((sizeof(__kernel_long_t) >= sizeof(time_t)) ? \
 | 
	
		
			
				|  |  | ++				 SNDRV_TIMER_IOCTL_TREAD_OLD : \
 | 
	
		
			
				|  |  | ++				 SNDRV_TIMER_IOCTL_TREAD64)
 | 
	
		
			
				|  |  | ++#endif
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | + struct snd_timer_read {
 | 
	
		
			
				|  |  | + 	unsigned int resolution;
 | 
	
		
			
				|  |  | +@@ -810,11 +920,15 @@
 | 
	
		
			
				|  |  | + 	SNDRV_TIMER_EVENT_MRESUME = SNDRV_TIMER_EVENT_RESUME + 10,
 | 
	
		
			
				|  |  | + };
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | ++#ifndef __KERNEL__
 | 
	
		
			
				|  |  | + struct snd_timer_tread {
 | 
	
		
			
				|  |  | + 	int event;
 | 
	
		
			
				|  |  | ++	__time_pad pad1;
 | 
	
		
			
				|  |  | + 	struct timespec tstamp;
 | 
	
		
			
				|  |  | + 	unsigned int val;
 | 
	
		
			
				|  |  | ++	__time_pad pad2;
 | 
	
		
			
				|  |  | + };
 | 
	
		
			
				|  |  | ++#endif
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | + /****************************************************************************
 | 
	
		
			
				|  |  | +  *                                                                          *
 | 
	
		
			
				|  |  | +@@ -955,8 +1069,7 @@
 | 
	
		
			
				|  |  | + 		} bytes;
 | 
	
		
			
				|  |  | + 		struct snd_aes_iec958 iec958;
 | 
	
		
			
				|  |  | + 	} value;		/* RO */
 | 
	
		
			
				|  |  | +-	struct timespec tstamp;
 | 
	
		
			
				|  |  | +-	unsigned char reserved[128-sizeof(struct timespec)];
 | 
	
		
			
				|  |  | ++	unsigned char reserved[128];
 | 
	
		
			
				|  |  | + };
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | + struct snd_ctl_tlv {
 |