FreeBSD kernel sound device code
audio_dai_if.m
Go to the documentation of this file.
1#-
2# Copyright (c) 2019 Oleksandr Tymoshenko <gonzo@FreeBSD.org>
3#
4# Redistribution and use in source and binary forms, with or without
5# modification, are permitted provided that the following conditions
6# are met:
7# 1. Redistributions of source code must retain the above copyright
8# notice, this list of conditions and the following disclaimer.
9# 2. Redistributions in binary form must reproduce the above copyright
10# notice, this list of conditions and the following disclaimer in the
11# documentation and/or other materials provided with the distribution.
12#
13# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23# SUCH DAMAGE.
24#
25# $FreeBSD$
26#
27
29 #include <sys/param.h>
30 #include <sys/bus.h>
31 #include <dev/sound/pcm/sound.h>
32}
33
34INTERFACE audio_dai;
35
36# set DAI format for communications between CPU/codec nodes
37METHOD int init {
38 device_t dev;
39 uint32_t format;
40}
41
42# Initialize DAI and set up interrrupt handler
43METHOD int setup_intr {
44 device_t dev;
45 driver_intr_t intr_handler;
46 void *intr_arg;
47}
48
49# Setup mixers for codec node
50METHOD int setup_mixer {
51 device_t dev;
52 device_t ausocdev;
53}
54
55# setup clock speed
56METHOD int set_sysclk {
57 device_t dev;
58 uint32_t rate;
60}
61
62METHOD int trigger {
63 device_t dev;
64 int go;
66}
67
68METHOD struct pcmchan_caps* get_caps {
69 device_t dev;
70}
71
72METHOD uint32_t get_ptr {
73 device_t dev;
74 int pcm_dir;
75}
76
77# Set PCM channel format
78METHOD uint32_t set_chanformat {
79 device_t dev;
80 uint32_t format;
81}
82
83# Set PCM channel sampling rate
84METHOD uint32_t set_chanspeed {
85 device_t dev;
86 uint32_t speed;
87}
88
89# call DAI interrupt handler
90# returns 1 if call to chn_intr required, 0 otherwise
91METHOD int intr {
92 device_t dev;
95}
uint32_t format
Definition: audio_dai_if.m:39
METHOD uint32_t set_chanformat
Definition: audio_dai_if.m:78
void * intr_arg
Definition: audio_dai_if.m:46
METHOD int trigger
Definition: audio_dai_if.m:62
METHOD uint32_t get_ptr
Definition: audio_dai_if.m:72
uint32_t speed
Definition: audio_dai_if.m:86
METHOD int setup_mixer
Definition: audio_dai_if.m:50
METHOD int init
Definition: audio_dai_if.m:37
METHOD int setup_intr
Definition: audio_dai_if.m:43
uint32_t rate
Definition: audio_dai_if.m:58
METHOD uint32_t set_chanspeed
Definition: audio_dai_if.m:84
int pcm_dir
Definition: audio_dai_if.m:65
int go
Definition: audio_dai_if.m:64
METHOD struct pcmchan_caps * get_caps
Definition: audio_dai_if.m:68
struct snd_dbuf * rec_buf
Definition: audio_dai_if.m:94
CODE
Definition: audio_dai_if.m:28
METHOD int set_sysclk
Definition: audio_dai_if.m:56
struct snd_dbuf * play_buf
Definition: audio_dai_if.m:93
METHOD int intr
Definition: audio_dai_if.m:91
device_t ausocdev
Definition: audio_dai_if.m:52
int dai_dir
Definition: audio_dai_if.m:59
driver_intr_t intr_handler
Definition: audio_dai_if.m:45
unsigned dev
Definition: mixer_if.m:59