72 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 4 AudioScience HPI driver5 Copyright (C) 1997-2014 AudioScience Inc. <support@audioscience.com>6 7 8*/9 10struct hpi_adapter_obj;11 12/* a function that takes an adapter obj and returns an int */13typedef int adapter_int_func(struct hpi_adapter_obj *pao, u32 message);14 15#define HPI_IRQ_NONE (0)16#define HPI_IRQ_MESSAGE (1)17#define HPI_IRQ_MIXER (2)18 19struct hpi_adapter_obj {20 struct hpi_pci pci; /* PCI info - bus#,dev#,address etc */21 u16 type; /* 0x6644 == ASI6644 etc */22 u16 index;23 24 struct hpios_spinlock dsp_lock;25 26 u16 dsp_crashed;27 u16 has_control_cache;28 void *priv;29 adapter_int_func *irq_query_and_clear;30 struct hpi_hostbuffer_status *instream_host_buffer_status;31 struct hpi_hostbuffer_status *outstream_host_buffer_status;32};33 34struct hpi_control_cache {35 /** indicates whether the structures are initialized */36 u16 init;37 u16 adap_idx;38 u32 control_count;39 u32 cache_size_in_bytes;40 /** pointer to allocated memory of lookup pointers. */41 struct hpi_control_cache_info **p_info;42 /** pointer to DSP's control cache. */43 u8 *p_cache;44};45 46struct hpi_adapter_obj *hpi_find_adapter(u16 adapter_index);47 48u16 hpi_add_adapter(struct hpi_adapter_obj *pao);49 50void hpi_delete_adapter(struct hpi_adapter_obj *pao);51 52short hpi_check_control_cache(struct hpi_control_cache *pC,53 struct hpi_message *phm, struct hpi_response *phr);54 55short hpi_check_control_cache_single(struct hpi_control_cache_single *pC,56 struct hpi_message *phm, struct hpi_response *phr);57 58struct hpi_control_cache *hpi_alloc_control_cache(const u3259 number_of_controls, const u32 size_in_bytes, u8 *pDSP_control_buffer);60 61void hpi_free_control_cache(struct hpi_control_cache *p_cache);62 63void hpi_cmn_control_cache_sync_to_msg(struct hpi_control_cache *pC,64 struct hpi_message *phm, struct hpi_response *phr);65 66void hpi_cmn_control_cache_sync_to_msg_single(struct hpi_control_cache_single67 *pC, struct hpi_message *phm, struct hpi_response *phr);68 69u16 hpi_validate_response(struct hpi_message *phm, struct hpi_response *phr);70 71hpi_handler_func HPI_COMMON;72