Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    1) /* SPDX-License-Identifier: GPL-2.0-only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    2) /******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    3) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    4)     AudioScience HPI driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    5)     Copyright (C) 1997-2011  AudioScience Inc. <support@audioscience.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    8) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    9) /** \file hpi.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   11)  AudioScience Hardware Programming Interface (HPI)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   12)  public API definition.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   14)  The HPI is a low-level hardware abstraction layer to all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   15)  AudioScience digital audio adapters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   17) (C) Copyright AudioScience Inc. 1998-2010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   18) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   20) #ifndef _HPI_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   21) #define _HPI_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   22) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   23) #include <linux/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   24) #define HPI_BUILD_KERNEL_MODE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   26) /******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   27) /********       HPI API DEFINITIONS                                       *****/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   28) /******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   29) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   30) /*******************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   31) /**  Audio format types
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   32) \ingroup stream
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   33) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   34) enum HPI_FORMATS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   35) /** Used internally on adapter. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   36) 	HPI_FORMAT_MIXER_NATIVE = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   37) /** 8-bit unsigned PCM. Windows equivalent is WAVE_FORMAT_PCM. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   38) 	HPI_FORMAT_PCM8_UNSIGNED = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   39) /** 16-bit signed PCM. Windows equivalent is WAVE_FORMAT_PCM. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   40) 	HPI_FORMAT_PCM16_SIGNED = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   41) /** MPEG-1 Layer-1. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   42) 	HPI_FORMAT_MPEG_L1 = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   43) /** MPEG-1 Layer-2.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   44) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   45) Windows equivalent is WAVE_FORMAT_MPEG.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   46) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   47) The following table shows what combinations of mode and bitrate are possible:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   48) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   49) <table border=1 cellspacing=0 cellpadding=5>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   50) <tr>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   51) <td><p><b>Bitrate (kbs)</b></p>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   52) <td><p><b>Mono</b></p>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   53) <td><p><b>Stereo,<br>Joint Stereo or<br>Dual Channel</b></p>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   54) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   55) <tr><td>32<td>X<td>_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   56) <tr><td>40<td>_<td>_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   57) <tr><td>48<td>X<td>_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   58) <tr><td>56<td>X<td>_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   59) <tr><td>64<td>X<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   60) <tr><td>80<td>X<td>_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   61) <tr><td>96<td>X<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   62) <tr><td>112<td>X<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   63) <tr><td>128<td>X<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   64) <tr><td>160<td>X<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   65) <tr><td>192<td>X<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   66) <tr><td>224<td>_<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   67) <tr><td>256<td>-<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   68) <tr><td>320<td>-<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   69) <tr><td>384<td>_<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   70) </table>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   71) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   72) 	HPI_FORMAT_MPEG_L2 = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   73) /** MPEG-1 Layer-3.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   74) Windows equivalent is WAVE_FORMAT_MPEG.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   75) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   76) The following table shows what combinations of mode and bitrate are possible:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   77) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   78) <table border=1 cellspacing=0 cellpadding=5>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   79) <tr>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   80) <td><p><b>Bitrate (kbs)</b></p>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   81) <td><p><b>Mono<br>Stereo @ 8,<br>11.025 and<br>12kHz*</b></p>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   82) <td><p><b>Mono<br>Stereo @ 16,<br>22.050 and<br>24kHz*</b></p>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   83) <td><p><b>Mono<br>Stereo @ 32,<br>44.1 and<br>48kHz</b></p>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   84) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   85) <tr><td>16<td>X<td>X<td>_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   86) <tr><td>24<td>X<td>X<td>_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   87) <tr><td>32<td>X<td>X<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   88) <tr><td>40<td>X<td>X<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   89) <tr><td>48<td>X<td>X<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   90) <tr><td>56<td>X<td>X<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   91) <tr><td>64<td>X<td>X<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   92) <tr><td>80<td>_<td>X<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   93) <tr><td>96<td>_<td>X<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   94) <tr><td>112<td>_<td>X<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   95) <tr><td>128<td>_<td>X<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   96) <tr><td>144<td>_<td>X<td>_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   97) <tr><td>160<td>_<td>X<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   98) <tr><td>192<td>_<td>_<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   99) <tr><td>224<td>_<td>_<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  100) <tr><td>256<td>-<td>_<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  101) <tr><td>320<td>-<td>_<td>X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  102) </table>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  103) \b * Available on the ASI6000 series only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  104) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  105) 	HPI_FORMAT_MPEG_L3 = 5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  106) /** Dolby AC-2. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  107) 	HPI_FORMAT_DOLBY_AC2 = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  108) /** Dolbt AC-3. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  109) 	HPI_FORMAT_DOLBY_AC3 = 7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  110) /** 16-bit PCM big-endian. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  111) 	HPI_FORMAT_PCM16_BIGENDIAN = 8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  112) /** TAGIT-1 algorithm - hits. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  113) 	HPI_FORMAT_AA_TAGIT1_HITS = 9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  114) /** TAGIT-1 algorithm - inserts. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  115) 	HPI_FORMAT_AA_TAGIT1_INSERTS = 10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  116) /** 32-bit signed PCM. Windows equivalent is WAVE_FORMAT_PCM.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  117) Each sample is a 32bit word. The most significant 24 bits contain a 24-bit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  118) sample and the least significant 8 bits are set to 0.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  119) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  120) 	HPI_FORMAT_PCM32_SIGNED = 11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  121) /** Raw bitstream - unknown format. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  122) 	HPI_FORMAT_RAW_BITSTREAM = 12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  123) /** TAGIT-1 algorithm hits - extended. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  124) 	HPI_FORMAT_AA_TAGIT1_HITS_EX1 = 13,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  125) /** 32-bit PCM as an IEEE float. Windows equivalent is WAVE_FORMAT_IEEE_FLOAT.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  126) Each sample is a 32bit word in IEEE754 floating point format.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  127) The range is +1.0 to -1.0, which corresponds to digital fullscale.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  128) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  129) 	HPI_FORMAT_PCM32_FLOAT = 14,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  130) /** 24-bit PCM signed. Windows equivalent is WAVE_FORMAT_PCM. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  131) 	HPI_FORMAT_PCM24_SIGNED = 15,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  132) /** OEM format 1 - private. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  133) 	HPI_FORMAT_OEM1 = 16,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  134) /** OEM format 2 - private. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  135) 	HPI_FORMAT_OEM2 = 17,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  136) /** Undefined format. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  137) 	HPI_FORMAT_UNDEFINED = 0xffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  138) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  139) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  140) /*******************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  141) /** Stream States
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  142) \ingroup stream
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  143) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  144) enum HPI_STREAM_STATES {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  145) 	/** State stopped - stream is stopped. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  146) 	HPI_STATE_STOPPED = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  147) 	/** State playing - stream is playing audio. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  148) 	HPI_STATE_PLAYING = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  149) 	/** State recording - stream is recording. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  150) 	HPI_STATE_RECORDING = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  151) 	/** State drained - playing stream ran out of data to play. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  152) 	HPI_STATE_DRAINED = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  153) 	/** State generate sine - to be implemented. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  154) 	HPI_STATE_SINEGEN = 5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  155) 	/** State wait - used for inter-card sync to mean waiting for all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  156) 		cards to be ready. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  157) 	HPI_STATE_WAIT = 6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  158) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  159) /*******************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  160) /** Source node types
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  161) \ingroup mixer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  162) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  163) enum HPI_SOURCENODES {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  164) 	/** This define can be used instead of 0 to indicate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  165) 	that there is no valid source node. A control that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  166) 	exists on a destination node can be searched for using a source
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  167) 	node value of either 0, or HPI_SOURCENODE_NONE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  168) 	HPI_SOURCENODE_NONE = 100,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  169) 	/** Out Stream (Play) node. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  170) 	HPI_SOURCENODE_OSTREAM = 101,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  171) 	/** Line in node - could be analog, AES/EBU or network. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  172) 	HPI_SOURCENODE_LINEIN = 102,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  173) 	HPI_SOURCENODE_AESEBU_IN = 103,	     /**< AES/EBU input node. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  174) 	HPI_SOURCENODE_TUNER = 104,	     /**< tuner node. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  175) 	HPI_SOURCENODE_RF = 105,	     /**< RF input node. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  176) 	HPI_SOURCENODE_CLOCK_SOURCE = 106,   /**< clock source node. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  177) 	HPI_SOURCENODE_RAW_BITSTREAM = 107,  /**< raw bitstream node. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  178) 	HPI_SOURCENODE_MICROPHONE = 108,     /**< microphone node. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  179) 	/** Cobranet input node -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  180) 	    Audio samples come from the Cobranet network and into the device. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  181) 	HPI_SOURCENODE_COBRANET = 109,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  182) 	HPI_SOURCENODE_ANALOG = 110,	     /**< analog input node. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  183) 	HPI_SOURCENODE_ADAPTER = 111,	     /**< adapter node. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  184) 	/** RTP stream input node - This node is a destination for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  185) 	    packets of RTP audio samples from other devices. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  186) 	HPI_SOURCENODE_RTP_DESTINATION = 112,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  187) 	HPI_SOURCENODE_INTERNAL = 113,	     /**< node internal to the device. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  188) 	HPI_SOURCENODE_AVB = 114,	     /**< AVB input stream */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  189) 	HPI_SOURCENODE_BLULINK = 115,	     /**< BLU-link input channel */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  190) 	/* !!!Update this  AND hpidebug.h if you add a new sourcenode type!!! */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  191) 	HPI_SOURCENODE_LAST_INDEX = 115	     /**< largest ID */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  192) 		/* AX6 max sourcenode types = 15 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  193) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  194) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  195) /*******************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  196) /** Destination node types
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  197) \ingroup mixer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  198) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  199) enum HPI_DESTNODES {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  200) 	/** This define can be used instead of 0 to indicate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  201) 	that there is no valid destination node. A control that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  202) 	exists on a source node can be searched for using a destination
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  203) 	node value of either 0, or HPI_DESTNODE_NONE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  204) 	HPI_DESTNODE_NONE = 200,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  205) 	/** In Stream (Record) node. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  206) 	HPI_DESTNODE_ISTREAM = 201,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  207) 	HPI_DESTNODE_LINEOUT = 202,	     /**< line out node. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  208) 	HPI_DESTNODE_AESEBU_OUT = 203,	     /**< AES/EBU output node. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  209) 	HPI_DESTNODE_RF = 204,		     /**< RF output node. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  210) 	HPI_DESTNODE_SPEAKER = 205,	     /**< speaker output node. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  211) 	/** Cobranet output node -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  212) 	    Audio samples from the device are sent out on the Cobranet network.*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  213) 	HPI_DESTNODE_COBRANET = 206,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  214) 	HPI_DESTNODE_ANALOG = 207,	     /**< analog output node. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  215) 	/** RTP stream output node - This node is a source for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  216) 	    packets of RTP audio samples that are sent to other devices. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  217) 	HPI_DESTNODE_RTP_SOURCE = 208,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  218) 	HPI_DESTNODE_AVB = 209,		     /**< AVB output stream */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  219) 	HPI_DESTNODE_INTERNAL = 210,	     /**< node internal to the device. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  220) 	HPI_DESTNODE_BLULINK = 211,	     /**< BLU-link output channel. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  221) 	/* !!!Update this AND hpidebug.h if you add a new destnode type!!! */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  222) 	HPI_DESTNODE_LAST_INDEX = 211	     /**< largest ID */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  223) 		/* AX6 max destnode types = 15 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  224) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  225) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  226) /*******************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  227) /** Mixer control types
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  228) \ingroup mixer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  229) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  230) enum HPI_CONTROLS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  231) 	HPI_CONTROL_GENERIC = 0,	/**< generic control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  232) 	HPI_CONTROL_CONNECTION = 1, /**< A connection between nodes. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  233) 	HPI_CONTROL_VOLUME = 2,	      /**< volume control - works in dB_fs. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  234) 	HPI_CONTROL_METER = 3,	/**< peak meter control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  235) 	HPI_CONTROL_MUTE = 4,	/*mute control - not used at present. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  236) 	HPI_CONTROL_MULTIPLEXER = 5,	/**< multiplexer control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  237) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  238) 	HPI_CONTROL_AESEBU_TRANSMITTER = 6, /**< AES/EBU transmitter control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  239) 	HPI_CONTROL_AESEBUTX = 6,	/* HPI_CONTROL_AESEBU_TRANSMITTER */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  240) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  241) 	HPI_CONTROL_AESEBU_RECEIVER = 7, /**< AES/EBU receiver control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  242) 	HPI_CONTROL_AESEBURX = 7,	/* HPI_CONTROL_AESEBU_RECEIVER */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  243) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  244) 	HPI_CONTROL_LEVEL = 8, /**< level/trim control - works in d_bu. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  245) 	HPI_CONTROL_TUNER = 9,	/**< tuner control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  246) /*      HPI_CONTROL_ONOFFSWITCH =       10 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  247) 	HPI_CONTROL_VOX = 11,	/**< vox control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  248) /*      HPI_CONTROL_AES18_TRANSMITTER = 12 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  249) /*      HPI_CONTROL_AES18_RECEIVER = 13 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  250) /*      HPI_CONTROL_AES18_BLOCKGENERATOR  = 14 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  251) 	HPI_CONTROL_CHANNEL_MODE = 15,	/**< channel mode control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  252) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  253) 	HPI_CONTROL_BITSTREAM = 16,	/**< bitstream control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  254) 	HPI_CONTROL_SAMPLECLOCK = 17,	/**< sample clock control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  255) 	HPI_CONTROL_MICROPHONE = 18,	/**< microphone control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  256) 	HPI_CONTROL_PARAMETRIC_EQ = 19,	/**< parametric EQ control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  257) 	HPI_CONTROL_EQUALIZER = 19,	/*HPI_CONTROL_PARAMETRIC_EQ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  258) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  259) 	HPI_CONTROL_COMPANDER = 20,	/**< compander control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  260) 	HPI_CONTROL_COBRANET = 21,	/**< cobranet control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  261) 	HPI_CONTROL_TONEDETECTOR = 22,	/**< tone detector control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  262) 	HPI_CONTROL_SILENCEDETECTOR = 23,	/**< silence detector control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  263) 	HPI_CONTROL_PAD = 24,	/**< tuner PAD control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  264) 	HPI_CONTROL_SRC = 25,	/**< samplerate converter control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  265) 	HPI_CONTROL_UNIVERSAL = 26,	/**< universal control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  266) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  267) /*  !!! Update this AND hpidebug.h if you add a new control type!!!*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  268) 	HPI_CONTROL_LAST_INDEX = 26 /**<highest control type ID */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  269) /* WARNING types 256 or greater impact bit packing in all AX6 DSP code */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  270) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  271) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  272) /*******************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  273) /** Adapter properties
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  274) These are used in HPI_AdapterSetProperty() and HPI_AdapterGetProperty()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  275) \ingroup adapter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  276) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  277) enum HPI_ADAPTER_PROPERTIES {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  278) /** \internal Used in dwProperty field of HPI_AdapterSetProperty() and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  279) HPI_AdapterGetProperty(). This errata applies to all ASI6000 cards with both
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  280) analog and digital outputs. The CS4224 A/D+D/A has a one sample delay between
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  281) left and right channels on both its input (ADC) and output (DAC).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  282) More details are available in Cirrus Logic errata ER284B2.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  283) PDF available from www.cirrus.com, released by Cirrus in 2001.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  284) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  285) 	HPI_ADAPTER_PROPERTY_ERRATA_1 = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  286) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  287) /** Adapter grouping property
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  288) Indicates whether the adapter supports the grouping API (for ASIO and SSX2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  289) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  290) 	HPI_ADAPTER_PROPERTY_GROUPING = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  291) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  292) /** Driver SSX2 property
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  293) Tells the kernel driver to turn on SSX2 stream mapping.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  294) This feature is not used by the DSP. In fact the call is completely processed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  295) by the driver and is not passed on to the DSP at all.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  296) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  297) 	HPI_ADAPTER_PROPERTY_ENABLE_SSX2 = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  298) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  299) /** Adapter SSX2 property
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  300) Indicates the state of the adapter's SSX2 setting. This setting is stored in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  301) non-volatile memory on the adapter. A typical call sequence would be to use
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  302) HPI_ADAPTER_PROPERTY_SSX2_SETTING to set SSX2 on the adapter and then to reload
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  303) the driver. The driver would query HPI_ADAPTER_PROPERTY_SSX2_SETTING during
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  304) startup and if SSX2 is set, it would then call HPI_ADAPTER_PROPERTY_ENABLE_SSX2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  305) to enable SSX2 stream mapping within the kernel level of the driver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  306) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  307) 	HPI_ADAPTER_PROPERTY_SSX2_SETTING = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  308) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  309) /** Enables/disables PCI(e) IRQ.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  310) A setting of 0 indicates that no interrupts are being generated. A DSP boot
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  311) this property is set to 0. Setting to a non-zero value specifies the number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  312) of frames of audio that should be processed between interrupts. This property
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  313) should be set to multiple of the mixer interval as read back from the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  314) HPI_ADAPTER_PROPERTY_INTERVAL property.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  315) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  316) 	HPI_ADAPTER_PROPERTY_IRQ_RATE = 5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  317) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  318) /** Base number for readonly properties */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  319) 	HPI_ADAPTER_PROPERTY_READONLYBASE = 256,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  320) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  321) /** Readonly adapter latency property.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  322) This property returns in the input and output latency in samples.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  323) Property 1 is the estimated input latency
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  324) in samples, while Property 2 is that output latency in  samples.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  325) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  326) 	HPI_ADAPTER_PROPERTY_LATENCY = 256,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  327) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  328) /** Readonly adapter granularity property.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  329) The granulariy is the smallest size chunk of stereo samples that is processed by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  330) the adapter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  331) This property returns the record granularity in samples in Property 1.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  332) Property 2 returns the play granularity.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  333) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  334) 	HPI_ADAPTER_PROPERTY_GRANULARITY = 257,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  335) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  336) /** Readonly adapter number of current channels property.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  337) Property 1 is the number of record channels per record device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  338) Property 2 is the number of play channels per playback device.*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  339) 	HPI_ADAPTER_PROPERTY_CURCHANNELS = 258,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  340) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  341) /** Readonly adapter software version.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  342) The SOFTWARE_VERSION property returns the version of the software running
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  343) on the adapter as Major.Minor.Release.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  344) Property 1 contains Major in bits 15..8 and Minor in bits 7..0.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  345) Property 2 contains Release in bits 7..0. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  346) 	HPI_ADAPTER_PROPERTY_SOFTWARE_VERSION = 259,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  347) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  348) /** Readonly adapter MAC address MSBs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  349) The MAC_ADDRESS_MSB property returns
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  350) the most significant 32 bits of the MAC address.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  351) Property 1 contains bits 47..32 of the MAC address.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  352) Property 2 contains bits 31..16 of the MAC address. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  353) 	HPI_ADAPTER_PROPERTY_MAC_ADDRESS_MSB = 260,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  354) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  355) /** Readonly adapter MAC address LSBs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  356) The MAC_ADDRESS_LSB property returns
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  357) the least significant 16 bits of the MAC address.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  358) Property 1 contains bits 15..0 of the MAC address. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  359) 	HPI_ADAPTER_PROPERTY_MAC_ADDRESS_LSB = 261,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  360) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  361) /** Readonly extended adapter type number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  362) The EXTENDED_ADAPTER_TYPE property returns the 4 digits of an extended
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  363) adapter type, i.e ASI8920-0022, 0022 is the extended type.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  364) The digits are returned as ASCII characters rather than the hex digits that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  365) are returned for the main type
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  366) Property 1 returns the 1st two (left most) digits, i.e "00"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  367) in the example above, the upper byte being the left most digit.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  368) Property 2 returns the 2nd two digits, i.e "22" in the example above*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  369) 	HPI_ADAPTER_PROPERTY_EXTENDED_ADAPTER_TYPE = 262,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  370) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  371) /** Readonly debug log buffer information */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  372) 	HPI_ADAPTER_PROPERTY_LOGTABLEN = 263,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  373) 	HPI_ADAPTER_PROPERTY_LOGTABBEG = 264,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  374) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  375) /** Readonly adapter IP address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  376) For 192.168.1.101
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  377) Property 1 returns the 1st two (left most) digits, i.e 192*256 + 168
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  378) in the example above, the upper byte being the left most digit.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  379) Property 2 returns the 2nd two digits, i.e 1*256 + 101 in the example above, */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  380) 	HPI_ADAPTER_PROPERTY_IP_ADDRESS = 265,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  381) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  382) /** Readonly adapter buffer processed count. Returns a buffer processed count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  383) that is incremented every time all buffers for all streams are updated. This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  384) is useful for checking completion of all stream operations across the adapter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  385) when using grouped streams.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  386) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  387) 	HPI_ADAPTER_PROPERTY_BUFFER_UPDATE_COUNT = 266,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  388) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  389) /** Readonly mixer and stream intervals
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  390) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  391) These intervals are  measured in mixer frames.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  392) To convert to time, divide  by the adapter samplerate.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  393) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  394) The mixer interval is the number of frames processed in one mixer iteration.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  395) The stream update interval is the interval at which streams check for and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  396) process data, and BBM host buffer counters are updated.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  397) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  398) Property 1 is the mixer interval in mixer frames.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  399) Property 2 is the stream update interval in mixer frames.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  400) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  401) 	HPI_ADAPTER_PROPERTY_INTERVAL = 267,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  402) /** Adapter capabilities 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  403) Property 1 - adapter can do multichannel (SSX1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  404) Property 2 - adapter can do stream grouping (supports SSX2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  405) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  406) 	HPI_ADAPTER_PROPERTY_CAPS1 = 268,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  407) /** Adapter capabilities 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  408) Property 1 - adapter can do samplerate conversion (MRX)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  409) Property 2 - adapter can do timestretch (TSX)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  410) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  411) 	HPI_ADAPTER_PROPERTY_CAPS2 = 269,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  412) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  413) /** Readonly adapter sync header connection count.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  414) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  415) 	HPI_ADAPTER_PROPERTY_SYNC_HEADER_CONNECTIONS = 270,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  416) /** Readonly supports SSX2 property.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  417) Indicates the adapter supports SSX2 in some mode setting. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  418) return value is true (1) or false (0). If the current adapter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  419) mode is MONO SSX2 is disabled, even though this property will
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  420) return true.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  421) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  422) 	HPI_ADAPTER_PROPERTY_SUPPORTS_SSX2 = 271,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  423) /** Readonly supports PCI(e) IRQ.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  424) Indicates that the adapter in it's current mode supports interrupts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  425) across the host bus. Note, this does not imply that interrupts are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  426) enabled. Instead it indicates that they can be enabled.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  427) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  428) 	HPI_ADAPTER_PROPERTY_SUPPORTS_IRQ = 272,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  429) /** Readonly supports firmware updating.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  430) Indicates that the adapter implements an interface to update firmware
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  431) on the adapter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  432) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  433) 	HPI_ADAPTER_PROPERTY_SUPPORTS_FW_UPDATE = 273,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  434) /** Readonly Firmware IDs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  435) Identifiy firmware independent of individual adapter type.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  436) May be used as a filter for firmware update images.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  437) Property 1 = Bootloader ID
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  438) Property 2 = Main program ID
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  439) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  440) 	HPI_ADAPTER_PROPERTY_FIRMWARE_ID = 274
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  441) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  442) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  443) /** Adapter mode commands
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  444) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  445) Used in wQueryOrSet parameter of HPI_AdapterSetModeEx().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  446) \ingroup adapter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  447) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  448) enum HPI_ADAPTER_MODE_CMDS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  449) 	/** Set the mode to the given parameter */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  450) 	HPI_ADAPTER_MODE_SET = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  451) 	/** Return 0 or error depending whether mode is valid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  452) 	but don't set the mode */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  453) 	HPI_ADAPTER_MODE_QUERY = 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  454) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  455) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  456) /** Adapter Modes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  457)  These are used by HPI_AdapterSetModeEx()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  458) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  459) \warning - more than 16 possible modes breaks
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  460) a bitmask in the Windows WAVE DLL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  461) \ingroup adapter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  462) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  463) enum HPI_ADAPTER_MODES {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  464) /** 4 outstream mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  465) - ASI6114: 1 instream
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  466) - ASI6044: 4 instreams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  467) - ASI6012: 1 instream
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  468) - ASI6102: no instreams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  469) - ASI6022, ASI6122: 2 instreams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  470) - ASI5111, ASI5101: 2 instreams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  471) - ASI652x, ASI662x: 2 instreams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  472) - ASI654x, ASI664x: 4 instreams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  473) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  474) 	HPI_ADAPTER_MODE_4OSTREAM = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  475) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  476) /** 6 outstream mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  477) - ASI6012: 1 instream,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  478) - ASI6022, ASI6122: 2 instreams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  479) - ASI652x, ASI662x: 4 instreams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  480) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  481) 	HPI_ADAPTER_MODE_6OSTREAM = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  482) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  483) /** 8 outstream mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  484) - ASI6114: 8 instreams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  485) - ASI6118: 8 instreams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  486) - ASI6585: 8 instreams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  487) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  488) 	HPI_ADAPTER_MODE_8OSTREAM = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  489) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  490) /** 16 outstream mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  491) - ASI6416 16 instreams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  492) - ASI6518, ASI6618 16 instreams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  493) - ASI6118 16 mono out and in streams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  494) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  495) 	HPI_ADAPTER_MODE_16OSTREAM = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  496) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  497) /** one outstream mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  498) - ASI5111 1 outstream, 1 instream
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  499) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  500) 	HPI_ADAPTER_MODE_1OSTREAM = 5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  501) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  502) /** ASI504X mode 1. 12 outstream, 4 instream 0 to 48kHz sample rates
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  503) 	(see ASI504X datasheet for more info).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  504) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  505) 	HPI_ADAPTER_MODE_1 = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  506) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  507) /** ASI504X mode 2. 4 outstreams, 4 instreams at 0 to 192kHz sample rates
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  508) 	(see ASI504X datasheet for more info).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  509) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  510) 	HPI_ADAPTER_MODE_2 = 7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  511) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  512) /** ASI504X mode 3. 4 outstreams, 4 instreams at 0 to 192kHz sample rates
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  513) 	(see ASI504X datasheet for more info).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  514) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  515) 	HPI_ADAPTER_MODE_3 = 8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  516) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  517) /** ASI504X multichannel mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  518) 	2 outstreams -> 4 line outs = 1 to 8 channel streams),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  519) 	4 lineins -> 1 instream (1 to 8 channel streams) at 0-48kHz.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  520) 	For more info see the SSX Specification.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  521) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  522) 	HPI_ADAPTER_MODE_MULTICHANNEL = 9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  523) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  524) /** 12 outstream mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  525) - ASI6514, ASI6614: 2 instreams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  526) - ASI6540,ASI6544: 8 instreams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  527) - ASI6640,ASI6644: 8 instreams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  528) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  529) 	HPI_ADAPTER_MODE_12OSTREAM = 10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  530) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  531) /** 9 outstream mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  532) - ASI6044: 8 instreams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  533) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  534) 	HPI_ADAPTER_MODE_9OSTREAM = 11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  535) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  536) /** mono mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  537) - ASI6416: 16 outstreams/instreams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  538) - ASI5402: 2 outstreams/instreams
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  539) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  540) 	HPI_ADAPTER_MODE_MONO = 12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  541) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  542) /** Low latency mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  543) - ASI6416/ASI6316: 1 16 channel outstream and instream
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  544) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  545) 	HPI_ADAPTER_MODE_LOW_LATENCY = 13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  546) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  547) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  548) /* Note, adapters can have more than one capability -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  549) encoding as bitfield is recommended. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  550) #define HPI_CAPABILITY_NONE             (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  551) #define HPI_CAPABILITY_MPEG_LAYER3      (1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  552) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  553) /* Set this equal to maximum capability index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  554) Must not be greater than 32 - see axnvdef.h */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  555) #define HPI_CAPABILITY_MAX                      1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  556) /* #define HPI_CAPABILITY_AAC              2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  557) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  558) /******************************************* STREAM ATTRIBUTES ****/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  559) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  560) /** MPEG Ancillary Data modes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  561) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  562) The mode for the ancillary data insertion or extraction to operate in.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  563) \ingroup stream
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  564) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  565) enum HPI_MPEG_ANC_MODES {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  566) 	/** the MPEG frames have energy information stored in them (5 bytes per stereo frame, 3 per mono) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  567) 	HPI_MPEG_ANC_HASENERGY = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  568) 	/** the entire ancillary data field is taken up by data from the Anc data buffer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  569) 	On encode, the encoder will insert the energy bytes before filling the remainder
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  570) 	of the ancillary data space with data from the ancillary data buffer.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  571) 	*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  572) 	HPI_MPEG_ANC_RAW = 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  573) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  574) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  575) /** Ancillary Data Alignment
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  576) \ingroup instream
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  577) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  578) enum HPI_ISTREAM_MPEG_ANC_ALIGNS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  579) 	/** data is packed against the end of data, then padded to the end of frame */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  580) 	HPI_MPEG_ANC_ALIGN_LEFT = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  581) 	/** data is packed against the end of the frame */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  582) 	HPI_MPEG_ANC_ALIGN_RIGHT = 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  583) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  584) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  585) /** MPEG modes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  586) MPEG modes - can be used optionally for HPI_FormatCreate()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  587) parameter dwAttributes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  588) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  589) Using any mode setting other than HPI_MPEG_MODE_DEFAULT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  590) with single channel format will return an error.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  591) \ingroup stream
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  592) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  593) enum HPI_MPEG_MODES {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  594) /** Causes the MPEG-1 Layer II bitstream to be recorded
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  595) in single_channel mode when the number of channels is 1 and in stereo when the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  596) number of channels is 2. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  597) 	HPI_MPEG_MODE_DEFAULT = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  598) 	/** Standard stereo without joint-stereo compression */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  599) 	HPI_MPEG_MODE_STEREO = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  600) 	/** Joint stereo  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  601) 	HPI_MPEG_MODE_JOINTSTEREO = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  602) 	/** Left and Right channels are completely independent */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  603) 	HPI_MPEG_MODE_DUALCHANNEL = 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  604) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  605) /******************************************* MIXER ATTRIBUTES ****/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  606) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  607) /* \defgroup mixer_flags Mixer flags for HPI_MIXER_GET_CONTROL_MULTIPLE_VALUES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  608) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  609) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  610) #define HPI_MIXER_GET_CONTROL_MULTIPLE_CHANGED  (0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  611) #define HPI_MIXER_GET_CONTROL_MULTIPLE_RESET    (1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  612) /*}*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  613) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  614) /** Commands used by HPI_MixerStore()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  615) \ingroup mixer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  616) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  617) enum HPI_MIXER_STORE_COMMAND {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  618) /** Save all mixer control settings. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  619) 	HPI_MIXER_STORE_SAVE = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  620) /** Restore all controls from saved. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  621) 	HPI_MIXER_STORE_RESTORE = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  622) /** Delete saved control settings. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  623) 	HPI_MIXER_STORE_DELETE = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  624) /** Enable auto storage of some control settings. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  625) 	HPI_MIXER_STORE_ENABLE = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  626) /** Disable auto storage of some control settings. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  627) 	HPI_MIXER_STORE_DISABLE = 5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  628) /** Unimplemented - save the attributes of a single control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  629) 	HPI_MIXER_STORE_SAVE_SINGLE = 6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  630) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  631) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  632) /****************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  633) /* CONTROL ATTRIBUTE VALUES */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  634) /****************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  635) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  636) /** Used by mixer plugin enable functions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  637) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  638) E.g. HPI_ParametricEq_SetState()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  639) \ingroup mixer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  640) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  641) enum HPI_SWITCH_STATES {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  642) 	HPI_SWITCH_OFF = 0,	/**< turn the mixer plugin on. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  643) 	HPI_SWITCH_ON = 1	/**< turn the mixer plugin off. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  644) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  645) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  646) /* Volume control special gain values */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  647) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  648) /** volumes units are 100ths of a dB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  649) \ingroup volume
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  650) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  651) #define HPI_UNITS_PER_dB                100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  652) /** turns volume control OFF or MUTE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  653) \ingroup volume
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  654) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  655) #define HPI_GAIN_OFF                    (-100 * HPI_UNITS_PER_dB)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  656) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  657) /** channel mask specifying all channels
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  658) \ingroup volume
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  659) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  660) #define HPI_BITMASK_ALL_CHANNELS        (0xFFFFFFFF)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  661) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  662) /** value returned for no signal
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  663) \ingroup meter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  664) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  665) #define HPI_METER_MINIMUM               (-150 * HPI_UNITS_PER_dB)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  666) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  667) /** autofade profiles
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  668) \ingroup volume
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  669) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  670) enum HPI_VOLUME_AUTOFADES {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  671) /** log fade - dB attenuation changes linearly over time */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  672) 	HPI_VOLUME_AUTOFADE_LOG = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  673) /** linear fade - amplitude changes linearly */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  674) 	HPI_VOLUME_AUTOFADE_LINEAR = 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  675) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  676) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  677) /** The physical encoding format of the AESEBU I/O.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  678) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  679) Used in HPI_Aesebu_Transmitter_SetFormat(), HPI_Aesebu_Receiver_SetFormat()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  680) along with related Get and Query functions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  681) \ingroup aestx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  682) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  683) enum HPI_AESEBU_FORMATS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  684) /** AES/EBU physical format - AES/EBU balanced "professional"  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  685) 	HPI_AESEBU_FORMAT_AESEBU = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  686) /** AES/EBU physical format - S/PDIF unbalanced "consumer"      */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  687) 	HPI_AESEBU_FORMAT_SPDIF = 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  688) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  689) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  690) /** AES/EBU error status bits
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  691) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  692) Returned by HPI_Aesebu_Receiver_GetErrorStatus()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  693) \ingroup aesrx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  694) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  695) enum HPI_AESEBU_ERRORS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  696) /**  bit0: 1 when PLL is not locked */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  697) 	HPI_AESEBU_ERROR_NOT_LOCKED = 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  698) /**  bit1: 1 when signal quality is poor */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  699) 	HPI_AESEBU_ERROR_POOR_QUALITY = 0x02,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  700) /** bit2: 1 when there is a parity error */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  701) 	HPI_AESEBU_ERROR_PARITY_ERROR = 0x04,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  702) /**  bit3: 1 when there is a bi-phase coding violation */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  703) 	HPI_AESEBU_ERROR_BIPHASE_VIOLATION = 0x08,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  704) /**  bit4: 1 when the validity bit is high */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  705) 	HPI_AESEBU_ERROR_VALIDITY = 0x10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  706) /**  bit5: 1 when the CRC error bit is high */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  707) 	HPI_AESEBU_ERROR_CRC = 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  708) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  709) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  710) /** \addtogroup pad
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  711) \{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  712) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  713) /** The text string containing the station/channel combination. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  714) #define HPI_PAD_CHANNEL_NAME_LEN        16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  715) /** The text string containing the artist. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  716) #define HPI_PAD_ARTIST_LEN              64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  717) /** The text string containing the title. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  718) #define HPI_PAD_TITLE_LEN               64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  719) /** The text string containing the comment. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  720) #define HPI_PAD_COMMENT_LEN             256
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  721) /** The PTY when the tuner has not received any PTY. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  722) #define HPI_PAD_PROGRAM_TYPE_INVALID    0xffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  723) /** \} */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  724) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  725) /** Data types for PTY string translation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  726) \ingroup rds
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  727) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  728) enum eHPI_RDS_type {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  729) 	HPI_RDS_DATATYPE_RDS = 0,	/**< RDS bitstream.*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  730) 	HPI_RDS_DATATYPE_RBDS = 1	/**< RBDS bitstream.*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  731) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  732) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  733) /** Tuner bands
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  734) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  735) Used for HPI_Tuner_SetBand(),HPI_Tuner_GetBand()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  736) \ingroup tuner
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  737) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  738) enum HPI_TUNER_BAND {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  739) 	HPI_TUNER_BAND_AM = 1,	 /**< AM band */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  740) 	HPI_TUNER_BAND_FM = 2,	 /**< FM band (mono) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  741) 	HPI_TUNER_BAND_TV_NTSC_M = 3,	 /**< NTSC-M TV band*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  742) 	HPI_TUNER_BAND_TV = 3,	/* use TV_NTSC_M */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  743) 	HPI_TUNER_BAND_FM_STEREO = 4,	 /**< FM band (stereo) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  744) 	HPI_TUNER_BAND_AUX = 5,	 /**< auxiliary input */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  745) 	HPI_TUNER_BAND_TV_PAL_BG = 6,	 /**< PAL-B/G TV band*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  746) 	HPI_TUNER_BAND_TV_PAL_I = 7,	 /**< PAL-I TV band*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  747) 	HPI_TUNER_BAND_TV_PAL_DK = 8,	 /**< PAL-D/K TV band*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  748) 	HPI_TUNER_BAND_TV_SECAM_L = 9,	 /**< SECAM-L TV band*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  749) 	HPI_TUNER_BAND_DAB = 10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  750) 	HPI_TUNER_BAND_LAST = 10 /**< the index of the last tuner band. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  751) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  752) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  753) /** Tuner mode attributes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  754) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  755) Used by HPI_Tuner_SetMode(), HPI_Tuner_GetMode()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  756) \ingroup tuner
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  757) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  758) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  759) enum HPI_TUNER_MODES {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  760) 	HPI_TUNER_MODE_RSS = 1,	/**< control  RSS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  761) 	HPI_TUNER_MODE_RDS = 2	/**< control  RBDS/RDS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  762) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  763) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  764) /** Tuner mode attribute values
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  765) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  766) Used by HPI_Tuner_SetMode(), HPI_Tuner_GetMode()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  767) \ingroup tuner
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  768) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  769) enum HPI_TUNER_MODE_VALUES {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  770) /* RSS attribute values */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  771) 	HPI_TUNER_MODE_RSS_DISABLE = 0,	/**< RSS disable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  772) 	HPI_TUNER_MODE_RSS_ENABLE = 1,	/**< RSS enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  773) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  774) /* RDS mode attributes */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  775) 	HPI_TUNER_MODE_RDS_DISABLE = 0,	/**< RDS - disabled */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  776) 	HPI_TUNER_MODE_RDS_RDS = 1,  /**< RDS - RDS mode */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  777) 	HPI_TUNER_MODE_RDS_RBDS = 2 /**<  RDS - RBDS mode */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  778) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  779) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  780) /** Tuner Status Bits
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  781) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  782) These bitfield values are returned by a call to HPI_Tuner_GetStatus().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  783) Multiple fields are returned from a single call.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  784) \ingroup tuner
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  785) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  786) enum HPI_TUNER_STATUS_BITS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  787) 	HPI_TUNER_VIDEO_COLOR_PRESENT = 0x0001,	/**< video color is present. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  788) 	HPI_TUNER_VIDEO_IS_60HZ = 0x0020, /**< 60 hz video detected. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  789) 	HPI_TUNER_VIDEO_HORZ_SYNC_MISSING = 0x0040, /**< video HSYNC is missing. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  790) 	HPI_TUNER_VIDEO_STATUS_VALID = 0x0100, /**< video status is valid. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  791) 	HPI_TUNER_DIGITAL = 0x0200, /**< tuner reports digital programming. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  792) 	HPI_TUNER_MULTIPROGRAM = 0x0400, /**< tuner reports multiple programs. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  793) 	HPI_TUNER_PLL_LOCKED = 0x1000, /**< the tuner's PLL is locked. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  794) 	HPI_TUNER_FM_STEREO = 0x2000 /**< tuner reports back FM stereo. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  795) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  796) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  797) /** Channel Modes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  798) Used for HPI_ChannelModeSet/Get()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  799) \ingroup channelmode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  800) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  801) enum HPI_CHANNEL_MODES {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  802) /** Left channel out = left channel in, Right channel out = right channel in. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  803) 	HPI_CHANNEL_MODE_NORMAL = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  804) /** Left channel out = right channel in, Right channel out = left channel in. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  805) 	HPI_CHANNEL_MODE_SWAP = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  806) /** Left channel out = left channel in, Right channel out = left channel in. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  807) 	HPI_CHANNEL_MODE_LEFT_TO_STEREO = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  808) /** Left channel out = right channel in, Right channel out = right channel in.*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  809) 	HPI_CHANNEL_MODE_RIGHT_TO_STEREO = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  810) /** Left channel out = (left channel in + right channel in)/2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  811)     Right channel out = mute. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  812) 	HPI_CHANNEL_MODE_STEREO_TO_LEFT = 5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  813) /** Left channel out = mute,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  814)     Right channel out = (right channel in + left channel in)/2. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  815) 	HPI_CHANNEL_MODE_STEREO_TO_RIGHT = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  816) 	HPI_CHANNEL_MODE_LAST = 6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  817) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  818) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  819) /** SampleClock source values
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  820) \ingroup sampleclock
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  821) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  822) enum HPI_SAMPLECLOCK_SOURCES {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  823) /** The sampleclock output is derived from its local samplerate generator.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  824)     The local samplerate may be set using HPI_SampleClock_SetLocalRate(). */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  825) 	HPI_SAMPLECLOCK_SOURCE_LOCAL = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  826) /** The adapter is clocked from a dedicated AES/EBU SampleClock input.*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  827) 	HPI_SAMPLECLOCK_SOURCE_AESEBU_SYNC = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  828) /** From external wordclock connector */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  829) 	HPI_SAMPLECLOCK_SOURCE_WORD = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  830) /** Board-to-board header */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  831) 	HPI_SAMPLECLOCK_SOURCE_WORD_HEADER = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  832) /** FUTURE - SMPTE clock. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  833) 	HPI_SAMPLECLOCK_SOURCE_SMPTE = 5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  834) /** One of the aesebu inputs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  835) 	HPI_SAMPLECLOCK_SOURCE_AESEBU_INPUT = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  836) /** From a network interface e.g. Cobranet or Livewire at either 48 or 96kHz */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  837) 	HPI_SAMPLECLOCK_SOURCE_NETWORK = 8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  838) /** From previous adjacent module (ASI2416 only)*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  839) 	HPI_SAMPLECLOCK_SOURCE_PREV_MODULE = 10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  840) /** Blu link sample clock*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  841) 	HPI_SAMPLECLOCK_SOURCE_BLULINK = 11,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  842) /*! Update this if you add a new clock source.*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  843) 	HPI_SAMPLECLOCK_SOURCE_LAST = 11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  844) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  845) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  846) /** Equalizer filter types. Used by HPI_ParametricEq_SetBand()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  847) \ingroup parmeq
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  848) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  849) enum HPI_FILTER_TYPE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  850) 	HPI_FILTER_TYPE_BYPASS = 0,	/**< filter is turned off */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  851) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  852) 	HPI_FILTER_TYPE_LOWSHELF = 1,	/**< EQ low shelf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  853) 	HPI_FILTER_TYPE_HIGHSHELF = 2,	/**< EQ high shelf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  854) 	HPI_FILTER_TYPE_EQ_BAND = 3,	/**< EQ gain */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  855) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  856) 	HPI_FILTER_TYPE_LOWPASS = 4,	/**< standard low pass */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  857) 	HPI_FILTER_TYPE_HIGHPASS = 5,	/**< standard high pass */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  858) 	HPI_FILTER_TYPE_BANDPASS = 6,	/**< standard band pass */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  859) 	HPI_FILTER_TYPE_BANDSTOP = 7	/**< standard band stop/notch */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  860) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  861) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  862) /** Async Event sources
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  863) \ingroup async
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  864) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  865) enum ASYNC_EVENT_SOURCES {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  866) 	HPI_ASYNC_EVENT_GPIO = 1,	/**< GPIO event. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  867) 	HPI_ASYNC_EVENT_SILENCE = 2,	/**< silence event detected. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  868) 	HPI_ASYNC_EVENT_TONE = 3	/**< tone event detected. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  869) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  870) /*******************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  871) /** HPI Error codes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  872) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  873) Almost all HPI functions return an error code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  874) A return value of zero means there was no error.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  875) Otherwise one of these error codes is returned.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  876) Error codes can be converted to a descriptive string using HPI_GetErrorText()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  877) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  878) \note When a new error code is added HPI_GetErrorText() MUST be updated.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  879) \note Codes 1-100 are reserved for driver use
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  880) \ingroup utility
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  881) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  882) enum HPI_ERROR_CODES {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  883) 	/** Message type does not exist. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  884) 	HPI_ERROR_INVALID_TYPE = 100,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  885) 	/** Object type does not exist. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  886) 	HPI_ERROR_INVALID_OBJ = 101,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  887) 	/** Function does not exist. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  888) 	HPI_ERROR_INVALID_FUNC = 102,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  889) 	/** The specified object does not exist. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  890) 	HPI_ERROR_INVALID_OBJ_INDEX = 103,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  891) 	/** Trying to access an object that has not been opened yet. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  892) 	HPI_ERROR_OBJ_NOT_OPEN = 104,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  893) 	/** Trying to open an already open object. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  894) 	HPI_ERROR_OBJ_ALREADY_OPEN = 105,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  895) 	/** PCI, ISA resource not valid. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  896) 	HPI_ERROR_INVALID_RESOURCE = 106,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  897) 	/* HPI_ERROR_SUBSYSFINDADAPTERS_GETINFO= 107 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  898) 	/** Default response was never updated with actual error code. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  899) 	HPI_ERROR_INVALID_RESPONSE = 108,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  900) 	/** wSize field of response was not updated,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  901) 	indicating that the message was not processed. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  902) 	HPI_ERROR_PROCESSING_MESSAGE = 109,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  903) 	/** The network did not respond in a timely manner. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  904) 	HPI_ERROR_NETWORK_TIMEOUT = 110,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  905) 	/* An HPI handle is invalid (uninitialised?). */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  906) 	HPI_ERROR_INVALID_HANDLE = 111,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  907) 	/** A function or attribute has not been implemented yet. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  908) 	HPI_ERROR_UNIMPLEMENTED = 112,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  909) 	/** There are too many clients attempting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  910) 	    to access a network resource. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  911) 	HPI_ERROR_NETWORK_TOO_MANY_CLIENTS = 113,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  912) 	/** Response buffer passed to HPI_Message
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  913) 	    was smaller than returned response.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  914) 	    wSpecificError field of hpi response contains the required size.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  915) 	*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  916) 	HPI_ERROR_RESPONSE_BUFFER_TOO_SMALL = 114,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  917) 	/** The returned response did not match the sent message */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  918) 	HPI_ERROR_RESPONSE_MISMATCH = 115,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  919) 	/** A control setting that should have been cached was not. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  920) 	HPI_ERROR_CONTROL_CACHING = 116,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  921) 	/** A message buffer in the path to the adapter was smaller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  922) 	    than the message size.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  923) 	    wSpecificError field of hpi response contains the actual size.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  924) 	*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  925) 	HPI_ERROR_MESSAGE_BUFFER_TOO_SMALL = 117,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  926) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  927) 	/* HPI_ERROR_TOO_MANY_ADAPTERS= 200 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  928) 	/** Bad adpater. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  929) 	HPI_ERROR_BAD_ADAPTER = 201,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  930) 	/** Adapter number out of range or not set properly. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  931) 	HPI_ERROR_BAD_ADAPTER_NUMBER = 202,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  932) 	/** 2 adapters with the same adapter number. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  933) 	HPI_ERROR_DUPLICATE_ADAPTER_NUMBER = 203,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  934) 	/** DSP code failed to bootload. Usually a DSP memory test failure. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  935) 	HPI_ERROR_DSP_BOOTLOAD = 204,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  936) 	/** Couldn't find or open the DSP code file. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  937) 	HPI_ERROR_DSP_FILE_NOT_FOUND = 206,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  938) 	/** Internal DSP hardware error. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  939) 	HPI_ERROR_DSP_HARDWARE = 207,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  940) 	/** Could not allocate memory */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  941) 	HPI_ERROR_MEMORY_ALLOC = 208,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  942) 	/** Failed to correctly load/config PLD. (unused) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  943) 	HPI_ERROR_PLD_LOAD = 209,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  944) 	/** Unexpected end of file, block length too big etc. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  945) 	HPI_ERROR_DSP_FILE_FORMAT = 210,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  946) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  947) 	/** Found but could not open DSP code file. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  948) 	HPI_ERROR_DSP_FILE_ACCESS_DENIED = 211,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  949) 	/** First DSP code section header not found in DSP file. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  950) 	HPI_ERROR_DSP_FILE_NO_HEADER = 212,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  951) 	/* HPI_ERROR_DSP_FILE_READ_ERROR= 213, */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  952) 	/** DSP code for adapter family not found. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  953) 	HPI_ERROR_DSP_SECTION_NOT_FOUND = 214,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  954) 	/** Other OS specific error opening DSP file. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  955) 	HPI_ERROR_DSP_FILE_OTHER_ERROR = 215,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  956) 	/** Sharing violation opening DSP code file. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  957) 	HPI_ERROR_DSP_FILE_SHARING_VIOLATION = 216,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  958) 	/** DSP code section header had size == 0. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  959) 	HPI_ERROR_DSP_FILE_NULL_HEADER = 217,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  960) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  961) 	/* HPI_ERROR_FLASH = 220, */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  962) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  963) 	/** Flash has bad checksum */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  964) 	HPI_ERROR_BAD_CHECKSUM = 221,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  965) 	HPI_ERROR_BAD_SEQUENCE = 222,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  966) 	HPI_ERROR_FLASH_ERASE = 223,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  967) 	HPI_ERROR_FLASH_PROGRAM = 224,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  968) 	HPI_ERROR_FLASH_VERIFY = 225,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  969) 	HPI_ERROR_FLASH_TYPE = 226,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  970) 	HPI_ERROR_FLASH_START = 227,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  971) 	HPI_ERROR_FLASH_READ = 228,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  972) 	HPI_ERROR_FLASH_READ_NO_FILE = 229,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  973) 	HPI_ERROR_FLASH_SIZE = 230,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  974) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  975) 	/** Reserved for OEMs. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  976) 	HPI_ERROR_RESERVED_1 = 290,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  977) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  978) 	/* HPI_ERROR_INVALID_STREAM = 300 use HPI_ERROR_INVALID_OBJ_INDEX */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  979) 	/** Invalid compression format. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  980) 	HPI_ERROR_INVALID_FORMAT = 301,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  981) 	/** Invalid format samplerate */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  982) 	HPI_ERROR_INVALID_SAMPLERATE = 302,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  983) 	/** Invalid format number of channels. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  984) 	HPI_ERROR_INVALID_CHANNELS = 303,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  985) 	/** Invalid format bitrate. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  986) 	HPI_ERROR_INVALID_BITRATE = 304,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  987) 	/** Invalid datasize used for stream read/write. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  988) 	HPI_ERROR_INVALID_DATASIZE = 305,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  989) 	/* HPI_ERROR_BUFFER_FULL = 306 use HPI_ERROR_INVALID_DATASIZE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  990) 	/* HPI_ERROR_BUFFER_EMPTY = 307 use HPI_ERROR_INVALID_DATASIZE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  991) 	/** Null data pointer used for stream read/write. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  992) 	HPI_ERROR_INVALID_DATA_POINTER = 308,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  993) 	/** Packet ordering error for stream read/write. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  994) 	HPI_ERROR_INVALID_PACKET_ORDER = 309,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  995) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  996) 	/** Object can't do requested operation in its current
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  997) 	    state, eg set format, change rec mux state while recording.*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  998) 	HPI_ERROR_INVALID_OPERATION = 310,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  999) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000) 	/** Where a SRG is shared amongst streams, an incompatible samplerate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) 	    is one that is different to any currently active stream. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002) 	HPI_ERROR_INCOMPATIBLE_SAMPLERATE = 311,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003) 	/** Adapter mode is illegal.*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004) 	HPI_ERROR_BAD_ADAPTER_MODE = 312,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) 	/** There have been too many attempts to set the adapter's
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) 	capabilities (using bad keys), the card should be returned
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) 	to ASI if further capabilities updates are required */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009) 	HPI_ERROR_TOO_MANY_CAPABILITY_CHANGE_ATTEMPTS = 313,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) 	/** Streams on different adapters cannot be grouped. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011) 	HPI_ERROR_NO_INTERADAPTER_GROUPS = 314,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) 	/** Streams on different DSPs cannot be grouped. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013) 	HPI_ERROR_NO_INTERDSP_GROUPS = 315,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) 	/** Stream wait cancelled before threshold reached. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015) 	HPI_ERROR_WAIT_CANCELLED = 316,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016) 	/** A character string is invalid. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017) 	HPI_ERROR_INVALID_STRING = 317,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019) 	/** Invalid mixer node for this adapter. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020) 	HPI_ERROR_INVALID_NODE = 400,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021) 	/** Invalid control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022) 	HPI_ERROR_INVALID_CONTROL = 401,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) 	/** Invalid control value was passed. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024) 	HPI_ERROR_INVALID_CONTROL_VALUE = 402,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025) 	/** Control attribute not supported by this control. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) 	HPI_ERROR_INVALID_CONTROL_ATTRIBUTE = 403,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) 	/** Control is disabled. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028) 	HPI_ERROR_CONTROL_DISABLED = 404,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029) 	/** I2C transaction failed due to a missing ACK. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030) 	HPI_ERROR_CONTROL_I2C_MISSING_ACK = 405,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031) 	HPI_ERROR_I2C_MISSING_ACK = 405,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032) 	/** Control is busy, or coming out of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) 	reset and cannot be accessed at this time. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034) 	HPI_ERROR_CONTROL_NOT_READY = 407,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036) 	/** Non volatile memory */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037) 	HPI_ERROR_NVMEM_BUSY = 450,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038) 	HPI_ERROR_NVMEM_FULL = 451,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039) 	HPI_ERROR_NVMEM_FAIL = 452,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041) 	/** I2C */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042) 	HPI_ERROR_I2C_BAD_ADR = 460,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044) 	/** Entity type did not match requested type */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045) 	HPI_ERROR_ENTITY_TYPE_MISMATCH = 470,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046) 	/** Entity item count did not match requested count */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047) 	HPI_ERROR_ENTITY_ITEM_COUNT = 471,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048) 	/** Entity type is not one of the valid types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049) 	HPI_ERROR_ENTITY_TYPE_INVALID = 472,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050) 	/** Entity role is not one of the valid roles */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051) 	HPI_ERROR_ENTITY_ROLE_INVALID = 473,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052) 	/** Entity size doesn't match target size */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053) 	HPI_ERROR_ENTITY_SIZE_MISMATCH = 474,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055) 	/* AES18 specific errors were 500..507 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057) 	/** custom error to use for debugging */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058) 	HPI_ERROR_CUSTOM = 600,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060) 	/** hpioct32.c can't obtain mutex */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061) 	HPI_ERROR_MUTEX_TIMEOUT = 700,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063) 	/** Backend errors used to be greater than this.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064) 	    \deprecated Now, all backends return only errors defined here in hpi.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065) 	*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066) 	HPI_ERROR_BACKEND_BASE = 900,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068) 	/** Communication with DSP failed */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069) 	HPI_ERROR_DSP_COMMUNICATION = 900
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070) 		/* Note that the dsp communication error is set to this value so that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071) 		   it remains compatible with any software that expects such errors
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072) 		   to be backend errors i.e. >= 900.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073) 		   Do not define any new error codes with values > 900.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074) 		 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077) /** \defgroup maximums HPI maximum values
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078) \{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080) /** Maximum number of PCI HPI adapters */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081) #define HPI_MAX_ADAPTERS                20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082) /** Maximum number of in or out streams per adapter */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083) #define HPI_MAX_STREAMS                 16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084) #define HPI_MAX_CHANNELS                2	/* per stream */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085) #define HPI_MAX_NODES                   8	/* per mixer ? */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086) #define HPI_MAX_CONTROLS                4	/* per node ? */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087) /** maximum number of ancillary bytes per MPEG frame */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088) #define HPI_MAX_ANC_BYTES_PER_FRAME     (64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089) #define HPI_STRING_LEN                  16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091) /** Networked adapters have index >= 100 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092) #define HPI_MIN_NETWORK_ADAPTER_IDX 100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094) /** Velocity units */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095) #define HPI_OSTREAM_VELOCITY_UNITS      4096
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) /** OutStream timescale units */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097) #define HPI_OSTREAM_TIMESCALE_UNITS     10000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098) /** OutStream timescale passthrough - turns timescaling on in passthough mode */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099) #define HPI_OSTREAM_TIMESCALE_PASSTHROUGH       99999
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) /**\}*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103) /**************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104) /* STRUCTURES */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105) #ifndef DISABLE_PRAGMA_PACK1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106) #pragma pack(push, 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109) /** Structure containing sample format information.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110)     See also HPI_FormatCreate().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111)   */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112) struct hpi_format {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113) 	u32 sample_rate;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114) 				/**< 11025, 32000, 44100 ... */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) 	u32 bit_rate;		  /**< for MPEG */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116) 	u32 attributes;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117) 				/**< Stereo/JointStereo/Mono */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118) 	u16 mode_legacy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119) 				/**< Legacy ancillary mode or idle bit  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120) 	u16 unused;		  /**< Unused */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) 	u16 channels;	  /**< 1,2..., (or ancillary mode or idle bit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122) 	u16 format;	  /**< HPI_FORMAT_PCM16, _MPEG etc. see #HPI_FORMATS. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125) struct hpi_anc_frame {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126) 	u32 valid_bits_in_this_frame;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127) 	u8 b_data[HPI_MAX_ANC_BYTES_PER_FRAME];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130) /** An object for containing a single async event.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132) struct hpi_async_event {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133) 	u16 event_type;	/**< type of event. \sa async_event  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134) 	u16 sequence; /**< Sequence number, allows lost event detection */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135) 	u32 state; /**< New state */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136) 	u32 h_object; /**< handle to the object returning the event. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137) 	union {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138) 		struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139) 			u16 index; /**< GPIO bit index. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140) 		} gpio;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141) 		struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142) 			u16 node_index;	/**< what node is the control on ? */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143) 			u16 node_type; /**< what type of node is the control on ? */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144) 		} control;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145) 	} u;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148) #ifndef DISABLE_PRAGMA_PACK1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149) #pragma pack(pop)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152) /*****************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153) /* HPI FUNCTIONS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154) /*****************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156) /* Stream */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157) u16 hpi_stream_estimate_buffer_size(struct hpi_format *pF,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158) 	u32 host_polling_rate_in_milli_seconds, u32 *recommended_buffer_size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160) /*************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161) /* SubSystem */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162) /*************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164) u16 hpi_subsys_get_version_ex(u32 *pversion_ex);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166) u16 hpi_subsys_get_num_adapters(int *pn_num_adapters);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168) u16 hpi_subsys_get_adapter(int iterator, u32 *padapter_index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169) 	u16 *pw_adapter_type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171) /***********/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172) /* Adapter */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173) /***********/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175) u16 hpi_adapter_open(u16 adapter_index);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177) u16 hpi_adapter_close(u16 adapter_index);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179) u16 hpi_adapter_get_info(u16 adapter_index, u16 *pw_num_outstreams,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180) 	u16 *pw_num_instreams, u16 *pw_version, u32 *pserial_number,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181) 	u16 *pw_adapter_type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183) u16 hpi_adapter_get_module_by_index(u16 adapter_index, u16 module_index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184) 	u16 *pw_num_outputs, u16 *pw_num_inputs, u16 *pw_version,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185) 	u32 *pserial_number, u16 *pw_module_type, u32 *ph_module);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187) u16 hpi_adapter_set_mode(u16 adapter_index, u32 adapter_mode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189) u16 hpi_adapter_set_mode_ex(u16 adapter_index, u32 adapter_mode,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190) 	u16 query_or_set);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192) u16 hpi_adapter_get_mode(u16 adapter_index, u32 *padapter_mode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) u16 hpi_adapter_get_assert2(u16 adapter_index, u16 *p_assert_count,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195) 	char *psz_assert, u32 *p_param1, u32 *p_param2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196) 	u32 *p_dsp_string_addr, u16 *p_processor_id);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) u16 hpi_adapter_test_assert(u16 adapter_index, u16 assert_id);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200) u16 hpi_adapter_enable_capability(u16 adapter_index, u16 capability, u32 key);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1201) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1202) u16 hpi_adapter_self_test(u16 adapter_index);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1203) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1204) u16 hpi_adapter_debug_read(u16 adapter_index, u32 dsp_address, char *p_bytes,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1205) 	int *count_bytes);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1206) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1207) u16 hpi_adapter_set_property(u16 adapter_index, u16 property, u16 paramter1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1208) 	u16 paramter2);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1209) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1210) u16 hpi_adapter_get_property(u16 adapter_index, u16 property,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1211) 	u16 *pw_paramter1, u16 *pw_paramter2);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1212) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1213) u16 hpi_adapter_enumerate_property(u16 adapter_index, u16 index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1214) 	u16 what_to_enumerate, u16 property_index, u32 *psetting);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1215) /*************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1216) /* OutStream */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1217) /*************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1218) u16 hpi_outstream_open(u16 adapter_index, u16 outstream_index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1219) 	u32 *ph_outstream);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1220) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1221) u16 hpi_outstream_close(u32 h_outstream);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1222) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1223) u16 hpi_outstream_get_info_ex(u32 h_outstream, u16 *pw_state,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1224) 	u32 *pbuffer_size, u32 *pdata_to_play, u32 *psamples_played,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1225) 	u32 *pauxiliary_data_to_play);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1226) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1227) u16 hpi_outstream_write_buf(u32 h_outstream, const u8 *pb_write_buf,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1228) 	u32 bytes_to_write, const struct hpi_format *p_format);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1229) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1230) u16 hpi_outstream_start(u32 h_outstream);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1231) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1232) u16 hpi_outstream_wait_start(u32 h_outstream);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1233) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1234) u16 hpi_outstream_stop(u32 h_outstream);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1235) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1236) u16 hpi_outstream_sinegen(u32 h_outstream);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1237) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1238) u16 hpi_outstream_reset(u32 h_outstream);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1239) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1240) u16 hpi_outstream_query_format(u32 h_outstream, struct hpi_format *p_format);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1241) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1242) u16 hpi_outstream_set_format(u32 h_outstream, struct hpi_format *p_format);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1243) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1244) u16 hpi_outstream_set_punch_in_out(u32 h_outstream, u32 punch_in_sample,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1245) 	u32 punch_out_sample);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1246) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1247) u16 hpi_outstream_set_velocity(u32 h_outstream, short velocity);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1248) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1249) u16 hpi_outstream_ancillary_reset(u32 h_outstream, u16 mode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1250) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1251) u16 hpi_outstream_ancillary_get_info(u32 h_outstream, u32 *pframes_available);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1252) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1253) u16 hpi_outstream_ancillary_read(u32 h_outstream,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1254) 	struct hpi_anc_frame *p_anc_frame_buffer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1255) 	u32 anc_frame_buffer_size_in_bytes,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1256) 	u32 number_of_ancillary_frames_to_read);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1257) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1258) u16 hpi_outstream_set_time_scale(u32 h_outstream, u32 time_scaleX10000);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1259) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1260) u16 hpi_outstream_host_buffer_allocate(u32 h_outstream, u32 size_in_bytes);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1261) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1262) u16 hpi_outstream_host_buffer_free(u32 h_outstream);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1263) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1264) u16 hpi_outstream_group_add(u32 h_outstream, u32 h_stream);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1265) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1266) u16 hpi_outstream_group_get_map(u32 h_outstream, u32 *poutstream_map,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1267) 	u32 *pinstream_map);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1268) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1269) u16 hpi_outstream_group_reset(u32 h_outstream);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1270) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1271) /************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1272) /* InStream */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1273) /************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1274) u16 hpi_instream_open(u16 adapter_index, u16 instream_index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1275) 	u32 *ph_instream);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1276) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1277) u16 hpi_instream_close(u32 h_instream);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1278) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1279) u16 hpi_instream_query_format(u32 h_instream,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1280) 	const struct hpi_format *p_format);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1281) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1282) u16 hpi_instream_set_format(u32 h_instream,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1283) 	const struct hpi_format *p_format);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1284) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1285) u16 hpi_instream_read_buf(u32 h_instream, u8 *pb_read_buf, u32 bytes_to_read);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1286) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1287) u16 hpi_instream_start(u32 h_instream);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1288) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1289) u16 hpi_instream_wait_start(u32 h_instream);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1290) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1291) u16 hpi_instream_stop(u32 h_instream);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1292) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1293) u16 hpi_instream_reset(u32 h_instream);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1294) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1295) u16 hpi_instream_get_info_ex(u32 h_instream, u16 *pw_state, u32 *pbuffer_size,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1296) 	u32 *pdata_recorded, u32 *psamples_recorded,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1297) 	u32 *pauxiliary_data_recorded);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1298) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1299) u16 hpi_instream_ancillary_reset(u32 h_instream, u16 bytes_per_frame,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1300) 	u16 mode, u16 alignment, u16 idle_bit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1301) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1302) u16 hpi_instream_ancillary_get_info(u32 h_instream, u32 *pframe_space);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1303) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1304) u16 hpi_instream_ancillary_write(u32 h_instream,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1305) 	const struct hpi_anc_frame *p_anc_frame_buffer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1306) 	u32 anc_frame_buffer_size_in_bytes,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1307) 	u32 number_of_ancillary_frames_to_write);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1308) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1309) u16 hpi_instream_host_buffer_allocate(u32 h_instream, u32 size_in_bytes);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1310) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1311) u16 hpi_instream_host_buffer_free(u32 h_instream);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1312) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1313) u16 hpi_instream_group_add(u32 h_instream, u32 h_stream);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1314) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1315) u16 hpi_instream_group_get_map(u32 h_instream, u32 *poutstream_map,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1316) 	u32 *pinstream_map);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1317) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1318) u16 hpi_instream_group_reset(u32 h_instream);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1319) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1320) /*********/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1321) /* Mixer */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1322) /*********/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1323) u16 hpi_mixer_open(u16 adapter_index, u32 *ph_mixer);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1324) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1325) u16 hpi_mixer_close(u32 h_mixer);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1326) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1327) u16 hpi_mixer_get_control(u32 h_mixer, u16 src_node_type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1328) 	u16 src_node_type_index, u16 dst_node_type, u16 dst_node_type_index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1329) 	u16 control_type, u32 *ph_control);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1330) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1331) u16 hpi_mixer_get_control_by_index(u32 h_mixer, u16 control_index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1332) 	u16 *pw_src_node_type, u16 *pw_src_node_index, u16 *pw_dst_node_type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1333) 	u16 *pw_dst_node_index, u16 *pw_control_type, u32 *ph_control);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1334) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1335) u16 hpi_mixer_store(u32 h_mixer, enum HPI_MIXER_STORE_COMMAND command,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1336) 	u16 index);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1337) /************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1338) /* Controls */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1339) /************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1340) /******************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1341) /* Volume control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1342) /******************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1343) u16 hpi_volume_set_gain(u32 h_control, short an_gain0_01dB[HPI_MAX_CHANNELS]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1344) 	);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1345) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1346) u16 hpi_volume_get_gain(u32 h_control,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1347) 	short an_gain0_01dB_out[HPI_MAX_CHANNELS]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1348) 	);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1349) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1350) u16 hpi_volume_set_mute(u32 h_control, u32 mute);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1351) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1352) u16 hpi_volume_get_mute(u32 h_control, u32 *mute);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1353) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1354) #define hpi_volume_get_range hpi_volume_query_range
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1355) u16 hpi_volume_query_range(u32 h_control, short *min_gain_01dB,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1356) 	short *max_gain_01dB, short *step_gain_01dB);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1357) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1358) u16 hpi_volume_query_channels(const u32 h_control, u32 *p_channels);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1359) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1360) u16 hpi_volume_auto_fade(u32 h_control,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1361) 	short an_stop_gain0_01dB[HPI_MAX_CHANNELS], u32 duration_ms);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1362) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1363) u16 hpi_volume_auto_fade_profile(u32 h_control,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1364) 	short an_stop_gain0_01dB[HPI_MAX_CHANNELS], u32 duration_ms,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1365) 	u16 profile);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1366) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1367) u16 hpi_volume_query_auto_fade_profile(const u32 h_control, const u32 i,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1368) 	u16 *profile);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1369) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1370) /*****************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1371) /* Level control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1372) /*****************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1373) u16 hpi_level_query_range(u32 h_control, short *min_gain_01dB,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1374) 	short *max_gain_01dB, short *step_gain_01dB);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1375) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1376) u16 hpi_level_set_gain(u32 h_control, short an_gain0_01dB[HPI_MAX_CHANNELS]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1377) 	);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1378) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1379) u16 hpi_level_get_gain(u32 h_control,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1380) 	short an_gain0_01dB_out[HPI_MAX_CHANNELS]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1381) 	);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1382) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1383) /*****************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1384) /* Meter control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1385) /*****************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1386) u16 hpi_meter_query_channels(const u32 h_meter, u32 *p_channels);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1387) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1388) u16 hpi_meter_get_peak(u32 h_control,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1389) 	short an_peak0_01dB_out[HPI_MAX_CHANNELS]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1390) 	);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1391) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1392) u16 hpi_meter_get_rms(u32 h_control, short an_peak0_01dB_out[HPI_MAX_CHANNELS]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1393) 	);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1394) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1395) u16 hpi_meter_set_peak_ballistics(u32 h_control, u16 attack, u16 decay);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1396) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1397) u16 hpi_meter_set_rms_ballistics(u32 h_control, u16 attack, u16 decay);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1398) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1399) u16 hpi_meter_get_peak_ballistics(u32 h_control, u16 *attack, u16 *decay);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1400) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1401) u16 hpi_meter_get_rms_ballistics(u32 h_control, u16 *attack, u16 *decay);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1402) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1403) /************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1404) /* ChannelMode control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1405) /************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1406) u16 hpi_channel_mode_query_mode(const u32 h_mode, const u32 index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1407) 	u16 *pw_mode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1408) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1409) u16 hpi_channel_mode_set(u32 h_control, u16 mode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1410) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1411) u16 hpi_channel_mode_get(u32 h_control, u16 *mode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1412) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1413) /*****************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1414) /* Tuner control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1415) /*****************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1416) u16 hpi_tuner_query_band(const u32 h_tuner, const u32 index, u16 *pw_band);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1417) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1418) u16 hpi_tuner_set_band(u32 h_control, u16 band);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1419) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1420) u16 hpi_tuner_get_band(u32 h_control, u16 *pw_band);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1421) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1422) u16 hpi_tuner_query_frequency(const u32 h_tuner, const u32 index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1423) 	const u16 band, u32 *pfreq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1424) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1425) u16 hpi_tuner_set_frequency(u32 h_control, u32 freq_ink_hz);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1426) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1427) u16 hpi_tuner_get_frequency(u32 h_control, u32 *pw_freq_ink_hz);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1428) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1429) u16 hpi_tuner_get_rf_level(u32 h_control, short *pw_level);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1430) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1431) u16 hpi_tuner_get_raw_rf_level(u32 h_control, short *pw_level);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1432) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1433) u16 hpi_tuner_query_gain(const u32 h_tuner, const u32 index, u16 *pw_gain);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1434) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1435) u16 hpi_tuner_set_gain(u32 h_control, short gain);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1436) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1437) u16 hpi_tuner_get_gain(u32 h_control, short *pn_gain);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1438) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1439) u16 hpi_tuner_get_status(u32 h_control, u16 *pw_status_mask, u16 *pw_status);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1440) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1441) u16 hpi_tuner_set_mode(u32 h_control, u32 mode, u32 value);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1442) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1443) u16 hpi_tuner_get_mode(u32 h_control, u32 mode, u32 *pn_value);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1444) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1445) u16 hpi_tuner_get_rds(u32 h_control, char *p_rds_data);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1446) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1447) u16 hpi_tuner_query_deemphasis(const u32 h_tuner, const u32 index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1448) 	const u16 band, u32 *pdeemphasis);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1449) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1450) u16 hpi_tuner_set_deemphasis(u32 h_control, u32 deemphasis);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1451) u16 hpi_tuner_get_deemphasis(u32 h_control, u32 *pdeemphasis);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1452) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1453) u16 hpi_tuner_query_program(const u32 h_tuner, u32 *pbitmap_program);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1454) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1455) u16 hpi_tuner_set_program(u32 h_control, u32 program);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1456) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1457) u16 hpi_tuner_get_program(u32 h_control, u32 *pprogram);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1458) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1459) u16 hpi_tuner_get_hd_radio_dsp_version(u32 h_control, char *psz_dsp_version,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1460) 	const u32 string_size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1461) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1462) u16 hpi_tuner_get_hd_radio_sdk_version(u32 h_control, char *psz_sdk_version,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1463) 	const u32 string_size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1464) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1465) u16 hpi_tuner_get_hd_radio_signal_quality(u32 h_control, u32 *pquality);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1466) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1467) u16 hpi_tuner_get_hd_radio_signal_blend(u32 h_control, u32 *pblend);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1468) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1469) u16 hpi_tuner_set_hd_radio_signal_blend(u32 h_control, const u32 blend);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1470) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1471) /***************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1472) /* PAD control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1473) /***************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1474) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1475) u16 hpi_pad_get_channel_name(u32 h_control, char *psz_string,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1476) 	const u32 string_length);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1477) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1478) u16 hpi_pad_get_artist(u32 h_control, char *psz_string,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1479) 	const u32 string_length);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1480) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1481) u16 hpi_pad_get_title(u32 h_control, char *psz_string,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1482) 	const u32 string_length);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1483) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1484) u16 hpi_pad_get_comment(u32 h_control, char *psz_string,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1485) 	const u32 string_length);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1486) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1487) u16 hpi_pad_get_program_type(u32 h_control, u32 *ppTY);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1488) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1489) u16 hpi_pad_get_rdsPI(u32 h_control, u32 *ppI);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1490) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1491) u16 hpi_pad_get_program_type_string(u32 h_control, const u32 data_type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1492) 	const u32 pTY, char *psz_string, const u32 string_length);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1493) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1494) /****************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1495) /* AES/EBU Receiver control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1496) /****************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1497) u16 hpi_aesebu_receiver_query_format(const u32 h_aes_rx, const u32 index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1498) 	u16 *pw_format);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1499) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1500) u16 hpi_aesebu_receiver_set_format(u32 h_control, u16 source);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1501) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1502) u16 hpi_aesebu_receiver_get_format(u32 h_control, u16 *pw_source);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1503) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1504) u16 hpi_aesebu_receiver_get_sample_rate(u32 h_control, u32 *psample_rate);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1505) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1506) u16 hpi_aesebu_receiver_get_user_data(u32 h_control, u16 index, u16 *pw_data);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1507) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1508) u16 hpi_aesebu_receiver_get_channel_status(u32 h_control, u16 index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1509) 	u16 *pw_data);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1510) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1511) u16 hpi_aesebu_receiver_get_error_status(u32 h_control, u16 *pw_error_data);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1512) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1513) /*******************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1514) /* AES/EBU Transmitter control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1515) /*******************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1516) u16 hpi_aesebu_transmitter_set_sample_rate(u32 h_control, u32 sample_rate);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1517) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1518) u16 hpi_aesebu_transmitter_set_user_data(u32 h_control, u16 index, u16 data);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1519) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1520) u16 hpi_aesebu_transmitter_set_channel_status(u32 h_control, u16 index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1521) 	u16 data);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1522) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1523) u16 hpi_aesebu_transmitter_get_channel_status(u32 h_control, u16 index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1524) 	u16 *pw_data);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1525) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1526) u16 hpi_aesebu_transmitter_query_format(const u32 h_aes_tx, const u32 index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1527) 	u16 *pw_format);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1528) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1529) u16 hpi_aesebu_transmitter_set_format(u32 h_control, u16 output_format);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1530) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1531) u16 hpi_aesebu_transmitter_get_format(u32 h_control, u16 *pw_output_format);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1532) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1533) /***********************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1534) /* Multiplexer control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1535) /***********************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1536) u16 hpi_multiplexer_set_source(u32 h_control, u16 source_node_type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1537) 	u16 source_node_index);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1538) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1539) u16 hpi_multiplexer_get_source(u32 h_control, u16 *source_node_type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1540) 	u16 *source_node_index);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1541) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1542) u16 hpi_multiplexer_query_source(u32 h_control, u16 index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1543) 	u16 *source_node_type, u16 *source_node_index);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1544) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1545) /***************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1546) /* Vox control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1547) /***************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1548) u16 hpi_vox_set_threshold(u32 h_control, short an_gain0_01dB);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1549) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1550) u16 hpi_vox_get_threshold(u32 h_control, short *an_gain0_01dB);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1551) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1552) /*********************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1553) /* Bitstream control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1554) /*********************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1555) u16 hpi_bitstream_set_clock_edge(u32 h_control, u16 edge_type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1556) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1557) u16 hpi_bitstream_set_data_polarity(u32 h_control, u16 polarity);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1558) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1559) u16 hpi_bitstream_get_activity(u32 h_control, u16 *pw_clk_activity,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1560) 	u16 *pw_data_activity);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1561) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1562) /***********************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1563) /* SampleClock control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1564) /***********************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1565) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1566) u16 hpi_sample_clock_query_source(const u32 h_clock, const u32 index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1567) 	u16 *pw_source);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1568) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1569) u16 hpi_sample_clock_set_source(u32 h_control, u16 source);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1570) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1571) u16 hpi_sample_clock_get_source(u32 h_control, u16 *pw_source);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1572) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1573) u16 hpi_sample_clock_query_source_index(const u32 h_clock, const u32 index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1574) 	const u32 source, u16 *pw_source_index);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1575) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1576) u16 hpi_sample_clock_set_source_index(u32 h_control, u16 source_index);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1577) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1578) u16 hpi_sample_clock_get_source_index(u32 h_control, u16 *pw_source_index);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1579) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1580) u16 hpi_sample_clock_get_sample_rate(u32 h_control, u32 *psample_rate);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1581) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1582) u16 hpi_sample_clock_query_local_rate(const u32 h_clock, const u32 index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1583) 	u32 *psource);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1584) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1585) u16 hpi_sample_clock_set_local_rate(u32 h_control, u32 sample_rate);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1586) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1587) u16 hpi_sample_clock_get_local_rate(u32 h_control, u32 *psample_rate);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1588) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1589) u16 hpi_sample_clock_set_auto(u32 h_control, u32 enable);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1590) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1591) u16 hpi_sample_clock_get_auto(u32 h_control, u32 *penable);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1592) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1593) u16 hpi_sample_clock_set_local_rate_lock(u32 h_control, u32 lock);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1594) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1595) u16 hpi_sample_clock_get_local_rate_lock(u32 h_control, u32 *plock);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1596) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1597) /***********************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1598) /* Microphone control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1599) /***********************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1600) u16 hpi_microphone_set_phantom_power(u32 h_control, u16 on_off);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1601) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1602) u16 hpi_microphone_get_phantom_power(u32 h_control, u16 *pw_on_off);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1603) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1604) /********************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1605) /* Parametric Equalizer control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1606) /********************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1607) u16 hpi_parametric_eq_get_info(u32 h_control, u16 *pw_number_of_bands,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1608) 	u16 *pw_enabled);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1609) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1610) u16 hpi_parametric_eq_set_state(u32 h_control, u16 on_off);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1611) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1612) u16 hpi_parametric_eq_set_band(u32 h_control, u16 index, u16 type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1613) 	u32 frequency_hz, short q100, short gain0_01dB);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1614) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1615) u16 hpi_parametric_eq_get_band(u32 h_control, u16 index, u16 *pn_type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1616) 	u32 *pfrequency_hz, short *pnQ100, short *pn_gain0_01dB);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1617) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1618) u16 hpi_parametric_eq_get_coeffs(u32 h_control, u16 index, short coeffs[5]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1619) 	);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1620) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1621) /*******************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1622) /* Compressor Expander control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1623) /*******************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1624) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1625) u16 hpi_compander_set_enable(u32 h_control, u32 on);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1626) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1627) u16 hpi_compander_get_enable(u32 h_control, u32 *pon);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1628) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1629) u16 hpi_compander_set_makeup_gain(u32 h_control, short makeup_gain0_01dB);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1630) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1631) u16 hpi_compander_get_makeup_gain(u32 h_control, short *pn_makeup_gain0_01dB);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1632) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1633) u16 hpi_compander_set_attack_time_constant(u32 h_control, u32 index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1634) 	u32 attack);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1635) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1636) u16 hpi_compander_get_attack_time_constant(u32 h_control, u32 index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1637) 	u32 *pw_attack);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1638) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1639) u16 hpi_compander_set_decay_time_constant(u32 h_control, u32 index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1640) 	u32 decay);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1641) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1642) u16 hpi_compander_get_decay_time_constant(u32 h_control, u32 index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1643) 	u32 *pw_decay);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1644) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1645) u16 hpi_compander_set_threshold(u32 h_control, u32 index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1646) 	short threshold0_01dB);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1647) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1648) u16 hpi_compander_get_threshold(u32 h_control, u32 index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1649) 	short *pn_threshold0_01dB);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1650) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1651) u16 hpi_compander_set_ratio(u32 h_control, u32 index, u32 ratio100);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1652) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1653) u16 hpi_compander_get_ratio(u32 h_control, u32 index, u32 *pw_ratio100);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1654) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1655) /********************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1656) /* Cobranet control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1657) /********************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1658) u16 hpi_cobranet_hmi_write(u32 h_control, u32 hmi_address, u32 byte_count,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1659) 	u8 *pb_data);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1660) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1661) u16 hpi_cobranet_hmi_read(u32 h_control, u32 hmi_address, u32 max_byte_count,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1662) 	u32 *pbyte_count, u8 *pb_data);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1663) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1664) u16 hpi_cobranet_hmi_get_status(u32 h_control, u32 *pstatus,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1665) 	u32 *preadable_size, u32 *pwriteable_size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1666) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1667) u16 hpi_cobranet_get_ip_address(u32 h_control, u32 *pdw_ip_address);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1668) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1669) u16 hpi_cobranet_set_ip_address(u32 h_control, u32 dw_ip_address);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1670) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1671) u16 hpi_cobranet_get_static_ip_address(u32 h_control, u32 *pdw_ip_address);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1672) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1673) u16 hpi_cobranet_set_static_ip_address(u32 h_control, u32 dw_ip_address);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1674) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1675) u16 hpi_cobranet_get_macaddress(u32 h_control, u32 *p_mac_msbs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1676) 	u32 *p_mac_lsbs);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1677) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1678) /*************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1679) /* Tone Detector control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1680) /*************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1681) u16 hpi_tone_detector_get_state(u32 hC, u32 *state);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1682) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1683) u16 hpi_tone_detector_set_enable(u32 hC, u32 enable);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1684) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1685) u16 hpi_tone_detector_get_enable(u32 hC, u32 *enable);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1686) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1687) u16 hpi_tone_detector_set_event_enable(u32 hC, u32 event_enable);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1688) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1689) u16 hpi_tone_detector_get_event_enable(u32 hC, u32 *event_enable);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1690) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1691) u16 hpi_tone_detector_set_threshold(u32 hC, int threshold);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1692) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1693) u16 hpi_tone_detector_get_threshold(u32 hC, int *threshold);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1694) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1695) u16 hpi_tone_detector_get_frequency(u32 hC, u32 index, u32 *frequency);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1696) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1697) /****************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1698) /* Silence Detector control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1699) /****************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1700) u16 hpi_silence_detector_get_state(u32 hC, u32 *state);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1701) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1702) u16 hpi_silence_detector_set_enable(u32 hC, u32 enable);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1703) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1704) u16 hpi_silence_detector_get_enable(u32 hC, u32 *enable);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1705) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1706) u16 hpi_silence_detector_set_event_enable(u32 hC, u32 event_enable);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1707) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1708) u16 hpi_silence_detector_get_event_enable(u32 hC, u32 *event_enable);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1709) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1710) u16 hpi_silence_detector_set_delay(u32 hC, u32 delay);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1711) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1712) u16 hpi_silence_detector_get_delay(u32 hC, u32 *delay);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1713) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1714) u16 hpi_silence_detector_set_threshold(u32 hC, int threshold);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1715) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1716) u16 hpi_silence_detector_get_threshold(u32 hC, int *threshold);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1717) /*********************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1718) /* Utility functions */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1719) /*********************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1720) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1721) u16 hpi_format_create(struct hpi_format *p_format, u16 channels, u16 format,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1722) 	u32 sample_rate, u32 bit_rate, u32 attributes);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1723) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1724) #endif	 /*_HPI_H_ */