linux/include/sound/hwdep.h
<<
>>
Prefs
   1#ifndef __SOUND_HWDEP_H
   2#define __SOUND_HWDEP_H
   3
   4/*
   5 *  Hardware dependent layer 
   6 *  Copyright (c) by Jaroslav Kysela <perex@perex.cz>
   7 *
   8 *
   9 *   This program is free software; you can redistribute it and/or modify
  10 *   it under the terms of the GNU General Public License as published by
  11 *   the Free Software Foundation; either version 2 of the License, or
  12 *   (at your option) any later version.
  13 *
  14 *   This program is distributed in the hope that it will be useful,
  15 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  16 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17 *   GNU General Public License for more details.
  18 *
  19 *   You should have received a copy of the GNU General Public License
  20 *   along with this program; if not, write to the Free Software
  21 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  22 *
  23 */
  24
  25#include <sound/asound.h>
  26#include <linux/poll.h>
  27
  28struct snd_hwdep;
  29
  30/* hwdep file ops; all ops can be NULL */
  31struct snd_hwdep_ops {
  32        long long (*llseek)(struct snd_hwdep *hw, struct file *file,
  33                            long long offset, int orig);
  34        long (*read)(struct snd_hwdep *hw, char __user *buf,
  35                     long count, loff_t *offset);
  36        long (*write)(struct snd_hwdep *hw, const char __user *buf,
  37                      long count, loff_t *offset);
  38        int (*open)(struct snd_hwdep *hw, struct file * file);
  39        int (*release)(struct snd_hwdep *hw, struct file * file);
  40        __poll_t (*poll)(struct snd_hwdep *hw, struct file *file,
  41                             poll_table *wait);
  42        int (*ioctl)(struct snd_hwdep *hw, struct file *file,
  43                     unsigned int cmd, unsigned long arg);
  44        int (*ioctl_compat)(struct snd_hwdep *hw, struct file *file,
  45                            unsigned int cmd, unsigned long arg);
  46        int (*mmap)(struct snd_hwdep *hw, struct file *file,
  47                    struct vm_area_struct *vma);
  48        int (*dsp_status)(struct snd_hwdep *hw,
  49                          struct snd_hwdep_dsp_status *status);
  50        int (*dsp_load)(struct snd_hwdep *hw,
  51                        struct snd_hwdep_dsp_image *image);
  52};
  53
  54struct snd_hwdep {
  55        struct snd_card *card;
  56        struct list_head list;
  57        int device;
  58        char id[32];
  59        char name[80];
  60        int iface;
  61
  62#ifdef CONFIG_SND_OSSEMUL
  63        int oss_type;
  64        int ossreg;
  65#endif
  66
  67        struct snd_hwdep_ops ops;
  68        wait_queue_head_t open_wait;
  69        void *private_data;
  70        void (*private_free) (struct snd_hwdep *hwdep);
  71        struct device dev;
  72
  73        struct mutex open_mutex;
  74        int used;                       /* reference counter */
  75        unsigned int dsp_loaded;        /* bit fields of loaded dsp indices */
  76        unsigned int exclusive:1;       /* exclusive access mode */
  77};
  78
  79extern int snd_hwdep_new(struct snd_card *card, char *id, int device,
  80                         struct snd_hwdep **rhwdep);
  81
  82#endif /* __SOUND_HWDEP_H */
  83