Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
hwdep.h
Go to the documentation of this file.
1 #ifndef __SOUND_HWDEP_H
2 #define __SOUND_HWDEP_H
3 
4 /*
5  * Hardware dependent layer
6  * Copyright (c) by Jaroslav Kysela <[email protected]>
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 
28 struct snd_hwdep;
29 
30 /* hwdep file ops; all ops can be NULL */
31 struct 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  unsigned int (*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,
50  int (*dsp_load)(struct snd_hwdep *hw,
51  struct snd_hwdep_dsp_image *image);
52 };
53 
54 struct 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  char oss_dev[32];
64  int oss_type;
65  int ossreg;
66 #endif
67 
70  void *private_data;
71  void (*private_free) (struct snd_hwdep *hwdep);
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 
79 extern int snd_hwdep_new(struct snd_card *card, char *id, int device,
80  struct snd_hwdep **rhwdep);
81 
82 #endif /* __SOUND_HWDEP_H */