root/dev/pci/auixpvar.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


    1 /* $OpenBSD: auixpvar.h,v 1.1 2005/08/07 20:08:45 mickey Exp $ */
    2 /* $NetBSD: auixpvar.h,v 1.3 2005/01/12 15:54:34 kent Exp $*/
    3 
    4 /*
    5  * Copyright (c) 2004, 2005 Reinoud Zandijk <reinoud@netbsd.org>
    6  * All rights reserved.
    7  *
    8  * Redistribution and use in source and binary forms, with or without
    9  * modification, are permitted provided that the following conditions
   10  * are met:
   11  * 1. Redistributions of source code must retain the above copyright
   12  *    notice, this list of conditions and the following disclaimer.
   13  * 2. The name of the author may not be used to endorse or promote products
   14  *    derived from this software without specific prior written permission.
   15  * 3. All advertising materials mentioning features or use of this software
   16  *    must display the following acknowledgement:
   17  *      This product includes software developed by the NetBSD
   18  *      Foundation, Inc. and its contributors.
   19  * 4. Neither the name of The NetBSD Foundation nor the names of its
   20  *    contributors may be used to endorse or promote products derived
   21  *    from this software without specific prior written permission.
   22  *
   23  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   24  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   25  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   26  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   27  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
   28  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
   29  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
   30  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   31  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   32  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   33  * SUCH DAMAGE.
   34  */
   35 
   36 
   37 /*
   38  * NetBSD audio driver for ATI IXP-{150,200,...} audio driver hardware.
   39  */
   40 
   41 #define DMA_DESC_CHAIN  255
   42 
   43 /* audio format structure describing our hardware capabilities */
   44 /* XXX min and max sample rates are for AD1888 codec XXX */
   45 #define AUIXP_NFORMATS 6
   46 
   47 #define AUIXP_MINRATE  7000
   48 #define AUIXP_MAXRATE 48000
   49 
   50 /* auixp structures; used to record alloced DMA space */
   51 struct auixp_dma {
   52         /* bus mappings */
   53         bus_dmamap_t             map;
   54         caddr_t                  addr;
   55         bus_dma_segment_t        segs[1];
   56         int                      nsegs;
   57         size_t                   size;
   58 
   59         /* audio feeder */
   60         void                     (*intr)(void *);
   61         void                    *intrarg;
   62 
   63         /* status and setup bits */
   64         int                      running;
   65         u_int32_t                linkptr;
   66         u_int32_t                dma_enable_bit;
   67 
   68         /* linked list of all mapped area's */
   69         SLIST_ENTRY(auixp_dma)   dma_chain;
   70 };
   71 
   72 struct auixp_codec {
   73         struct auixp_softc      *sc;
   74 
   75         int                      present;
   76         int                      codec_nr;
   77 
   78         struct ac97_codec_if    *codec_if;
   79         struct ac97_host_if      host_if;
   80         enum ac97_host_flags     codec_flags;
   81 };
   82 
   83 struct auixp_softc {
   84         struct device           sc_dev;
   85         audio_device_t          sc_audev;
   86         void                    *sc_ih;
   87 
   88         /* card properties */
   89         int                     has_4ch, has_6ch, is_fixed, has_spdif;
   90 
   91         /* bus tags */
   92         bus_space_tag_t         sc_iot;
   93         bus_space_handle_t      sc_ioh;
   94         bus_addr_t              sc_iob;
   95         bus_size_t              sc_ios;
   96 
   97         pcitag_t                sc_tag;
   98         pci_chipset_tag_t       sc_pct;
   99 
  100         bus_dma_tag_t           sc_dmat;
  101 
  102         /* DMA business */
  103         struct auixp_dma        *sc_output_dma;
  104         struct auixp_dma        *sc_input_dma;
  105 
  106         /* list of allocated DMA pieces */
  107         SLIST_HEAD(auixp_dma_list, auixp_dma) sc_dma_list;
  108 
  109         /* codecs */
  110         int                     sc_num_codecs;
  111         struct auixp_codec      sc_codec[ATI_IXP_CODECS];
  112         int                     sc_codec_not_ready_bits;
  113 
  114         /* last set audio parameters */
  115         struct audio_params     sc_play_params;
  116         struct audio_params     sc_rec_params;
  117 
  118         /* suspend/resume */
  119         void                    *powerhook;
  120         u_int16_t               *savemem;
  121 };

/* [<][>][^][v][top][bottom][index][help] */