1/* SPDX-License-Identifier: GPL-2.0-only */
2/*****************************************************************************
3
4    AudioScience HPI driver
5    Copyright (C) 1997-2011  AudioScience Inc. <support@audioscience.com>
6
7
8Host Interface module for an ASI6205 based
9bus mastering PCI adapter.
10
11Copyright AudioScience, Inc., 2003
12******************************************************************************/
13
14#ifndef _HPI6205_H_
15#define _HPI6205_H_
16
17#include "hpi_internal.h"
18
19/***********************************************************
20	Defines used for basic messaging
21************************************************************/
22#define H620_HIF_RESET          0
23#define H620_HIF_IDLE           1
24#define H620_HIF_GET_RESP       2
25#define H620_HIF_DATA_DONE      3
26#define H620_HIF_DATA_MASK      0x10
27#define H620_HIF_SEND_DATA      0x14
28#define H620_HIF_GET_DATA       0x15
29#define H620_HIF_UNKNOWN                0x0000ffff
30
31/***********************************************************
32	Types used for mixer control caching
33************************************************************/
34
35#define H620_MAX_ISTREAMS 32
36#define H620_MAX_OSTREAMS 32
37#define HPI_NMIXER_CONTROLS 2048
38
39/*********************************************************************
40This is used for dynamic control cache allocation
41**********************************************************************/
42struct controlcache_6205 {
43	u32 number_of_controls;
44	u32 physical_address32;
45	u32 size_in_bytes;
46};
47
48/*********************************************************************
49This is used for dynamic allocation of async event array
50**********************************************************************/
51struct async_event_buffer_6205 {
52	u32 physical_address32;
53	u32 spare;
54	struct hpi_fifo_buffer b;
55};
56
57/***********************************************************
58The Host located memory buffer that the 6205 will bus master
59in and out of.
60************************************************************/
61#define HPI6205_SIZEOF_DATA (16*1024)
62
63struct message_buffer_6205 {
64	struct hpi_message message;
65	char data[256];
66};
67
68struct response_buffer_6205 {
69	struct hpi_response response;
70	char data[256];
71};
72
73union buffer_6205 {
74	struct message_buffer_6205 message_buffer;
75	struct response_buffer_6205 response_buffer;
76	u8 b_data[HPI6205_SIZEOF_DATA];
77};
78
79struct bus_master_interface {
80	u32 host_cmd;
81	u32 dsp_ack;
82	u32 transfer_size_in_bytes;
83	union buffer_6205 u;
84	struct controlcache_6205 control_cache;
85	struct async_event_buffer_6205 async_buffer;
86	struct hpi_hostbuffer_status
87	 instream_host_buffer_status[H620_MAX_ISTREAMS];
88	struct hpi_hostbuffer_status
89	 outstream_host_buffer_status[H620_MAX_OSTREAMS];
90};
91
92#endif
93