xref: /kernel/linux/linux-6.6/sound/pci/asihpi/hpi.h (revision 62306a36)
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_ci*/
962306a36Sopenharmony_ci/** \file hpi.h
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci AudioScience Hardware Programming Interface (HPI)
1262306a36Sopenharmony_ci public API definition.
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci The HPI is a low-level hardware abstraction layer to all
1562306a36Sopenharmony_ci AudioScience digital audio adapters
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci(C) Copyright AudioScience Inc. 1998-2010
1862306a36Sopenharmony_ci*/
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci#ifndef _HPI_H_
2162306a36Sopenharmony_ci#define _HPI_H_
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci#include <linux/types.h>
2462306a36Sopenharmony_ci#define HPI_BUILD_KERNEL_MODE
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci/******************************************************************************/
2762306a36Sopenharmony_ci/********       HPI API DEFINITIONS                                       *****/
2862306a36Sopenharmony_ci/******************************************************************************/
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci/*******************************************/
3162306a36Sopenharmony_ci/**  Audio format types
3262306a36Sopenharmony_ci\ingroup stream
3362306a36Sopenharmony_ci*/
3462306a36Sopenharmony_cienum HPI_FORMATS {
3562306a36Sopenharmony_ci/** Used internally on adapter. */
3662306a36Sopenharmony_ci	HPI_FORMAT_MIXER_NATIVE = 0,
3762306a36Sopenharmony_ci/** 8-bit unsigned PCM. Windows equivalent is WAVE_FORMAT_PCM. */
3862306a36Sopenharmony_ci	HPI_FORMAT_PCM8_UNSIGNED = 1,
3962306a36Sopenharmony_ci/** 16-bit signed PCM. Windows equivalent is WAVE_FORMAT_PCM. */
4062306a36Sopenharmony_ci	HPI_FORMAT_PCM16_SIGNED = 2,
4162306a36Sopenharmony_ci/** MPEG-1 Layer-1. */
4262306a36Sopenharmony_ci	HPI_FORMAT_MPEG_L1 = 3,
4362306a36Sopenharmony_ci/** MPEG-1 Layer-2.
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ciWindows equivalent is WAVE_FORMAT_MPEG.
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ciThe following table shows what combinations of mode and bitrate are possible:
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci<table border=1 cellspacing=0 cellpadding=5>
5062306a36Sopenharmony_ci<tr>
5162306a36Sopenharmony_ci<td><p><b>Bitrate (kbs)</b></p>
5262306a36Sopenharmony_ci<td><p><b>Mono</b></p>
5362306a36Sopenharmony_ci<td><p><b>Stereo,<br>Joint Stereo or<br>Dual Channel</b></p>
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci<tr><td>32<td>X<td>_
5662306a36Sopenharmony_ci<tr><td>40<td>_<td>_
5762306a36Sopenharmony_ci<tr><td>48<td>X<td>_
5862306a36Sopenharmony_ci<tr><td>56<td>X<td>_
5962306a36Sopenharmony_ci<tr><td>64<td>X<td>X
6062306a36Sopenharmony_ci<tr><td>80<td>X<td>_
6162306a36Sopenharmony_ci<tr><td>96<td>X<td>X
6262306a36Sopenharmony_ci<tr><td>112<td>X<td>X
6362306a36Sopenharmony_ci<tr><td>128<td>X<td>X
6462306a36Sopenharmony_ci<tr><td>160<td>X<td>X
6562306a36Sopenharmony_ci<tr><td>192<td>X<td>X
6662306a36Sopenharmony_ci<tr><td>224<td>_<td>X
6762306a36Sopenharmony_ci<tr><td>256<td>-<td>X
6862306a36Sopenharmony_ci<tr><td>320<td>-<td>X
6962306a36Sopenharmony_ci<tr><td>384<td>_<td>X
7062306a36Sopenharmony_ci</table>
7162306a36Sopenharmony_ci*/
7262306a36Sopenharmony_ci	HPI_FORMAT_MPEG_L2 = 4,
7362306a36Sopenharmony_ci/** MPEG-1 Layer-3.
7462306a36Sopenharmony_ciWindows equivalent is WAVE_FORMAT_MPEG.
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ciThe following table shows what combinations of mode and bitrate are possible:
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci<table border=1 cellspacing=0 cellpadding=5>
7962306a36Sopenharmony_ci<tr>
8062306a36Sopenharmony_ci<td><p><b>Bitrate (kbs)</b></p>
8162306a36Sopenharmony_ci<td><p><b>Mono<br>Stereo @ 8,<br>11.025 and<br>12kHz*</b></p>
8262306a36Sopenharmony_ci<td><p><b>Mono<br>Stereo @ 16,<br>22.050 and<br>24kHz*</b></p>
8362306a36Sopenharmony_ci<td><p><b>Mono<br>Stereo @ 32,<br>44.1 and<br>48kHz</b></p>
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci<tr><td>16<td>X<td>X<td>_
8662306a36Sopenharmony_ci<tr><td>24<td>X<td>X<td>_
8762306a36Sopenharmony_ci<tr><td>32<td>X<td>X<td>X
8862306a36Sopenharmony_ci<tr><td>40<td>X<td>X<td>X
8962306a36Sopenharmony_ci<tr><td>48<td>X<td>X<td>X
9062306a36Sopenharmony_ci<tr><td>56<td>X<td>X<td>X
9162306a36Sopenharmony_ci<tr><td>64<td>X<td>X<td>X
9262306a36Sopenharmony_ci<tr><td>80<td>_<td>X<td>X
9362306a36Sopenharmony_ci<tr><td>96<td>_<td>X<td>X
9462306a36Sopenharmony_ci<tr><td>112<td>_<td>X<td>X
9562306a36Sopenharmony_ci<tr><td>128<td>_<td>X<td>X
9662306a36Sopenharmony_ci<tr><td>144<td>_<td>X<td>_
9762306a36Sopenharmony_ci<tr><td>160<td>_<td>X<td>X
9862306a36Sopenharmony_ci<tr><td>192<td>_<td>_<td>X
9962306a36Sopenharmony_ci<tr><td>224<td>_<td>_<td>X
10062306a36Sopenharmony_ci<tr><td>256<td>-<td>_<td>X
10162306a36Sopenharmony_ci<tr><td>320<td>-<td>_<td>X
10262306a36Sopenharmony_ci</table>
10362306a36Sopenharmony_ci\b * Available on the ASI6000 series only
10462306a36Sopenharmony_ci*/
10562306a36Sopenharmony_ci	HPI_FORMAT_MPEG_L3 = 5,
10662306a36Sopenharmony_ci/** Dolby AC-2. */
10762306a36Sopenharmony_ci	HPI_FORMAT_DOLBY_AC2 = 6,
10862306a36Sopenharmony_ci/** Dolbt AC-3. */
10962306a36Sopenharmony_ci	HPI_FORMAT_DOLBY_AC3 = 7,
11062306a36Sopenharmony_ci/** 16-bit PCM big-endian. */
11162306a36Sopenharmony_ci	HPI_FORMAT_PCM16_BIGENDIAN = 8,
11262306a36Sopenharmony_ci/** TAGIT-1 algorithm - hits. */
11362306a36Sopenharmony_ci	HPI_FORMAT_AA_TAGIT1_HITS = 9,
11462306a36Sopenharmony_ci/** TAGIT-1 algorithm - inserts. */
11562306a36Sopenharmony_ci	HPI_FORMAT_AA_TAGIT1_INSERTS = 10,
11662306a36Sopenharmony_ci/** 32-bit signed PCM. Windows equivalent is WAVE_FORMAT_PCM.
11762306a36Sopenharmony_ciEach sample is a 32bit word. The most significant 24 bits contain a 24-bit
11862306a36Sopenharmony_cisample and the least significant 8 bits are set to 0.
11962306a36Sopenharmony_ci*/
12062306a36Sopenharmony_ci	HPI_FORMAT_PCM32_SIGNED = 11,
12162306a36Sopenharmony_ci/** Raw bitstream - unknown format. */
12262306a36Sopenharmony_ci	HPI_FORMAT_RAW_BITSTREAM = 12,
12362306a36Sopenharmony_ci/** TAGIT-1 algorithm hits - extended. */
12462306a36Sopenharmony_ci	HPI_FORMAT_AA_TAGIT1_HITS_EX1 = 13,
12562306a36Sopenharmony_ci/** 32-bit PCM as an IEEE float. Windows equivalent is WAVE_FORMAT_IEEE_FLOAT.
12662306a36Sopenharmony_ciEach sample is a 32bit word in IEEE754 floating point format.
12762306a36Sopenharmony_ciThe range is +1.0 to -1.0, which corresponds to digital fullscale.
12862306a36Sopenharmony_ci*/
12962306a36Sopenharmony_ci	HPI_FORMAT_PCM32_FLOAT = 14,
13062306a36Sopenharmony_ci/** 24-bit PCM signed. Windows equivalent is WAVE_FORMAT_PCM. */
13162306a36Sopenharmony_ci	HPI_FORMAT_PCM24_SIGNED = 15,
13262306a36Sopenharmony_ci/** OEM format 1 - private. */
13362306a36Sopenharmony_ci	HPI_FORMAT_OEM1 = 16,
13462306a36Sopenharmony_ci/** OEM format 2 - private. */
13562306a36Sopenharmony_ci	HPI_FORMAT_OEM2 = 17,
13662306a36Sopenharmony_ci/** Undefined format. */
13762306a36Sopenharmony_ci	HPI_FORMAT_UNDEFINED = 0xffff
13862306a36Sopenharmony_ci};
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ci/*******************************************/
14162306a36Sopenharmony_ci/** Stream States
14262306a36Sopenharmony_ci\ingroup stream
14362306a36Sopenharmony_ci*/
14462306a36Sopenharmony_cienum HPI_STREAM_STATES {
14562306a36Sopenharmony_ci	/** State stopped - stream is stopped. */
14662306a36Sopenharmony_ci	HPI_STATE_STOPPED = 1,
14762306a36Sopenharmony_ci	/** State playing - stream is playing audio. */
14862306a36Sopenharmony_ci	HPI_STATE_PLAYING = 2,
14962306a36Sopenharmony_ci	/** State recording - stream is recording. */
15062306a36Sopenharmony_ci	HPI_STATE_RECORDING = 3,
15162306a36Sopenharmony_ci	/** State drained - playing stream ran out of data to play. */
15262306a36Sopenharmony_ci	HPI_STATE_DRAINED = 4,
15362306a36Sopenharmony_ci	/** State generate sine - to be implemented. */
15462306a36Sopenharmony_ci	HPI_STATE_SINEGEN = 5,
15562306a36Sopenharmony_ci	/** State wait - used for inter-card sync to mean waiting for all
15662306a36Sopenharmony_ci		cards to be ready. */
15762306a36Sopenharmony_ci	HPI_STATE_WAIT = 6
15862306a36Sopenharmony_ci};
15962306a36Sopenharmony_ci/*******************************************/
16062306a36Sopenharmony_ci/** Source node types
16162306a36Sopenharmony_ci\ingroup mixer
16262306a36Sopenharmony_ci*/
16362306a36Sopenharmony_cienum HPI_SOURCENODES {
16462306a36Sopenharmony_ci	/** This define can be used instead of 0 to indicate
16562306a36Sopenharmony_ci	that there is no valid source node. A control that
16662306a36Sopenharmony_ci	exists on a destination node can be searched for using a source
16762306a36Sopenharmony_ci	node value of either 0, or HPI_SOURCENODE_NONE */
16862306a36Sopenharmony_ci	HPI_SOURCENODE_NONE = 100,
16962306a36Sopenharmony_ci	/** Out Stream (Play) node. */
17062306a36Sopenharmony_ci	HPI_SOURCENODE_OSTREAM = 101,
17162306a36Sopenharmony_ci	/** Line in node - could be analog, AES/EBU or network. */
17262306a36Sopenharmony_ci	HPI_SOURCENODE_LINEIN = 102,
17362306a36Sopenharmony_ci	HPI_SOURCENODE_AESEBU_IN = 103,	     /**< AES/EBU input node. */
17462306a36Sopenharmony_ci	HPI_SOURCENODE_TUNER = 104,	     /**< tuner node. */
17562306a36Sopenharmony_ci	HPI_SOURCENODE_RF = 105,	     /**< RF input node. */
17662306a36Sopenharmony_ci	HPI_SOURCENODE_CLOCK_SOURCE = 106,   /**< clock source node. */
17762306a36Sopenharmony_ci	HPI_SOURCENODE_RAW_BITSTREAM = 107,  /**< raw bitstream node. */
17862306a36Sopenharmony_ci	HPI_SOURCENODE_MICROPHONE = 108,     /**< microphone node. */
17962306a36Sopenharmony_ci	/** Cobranet input node -
18062306a36Sopenharmony_ci	    Audio samples come from the Cobranet network and into the device. */
18162306a36Sopenharmony_ci	HPI_SOURCENODE_COBRANET = 109,
18262306a36Sopenharmony_ci	HPI_SOURCENODE_ANALOG = 110,	     /**< analog input node. */
18362306a36Sopenharmony_ci	HPI_SOURCENODE_ADAPTER = 111,	     /**< adapter node. */
18462306a36Sopenharmony_ci	/** RTP stream input node - This node is a destination for
18562306a36Sopenharmony_ci	    packets of RTP audio samples from other devices. */
18662306a36Sopenharmony_ci	HPI_SOURCENODE_RTP_DESTINATION = 112,
18762306a36Sopenharmony_ci	HPI_SOURCENODE_INTERNAL = 113,	     /**< node internal to the device. */
18862306a36Sopenharmony_ci	HPI_SOURCENODE_AVB = 114,	     /**< AVB input stream */
18962306a36Sopenharmony_ci	HPI_SOURCENODE_BLULINK = 115,	     /**< BLU-link input channel */
19062306a36Sopenharmony_ci	/* !!!Update this  AND hpidebug.h if you add a new sourcenode type!!! */
19162306a36Sopenharmony_ci	HPI_SOURCENODE_LAST_INDEX = 115	     /**< largest ID */
19262306a36Sopenharmony_ci		/* AX6 max sourcenode types = 15 */
19362306a36Sopenharmony_ci};
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ci/*******************************************/
19662306a36Sopenharmony_ci/** Destination node types
19762306a36Sopenharmony_ci\ingroup mixer
19862306a36Sopenharmony_ci*/
19962306a36Sopenharmony_cienum HPI_DESTNODES {
20062306a36Sopenharmony_ci	/** This define can be used instead of 0 to indicate
20162306a36Sopenharmony_ci	that there is no valid destination node. A control that
20262306a36Sopenharmony_ci	exists on a source node can be searched for using a destination
20362306a36Sopenharmony_ci	node value of either 0, or HPI_DESTNODE_NONE */
20462306a36Sopenharmony_ci	HPI_DESTNODE_NONE = 200,
20562306a36Sopenharmony_ci	/** In Stream (Record) node. */
20662306a36Sopenharmony_ci	HPI_DESTNODE_ISTREAM = 201,
20762306a36Sopenharmony_ci	HPI_DESTNODE_LINEOUT = 202,	     /**< line out node. */
20862306a36Sopenharmony_ci	HPI_DESTNODE_AESEBU_OUT = 203,	     /**< AES/EBU output node. */
20962306a36Sopenharmony_ci	HPI_DESTNODE_RF = 204,		     /**< RF output node. */
21062306a36Sopenharmony_ci	HPI_DESTNODE_SPEAKER = 205,	     /**< speaker output node. */
21162306a36Sopenharmony_ci	/** Cobranet output node -
21262306a36Sopenharmony_ci	    Audio samples from the device are sent out on the Cobranet network.*/
21362306a36Sopenharmony_ci	HPI_DESTNODE_COBRANET = 206,
21462306a36Sopenharmony_ci	HPI_DESTNODE_ANALOG = 207,	     /**< analog output node. */
21562306a36Sopenharmony_ci	/** RTP stream output node - This node is a source for
21662306a36Sopenharmony_ci	    packets of RTP audio samples that are sent to other devices. */
21762306a36Sopenharmony_ci	HPI_DESTNODE_RTP_SOURCE = 208,
21862306a36Sopenharmony_ci	HPI_DESTNODE_AVB = 209,		     /**< AVB output stream */
21962306a36Sopenharmony_ci	HPI_DESTNODE_INTERNAL = 210,	     /**< node internal to the device. */
22062306a36Sopenharmony_ci	HPI_DESTNODE_BLULINK = 211,	     /**< BLU-link output channel. */
22162306a36Sopenharmony_ci	/* !!!Update this AND hpidebug.h if you add a new destnode type!!! */
22262306a36Sopenharmony_ci	HPI_DESTNODE_LAST_INDEX = 211	     /**< largest ID */
22362306a36Sopenharmony_ci		/* AX6 max destnode types = 15 */
22462306a36Sopenharmony_ci};
22562306a36Sopenharmony_ci
22662306a36Sopenharmony_ci/*******************************************/
22762306a36Sopenharmony_ci/** Mixer control types
22862306a36Sopenharmony_ci\ingroup mixer
22962306a36Sopenharmony_ci*/
23062306a36Sopenharmony_cienum HPI_CONTROLS {
23162306a36Sopenharmony_ci	HPI_CONTROL_GENERIC = 0,	/**< generic control. */
23262306a36Sopenharmony_ci	HPI_CONTROL_CONNECTION = 1, /**< A connection between nodes. */
23362306a36Sopenharmony_ci	HPI_CONTROL_VOLUME = 2,	      /**< volume control - works in dB_fs. */
23462306a36Sopenharmony_ci	HPI_CONTROL_METER = 3,	/**< peak meter control. */
23562306a36Sopenharmony_ci	HPI_CONTROL_MUTE = 4,	/*mute control - not used at present. */
23662306a36Sopenharmony_ci	HPI_CONTROL_MULTIPLEXER = 5,	/**< multiplexer control. */
23762306a36Sopenharmony_ci
23862306a36Sopenharmony_ci	HPI_CONTROL_AESEBU_TRANSMITTER = 6, /**< AES/EBU transmitter control */
23962306a36Sopenharmony_ci	HPI_CONTROL_AESEBUTX = 6,	/* HPI_CONTROL_AESEBU_TRANSMITTER */
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ci	HPI_CONTROL_AESEBU_RECEIVER = 7, /**< AES/EBU receiver control. */
24262306a36Sopenharmony_ci	HPI_CONTROL_AESEBURX = 7,	/* HPI_CONTROL_AESEBU_RECEIVER */
24362306a36Sopenharmony_ci
24462306a36Sopenharmony_ci	HPI_CONTROL_LEVEL = 8, /**< level/trim control - works in d_bu. */
24562306a36Sopenharmony_ci	HPI_CONTROL_TUNER = 9,	/**< tuner control. */
24662306a36Sopenharmony_ci/*      HPI_CONTROL_ONOFFSWITCH =       10 */
24762306a36Sopenharmony_ci	HPI_CONTROL_VOX = 11,	/**< vox control. */
24862306a36Sopenharmony_ci/*      HPI_CONTROL_AES18_TRANSMITTER = 12 */
24962306a36Sopenharmony_ci/*      HPI_CONTROL_AES18_RECEIVER = 13 */
25062306a36Sopenharmony_ci/*      HPI_CONTROL_AES18_BLOCKGENERATOR  = 14 */
25162306a36Sopenharmony_ci	HPI_CONTROL_CHANNEL_MODE = 15,	/**< channel mode control. */
25262306a36Sopenharmony_ci
25362306a36Sopenharmony_ci	HPI_CONTROL_BITSTREAM = 16,	/**< bitstream control. */
25462306a36Sopenharmony_ci	HPI_CONTROL_SAMPLECLOCK = 17,	/**< sample clock control. */
25562306a36Sopenharmony_ci	HPI_CONTROL_MICROPHONE = 18,	/**< microphone control. */
25662306a36Sopenharmony_ci	HPI_CONTROL_PARAMETRIC_EQ = 19,	/**< parametric EQ control. */
25762306a36Sopenharmony_ci	HPI_CONTROL_EQUALIZER = 19,	/*HPI_CONTROL_PARAMETRIC_EQ */
25862306a36Sopenharmony_ci
25962306a36Sopenharmony_ci	HPI_CONTROL_COMPANDER = 20,	/**< compander control. */
26062306a36Sopenharmony_ci	HPI_CONTROL_COBRANET = 21,	/**< cobranet control. */
26162306a36Sopenharmony_ci	HPI_CONTROL_TONEDETECTOR = 22,	/**< tone detector control. */
26262306a36Sopenharmony_ci	HPI_CONTROL_SILENCEDETECTOR = 23,	/**< silence detector control. */
26362306a36Sopenharmony_ci	HPI_CONTROL_PAD = 24,	/**< tuner PAD control. */
26462306a36Sopenharmony_ci	HPI_CONTROL_SRC = 25,	/**< samplerate converter control. */
26562306a36Sopenharmony_ci	HPI_CONTROL_UNIVERSAL = 26,	/**< universal control. */
26662306a36Sopenharmony_ci
26762306a36Sopenharmony_ci/*  !!! Update this AND hpidebug.h if you add a new control type!!!*/
26862306a36Sopenharmony_ci	HPI_CONTROL_LAST_INDEX = 26 /**<highest control type ID */
26962306a36Sopenharmony_ci/* WARNING types 256 or greater impact bit packing in all AX6 DSP code */
27062306a36Sopenharmony_ci};
27162306a36Sopenharmony_ci
27262306a36Sopenharmony_ci/*******************************************/
27362306a36Sopenharmony_ci/** Adapter properties
27462306a36Sopenharmony_ciThese are used in HPI_AdapterSetProperty() and HPI_AdapterGetProperty()
27562306a36Sopenharmony_ci\ingroup adapter
27662306a36Sopenharmony_ci*/
27762306a36Sopenharmony_cienum HPI_ADAPTER_PROPERTIES {
27862306a36Sopenharmony_ci/** \internal Used in dwProperty field of HPI_AdapterSetProperty() and
27962306a36Sopenharmony_ciHPI_AdapterGetProperty(). This errata applies to all ASI6000 cards with both
28062306a36Sopenharmony_cianalog and digital outputs. The CS4224 A/D+D/A has a one sample delay between
28162306a36Sopenharmony_cileft and right channels on both its input (ADC) and output (DAC).
28262306a36Sopenharmony_ciMore details are available in Cirrus Logic errata ER284B2.
28362306a36Sopenharmony_ciPDF available from www.cirrus.com, released by Cirrus in 2001.
28462306a36Sopenharmony_ci*/
28562306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_ERRATA_1 = 1,
28662306a36Sopenharmony_ci
28762306a36Sopenharmony_ci/** Adapter grouping property
28862306a36Sopenharmony_ciIndicates whether the adapter supports the grouping API (for ASIO and SSX2)
28962306a36Sopenharmony_ci*/
29062306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_GROUPING = 2,
29162306a36Sopenharmony_ci
29262306a36Sopenharmony_ci/** Driver SSX2 property
29362306a36Sopenharmony_ciTells the kernel driver to turn on SSX2 stream mapping.
29462306a36Sopenharmony_ciThis feature is not used by the DSP. In fact the call is completely processed
29562306a36Sopenharmony_ciby the driver and is not passed on to the DSP at all.
29662306a36Sopenharmony_ci*/
29762306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_ENABLE_SSX2 = 3,
29862306a36Sopenharmony_ci
29962306a36Sopenharmony_ci/** Adapter SSX2 property
30062306a36Sopenharmony_ciIndicates the state of the adapter's SSX2 setting. This setting is stored in
30162306a36Sopenharmony_cinon-volatile memory on the adapter. A typical call sequence would be to use
30262306a36Sopenharmony_ciHPI_ADAPTER_PROPERTY_SSX2_SETTING to set SSX2 on the adapter and then to reload
30362306a36Sopenharmony_cithe driver. The driver would query HPI_ADAPTER_PROPERTY_SSX2_SETTING during
30462306a36Sopenharmony_cistartup and if SSX2 is set, it would then call HPI_ADAPTER_PROPERTY_ENABLE_SSX2
30562306a36Sopenharmony_cito enable SSX2 stream mapping within the kernel level of the driver.
30662306a36Sopenharmony_ci*/
30762306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_SSX2_SETTING = 4,
30862306a36Sopenharmony_ci
30962306a36Sopenharmony_ci/** Enables/disables PCI(e) IRQ.
31062306a36Sopenharmony_ciA setting of 0 indicates that no interrupts are being generated. A DSP boot
31162306a36Sopenharmony_cithis property is set to 0. Setting to a non-zero value specifies the number
31262306a36Sopenharmony_ciof frames of audio that should be processed between interrupts. This property
31362306a36Sopenharmony_cishould be set to multiple of the mixer interval as read back from the
31462306a36Sopenharmony_ciHPI_ADAPTER_PROPERTY_INTERVAL property.
31562306a36Sopenharmony_ci*/
31662306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_IRQ_RATE = 5,
31762306a36Sopenharmony_ci
31862306a36Sopenharmony_ci/** Base number for readonly properties */
31962306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_READONLYBASE = 256,
32062306a36Sopenharmony_ci
32162306a36Sopenharmony_ci/** Readonly adapter latency property.
32262306a36Sopenharmony_ciThis property returns in the input and output latency in samples.
32362306a36Sopenharmony_ciProperty 1 is the estimated input latency
32462306a36Sopenharmony_ciin samples, while Property 2 is that output latency in  samples.
32562306a36Sopenharmony_ci*/
32662306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_LATENCY = 256,
32762306a36Sopenharmony_ci
32862306a36Sopenharmony_ci/** Readonly adapter granularity property.
32962306a36Sopenharmony_ciThe granulariy is the smallest size chunk of stereo samples that is processed by
33062306a36Sopenharmony_cithe adapter.
33162306a36Sopenharmony_ciThis property returns the record granularity in samples in Property 1.
33262306a36Sopenharmony_ciProperty 2 returns the play granularity.
33362306a36Sopenharmony_ci*/
33462306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_GRANULARITY = 257,
33562306a36Sopenharmony_ci
33662306a36Sopenharmony_ci/** Readonly adapter number of current channels property.
33762306a36Sopenharmony_ciProperty 1 is the number of record channels per record device.
33862306a36Sopenharmony_ciProperty 2 is the number of play channels per playback device.*/
33962306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_CURCHANNELS = 258,
34062306a36Sopenharmony_ci
34162306a36Sopenharmony_ci/** Readonly adapter software version.
34262306a36Sopenharmony_ciThe SOFTWARE_VERSION property returns the version of the software running
34362306a36Sopenharmony_cion the adapter as Major.Minor.Release.
34462306a36Sopenharmony_ciProperty 1 contains Major in bits 15..8 and Minor in bits 7..0.
34562306a36Sopenharmony_ciProperty 2 contains Release in bits 7..0. */
34662306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_SOFTWARE_VERSION = 259,
34762306a36Sopenharmony_ci
34862306a36Sopenharmony_ci/** Readonly adapter MAC address MSBs.
34962306a36Sopenharmony_ciThe MAC_ADDRESS_MSB property returns
35062306a36Sopenharmony_cithe most significant 32 bits of the MAC address.
35162306a36Sopenharmony_ciProperty 1 contains bits 47..32 of the MAC address.
35262306a36Sopenharmony_ciProperty 2 contains bits 31..16 of the MAC address. */
35362306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_MAC_ADDRESS_MSB = 260,
35462306a36Sopenharmony_ci
35562306a36Sopenharmony_ci/** Readonly adapter MAC address LSBs
35662306a36Sopenharmony_ciThe MAC_ADDRESS_LSB property returns
35762306a36Sopenharmony_cithe least significant 16 bits of the MAC address.
35862306a36Sopenharmony_ciProperty 1 contains bits 15..0 of the MAC address. */
35962306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_MAC_ADDRESS_LSB = 261,
36062306a36Sopenharmony_ci
36162306a36Sopenharmony_ci/** Readonly extended adapter type number
36262306a36Sopenharmony_ciThe EXTENDED_ADAPTER_TYPE property returns the 4 digits of an extended
36362306a36Sopenharmony_ciadapter type, i.e ASI8920-0022, 0022 is the extended type.
36462306a36Sopenharmony_ciThe digits are returned as ASCII characters rather than the hex digits that
36562306a36Sopenharmony_ciare returned for the main type
36662306a36Sopenharmony_ciProperty 1 returns the 1st two (left most) digits, i.e "00"
36762306a36Sopenharmony_ciin the example above, the upper byte being the left most digit.
36862306a36Sopenharmony_ciProperty 2 returns the 2nd two digits, i.e "22" in the example above*/
36962306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_EXTENDED_ADAPTER_TYPE = 262,
37062306a36Sopenharmony_ci
37162306a36Sopenharmony_ci/** Readonly debug log buffer information */
37262306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_LOGTABLEN = 263,
37362306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_LOGTABBEG = 264,
37462306a36Sopenharmony_ci
37562306a36Sopenharmony_ci/** Readonly adapter IP address
37662306a36Sopenharmony_ciFor 192.168.1.101
37762306a36Sopenharmony_ciProperty 1 returns the 1st two (left most) digits, i.e 192*256 + 168
37862306a36Sopenharmony_ciin the example above, the upper byte being the left most digit.
37962306a36Sopenharmony_ciProperty 2 returns the 2nd two digits, i.e 1*256 + 101 in the example above, */
38062306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_IP_ADDRESS = 265,
38162306a36Sopenharmony_ci
38262306a36Sopenharmony_ci/** Readonly adapter buffer processed count. Returns a buffer processed count
38362306a36Sopenharmony_cithat is incremented every time all buffers for all streams are updated. This
38462306a36Sopenharmony_ciis useful for checking completion of all stream operations across the adapter
38562306a36Sopenharmony_ciwhen using grouped streams.
38662306a36Sopenharmony_ci*/
38762306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_BUFFER_UPDATE_COUNT = 266,
38862306a36Sopenharmony_ci
38962306a36Sopenharmony_ci/** Readonly mixer and stream intervals
39062306a36Sopenharmony_ci
39162306a36Sopenharmony_ciThese intervals are  measured in mixer frames.
39262306a36Sopenharmony_ciTo convert to time, divide  by the adapter samplerate.
39362306a36Sopenharmony_ci
39462306a36Sopenharmony_ciThe mixer interval is the number of frames processed in one mixer iteration.
39562306a36Sopenharmony_ciThe stream update interval is the interval at which streams check for and
39662306a36Sopenharmony_ciprocess data, and BBM host buffer counters are updated.
39762306a36Sopenharmony_ci
39862306a36Sopenharmony_ciProperty 1 is the mixer interval in mixer frames.
39962306a36Sopenharmony_ciProperty 2 is the stream update interval in mixer frames.
40062306a36Sopenharmony_ci*/
40162306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_INTERVAL = 267,
40262306a36Sopenharmony_ci/** Adapter capabilities 1
40362306a36Sopenharmony_ciProperty 1 - adapter can do multichannel (SSX1)
40462306a36Sopenharmony_ciProperty 2 - adapter can do stream grouping (supports SSX2)
40562306a36Sopenharmony_ci*/
40662306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_CAPS1 = 268,
40762306a36Sopenharmony_ci/** Adapter capabilities 2
40862306a36Sopenharmony_ciProperty 1 - adapter can do samplerate conversion (MRX)
40962306a36Sopenharmony_ciProperty 2 - adapter can do timestretch (TSX)
41062306a36Sopenharmony_ci*/
41162306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_CAPS2 = 269,
41262306a36Sopenharmony_ci
41362306a36Sopenharmony_ci/** Readonly adapter sync header connection count.
41462306a36Sopenharmony_ci*/
41562306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_SYNC_HEADER_CONNECTIONS = 270,
41662306a36Sopenharmony_ci/** Readonly supports SSX2 property.
41762306a36Sopenharmony_ciIndicates the adapter supports SSX2 in some mode setting. The
41862306a36Sopenharmony_cireturn value is true (1) or false (0). If the current adapter
41962306a36Sopenharmony_cimode is MONO SSX2 is disabled, even though this property will
42062306a36Sopenharmony_cireturn true.
42162306a36Sopenharmony_ci*/
42262306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_SUPPORTS_SSX2 = 271,
42362306a36Sopenharmony_ci/** Readonly supports PCI(e) IRQ.
42462306a36Sopenharmony_ciIndicates that the adapter in it's current mode supports interrupts
42562306a36Sopenharmony_ciacross the host bus. Note, this does not imply that interrupts are
42662306a36Sopenharmony_cienabled. Instead it indicates that they can be enabled.
42762306a36Sopenharmony_ci*/
42862306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_SUPPORTS_IRQ = 272,
42962306a36Sopenharmony_ci/** Readonly supports firmware updating.
43062306a36Sopenharmony_ciIndicates that the adapter implements an interface to update firmware
43162306a36Sopenharmony_cion the adapter.
43262306a36Sopenharmony_ci*/
43362306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_SUPPORTS_FW_UPDATE = 273,
43462306a36Sopenharmony_ci/** Readonly Firmware IDs
43562306a36Sopenharmony_ciIdentifiy firmware independent of individual adapter type.
43662306a36Sopenharmony_ciMay be used as a filter for firmware update images.
43762306a36Sopenharmony_ciProperty 1 = Bootloader ID
43862306a36Sopenharmony_ciProperty 2 = Main program ID
43962306a36Sopenharmony_ci*/
44062306a36Sopenharmony_ci	HPI_ADAPTER_PROPERTY_FIRMWARE_ID = 274
44162306a36Sopenharmony_ci};
44262306a36Sopenharmony_ci
44362306a36Sopenharmony_ci/** Adapter mode commands
44462306a36Sopenharmony_ci
44562306a36Sopenharmony_ciUsed in wQueryOrSet parameter of HPI_AdapterSetModeEx().
44662306a36Sopenharmony_ci\ingroup adapter
44762306a36Sopenharmony_ci*/
44862306a36Sopenharmony_cienum HPI_ADAPTER_MODE_CMDS {
44962306a36Sopenharmony_ci	/** Set the mode to the given parameter */
45062306a36Sopenharmony_ci	HPI_ADAPTER_MODE_SET = 0,
45162306a36Sopenharmony_ci	/** Return 0 or error depending whether mode is valid,
45262306a36Sopenharmony_ci	but don't set the mode */
45362306a36Sopenharmony_ci	HPI_ADAPTER_MODE_QUERY = 1
45462306a36Sopenharmony_ci};
45562306a36Sopenharmony_ci
45662306a36Sopenharmony_ci/** Adapter Modes
45762306a36Sopenharmony_ci These are used by HPI_AdapterSetModeEx()
45862306a36Sopenharmony_ci
45962306a36Sopenharmony_ci\warning - more than 16 possible modes breaks
46062306a36Sopenharmony_cia bitmask in the Windows WAVE DLL
46162306a36Sopenharmony_ci\ingroup adapter
46262306a36Sopenharmony_ci*/
46362306a36Sopenharmony_cienum HPI_ADAPTER_MODES {
46462306a36Sopenharmony_ci/** 4 outstream mode.
46562306a36Sopenharmony_ci- ASI6114: 1 instream
46662306a36Sopenharmony_ci- ASI6044: 4 instreams
46762306a36Sopenharmony_ci- ASI6012: 1 instream
46862306a36Sopenharmony_ci- ASI6102: no instreams
46962306a36Sopenharmony_ci- ASI6022, ASI6122: 2 instreams
47062306a36Sopenharmony_ci- ASI5111, ASI5101: 2 instreams
47162306a36Sopenharmony_ci- ASI652x, ASI662x: 2 instreams
47262306a36Sopenharmony_ci- ASI654x, ASI664x: 4 instreams
47362306a36Sopenharmony_ci*/
47462306a36Sopenharmony_ci	HPI_ADAPTER_MODE_4OSTREAM = 1,
47562306a36Sopenharmony_ci
47662306a36Sopenharmony_ci/** 6 outstream mode.
47762306a36Sopenharmony_ci- ASI6012: 1 instream,
47862306a36Sopenharmony_ci- ASI6022, ASI6122: 2 instreams
47962306a36Sopenharmony_ci- ASI652x, ASI662x: 4 instreams
48062306a36Sopenharmony_ci*/
48162306a36Sopenharmony_ci	HPI_ADAPTER_MODE_6OSTREAM = 2,
48262306a36Sopenharmony_ci
48362306a36Sopenharmony_ci/** 8 outstream mode.
48462306a36Sopenharmony_ci- ASI6114: 8 instreams
48562306a36Sopenharmony_ci- ASI6118: 8 instreams
48662306a36Sopenharmony_ci- ASI6585: 8 instreams
48762306a36Sopenharmony_ci*/
48862306a36Sopenharmony_ci	HPI_ADAPTER_MODE_8OSTREAM = 3,
48962306a36Sopenharmony_ci
49062306a36Sopenharmony_ci/** 16 outstream mode.
49162306a36Sopenharmony_ci- ASI6416 16 instreams
49262306a36Sopenharmony_ci- ASI6518, ASI6618 16 instreams
49362306a36Sopenharmony_ci- ASI6118 16 mono out and in streams
49462306a36Sopenharmony_ci*/
49562306a36Sopenharmony_ci	HPI_ADAPTER_MODE_16OSTREAM = 4,
49662306a36Sopenharmony_ci
49762306a36Sopenharmony_ci/** one outstream mode.
49862306a36Sopenharmony_ci- ASI5111 1 outstream, 1 instream
49962306a36Sopenharmony_ci*/
50062306a36Sopenharmony_ci	HPI_ADAPTER_MODE_1OSTREAM = 5,
50162306a36Sopenharmony_ci
50262306a36Sopenharmony_ci/** ASI504X mode 1. 12 outstream, 4 instream 0 to 48kHz sample rates
50362306a36Sopenharmony_ci	(see ASI504X datasheet for more info).
50462306a36Sopenharmony_ci*/
50562306a36Sopenharmony_ci	HPI_ADAPTER_MODE_1 = 6,
50662306a36Sopenharmony_ci
50762306a36Sopenharmony_ci/** ASI504X mode 2. 4 outstreams, 4 instreams at 0 to 192kHz sample rates
50862306a36Sopenharmony_ci	(see ASI504X datasheet for more info).
50962306a36Sopenharmony_ci*/
51062306a36Sopenharmony_ci	HPI_ADAPTER_MODE_2 = 7,
51162306a36Sopenharmony_ci
51262306a36Sopenharmony_ci/** ASI504X mode 3. 4 outstreams, 4 instreams at 0 to 192kHz sample rates
51362306a36Sopenharmony_ci	(see ASI504X datasheet for more info).
51462306a36Sopenharmony_ci*/
51562306a36Sopenharmony_ci	HPI_ADAPTER_MODE_3 = 8,
51662306a36Sopenharmony_ci
51762306a36Sopenharmony_ci/** ASI504X multichannel mode.
51862306a36Sopenharmony_ci	2 outstreams -> 4 line outs = 1 to 8 channel streams),
51962306a36Sopenharmony_ci	4 lineins -> 1 instream (1 to 8 channel streams) at 0-48kHz.
52062306a36Sopenharmony_ci	For more info see the SSX Specification.
52162306a36Sopenharmony_ci*/
52262306a36Sopenharmony_ci	HPI_ADAPTER_MODE_MULTICHANNEL = 9,
52362306a36Sopenharmony_ci
52462306a36Sopenharmony_ci/** 12 outstream mode.
52562306a36Sopenharmony_ci- ASI6514, ASI6614: 2 instreams
52662306a36Sopenharmony_ci- ASI6540,ASI6544: 8 instreams
52762306a36Sopenharmony_ci- ASI6640,ASI6644: 8 instreams
52862306a36Sopenharmony_ci*/
52962306a36Sopenharmony_ci	HPI_ADAPTER_MODE_12OSTREAM = 10,
53062306a36Sopenharmony_ci
53162306a36Sopenharmony_ci/** 9 outstream mode.
53262306a36Sopenharmony_ci- ASI6044: 8 instreams
53362306a36Sopenharmony_ci*/
53462306a36Sopenharmony_ci	HPI_ADAPTER_MODE_9OSTREAM = 11,
53562306a36Sopenharmony_ci
53662306a36Sopenharmony_ci/** mono mode.
53762306a36Sopenharmony_ci- ASI6416: 16 outstreams/instreams
53862306a36Sopenharmony_ci- ASI5402: 2 outstreams/instreams
53962306a36Sopenharmony_ci*/
54062306a36Sopenharmony_ci	HPI_ADAPTER_MODE_MONO = 12,
54162306a36Sopenharmony_ci
54262306a36Sopenharmony_ci/** Low latency mode.
54362306a36Sopenharmony_ci- ASI6416/ASI6316: 1 16 channel outstream and instream
54462306a36Sopenharmony_ci*/
54562306a36Sopenharmony_ci	HPI_ADAPTER_MODE_LOW_LATENCY = 13
54662306a36Sopenharmony_ci};
54762306a36Sopenharmony_ci
54862306a36Sopenharmony_ci/* Note, adapters can have more than one capability -
54962306a36Sopenharmony_ciencoding as bitfield is recommended. */
55062306a36Sopenharmony_ci#define HPI_CAPABILITY_NONE             (0)
55162306a36Sopenharmony_ci#define HPI_CAPABILITY_MPEG_LAYER3      (1)
55262306a36Sopenharmony_ci
55362306a36Sopenharmony_ci/* Set this equal to maximum capability index,
55462306a36Sopenharmony_ciMust not be greater than 32 - see axnvdef.h */
55562306a36Sopenharmony_ci#define HPI_CAPABILITY_MAX                      1
55662306a36Sopenharmony_ci/* #define HPI_CAPABILITY_AAC              2 */
55762306a36Sopenharmony_ci
55862306a36Sopenharmony_ci/******************************************* STREAM ATTRIBUTES ****/
55962306a36Sopenharmony_ci
56062306a36Sopenharmony_ci/** MPEG Ancillary Data modes
56162306a36Sopenharmony_ci
56262306a36Sopenharmony_ciThe mode for the ancillary data insertion or extraction to operate in.
56362306a36Sopenharmony_ci\ingroup stream
56462306a36Sopenharmony_ci*/
56562306a36Sopenharmony_cienum HPI_MPEG_ANC_MODES {
56662306a36Sopenharmony_ci	/** the MPEG frames have energy information stored in them (5 bytes per stereo frame, 3 per mono) */
56762306a36Sopenharmony_ci	HPI_MPEG_ANC_HASENERGY = 0,
56862306a36Sopenharmony_ci	/** the entire ancillary data field is taken up by data from the Anc data buffer
56962306a36Sopenharmony_ci	On encode, the encoder will insert the energy bytes before filling the remainder
57062306a36Sopenharmony_ci	of the ancillary data space with data from the ancillary data buffer.
57162306a36Sopenharmony_ci	*/
57262306a36Sopenharmony_ci	HPI_MPEG_ANC_RAW = 1
57362306a36Sopenharmony_ci};
57462306a36Sopenharmony_ci
57562306a36Sopenharmony_ci/** Ancillary Data Alignment
57662306a36Sopenharmony_ci\ingroup instream
57762306a36Sopenharmony_ci*/
57862306a36Sopenharmony_cienum HPI_ISTREAM_MPEG_ANC_ALIGNS {
57962306a36Sopenharmony_ci	/** data is packed against the end of data, then padded to the end of frame */
58062306a36Sopenharmony_ci	HPI_MPEG_ANC_ALIGN_LEFT = 0,
58162306a36Sopenharmony_ci	/** data is packed against the end of the frame */
58262306a36Sopenharmony_ci	HPI_MPEG_ANC_ALIGN_RIGHT = 1
58362306a36Sopenharmony_ci};
58462306a36Sopenharmony_ci
58562306a36Sopenharmony_ci/** MPEG modes
58662306a36Sopenharmony_ciMPEG modes - can be used optionally for HPI_FormatCreate()
58762306a36Sopenharmony_ciparameter dwAttributes.
58862306a36Sopenharmony_ci
58962306a36Sopenharmony_ciUsing any mode setting other than HPI_MPEG_MODE_DEFAULT
59062306a36Sopenharmony_ciwith single channel format will return an error.
59162306a36Sopenharmony_ci\ingroup stream
59262306a36Sopenharmony_ci*/
59362306a36Sopenharmony_cienum HPI_MPEG_MODES {
59462306a36Sopenharmony_ci/** Causes the MPEG-1 Layer II bitstream to be recorded
59562306a36Sopenharmony_ciin single_channel mode when the number of channels is 1 and in stereo when the
59662306a36Sopenharmony_cinumber of channels is 2. */
59762306a36Sopenharmony_ci	HPI_MPEG_MODE_DEFAULT = 0,
59862306a36Sopenharmony_ci	/** Standard stereo without joint-stereo compression */
59962306a36Sopenharmony_ci	HPI_MPEG_MODE_STEREO = 1,
60062306a36Sopenharmony_ci	/** Joint stereo  */
60162306a36Sopenharmony_ci	HPI_MPEG_MODE_JOINTSTEREO = 2,
60262306a36Sopenharmony_ci	/** Left and Right channels are completely independent */
60362306a36Sopenharmony_ci	HPI_MPEG_MODE_DUALCHANNEL = 3
60462306a36Sopenharmony_ci};
60562306a36Sopenharmony_ci/******************************************* MIXER ATTRIBUTES ****/
60662306a36Sopenharmony_ci
60762306a36Sopenharmony_ci/* \defgroup mixer_flags Mixer flags for HPI_MIXER_GET_CONTROL_MULTIPLE_VALUES
60862306a36Sopenharmony_ci{
60962306a36Sopenharmony_ci*/
61062306a36Sopenharmony_ci#define HPI_MIXER_GET_CONTROL_MULTIPLE_CHANGED  (0)
61162306a36Sopenharmony_ci#define HPI_MIXER_GET_CONTROL_MULTIPLE_RESET    (1)
61262306a36Sopenharmony_ci/*}*/
61362306a36Sopenharmony_ci
61462306a36Sopenharmony_ci/** Commands used by HPI_MixerStore()
61562306a36Sopenharmony_ci\ingroup mixer
61662306a36Sopenharmony_ci*/
61762306a36Sopenharmony_cienum HPI_MIXER_STORE_COMMAND {
61862306a36Sopenharmony_ci/** Save all mixer control settings. */
61962306a36Sopenharmony_ci	HPI_MIXER_STORE_SAVE = 1,
62062306a36Sopenharmony_ci/** Restore all controls from saved. */
62162306a36Sopenharmony_ci	HPI_MIXER_STORE_RESTORE = 2,
62262306a36Sopenharmony_ci/** Delete saved control settings. */
62362306a36Sopenharmony_ci	HPI_MIXER_STORE_DELETE = 3,
62462306a36Sopenharmony_ci/** Enable auto storage of some control settings. */
62562306a36Sopenharmony_ci	HPI_MIXER_STORE_ENABLE = 4,
62662306a36Sopenharmony_ci/** Disable auto storage of some control settings. */
62762306a36Sopenharmony_ci	HPI_MIXER_STORE_DISABLE = 5,
62862306a36Sopenharmony_ci/** Unimplemented - save the attributes of a single control. */
62962306a36Sopenharmony_ci	HPI_MIXER_STORE_SAVE_SINGLE = 6
63062306a36Sopenharmony_ci};
63162306a36Sopenharmony_ci
63262306a36Sopenharmony_ci/****************************/
63362306a36Sopenharmony_ci/* CONTROL ATTRIBUTE VALUES */
63462306a36Sopenharmony_ci/****************************/
63562306a36Sopenharmony_ci
63662306a36Sopenharmony_ci/** Used by mixer plugin enable functions
63762306a36Sopenharmony_ci
63862306a36Sopenharmony_ciE.g. HPI_ParametricEq_SetState()
63962306a36Sopenharmony_ci\ingroup mixer
64062306a36Sopenharmony_ci*/
64162306a36Sopenharmony_cienum HPI_SWITCH_STATES {
64262306a36Sopenharmony_ci	HPI_SWITCH_OFF = 0,	/**< turn the mixer plugin on. */
64362306a36Sopenharmony_ci	HPI_SWITCH_ON = 1	/**< turn the mixer plugin off. */
64462306a36Sopenharmony_ci};
64562306a36Sopenharmony_ci
64662306a36Sopenharmony_ci/* Volume control special gain values */
64762306a36Sopenharmony_ci
64862306a36Sopenharmony_ci/** volumes units are 100ths of a dB
64962306a36Sopenharmony_ci\ingroup volume
65062306a36Sopenharmony_ci*/
65162306a36Sopenharmony_ci#define HPI_UNITS_PER_dB                100
65262306a36Sopenharmony_ci/** turns volume control OFF or MUTE
65362306a36Sopenharmony_ci\ingroup volume
65462306a36Sopenharmony_ci*/
65562306a36Sopenharmony_ci#define HPI_GAIN_OFF                    (-100 * HPI_UNITS_PER_dB)
65662306a36Sopenharmony_ci
65762306a36Sopenharmony_ci/** channel mask specifying all channels
65862306a36Sopenharmony_ci\ingroup volume
65962306a36Sopenharmony_ci*/
66062306a36Sopenharmony_ci#define HPI_BITMASK_ALL_CHANNELS        (0xFFFFFFFF)
66162306a36Sopenharmony_ci
66262306a36Sopenharmony_ci/** value returned for no signal
66362306a36Sopenharmony_ci\ingroup meter
66462306a36Sopenharmony_ci*/
66562306a36Sopenharmony_ci#define HPI_METER_MINIMUM               (-150 * HPI_UNITS_PER_dB)
66662306a36Sopenharmony_ci
66762306a36Sopenharmony_ci/** autofade profiles
66862306a36Sopenharmony_ci\ingroup volume
66962306a36Sopenharmony_ci*/
67062306a36Sopenharmony_cienum HPI_VOLUME_AUTOFADES {
67162306a36Sopenharmony_ci/** log fade - dB attenuation changes linearly over time */
67262306a36Sopenharmony_ci	HPI_VOLUME_AUTOFADE_LOG = 2,
67362306a36Sopenharmony_ci/** linear fade - amplitude changes linearly */
67462306a36Sopenharmony_ci	HPI_VOLUME_AUTOFADE_LINEAR = 3
67562306a36Sopenharmony_ci};
67662306a36Sopenharmony_ci
67762306a36Sopenharmony_ci/** The physical encoding format of the AESEBU I/O.
67862306a36Sopenharmony_ci
67962306a36Sopenharmony_ciUsed in HPI_Aesebu_Transmitter_SetFormat(), HPI_Aesebu_Receiver_SetFormat()
68062306a36Sopenharmony_cialong with related Get and Query functions
68162306a36Sopenharmony_ci\ingroup aestx
68262306a36Sopenharmony_ci*/
68362306a36Sopenharmony_cienum HPI_AESEBU_FORMATS {
68462306a36Sopenharmony_ci/** AES/EBU physical format - AES/EBU balanced "professional"  */
68562306a36Sopenharmony_ci	HPI_AESEBU_FORMAT_AESEBU = 1,
68662306a36Sopenharmony_ci/** AES/EBU physical format - S/PDIF unbalanced "consumer"      */
68762306a36Sopenharmony_ci	HPI_AESEBU_FORMAT_SPDIF = 2
68862306a36Sopenharmony_ci};
68962306a36Sopenharmony_ci
69062306a36Sopenharmony_ci/** AES/EBU error status bits
69162306a36Sopenharmony_ci
69262306a36Sopenharmony_ciReturned by HPI_Aesebu_Receiver_GetErrorStatus()
69362306a36Sopenharmony_ci\ingroup aesrx
69462306a36Sopenharmony_ci*/
69562306a36Sopenharmony_cienum HPI_AESEBU_ERRORS {
69662306a36Sopenharmony_ci/**  bit0: 1 when PLL is not locked */
69762306a36Sopenharmony_ci	HPI_AESEBU_ERROR_NOT_LOCKED = 0x01,
69862306a36Sopenharmony_ci/**  bit1: 1 when signal quality is poor */
69962306a36Sopenharmony_ci	HPI_AESEBU_ERROR_POOR_QUALITY = 0x02,
70062306a36Sopenharmony_ci/** bit2: 1 when there is a parity error */
70162306a36Sopenharmony_ci	HPI_AESEBU_ERROR_PARITY_ERROR = 0x04,
70262306a36Sopenharmony_ci/**  bit3: 1 when there is a bi-phase coding violation */
70362306a36Sopenharmony_ci	HPI_AESEBU_ERROR_BIPHASE_VIOLATION = 0x08,
70462306a36Sopenharmony_ci/**  bit4: 1 when the validity bit is high */
70562306a36Sopenharmony_ci	HPI_AESEBU_ERROR_VALIDITY = 0x10,
70662306a36Sopenharmony_ci/**  bit5: 1 when the CRC error bit is high */
70762306a36Sopenharmony_ci	HPI_AESEBU_ERROR_CRC = 0x20
70862306a36Sopenharmony_ci};
70962306a36Sopenharmony_ci
71062306a36Sopenharmony_ci/** \addtogroup pad
71162306a36Sopenharmony_ci\{
71262306a36Sopenharmony_ci*/
71362306a36Sopenharmony_ci/** The text string containing the station/channel combination. */
71462306a36Sopenharmony_ci#define HPI_PAD_CHANNEL_NAME_LEN        16
71562306a36Sopenharmony_ci/** The text string containing the artist. */
71662306a36Sopenharmony_ci#define HPI_PAD_ARTIST_LEN              64
71762306a36Sopenharmony_ci/** The text string containing the title. */
71862306a36Sopenharmony_ci#define HPI_PAD_TITLE_LEN               64
71962306a36Sopenharmony_ci/** The text string containing the comment. */
72062306a36Sopenharmony_ci#define HPI_PAD_COMMENT_LEN             256
72162306a36Sopenharmony_ci/** The PTY when the tuner has not received any PTY. */
72262306a36Sopenharmony_ci#define HPI_PAD_PROGRAM_TYPE_INVALID    0xffff
72362306a36Sopenharmony_ci/** \} */
72462306a36Sopenharmony_ci
72562306a36Sopenharmony_ci/** Data types for PTY string translation.
72662306a36Sopenharmony_ci\ingroup rds
72762306a36Sopenharmony_ci*/
72862306a36Sopenharmony_cienum eHPI_RDS_type {
72962306a36Sopenharmony_ci	HPI_RDS_DATATYPE_RDS = 0,	/**< RDS bitstream.*/
73062306a36Sopenharmony_ci	HPI_RDS_DATATYPE_RBDS = 1	/**< RBDS bitstream.*/
73162306a36Sopenharmony_ci};
73262306a36Sopenharmony_ci
73362306a36Sopenharmony_ci/** Tuner bands
73462306a36Sopenharmony_ci
73562306a36Sopenharmony_ciUsed for HPI_Tuner_SetBand(),HPI_Tuner_GetBand()
73662306a36Sopenharmony_ci\ingroup tuner
73762306a36Sopenharmony_ci*/
73862306a36Sopenharmony_cienum HPI_TUNER_BAND {
73962306a36Sopenharmony_ci	HPI_TUNER_BAND_AM = 1,	 /**< AM band */
74062306a36Sopenharmony_ci	HPI_TUNER_BAND_FM = 2,	 /**< FM band (mono) */
74162306a36Sopenharmony_ci	HPI_TUNER_BAND_TV_NTSC_M = 3,	 /**< NTSC-M TV band*/
74262306a36Sopenharmony_ci	HPI_TUNER_BAND_TV = 3,	/* use TV_NTSC_M */
74362306a36Sopenharmony_ci	HPI_TUNER_BAND_FM_STEREO = 4,	 /**< FM band (stereo) */
74462306a36Sopenharmony_ci	HPI_TUNER_BAND_AUX = 5,	 /**< auxiliary input */
74562306a36Sopenharmony_ci	HPI_TUNER_BAND_TV_PAL_BG = 6,	 /**< PAL-B/G TV band*/
74662306a36Sopenharmony_ci	HPI_TUNER_BAND_TV_PAL_I = 7,	 /**< PAL-I TV band*/
74762306a36Sopenharmony_ci	HPI_TUNER_BAND_TV_PAL_DK = 8,	 /**< PAL-D/K TV band*/
74862306a36Sopenharmony_ci	HPI_TUNER_BAND_TV_SECAM_L = 9,	 /**< SECAM-L TV band*/
74962306a36Sopenharmony_ci	HPI_TUNER_BAND_DAB = 10,
75062306a36Sopenharmony_ci	HPI_TUNER_BAND_LAST = 10 /**< the index of the last tuner band. */
75162306a36Sopenharmony_ci};
75262306a36Sopenharmony_ci
75362306a36Sopenharmony_ci/** Tuner mode attributes
75462306a36Sopenharmony_ci
75562306a36Sopenharmony_ciUsed by HPI_Tuner_SetMode(), HPI_Tuner_GetMode()
75662306a36Sopenharmony_ci\ingroup tuner
75762306a36Sopenharmony_ci
75862306a36Sopenharmony_ci*/
75962306a36Sopenharmony_cienum HPI_TUNER_MODES {
76062306a36Sopenharmony_ci	HPI_TUNER_MODE_RSS = 1,	/**< control  RSS */
76162306a36Sopenharmony_ci	HPI_TUNER_MODE_RDS = 2	/**< control  RBDS/RDS */
76262306a36Sopenharmony_ci};
76362306a36Sopenharmony_ci
76462306a36Sopenharmony_ci/** Tuner mode attribute values
76562306a36Sopenharmony_ci
76662306a36Sopenharmony_ciUsed by HPI_Tuner_SetMode(), HPI_Tuner_GetMode()
76762306a36Sopenharmony_ci\ingroup tuner
76862306a36Sopenharmony_ci*/
76962306a36Sopenharmony_cienum HPI_TUNER_MODE_VALUES {
77062306a36Sopenharmony_ci/* RSS attribute values */
77162306a36Sopenharmony_ci	HPI_TUNER_MODE_RSS_DISABLE = 0,	/**< RSS disable */
77262306a36Sopenharmony_ci	HPI_TUNER_MODE_RSS_ENABLE = 1,	/**< RSS enable */
77362306a36Sopenharmony_ci
77462306a36Sopenharmony_ci/* RDS mode attributes */
77562306a36Sopenharmony_ci	HPI_TUNER_MODE_RDS_DISABLE = 0,	/**< RDS - disabled */
77662306a36Sopenharmony_ci	HPI_TUNER_MODE_RDS_RDS = 1,  /**< RDS - RDS mode */
77762306a36Sopenharmony_ci	HPI_TUNER_MODE_RDS_RBDS = 2 /**<  RDS - RBDS mode */
77862306a36Sopenharmony_ci};
77962306a36Sopenharmony_ci
78062306a36Sopenharmony_ci/** Tuner Status Bits
78162306a36Sopenharmony_ci
78262306a36Sopenharmony_ciThese bitfield values are returned by a call to HPI_Tuner_GetStatus().
78362306a36Sopenharmony_ciMultiple fields are returned from a single call.
78462306a36Sopenharmony_ci\ingroup tuner
78562306a36Sopenharmony_ci*/
78662306a36Sopenharmony_cienum HPI_TUNER_STATUS_BITS {
78762306a36Sopenharmony_ci	HPI_TUNER_VIDEO_COLOR_PRESENT = 0x0001,	/**< video color is present. */
78862306a36Sopenharmony_ci	HPI_TUNER_VIDEO_IS_60HZ = 0x0020, /**< 60 hz video detected. */
78962306a36Sopenharmony_ci	HPI_TUNER_VIDEO_HORZ_SYNC_MISSING = 0x0040, /**< video HSYNC is missing. */
79062306a36Sopenharmony_ci	HPI_TUNER_VIDEO_STATUS_VALID = 0x0100, /**< video status is valid. */
79162306a36Sopenharmony_ci	HPI_TUNER_DIGITAL = 0x0200, /**< tuner reports digital programming. */
79262306a36Sopenharmony_ci	HPI_TUNER_MULTIPROGRAM = 0x0400, /**< tuner reports multiple programs. */
79362306a36Sopenharmony_ci	HPI_TUNER_PLL_LOCKED = 0x1000, /**< the tuner's PLL is locked. */
79462306a36Sopenharmony_ci	HPI_TUNER_FM_STEREO = 0x2000 /**< tuner reports back FM stereo. */
79562306a36Sopenharmony_ci};
79662306a36Sopenharmony_ci
79762306a36Sopenharmony_ci/** Channel Modes
79862306a36Sopenharmony_ciUsed for HPI_ChannelModeSet/Get()
79962306a36Sopenharmony_ci\ingroup channelmode
80062306a36Sopenharmony_ci*/
80162306a36Sopenharmony_cienum HPI_CHANNEL_MODES {
80262306a36Sopenharmony_ci/** Left channel out = left channel in, Right channel out = right channel in. */
80362306a36Sopenharmony_ci	HPI_CHANNEL_MODE_NORMAL = 1,
80462306a36Sopenharmony_ci/** Left channel out = right channel in, Right channel out = left channel in. */
80562306a36Sopenharmony_ci	HPI_CHANNEL_MODE_SWAP = 2,
80662306a36Sopenharmony_ci/** Left channel out = left channel in, Right channel out = left channel in. */
80762306a36Sopenharmony_ci	HPI_CHANNEL_MODE_LEFT_TO_STEREO = 3,
80862306a36Sopenharmony_ci/** Left channel out = right channel in, Right channel out = right channel in.*/
80962306a36Sopenharmony_ci	HPI_CHANNEL_MODE_RIGHT_TO_STEREO = 4,
81062306a36Sopenharmony_ci/** Left channel out = (left channel in + right channel in)/2,
81162306a36Sopenharmony_ci    Right channel out = mute. */
81262306a36Sopenharmony_ci	HPI_CHANNEL_MODE_STEREO_TO_LEFT = 5,
81362306a36Sopenharmony_ci/** Left channel out = mute,
81462306a36Sopenharmony_ci    Right channel out = (right channel in + left channel in)/2. */
81562306a36Sopenharmony_ci	HPI_CHANNEL_MODE_STEREO_TO_RIGHT = 6,
81662306a36Sopenharmony_ci	HPI_CHANNEL_MODE_LAST = 6
81762306a36Sopenharmony_ci};
81862306a36Sopenharmony_ci
81962306a36Sopenharmony_ci/** SampleClock source values
82062306a36Sopenharmony_ci\ingroup sampleclock
82162306a36Sopenharmony_ci*/
82262306a36Sopenharmony_cienum HPI_SAMPLECLOCK_SOURCES {
82362306a36Sopenharmony_ci/** The sampleclock output is derived from its local samplerate generator.
82462306a36Sopenharmony_ci    The local samplerate may be set using HPI_SampleClock_SetLocalRate(). */
82562306a36Sopenharmony_ci	HPI_SAMPLECLOCK_SOURCE_LOCAL = 1,
82662306a36Sopenharmony_ci/** The adapter is clocked from a dedicated AES/EBU SampleClock input.*/
82762306a36Sopenharmony_ci	HPI_SAMPLECLOCK_SOURCE_AESEBU_SYNC = 2,
82862306a36Sopenharmony_ci/** From external wordclock connector */
82962306a36Sopenharmony_ci	HPI_SAMPLECLOCK_SOURCE_WORD = 3,
83062306a36Sopenharmony_ci/** Board-to-board header */
83162306a36Sopenharmony_ci	HPI_SAMPLECLOCK_SOURCE_WORD_HEADER = 4,
83262306a36Sopenharmony_ci/** FUTURE - SMPTE clock. */
83362306a36Sopenharmony_ci	HPI_SAMPLECLOCK_SOURCE_SMPTE = 5,
83462306a36Sopenharmony_ci/** One of the aesebu inputs */
83562306a36Sopenharmony_ci	HPI_SAMPLECLOCK_SOURCE_AESEBU_INPUT = 6,
83662306a36Sopenharmony_ci/** From a network interface e.g. Cobranet or Livewire at either 48 or 96kHz */
83762306a36Sopenharmony_ci	HPI_SAMPLECLOCK_SOURCE_NETWORK = 8,
83862306a36Sopenharmony_ci/** From previous adjacent module (ASI2416 only)*/
83962306a36Sopenharmony_ci	HPI_SAMPLECLOCK_SOURCE_PREV_MODULE = 10,
84062306a36Sopenharmony_ci/** Blu link sample clock*/
84162306a36Sopenharmony_ci	HPI_SAMPLECLOCK_SOURCE_BLULINK = 11,
84262306a36Sopenharmony_ci/*! Update this if you add a new clock source.*/
84362306a36Sopenharmony_ci	HPI_SAMPLECLOCK_SOURCE_LAST = 11
84462306a36Sopenharmony_ci};
84562306a36Sopenharmony_ci
84662306a36Sopenharmony_ci/** Equalizer filter types. Used by HPI_ParametricEq_SetBand()
84762306a36Sopenharmony_ci\ingroup parmeq
84862306a36Sopenharmony_ci*/
84962306a36Sopenharmony_cienum HPI_FILTER_TYPE {
85062306a36Sopenharmony_ci	HPI_FILTER_TYPE_BYPASS = 0,	/**< filter is turned off */
85162306a36Sopenharmony_ci
85262306a36Sopenharmony_ci	HPI_FILTER_TYPE_LOWSHELF = 1,	/**< EQ low shelf */
85362306a36Sopenharmony_ci	HPI_FILTER_TYPE_HIGHSHELF = 2,	/**< EQ high shelf */
85462306a36Sopenharmony_ci	HPI_FILTER_TYPE_EQ_BAND = 3,	/**< EQ gain */
85562306a36Sopenharmony_ci
85662306a36Sopenharmony_ci	HPI_FILTER_TYPE_LOWPASS = 4,	/**< standard low pass */
85762306a36Sopenharmony_ci	HPI_FILTER_TYPE_HIGHPASS = 5,	/**< standard high pass */
85862306a36Sopenharmony_ci	HPI_FILTER_TYPE_BANDPASS = 6,	/**< standard band pass */
85962306a36Sopenharmony_ci	HPI_FILTER_TYPE_BANDSTOP = 7	/**< standard band stop/notch */
86062306a36Sopenharmony_ci};
86162306a36Sopenharmony_ci
86262306a36Sopenharmony_ci/** Async Event sources
86362306a36Sopenharmony_ci\ingroup async
86462306a36Sopenharmony_ci*/
86562306a36Sopenharmony_cienum ASYNC_EVENT_SOURCES {
86662306a36Sopenharmony_ci	HPI_ASYNC_EVENT_GPIO = 1,	/**< GPIO event. */
86762306a36Sopenharmony_ci	HPI_ASYNC_EVENT_SILENCE = 2,	/**< silence event detected. */
86862306a36Sopenharmony_ci	HPI_ASYNC_EVENT_TONE = 3	/**< tone event detected. */
86962306a36Sopenharmony_ci};
87062306a36Sopenharmony_ci/*******************************************/
87162306a36Sopenharmony_ci/** HPI Error codes
87262306a36Sopenharmony_ci
87362306a36Sopenharmony_ciAlmost all HPI functions return an error code
87462306a36Sopenharmony_ciA return value of zero means there was no error.
87562306a36Sopenharmony_ciOtherwise one of these error codes is returned.
87662306a36Sopenharmony_ciError codes can be converted to a descriptive string using HPI_GetErrorText()
87762306a36Sopenharmony_ci
87862306a36Sopenharmony_ci\note When a new error code is added HPI_GetErrorText() MUST be updated.
87962306a36Sopenharmony_ci\note Codes 1-100 are reserved for driver use
88062306a36Sopenharmony_ci\ingroup utility
88162306a36Sopenharmony_ci*/
88262306a36Sopenharmony_cienum HPI_ERROR_CODES {
88362306a36Sopenharmony_ci	/** Message type does not exist. */
88462306a36Sopenharmony_ci	HPI_ERROR_INVALID_TYPE = 100,
88562306a36Sopenharmony_ci	/** Object type does not exist. */
88662306a36Sopenharmony_ci	HPI_ERROR_INVALID_OBJ = 101,
88762306a36Sopenharmony_ci	/** Function does not exist. */
88862306a36Sopenharmony_ci	HPI_ERROR_INVALID_FUNC = 102,
88962306a36Sopenharmony_ci	/** The specified object does not exist. */
89062306a36Sopenharmony_ci	HPI_ERROR_INVALID_OBJ_INDEX = 103,
89162306a36Sopenharmony_ci	/** Trying to access an object that has not been opened yet. */
89262306a36Sopenharmony_ci	HPI_ERROR_OBJ_NOT_OPEN = 104,
89362306a36Sopenharmony_ci	/** Trying to open an already open object. */
89462306a36Sopenharmony_ci	HPI_ERROR_OBJ_ALREADY_OPEN = 105,
89562306a36Sopenharmony_ci	/** PCI, ISA resource not valid. */
89662306a36Sopenharmony_ci	HPI_ERROR_INVALID_RESOURCE = 106,
89762306a36Sopenharmony_ci	/* HPI_ERROR_SUBSYSFINDADAPTERS_GETINFO= 107 */
89862306a36Sopenharmony_ci	/** Default response was never updated with actual error code. */
89962306a36Sopenharmony_ci	HPI_ERROR_INVALID_RESPONSE = 108,
90062306a36Sopenharmony_ci	/** wSize field of response was not updated,
90162306a36Sopenharmony_ci	indicating that the message was not processed. */
90262306a36Sopenharmony_ci	HPI_ERROR_PROCESSING_MESSAGE = 109,
90362306a36Sopenharmony_ci	/** The network did not respond in a timely manner. */
90462306a36Sopenharmony_ci	HPI_ERROR_NETWORK_TIMEOUT = 110,
90562306a36Sopenharmony_ci	/* An HPI handle is invalid (uninitialised?). */
90662306a36Sopenharmony_ci	HPI_ERROR_INVALID_HANDLE = 111,
90762306a36Sopenharmony_ci	/** A function or attribute has not been implemented yet. */
90862306a36Sopenharmony_ci	HPI_ERROR_UNIMPLEMENTED = 112,
90962306a36Sopenharmony_ci	/** There are too many clients attempting
91062306a36Sopenharmony_ci	    to access a network resource. */
91162306a36Sopenharmony_ci	HPI_ERROR_NETWORK_TOO_MANY_CLIENTS = 113,
91262306a36Sopenharmony_ci	/** Response buffer passed to HPI_Message
91362306a36Sopenharmony_ci	    was smaller than returned response.
91462306a36Sopenharmony_ci	    wSpecificError field of hpi response contains the required size.
91562306a36Sopenharmony_ci	*/
91662306a36Sopenharmony_ci	HPI_ERROR_RESPONSE_BUFFER_TOO_SMALL = 114,
91762306a36Sopenharmony_ci	/** The returned response did not match the sent message */
91862306a36Sopenharmony_ci	HPI_ERROR_RESPONSE_MISMATCH = 115,
91962306a36Sopenharmony_ci	/** A control setting that should have been cached was not. */
92062306a36Sopenharmony_ci	HPI_ERROR_CONTROL_CACHING = 116,
92162306a36Sopenharmony_ci	/** A message buffer in the path to the adapter was smaller
92262306a36Sopenharmony_ci	    than the message size.
92362306a36Sopenharmony_ci	    wSpecificError field of hpi response contains the actual size.
92462306a36Sopenharmony_ci	*/
92562306a36Sopenharmony_ci	HPI_ERROR_MESSAGE_BUFFER_TOO_SMALL = 117,
92662306a36Sopenharmony_ci
92762306a36Sopenharmony_ci	/* HPI_ERROR_TOO_MANY_ADAPTERS= 200 */
92862306a36Sopenharmony_ci	/** Bad adpater. */
92962306a36Sopenharmony_ci	HPI_ERROR_BAD_ADAPTER = 201,
93062306a36Sopenharmony_ci	/** Adapter number out of range or not set properly. */
93162306a36Sopenharmony_ci	HPI_ERROR_BAD_ADAPTER_NUMBER = 202,
93262306a36Sopenharmony_ci	/** 2 adapters with the same adapter number. */
93362306a36Sopenharmony_ci	HPI_ERROR_DUPLICATE_ADAPTER_NUMBER = 203,
93462306a36Sopenharmony_ci	/** DSP code failed to bootload. Usually a DSP memory test failure. */
93562306a36Sopenharmony_ci	HPI_ERROR_DSP_BOOTLOAD = 204,
93662306a36Sopenharmony_ci	/** Couldn't find or open the DSP code file. */
93762306a36Sopenharmony_ci	HPI_ERROR_DSP_FILE_NOT_FOUND = 206,
93862306a36Sopenharmony_ci	/** Internal DSP hardware error. */
93962306a36Sopenharmony_ci	HPI_ERROR_DSP_HARDWARE = 207,
94062306a36Sopenharmony_ci	/** Could not allocate memory */
94162306a36Sopenharmony_ci	HPI_ERROR_MEMORY_ALLOC = 208,
94262306a36Sopenharmony_ci	/** Failed to correctly load/config PLD. (unused) */
94362306a36Sopenharmony_ci	HPI_ERROR_PLD_LOAD = 209,
94462306a36Sopenharmony_ci	/** Unexpected end of file, block length too big etc. */
94562306a36Sopenharmony_ci	HPI_ERROR_DSP_FILE_FORMAT = 210,
94662306a36Sopenharmony_ci
94762306a36Sopenharmony_ci	/** Found but could not open DSP code file. */
94862306a36Sopenharmony_ci	HPI_ERROR_DSP_FILE_ACCESS_DENIED = 211,
94962306a36Sopenharmony_ci	/** First DSP code section header not found in DSP file. */
95062306a36Sopenharmony_ci	HPI_ERROR_DSP_FILE_NO_HEADER = 212,
95162306a36Sopenharmony_ci	/* HPI_ERROR_DSP_FILE_READ_ERROR= 213, */
95262306a36Sopenharmony_ci	/** DSP code for adapter family not found. */
95362306a36Sopenharmony_ci	HPI_ERROR_DSP_SECTION_NOT_FOUND = 214,
95462306a36Sopenharmony_ci	/** Other OS specific error opening DSP file. */
95562306a36Sopenharmony_ci	HPI_ERROR_DSP_FILE_OTHER_ERROR = 215,
95662306a36Sopenharmony_ci	/** Sharing violation opening DSP code file. */
95762306a36Sopenharmony_ci	HPI_ERROR_DSP_FILE_SHARING_VIOLATION = 216,
95862306a36Sopenharmony_ci	/** DSP code section header had size == 0. */
95962306a36Sopenharmony_ci	HPI_ERROR_DSP_FILE_NULL_HEADER = 217,
96062306a36Sopenharmony_ci
96162306a36Sopenharmony_ci	/* HPI_ERROR_FLASH = 220, */
96262306a36Sopenharmony_ci
96362306a36Sopenharmony_ci	/** Flash has bad checksum */
96462306a36Sopenharmony_ci	HPI_ERROR_BAD_CHECKSUM = 221,
96562306a36Sopenharmony_ci	HPI_ERROR_BAD_SEQUENCE = 222,
96662306a36Sopenharmony_ci	HPI_ERROR_FLASH_ERASE = 223,
96762306a36Sopenharmony_ci	HPI_ERROR_FLASH_PROGRAM = 224,
96862306a36Sopenharmony_ci	HPI_ERROR_FLASH_VERIFY = 225,
96962306a36Sopenharmony_ci	HPI_ERROR_FLASH_TYPE = 226,
97062306a36Sopenharmony_ci	HPI_ERROR_FLASH_START = 227,
97162306a36Sopenharmony_ci	HPI_ERROR_FLASH_READ = 228,
97262306a36Sopenharmony_ci	HPI_ERROR_FLASH_READ_NO_FILE = 229,
97362306a36Sopenharmony_ci	HPI_ERROR_FLASH_SIZE = 230,
97462306a36Sopenharmony_ci
97562306a36Sopenharmony_ci	/** Reserved for OEMs. */
97662306a36Sopenharmony_ci	HPI_ERROR_RESERVED_1 = 290,
97762306a36Sopenharmony_ci
97862306a36Sopenharmony_ci	/* HPI_ERROR_INVALID_STREAM = 300 use HPI_ERROR_INVALID_OBJ_INDEX */
97962306a36Sopenharmony_ci	/** Invalid compression format. */
98062306a36Sopenharmony_ci	HPI_ERROR_INVALID_FORMAT = 301,
98162306a36Sopenharmony_ci	/** Invalid format samplerate */
98262306a36Sopenharmony_ci	HPI_ERROR_INVALID_SAMPLERATE = 302,
98362306a36Sopenharmony_ci	/** Invalid format number of channels. */
98462306a36Sopenharmony_ci	HPI_ERROR_INVALID_CHANNELS = 303,
98562306a36Sopenharmony_ci	/** Invalid format bitrate. */
98662306a36Sopenharmony_ci	HPI_ERROR_INVALID_BITRATE = 304,
98762306a36Sopenharmony_ci	/** Invalid datasize used for stream read/write. */
98862306a36Sopenharmony_ci	HPI_ERROR_INVALID_DATASIZE = 305,
98962306a36Sopenharmony_ci	/* HPI_ERROR_BUFFER_FULL = 306 use HPI_ERROR_INVALID_DATASIZE */
99062306a36Sopenharmony_ci	/* HPI_ERROR_BUFFER_EMPTY = 307 use HPI_ERROR_INVALID_DATASIZE */
99162306a36Sopenharmony_ci	/** Null data pointer used for stream read/write. */
99262306a36Sopenharmony_ci	HPI_ERROR_INVALID_DATA_POINTER = 308,
99362306a36Sopenharmony_ci	/** Packet ordering error for stream read/write. */
99462306a36Sopenharmony_ci	HPI_ERROR_INVALID_PACKET_ORDER = 309,
99562306a36Sopenharmony_ci
99662306a36Sopenharmony_ci	/** Object can't do requested operation in its current
99762306a36Sopenharmony_ci	    state, eg set format, change rec mux state while recording.*/
99862306a36Sopenharmony_ci	HPI_ERROR_INVALID_OPERATION = 310,
99962306a36Sopenharmony_ci
100062306a36Sopenharmony_ci	/** Where a SRG is shared amongst streams, an incompatible samplerate
100162306a36Sopenharmony_ci	    is one that is different to any currently active stream. */
100262306a36Sopenharmony_ci	HPI_ERROR_INCOMPATIBLE_SAMPLERATE = 311,
100362306a36Sopenharmony_ci	/** Adapter mode is illegal.*/
100462306a36Sopenharmony_ci	HPI_ERROR_BAD_ADAPTER_MODE = 312,
100562306a36Sopenharmony_ci
100662306a36Sopenharmony_ci	/** There have been too many attempts to set the adapter's
100762306a36Sopenharmony_ci	capabilities (using bad keys), the card should be returned
100862306a36Sopenharmony_ci	to ASI if further capabilities updates are required */
100962306a36Sopenharmony_ci	HPI_ERROR_TOO_MANY_CAPABILITY_CHANGE_ATTEMPTS = 313,
101062306a36Sopenharmony_ci	/** Streams on different adapters cannot be grouped. */
101162306a36Sopenharmony_ci	HPI_ERROR_NO_INTERADAPTER_GROUPS = 314,
101262306a36Sopenharmony_ci	/** Streams on different DSPs cannot be grouped. */
101362306a36Sopenharmony_ci	HPI_ERROR_NO_INTERDSP_GROUPS = 315,
101462306a36Sopenharmony_ci	/** Stream wait cancelled before threshold reached. */
101562306a36Sopenharmony_ci	HPI_ERROR_WAIT_CANCELLED = 316,
101662306a36Sopenharmony_ci	/** A character string is invalid. */
101762306a36Sopenharmony_ci	HPI_ERROR_INVALID_STRING = 317,
101862306a36Sopenharmony_ci
101962306a36Sopenharmony_ci	/** Invalid mixer node for this adapter. */
102062306a36Sopenharmony_ci	HPI_ERROR_INVALID_NODE = 400,
102162306a36Sopenharmony_ci	/** Invalid control. */
102262306a36Sopenharmony_ci	HPI_ERROR_INVALID_CONTROL = 401,
102362306a36Sopenharmony_ci	/** Invalid control value was passed. */
102462306a36Sopenharmony_ci	HPI_ERROR_INVALID_CONTROL_VALUE = 402,
102562306a36Sopenharmony_ci	/** Control attribute not supported by this control. */
102662306a36Sopenharmony_ci	HPI_ERROR_INVALID_CONTROL_ATTRIBUTE = 403,
102762306a36Sopenharmony_ci	/** Control is disabled. */
102862306a36Sopenharmony_ci	HPI_ERROR_CONTROL_DISABLED = 404,
102962306a36Sopenharmony_ci	/** I2C transaction failed due to a missing ACK. */
103062306a36Sopenharmony_ci	HPI_ERROR_CONTROL_I2C_MISSING_ACK = 405,
103162306a36Sopenharmony_ci	HPI_ERROR_I2C_MISSING_ACK = 405,
103262306a36Sopenharmony_ci	/** Control is busy, or coming out of
103362306a36Sopenharmony_ci	reset and cannot be accessed at this time. */
103462306a36Sopenharmony_ci	HPI_ERROR_CONTROL_NOT_READY = 407,
103562306a36Sopenharmony_ci
103662306a36Sopenharmony_ci	/** Non volatile memory */
103762306a36Sopenharmony_ci	HPI_ERROR_NVMEM_BUSY = 450,
103862306a36Sopenharmony_ci	HPI_ERROR_NVMEM_FULL = 451,
103962306a36Sopenharmony_ci	HPI_ERROR_NVMEM_FAIL = 452,
104062306a36Sopenharmony_ci
104162306a36Sopenharmony_ci	/** I2C */
104262306a36Sopenharmony_ci	HPI_ERROR_I2C_BAD_ADR = 460,
104362306a36Sopenharmony_ci
104462306a36Sopenharmony_ci	/** Entity type did not match requested type */
104562306a36Sopenharmony_ci	HPI_ERROR_ENTITY_TYPE_MISMATCH = 470,
104662306a36Sopenharmony_ci	/** Entity item count did not match requested count */
104762306a36Sopenharmony_ci	HPI_ERROR_ENTITY_ITEM_COUNT = 471,
104862306a36Sopenharmony_ci	/** Entity type is not one of the valid types */
104962306a36Sopenharmony_ci	HPI_ERROR_ENTITY_TYPE_INVALID = 472,
105062306a36Sopenharmony_ci	/** Entity role is not one of the valid roles */
105162306a36Sopenharmony_ci	HPI_ERROR_ENTITY_ROLE_INVALID = 473,
105262306a36Sopenharmony_ci	/** Entity size doesn't match target size */
105362306a36Sopenharmony_ci	HPI_ERROR_ENTITY_SIZE_MISMATCH = 474,
105462306a36Sopenharmony_ci
105562306a36Sopenharmony_ci	/* AES18 specific errors were 500..507 */
105662306a36Sopenharmony_ci
105762306a36Sopenharmony_ci	/** custom error to use for debugging */
105862306a36Sopenharmony_ci	HPI_ERROR_CUSTOM = 600,
105962306a36Sopenharmony_ci
106062306a36Sopenharmony_ci	/** hpioct32.c can't obtain mutex */
106162306a36Sopenharmony_ci	HPI_ERROR_MUTEX_TIMEOUT = 700,
106262306a36Sopenharmony_ci
106362306a36Sopenharmony_ci	/** Backend errors used to be greater than this.
106462306a36Sopenharmony_ci	    \deprecated Now, all backends return only errors defined here in hpi.h
106562306a36Sopenharmony_ci	*/
106662306a36Sopenharmony_ci	HPI_ERROR_BACKEND_BASE = 900,
106762306a36Sopenharmony_ci
106862306a36Sopenharmony_ci	/** Communication with DSP failed */
106962306a36Sopenharmony_ci	HPI_ERROR_DSP_COMMUNICATION = 900
107062306a36Sopenharmony_ci		/* Note that the dsp communication error is set to this value so that
107162306a36Sopenharmony_ci		   it remains compatible with any software that expects such errors
107262306a36Sopenharmony_ci		   to be backend errors i.e. >= 900.
107362306a36Sopenharmony_ci		   Do not define any new error codes with values > 900.
107462306a36Sopenharmony_ci		 */
107562306a36Sopenharmony_ci};
107662306a36Sopenharmony_ci
107762306a36Sopenharmony_ci/** \defgroup maximums HPI maximum values
107862306a36Sopenharmony_ci\{
107962306a36Sopenharmony_ci*/
108062306a36Sopenharmony_ci/** Maximum number of PCI HPI adapters */
108162306a36Sopenharmony_ci#define HPI_MAX_ADAPTERS                20
108262306a36Sopenharmony_ci/** Maximum number of in or out streams per adapter */
108362306a36Sopenharmony_ci#define HPI_MAX_STREAMS                 16
108462306a36Sopenharmony_ci#define HPI_MAX_CHANNELS                2	/* per stream */
108562306a36Sopenharmony_ci#define HPI_MAX_NODES                   8	/* per mixer ? */
108662306a36Sopenharmony_ci#define HPI_MAX_CONTROLS                4	/* per node ? */
108762306a36Sopenharmony_ci/** maximum number of ancillary bytes per MPEG frame */
108862306a36Sopenharmony_ci#define HPI_MAX_ANC_BYTES_PER_FRAME     (64)
108962306a36Sopenharmony_ci#define HPI_STRING_LEN                  16
109062306a36Sopenharmony_ci
109162306a36Sopenharmony_ci/** Networked adapters have index >= 100 */
109262306a36Sopenharmony_ci#define HPI_MIN_NETWORK_ADAPTER_IDX 100
109362306a36Sopenharmony_ci
109462306a36Sopenharmony_ci/** Velocity units */
109562306a36Sopenharmony_ci#define HPI_OSTREAM_VELOCITY_UNITS      4096
109662306a36Sopenharmony_ci/** OutStream timescale units */
109762306a36Sopenharmony_ci#define HPI_OSTREAM_TIMESCALE_UNITS     10000
109862306a36Sopenharmony_ci/** OutStream timescale passthrough - turns timescaling on in passthough mode */
109962306a36Sopenharmony_ci#define HPI_OSTREAM_TIMESCALE_PASSTHROUGH       99999
110062306a36Sopenharmony_ci
110162306a36Sopenharmony_ci/**\}*/
110262306a36Sopenharmony_ci
110362306a36Sopenharmony_ci/**************/
110462306a36Sopenharmony_ci/* STRUCTURES */
110562306a36Sopenharmony_ci#ifndef DISABLE_PRAGMA_PACK1
110662306a36Sopenharmony_ci#pragma pack(push, 1)
110762306a36Sopenharmony_ci#endif
110862306a36Sopenharmony_ci
110962306a36Sopenharmony_ci/** Structure containing sample format information.
111062306a36Sopenharmony_ci    See also HPI_FormatCreate().
111162306a36Sopenharmony_ci  */
111262306a36Sopenharmony_cistruct hpi_format {
111362306a36Sopenharmony_ci	u32 sample_rate;
111462306a36Sopenharmony_ci				/**< 11025, 32000, 44100 ... */
111562306a36Sopenharmony_ci	u32 bit_rate;		  /**< for MPEG */
111662306a36Sopenharmony_ci	u32 attributes;
111762306a36Sopenharmony_ci				/**< Stereo/JointStereo/Mono */
111862306a36Sopenharmony_ci	u16 mode_legacy;
111962306a36Sopenharmony_ci				/**< Legacy ancillary mode or idle bit  */
112062306a36Sopenharmony_ci	u16 unused;		  /**< Unused */
112162306a36Sopenharmony_ci	u16 channels;	  /**< 1,2..., (or ancillary mode or idle bit */
112262306a36Sopenharmony_ci	u16 format;	  /**< HPI_FORMAT_PCM16, _MPEG etc. see #HPI_FORMATS. */
112362306a36Sopenharmony_ci};
112462306a36Sopenharmony_ci
112562306a36Sopenharmony_cistruct hpi_anc_frame {
112662306a36Sopenharmony_ci	u32 valid_bits_in_this_frame;
112762306a36Sopenharmony_ci	u8 b_data[HPI_MAX_ANC_BYTES_PER_FRAME];
112862306a36Sopenharmony_ci};
112962306a36Sopenharmony_ci
113062306a36Sopenharmony_ci/** An object for containing a single async event.
113162306a36Sopenharmony_ci*/
113262306a36Sopenharmony_cistruct hpi_async_event {
113362306a36Sopenharmony_ci	u16 event_type;	/**< type of event. \sa async_event  */
113462306a36Sopenharmony_ci	u16 sequence; /**< Sequence number, allows lost event detection */
113562306a36Sopenharmony_ci	u32 state; /**< New state */
113662306a36Sopenharmony_ci	u32 h_object; /**< handle to the object returning the event. */
113762306a36Sopenharmony_ci	union {
113862306a36Sopenharmony_ci		struct {
113962306a36Sopenharmony_ci			u16 index; /**< GPIO bit index. */
114062306a36Sopenharmony_ci		} gpio;
114162306a36Sopenharmony_ci		struct {
114262306a36Sopenharmony_ci			u16 node_index;	/**< what node is the control on ? */
114362306a36Sopenharmony_ci			u16 node_type; /**< what type of node is the control on ? */
114462306a36Sopenharmony_ci		} control;
114562306a36Sopenharmony_ci	} u;
114662306a36Sopenharmony_ci};
114762306a36Sopenharmony_ci
114862306a36Sopenharmony_ci#ifndef DISABLE_PRAGMA_PACK1
114962306a36Sopenharmony_ci#pragma pack(pop)
115062306a36Sopenharmony_ci#endif
115162306a36Sopenharmony_ci
115262306a36Sopenharmony_ci/*****************/
115362306a36Sopenharmony_ci/* HPI FUNCTIONS */
115462306a36Sopenharmony_ci/*****************/
115562306a36Sopenharmony_ci
115662306a36Sopenharmony_ci/* Stream */
115762306a36Sopenharmony_ciu16 hpi_stream_estimate_buffer_size(struct hpi_format *pF,
115862306a36Sopenharmony_ci	u32 host_polling_rate_in_milli_seconds, u32 *recommended_buffer_size);
115962306a36Sopenharmony_ci
116062306a36Sopenharmony_ci/*************/
116162306a36Sopenharmony_ci/* SubSystem */
116262306a36Sopenharmony_ci/*************/
116362306a36Sopenharmony_ci
116462306a36Sopenharmony_ciu16 hpi_subsys_get_version_ex(u32 *pversion_ex);
116562306a36Sopenharmony_ci
116662306a36Sopenharmony_ciu16 hpi_subsys_get_num_adapters(int *pn_num_adapters);
116762306a36Sopenharmony_ci
116862306a36Sopenharmony_ciu16 hpi_subsys_get_adapter(int iterator, u32 *padapter_index,
116962306a36Sopenharmony_ci	u16 *pw_adapter_type);
117062306a36Sopenharmony_ci
117162306a36Sopenharmony_ci/***********/
117262306a36Sopenharmony_ci/* Adapter */
117362306a36Sopenharmony_ci/***********/
117462306a36Sopenharmony_ci
117562306a36Sopenharmony_ciu16 hpi_adapter_open(u16 adapter_index);
117662306a36Sopenharmony_ci
117762306a36Sopenharmony_ciu16 hpi_adapter_close(u16 adapter_index);
117862306a36Sopenharmony_ci
117962306a36Sopenharmony_ciu16 hpi_adapter_get_info(u16 adapter_index, u16 *pw_num_outstreams,
118062306a36Sopenharmony_ci	u16 *pw_num_instreams, u16 *pw_version, u32 *pserial_number,
118162306a36Sopenharmony_ci	u16 *pw_adapter_type);
118262306a36Sopenharmony_ci
118362306a36Sopenharmony_ciu16 hpi_adapter_get_module_by_index(u16 adapter_index, u16 module_index,
118462306a36Sopenharmony_ci	u16 *pw_num_outputs, u16 *pw_num_inputs, u16 *pw_version,
118562306a36Sopenharmony_ci	u32 *pserial_number, u16 *pw_module_type, u32 *ph_module);
118662306a36Sopenharmony_ci
118762306a36Sopenharmony_ciu16 hpi_adapter_set_mode(u16 adapter_index, u32 adapter_mode);
118862306a36Sopenharmony_ci
118962306a36Sopenharmony_ciu16 hpi_adapter_set_mode_ex(u16 adapter_index, u32 adapter_mode,
119062306a36Sopenharmony_ci	u16 query_or_set);
119162306a36Sopenharmony_ci
119262306a36Sopenharmony_ciu16 hpi_adapter_get_mode(u16 adapter_index, u32 *padapter_mode);
119362306a36Sopenharmony_ci
119462306a36Sopenharmony_ciu16 hpi_adapter_set_property(u16 adapter_index, u16 property, u16 paramter1,
119562306a36Sopenharmony_ci	u16 paramter2);
119662306a36Sopenharmony_ci
119762306a36Sopenharmony_ciu16 hpi_adapter_get_property(u16 adapter_index, u16 property,
119862306a36Sopenharmony_ci	u16 *pw_paramter1, u16 *pw_paramter2);
119962306a36Sopenharmony_ci
120062306a36Sopenharmony_ciu16 hpi_adapter_enumerate_property(u16 adapter_index, u16 index,
120162306a36Sopenharmony_ci	u16 what_to_enumerate, u16 property_index, u32 *psetting);
120262306a36Sopenharmony_ci/*************/
120362306a36Sopenharmony_ci/* OutStream */
120462306a36Sopenharmony_ci/*************/
120562306a36Sopenharmony_ciu16 hpi_outstream_open(u16 adapter_index, u16 outstream_index,
120662306a36Sopenharmony_ci	u32 *ph_outstream);
120762306a36Sopenharmony_ci
120862306a36Sopenharmony_ciu16 hpi_outstream_close(u32 h_outstream);
120962306a36Sopenharmony_ci
121062306a36Sopenharmony_ciu16 hpi_outstream_get_info_ex(u32 h_outstream, u16 *pw_state,
121162306a36Sopenharmony_ci	u32 *pbuffer_size, u32 *pdata_to_play, u32 *psamples_played,
121262306a36Sopenharmony_ci	u32 *pauxiliary_data_to_play);
121362306a36Sopenharmony_ci
121462306a36Sopenharmony_ciu16 hpi_outstream_write_buf(u32 h_outstream, const u8 *pb_write_buf,
121562306a36Sopenharmony_ci	u32 bytes_to_write, const struct hpi_format *p_format);
121662306a36Sopenharmony_ci
121762306a36Sopenharmony_ciu16 hpi_outstream_start(u32 h_outstream);
121862306a36Sopenharmony_ci
121962306a36Sopenharmony_ciu16 hpi_outstream_wait_start(u32 h_outstream);
122062306a36Sopenharmony_ci
122162306a36Sopenharmony_ciu16 hpi_outstream_stop(u32 h_outstream);
122262306a36Sopenharmony_ci
122362306a36Sopenharmony_ciu16 hpi_outstream_sinegen(u32 h_outstream);
122462306a36Sopenharmony_ci
122562306a36Sopenharmony_ciu16 hpi_outstream_reset(u32 h_outstream);
122662306a36Sopenharmony_ci
122762306a36Sopenharmony_ciu16 hpi_outstream_query_format(u32 h_outstream, struct hpi_format *p_format);
122862306a36Sopenharmony_ci
122962306a36Sopenharmony_ciu16 hpi_outstream_set_format(u32 h_outstream, struct hpi_format *p_format);
123062306a36Sopenharmony_ci
123162306a36Sopenharmony_ciu16 hpi_outstream_set_punch_in_out(u32 h_outstream, u32 punch_in_sample,
123262306a36Sopenharmony_ci	u32 punch_out_sample);
123362306a36Sopenharmony_ci
123462306a36Sopenharmony_ciu16 hpi_outstream_set_velocity(u32 h_outstream, short velocity);
123562306a36Sopenharmony_ci
123662306a36Sopenharmony_ciu16 hpi_outstream_ancillary_reset(u32 h_outstream, u16 mode);
123762306a36Sopenharmony_ci
123862306a36Sopenharmony_ciu16 hpi_outstream_ancillary_get_info(u32 h_outstream, u32 *pframes_available);
123962306a36Sopenharmony_ci
124062306a36Sopenharmony_ciu16 hpi_outstream_ancillary_read(u32 h_outstream,
124162306a36Sopenharmony_ci	struct hpi_anc_frame *p_anc_frame_buffer,
124262306a36Sopenharmony_ci	u32 anc_frame_buffer_size_in_bytes,
124362306a36Sopenharmony_ci	u32 number_of_ancillary_frames_to_read);
124462306a36Sopenharmony_ci
124562306a36Sopenharmony_ciu16 hpi_outstream_set_time_scale(u32 h_outstream, u32 time_scaleX10000);
124662306a36Sopenharmony_ci
124762306a36Sopenharmony_ciu16 hpi_outstream_host_buffer_allocate(u32 h_outstream, u32 size_in_bytes);
124862306a36Sopenharmony_ci
124962306a36Sopenharmony_ciu16 hpi_outstream_host_buffer_free(u32 h_outstream);
125062306a36Sopenharmony_ci
125162306a36Sopenharmony_ciu16 hpi_outstream_group_add(u32 h_outstream, u32 h_stream);
125262306a36Sopenharmony_ci
125362306a36Sopenharmony_ciu16 hpi_outstream_group_get_map(u32 h_outstream, u32 *poutstream_map,
125462306a36Sopenharmony_ci	u32 *pinstream_map);
125562306a36Sopenharmony_ci
125662306a36Sopenharmony_ciu16 hpi_outstream_group_reset(u32 h_outstream);
125762306a36Sopenharmony_ci
125862306a36Sopenharmony_ci/************/
125962306a36Sopenharmony_ci/* InStream */
126062306a36Sopenharmony_ci/************/
126162306a36Sopenharmony_ciu16 hpi_instream_open(u16 adapter_index, u16 instream_index,
126262306a36Sopenharmony_ci	u32 *ph_instream);
126362306a36Sopenharmony_ci
126462306a36Sopenharmony_ciu16 hpi_instream_close(u32 h_instream);
126562306a36Sopenharmony_ci
126662306a36Sopenharmony_ciu16 hpi_instream_query_format(u32 h_instream,
126762306a36Sopenharmony_ci	const struct hpi_format *p_format);
126862306a36Sopenharmony_ci
126962306a36Sopenharmony_ciu16 hpi_instream_set_format(u32 h_instream,
127062306a36Sopenharmony_ci	const struct hpi_format *p_format);
127162306a36Sopenharmony_ci
127262306a36Sopenharmony_ciu16 hpi_instream_read_buf(u32 h_instream, u8 *pb_read_buf, u32 bytes_to_read);
127362306a36Sopenharmony_ci
127462306a36Sopenharmony_ciu16 hpi_instream_start(u32 h_instream);
127562306a36Sopenharmony_ci
127662306a36Sopenharmony_ciu16 hpi_instream_wait_start(u32 h_instream);
127762306a36Sopenharmony_ci
127862306a36Sopenharmony_ciu16 hpi_instream_stop(u32 h_instream);
127962306a36Sopenharmony_ci
128062306a36Sopenharmony_ciu16 hpi_instream_reset(u32 h_instream);
128162306a36Sopenharmony_ci
128262306a36Sopenharmony_ciu16 hpi_instream_get_info_ex(u32 h_instream, u16 *pw_state, u32 *pbuffer_size,
128362306a36Sopenharmony_ci	u32 *pdata_recorded, u32 *psamples_recorded,
128462306a36Sopenharmony_ci	u32 *pauxiliary_data_recorded);
128562306a36Sopenharmony_ci
128662306a36Sopenharmony_ciu16 hpi_instream_ancillary_reset(u32 h_instream, u16 bytes_per_frame,
128762306a36Sopenharmony_ci	u16 mode, u16 alignment, u16 idle_bit);
128862306a36Sopenharmony_ci
128962306a36Sopenharmony_ciu16 hpi_instream_ancillary_get_info(u32 h_instream, u32 *pframe_space);
129062306a36Sopenharmony_ci
129162306a36Sopenharmony_ciu16 hpi_instream_ancillary_write(u32 h_instream,
129262306a36Sopenharmony_ci	const struct hpi_anc_frame *p_anc_frame_buffer,
129362306a36Sopenharmony_ci	u32 anc_frame_buffer_size_in_bytes,
129462306a36Sopenharmony_ci	u32 number_of_ancillary_frames_to_write);
129562306a36Sopenharmony_ci
129662306a36Sopenharmony_ciu16 hpi_instream_host_buffer_allocate(u32 h_instream, u32 size_in_bytes);
129762306a36Sopenharmony_ci
129862306a36Sopenharmony_ciu16 hpi_instream_host_buffer_free(u32 h_instream);
129962306a36Sopenharmony_ci
130062306a36Sopenharmony_ciu16 hpi_instream_group_add(u32 h_instream, u32 h_stream);
130162306a36Sopenharmony_ci
130262306a36Sopenharmony_ciu16 hpi_instream_group_get_map(u32 h_instream, u32 *poutstream_map,
130362306a36Sopenharmony_ci	u32 *pinstream_map);
130462306a36Sopenharmony_ci
130562306a36Sopenharmony_ciu16 hpi_instream_group_reset(u32 h_instream);
130662306a36Sopenharmony_ci
130762306a36Sopenharmony_ci/*********/
130862306a36Sopenharmony_ci/* Mixer */
130962306a36Sopenharmony_ci/*********/
131062306a36Sopenharmony_ciu16 hpi_mixer_open(u16 adapter_index, u32 *ph_mixer);
131162306a36Sopenharmony_ci
131262306a36Sopenharmony_ciu16 hpi_mixer_close(u32 h_mixer);
131362306a36Sopenharmony_ci
131462306a36Sopenharmony_ciu16 hpi_mixer_get_control(u32 h_mixer, u16 src_node_type,
131562306a36Sopenharmony_ci	u16 src_node_type_index, u16 dst_node_type, u16 dst_node_type_index,
131662306a36Sopenharmony_ci	u16 control_type, u32 *ph_control);
131762306a36Sopenharmony_ci
131862306a36Sopenharmony_ciu16 hpi_mixer_get_control_by_index(u32 h_mixer, u16 control_index,
131962306a36Sopenharmony_ci	u16 *pw_src_node_type, u16 *pw_src_node_index, u16 *pw_dst_node_type,
132062306a36Sopenharmony_ci	u16 *pw_dst_node_index, u16 *pw_control_type, u32 *ph_control);
132162306a36Sopenharmony_ci
132262306a36Sopenharmony_ciu16 hpi_mixer_store(u32 h_mixer, enum HPI_MIXER_STORE_COMMAND command,
132362306a36Sopenharmony_ci	u16 index);
132462306a36Sopenharmony_ci/************/
132562306a36Sopenharmony_ci/* Controls */
132662306a36Sopenharmony_ci/************/
132762306a36Sopenharmony_ci/******************/
132862306a36Sopenharmony_ci/* Volume control */
132962306a36Sopenharmony_ci/******************/
133062306a36Sopenharmony_ciu16 hpi_volume_set_gain(u32 h_control, short an_gain0_01dB[HPI_MAX_CHANNELS]
133162306a36Sopenharmony_ci	);
133262306a36Sopenharmony_ci
133362306a36Sopenharmony_ciu16 hpi_volume_get_gain(u32 h_control,
133462306a36Sopenharmony_ci	short an_gain0_01dB_out[HPI_MAX_CHANNELS]
133562306a36Sopenharmony_ci	);
133662306a36Sopenharmony_ci
133762306a36Sopenharmony_ciu16 hpi_volume_set_mute(u32 h_control, u32 mute);
133862306a36Sopenharmony_ci
133962306a36Sopenharmony_ciu16 hpi_volume_get_mute(u32 h_control, u32 *mute);
134062306a36Sopenharmony_ci
134162306a36Sopenharmony_ci#define hpi_volume_get_range hpi_volume_query_range
134262306a36Sopenharmony_ciu16 hpi_volume_query_range(u32 h_control, short *min_gain_01dB,
134362306a36Sopenharmony_ci	short *max_gain_01dB, short *step_gain_01dB);
134462306a36Sopenharmony_ci
134562306a36Sopenharmony_ciu16 hpi_volume_query_channels(const u32 h_control, u32 *p_channels);
134662306a36Sopenharmony_ci
134762306a36Sopenharmony_ciu16 hpi_volume_auto_fade(u32 h_control,
134862306a36Sopenharmony_ci	short an_stop_gain0_01dB[HPI_MAX_CHANNELS], u32 duration_ms);
134962306a36Sopenharmony_ci
135062306a36Sopenharmony_ciu16 hpi_volume_auto_fade_profile(u32 h_control,
135162306a36Sopenharmony_ci	short an_stop_gain0_01dB[HPI_MAX_CHANNELS], u32 duration_ms,
135262306a36Sopenharmony_ci	u16 profile);
135362306a36Sopenharmony_ci
135462306a36Sopenharmony_ciu16 hpi_volume_query_auto_fade_profile(const u32 h_control, const u32 i,
135562306a36Sopenharmony_ci	u16 *profile);
135662306a36Sopenharmony_ci
135762306a36Sopenharmony_ci/*****************/
135862306a36Sopenharmony_ci/* Level control */
135962306a36Sopenharmony_ci/*****************/
136062306a36Sopenharmony_ciu16 hpi_level_query_range(u32 h_control, short *min_gain_01dB,
136162306a36Sopenharmony_ci	short *max_gain_01dB, short *step_gain_01dB);
136262306a36Sopenharmony_ci
136362306a36Sopenharmony_ciu16 hpi_level_set_gain(u32 h_control, short an_gain0_01dB[HPI_MAX_CHANNELS]
136462306a36Sopenharmony_ci	);
136562306a36Sopenharmony_ci
136662306a36Sopenharmony_ciu16 hpi_level_get_gain(u32 h_control,
136762306a36Sopenharmony_ci	short an_gain0_01dB_out[HPI_MAX_CHANNELS]
136862306a36Sopenharmony_ci	);
136962306a36Sopenharmony_ci
137062306a36Sopenharmony_ci/*****************/
137162306a36Sopenharmony_ci/* Meter control */
137262306a36Sopenharmony_ci/*****************/
137362306a36Sopenharmony_ciu16 hpi_meter_query_channels(const u32 h_meter, u32 *p_channels);
137462306a36Sopenharmony_ci
137562306a36Sopenharmony_ciu16 hpi_meter_get_peak(u32 h_control,
137662306a36Sopenharmony_ci	short an_peak0_01dB_out[HPI_MAX_CHANNELS]
137762306a36Sopenharmony_ci	);
137862306a36Sopenharmony_ci
137962306a36Sopenharmony_ciu16 hpi_meter_get_rms(u32 h_control, short an_peak0_01dB_out[HPI_MAX_CHANNELS]
138062306a36Sopenharmony_ci	);
138162306a36Sopenharmony_ci
138262306a36Sopenharmony_ciu16 hpi_meter_set_peak_ballistics(u32 h_control, u16 attack, u16 decay);
138362306a36Sopenharmony_ci
138462306a36Sopenharmony_ciu16 hpi_meter_set_rms_ballistics(u32 h_control, u16 attack, u16 decay);
138562306a36Sopenharmony_ci
138662306a36Sopenharmony_ciu16 hpi_meter_get_peak_ballistics(u32 h_control, u16 *attack, u16 *decay);
138762306a36Sopenharmony_ci
138862306a36Sopenharmony_ciu16 hpi_meter_get_rms_ballistics(u32 h_control, u16 *attack, u16 *decay);
138962306a36Sopenharmony_ci
139062306a36Sopenharmony_ci/************************/
139162306a36Sopenharmony_ci/* ChannelMode control */
139262306a36Sopenharmony_ci/************************/
139362306a36Sopenharmony_ciu16 hpi_channel_mode_query_mode(const u32 h_mode, const u32 index,
139462306a36Sopenharmony_ci	u16 *pw_mode);
139562306a36Sopenharmony_ci
139662306a36Sopenharmony_ciu16 hpi_channel_mode_set(u32 h_control, u16 mode);
139762306a36Sopenharmony_ci
139862306a36Sopenharmony_ciu16 hpi_channel_mode_get(u32 h_control, u16 *mode);
139962306a36Sopenharmony_ci
140062306a36Sopenharmony_ci/*****************/
140162306a36Sopenharmony_ci/* Tuner control */
140262306a36Sopenharmony_ci/*****************/
140362306a36Sopenharmony_ciu16 hpi_tuner_query_band(const u32 h_tuner, const u32 index, u16 *pw_band);
140462306a36Sopenharmony_ci
140562306a36Sopenharmony_ciu16 hpi_tuner_set_band(u32 h_control, u16 band);
140662306a36Sopenharmony_ci
140762306a36Sopenharmony_ciu16 hpi_tuner_get_band(u32 h_control, u16 *pw_band);
140862306a36Sopenharmony_ci
140962306a36Sopenharmony_ciu16 hpi_tuner_query_frequency(const u32 h_tuner, const u32 index,
141062306a36Sopenharmony_ci	const u16 band, u32 *pfreq);
141162306a36Sopenharmony_ci
141262306a36Sopenharmony_ciu16 hpi_tuner_set_frequency(u32 h_control, u32 freq_ink_hz);
141362306a36Sopenharmony_ci
141462306a36Sopenharmony_ciu16 hpi_tuner_get_frequency(u32 h_control, u32 *pw_freq_ink_hz);
141562306a36Sopenharmony_ci
141662306a36Sopenharmony_ciu16 hpi_tuner_get_rf_level(u32 h_control, short *pw_level);
141762306a36Sopenharmony_ci
141862306a36Sopenharmony_ciu16 hpi_tuner_get_raw_rf_level(u32 h_control, short *pw_level);
141962306a36Sopenharmony_ci
142062306a36Sopenharmony_ciu16 hpi_tuner_query_gain(const u32 h_tuner, const u32 index, u16 *pw_gain);
142162306a36Sopenharmony_ci
142262306a36Sopenharmony_ciu16 hpi_tuner_set_gain(u32 h_control, short gain);
142362306a36Sopenharmony_ci
142462306a36Sopenharmony_ciu16 hpi_tuner_get_gain(u32 h_control, short *pn_gain);
142562306a36Sopenharmony_ci
142662306a36Sopenharmony_ciu16 hpi_tuner_get_status(u32 h_control, u16 *pw_status_mask, u16 *pw_status);
142762306a36Sopenharmony_ci
142862306a36Sopenharmony_ciu16 hpi_tuner_set_mode(u32 h_control, u32 mode, u32 value);
142962306a36Sopenharmony_ci
143062306a36Sopenharmony_ciu16 hpi_tuner_get_mode(u32 h_control, u32 mode, u32 *pn_value);
143162306a36Sopenharmony_ci
143262306a36Sopenharmony_ciu16 hpi_tuner_get_rds(u32 h_control, char *p_rds_data);
143362306a36Sopenharmony_ci
143462306a36Sopenharmony_ciu16 hpi_tuner_query_deemphasis(const u32 h_tuner, const u32 index,
143562306a36Sopenharmony_ci	const u16 band, u32 *pdeemphasis);
143662306a36Sopenharmony_ci
143762306a36Sopenharmony_ciu16 hpi_tuner_set_deemphasis(u32 h_control, u32 deemphasis);
143862306a36Sopenharmony_ciu16 hpi_tuner_get_deemphasis(u32 h_control, u32 *pdeemphasis);
143962306a36Sopenharmony_ci
144062306a36Sopenharmony_ciu16 hpi_tuner_query_program(const u32 h_tuner, u32 *pbitmap_program);
144162306a36Sopenharmony_ci
144262306a36Sopenharmony_ciu16 hpi_tuner_set_program(u32 h_control, u32 program);
144362306a36Sopenharmony_ci
144462306a36Sopenharmony_ciu16 hpi_tuner_get_program(u32 h_control, u32 *pprogram);
144562306a36Sopenharmony_ci
144662306a36Sopenharmony_ciu16 hpi_tuner_get_hd_radio_dsp_version(u32 h_control, char *psz_dsp_version,
144762306a36Sopenharmony_ci	const u32 string_size);
144862306a36Sopenharmony_ci
144962306a36Sopenharmony_ciu16 hpi_tuner_get_hd_radio_sdk_version(u32 h_control, char *psz_sdk_version,
145062306a36Sopenharmony_ci	const u32 string_size);
145162306a36Sopenharmony_ci
145262306a36Sopenharmony_ciu16 hpi_tuner_get_hd_radio_signal_quality(u32 h_control, u32 *pquality);
145362306a36Sopenharmony_ci
145462306a36Sopenharmony_ciu16 hpi_tuner_get_hd_radio_signal_blend(u32 h_control, u32 *pblend);
145562306a36Sopenharmony_ci
145662306a36Sopenharmony_ciu16 hpi_tuner_set_hd_radio_signal_blend(u32 h_control, const u32 blend);
145762306a36Sopenharmony_ci
145862306a36Sopenharmony_ci/***************/
145962306a36Sopenharmony_ci/* PAD control */
146062306a36Sopenharmony_ci/***************/
146162306a36Sopenharmony_ci
146262306a36Sopenharmony_ciu16 hpi_pad_get_channel_name(u32 h_control, char *psz_string,
146362306a36Sopenharmony_ci	const u32 string_length);
146462306a36Sopenharmony_ci
146562306a36Sopenharmony_ciu16 hpi_pad_get_artist(u32 h_control, char *psz_string,
146662306a36Sopenharmony_ci	const u32 string_length);
146762306a36Sopenharmony_ci
146862306a36Sopenharmony_ciu16 hpi_pad_get_title(u32 h_control, char *psz_string,
146962306a36Sopenharmony_ci	const u32 string_length);
147062306a36Sopenharmony_ci
147162306a36Sopenharmony_ciu16 hpi_pad_get_comment(u32 h_control, char *psz_string,
147262306a36Sopenharmony_ci	const u32 string_length);
147362306a36Sopenharmony_ci
147462306a36Sopenharmony_ciu16 hpi_pad_get_program_type(u32 h_control, u32 *ppTY);
147562306a36Sopenharmony_ci
147662306a36Sopenharmony_ciu16 hpi_pad_get_rdsPI(u32 h_control, u32 *ppI);
147762306a36Sopenharmony_ci
147862306a36Sopenharmony_ci/****************************/
147962306a36Sopenharmony_ci/* AES/EBU Receiver control */
148062306a36Sopenharmony_ci/****************************/
148162306a36Sopenharmony_ciu16 hpi_aesebu_receiver_query_format(const u32 h_aes_rx, const u32 index,
148262306a36Sopenharmony_ci	u16 *pw_format);
148362306a36Sopenharmony_ci
148462306a36Sopenharmony_ciu16 hpi_aesebu_receiver_set_format(u32 h_control, u16 source);
148562306a36Sopenharmony_ci
148662306a36Sopenharmony_ciu16 hpi_aesebu_receiver_get_format(u32 h_control, u16 *pw_source);
148762306a36Sopenharmony_ci
148862306a36Sopenharmony_ciu16 hpi_aesebu_receiver_get_sample_rate(u32 h_control, u32 *psample_rate);
148962306a36Sopenharmony_ci
149062306a36Sopenharmony_ciu16 hpi_aesebu_receiver_get_user_data(u32 h_control, u16 index, u16 *pw_data);
149162306a36Sopenharmony_ci
149262306a36Sopenharmony_ciu16 hpi_aesebu_receiver_get_channel_status(u32 h_control, u16 index,
149362306a36Sopenharmony_ci	u16 *pw_data);
149462306a36Sopenharmony_ci
149562306a36Sopenharmony_ciu16 hpi_aesebu_receiver_get_error_status(u32 h_control, u16 *pw_error_data);
149662306a36Sopenharmony_ci
149762306a36Sopenharmony_ci/*******************************/
149862306a36Sopenharmony_ci/* AES/EBU Transmitter control */
149962306a36Sopenharmony_ci/*******************************/
150062306a36Sopenharmony_ciu16 hpi_aesebu_transmitter_set_sample_rate(u32 h_control, u32 sample_rate);
150162306a36Sopenharmony_ci
150262306a36Sopenharmony_ciu16 hpi_aesebu_transmitter_set_user_data(u32 h_control, u16 index, u16 data);
150362306a36Sopenharmony_ci
150462306a36Sopenharmony_ciu16 hpi_aesebu_transmitter_set_channel_status(u32 h_control, u16 index,
150562306a36Sopenharmony_ci	u16 data);
150662306a36Sopenharmony_ci
150762306a36Sopenharmony_ciu16 hpi_aesebu_transmitter_get_channel_status(u32 h_control, u16 index,
150862306a36Sopenharmony_ci	u16 *pw_data);
150962306a36Sopenharmony_ci
151062306a36Sopenharmony_ciu16 hpi_aesebu_transmitter_query_format(const u32 h_aes_tx, const u32 index,
151162306a36Sopenharmony_ci	u16 *pw_format);
151262306a36Sopenharmony_ci
151362306a36Sopenharmony_ciu16 hpi_aesebu_transmitter_set_format(u32 h_control, u16 output_format);
151462306a36Sopenharmony_ci
151562306a36Sopenharmony_ciu16 hpi_aesebu_transmitter_get_format(u32 h_control, u16 *pw_output_format);
151662306a36Sopenharmony_ci
151762306a36Sopenharmony_ci/***********************/
151862306a36Sopenharmony_ci/* Multiplexer control */
151962306a36Sopenharmony_ci/***********************/
152062306a36Sopenharmony_ciu16 hpi_multiplexer_set_source(u32 h_control, u16 source_node_type,
152162306a36Sopenharmony_ci	u16 source_node_index);
152262306a36Sopenharmony_ci
152362306a36Sopenharmony_ciu16 hpi_multiplexer_get_source(u32 h_control, u16 *source_node_type,
152462306a36Sopenharmony_ci	u16 *source_node_index);
152562306a36Sopenharmony_ci
152662306a36Sopenharmony_ciu16 hpi_multiplexer_query_source(u32 h_control, u16 index,
152762306a36Sopenharmony_ci	u16 *source_node_type, u16 *source_node_index);
152862306a36Sopenharmony_ci
152962306a36Sopenharmony_ci/***************/
153062306a36Sopenharmony_ci/* Vox control */
153162306a36Sopenharmony_ci/***************/
153262306a36Sopenharmony_ciu16 hpi_vox_set_threshold(u32 h_control, short an_gain0_01dB);
153362306a36Sopenharmony_ci
153462306a36Sopenharmony_ciu16 hpi_vox_get_threshold(u32 h_control, short *an_gain0_01dB);
153562306a36Sopenharmony_ci
153662306a36Sopenharmony_ci/*********************/
153762306a36Sopenharmony_ci/* Bitstream control */
153862306a36Sopenharmony_ci/*********************/
153962306a36Sopenharmony_ciu16 hpi_bitstream_set_clock_edge(u32 h_control, u16 edge_type);
154062306a36Sopenharmony_ci
154162306a36Sopenharmony_ciu16 hpi_bitstream_set_data_polarity(u32 h_control, u16 polarity);
154262306a36Sopenharmony_ci
154362306a36Sopenharmony_ciu16 hpi_bitstream_get_activity(u32 h_control, u16 *pw_clk_activity,
154462306a36Sopenharmony_ci	u16 *pw_data_activity);
154562306a36Sopenharmony_ci
154662306a36Sopenharmony_ci/***********************/
154762306a36Sopenharmony_ci/* SampleClock control */
154862306a36Sopenharmony_ci/***********************/
154962306a36Sopenharmony_ci
155062306a36Sopenharmony_ciu16 hpi_sample_clock_query_source(const u32 h_clock, const u32 index,
155162306a36Sopenharmony_ci	u16 *pw_source);
155262306a36Sopenharmony_ci
155362306a36Sopenharmony_ciu16 hpi_sample_clock_set_source(u32 h_control, u16 source);
155462306a36Sopenharmony_ci
155562306a36Sopenharmony_ciu16 hpi_sample_clock_get_source(u32 h_control, u16 *pw_source);
155662306a36Sopenharmony_ci
155762306a36Sopenharmony_ciu16 hpi_sample_clock_query_source_index(const u32 h_clock, const u32 index,
155862306a36Sopenharmony_ci	const u32 source, u16 *pw_source_index);
155962306a36Sopenharmony_ci
156062306a36Sopenharmony_ciu16 hpi_sample_clock_set_source_index(u32 h_control, u16 source_index);
156162306a36Sopenharmony_ci
156262306a36Sopenharmony_ciu16 hpi_sample_clock_get_source_index(u32 h_control, u16 *pw_source_index);
156362306a36Sopenharmony_ci
156462306a36Sopenharmony_ciu16 hpi_sample_clock_get_sample_rate(u32 h_control, u32 *psample_rate);
156562306a36Sopenharmony_ci
156662306a36Sopenharmony_ciu16 hpi_sample_clock_query_local_rate(const u32 h_clock, const u32 index,
156762306a36Sopenharmony_ci	u32 *psource);
156862306a36Sopenharmony_ci
156962306a36Sopenharmony_ciu16 hpi_sample_clock_set_local_rate(u32 h_control, u32 sample_rate);
157062306a36Sopenharmony_ci
157162306a36Sopenharmony_ciu16 hpi_sample_clock_get_local_rate(u32 h_control, u32 *psample_rate);
157262306a36Sopenharmony_ci
157362306a36Sopenharmony_ciu16 hpi_sample_clock_set_auto(u32 h_control, u32 enable);
157462306a36Sopenharmony_ci
157562306a36Sopenharmony_ciu16 hpi_sample_clock_get_auto(u32 h_control, u32 *penable);
157662306a36Sopenharmony_ci
157762306a36Sopenharmony_ciu16 hpi_sample_clock_set_local_rate_lock(u32 h_control, u32 lock);
157862306a36Sopenharmony_ci
157962306a36Sopenharmony_ciu16 hpi_sample_clock_get_local_rate_lock(u32 h_control, u32 *plock);
158062306a36Sopenharmony_ci
158162306a36Sopenharmony_ci/***********************/
158262306a36Sopenharmony_ci/* Microphone control */
158362306a36Sopenharmony_ci/***********************/
158462306a36Sopenharmony_ciu16 hpi_microphone_set_phantom_power(u32 h_control, u16 on_off);
158562306a36Sopenharmony_ci
158662306a36Sopenharmony_ciu16 hpi_microphone_get_phantom_power(u32 h_control, u16 *pw_on_off);
158762306a36Sopenharmony_ci
158862306a36Sopenharmony_ci/********************************/
158962306a36Sopenharmony_ci/* Parametric Equalizer control */
159062306a36Sopenharmony_ci/********************************/
159162306a36Sopenharmony_ciu16 hpi_parametric_eq_get_info(u32 h_control, u16 *pw_number_of_bands,
159262306a36Sopenharmony_ci	u16 *pw_enabled);
159362306a36Sopenharmony_ci
159462306a36Sopenharmony_ciu16 hpi_parametric_eq_set_state(u32 h_control, u16 on_off);
159562306a36Sopenharmony_ci
159662306a36Sopenharmony_ciu16 hpi_parametric_eq_set_band(u32 h_control, u16 index, u16 type,
159762306a36Sopenharmony_ci	u32 frequency_hz, short q100, short gain0_01dB);
159862306a36Sopenharmony_ci
159962306a36Sopenharmony_ciu16 hpi_parametric_eq_get_band(u32 h_control, u16 index, u16 *pn_type,
160062306a36Sopenharmony_ci	u32 *pfrequency_hz, short *pnQ100, short *pn_gain0_01dB);
160162306a36Sopenharmony_ci
160262306a36Sopenharmony_ciu16 hpi_parametric_eq_get_coeffs(u32 h_control, u16 index, short coeffs[5]
160362306a36Sopenharmony_ci	);
160462306a36Sopenharmony_ci
160562306a36Sopenharmony_ci/*******************************/
160662306a36Sopenharmony_ci/* Compressor Expander control */
160762306a36Sopenharmony_ci/*******************************/
160862306a36Sopenharmony_ci
160962306a36Sopenharmony_ciu16 hpi_compander_set_enable(u32 h_control, u32 on);
161062306a36Sopenharmony_ci
161162306a36Sopenharmony_ciu16 hpi_compander_get_enable(u32 h_control, u32 *pon);
161262306a36Sopenharmony_ci
161362306a36Sopenharmony_ciu16 hpi_compander_set_makeup_gain(u32 h_control, short makeup_gain0_01dB);
161462306a36Sopenharmony_ci
161562306a36Sopenharmony_ciu16 hpi_compander_get_makeup_gain(u32 h_control, short *pn_makeup_gain0_01dB);
161662306a36Sopenharmony_ci
161762306a36Sopenharmony_ciu16 hpi_compander_set_attack_time_constant(u32 h_control, u32 index,
161862306a36Sopenharmony_ci	u32 attack);
161962306a36Sopenharmony_ci
162062306a36Sopenharmony_ciu16 hpi_compander_get_attack_time_constant(u32 h_control, u32 index,
162162306a36Sopenharmony_ci	u32 *pw_attack);
162262306a36Sopenharmony_ci
162362306a36Sopenharmony_ciu16 hpi_compander_set_decay_time_constant(u32 h_control, u32 index,
162462306a36Sopenharmony_ci	u32 decay);
162562306a36Sopenharmony_ci
162662306a36Sopenharmony_ciu16 hpi_compander_get_decay_time_constant(u32 h_control, u32 index,
162762306a36Sopenharmony_ci	u32 *pw_decay);
162862306a36Sopenharmony_ci
162962306a36Sopenharmony_ciu16 hpi_compander_set_threshold(u32 h_control, u32 index,
163062306a36Sopenharmony_ci	short threshold0_01dB);
163162306a36Sopenharmony_ci
163262306a36Sopenharmony_ciu16 hpi_compander_get_threshold(u32 h_control, u32 index,
163362306a36Sopenharmony_ci	short *pn_threshold0_01dB);
163462306a36Sopenharmony_ci
163562306a36Sopenharmony_ciu16 hpi_compander_set_ratio(u32 h_control, u32 index, u32 ratio100);
163662306a36Sopenharmony_ci
163762306a36Sopenharmony_ciu16 hpi_compander_get_ratio(u32 h_control, u32 index, u32 *pw_ratio100);
163862306a36Sopenharmony_ci
163962306a36Sopenharmony_ci/********************/
164062306a36Sopenharmony_ci/* Cobranet control */
164162306a36Sopenharmony_ci/********************/
164262306a36Sopenharmony_ciu16 hpi_cobranet_hmi_write(u32 h_control, u32 hmi_address, u32 byte_count,
164362306a36Sopenharmony_ci	u8 *pb_data);
164462306a36Sopenharmony_ci
164562306a36Sopenharmony_ciu16 hpi_cobranet_hmi_read(u32 h_control, u32 hmi_address, u32 max_byte_count,
164662306a36Sopenharmony_ci	u32 *pbyte_count, u8 *pb_data);
164762306a36Sopenharmony_ci
164862306a36Sopenharmony_ciu16 hpi_cobranet_hmi_get_status(u32 h_control, u32 *pstatus,
164962306a36Sopenharmony_ci	u32 *preadable_size, u32 *pwriteable_size);
165062306a36Sopenharmony_ci
165162306a36Sopenharmony_ciu16 hpi_cobranet_get_ip_address(u32 h_control, u32 *pdw_ip_address);
165262306a36Sopenharmony_ci
165362306a36Sopenharmony_ciu16 hpi_cobranet_set_ip_address(u32 h_control, u32 dw_ip_address);
165462306a36Sopenharmony_ci
165562306a36Sopenharmony_ciu16 hpi_cobranet_get_static_ip_address(u32 h_control, u32 *pdw_ip_address);
165662306a36Sopenharmony_ci
165762306a36Sopenharmony_ciu16 hpi_cobranet_set_static_ip_address(u32 h_control, u32 dw_ip_address);
165862306a36Sopenharmony_ci
165962306a36Sopenharmony_ciu16 hpi_cobranet_get_macaddress(u32 h_control, u32 *p_mac_msbs,
166062306a36Sopenharmony_ci	u32 *p_mac_lsbs);
166162306a36Sopenharmony_ci
166262306a36Sopenharmony_ci/*************************/
166362306a36Sopenharmony_ci/* Tone Detector control */
166462306a36Sopenharmony_ci/*************************/
166562306a36Sopenharmony_ciu16 hpi_tone_detector_get_state(u32 hC, u32 *state);
166662306a36Sopenharmony_ci
166762306a36Sopenharmony_ciu16 hpi_tone_detector_set_enable(u32 hC, u32 enable);
166862306a36Sopenharmony_ci
166962306a36Sopenharmony_ciu16 hpi_tone_detector_get_enable(u32 hC, u32 *enable);
167062306a36Sopenharmony_ci
167162306a36Sopenharmony_ciu16 hpi_tone_detector_set_event_enable(u32 hC, u32 event_enable);
167262306a36Sopenharmony_ci
167362306a36Sopenharmony_ciu16 hpi_tone_detector_get_event_enable(u32 hC, u32 *event_enable);
167462306a36Sopenharmony_ci
167562306a36Sopenharmony_ciu16 hpi_tone_detector_set_threshold(u32 hC, int threshold);
167662306a36Sopenharmony_ci
167762306a36Sopenharmony_ciu16 hpi_tone_detector_get_threshold(u32 hC, int *threshold);
167862306a36Sopenharmony_ci
167962306a36Sopenharmony_ciu16 hpi_tone_detector_get_frequency(u32 hC, u32 index, u32 *frequency);
168062306a36Sopenharmony_ci
168162306a36Sopenharmony_ci/****************************/
168262306a36Sopenharmony_ci/* Silence Detector control */
168362306a36Sopenharmony_ci/****************************/
168462306a36Sopenharmony_ciu16 hpi_silence_detector_get_state(u32 hC, u32 *state);
168562306a36Sopenharmony_ci
168662306a36Sopenharmony_ciu16 hpi_silence_detector_set_enable(u32 hC, u32 enable);
168762306a36Sopenharmony_ci
168862306a36Sopenharmony_ciu16 hpi_silence_detector_get_enable(u32 hC, u32 *enable);
168962306a36Sopenharmony_ci
169062306a36Sopenharmony_ciu16 hpi_silence_detector_set_event_enable(u32 hC, u32 event_enable);
169162306a36Sopenharmony_ci
169262306a36Sopenharmony_ciu16 hpi_silence_detector_get_event_enable(u32 hC, u32 *event_enable);
169362306a36Sopenharmony_ci
169462306a36Sopenharmony_ciu16 hpi_silence_detector_set_delay(u32 hC, u32 delay);
169562306a36Sopenharmony_ci
169662306a36Sopenharmony_ciu16 hpi_silence_detector_get_delay(u32 hC, u32 *delay);
169762306a36Sopenharmony_ci
169862306a36Sopenharmony_ciu16 hpi_silence_detector_set_threshold(u32 hC, int threshold);
169962306a36Sopenharmony_ci
170062306a36Sopenharmony_ciu16 hpi_silence_detector_get_threshold(u32 hC, int *threshold);
170162306a36Sopenharmony_ci/*********************/
170262306a36Sopenharmony_ci/* Utility functions */
170362306a36Sopenharmony_ci/*********************/
170462306a36Sopenharmony_ci
170562306a36Sopenharmony_ciu16 hpi_format_create(struct hpi_format *p_format, u16 channels, u16 format,
170662306a36Sopenharmony_ci	u32 sample_rate, u32 bit_rate, u32 attributes);
170762306a36Sopenharmony_ci
170862306a36Sopenharmony_ci#endif	 /*_HPI_H_ */
1709