linux/sound/pci/asihpi/hpi6205.h
<<
>>
Prefs
   1/*****************************************************************************
   2
   3    AudioScience HPI driver
   4    Copyright (C) 1997-2010  AudioScience Inc. <support@audioscience.com>
   5
   6    This program is free software; you can redistribute it and/or modify
   7    it under the terms of version 2 of the GNU General Public License as
   8    published by the Free Software Foundation;
   9
  10    This program is distributed in the hope that it will be useful,
  11    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13    GNU General Public License for more details.
  14
  15    You should have received a copy of the GNU General Public License
  16    along with this program; if not, write to the Free Software
  17    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  18
  19Host Interface module for an ASI6205 based
  20bus mastering PCI adapter.
  21
  22Copyright AudioScience, Inc., 2003
  23******************************************************************************/
  24
  25#ifndef _HPI6205_H_
  26#define _HPI6205_H_
  27
  28/* transitional conditional compile shared between host and DSP */
  29/* #define HPI6205_NO_HSR_POLL */
  30
  31#include "hpi_internal.h"
  32
  33/***********************************************************
  34        Defines used for basic messaging
  35************************************************************/
  36#define H620_HIF_RESET          0
  37#define H620_HIF_IDLE           1
  38#define H620_HIF_GET_RESP       2
  39#define H620_HIF_DATA_DONE      3
  40#define H620_HIF_DATA_MASK      0x10
  41#define H620_HIF_SEND_DATA      0x14
  42#define H620_HIF_GET_DATA       0x15
  43#define H620_HIF_UNKNOWN                0x0000ffff
  44
  45/***********************************************************
  46        Types used for mixer control caching
  47************************************************************/
  48
  49#define H620_MAX_ISTREAMS 32
  50#define H620_MAX_OSTREAMS 32
  51#define HPI_NMIXER_CONTROLS 2048
  52
  53/*********************************************************************
  54This is used for dynamic control cache allocation
  55**********************************************************************/
  56struct controlcache_6205 {
  57        u32 number_of_controls;
  58        u32 physical_address32;
  59        u32 size_in_bytes;
  60};
  61
  62/*********************************************************************
  63This is used for dynamic allocation of async event array
  64**********************************************************************/
  65struct async_event_buffer_6205 {
  66        u32 physical_address32;
  67        u32 spare;
  68        struct hpi_fifo_buffer b;
  69};
  70
  71/***********************************************************
  72The Host located memory buffer that the 6205 will bus master
  73in and out of.
  74************************************************************/
  75#define HPI6205_SIZEOF_DATA (16*1024)
  76struct bus_master_interface {
  77        u32 host_cmd;
  78        u32 dsp_ack;
  79        u32 transfer_size_in_bytes;
  80        union {
  81                struct hpi_message message_buffer;
  82                struct hpi_response response_buffer;
  83                u8 b_data[HPI6205_SIZEOF_DATA];
  84        } u;
  85        struct controlcache_6205 control_cache;
  86        struct async_event_buffer_6205 async_buffer;
  87        struct hpi_hostbuffer_status
  88         instream_host_buffer_status[H620_MAX_ISTREAMS];
  89        struct hpi_hostbuffer_status
  90         outstream_host_buffer_status[H620_MAX_OSTREAMS];
  91};
  92
  93#endif
  94