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#include "hpi_internal.h"
  29
  30/***********************************************************
  31        Defines used for basic messaging
  32************************************************************/
  33#define H620_HIF_RESET          0
  34#define H620_HIF_IDLE           1
  35#define H620_HIF_GET_RESP       2
  36#define H620_HIF_DATA_DONE      3
  37#define H620_HIF_DATA_MASK      0x10
  38#define H620_HIF_SEND_DATA      0x14
  39#define H620_HIF_GET_DATA       0x15
  40#define H620_HIF_UNKNOWN                0x0000ffff
  41
  42/***********************************************************
  43        Types used for mixer control caching
  44************************************************************/
  45
  46#define H620_MAX_ISTREAMS 32
  47#define H620_MAX_OSTREAMS 32
  48#define HPI_NMIXER_CONTROLS 2048
  49
  50/*********************************************************************
  51This is used for dynamic control cache allocation
  52**********************************************************************/
  53struct controlcache_6205 {
  54        u32 number_of_controls;
  55        u32 physical_address32;
  56        u32 size_in_bytes;
  57};
  58
  59/*********************************************************************
  60This is used for dynamic allocation of async event array
  61**********************************************************************/
  62struct async_event_buffer_6205 {
  63        u32 physical_address32;
  64        u32 spare;
  65        struct hpi_fifo_buffer b;
  66};
  67
  68/***********************************************************
  69The Host located memory buffer that the 6205 will bus master
  70in and out of.
  71************************************************************/
  72#define HPI6205_SIZEOF_DATA (16*1024)
  73struct bus_master_interface {
  74        u32 host_cmd;
  75        u32 dsp_ack;
  76        u32 transfer_size_in_bytes;
  77        union {
  78                struct hpi_message_header message_buffer;
  79                struct hpi_response_header response_buffer;
  80                u8 b_data[HPI6205_SIZEOF_DATA];
  81        } u;
  82        struct controlcache_6205 control_cache;
  83        struct async_event_buffer_6205 async_buffer;
  84        struct hpi_hostbuffer_status
  85         instream_host_buffer_status[H620_MAX_ISTREAMS];
  86        struct hpi_hostbuffer_status
  87         outstream_host_buffer_status[H620_MAX_OSTREAMS];
  88};
  89
  90#endif
  91