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