2010-04-21 18:17:39 +02:00
/**
AudioScience HPI driver
2011-12-22 13:38:32 +13:00
Copyright ( C ) 1997 - 2011 AudioScience Inc . < support @ audioscience . com >
2010-04-21 18:17:39 +02:00
This program is free software ; you can redistribute it and / or modify
it under the terms of version 2 of the GNU General Public License as
published by the Free Software Foundation ;
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
*/
2011-12-22 13:38:43 +13:00
struct hpi_adapter_obj ;
/* a function that takes an adapter obj and returns an int */
typedef int adapter_int_func ( struct hpi_adapter_obj * pao ) ;
2010-04-21 18:17:39 +02:00
struct hpi_adapter_obj {
struct hpi_pci pci ; /* PCI info - bus#,dev#,address etc */
2011-12-22 13:38:43 +13:00
u16 type ; /* 0x6644 == ASI6644 etc */
u16 index ;
2010-04-21 18:17:39 +02:00
struct hpios_spinlock dsp_lock ;
u16 dsp_crashed ;
u16 has_control_cache ;
void * priv ;
} ;
struct hpi_control_cache {
2011-02-10 17:26:06 +13:00
/** indicates whether the structures are initialized */
u16 init ;
2011-02-10 17:26:00 +13:00
u16 adap_idx ;
2010-04-21 18:17:39 +02:00
u32 control_count ;
u32 cache_size_in_bytes ;
2011-02-10 17:26:06 +13:00
/** pointer to allocated memory of lookup pointers. */
struct hpi_control_cache_info * * p_info ;
/** pointer to DSP's control cache. */
u8 * p_cache ;
2010-04-21 18:17:39 +02:00
} ;
struct hpi_adapter_obj * hpi_find_adapter ( u16 adapter_index ) ;
2011-02-10 17:26:08 +13:00
2010-04-21 18:17:39 +02:00
u16 hpi_add_adapter ( struct hpi_adapter_obj * pao ) ;
void hpi_delete_adapter ( struct hpi_adapter_obj * pao ) ;
short hpi_check_control_cache ( struct hpi_control_cache * pC ,
struct hpi_message * phm , struct hpi_response * phr ) ;
struct hpi_control_cache * hpi_alloc_control_cache ( const u32
2011-02-10 17:25:58 +13:00
number_of_controls , const u32 size_in_bytes , u8 * pDSP_control_buffer ) ;
2010-04-21 18:17:39 +02:00
void hpi_free_control_cache ( struct hpi_control_cache * p_cache ) ;
2011-02-10 17:25:58 +13:00
void hpi_cmn_control_cache_sync_to_msg ( struct hpi_control_cache * pC ,
2010-04-21 18:17:39 +02:00
struct hpi_message * phm , struct hpi_response * phr ) ;
2011-02-10 17:26:06 +13:00
2010-04-21 18:17:39 +02:00
u16 hpi_validate_response ( struct hpi_message * phm , struct hpi_response * phr ) ;
2011-04-05 20:55:48 +12:00
hpi_handler_func HPI_COMMON ;