summaryrefslogtreecommitdiffstats
path: root/sys/dev/pcm/channel.h
diff options
context:
space:
mode:
authorcg <cg@FreeBSD.org>1999-09-01 04:08:39 +0000
committercg <cg@FreeBSD.org>1999-09-01 04:08:39 +0000
commit73a7a67d13cba01eb39397ff54125ce8d3e6f8cc (patch)
tree45f897f70e6c72dbb1af7c4e6103dfa70ae3542b /sys/dev/pcm/channel.h
parentfeefbc8c0eaa6a6e695c1e9c3514be8d22e881ea (diff)
downloadFreeBSD-src-73a7a67d13cba01eb39397ff54125ce8d3e6f8cc.zip
FreeBSD-src-73a7a67d13cba01eb39397ff54125ce8d3e6f8cc.tar.gz
say hello to newpcm. it is not yet enabled, requiring new pnp code from dfr
to compile successfully. further details will be provided in the commit enabling newpcm.
Diffstat (limited to 'sys/dev/pcm/channel.h')
-rw-r--r--sys/dev/pcm/channel.h80
1 files changed, 80 insertions, 0 deletions
diff --git a/sys/dev/pcm/channel.h b/sys/dev/pcm/channel.h
new file mode 100644
index 0000000..8667a9f
--- /dev/null
+++ b/sys/dev/pcm/channel.h
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 1999 Cameron Grant <gandalf@vilnya.demon.co.uk>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id$
+ */
+
+int chn_write(pcm_channel *c, struct uio *buf);
+int chn_read(pcm_channel *c, struct uio *buf);
+int chn_sync(pcm_channel *c, int threshold);
+int chn_flush(pcm_channel *c);
+int chn_poll(pcm_channel *c, int ev, struct proc *p);
+
+int chn_init(pcm_channel *c, void *devinfo, int dir);
+int chn_setdir(pcm_channel *c, int dir);
+int chn_reset(pcm_channel *c);
+int chn_setvolume(pcm_channel *c, int left, int right);
+int chn_setspeed(pcm_channel *c, int speed);
+int chn_setformat(pcm_channel *c, u_int32_t fmt);
+int chn_setblocksize(pcm_channel *c, int blksz);
+int chn_trigger(pcm_channel *c, int go);
+int chn_getptr(pcm_channel *c);
+pcmchan_caps *chn_getcaps(pcm_channel *c);
+
+int chn_allocbuf(snd_dbuf *b, bus_dma_tag_t parent_dmat);
+void chn_resetbuf(pcm_channel *c);
+void chn_intr(pcm_channel *c);
+void chn_dmaupdate(pcm_channel *c);
+int chn_abort(pcm_channel *c);
+
+void buf_isadma(snd_dbuf *b, int go);
+int buf_isadmaptr(snd_dbuf *b);
+int chn_feedchain(pcm_channel *c);
+
+extern pcm_feeder feeder_root;
+
+#define PCMDIR_PLAY 1
+#define PCMDIR_REC -1
+
+#define PCMTRIG_START 1
+#define PCMTRIG_STOP 0
+#define PCMTRIG_ABORT -1
+
+#define CHN_F_READING 0x00000001 /* have a pending read */
+#define CHN_F_WRITING 0x00000002 /* have a pending write */
+#define CHN_F_CLOSING 0x00000004 /* a pending close */
+#define CHN_F_ABORTING 0x00000008 /* a pending abort */
+#define CHN_F_PENDING_IO (CHN_F_READING | CHN_F_WRITING)
+#define CHN_F_RUNNING 0x00000010 /* dma is running */
+#define CHN_F_TRIGGERED 0x00000020
+
+#define CHN_F_BUSY 0x00001000 /* has been opened */
+#define CHN_F_HAS_SIZE 0x00002000 /* user set block size */
+#define CHN_F_NBIO 0x00004000 /* do non-blocking i/o */
+#define CHN_F_INIT 0x00008000 /* changed parameters. need init */
+#define CHN_F_MAPPED 0x00010000 /* has been mmap()ed */
+
+
+#define CHN_F_RESET (CHN_F_BUSY)
OpenPOWER on IntegriCloud