linux/sound/pci/asihpi/hpicmn.h
<<
>>
Prefs
   1/**
   2
   3    AudioScience HPI driver
   4    Copyright (C) 1997-2014  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
  19*/
  20
  21struct hpi_adapter_obj;
  22
  23/* a function that takes an adapter obj and returns an int */
  24typedef int adapter_int_func(struct hpi_adapter_obj *pao, u32 message);
  25
  26#define HPI_IRQ_NONE            (0)
  27#define HPI_IRQ_MESSAGE         (1)
  28#define HPI_IRQ_MIXER           (2)
  29
  30struct hpi_adapter_obj {
  31        struct hpi_pci pci;     /* PCI info - bus#,dev#,address etc */
  32        u16 type;               /* 0x6644 == ASI6644 etc */
  33        u16 index;
  34
  35        struct hpios_spinlock dsp_lock;
  36
  37        u16 dsp_crashed;
  38        u16 has_control_cache;
  39        void *priv;
  40        adapter_int_func *irq_query_and_clear;
  41        struct hpi_hostbuffer_status *instream_host_buffer_status;
  42        struct hpi_hostbuffer_status *outstream_host_buffer_status;
  43};
  44
  45struct hpi_control_cache {
  46        /** indicates whether the structures are initialized */
  47        u16 init;
  48        u16 adap_idx;
  49        u32 control_count;
  50        u32 cache_size_in_bytes;
  51        /** pointer to allocated memory of lookup pointers. */
  52        struct hpi_control_cache_info **p_info;
  53        /** pointer to DSP's control cache. */
  54        u8 *p_cache;
  55};
  56
  57struct hpi_adapter_obj *hpi_find_adapter(u16 adapter_index);
  58
  59u16 hpi_add_adapter(struct hpi_adapter_obj *pao);
  60
  61void hpi_delete_adapter(struct hpi_adapter_obj *pao);
  62
  63short hpi_check_control_cache(struct hpi_control_cache *pC,
  64        struct hpi_message *phm, struct hpi_response *phr);
  65
  66short hpi_check_control_cache_single(struct hpi_control_cache_single *pC,
  67        struct hpi_message *phm, struct hpi_response *phr);
  68
  69struct hpi_control_cache *hpi_alloc_control_cache(const u32
  70        number_of_controls, const u32 size_in_bytes, u8 *pDSP_control_buffer);
  71
  72void hpi_free_control_cache(struct hpi_control_cache *p_cache);
  73
  74void hpi_cmn_control_cache_sync_to_msg(struct hpi_control_cache *pC,
  75        struct hpi_message *phm, struct hpi_response *phr);
  76
  77void hpi_cmn_control_cache_sync_to_msg_single(struct hpi_control_cache_single
  78        *pC, struct hpi_message *phm, struct hpi_response *phr);
  79
  80u16 hpi_validate_response(struct hpi_message *phm, struct hpi_response *phr);
  81
  82hpi_handler_func HPI_COMMON;
  83