Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/sound/pci/asihpi/hpicmn.h
26424 views
1
/* SPDX-License-Identifier: GPL-2.0-only */
2
/*
3
4
AudioScience HPI driver
5
Copyright (C) 1997-2014 AudioScience Inc. <[email protected]>
6
7
8
*/
9
10
struct hpi_adapter_obj;
11
12
/* a function that takes an adapter obj and returns an int */
13
typedef 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
19
struct 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
34
struct 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
46
struct hpi_adapter_obj *hpi_find_adapter(u16 adapter_index);
47
48
u16 hpi_add_adapter(struct hpi_adapter_obj *pao);
49
50
void hpi_delete_adapter(struct hpi_adapter_obj *pao);
51
52
short hpi_check_control_cache(struct hpi_control_cache *pC,
53
struct hpi_message *phm, struct hpi_response *phr);
54
55
short hpi_check_control_cache_single(struct hpi_control_cache_single *pC,
56
struct hpi_message *phm, struct hpi_response *phr);
57
58
struct hpi_control_cache *hpi_alloc_control_cache(const u32
59
number_of_controls, const u32 size_in_bytes, u8 *pDSP_control_buffer);
60
61
void hpi_free_control_cache(struct hpi_control_cache *p_cache);
62
63
void hpi_cmn_control_cache_sync_to_msg(struct hpi_control_cache *pC,
64
struct hpi_message *phm, struct hpi_response *phr);
65
66
void hpi_cmn_control_cache_sync_to_msg_single(struct hpi_control_cache_single
67
*pC, struct hpi_message *phm, struct hpi_response *phr);
68
69
u16 hpi_validate_response(struct hpi_message *phm, struct hpi_response *phr);
70
71
hpi_handler_func HPI_COMMON;
72
73