X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Fsound%2Fasound.h;h=23b27b73ab39e0f3f68e25b75a5324a43fd7b8b7;hb=9bf4aaab3e101692164d49b7ca357651eb691cb6;hp=949b8be37ecf252a66307fb4367b7caed2ae21a5;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/include/sound/asound.h b/include/sound/asound.h index 949b8be37..23b27b73a 100644 --- a/include/sound/asound.h +++ b/include/sound/asound.h @@ -33,13 +33,15 @@ #include #include -#if __LITTLE_ENDIAN == 1234 +#ifdef __LITTLE_ENDIAN #define SNDRV_LITTLE_ENDIAN -#elif __BIG_ENDIAN == 4321 +#else +#ifdef __BIG_ENDIAN #define SNDRV_BIG_ENDIAN #else #error "Unsupported endian..." #endif +#endif #else /* !__KERNEL__ */ @@ -135,7 +137,7 @@ struct sndrv_hwdep_dsp_status { struct sndrv_hwdep_dsp_image { unsigned int index; /* W: DSP index */ unsigned char name[64]; /* W: ID (e.g. file name) */ - unsigned char *image; /* W: binary image */ + unsigned char __user *image; /* W: binary image */ size_t length; /* W: size of image in bytes */ unsigned long driver_data; /* W: driver-specific data */ }; @@ -153,7 +155,7 @@ enum { * * *****************************************************************************/ -#define SNDRV_PCM_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 6) +#define SNDRV_PCM_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 7) typedef unsigned long sndrv_pcm_uframes_t; typedef long sndrv_pcm_sframes_t; @@ -428,15 +430,31 @@ struct sndrv_pcm_mmap_control { sndrv_pcm_uframes_t avail_min; /* RW: min available frames for wakeup */ }; +#define SNDRV_PCM_SYNC_PTR_HWSYNC (1<<0) /* execute hwsync */ +#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 sndrv_pcm_sync_ptr { + unsigned int flags; + union { + struct sndrv_pcm_mmap_status status; + unsigned char reserved[64]; + } s; + union { + struct sndrv_pcm_mmap_control control; + unsigned char reserved[64]; + } c; +}; + struct sndrv_xferi { sndrv_pcm_sframes_t result; - void *buf; + void __user *buf; sndrv_pcm_uframes_t frames; }; struct sndrv_xfern { sndrv_pcm_sframes_t result; - void **bufs; + void __user * __user *bufs; sndrv_pcm_uframes_t frames; }; @@ -451,6 +469,7 @@ enum { SNDRV_PCM_IOCTL_STATUS = _IOR('A', 0x20, struct sndrv_pcm_status), SNDRV_PCM_IOCTL_DELAY = _IOR('A', 0x21, sndrv_pcm_sframes_t), SNDRV_PCM_IOCTL_HWSYNC = _IO('A', 0x22), + SNDRV_PCM_IOCTL_SYNC_PTR = _IOWR('A', 0x23, struct sndrv_pcm_sync_ptr), SNDRV_PCM_IOCTL_CHANNEL_INFO = _IOR('A', 0x32, struct sndrv_pcm_channel_info), SNDRV_PCM_IOCTL_PREPARE = _IO('A', 0x40), SNDRV_PCM_IOCTL_RESET = _IO('A', 0x41), @@ -538,7 +557,7 @@ enum { * Timer section - /dev/snd/timer */ -#define SNDRV_TIMER_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 1) +#define SNDRV_TIMER_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 2) enum sndrv_timer_class { SNDRV_TIMER_CLASS_NONE = -1, @@ -619,6 +638,7 @@ struct sndrv_timer_info { #define SNDRV_TIMER_PSFLG_AUTO (1<<0) /* auto start, otherwise one-shot */ #define SNDRV_TIMER_PSFLG_EXCLUSIVE (1<<1) /* exclusive use, precise start/stop/pause/continue */ +#define SNDRV_TIMER_PSFLG_EARLY_EVENT (1<<2) /* write early event to the poll queue */ struct sndrv_timer_params { unsigned int flags; /* flags - SNDRV_MIXER_PSFLG_* */ @@ -667,6 +687,7 @@ enum sndrv_timer_event { SNDRV_TIMER_EVENT_STOP, /* val = 0 */ SNDRV_TIMER_EVENT_CONTINUE, /* val = resolution in ns */ SNDRV_TIMER_EVENT_PAUSE, /* val = 0 */ + SNDRV_TIMER_EVENT_EARLY, /* val = 0, early event */ /* master timer events for slave timer instances */ SNDRV_TIMER_EVENT_MSTART = SNDRV_TIMER_EVENT_START + 10, SNDRV_TIMER_EVENT_MSTOP = SNDRV_TIMER_EVENT_STOP + 10, @@ -757,7 +778,7 @@ struct sndrv_ctl_elem_list { unsigned int space; /* W: count of element IDs to get */ unsigned int used; /* R: count of element IDs set */ unsigned int count; /* R: count of all elements */ - struct sndrv_ctl_elem_id *pids; /* R: IDs */ + struct sndrv_ctl_elem_id __user *pids; /* R: IDs */ unsigned char reserved[50]; };