162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*****************************************************************************
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci    AudioScience HPI driver
562306a36Sopenharmony_ci    Copyright (C) 1997-2011  AudioScience Inc. <support@audioscience.com>
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci
862306a36Sopenharmony_ciHost Interface module for an ASI6205 based
962306a36Sopenharmony_cibus mastering PCI adapter.
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ciCopyright AudioScience, Inc., 2003
1262306a36Sopenharmony_ci******************************************************************************/
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#ifndef _HPI6205_H_
1562306a36Sopenharmony_ci#define _HPI6205_H_
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci#include "hpi_internal.h"
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci/***********************************************************
2062306a36Sopenharmony_ci	Defines used for basic messaging
2162306a36Sopenharmony_ci************************************************************/
2262306a36Sopenharmony_ci#define H620_HIF_RESET          0
2362306a36Sopenharmony_ci#define H620_HIF_IDLE           1
2462306a36Sopenharmony_ci#define H620_HIF_GET_RESP       2
2562306a36Sopenharmony_ci#define H620_HIF_DATA_DONE      3
2662306a36Sopenharmony_ci#define H620_HIF_DATA_MASK      0x10
2762306a36Sopenharmony_ci#define H620_HIF_SEND_DATA      0x14
2862306a36Sopenharmony_ci#define H620_HIF_GET_DATA       0x15
2962306a36Sopenharmony_ci#define H620_HIF_UNKNOWN                0x0000ffff
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci/***********************************************************
3262306a36Sopenharmony_ci	Types used for mixer control caching
3362306a36Sopenharmony_ci************************************************************/
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci#define H620_MAX_ISTREAMS 32
3662306a36Sopenharmony_ci#define H620_MAX_OSTREAMS 32
3762306a36Sopenharmony_ci#define HPI_NMIXER_CONTROLS 2048
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci/*********************************************************************
4062306a36Sopenharmony_ciThis is used for dynamic control cache allocation
4162306a36Sopenharmony_ci**********************************************************************/
4262306a36Sopenharmony_cistruct controlcache_6205 {
4362306a36Sopenharmony_ci	u32 number_of_controls;
4462306a36Sopenharmony_ci	u32 physical_address32;
4562306a36Sopenharmony_ci	u32 size_in_bytes;
4662306a36Sopenharmony_ci};
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci/*********************************************************************
4962306a36Sopenharmony_ciThis is used for dynamic allocation of async event array
5062306a36Sopenharmony_ci**********************************************************************/
5162306a36Sopenharmony_cistruct async_event_buffer_6205 {
5262306a36Sopenharmony_ci	u32 physical_address32;
5362306a36Sopenharmony_ci	u32 spare;
5462306a36Sopenharmony_ci	struct hpi_fifo_buffer b;
5562306a36Sopenharmony_ci};
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci/***********************************************************
5862306a36Sopenharmony_ciThe Host located memory buffer that the 6205 will bus master
5962306a36Sopenharmony_ciin and out of.
6062306a36Sopenharmony_ci************************************************************/
6162306a36Sopenharmony_ci#define HPI6205_SIZEOF_DATA (16*1024)
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_cistruct message_buffer_6205 {
6462306a36Sopenharmony_ci	struct hpi_message message;
6562306a36Sopenharmony_ci	char data[256];
6662306a36Sopenharmony_ci};
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_cistruct response_buffer_6205 {
6962306a36Sopenharmony_ci	struct hpi_response response;
7062306a36Sopenharmony_ci	char data[256];
7162306a36Sopenharmony_ci};
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ciunion buffer_6205 {
7462306a36Sopenharmony_ci	struct message_buffer_6205 message_buffer;
7562306a36Sopenharmony_ci	struct response_buffer_6205 response_buffer;
7662306a36Sopenharmony_ci	u8 b_data[HPI6205_SIZEOF_DATA];
7762306a36Sopenharmony_ci};
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_cistruct bus_master_interface {
8062306a36Sopenharmony_ci	u32 host_cmd;
8162306a36Sopenharmony_ci	u32 dsp_ack;
8262306a36Sopenharmony_ci	u32 transfer_size_in_bytes;
8362306a36Sopenharmony_ci	union buffer_6205 u;
8462306a36Sopenharmony_ci	struct controlcache_6205 control_cache;
8562306a36Sopenharmony_ci	struct async_event_buffer_6205 async_buffer;
8662306a36Sopenharmony_ci	struct hpi_hostbuffer_status
8762306a36Sopenharmony_ci	 instream_host_buffer_status[H620_MAX_ISTREAMS];
8862306a36Sopenharmony_ci	struct hpi_hostbuffer_status
8962306a36Sopenharmony_ci	 outstream_host_buffer_status[H620_MAX_OSTREAMS];
9062306a36Sopenharmony_ci};
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci#endif
93