1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 #ifndef __SOUND_PCM_OSS_H
3 #define __SOUND_PCM_OSS_H
6 * Digital Audio (PCM) - OSS compatibility abstract layer
7 * Copyright (c) by Jaroslav Kysela <perex@perex.cz>
10 struct snd_pcm_oss_setup
{
12 unsigned int disable
:1,
20 unsigned int period_size
;
21 struct snd_pcm_oss_setup
*next
;
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 */
39 size_t buffer_bytes
; /* requested buffer size */
40 size_t bytes
; /* total # bytes processed */
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
;
50 unsigned int prev_hw_ptr_period
;
53 struct snd_pcm_oss_file
{
54 struct snd_pcm_substream
*streams
[2];
57 struct snd_pcm_oss_substream
{
58 unsigned oss
: 1; /* oss mode */
59 struct snd_pcm_oss_setup setup
; /* active setup */
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
;
72 unsigned int reg_mask
;
75 #endif /* __SOUND_PCM_OSS_H */