Annotation of sys/arch/macppc/dev/aoa.c, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: aoa.c,v 1.3 2005/11/19 00:44:38 kettenis Exp $ */
2: /* $Id: aoa.c,v 1.3 2005/11/19 00:44:38 kettenis Exp $ */
3:
4: /*-
5: * Copyright (c) 2005 Tsubai Masanari. 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: * 3. The name of the author may not be used to endorse or promote products
16: * derived from this software without specific prior written permission.
17: *
18: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21: * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23: * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28: */
29:
30: /*
31: * WORK-IN-PROGRESS AOAKeylargo audio driver.
32: */
33:
34: #include <sys/param.h>
35: #include <sys/audioio.h>
36: #include <sys/device.h>
37: #include <sys/systm.h>
38:
39: #include <dev/audio_if.h>
40: #include <dev/ofw/openfirm.h>
41: #include <macppc/dev/dbdma.h>
42:
43: #include <machine/autoconf.h>
44:
45: #include <macppc/dev/i2svar.h>
46:
47: #ifdef AOA_DEBUG
48: # define DPRINTF printf
49: #else
50: # define DPRINTF while (0) printf
51: #endif
52:
53: /* XXX */
54: #define aoa_softc i2s_softc
55:
56: int aoa_getdev(void *, struct audio_device *);
57: int aoa_match(struct device *, void *, void *);
58: void aoa_attach(struct device *, struct device *, void *);
59: void aoa_set_volume(struct aoa_softc *, int, int);
60:
61: struct cfattach aoa_ca = {
62: sizeof(struct aoa_softc), aoa_match, aoa_attach
63: };
64:
65: struct cfdriver aoa_cd = {
66: NULL, "aoa", DV_DULL
67: };
68:
69: struct audio_hw_if aoa_hw_if = {
70: i2s_open,
71: i2s_close,
72: NULL,
73: i2s_query_encoding,
74: i2s_set_params,
75: i2s_round_blocksize,
76: NULL,
77: NULL,
78: NULL,
79: NULL,
80: NULL,
81: i2s_halt_output,
82: i2s_halt_input,
83: NULL,
84: aoa_getdev,
85: NULL,
86: i2s_set_port,
87: i2s_get_port,
88: i2s_query_devinfo,
89: i2s_allocm,
90: NULL,
91: i2s_round_buffersize,
92: i2s_mappage,
93: i2s_get_props,
94: i2s_trigger_output,
95: i2s_trigger_input,
96: };
97:
98: struct audio_device aoa_device = {
99: "AOA",
100: "",
101: "aoa"
102: };
103:
104: int
105: aoa_match(struct device *parent, void *match, void *aux)
106: {
107: struct confargs *ca = aux;
108: int soundbus, soundchip;
109: char compat[32];
110:
111: if (strcmp(ca->ca_name, "i2s") != 0)
112: return (0);
113:
114: if ((soundbus = OF_child(ca->ca_node)) == 0 ||
115: (soundchip = OF_child(soundbus)) == 0)
116: return (0);
117:
118: bzero(compat, sizeof compat);
119: OF_getprop(soundchip, "compatible", compat, sizeof compat);
120:
121: if (strcmp(compat, "AOAKeylargo") == 0)
122: return (1);
123: if (strcmp(compat, "AOAK2") == 0)
124: return (1);
125:
126: return (0);
127: }
128:
129: void
130: aoa_attach(struct device *parent, struct device *self, void *aux)
131: {
132: struct aoa_softc *sc = (struct aoa_softc *)self;
133:
134: sc->sc_setvolume = aoa_set_volume;
135:
136: i2s_attach(parent, sc, aux);
137: audio_attach_mi(&aoa_hw_if, sc, &sc->sc_dev);
138: }
139:
140: int
141: aoa_getdev(void *h, struct audio_device *retp)
142: {
143: *retp = aoa_device;
144: return (0);
145: }
146:
147: void
148: aoa_set_volume(struct aoa_softc *sc, int left, int right)
149: {
150: printf("aoa_set_volume() not supported yet\n");
151: }
CVSweb