linux/sound/pci/asihpi/hpicmn.h
<<
>>
Prefs
   1/**
   2
   3    AudioScience HPI driver
   4    Copyright (C) 1997-2011  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);
  25
  26struct hpi_adapter_obj {
  27        struct hpi_pci pci;     /* PCI info - bus#,dev#,address etc */
  28        u16 type;               /* 0x6644 == ASI6644 etc */
  29        u16 index;
  30
  31        struct hpios_spinlock dsp_lock;
  32
  33        u16 dsp_crashed;
  34        u16 has_control_cache;
  35        void *priv;
  36};
  37
  38struct hpi_control_cache {
  39        /** indicates whether the structures are initialized */
  40        u16 init;
  41        u16 adap_idx;
  42        u32 control_count;
  43        u32 cache_size_in_bytes;
  44        /** pointer to allocated memory of lookup pointers. */
  45        struct hpi_control_cache_info **p_info;
  46        /** pointer to DSP's control cache. */
  47        u8 *p_cache;
  48};
  49
  50struct hpi_adapter_obj *hpi_find_adapter(u16 adapter_index);
  51
  52u16 hpi_add_adapter(struct hpi_adapter_obj *pao);
  53
  54void hpi_delete_adapter(struct hpi_adapter_obj *pao);
  55
  56short hpi_check_control_cache(struct hpi_control_cache *pC,
  57        struct hpi_message *phm, struct hpi_response *phr);
  58struct hpi_control_cache *hpi_alloc_control_cache(const u32
  59        number_of_controls, const u32 size_in_bytes, u8 *pDSP_control_buffer);
  60void hpi_free_control_cache(struct hpi_control_cache *p_cache);
  61
  62void hpi_cmn_control_cache_sync_to_msg(struct hpi_control_cache *pC,
  63        struct hpi_message *phm, struct hpi_response *phr);
  64
  65u16 hpi_validate_response(struct hpi_message *phm, struct hpi_response *phr);
  66
  67hpi_handler_func HPI_COMMON;
  68