Merge from vendor branch DHCP:
[dragonfly.git] / sys / dev / sound / pcm / channel_if.m
1 # KOBJ
2 #
3 # Copyright (c) 2000 Cameron Grant <cg@freebsd.org>
4 # All rights reserved.
5 #
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions
8 # are met:
9 # 1. Redistributions of source code must retain the above copyright
10 #    notice, this list of conditions and the following disclaimer.
11 # 2. Redistributions in binary form must reproduce the above copyright
12 #    notice, this list of conditions and the following disclaimer in the
13 #    documentation and/or other materials provided with the distribution.
14 #
15 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 # ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 # SUCH DAMAGE.
26 #
27 # $FreeBSD: src/sys/dev/sound/pcm/channel_if.m,v 1.1.2.3 2002/04/22 15:49:36 cg Exp $
28 # $DragonFly: src/sys/dev/sound/pcm/channel_if.m,v 1.2 2003/06/17 04:28:31 dillon Exp $
29 #
30
31 #include <dev/sound/pcm/sound.h>
32
33 INTERFACE channel;
34
35 CODE {
36
37         static int
38         channel_nosetdir(kobj_t obj, void *data, int dir)
39         {
40                 return 0;
41         }
42
43         static int
44         channel_noreset(kobj_t obj, void *data)
45         {
46                 return 0;
47         }
48
49         static int
50         channel_noresetdone(kobj_t obj, void *data)
51         {
52                 return 0;
53         }
54
55         static int
56         channel_nofree(kobj_t obj, void *data)
57         {
58                 return 1;
59         }
60
61         static u_int32_t
62         channel_nogetptr(kobj_t obj, void *data)
63         {
64                 return 0;
65         }
66
67         static int
68         channel_nonotify(kobj_t obj, void *data, u_int32_t changed)
69         {
70                 return 0;
71         }
72
73 };
74
75 METHOD void* init {
76         kobj_t obj;
77         void *devinfo;
78         struct snd_dbuf *b;
79         struct pcm_channel *c;
80         int dir;
81 };
82
83 METHOD int free {
84         kobj_t obj;
85         void *data;
86 } DEFAULT channel_nofree;
87
88 METHOD int reset {
89         kobj_t obj;
90         void *data;
91 } DEFAULT channel_noreset;
92
93 METHOD int resetdone {
94         kobj_t obj;
95         void *data;
96 } DEFAULT channel_noresetdone;
97
98 METHOD int setdir {
99         kobj_t obj;
100         void *data;
101         int dir;
102 } DEFAULT channel_nosetdir;
103
104 METHOD u_int32_t setformat {
105         kobj_t obj;
106         void *data;
107         u_int32_t format;
108 };
109
110 METHOD u_int32_t setspeed {
111         kobj_t obj;
112         void *data;
113         u_int32_t speed;
114 };
115
116 METHOD u_int32_t setblocksize {
117         kobj_t obj;
118         void *data;
119         u_int32_t blocksize;
120 };
121
122 METHOD int trigger {
123         kobj_t obj;
124         void *data;
125         int go;
126 };
127
128 METHOD u_int32_t getptr {
129         kobj_t obj;
130         void *data;
131 } DEFAULT channel_nogetptr;
132
133 METHOD struct pcmchan_caps* getcaps {
134         kobj_t obj;
135         void *data;
136 };
137
138 METHOD int notify {
139         kobj_t obj;
140         void *data;
141         u_int32_t changed;
142 } DEFAULT channel_nonotify;