Home | History | Annotate | Download | only in sound
      1 #ifndef __SOUND_HWDEP_H
      2 #define __SOUND_HWDEP_H
      3 
      4 /*
      5  *  Hardware dependent layer
      6  *  Copyright (c) by Jaroslav Kysela <perex (at) 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 
     28 struct snd_hwdep;
     29 
     30 struct snd_hwdep_ops {
     31 	long long (*llseek) (struct snd_hwdep *hw, struct file * file, long long offset, int orig);
     32 	long (*read) (struct snd_hwdep *hw, char __user *buf, long count, loff_t *offset);
     33 	long (*write) (struct snd_hwdep *hw, const char __user *buf, long count, loff_t *offset);
     34 	int (*open) (struct snd_hwdep * hw, struct file * file);
     35 	int (*release) (struct snd_hwdep *hw, struct file * file);
     36 	unsigned int (*poll) (struct snd_hwdep *hw, struct file * file, poll_table * wait);
     37 	int (*ioctl) (struct snd_hwdep *hw, struct file * file, unsigned int cmd, unsigned long arg);
     38 	int (*ioctl_compat) (struct snd_hwdep *hw, struct file * file, unsigned int cmd, unsigned long arg);
     39 	int (*mmap) (struct snd_hwdep *hw, struct file * file, struct vm_area_struct * vma);
     40 	int (*dsp_status) (struct snd_hwdep *hw, struct snd_hwdep_dsp_status *status);
     41 	int (*dsp_load) (struct snd_hwdep *hw, struct snd_hwdep_dsp_image *image);
     42 };
     43 
     44 struct snd_hwdep {
     45 	struct snd_card *card;
     46 	struct list_head list;
     47 	int device;
     48 	char id[32];
     49 	char name[80];
     50 	int iface;
     51 
     52 #ifdef CONFIG_SND_OSSEMUL
     53 	char oss_dev[32];
     54 	int oss_type;
     55 	int ossreg;
     56 #endif
     57 
     58 	struct snd_hwdep_ops ops;
     59 	wait_queue_head_t open_wait;
     60 	void *private_data;
     61 	void (*private_free) (struct snd_hwdep *hwdep);
     62 
     63 	struct mutex open_mutex;
     64 	int used;
     65 	unsigned int dsp_loaded;
     66 	unsigned int exclusive: 1;
     67 };
     68 
     69 extern int snd_hwdep_new(struct snd_card *card, char *id, int device,
     70 			 struct snd_hwdep **rhwdep);
     71 
     72 #endif /* __SOUND_HWDEP_H */
     73