2019-05-29 17:12:47 +03:00
/* SPDX-License-Identifier: GPL-2.0-only */
2021-03-17 23:21:44 +03:00
/*
2010-04-21 20:17:39 +04:00
AudioScience HPI driver
2014-11-20 06:22:53 +03:00
Copyright ( C ) 1997 - 2014 AudioScience Inc . < support @ audioscience . com >
2010-04-21 20:17:39 +04:00
*/
2011-12-22 04:38:43 +04:00
struct hpi_adapter_obj ;
/* a function that takes an adapter obj and returns an int */
2014-11-20 06:22:53 +03:00
typedef int adapter_int_func ( struct hpi_adapter_obj * pao , u32 message ) ;
# define HPI_IRQ_NONE (0)
# define HPI_IRQ_MESSAGE (1)
# define HPI_IRQ_MIXER (2)
2011-12-22 04:38:43 +04:00
2010-04-21 20:17:39 +04:00
struct hpi_adapter_obj {
struct hpi_pci pci ; /* PCI info - bus#,dev#,address etc */
2011-12-22 04:38:43 +04:00
u16 type ; /* 0x6644 == ASI6644 etc */
u16 index ;
2010-04-21 20:17:39 +04:00
struct hpios_spinlock dsp_lock ;
u16 dsp_crashed ;
u16 has_control_cache ;
void * priv ;
2014-11-20 06:22:53 +03:00
adapter_int_func * irq_query_and_clear ;
struct hpi_hostbuffer_status * instream_host_buffer_status ;
struct hpi_hostbuffer_status * outstream_host_buffer_status ;
2010-04-21 20:17:39 +04:00
} ;
struct hpi_control_cache {
2011-02-10 07:26:06 +03:00
/** indicates whether the structures are initialized */
u16 init ;
2011-02-10 07:26:00 +03:00
u16 adap_idx ;
2010-04-21 20:17:39 +04:00
u32 control_count ;
u32 cache_size_in_bytes ;
2011-02-10 07:26:06 +03: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 20:17:39 +04:00
} ;
struct hpi_adapter_obj * hpi_find_adapter ( u16 adapter_index ) ;
2011-02-10 07:26:08 +03:00
2010-04-21 20:17:39 +04: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 ) ;
2014-11-20 06:22:53 +03:00
short hpi_check_control_cache_single ( struct hpi_control_cache_single * pC ,
struct hpi_message * phm , struct hpi_response * phr ) ;
2010-04-21 20:17:39 +04:00
struct hpi_control_cache * hpi_alloc_control_cache ( const u32
2011-02-10 07:25:58 +03:00
number_of_controls , const u32 size_in_bytes , u8 * pDSP_control_buffer ) ;
2014-11-20 06:22:53 +03:00
2010-04-21 20:17:39 +04:00
void hpi_free_control_cache ( struct hpi_control_cache * p_cache ) ;
2011-02-10 07:25:58 +03:00
void hpi_cmn_control_cache_sync_to_msg ( struct hpi_control_cache * pC ,
2010-04-21 20:17:39 +04:00
struct hpi_message * phm , struct hpi_response * phr ) ;
2011-02-10 07:26:06 +03:00
2014-11-20 06:22:53 +03:00
void hpi_cmn_control_cache_sync_to_msg_single ( struct hpi_control_cache_single
* pC , struct hpi_message * phm , struct hpi_response * phr ) ;
2010-04-21 20:17:39 +04:00
u16 hpi_validate_response ( struct hpi_message * phm , struct hpi_response * phr ) ;
2011-04-05 12:55:48 +04:00
hpi_handler_func HPI_COMMON ;