1 | /* SPDX-License-Identifier: GPL-2.0-or-later */
|
---|
2 | #ifndef __SOUND_HWDEP_H
|
---|
3 | #define __SOUND_HWDEP_H
|
---|
4 |
|
---|
5 | /*
|
---|
6 | * Hardware dependent layer
|
---|
7 | * Copyright (c) by Jaroslav Kysela <perex@perex.cz>
|
---|
8 | */
|
---|
9 |
|
---|
10 | #include <sound/asound.h>
|
---|
11 | #include <linux/poll.h>
|
---|
12 |
|
---|
13 | struct snd_hwdep;
|
---|
14 |
|
---|
15 | /* hwdep file ops; all ops can be NULL */
|
---|
16 | struct snd_hwdep_ops {
|
---|
17 | long long (*llseek)(struct snd_hwdep *hw, struct file *file,
|
---|
18 | long long offset, int orig);
|
---|
19 | long (*read)(struct snd_hwdep *hw, char __user *buf,
|
---|
20 | long count, loff_t *offset);
|
---|
21 | long (*write)(struct snd_hwdep *hw, const char __user *buf,
|
---|
22 | long count, loff_t *offset);
|
---|
23 | int (*open)(struct snd_hwdep *hw, struct file * file);
|
---|
24 | int (*release)(struct snd_hwdep *hw, struct file * file);
|
---|
25 | __poll_t (*poll)(struct snd_hwdep *hw, struct file *file,
|
---|
26 | poll_table *wait);
|
---|
27 | int (*ioctl)(struct snd_hwdep *hw, struct file *file,
|
---|
28 | unsigned int cmd, unsigned long arg);
|
---|
29 | int (*ioctl_compat)(struct snd_hwdep *hw, struct file *file,
|
---|
30 | unsigned int cmd, unsigned long arg);
|
---|
31 | int (*mmap)(struct snd_hwdep *hw, struct file *file,
|
---|
32 | struct vm_area_struct *vma);
|
---|
33 | int (*dsp_status)(struct snd_hwdep *hw,
|
---|
34 | struct snd_hwdep_dsp_status *status);
|
---|
35 | int (*dsp_load)(struct snd_hwdep *hw,
|
---|
36 | struct snd_hwdep_dsp_image *image);
|
---|
37 | };
|
---|
38 |
|
---|
39 | struct snd_hwdep {
|
---|
40 | struct snd_card *card;
|
---|
41 | struct list_head list;
|
---|
42 | int device;
|
---|
43 | char id[32];
|
---|
44 | char name[80];
|
---|
45 | int iface;
|
---|
46 |
|
---|
47 | #ifdef CONFIG_SND_OSSEMUL
|
---|
48 | int oss_type;
|
---|
49 | int ossreg;
|
---|
50 | #endif
|
---|
51 |
|
---|
52 | struct snd_hwdep_ops ops;
|
---|
53 | wait_queue_head_t open_wait;
|
---|
54 | void *private_data;
|
---|
55 | void (*private_free) (struct snd_hwdep *hwdep);
|
---|
56 | struct device *dev;
|
---|
57 |
|
---|
58 | struct mutex open_mutex;
|
---|
59 | int used; /* reference counter */
|
---|
60 | unsigned int dsp_loaded; /* bit fields of loaded dsp indices */
|
---|
61 | unsigned int exclusive:1; /* exclusive access mode */
|
---|
62 | };
|
---|
63 |
|
---|
64 | extern int snd_hwdep_new(struct snd_card *card, char *id, int device,
|
---|
65 | struct snd_hwdep **rhwdep);
|
---|
66 |
|
---|
67 | #endif /* __SOUND_HWDEP_H */
|
---|