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