^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_ */