linux/include/sound/pcm_oss.h
<<
>>
Prefs
   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
  10struct 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
  24struct 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
  53struct snd_pcm_oss_file {
  54        struct snd_pcm_substream *streams[2];
  55};
  56
  57struct snd_pcm_oss_substream {
  58        unsigned oss: 1;                        /* oss mode */
  59        struct snd_pcm_oss_setup setup;         /* active setup */
  60};
  61
  62struct 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
  70struct snd_pcm_oss {
  71        int reg;
  72        unsigned int reg_mask;
  73};
  74
  75#endif /* __SOUND_PCM_OSS_H */
  76