2005-04-16 15:20:36 -07:00
# ifndef __SOUND_PCM_OSS_H
# define __SOUND_PCM_OSS_H
/*
* Digital Audio ( PCM ) - OSS compatibility abstract layer
* Copyright ( c ) by Jaroslav Kysela < perex @ suse . cz >
*
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
*
*/
2005-11-17 14:01:49 +01:00
struct snd_pcm_oss_setup {
2005-04-16 15:20:36 -07:00
char * task_name ;
unsigned int disable : 1 ,
direct : 1 ,
block : 1 ,
nonblock : 1 ,
partialfrag : 1 ,
2005-09-08 13:48:34 +02:00
nosilence : 1 ,
buggyptr : 1 ;
2005-04-16 15:20:36 -07:00
unsigned int periods ;
unsigned int period_size ;
2005-11-17 14:01:49 +01:00
struct snd_pcm_oss_setup * next ;
2005-04-16 15:20:36 -07:00
} ;
2005-11-17 14:01:49 +01:00
struct snd_pcm_oss_runtime {
2005-04-16 15:20:36 -07:00
unsigned params : 1 , /* format/parameter change */
prepare : 1 , /* need to prepare the operation */
trigger : 1 , /* trigger flag */
sync_trigger : 1 ; /* sync trigger flag */
int rate ; /* requested rate */
int format ; /* requested OSS format */
unsigned int channels ; /* requested channels */
unsigned int fragshift ;
unsigned int maxfrags ;
unsigned int subdivision ; /* requested subdivision */
size_t period_bytes ; /* requested period size */
size_t period_frames ; /* period frames for poll */
size_t period_ptr ; /* actual write pointer to period */
unsigned int periods ;
size_t buffer_bytes ; /* requested buffer size */
size_t bytes ; /* total # bytes processed */
size_t mmap_bytes ;
char * buffer ; /* vmallocated period */
size_t buffer_used ; /* used length from period buffer */
2006-11-14 13:03:19 +01:00
struct mutex params_lock ;
2006-01-13 09:12:11 +01:00
# ifdef CONFIG_SND_PCM_OSS_PLUGINS
2005-11-17 14:01:49 +01:00
struct snd_pcm_plugin * plugin_first ;
struct snd_pcm_plugin * plugin_last ;
2006-01-13 09:12:11 +01:00
# endif
2005-04-16 15:20:36 -07:00
unsigned int prev_hw_ptr_interrupt ;
2005-11-17 14:01:49 +01:00
} ;
2005-04-16 15:20:36 -07:00
2005-11-17 14:01:49 +01:00
struct snd_pcm_oss_file {
struct snd_pcm_substream * streams [ 2 ] ;
} ;
2005-04-16 15:20:36 -07:00
2005-11-17 14:01:49 +01:00
struct snd_pcm_oss_substream {
2005-04-16 15:20:36 -07:00
unsigned oss : 1 ; /* oss mode */
2006-03-27 16:44:52 +02:00
struct snd_pcm_oss_setup setup ; /* active setup */
2005-11-17 14:01:49 +01:00
} ;
2005-04-16 15:20:36 -07:00
2005-11-17 14:01:49 +01:00
struct snd_pcm_oss_stream {
struct snd_pcm_oss_setup * setup_list ; /* setup list */
2006-01-16 16:29:08 +01:00
struct mutex setup_mutex ;
2006-04-25 12:56:04 +02:00
# ifdef CONFIG_SND_VERBOSE_PROCFS
2005-11-17 14:01:49 +01:00
struct snd_info_entry * proc_entry ;
2006-04-25 12:56:04 +02:00
# endif
2005-11-17 14:01:49 +01:00
} ;
2005-04-16 15:20:36 -07:00
2005-11-17 14:01:49 +01:00
struct snd_pcm_oss {
2005-04-16 15:20:36 -07:00
int reg ;
unsigned int reg_mask ;
2005-11-17 14:01:49 +01:00
} ;
2005-04-16 15:20:36 -07:00
# endif /* __SOUND_PCM_OSS_H */