/*
* Copyright (c) 2000, 2001 Kazuki Sakamoto and Minoura Makoto.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
struct yds_dma *sc_dmas; /* List of DMA handles */
/*
* Play/record status
*/
struct {
void (*intr)(void *); /* rint/pint */
void *intr_arg; /* arg for intr */
u_int offset; /* filled up to here */
u_int blksize;
u_int factor; /* byte per sample */
u_int length; /* ring buffer length */
struct yds_dma *dma; /* DMA handle for ring buf */
} sc_play, sc_rec;
/*
* DSP control data
*
* Work space, play control data table, play slot control data,
* rec slot control data and effect slot control data are
* stored in a single memory segment in this order.
*/
struct yds_dma sc_ctrldata;
/* KVA and offset in buffer of play ctrl data tbl */
uint32_t *ptbl;
off_t ptbloff;
/* KVA and offset in buffer of rec slot ctrl data */
struct rec_slot_ctrl_bank *rbank;
off_t rbankoff;
/* Array of KVA pointers and offset of play slot control data */
struct play_slot_ctrl_bank *pbankp[N_PLAY_SLOT_CTRL_BANK
*N_PLAY_SLOTS];
off_t pbankoff;