18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/***************************************************************************** 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ci AudioScience HPI driver 58c2ecf20Sopenharmony_ci Copyright (C) 1997-2011 AudioScience Inc. <support@audioscience.com> 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ciHost Interface module for an ASI6205 based 98c2ecf20Sopenharmony_cibus mastering PCI adapter. 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ciCopyright AudioScience, Inc., 2003 128c2ecf20Sopenharmony_ci******************************************************************************/ 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci#ifndef _HPI6205_H_ 158c2ecf20Sopenharmony_ci#define _HPI6205_H_ 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci#include "hpi_internal.h" 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci/*********************************************************** 208c2ecf20Sopenharmony_ci Defines used for basic messaging 218c2ecf20Sopenharmony_ci************************************************************/ 228c2ecf20Sopenharmony_ci#define H620_HIF_RESET 0 238c2ecf20Sopenharmony_ci#define H620_HIF_IDLE 1 248c2ecf20Sopenharmony_ci#define H620_HIF_GET_RESP 2 258c2ecf20Sopenharmony_ci#define H620_HIF_DATA_DONE 3 268c2ecf20Sopenharmony_ci#define H620_HIF_DATA_MASK 0x10 278c2ecf20Sopenharmony_ci#define H620_HIF_SEND_DATA 0x14 288c2ecf20Sopenharmony_ci#define H620_HIF_GET_DATA 0x15 298c2ecf20Sopenharmony_ci#define H620_HIF_UNKNOWN 0x0000ffff 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ci/*********************************************************** 328c2ecf20Sopenharmony_ci Types used for mixer control caching 338c2ecf20Sopenharmony_ci************************************************************/ 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ci#define H620_MAX_ISTREAMS 32 368c2ecf20Sopenharmony_ci#define H620_MAX_OSTREAMS 32 378c2ecf20Sopenharmony_ci#define HPI_NMIXER_CONTROLS 2048 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci/********************************************************************* 408c2ecf20Sopenharmony_ciThis is used for dynamic control cache allocation 418c2ecf20Sopenharmony_ci**********************************************************************/ 428c2ecf20Sopenharmony_cistruct controlcache_6205 { 438c2ecf20Sopenharmony_ci u32 number_of_controls; 448c2ecf20Sopenharmony_ci u32 physical_address32; 458c2ecf20Sopenharmony_ci u32 size_in_bytes; 468c2ecf20Sopenharmony_ci}; 478c2ecf20Sopenharmony_ci 488c2ecf20Sopenharmony_ci/********************************************************************* 498c2ecf20Sopenharmony_ciThis is used for dynamic allocation of async event array 508c2ecf20Sopenharmony_ci**********************************************************************/ 518c2ecf20Sopenharmony_cistruct async_event_buffer_6205 { 528c2ecf20Sopenharmony_ci u32 physical_address32; 538c2ecf20Sopenharmony_ci u32 spare; 548c2ecf20Sopenharmony_ci struct hpi_fifo_buffer b; 558c2ecf20Sopenharmony_ci}; 568c2ecf20Sopenharmony_ci 578c2ecf20Sopenharmony_ci/*********************************************************** 588c2ecf20Sopenharmony_ciThe Host located memory buffer that the 6205 will bus master 598c2ecf20Sopenharmony_ciin and out of. 608c2ecf20Sopenharmony_ci************************************************************/ 618c2ecf20Sopenharmony_ci#define HPI6205_SIZEOF_DATA (16*1024) 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_cistruct message_buffer_6205 { 648c2ecf20Sopenharmony_ci struct hpi_message message; 658c2ecf20Sopenharmony_ci char data[256]; 668c2ecf20Sopenharmony_ci}; 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_cistruct response_buffer_6205 { 698c2ecf20Sopenharmony_ci struct hpi_response response; 708c2ecf20Sopenharmony_ci char data[256]; 718c2ecf20Sopenharmony_ci}; 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_ciunion buffer_6205 { 748c2ecf20Sopenharmony_ci struct message_buffer_6205 message_buffer; 758c2ecf20Sopenharmony_ci struct response_buffer_6205 response_buffer; 768c2ecf20Sopenharmony_ci u8 b_data[HPI6205_SIZEOF_DATA]; 778c2ecf20Sopenharmony_ci}; 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_cistruct bus_master_interface { 808c2ecf20Sopenharmony_ci u32 host_cmd; 818c2ecf20Sopenharmony_ci u32 dsp_ack; 828c2ecf20Sopenharmony_ci u32 transfer_size_in_bytes; 838c2ecf20Sopenharmony_ci union buffer_6205 u; 848c2ecf20Sopenharmony_ci struct controlcache_6205 control_cache; 858c2ecf20Sopenharmony_ci struct async_event_buffer_6205 async_buffer; 868c2ecf20Sopenharmony_ci struct hpi_hostbuffer_status 878c2ecf20Sopenharmony_ci instream_host_buffer_status[H620_MAX_ISTREAMS]; 888c2ecf20Sopenharmony_ci struct hpi_hostbuffer_status 898c2ecf20Sopenharmony_ci outstream_host_buffer_status[H620_MAX_OSTREAMS]; 908c2ecf20Sopenharmony_ci}; 918c2ecf20Sopenharmony_ci 928c2ecf20Sopenharmony_ci#endif 93