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 8 Host Interface module for an ASI6205 based 9 bus mastering PCI adapter. 10 11 Copyright 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 /********************************************************************* 40 This is used for dynamic control cache allocation 41 **********************************************************************/ 42 struct controlcache_6205 { 43 u32 number_of_controls; 44 u32 physical_address32; 45 u32 size_in_bytes; 46 }; 47 48 /********************************************************************* 49 This is used for dynamic allocation of async event array 50 **********************************************************************/ 51 struct async_event_buffer_6205 { 52 u32 physical_address32; 53 u32 spare; 54 struct hpi_fifo_buffer b; 55 }; 56 57 /*********************************************************** 58 The Host located memory buffer that the 6205 will bus master 59 in and out of. 60 ************************************************************/ 61 #define HPI6205_SIZEOF_DATA (16*1024) 62 63 struct message_buffer_6205 { 64 struct hpi_message message; 65 char data[256]; 66 }; 67 68 struct response_buffer_6205 { 69 struct hpi_response response; 70 char data[256]; 71 }; 72 73 union 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 79 struct 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