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