1*07d7fe7bSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 2719f82d3SEliot Blennerhassett /***************************************************************************** 3719f82d3SEliot Blennerhassett 4719f82d3SEliot Blennerhassett AudioScience HPI driver 5c6c2c9abSEliot Blennerhassett Copyright (C) 1997-2011 AudioScience Inc. <support@audioscience.com> 6719f82d3SEliot Blennerhassett 7719f82d3SEliot Blennerhassett 8719f82d3SEliot Blennerhassett Host Interface module for an ASI6205 based 9719f82d3SEliot Blennerhassett bus mastering PCI adapter. 10719f82d3SEliot Blennerhassett 11719f82d3SEliot Blennerhassett Copyright AudioScience, Inc., 2003 12719f82d3SEliot Blennerhassett ******************************************************************************/ 13719f82d3SEliot Blennerhassett 14719f82d3SEliot Blennerhassett #ifndef _HPI6205_H_ 15719f82d3SEliot Blennerhassett #define _HPI6205_H_ 16719f82d3SEliot Blennerhassett 17719f82d3SEliot Blennerhassett #include "hpi_internal.h" 18719f82d3SEliot Blennerhassett 19719f82d3SEliot Blennerhassett /*********************************************************** 20719f82d3SEliot Blennerhassett Defines used for basic messaging 21719f82d3SEliot Blennerhassett ************************************************************/ 22719f82d3SEliot Blennerhassett #define H620_HIF_RESET 0 23719f82d3SEliot Blennerhassett #define H620_HIF_IDLE 1 24719f82d3SEliot Blennerhassett #define H620_HIF_GET_RESP 2 25719f82d3SEliot Blennerhassett #define H620_HIF_DATA_DONE 3 26719f82d3SEliot Blennerhassett #define H620_HIF_DATA_MASK 0x10 27719f82d3SEliot Blennerhassett #define H620_HIF_SEND_DATA 0x14 28719f82d3SEliot Blennerhassett #define H620_HIF_GET_DATA 0x15 29719f82d3SEliot Blennerhassett #define H620_HIF_UNKNOWN 0x0000ffff 30719f82d3SEliot Blennerhassett 31719f82d3SEliot Blennerhassett /*********************************************************** 32719f82d3SEliot Blennerhassett Types used for mixer control caching 33719f82d3SEliot Blennerhassett ************************************************************/ 34719f82d3SEliot Blennerhassett 35719f82d3SEliot Blennerhassett #define H620_MAX_ISTREAMS 32 36719f82d3SEliot Blennerhassett #define H620_MAX_OSTREAMS 32 37719f82d3SEliot Blennerhassett #define HPI_NMIXER_CONTROLS 2048 38719f82d3SEliot Blennerhassett 39719f82d3SEliot Blennerhassett /********************************************************************* 40719f82d3SEliot Blennerhassett This is used for dynamic control cache allocation 41719f82d3SEliot Blennerhassett **********************************************************************/ 42719f82d3SEliot Blennerhassett struct controlcache_6205 { 43719f82d3SEliot Blennerhassett u32 number_of_controls; 44719f82d3SEliot Blennerhassett u32 physical_address32; 45719f82d3SEliot Blennerhassett u32 size_in_bytes; 46719f82d3SEliot Blennerhassett }; 47719f82d3SEliot Blennerhassett 48719f82d3SEliot Blennerhassett /********************************************************************* 49719f82d3SEliot Blennerhassett This is used for dynamic allocation of async event array 50719f82d3SEliot Blennerhassett **********************************************************************/ 51719f82d3SEliot Blennerhassett struct async_event_buffer_6205 { 52719f82d3SEliot Blennerhassett u32 physical_address32; 53719f82d3SEliot Blennerhassett u32 spare; 54719f82d3SEliot Blennerhassett struct hpi_fifo_buffer b; 55719f82d3SEliot Blennerhassett }; 56719f82d3SEliot Blennerhassett 57719f82d3SEliot Blennerhassett /*********************************************************** 58719f82d3SEliot Blennerhassett The Host located memory buffer that the 6205 will bus master 59719f82d3SEliot Blennerhassett in and out of. 60719f82d3SEliot Blennerhassett ************************************************************/ 61719f82d3SEliot Blennerhassett #define HPI6205_SIZEOF_DATA (16*1024) 62c6c2c9abSEliot Blennerhassett 63c6c2c9abSEliot Blennerhassett struct message_buffer_6205 { 64c6c2c9abSEliot Blennerhassett struct hpi_message message; 65c6c2c9abSEliot Blennerhassett char data[256]; 66c6c2c9abSEliot Blennerhassett }; 67c6c2c9abSEliot Blennerhassett 68c6c2c9abSEliot Blennerhassett struct response_buffer_6205 { 69c6c2c9abSEliot Blennerhassett struct hpi_response response; 70c6c2c9abSEliot Blennerhassett char data[256]; 71c6c2c9abSEliot Blennerhassett }; 72c6c2c9abSEliot Blennerhassett 73c6c2c9abSEliot Blennerhassett union buffer_6205 { 74c6c2c9abSEliot Blennerhassett struct message_buffer_6205 message_buffer; 75c6c2c9abSEliot Blennerhassett struct response_buffer_6205 response_buffer; 76c6c2c9abSEliot Blennerhassett u8 b_data[HPI6205_SIZEOF_DATA]; 77c6c2c9abSEliot Blennerhassett }; 78c6c2c9abSEliot Blennerhassett 79719f82d3SEliot Blennerhassett struct bus_master_interface { 80719f82d3SEliot Blennerhassett u32 host_cmd; 81719f82d3SEliot Blennerhassett u32 dsp_ack; 82719f82d3SEliot Blennerhassett u32 transfer_size_in_bytes; 83c6c2c9abSEliot Blennerhassett union buffer_6205 u; 84719f82d3SEliot Blennerhassett struct controlcache_6205 control_cache; 85719f82d3SEliot Blennerhassett struct async_event_buffer_6205 async_buffer; 86719f82d3SEliot Blennerhassett struct hpi_hostbuffer_status 87719f82d3SEliot Blennerhassett instream_host_buffer_status[H620_MAX_ISTREAMS]; 88719f82d3SEliot Blennerhassett struct hpi_hostbuffer_status 89719f82d3SEliot Blennerhassett outstream_host_buffer_status[H620_MAX_OSTREAMS]; 90719f82d3SEliot Blennerhassett }; 91719f82d3SEliot Blennerhassett 92719f82d3SEliot Blennerhassett #endif 93