• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /* SPDX-License-Identifier: GPL-2.0-or-later */
2  #ifndef __SOUND_PCM_OSS_H
3  #define __SOUND_PCM_OSS_H
4  
5  /*
6   *  Digital Audio (PCM) - OSS compatibility abstract layer
7   *  Copyright (c) by Jaroslav Kysela <perex@perex.cz>
8   */
9  
10  struct snd_pcm_oss_setup {
11  	char *task_name;
12  	unsigned int disable:1,
13  		     direct:1,
14  		     block:1,
15  		     nonblock:1,
16  		     partialfrag:1,
17  		     nosilence:1,
18  		     buggyptr:1;
19  	unsigned int periods;
20  	unsigned int period_size;
21  	struct snd_pcm_oss_setup *next;
22  };
23  
24  struct snd_pcm_oss_runtime {
25  	unsigned params: 1,			/* format/parameter change */
26  		 prepare: 1,			/* need to prepare the operation */
27  		 trigger: 1,			/* trigger flag */
28  		 sync_trigger: 1;		/* sync trigger flag */
29  	int rate;				/* requested rate */
30  	int format;				/* requested OSS format */
31  	unsigned int channels;			/* requested channels */
32  	unsigned int fragshift;
33  	unsigned int maxfrags;
34  	unsigned int subdivision;		/* requested subdivision */
35  	size_t period_bytes;			/* requested period size */
36  	size_t period_frames;			/* period frames for poll */
37  	size_t period_ptr;			/* actual write pointer to period */
38  	unsigned int periods;
39  	size_t buffer_bytes;			/* requested buffer size */
40  	size_t bytes;				/* total # bytes processed */
41  	size_t mmap_bytes;
42  	char *buffer;				/* vmallocated period */
43  	size_t buffer_used;			/* used length from period buffer */
44  	struct mutex params_lock;
45  	atomic_t rw_ref;		/* concurrent read/write accesses */
46  #ifdef CONFIG_SND_PCM_OSS_PLUGINS
47  	struct snd_pcm_plugin *plugin_first;
48  	struct snd_pcm_plugin *plugin_last;
49  #endif
50  	unsigned int prev_hw_ptr_period;
51  };
52  
53  struct snd_pcm_oss_file {
54  	struct snd_pcm_substream *streams[2];
55  };
56  
57  struct snd_pcm_oss_substream {
58  	unsigned oss: 1;			/* oss mode */
59  	struct snd_pcm_oss_setup setup;		/* active setup */
60  };
61  
62  struct snd_pcm_oss_stream {
63  	struct snd_pcm_oss_setup *setup_list;	/* setup list */
64  	struct mutex setup_mutex;
65  #ifdef CONFIG_SND_VERBOSE_PROCFS
66  	struct snd_info_entry *proc_entry;
67  #endif
68  };
69  
70  struct snd_pcm_oss {
71  	int reg;
72  	unsigned int reg_mask;
73  };
74  
75  #endif /* __SOUND_PCM_OSS_H */
76