uaudio.h revision 190633
1229997Sken/* $FreeBSD: head/sys/dev/sound/usb/uaudio.h 190633 2009-04-01 20:23:47Z piso $ */
2229997Sken
3229997Sken/*-
4232604Strasz * Copyright (c) 2000-2002 Hiroyuki Aizu <aizu@navi.org>
5229997Sken *
6229997Sken * Redistribution and use in source and binary forms, with or without
7232604Strasz * modification, are permitted provided that the following conditions
8232604Strasz * are met:
9232604Strasz * 1. Redistributions of source code must retain the above copyright
10229997Sken *    notice, this list of conditions and the following disclaimer.
11229997Sken * 2. Redistributions in binary form must reproduce the above copyright
12229997Sken *    notice, this list of conditions and the following disclaimer in the
13229997Sken *    documentation and/or other materials provided with the distribution.
14229997Sken *
15229997Sken * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16229997Sken * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17229997Sken * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18229997Sken * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19229997Sken * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20229997Sken * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21229997Sken * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22229997Sken * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23229997Sken * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24229997Sken * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25229997Sken * SUCH DAMAGE.
26229997Sken */
27229997Sken
28229997Sken/* prototypes from "uaudio.c" used by "uaudio_pcm.c" */
29229997Sken
30229997Skenstruct uaudio_chan;
31229997Skenstruct uaudio_softc;
32229997Skenstruct snd_dbuf;
33229997Skenstruct snd_mixer;
34229997Skenstruct pcm_channel;
35229997Sken
36229997Skenextern int	uaudio_attach_sub(device_t dev, kobj_class_t mixer_class,
37229997Sken		    kobj_class_t chan_class);
38229997Skenextern int	uaudio_detach_sub(device_t dev);
39229997Skenextern void	*uaudio_chan_init(struct uaudio_softc *sc, struct snd_dbuf *b,
40229997Sken		    struct pcm_channel *c, int dir);
41229997Skenextern int	uaudio_chan_free(struct uaudio_chan *ch);
42229997Skenextern int	uaudio_chan_set_param_blocksize(struct uaudio_chan *ch,
43229997Sken		    uint32_t blocksize);
44229997Skenextern int	uaudio_chan_set_param_fragments(struct uaudio_chan *ch,
45229997Sken		    uint32_t blocksize, uint32_t blockcount);
46229997Skenextern int	uaudio_chan_set_param_speed(struct uaudio_chan *ch,
47229997Sken		    uint32_t speed);
48229997Skenextern int	uaudio_chan_getptr(struct uaudio_chan *ch);
49229997Skenextern struct	pcmchan_caps *uaudio_chan_getcaps(struct uaudio_chan *ch);
50229997Skenextern int	uaudio_chan_set_param_format(struct uaudio_chan *ch,
51229997Sken		    uint32_t format);
52264274Smavextern int	uaudio_chan_start(struct uaudio_chan *ch);
53229997Skenextern int	uaudio_chan_stop(struct uaudio_chan *ch);
54229997Skenextern int	uaudio_mixer_init_sub(struct uaudio_softc *sc,
55229997Sken		    struct snd_mixer *m);
56229997Skenextern int	uaudio_mixer_uninit_sub(struct uaudio_softc *sc);
57229997Skenextern void	uaudio_mixer_set(struct uaudio_softc *sc, unsigned type,
58229997Sken		    unsigned left, unsigned right);
59229997Skenextern uint32_t	uaudio_mixer_setrecsrc(struct uaudio_softc *sc, uint32_t src);
60229997Sken
61229997Skenint	uaudio_get_vendor(device_t dev);
62229997Skenint	uaudio_get_product(device_t dev);
63229997Skenint	uaudio_get_release(device_t dev);
64229997Sken