1*e622eac4Sisaki /* $NetBSD: zaudiovar.h,v 1.3 2019/05/08 13:40:17 isaki Exp $ */ 294ff29c8Snonaka /* $OpenBSD: zaurus_audio.c,v 1.8 2005/08/18 13:23:02 robert Exp $ */ 394ff29c8Snonaka 494ff29c8Snonaka /* 594ff29c8Snonaka * Copyright (c) 2005 Christopher Pascoe <pascoe@openbsd.org> 694ff29c8Snonaka * 794ff29c8Snonaka * Permission to use, copy, modify, and distribute this software for any 894ff29c8Snonaka * purpose with or without fee is hereby granted, provided that the above 994ff29c8Snonaka * copyright notice and this permission notice appear in all copies. 1094ff29c8Snonaka * 1194ff29c8Snonaka * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 1294ff29c8Snonaka * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 1394ff29c8Snonaka * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 1494ff29c8Snonaka * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 1594ff29c8Snonaka * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 1694ff29c8Snonaka * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 1794ff29c8Snonaka * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 1894ff29c8Snonaka */ 1994ff29c8Snonaka 2094ff29c8Snonaka /*- 2194ff29c8Snonaka * Copyright (C) 2009 NONAKA Kimihiro <nonaka@netbsd.org> 2294ff29c8Snonaka * All rights reserved. 2394ff29c8Snonaka * 2494ff29c8Snonaka * Redistribution and use in source and binary forms, with or without 2594ff29c8Snonaka * modification, are permitted provided that the following conditions 2694ff29c8Snonaka * are met: 2794ff29c8Snonaka * 1. Redistributions of source code must retain the above copyright 2894ff29c8Snonaka * notice, this list of conditions and the following disclaimer. 2994ff29c8Snonaka * 2. Redistributions in binary form must reproduce the above copyright 3094ff29c8Snonaka * notice, this list of conditions and the following disclaimer in the 3194ff29c8Snonaka * documentation and/or other materials provided with the distribution. 3294ff29c8Snonaka * 3394ff29c8Snonaka * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 3494ff29c8Snonaka * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 3594ff29c8Snonaka * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 3694ff29c8Snonaka * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 3794ff29c8Snonaka * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 3894ff29c8Snonaka * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 3994ff29c8Snonaka * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 4094ff29c8Snonaka * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 4194ff29c8Snonaka * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 4294ff29c8Snonaka * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 4394ff29c8Snonaka */ 4494ff29c8Snonaka 4594ff29c8Snonaka #ifndef _ZAURUS_DEV_ZAUDIOVAR_H_ 4694ff29c8Snonaka #define _ZAURUS_DEV_ZAUDIOVAR_H_ 4794ff29c8Snonaka 4894ff29c8Snonaka struct zaudio_volume { 4994ff29c8Snonaka uint8_t left; 5094ff29c8Snonaka uint8_t right; 5194ff29c8Snonaka }; 5294ff29c8Snonaka 5394ff29c8Snonaka struct zaudio_softc { 5494ff29c8Snonaka device_t sc_dev; 5594ff29c8Snonaka kmutex_t sc_lock; 5694ff29c8Snonaka kmutex_t sc_intr_lock; 5794ff29c8Snonaka 5894ff29c8Snonaka /* i2s device softc */ 5994ff29c8Snonaka /* NB: pxa2x0_i2s requires this to be the second struct member */ 6094ff29c8Snonaka struct pxa2x0_i2s_softc sc_i2s; 6194ff29c8Snonaka 6294ff29c8Snonaka i2c_tag_t sc_i2c; 6394ff29c8Snonaka 6494ff29c8Snonaka int sc_playing; 6594ff29c8Snonaka int sc_recording; 6694ff29c8Snonaka 6794ff29c8Snonaka struct zaudio_volume *sc_volume; 6894ff29c8Snonaka uint8_t *sc_unmute; 6994ff29c8Snonaka uint8_t *sc_unmute_toggle; 7094ff29c8Snonaka 7194ff29c8Snonaka int sc_jack; 7294ff29c8Snonaka int sc_state; 7394ff29c8Snonaka int sc_icount; 7494ff29c8Snonaka callout_t sc_to; 7594ff29c8Snonaka }; 7694ff29c8Snonaka 7794ff29c8Snonaka #define UNMUTE(sc,op,val) sc->sc_unmute[op] = sc->sc_unmute_toggle[op] = val 7894ff29c8Snonaka 7994ff29c8Snonaka #define ZAUDIO_JACK_STATE_OUT 0 8094ff29c8Snonaka #define ZAUDIO_JACK_STATE_IN 1 8194ff29c8Snonaka #define ZAUDIO_JACK_STATE_INS 2 8294ff29c8Snonaka #define ZAUDIO_JACK_STATE_REM 3 8394ff29c8Snonaka 8494ff29c8Snonaka int zaudio_open(void *, int); 8594ff29c8Snonaka void zaudio_close(void *); 86*e622eac4Sisaki int zaudio_query_format(void *, audio_format_query_t *); 87*e622eac4Sisaki int zaudio_set_format(void *, int, 88*e622eac4Sisaki const audio_params_t *, const audio_params_t *, 89*e622eac4Sisaki audio_filter_reg_t *, audio_filter_reg_t *); 9094ff29c8Snonaka int zaudio_round_blocksize(void *, int, int, const audio_params_t *); 9194ff29c8Snonaka void * zaudio_allocm(void *, int, size_t); 9294ff29c8Snonaka void zaudio_freem(void *, void *, size_t); 9394ff29c8Snonaka size_t zaudio_round_buffersize(void *, int, size_t); 9494ff29c8Snonaka int zaudio_get_props(void *); 9594ff29c8Snonaka void zaudio_get_locks(void *, kmutex_t **, kmutex_t **); 9694ff29c8Snonaka 9794ff29c8Snonaka #endif /* _ZAURUS_DEV_ZAUDIOVAR_H_ */ 98