| @@ -1,14 +1,14 @@ | | | @@ -1,14 +1,14 @@ |
1 | /* $NetBSD: tms320av110.c,v 1.23 2012/10/27 17:18:23 chs Exp $ */ | | 1 | /* $NetBSD: tms320av110.c,v 1.23.12.1 2020/03/08 09:15:34 martin Exp $ */ |
2 | | | 2 | |
3 | /*- | | 3 | /*- |
4 | * Copyright (c) 1997 The NetBSD Foundation, Inc. | | 4 | * Copyright (c) 1997 The NetBSD Foundation, Inc. |
5 | * All rights reserved. | | 5 | * All rights reserved. |
6 | * | | 6 | * |
7 | * This code is derived from software contributed to The NetBSD Foundation | | 7 | * This code is derived from software contributed to The NetBSD Foundation |
8 | * by Ignatios Souvatzis. | | 8 | * by Ignatios Souvatzis. |
9 | * | | 9 | * |
10 | * Redistribution and use in source and binary forms, with or without | | 10 | * Redistribution and use in source and binary forms, with or without |
11 | * modification, are permitted provided that the following conditions | | 11 | * modification, are permitted provided that the following conditions |
12 | * are met: | | 12 | * are met: |
13 | * 1. Redistributions of source code must retain the above copyright | | 13 | * 1. Redistributions of source code must retain the above copyright |
14 | * notice, this list of conditions and the following disclaimer. | | 14 | * notice, this list of conditions and the following disclaimer. |
| @@ -27,27 +27,27 @@ | | | @@ -27,27 +27,27 @@ |
27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | | 27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | | 28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
29 | * POSSIBILITY OF SUCH DAMAGE. | | 29 | * POSSIBILITY OF SUCH DAMAGE. |
30 | */ | | 30 | */ |
31 | | | 31 | |
32 | /* | | 32 | /* |
33 | * Machine independent part of TMS320AV110 driver. | | 33 | * Machine independent part of TMS320AV110 driver. |
34 | * | | 34 | * |
35 | * Currently, only minimum support for audio output. For audio/video | | 35 | * Currently, only minimum support for audio output. For audio/video |
36 | * synchronization, more is needed. | | 36 | * synchronization, more is needed. |
37 | */ | | 37 | */ |
38 | | | 38 | |
39 | #include <sys/cdefs.h> | | 39 | #include <sys/cdefs.h> |
40 | __KERNEL_RCSID(0, "$NetBSD: tms320av110.c,v 1.23 2012/10/27 17:18:23 chs Exp $"); | | 40 | __KERNEL_RCSID(0, "$NetBSD: tms320av110.c,v 1.23.12.1 2020/03/08 09:15:34 martin Exp $"); |
41 | | | 41 | |
42 | #include <sys/param.h> | | 42 | #include <sys/param.h> |
43 | #include <sys/systm.h> | | 43 | #include <sys/systm.h> |
44 | #include <sys/kernel.h> | | 44 | #include <sys/kernel.h> |
45 | #include <sys/device.h> | | 45 | #include <sys/device.h> |
46 | #include <sys/proc.h> | | 46 | #include <sys/proc.h> |
47 | | | 47 | |
48 | #include <sys/audioio.h> | | 48 | #include <sys/audioio.h> |
49 | #include <dev/audio_if.h> | | 49 | #include <dev/audio_if.h> |
50 | | | 50 | |
51 | #include <dev/ic/tms320av110reg.h> | | 51 | #include <dev/ic/tms320av110reg.h> |
52 | #include <dev/ic/tms320av110var.h> | | 52 | #include <dev/ic/tms320av110var.h> |
53 | | | 53 | |
| @@ -241,29 +241,27 @@ tav_drain(void *hdl) | | | @@ -241,29 +241,27 @@ tav_drain(void *hdl) |
241 | mask = tav_read_short(iot, ioh, TAV_INTR_EN); | | 241 | mask = tav_read_short(iot, ioh, TAV_INTR_EN); |
242 | tav_write_short(iot, ioh, TAV_INTR_EN, | | 242 | tav_write_short(iot, ioh, TAV_INTR_EN, |
243 | mask & ~TAV_INTR_PCM_OUTPUT_UNDERFLOW); | | 243 | mask & ~TAV_INTR_PCM_OUTPUT_UNDERFLOW); |
244 | } | | 244 | } |
245 | | | 245 | |
246 | mutex_spin_exit(&sc->sc_intr_lock); | | 246 | mutex_spin_exit(&sc->sc_intr_lock); |
247 | | | 247 | |
248 | return 0; | | 248 | return 0; |
249 | } | | 249 | } |
250 | | | 250 | |
251 | int | | 251 | int |
252 | tav_query_encoding(void *hdl, struct audio_encoding *ae) | | 252 | tav_query_encoding(void *hdl, struct audio_encoding *ae) |
253 | { | | 253 | { |
254 | struct tav_softc *sc; | | | |
255 | | | 254 | |
256 | sc = hdl; | | | |
257 | if (ae->index >= sizeof(tav_encodings)/sizeof(*ae)) | | 255 | if (ae->index >= sizeof(tav_encodings)/sizeof(*ae)) |
258 | return EINVAL; | | 256 | return EINVAL; |
259 | | | 257 | |
260 | *ae = tav_encodings[ae->index]; | | 258 | *ae = tav_encodings[ae->index]; |
261 | | | 259 | |
262 | return 0; | | 260 | return 0; |
263 | } | | 261 | } |
264 | | | 262 | |
265 | int | | 263 | int |
266 | tav_start_input(void *hdl, void *block, int bsize, | | 264 | tav_start_input(void *hdl, void *block, int bsize, |
267 | void (*intr)(void *), void *intrarg) | | 265 | void (*intr)(void *), void *intrarg) |
268 | { | | 266 | { |
269 | | | 267 | |
| @@ -463,39 +461,35 @@ tav_set_params(void *hdl, int setmode, i | | | @@ -463,39 +461,35 @@ tav_set_params(void *hdl, int setmode, i |
463 | break; | | 461 | break; |
464 | } | | 462 | } |
465 | tav_write_byte(iot, ioh, TAV_RESTART, 1); | | 463 | tav_write_byte(iot, ioh, TAV_RESTART, 1); |
466 | do { | | 464 | do { |
467 | delay(10); | | 465 | delay(10); |
468 | } while (tav_read_byte(iot, ioh, TAV_RESTART)); | | 466 | } while (tav_read_byte(iot, ioh, TAV_RESTART)); |
469 | | | 467 | |
470 | return 0; | | 468 | return 0; |
471 | } | | 469 | } |
472 | | | 470 | |
473 | int | | 471 | int |
474 | tav_set_port(void *hdl, mixer_ctrl_t *mc) | | 472 | tav_set_port(void *hdl, mixer_ctrl_t *mc) |
475 | { | | 473 | { |
476 | struct tav_softc *sc; | | | |
477 | | | 474 | |
478 | sc = hdl; | | | |
479 | /* dummy */ | | 475 | /* dummy */ |
480 | return 0; | | 476 | return 0; |
481 | } | | 477 | } |
482 | | | 478 | |
483 | int | | 479 | int |
484 | tav_get_port(void *hdl, mixer_ctrl_t *mc) | | 480 | tav_get_port(void *hdl, mixer_ctrl_t *mc) |
485 | { | | 481 | { |
486 | struct tav_softc *sc; | | | |
487 | | | 482 | |
488 | sc = hdl; | | | |
489 | /* dummy */ | | 483 | /* dummy */ |
490 | return 0; | | 484 | return 0; |
491 | } | | 485 | } |
492 | | | 486 | |
493 | int | | 487 | int |
494 | tav_query_devinfo(void *hdl, mixer_devinfo_t *di) | | 488 | tav_query_devinfo(void *hdl, mixer_devinfo_t *di) |
495 | { | | 489 | { |
496 | return ENXIO; | | 490 | return ENXIO; |
497 | } | | 491 | } |
498 | | | 492 | |
499 | int | | 493 | int |
500 | tav_speaker_ctl(void *hdl, int value) | | 494 | tav_speaker_ctl(void *hdl, int value) |
501 | { | | 495 | { |