diff options
Diffstat (limited to 'sound/pci/asihpi/hpi_internal.h')
| -rw-r--r-- | sound/pci/asihpi/hpi_internal.h | 1283 | 
1 files changed, 532 insertions, 751 deletions
diff --git a/sound/pci/asihpi/hpi_internal.h b/sound/pci/asihpi/hpi_internal.h index 16f502d459d..bc86cb726d7 100644 --- a/sound/pci/asihpi/hpi_internal.h +++ b/sound/pci/asihpi/hpi_internal.h @@ -1,7 +1,7 @@  /******************************************************************************      AudioScience HPI driver -    Copyright (C) 1997-2010  AudioScience Inc. <support@audioscience.com> +    Copyright (C) 1997-2012  AudioScience Inc. <support@audioscience.com>      This program is free software; you can redistribute it and/or modify      it under the terms of version 2 of the GNU General Public License as @@ -25,19 +25,14 @@ HPI internal definitions  #define _HPI_INTERNAL_H_  #include "hpi.h" +  /** maximum number of memory regions mapped to an adapter */  #define HPI_MAX_ADAPTER_MEM_SPACES (2) -/* Each OS needs its own hpios.h, or specific define as above */ +/* Each OS needs its own hpios.h */  #include "hpios.h"  /* physical memory allocation */ -void hpios_locked_mem_init(void -	); -void hpios_locked_mem_free_all(void -	); -#define hpios_locked_mem_prepare(a, b, c, d); -#define hpios_locked_mem_unprepare(a)  /** Allocate and map an area of locked memory for bus master DMA operations. @@ -49,7 +44,7 @@ HpiOs_LockedMem_GetPyhsAddr() will always succed on the returned handle.  */  u16 hpios_locked_mem_alloc(struct consistent_dma_area *p_locked_mem_handle,  							   /**< memory handle */ -	u32 size, /**< size in bytes to allocate */ +	u32 size, /**< Size in bytes to allocate */  	struct pci_dev *p_os_reference  	/**< OS specific data required for memory allocation */  	); @@ -96,41 +91,6 @@ typedef void hpi_handler_func(struct hpi_message *, struct hpi_response *);  #define compile_time_assert(cond, msg) \      typedef char ASSERT_##msg[(cond) ? 1 : -1] -/*/////////////////////////////////////////////////////////////////////////// */ -/* Private HPI Entity related definitions                                     */ - -#define STR_SIZE_FIELD_MAX 65535U -#define STR_TYPE_FIELD_MAX 255U -#define STR_ROLE_FIELD_MAX 255U - -struct hpi_entity_str { -	u16 size; -	u8 type; -	u8 role; -}; - -#if defined(_MSC_VER) -#pragma warning(push) -#pragma warning(disable : 4200) -#endif - -struct hpi_entity { -	struct hpi_entity_str header; -#if ! defined(HPI_OS_DSP_C6000) || (defined(HPI_OS_DSP_C6000) && (__TI_COMPILER_VERSION__ > 6000008)) -	/* DSP C6000 compiler v6.0.8 and lower -	   do not support  flexible array member */ -	u8 value[]; -#else -	/* NOTE! Using sizeof(struct hpi_entity) will give erroneous results */ -#define HPI_INTERNAL_WARN_ABOUT_ENTITY_VALUE -	u8 value[1]; -#endif -}; - -#if defined(_MSC_VER) -#pragma warning(pop) -#endif -  /******************************************* bus types */  enum HPI_BUSES {  	HPI_BUS_ISAPNP = 1, @@ -139,206 +99,155 @@ enum HPI_BUSES {  	HPI_BUS_NET = 4  }; +enum HPI_SUBSYS_OPTIONS { +	/* 0, 256 are invalid, 1..255 reserved for global options */ +	HPI_SUBSYS_OPT_NET_ENABLE = 257, +	HPI_SUBSYS_OPT_NET_BROADCAST = 258, +	HPI_SUBSYS_OPT_NET_UNICAST = 259, +	HPI_SUBSYS_OPT_NET_ADDR = 260, +	HPI_SUBSYS_OPT_NET_MASK = 261, +	HPI_SUBSYS_OPT_NET_ADAPTER_ADDRESS_ADD = 262 +}; + +/** Volume flags +*/ +enum HPI_VOLUME_FLAGS { +	/** Set if the volume control is muted */ +	HPI_VOLUME_FLAG_MUTED = (1 << 0), +	/** Set if the volume control has a mute function */ +	HPI_VOLUME_FLAG_HAS_MUTE = (1 << 1), +	/** Set if volume control can do autofading */ +	HPI_VOLUME_FLAG_HAS_AUTOFADE = (1 << 2) +		/* Note Flags >= (1<<8) are for DSP internal use only */ +}; +  /******************************************* CONTROL ATTRIBUTES ****/  /* (in order of control type ID */  /* This allows for 255 control types, 256 unique attributes each */ -#define HPI_CTL_ATTR(ctl, ai) (HPI_CONTROL_##ctl * 0x100 + ai) +#define HPI_CTL_ATTR(ctl, ai) ((HPI_CONTROL_##ctl << 8) + ai)  /* Get the sub-index of the attribute for a control type */ -#define HPI_CTL_ATTR_INDEX(i) (i&0xff) +#define HPI_CTL_ATTR_INDEX(i) (i & 0xff)  /* Extract the control from the control attribute */ -#define HPI_CTL_ATTR_CONTROL(i) (i>>8) - -/* Generic control attributes.  */ - -/** Enable a control. -0=disable, 1=enable -\note generic to all mixer plugins? -*/ -#define HPI_GENERIC_ENABLE HPI_CTL_ATTR(GENERIC, 1) +#define HPI_CTL_ATTR_CONTROL(i) (i >> 8)  /** Enable event generation for a control.  0=disable, 1=enable  \note generic to all controls that can generate events  */ -#define HPI_GENERIC_EVENT_ENABLE HPI_CTL_ATTR(GENERIC, 2) - -/* Volume Control attributes */ -#define HPI_VOLUME_GAIN                 HPI_CTL_ATTR(VOLUME, 1) -#define HPI_VOLUME_AUTOFADE             HPI_CTL_ATTR(VOLUME, 2) - -/** For HPI_ControlQuery() to get the number of channels of a volume control*/ -#define HPI_VOLUME_NUM_CHANNELS         HPI_CTL_ATTR(VOLUME, 6) -#define HPI_VOLUME_RANGE                HPI_CTL_ATTR(VOLUME, 10) - -/** Level Control attributes */ -#define HPI_LEVEL_GAIN                  HPI_CTL_ATTR(LEVEL, 1) -#define HPI_LEVEL_RANGE                 HPI_CTL_ATTR(LEVEL, 10) - -/* Meter Control attributes */ -/** return RMS signal level */ -#define HPI_METER_RMS                   HPI_CTL_ATTR(METER, 1) -/** return peak signal level */ -#define HPI_METER_PEAK                  HPI_CTL_ATTR(METER, 2) -/** ballistics for ALL rms meters on adapter */ -#define HPI_METER_RMS_BALLISTICS        HPI_CTL_ATTR(METER, 3) -/** ballistics for ALL peak meters on adapter */ -#define HPI_METER_PEAK_BALLISTICS       HPI_CTL_ATTR(METER, 4) - -/** For HPI_ControlQuery() to get the number of channels of a meter control*/ -#define HPI_METER_NUM_CHANNELS          HPI_CTL_ATTR(METER, 5) - -/* Multiplexer control attributes */ -#define HPI_MULTIPLEXER_SOURCE          HPI_CTL_ATTR(MULTIPLEXER, 1) -#define HPI_MULTIPLEXER_QUERYSOURCE     HPI_CTL_ATTR(MULTIPLEXER, 2) - -/** AES/EBU transmitter control attributes */ -/** AESEBU or SPDIF */ -#define HPI_AESEBUTX_FORMAT             HPI_CTL_ATTR(AESEBUTX, 1) -#define HPI_AESEBUTX_SAMPLERATE         HPI_CTL_ATTR(AESEBUTX, 3) -#define HPI_AESEBUTX_CHANNELSTATUS      HPI_CTL_ATTR(AESEBUTX, 4) -#define HPI_AESEBUTX_USERDATA           HPI_CTL_ATTR(AESEBUTX, 5) - -/** AES/EBU receiver control attributes */ -#define HPI_AESEBURX_FORMAT             HPI_CTL_ATTR(AESEBURX, 1) -#define HPI_AESEBURX_ERRORSTATUS        HPI_CTL_ATTR(AESEBURX, 2) -#define HPI_AESEBURX_SAMPLERATE         HPI_CTL_ATTR(AESEBURX, 3) -#define HPI_AESEBURX_CHANNELSTATUS      HPI_CTL_ATTR(AESEBURX, 4) -#define HPI_AESEBURX_USERDATA           HPI_CTL_ATTR(AESEBURX, 5) - -/** \defgroup tuner_defs Tuners -\{ -*/ -/** \defgroup tuner_attrs Tuner control attributes -\{ -*/ -#define HPI_TUNER_BAND                  HPI_CTL_ATTR(TUNER, 1) -#define HPI_TUNER_FREQ                  HPI_CTL_ATTR(TUNER, 2) -#define HPI_TUNER_LEVEL                 HPI_CTL_ATTR(TUNER, 3) -#define HPI_TUNER_AUDIOMUTE             HPI_CTL_ATTR(TUNER, 4) -/* use TUNER_STATUS instead */ -#define HPI_TUNER_VIDEO_STATUS          HPI_CTL_ATTR(TUNER, 5) -#define HPI_TUNER_GAIN                  HPI_CTL_ATTR(TUNER, 6) -#define HPI_TUNER_STATUS                HPI_CTL_ATTR(TUNER, 7) -#define HPI_TUNER_MODE                  HPI_CTL_ATTR(TUNER, 8) -/** RDS data. */ -#define HPI_TUNER_RDS                   HPI_CTL_ATTR(TUNER, 9) -/** Audio pre-emphasis. */ -#define HPI_TUNER_DEEMPHASIS            HPI_CTL_ATTR(TUNER, 10) -/** HD Radio tuner program control. */ -#define HPI_TUNER_PROGRAM               HPI_CTL_ATTR(TUNER, 11) -/** HD Radio tuner digital signal quality. */ -#define HPI_TUNER_HDRADIO_SIGNAL_QUALITY        HPI_CTL_ATTR(TUNER, 12) -/** HD Radio SDK firmware version. */ -#define HPI_TUNER_HDRADIO_SDK_VERSION   HPI_CTL_ATTR(TUNER, 13) -/** HD Radio DSP firmware version. */ -#define HPI_TUNER_HDRADIO_DSP_VERSION   HPI_CTL_ATTR(TUNER, 14) -/** HD Radio signal blend (force analog, or automatic). */ -#define HPI_TUNER_HDRADIO_BLEND         HPI_CTL_ATTR(TUNER, 15) - -/** \} */ - -/** \defgroup pads_attrs Tuner PADs control attributes -\{ -*/ -/** The text string containing the station/channel combination. */ -#define HPI_PAD_CHANNEL_NAME            HPI_CTL_ATTR(PAD, 1) -/** The text string containing the artist. */ -#define HPI_PAD_ARTIST                  HPI_CTL_ATTR(PAD, 2) -/** The text string containing the title. */ -#define HPI_PAD_TITLE                   HPI_CTL_ATTR(PAD, 3) -/** The text string containing the comment. */ -#define HPI_PAD_COMMENT                 HPI_CTL_ATTR(PAD, 4) -/** The integer containing the PTY code. */ -#define HPI_PAD_PROGRAM_TYPE            HPI_CTL_ATTR(PAD, 5) -/** The integer containing the program identification. */ -#define HPI_PAD_PROGRAM_ID              HPI_CTL_ATTR(PAD, 6) -/** The integer containing whether traffic information is supported. -Contains either 1 or 0. */ -#define HPI_PAD_TA_SUPPORT              HPI_CTL_ATTR(PAD, 7) -/** The integer containing whether traffic announcement is in progress. -Contains either 1 or 0. */ -#define HPI_PAD_TA_ACTIVE               HPI_CTL_ATTR(PAD, 8) -/** \} */ -/** \} */ - -/* VOX control attributes */ -#define HPI_VOX_THRESHOLD               HPI_CTL_ATTR(VOX, 1) - -/*?? channel mode used hpi_multiplexer_source attribute == 1 */ -#define HPI_CHANNEL_MODE_MODE HPI_CTL_ATTR(CHANNEL_MODE, 1) - -/** \defgroup channel_modes Channel Modes -Used for HPI_ChannelModeSet/Get() -\{ + +/** Unique identifiers for every control attribute  */ -/** Left channel out = left channel in, Right channel out = right channel in. */ -#define HPI_CHANNEL_MODE_NORMAL                 1 -/** Left channel out = right channel in, Right channel out = left channel in. */ -#define HPI_CHANNEL_MODE_SWAP                   2 -/** Left channel out = left channel in, Right channel out = left channel in. */ -#define HPI_CHANNEL_MODE_LEFT_TO_STEREO         3 -/** Left channel out = right channel in, Right channel out = right channel in.*/ -#define HPI_CHANNEL_MODE_RIGHT_TO_STEREO        4 -/** Left channel out = (left channel in + right channel in)/2, -    Right channel out = mute. */ -#define HPI_CHANNEL_MODE_STEREO_TO_LEFT         5 -/** Left channel out = mute, -    Right channel out = (right channel in + left channel in)/2. */ -#define HPI_CHANNEL_MODE_STEREO_TO_RIGHT        6 -#define HPI_CHANNEL_MODE_LAST                   6 -/** \} */ - -/* Bitstream control set attributes */ -#define HPI_BITSTREAM_DATA_POLARITY     HPI_CTL_ATTR(BITSTREAM, 1) -#define HPI_BITSTREAM_CLOCK_EDGE        HPI_CTL_ATTR(BITSTREAM, 2) -#define HPI_BITSTREAM_CLOCK_SOURCE      HPI_CTL_ATTR(BITSTREAM, 3) +enum HPI_CONTROL_ATTRIBUTES { +	HPI_GENERIC_ENABLE = HPI_CTL_ATTR(GENERIC, 1), +	HPI_GENERIC_EVENT_ENABLE = HPI_CTL_ATTR(GENERIC, 2), + +	HPI_VOLUME_GAIN = HPI_CTL_ATTR(VOLUME, 1), +	HPI_VOLUME_AUTOFADE = HPI_CTL_ATTR(VOLUME, 2), +	HPI_VOLUME_MUTE = HPI_CTL_ATTR(VOLUME, 3), +	HPI_VOLUME_GAIN_AND_FLAGS = HPI_CTL_ATTR(VOLUME, 4), +	HPI_VOLUME_NUM_CHANNELS = HPI_CTL_ATTR(VOLUME, 6), +	HPI_VOLUME_RANGE = HPI_CTL_ATTR(VOLUME, 10), + +	HPI_METER_RMS = HPI_CTL_ATTR(METER, 1), +	HPI_METER_PEAK = HPI_CTL_ATTR(METER, 2), +	HPI_METER_RMS_BALLISTICS = HPI_CTL_ATTR(METER, 3), +	HPI_METER_PEAK_BALLISTICS = HPI_CTL_ATTR(METER, 4), +	HPI_METER_NUM_CHANNELS = HPI_CTL_ATTR(METER, 5), + +	HPI_MULTIPLEXER_SOURCE = HPI_CTL_ATTR(MULTIPLEXER, 1), +	HPI_MULTIPLEXER_QUERYSOURCE = HPI_CTL_ATTR(MULTIPLEXER, 2), + +	HPI_AESEBUTX_FORMAT = HPI_CTL_ATTR(AESEBUTX, 1), +	HPI_AESEBUTX_SAMPLERATE = HPI_CTL_ATTR(AESEBUTX, 3), +	HPI_AESEBUTX_CHANNELSTATUS = HPI_CTL_ATTR(AESEBUTX, 4), +	HPI_AESEBUTX_USERDATA = HPI_CTL_ATTR(AESEBUTX, 5), + +	HPI_AESEBURX_FORMAT = HPI_CTL_ATTR(AESEBURX, 1), +	HPI_AESEBURX_ERRORSTATUS = HPI_CTL_ATTR(AESEBURX, 2), +	HPI_AESEBURX_SAMPLERATE = HPI_CTL_ATTR(AESEBURX, 3), +	HPI_AESEBURX_CHANNELSTATUS = HPI_CTL_ATTR(AESEBURX, 4), +	HPI_AESEBURX_USERDATA = HPI_CTL_ATTR(AESEBURX, 5), + +	HPI_LEVEL_GAIN = HPI_CTL_ATTR(LEVEL, 1), +	HPI_LEVEL_RANGE = HPI_CTL_ATTR(LEVEL, 10), + +	HPI_TUNER_BAND = HPI_CTL_ATTR(TUNER, 1), +	HPI_TUNER_FREQ = HPI_CTL_ATTR(TUNER, 2), +	HPI_TUNER_LEVEL_AVG = HPI_CTL_ATTR(TUNER, 3), +	HPI_TUNER_LEVEL_RAW = HPI_CTL_ATTR(TUNER, 4), +	HPI_TUNER_SNR = HPI_CTL_ATTR(TUNER, 5), +	HPI_TUNER_GAIN = HPI_CTL_ATTR(TUNER, 6), +	HPI_TUNER_STATUS = HPI_CTL_ATTR(TUNER, 7), +	HPI_TUNER_MODE = HPI_CTL_ATTR(TUNER, 8), +	HPI_TUNER_RDS = HPI_CTL_ATTR(TUNER, 9), +	HPI_TUNER_DEEMPHASIS = HPI_CTL_ATTR(TUNER, 10), +	HPI_TUNER_PROGRAM = HPI_CTL_ATTR(TUNER, 11), +	HPI_TUNER_HDRADIO_SIGNAL_QUALITY = HPI_CTL_ATTR(TUNER, 12), +	HPI_TUNER_HDRADIO_SDK_VERSION = HPI_CTL_ATTR(TUNER, 13), +	HPI_TUNER_HDRADIO_DSP_VERSION = HPI_CTL_ATTR(TUNER, 14), +	HPI_TUNER_HDRADIO_BLEND = HPI_CTL_ATTR(TUNER, 15), + +	HPI_VOX_THRESHOLD = HPI_CTL_ATTR(VOX, 1), + +	HPI_CHANNEL_MODE_MODE = HPI_CTL_ATTR(CHANNEL_MODE, 1), + +	HPI_BITSTREAM_DATA_POLARITY = HPI_CTL_ATTR(BITSTREAM, 1), +	HPI_BITSTREAM_CLOCK_EDGE = HPI_CTL_ATTR(BITSTREAM, 2), +	HPI_BITSTREAM_CLOCK_SOURCE = HPI_CTL_ATTR(BITSTREAM, 3), +	HPI_BITSTREAM_ACTIVITY = HPI_CTL_ATTR(BITSTREAM, 4), + +	HPI_SAMPLECLOCK_SOURCE = HPI_CTL_ATTR(SAMPLECLOCK, 1), +	HPI_SAMPLECLOCK_SAMPLERATE = HPI_CTL_ATTR(SAMPLECLOCK, 2), +	HPI_SAMPLECLOCK_SOURCE_INDEX = HPI_CTL_ATTR(SAMPLECLOCK, 3), +	HPI_SAMPLECLOCK_LOCAL_SAMPLERATE = HPI_CTL_ATTR(SAMPLECLOCK, 4), +	HPI_SAMPLECLOCK_AUTO = HPI_CTL_ATTR(SAMPLECLOCK, 5), +	HPI_SAMPLECLOCK_LOCAL_LOCK = HPI_CTL_ATTR(SAMPLECLOCK, 6), + +	HPI_MICROPHONE_PHANTOM_POWER = HPI_CTL_ATTR(MICROPHONE, 1), + +	HPI_EQUALIZER_NUM_FILTERS = HPI_CTL_ATTR(EQUALIZER, 1), +	HPI_EQUALIZER_FILTER = HPI_CTL_ATTR(EQUALIZER, 2), +	HPI_EQUALIZER_COEFFICIENTS = HPI_CTL_ATTR(EQUALIZER, 3), + +	HPI_COMPANDER_PARAMS = HPI_CTL_ATTR(COMPANDER, 1), +	HPI_COMPANDER_MAKEUPGAIN = HPI_CTL_ATTR(COMPANDER, 2), +	HPI_COMPANDER_THRESHOLD = HPI_CTL_ATTR(COMPANDER, 3), +	HPI_COMPANDER_RATIO = HPI_CTL_ATTR(COMPANDER, 4), +	HPI_COMPANDER_ATTACK = HPI_CTL_ATTR(COMPANDER, 5), +	HPI_COMPANDER_DECAY = HPI_CTL_ATTR(COMPANDER, 6), + +	HPI_COBRANET_SET = HPI_CTL_ATTR(COBRANET, 1), +	HPI_COBRANET_GET = HPI_CTL_ATTR(COBRANET, 2), +	HPI_COBRANET_GET_STATUS = HPI_CTL_ATTR(COBRANET, 5), +	HPI_COBRANET_SEND_PACKET = HPI_CTL_ATTR(COBRANET, 6), +	HPI_COBRANET_GET_PACKET = HPI_CTL_ATTR(COBRANET, 7), + +	HPI_TONEDETECTOR_THRESHOLD = HPI_CTL_ATTR(TONEDETECTOR, 1), +	HPI_TONEDETECTOR_STATE = HPI_CTL_ATTR(TONEDETECTOR, 2), +	HPI_TONEDETECTOR_FREQUENCY = HPI_CTL_ATTR(TONEDETECTOR, 3), + +	HPI_SILENCEDETECTOR_THRESHOLD = HPI_CTL_ATTR(SILENCEDETECTOR, 1), +	HPI_SILENCEDETECTOR_STATE = HPI_CTL_ATTR(SILENCEDETECTOR, 2), +	HPI_SILENCEDETECTOR_DELAY = HPI_CTL_ATTR(SILENCEDETECTOR, 3), + +	HPI_PAD_CHANNEL_NAME = HPI_CTL_ATTR(PAD, 1), +	HPI_PAD_ARTIST = HPI_CTL_ATTR(PAD, 2), +	HPI_PAD_TITLE = HPI_CTL_ATTR(PAD, 3), +	HPI_PAD_COMMENT = HPI_CTL_ATTR(PAD, 4), +	HPI_PAD_PROGRAM_TYPE = HPI_CTL_ATTR(PAD, 5), +	HPI_PAD_PROGRAM_ID = HPI_CTL_ATTR(PAD, 6), +	HPI_PAD_TA_SUPPORT = HPI_CTL_ATTR(PAD, 7), +	HPI_PAD_TA_ACTIVE = HPI_CTL_ATTR(PAD, 8), + +	HPI_UNIVERSAL_ENTITY = HPI_CTL_ATTR(UNIVERSAL, 1) +};  #define HPI_POLARITY_POSITIVE           0  #define HPI_POLARITY_NEGATIVE           1 -/* Bitstream control get attributes */ -#define HPI_BITSTREAM_ACTIVITY          1 - -/* SampleClock control attributes */ -#define HPI_SAMPLECLOCK_SOURCE                  HPI_CTL_ATTR(SAMPLECLOCK, 1) -#define HPI_SAMPLECLOCK_SAMPLERATE              HPI_CTL_ATTR(SAMPLECLOCK, 2) -#define HPI_SAMPLECLOCK_SOURCE_INDEX            HPI_CTL_ATTR(SAMPLECLOCK, 3) -#define HPI_SAMPLECLOCK_LOCAL_SAMPLERATE\ -	HPI_CTL_ATTR(SAMPLECLOCK, 4) -#define HPI_SAMPLECLOCK_AUTO                    HPI_CTL_ATTR(SAMPLECLOCK, 5) -#define HPI_SAMPLECLOCK_LOCAL_LOCK                      HPI_CTL_ATTR(SAMPLECLOCK, 6) - -/* Microphone control attributes */ -#define HPI_MICROPHONE_PHANTOM_POWER HPI_CTL_ATTR(MICROPHONE, 1) - -/** Equalizer control attributes */ -/** Used to get number of filters in an EQ. (Can't set) */ -#define HPI_EQUALIZER_NUM_FILTERS HPI_CTL_ATTR(EQUALIZER, 1) -/** Set/get the filter by type, freq, Q, gain */ -#define HPI_EQUALIZER_FILTER HPI_CTL_ATTR(EQUALIZER, 2) -/** Get the biquad coefficients */ -#define HPI_EQUALIZER_COEFFICIENTS HPI_CTL_ATTR(EQUALIZER, 3) - -/* Note compander also uses HPI_GENERIC_ENABLE */ -#define HPI_COMPANDER_PARAMS     HPI_CTL_ATTR(COMPANDER, 1) -#define HPI_COMPANDER_MAKEUPGAIN HPI_CTL_ATTR(COMPANDER, 2) -#define HPI_COMPANDER_THRESHOLD  HPI_CTL_ATTR(COMPANDER, 3) -#define HPI_COMPANDER_RATIO      HPI_CTL_ATTR(COMPANDER, 4) -#define HPI_COMPANDER_ATTACK     HPI_CTL_ATTR(COMPANDER, 5) -#define HPI_COMPANDER_DECAY      HPI_CTL_ATTR(COMPANDER, 6) - -/* Cobranet control attributes. */ -#define HPI_COBRANET_SET         HPI_CTL_ATTR(COBRANET, 1) -#define HPI_COBRANET_GET         HPI_CTL_ATTR(COBRANET, 2) -#define HPI_COBRANET_SET_DATA    HPI_CTL_ATTR(COBRANET, 3) -#define HPI_COBRANET_GET_DATA    HPI_CTL_ATTR(COBRANET, 4) -#define HPI_COBRANET_GET_STATUS  HPI_CTL_ATTR(COBRANET, 5) -#define HPI_COBRANET_SEND_PACKET HPI_CTL_ATTR(COBRANET, 6) -#define HPI_COBRANET_GET_PACKET  HPI_CTL_ATTR(COBRANET, 7) -  /*------------------------------------------------------------   Cobranet Chip Bridge - copied from HMI.H  ------------------------------------------------------------*/ @@ -380,7 +289,7 @@ Used for HPI_ChannelModeSet/Get()  /* These defines are used to fill in protocol information for an Ethernet packet      sent using HMI on CS18102 */ -/** ID supplied by Cirrius for ASI packets. */ +/** ID supplied by Cirrus for ASI packets. */  #define HPI_ETHERNET_PACKET_ID                  0x85  /** Simple packet - no special routing required */  #define HPI_ETHERNET_PACKET_V1                  0x01 @@ -393,71 +302,24 @@ Used for HPI_ChannelModeSet/Get()  /** This packet must make its way to the host across the HPI interface */  #define HPI_ETHERNET_PACKET_HOSTED_VIA_HPI_V1   0x41 -#define HPI_ETHERNET_UDP_PORT (44600)	/*!< UDP messaging port */ - -/** Base network time out is set to 100 milli-seconds. */ -#define HPI_ETHERNET_TIMEOUT_MS      (100) - -/** \defgroup tonedet_attr Tonedetector attributes -\{ -Used by HPI_ToneDetector_Set() and HPI_ToneDetector_Get() -*/ - -/** Set the threshold level of a tonedetector, -Threshold is a -ve number in units of dB/100, -*/ -#define HPI_TONEDETECTOR_THRESHOLD HPI_CTL_ATTR(TONEDETECTOR, 1) - -/** Get the current state of tonedetection -The result is a bitmap of detected tones.  pairs of bits represent the left -and right channels, with left channel in LSB. -The lowest frequency detector state is in the LSB -*/ -#define HPI_TONEDETECTOR_STATE HPI_CTL_ATTR(TONEDETECTOR, 2) - -/** Get the frequency of a tonedetector band. -*/ -#define HPI_TONEDETECTOR_FREQUENCY HPI_CTL_ATTR(TONEDETECTOR, 3) - -/**\}*/ +#define HPI_ETHERNET_UDP_PORT 44600 /**< HPI UDP service */ -/** \defgroup silencedet_attr SilenceDetector attributes -\{ -*/ +/** Default network timeout in milli-seconds. */ +#define HPI_ETHERNET_TIMEOUT_MS 500 -/** Get the current state of tonedetection -The result is a bitmap with 1s for silent channels. Left channel is in LSB -*/ -#define HPI_SILENCEDETECTOR_STATE \ -  HPI_CTL_ATTR(SILENCEDETECTOR, 2) - -/** Set the threshold level of a SilenceDetector, -Threshold is a -ve number in units of dB/100, -*/ -#define HPI_SILENCEDETECTOR_THRESHOLD \ -  HPI_CTL_ATTR(SILENCEDETECTOR, 1) - -/** get/set the silence time before the detector triggers -*/ -#define HPI_SILENCEDETECTOR_DELAY \ -       HPI_CTL_ATTR(SILENCEDETECTOR, 3) - -/**\}*/ - -/* Locked memory buffer alloc/free phases */ -/** use one message to allocate or free physical memory */ -#define HPI_BUFFER_CMD_EXTERNAL                 0 -/** alloc physical memory */ -#define HPI_BUFFER_CMD_INTERNAL_ALLOC           1 -/** send physical memory address to adapter */ -#define HPI_BUFFER_CMD_INTERNAL_GRANTADAPTER    2 -/** notify adapter to stop using physical buffer */ -#define HPI_BUFFER_CMD_INTERNAL_REVOKEADAPTER   3 -/** free physical buffer */ -#define HPI_BUFFER_CMD_INTERNAL_FREE            4 - -/******************************************* CONTROLX ATTRIBUTES ****/ -/* NOTE: All controlx attributes must be unique, unlike control attributes */ +/** Locked memory buffer alloc/free phases */ +enum HPI_BUFFER_CMDS { +	/** use one message to allocate or free physical memory */ +	HPI_BUFFER_CMD_EXTERNAL = 0, +	/** alloc physical memory */ +	HPI_BUFFER_CMD_INTERNAL_ALLOC = 1, +	/** send physical memory address to adapter */ +	HPI_BUFFER_CMD_INTERNAL_GRANTADAPTER = 2, +	/** notify adapter to stop using physical buffer */ +	HPI_BUFFER_CMD_INTERNAL_REVOKEADAPTER = 3, +	/** free physical buffer */ +	HPI_BUFFER_CMD_INTERNAL_FREE = 4 +};  /*****************************************************************************/  /*****************************************************************************/ @@ -482,6 +344,12 @@ Threshold is a -ve number in units of dB/100,  #define HPI_USB_W2K_TAG                 0x57495341	/* "ASIW"       */  #define HPI_USB_LINUX_TAG               0x4C495341	/* "ASIL"       */ +/** Invalid Adapter index +Used in HPI messages that are not addressed to a specific adapter +Used in DLL to indicate device not present +*/ +#define HPI_ADAPTER_INDEX_INVALID 0xFFFF +  /** First 2 hex digits define the adapter family */  #define HPI_ADAPTER_FAMILY_MASK         0xff00  #define HPI_MODULE_FAMILY_MASK          0xfff0 @@ -490,178 +358,189 @@ Threshold is a -ve number in units of dB/100,  #define HPI_MODULE_FAMILY_ASI(f)   (f & HPI_MODULE_FAMILY_MASK)  #define HPI_ADAPTER_ASI(f)   (f) -/******************************************* message types */ -#define HPI_TYPE_MESSAGE                        1 -#define HPI_TYPE_RESPONSE                       2 -#define HPI_TYPE_DATA                           3 -#define HPI_TYPE_SSX2BYPASS_MESSAGE             4 - -/******************************************* object types */ -#define HPI_OBJ_SUBSYSTEM                       1 -#define HPI_OBJ_ADAPTER                         2 -#define HPI_OBJ_OSTREAM                         3 -#define HPI_OBJ_ISTREAM                         4 -#define HPI_OBJ_MIXER                           5 -#define HPI_OBJ_NODE                            6 -#define HPI_OBJ_CONTROL                         7 -#define HPI_OBJ_NVMEMORY                        8 -#define HPI_OBJ_GPIO                            9 -#define HPI_OBJ_WATCHDOG                        10 -#define HPI_OBJ_CLOCK                           11 -#define HPI_OBJ_PROFILE                         12 -#define HPI_OBJ_CONTROLEX                       13 -#define HPI_OBJ_ASYNCEVENT                      14 - -#define HPI_OBJ_MAXINDEX                        14 - -/******************************************* methods/functions */ - -#define HPI_OBJ_FUNCTION_SPACING        0x100 -#define HPI_MAKE_INDEX(obj, index) (obj * HPI_OBJ_FUNCTION_SPACING + index) +enum HPI_MESSAGE_TYPES { +	HPI_TYPE_REQUEST = 1, +	HPI_TYPE_RESPONSE = 2, +	HPI_TYPE_DATA = 3, +	HPI_TYPE_SSX2BYPASS_MESSAGE = 4, +	HPI_TYPE_COMMAND = 5, +	HPI_TYPE_NOTIFICATION = 6 +}; + +enum HPI_OBJECT_TYPES { +	HPI_OBJ_SUBSYSTEM = 1, +	HPI_OBJ_ADAPTER = 2, +	HPI_OBJ_OSTREAM = 3, +	HPI_OBJ_ISTREAM = 4, +	HPI_OBJ_MIXER = 5, +	HPI_OBJ_NODE = 6, +	HPI_OBJ_CONTROL = 7, +	HPI_OBJ_NVMEMORY = 8, +	HPI_OBJ_GPIO = 9, +	HPI_OBJ_WATCHDOG = 10, +	HPI_OBJ_CLOCK = 11, +	HPI_OBJ_PROFILE = 12, +	/* HPI_ OBJ_ CONTROLEX  = 13, */ +	HPI_OBJ_ASYNCEVENT = 14 +#define HPI_OBJ_MAXINDEX 14 +}; + +#define HPI_OBJ_FUNCTION_SPACING 0x100 +#define HPI_FUNC_ID(obj, i) (HPI_OBJ_##obj * HPI_OBJ_FUNCTION_SPACING + i) +  #define HPI_EXTRACT_INDEX(fn) (fn & 0xff) -/* SUB-SYSTEM */ -#define HPI_SUBSYS_OPEN                 HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 1) -#define HPI_SUBSYS_GET_VERSION          HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 2) -#define HPI_SUBSYS_GET_INFO             HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 3) -#define HPI_SUBSYS_FIND_ADAPTERS        HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 4) -#define HPI_SUBSYS_CREATE_ADAPTER       HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 5) -#define HPI_SUBSYS_CLOSE                HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 6) -#define HPI_SUBSYS_DELETE_ADAPTER       HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 7) -#define HPI_SUBSYS_DRIVER_LOAD          HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 8) -#define HPI_SUBSYS_DRIVER_UNLOAD        HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 9) -#define HPI_SUBSYS_READ_PORT_8          HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 10) -#define HPI_SUBSYS_WRITE_PORT_8         HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 11) -#define HPI_SUBSYS_GET_NUM_ADAPTERS     HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 12) -#define HPI_SUBSYS_GET_ADAPTER          HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 13) -#define HPI_SUBSYS_SET_NETWORK_INTERFACE HPI_MAKE_INDEX(HPI_OBJ_SUBSYSTEM, 14) -#define HPI_SUBSYS_FUNCTION_COUNT 14 -/* ADAPTER */ -#define HPI_ADAPTER_OPEN                HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 1) -#define HPI_ADAPTER_CLOSE               HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 2) -#define HPI_ADAPTER_GET_INFO            HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 3) -#define HPI_ADAPTER_GET_ASSERT          HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 4) -#define HPI_ADAPTER_TEST_ASSERT         HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 5) -#define HPI_ADAPTER_SET_MODE            HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 6) -#define HPI_ADAPTER_GET_MODE            HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 7) -#define HPI_ADAPTER_ENABLE_CAPABILITY   HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 8) -#define HPI_ADAPTER_SELFTEST            HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 9) -#define HPI_ADAPTER_FIND_OBJECT         HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 10) -#define HPI_ADAPTER_QUERY_FLASH         HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 11) -#define HPI_ADAPTER_START_FLASH         HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 12) -#define HPI_ADAPTER_PROGRAM_FLASH       HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 13) -#define HPI_ADAPTER_SET_PROPERTY        HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 14) -#define HPI_ADAPTER_GET_PROPERTY        HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 15) -#define HPI_ADAPTER_ENUM_PROPERTY       HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 16) -#define HPI_ADAPTER_MODULE_INFO         HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 17) -#define HPI_ADAPTER_DEBUG_READ          HPI_MAKE_INDEX(HPI_OBJ_ADAPTER, 18) -#define HPI_ADAPTER_FUNCTION_COUNT 18 -/* OUTPUT STREAM */ -#define HPI_OSTREAM_OPEN                HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 1) -#define HPI_OSTREAM_CLOSE               HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 2) -#define HPI_OSTREAM_WRITE               HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 3) -#define HPI_OSTREAM_START               HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 4) -#define HPI_OSTREAM_STOP                HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 5) -#define HPI_OSTREAM_RESET               HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 6) -#define HPI_OSTREAM_GET_INFO            HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 7) -#define HPI_OSTREAM_QUERY_FORMAT        HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 8) -#define HPI_OSTREAM_DATA                HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 9) -#define HPI_OSTREAM_SET_VELOCITY        HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 10) -#define HPI_OSTREAM_SET_PUNCHINOUT      HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 11) -#define HPI_OSTREAM_SINEGEN             HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 12) -#define HPI_OSTREAM_ANC_RESET           HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 13) -#define HPI_OSTREAM_ANC_GET_INFO        HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 14) -#define HPI_OSTREAM_ANC_READ            HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 15) -#define HPI_OSTREAM_SET_TIMESCALE       HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 16) -#define HPI_OSTREAM_SET_FORMAT          HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 17) -#define HPI_OSTREAM_HOSTBUFFER_ALLOC    HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 18) -#define HPI_OSTREAM_HOSTBUFFER_FREE     HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 19) -#define HPI_OSTREAM_GROUP_ADD           HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 20) -#define HPI_OSTREAM_GROUP_GETMAP        HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 21) -#define HPI_OSTREAM_GROUP_RESET         HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 22) -#define HPI_OSTREAM_HOSTBUFFER_GET_INFO HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 23) -#define HPI_OSTREAM_WAIT_START          HPI_MAKE_INDEX(HPI_OBJ_OSTREAM, 24) -#define HPI_OSTREAM_FUNCTION_COUNT              24 -/* INPUT STREAM */ -#define HPI_ISTREAM_OPEN                HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 1) -#define HPI_ISTREAM_CLOSE               HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 2) -#define HPI_ISTREAM_SET_FORMAT          HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 3) -#define HPI_ISTREAM_READ                HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 4) -#define HPI_ISTREAM_START               HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 5) -#define HPI_ISTREAM_STOP                HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 6) -#define HPI_ISTREAM_RESET               HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 7) -#define HPI_ISTREAM_GET_INFO            HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 8) -#define HPI_ISTREAM_QUERY_FORMAT        HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 9) -#define HPI_ISTREAM_ANC_RESET           HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 10) -#define HPI_ISTREAM_ANC_GET_INFO        HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 11) -#define HPI_ISTREAM_ANC_WRITE           HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 12) -#define HPI_ISTREAM_HOSTBUFFER_ALLOC    HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 13) -#define HPI_ISTREAM_HOSTBUFFER_FREE     HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 14) -#define HPI_ISTREAM_GROUP_ADD           HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 15) -#define HPI_ISTREAM_GROUP_GETMAP        HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 16) -#define HPI_ISTREAM_GROUP_RESET         HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 17) -#define HPI_ISTREAM_HOSTBUFFER_GET_INFO HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 18) -#define HPI_ISTREAM_WAIT_START          HPI_MAKE_INDEX(HPI_OBJ_ISTREAM, 19) -#define HPI_ISTREAM_FUNCTION_COUNT              19 -/* MIXER */ +enum HPI_FUNCTION_IDS { +	HPI_SUBSYS_OPEN = HPI_FUNC_ID(SUBSYSTEM, 1), +	HPI_SUBSYS_GET_VERSION = HPI_FUNC_ID(SUBSYSTEM, 2), +	HPI_SUBSYS_GET_INFO = HPI_FUNC_ID(SUBSYSTEM, 3), +	HPI_SUBSYS_CREATE_ADAPTER = HPI_FUNC_ID(SUBSYSTEM, 5), +	HPI_SUBSYS_CLOSE = HPI_FUNC_ID(SUBSYSTEM, 6), +	HPI_SUBSYS_DRIVER_LOAD = HPI_FUNC_ID(SUBSYSTEM, 8), +	HPI_SUBSYS_DRIVER_UNLOAD = HPI_FUNC_ID(SUBSYSTEM, 9), +	HPI_SUBSYS_GET_NUM_ADAPTERS = HPI_FUNC_ID(SUBSYSTEM, 12), +	HPI_SUBSYS_GET_ADAPTER = HPI_FUNC_ID(SUBSYSTEM, 13), +	HPI_SUBSYS_SET_NETWORK_INTERFACE = HPI_FUNC_ID(SUBSYSTEM, 14), +	HPI_SUBSYS_OPTION_INFO = HPI_FUNC_ID(SUBSYSTEM, 15), +	HPI_SUBSYS_OPTION_GET = HPI_FUNC_ID(SUBSYSTEM, 16), +	HPI_SUBSYS_OPTION_SET = HPI_FUNC_ID(SUBSYSTEM, 17), +#define HPI_SUBSYS_FUNCTION_COUNT 17 + +	HPI_ADAPTER_OPEN = HPI_FUNC_ID(ADAPTER, 1), +	HPI_ADAPTER_CLOSE = HPI_FUNC_ID(ADAPTER, 2), +	HPI_ADAPTER_GET_INFO = HPI_FUNC_ID(ADAPTER, 3), +	HPI_ADAPTER_GET_ASSERT = HPI_FUNC_ID(ADAPTER, 4), +	HPI_ADAPTER_TEST_ASSERT = HPI_FUNC_ID(ADAPTER, 5), +	HPI_ADAPTER_SET_MODE = HPI_FUNC_ID(ADAPTER, 6), +	HPI_ADAPTER_GET_MODE = HPI_FUNC_ID(ADAPTER, 7), +	HPI_ADAPTER_ENABLE_CAPABILITY = HPI_FUNC_ID(ADAPTER, 8), +	HPI_ADAPTER_SELFTEST = HPI_FUNC_ID(ADAPTER, 9), +	HPI_ADAPTER_FIND_OBJECT = HPI_FUNC_ID(ADAPTER, 10), +	HPI_ADAPTER_QUERY_FLASH = HPI_FUNC_ID(ADAPTER, 11), +	HPI_ADAPTER_START_FLASH = HPI_FUNC_ID(ADAPTER, 12), +	HPI_ADAPTER_PROGRAM_FLASH = HPI_FUNC_ID(ADAPTER, 13), +	HPI_ADAPTER_SET_PROPERTY = HPI_FUNC_ID(ADAPTER, 14), +	HPI_ADAPTER_GET_PROPERTY = HPI_FUNC_ID(ADAPTER, 15), +	HPI_ADAPTER_ENUM_PROPERTY = HPI_FUNC_ID(ADAPTER, 16), +	HPI_ADAPTER_MODULE_INFO = HPI_FUNC_ID(ADAPTER, 17), +	HPI_ADAPTER_DEBUG_READ = HPI_FUNC_ID(ADAPTER, 18), +	HPI_ADAPTER_IRQ_QUERY_AND_CLEAR = HPI_FUNC_ID(ADAPTER, 19), +	HPI_ADAPTER_IRQ_CALLBACK = HPI_FUNC_ID(ADAPTER, 20), +	HPI_ADAPTER_DELETE = HPI_FUNC_ID(ADAPTER, 21), +	HPI_ADAPTER_READ_FLASH = HPI_FUNC_ID(ADAPTER, 22), +	HPI_ADAPTER_END_FLASH = HPI_FUNC_ID(ADAPTER, 23), +	HPI_ADAPTER_FILESTORE_DELETE_ALL = HPI_FUNC_ID(ADAPTER, 24), +#define HPI_ADAPTER_FUNCTION_COUNT 24 + +	HPI_OSTREAM_OPEN = HPI_FUNC_ID(OSTREAM, 1), +	HPI_OSTREAM_CLOSE = HPI_FUNC_ID(OSTREAM, 2), +	HPI_OSTREAM_WRITE = HPI_FUNC_ID(OSTREAM, 3), +	HPI_OSTREAM_START = HPI_FUNC_ID(OSTREAM, 4), +	HPI_OSTREAM_STOP = HPI_FUNC_ID(OSTREAM, 5), +	HPI_OSTREAM_RESET = HPI_FUNC_ID(OSTREAM, 6), +	HPI_OSTREAM_GET_INFO = HPI_FUNC_ID(OSTREAM, 7), +	HPI_OSTREAM_QUERY_FORMAT = HPI_FUNC_ID(OSTREAM, 8), +	HPI_OSTREAM_DATA = HPI_FUNC_ID(OSTREAM, 9), +	HPI_OSTREAM_SET_VELOCITY = HPI_FUNC_ID(OSTREAM, 10), +	HPI_OSTREAM_SET_PUNCHINOUT = HPI_FUNC_ID(OSTREAM, 11), +	HPI_OSTREAM_SINEGEN = HPI_FUNC_ID(OSTREAM, 12), +	HPI_OSTREAM_ANC_RESET = HPI_FUNC_ID(OSTREAM, 13), +	HPI_OSTREAM_ANC_GET_INFO = HPI_FUNC_ID(OSTREAM, 14), +	HPI_OSTREAM_ANC_READ = HPI_FUNC_ID(OSTREAM, 15), +	HPI_OSTREAM_SET_TIMESCALE = HPI_FUNC_ID(OSTREAM, 16), +	HPI_OSTREAM_SET_FORMAT = HPI_FUNC_ID(OSTREAM, 17), +	HPI_OSTREAM_HOSTBUFFER_ALLOC = HPI_FUNC_ID(OSTREAM, 18), +	HPI_OSTREAM_HOSTBUFFER_FREE = HPI_FUNC_ID(OSTREAM, 19), +	HPI_OSTREAM_GROUP_ADD = HPI_FUNC_ID(OSTREAM, 20), +	HPI_OSTREAM_GROUP_GETMAP = HPI_FUNC_ID(OSTREAM, 21), +	HPI_OSTREAM_GROUP_RESET = HPI_FUNC_ID(OSTREAM, 22), +	HPI_OSTREAM_HOSTBUFFER_GET_INFO = HPI_FUNC_ID(OSTREAM, 23), +	HPI_OSTREAM_WAIT_START = HPI_FUNC_ID(OSTREAM, 24), +	HPI_OSTREAM_WAIT = HPI_FUNC_ID(OSTREAM, 25), +#define HPI_OSTREAM_FUNCTION_COUNT 25 + +	HPI_ISTREAM_OPEN = HPI_FUNC_ID(ISTREAM, 1), +	HPI_ISTREAM_CLOSE = HPI_FUNC_ID(ISTREAM, 2), +	HPI_ISTREAM_SET_FORMAT = HPI_FUNC_ID(ISTREAM, 3), +	HPI_ISTREAM_READ = HPI_FUNC_ID(ISTREAM, 4), +	HPI_ISTREAM_START = HPI_FUNC_ID(ISTREAM, 5), +	HPI_ISTREAM_STOP = HPI_FUNC_ID(ISTREAM, 6), +	HPI_ISTREAM_RESET = HPI_FUNC_ID(ISTREAM, 7), +	HPI_ISTREAM_GET_INFO = HPI_FUNC_ID(ISTREAM, 8), +	HPI_ISTREAM_QUERY_FORMAT = HPI_FUNC_ID(ISTREAM, 9), +	HPI_ISTREAM_ANC_RESET = HPI_FUNC_ID(ISTREAM, 10), +	HPI_ISTREAM_ANC_GET_INFO = HPI_FUNC_ID(ISTREAM, 11), +	HPI_ISTREAM_ANC_WRITE = HPI_FUNC_ID(ISTREAM, 12), +	HPI_ISTREAM_HOSTBUFFER_ALLOC = HPI_FUNC_ID(ISTREAM, 13), +	HPI_ISTREAM_HOSTBUFFER_FREE = HPI_FUNC_ID(ISTREAM, 14), +	HPI_ISTREAM_GROUP_ADD = HPI_FUNC_ID(ISTREAM, 15), +	HPI_ISTREAM_GROUP_GETMAP = HPI_FUNC_ID(ISTREAM, 16), +	HPI_ISTREAM_GROUP_RESET = HPI_FUNC_ID(ISTREAM, 17), +	HPI_ISTREAM_HOSTBUFFER_GET_INFO = HPI_FUNC_ID(ISTREAM, 18), +	HPI_ISTREAM_WAIT_START = HPI_FUNC_ID(ISTREAM, 19), +	HPI_ISTREAM_WAIT = HPI_FUNC_ID(ISTREAM, 20), +#define HPI_ISTREAM_FUNCTION_COUNT 20 +  /* NOTE:     GET_NODE_INFO, SET_CONNECTION, GET_CONNECTIONS are not currently used */ -#define HPI_MIXER_OPEN                  HPI_MAKE_INDEX(HPI_OBJ_MIXER, 1) -#define HPI_MIXER_CLOSE                 HPI_MAKE_INDEX(HPI_OBJ_MIXER, 2) -#define HPI_MIXER_GET_INFO              HPI_MAKE_INDEX(HPI_OBJ_MIXER, 3) -#define HPI_MIXER_GET_NODE_INFO         HPI_MAKE_INDEX(HPI_OBJ_MIXER, 4) -#define HPI_MIXER_GET_CONTROL           HPI_MAKE_INDEX(HPI_OBJ_MIXER, 5) -#define HPI_MIXER_SET_CONNECTION        HPI_MAKE_INDEX(HPI_OBJ_MIXER, 6) -#define HPI_MIXER_GET_CONNECTIONS       HPI_MAKE_INDEX(HPI_OBJ_MIXER, 7) -#define HPI_MIXER_GET_CONTROL_BY_INDEX  HPI_MAKE_INDEX(HPI_OBJ_MIXER, 8) -#define HPI_MIXER_GET_CONTROL_ARRAY_BY_INDEX  HPI_MAKE_INDEX(HPI_OBJ_MIXER, 9) -#define HPI_MIXER_GET_CONTROL_MULTIPLE_VALUES HPI_MAKE_INDEX(HPI_OBJ_MIXER, 10) -#define HPI_MIXER_STORE                 HPI_MAKE_INDEX(HPI_OBJ_MIXER, 11) -#define HPI_MIXER_FUNCTION_COUNT        11 -/* MIXER CONTROLS */ -#define HPI_CONTROL_GET_INFO            HPI_MAKE_INDEX(HPI_OBJ_CONTROL, 1) -#define HPI_CONTROL_GET_STATE           HPI_MAKE_INDEX(HPI_OBJ_CONTROL, 2) -#define HPI_CONTROL_SET_STATE           HPI_MAKE_INDEX(HPI_OBJ_CONTROL, 3) +	HPI_MIXER_OPEN = HPI_FUNC_ID(MIXER, 1), +	HPI_MIXER_CLOSE = HPI_FUNC_ID(MIXER, 2), +	HPI_MIXER_GET_INFO = HPI_FUNC_ID(MIXER, 3), +	HPI_MIXER_GET_NODE_INFO = HPI_FUNC_ID(MIXER, 4), +	HPI_MIXER_GET_CONTROL = HPI_FUNC_ID(MIXER, 5), +	HPI_MIXER_SET_CONNECTION = HPI_FUNC_ID(MIXER, 6), +	HPI_MIXER_GET_CONNECTIONS = HPI_FUNC_ID(MIXER, 7), +	HPI_MIXER_GET_CONTROL_BY_INDEX = HPI_FUNC_ID(MIXER, 8), +	HPI_MIXER_GET_CONTROL_ARRAY_BY_INDEX = HPI_FUNC_ID(MIXER, 9), +	HPI_MIXER_GET_CONTROL_MULTIPLE_VALUES = HPI_FUNC_ID(MIXER, 10), +	HPI_MIXER_STORE = HPI_FUNC_ID(MIXER, 11), +	HPI_MIXER_GET_CACHE_INFO = HPI_FUNC_ID(MIXER, 12), +	HPI_MIXER_GET_BLOCK_HANDLE = HPI_FUNC_ID(MIXER, 13), +	HPI_MIXER_GET_PARAMETER_HANDLE = HPI_FUNC_ID(MIXER, 14), +#define HPI_MIXER_FUNCTION_COUNT 14 + +	HPI_CONTROL_GET_INFO = HPI_FUNC_ID(CONTROL, 1), +	HPI_CONTROL_GET_STATE = HPI_FUNC_ID(CONTROL, 2), +	HPI_CONTROL_SET_STATE = HPI_FUNC_ID(CONTROL, 3),  #define HPI_CONTROL_FUNCTION_COUNT 3 -/* NONVOL MEMORY */ -#define HPI_NVMEMORY_OPEN               HPI_MAKE_INDEX(HPI_OBJ_NVMEMORY, 1) -#define HPI_NVMEMORY_READ_BYTE          HPI_MAKE_INDEX(HPI_OBJ_NVMEMORY, 2) -#define HPI_NVMEMORY_WRITE_BYTE         HPI_MAKE_INDEX(HPI_OBJ_NVMEMORY, 3) + +	HPI_NVMEMORY_OPEN = HPI_FUNC_ID(NVMEMORY, 1), +	HPI_NVMEMORY_READ_BYTE = HPI_FUNC_ID(NVMEMORY, 2), +	HPI_NVMEMORY_WRITE_BYTE = HPI_FUNC_ID(NVMEMORY, 3),  #define HPI_NVMEMORY_FUNCTION_COUNT 3 -/* GPIO */ -#define HPI_GPIO_OPEN                   HPI_MAKE_INDEX(HPI_OBJ_GPIO, 1) -#define HPI_GPIO_READ_BIT               HPI_MAKE_INDEX(HPI_OBJ_GPIO, 2) -#define HPI_GPIO_WRITE_BIT              HPI_MAKE_INDEX(HPI_OBJ_GPIO, 3) -#define HPI_GPIO_READ_ALL               HPI_MAKE_INDEX(HPI_OBJ_GPIO, 4) -#define HPI_GPIO_WRITE_STATUS           HPI_MAKE_INDEX(HPI_OBJ_GPIO, 5) + +	HPI_GPIO_OPEN = HPI_FUNC_ID(GPIO, 1), +	HPI_GPIO_READ_BIT = HPI_FUNC_ID(GPIO, 2), +	HPI_GPIO_WRITE_BIT = HPI_FUNC_ID(GPIO, 3), +	HPI_GPIO_READ_ALL = HPI_FUNC_ID(GPIO, 4), +	HPI_GPIO_WRITE_STATUS = HPI_FUNC_ID(GPIO, 5),  #define HPI_GPIO_FUNCTION_COUNT 5 -/* ASYNC EVENT */ -#define HPI_ASYNCEVENT_OPEN             HPI_MAKE_INDEX(HPI_OBJ_ASYNCEVENT, 1) -#define HPI_ASYNCEVENT_CLOSE            HPI_MAKE_INDEX(HPI_OBJ_ASYNCEVENT, 2) -#define HPI_ASYNCEVENT_WAIT             HPI_MAKE_INDEX(HPI_OBJ_ASYNCEVENT, 3) -#define HPI_ASYNCEVENT_GETCOUNT         HPI_MAKE_INDEX(HPI_OBJ_ASYNCEVENT, 4) -#define HPI_ASYNCEVENT_GET              HPI_MAKE_INDEX(HPI_OBJ_ASYNCEVENT, 5) -#define HPI_ASYNCEVENT_SENDEVENTS       HPI_MAKE_INDEX(HPI_OBJ_ASYNCEVENT, 6) + +	HPI_ASYNCEVENT_OPEN = HPI_FUNC_ID(ASYNCEVENT, 1), +	HPI_ASYNCEVENT_CLOSE = HPI_FUNC_ID(ASYNCEVENT, 2), +	HPI_ASYNCEVENT_WAIT = HPI_FUNC_ID(ASYNCEVENT, 3), +	HPI_ASYNCEVENT_GETCOUNT = HPI_FUNC_ID(ASYNCEVENT, 4), +	HPI_ASYNCEVENT_GET = HPI_FUNC_ID(ASYNCEVENT, 5), +	HPI_ASYNCEVENT_SENDEVENTS = HPI_FUNC_ID(ASYNCEVENT, 6),  #define HPI_ASYNCEVENT_FUNCTION_COUNT 6 -/* WATCH-DOG */ -#define HPI_WATCHDOG_OPEN               HPI_MAKE_INDEX(HPI_OBJ_WATCHDOG, 1) -#define HPI_WATCHDOG_SET_TIME           HPI_MAKE_INDEX(HPI_OBJ_WATCHDOG, 2) -#define HPI_WATCHDOG_PING               HPI_MAKE_INDEX(HPI_OBJ_WATCHDOG, 3) -/* CLOCK */ -#define HPI_CLOCK_OPEN                  HPI_MAKE_INDEX(HPI_OBJ_CLOCK, 1) -#define HPI_CLOCK_SET_TIME              HPI_MAKE_INDEX(HPI_OBJ_CLOCK, 2) -#define HPI_CLOCK_GET_TIME              HPI_MAKE_INDEX(HPI_OBJ_CLOCK, 3) -/* PROFILE */ -#define HPI_PROFILE_OPEN_ALL            HPI_MAKE_INDEX(HPI_OBJ_PROFILE, 1) -#define HPI_PROFILE_START_ALL           HPI_MAKE_INDEX(HPI_OBJ_PROFILE, 2) -#define HPI_PROFILE_STOP_ALL            HPI_MAKE_INDEX(HPI_OBJ_PROFILE, 3) -#define HPI_PROFILE_GET                 HPI_MAKE_INDEX(HPI_OBJ_PROFILE, 4) -#define HPI_PROFILE_GET_IDLECOUNT       HPI_MAKE_INDEX(HPI_OBJ_PROFILE, 5) -#define HPI_PROFILE_GET_NAME            HPI_MAKE_INDEX(HPI_OBJ_PROFILE, 6) -#define HPI_PROFILE_GET_UTILIZATION     HPI_MAKE_INDEX(HPI_OBJ_PROFILE, 7) + +	HPI_WATCHDOG_OPEN = HPI_FUNC_ID(WATCHDOG, 1), +	HPI_WATCHDOG_SET_TIME = HPI_FUNC_ID(WATCHDOG, 2), +	HPI_WATCHDOG_PING = HPI_FUNC_ID(WATCHDOG, 3), + +	HPI_CLOCK_OPEN = HPI_FUNC_ID(CLOCK, 1), +	HPI_CLOCK_SET_TIME = HPI_FUNC_ID(CLOCK, 2), +	HPI_CLOCK_GET_TIME = HPI_FUNC_ID(CLOCK, 3), + +	HPI_PROFILE_OPEN_ALL = HPI_FUNC_ID(PROFILE, 1), +	HPI_PROFILE_START_ALL = HPI_FUNC_ID(PROFILE, 2), +	HPI_PROFILE_STOP_ALL = HPI_FUNC_ID(PROFILE, 3), +	HPI_PROFILE_GET = HPI_FUNC_ID(PROFILE, 4), +	HPI_PROFILE_GET_IDLECOUNT = HPI_FUNC_ID(PROFILE, 5), +	HPI_PROFILE_GET_NAME = HPI_FUNC_ID(PROFILE, 6), +	HPI_PROFILE_GET_UTILIZATION = HPI_FUNC_ID(PROFILE, 7)  #define HPI_PROFILE_FUNCTION_COUNT 7 -/* ////////////////////////////////////////////////////////////////////// */ -/* PRIVATE ATTRIBUTES */ +};  /* ////////////////////////////////////////////////////////////////////// */  /* STRUCTURES */ @@ -672,18 +551,7 @@ Threshold is a -ve number in units of dB/100,  /** PCI bus resource */  struct hpi_pci {  	u32 __iomem *ap_mem_base[HPI_MAX_ADAPTER_MEM_SPACES]; -	struct pci_dev *p_os_data; - -#ifndef HPI64BIT		/* keep structure size constant */ -	u32 padding[HPI_MAX_ADAPTER_MEM_SPACES + 1]; -#endif -	u16 vendor_id; -	u16 device_id; -	u16 subsys_vendor_id; -	u16 subsys_device_id; -	u16 bus_number; -	u16 device_number; -	u32 interrupt; +	struct pci_dev *pci_dev;  };  struct hpi_resource { @@ -702,12 +570,10 @@ struct hpi_resource {  /** Format info used inside struct hpi_message      Not the same as public API struct hpi_format */  struct hpi_msg_format { -	u32 sample_rate; -				/**< 11025, 32000, 44100 ... */ -	u32 bit_rate;	      /**< for MPEG */ -	u32 attributes; -				/**< Stereo/JointStereo/Mono */ -	u16 channels;	      /**< 1,2..., (or ancillary mode or idle bit */ +	u32 sample_rate; /**< 11025, 32000, 44100 etc. */ +	u32 bit_rate; /**< for MPEG */ +	u32 attributes;	/**< stereo/joint_stereo/mono */ +	u16 channels; /**< 1,2..., (or ancillary mode or idle bit */  	u16 format; /**< HPI_FORMAT_PCM16, _MPEG etc. see \ref HPI_FORMATS. */  }; @@ -740,9 +606,9 @@ struct hpi_data_compat32 {  #endif  struct hpi_buffer { -  /** placehoder for backward compatability (see dwBufferSize) */ +  /** placeholder for backward compatibility (see dwBufferSize) */  	struct hpi_msg_format reserved; -	u32 command;	/**< HPI_BUFFER_CMD_xxx*/ +	u32 command; /**< HPI_BUFFER_CMD_xxx*/  	u32 pci_address; /**< PCI physical address of buffer for DSP DMA */  	u32 buffer_size; /**< must line up with data_size of HPI_DATA*/  }; @@ -754,7 +620,7 @@ struct hpi_hostbuffer_status {  	u32 auxiliary_data_available;  	u32 stream_state;  	/* DSP index in to the host bus master buffer. */ -	u32 dSP_index; +	u32 dsp_index;  	/* Host index in to the host bus master buffer. */  	u32 host_index;  	u32 size_in_bytes; @@ -777,60 +643,54 @@ struct hpi_subsys_msg {  struct hpi_subsys_res {  	u32 version; -	u32 data;		/* used to return extended version */ -	u16 num_adapters;	/* number of adapters */ +	u32 data;		/* extended version */ +	u16 num_adapters;  	u16 adapter_index; -	u16 aw_adapter_list[HPI_MAX_ADAPTERS]; -}; - -struct hpi_adapter_msg { -	u32 adapter_mode;	/* adapter mode */ -	u16 assert_id;		/* assert number for "test assert" call -				   object_index for find object call -				   query_or_set for hpi_adapter_set_mode_ex() */ -	u16 object_type;	/* for adapter find object call */ +	u16 adapter_type; +	u16 pad16;  };  union hpi_adapterx_msg { -	struct hpi_adapter_msg adapter;  	struct { -		u32 offset; -	} query_flash; +		u32 dsp_address; +		u32 count_bytes; +	} debug_read;  	struct { -		u32 offset; -		u32 length; -		u32 key; -	} start_flash; +		u32 adapter_mode; +		u16 query_or_set; +	} mode;  	struct { -		u32 checksum; -		u16 sequence; -		u16 length; -		u16 offset; /**< offset from start of msg to data */ -		u16 unused; -	} program_flash; +		u16 index; +	} module_info; +	struct { +		u16 index; +		u16 what; +		u16 property_index; +	} property_enum;  	struct {  		u16 property;  		u16 parameter1;  		u16 parameter2;  	} property_set;  	struct { -		u16 index; -		u16 what; -		u16 property_index; -	} property_enum; +		u32 pad32; +		u16 key1; +		u16 key2; +	} restart;  	struct { -		u16 index; -	} module_info; +		u32 pad32; +		u16 value; +	} test_assert;  	struct { -		u32 dsp_address; -		u32 count_bytes; -	} debug_read; +		u32 yes; +	} irq_query; +	u32 pad[3];  };  struct hpi_adapter_res {  	u32 serial_number;  	u16 adapter_type; -	u16 adapter_index;	/* is this needed? also used for dsp_index */ +	u16 adapter_index;  	u16 num_instreams;  	u16 num_outstreams;  	u16 num_mixers; @@ -839,19 +699,25 @@ struct hpi_adapter_res {  };  union hpi_adapterx_res { -	struct hpi_adapter_res adapter; +	struct hpi_adapter_res info;  	struct { -		u32 checksum; -		u32 length; -		u32 version; -	} query_flash; +		u32 p1; +		u16 count; +		u16 dsp_index; +		u32 p2; +		u32 dsp_msg_addr; +		char sz_message[HPI_STRING_LEN]; +	} assert;  	struct { -		u16 sequence; -	} program_flash; +		u32 adapter_mode; +	} mode;  	struct {  		u16 parameter1;  		u16 parameter2;  	} property_get; +	struct { +		u32 yes; +	} irq_query;  };  struct hpi_stream_msg { @@ -863,6 +729,7 @@ struct hpi_stream_msg {  		u32 time_scale;  		struct hpi_buffer buffer;  		struct hpi_streamid stream; +		u32 threshold_bytes;  	} u;  }; @@ -911,7 +778,7 @@ struct hpi_stream_res {  struct hpi_mixer_msg {  	u16 control_index;  	u16 control_type;	/* = HPI_CONTROL_METER _VOLUME etc */ -	u16 padding1;		/* maintain alignment of subsequent fields */ +	u16 padding1;		/* Maintain alignment of subsequent fields */  	u16 node_type1;		/* = HPI_SOURCENODE_LINEIN etc */  	u16 node_index1;	/* = 0..N */  	u16 node_type2; @@ -949,6 +816,11 @@ union hpi_mixerx_res {  		u32 p_data;	/* pointer to data array */  		u16 more_to_do;	/* indicates if there is more to do */  	} gcabi; +	struct { +		u32 total_controls;	/* count of controls in the mixer */ +		u32 cache_controls;	/* count of controls in the cac */ +		u32 cache_bytes;	/* size of cache */ +	} cache_info;  };  struct hpi_control_msg { @@ -1000,107 +872,29 @@ union hpi_control_union_res {  		u32 band;  		u32 frequency;  		u32 gain; -		u32 level;  		u32 deemphasis;  		struct {  			u32 data[2];  			u32 bLER;  		} rds; +		short s_level; +		struct { +			u16 value; +			u16 mask; +		} status;  	} tuner;  	struct {  		char sz_data[8];  		u32 remaining_chars;  	} chars8;  	char c_data12[12]; -}; - -/* HPI_CONTROLX_STRUCTURES */ - -/* Message */ - -/** Used for all HMI variables where max length <= 8 bytes -*/ -struct hpi_controlx_msg_cobranet_data { -	u32 hmi_address; -	u32 byte_count; -	u32 data[2]; -}; - -/** Used for string data, and for packet bridge -*/ -struct hpi_controlx_msg_cobranet_bigdata { -	u32 hmi_address; -	u32 byte_count; -	u8 *pb_data; -#ifndef HPI64BIT -	u32 padding; -#endif -}; - -/** Used for PADS control reading of string fields. -*/ -struct hpi_controlx_msg_pad_data { -	u32 field; -	u32 byte_count; -	u8 *pb_data; -#ifndef HPI64BIT -	u32 padding; -#endif -}; - -/** Used for generic data -*/ - -struct hpi_controlx_msg_generic { -	u32 param1; -	u32 param2; -}; - -struct hpi_controlx_msg { -	u16 attribute;		/* control attribute or property */ -	u16 saved_index; -	union { -		struct hpi_controlx_msg_cobranet_data cobranet_data; -		struct hpi_controlx_msg_cobranet_bigdata cobranet_bigdata; -		struct hpi_controlx_msg_generic generic; -		struct hpi_controlx_msg_pad_data pad_data; -		/*struct param_value universal_value; */ -		/* nothing extra to send for status read */ -	} u; -}; - -/* Response */ -/** -*/ -struct hpi_controlx_res_cobranet_data { -	u32 byte_count; -	u32 data[2]; -}; - -struct hpi_controlx_res_cobranet_bigdata { -	u32 byte_count; -}; - -struct hpi_controlx_res_cobranet_status { -	u32 status; -	u32 readable_size; -	u32 writeable_size; -}; - -struct hpi_controlx_res_generic { -	u32 param1; -	u32 param2; -}; - -struct hpi_controlx_res {  	union { -		struct hpi_controlx_res_cobranet_bigdata cobranet_bigdata; -		struct hpi_controlx_res_cobranet_data cobranet_data; -		struct hpi_controlx_res_cobranet_status cobranet_status; -		struct hpi_controlx_res_generic generic; -		/*struct param_info universal_info; */ -		/*struct param_value universal_value; */ -	} u; +		struct { +			u32 status; +			u32 readable_size; +			u32 writeable_size; +		} status; +	} cobranet;  };  struct hpi_nvmemory_msg { @@ -1178,11 +972,11 @@ struct hpi_profile_res_open {  };  struct hpi_profile_res_time { -	u32 micro_seconds; +	u32 total_tick_count;  	u32 call_count; -	u32 max_micro_seconds; -	u32 min_micro_seconds; -	u16 seconds; +	u32 max_tick_count; +	u32 ticks_per_millisecond; +	u16 profile_interval;  };  struct hpi_profile_res_name { @@ -1218,7 +1012,6 @@ struct hpi_message {  	u16 obj_index;		/*  */  	union {  		struct hpi_subsys_msg s; -		struct hpi_adapter_msg a;  		union hpi_adapterx_msg ax;  		struct hpi_stream_msg d;  		struct hpi_mixer_msg m; @@ -1227,7 +1020,6 @@ struct hpi_message {  		/* identical to struct hpi_control_msg,  		   but field naming is improved */  		struct hpi_control_union_msg cu; -		struct hpi_controlx_msg cx;	/* extended mixer control; */  		struct hpi_nvmemory_msg n;  		struct hpi_gpio_msg l;	/* digital i/o */  		struct hpi_watchdog_msg w; @@ -1239,7 +1031,7 @@ struct hpi_message {  };  #define HPI_MESSAGE_SIZE_BY_OBJECT { \ -	sizeof(struct hpi_message_header) ,   /* default, no object type 0 */ \ +	sizeof(struct hpi_message_header) ,   /* Default, no object type 0 */ \  	sizeof(struct hpi_message_header) + sizeof(struct hpi_subsys_msg),\  	sizeof(struct hpi_message_header) + sizeof(union hpi_adapterx_msg),\  	sizeof(struct hpi_message_header) + sizeof(struct hpi_stream_msg),\ @@ -1252,10 +1044,15 @@ struct hpi_message {  	sizeof(struct hpi_message_header) + sizeof(struct hpi_watchdog_msg),\  	sizeof(struct hpi_message_header) + sizeof(struct hpi_clock_msg),\  	sizeof(struct hpi_message_header) + sizeof(struct hpi_profile_msg),\ -	sizeof(struct hpi_message_header) + sizeof(struct hpi_controlx_msg),\ +	sizeof(struct hpi_message_header), /* controlx obj removed */ \  	sizeof(struct hpi_message_header) + sizeof(struct hpi_async_msg) \  } +/* +Note that the wSpecificError error field should be inspected and potentially +reported whenever HPI_ERROR_DSP_COMMUNICATION or HPI_ERROR_DSP_BOOTLOAD is +returned in wError. +*/  struct hpi_response_header {  	u16 size;  	u8 type;		/* HPI_TYPE_RESPONSE  */ @@ -1277,7 +1074,6 @@ struct hpi_response {  	u16 specific_error;	/* adapter specific error */  	union {  		struct hpi_subsys_res s; -		struct hpi_adapter_res a;  		union hpi_adapterx_res ax;  		struct hpi_stream_res d;  		struct hpi_mixer_res m; @@ -1285,7 +1081,6 @@ struct hpi_response {  		struct hpi_control_res c;	/* mixer control; */  		/* identical to hpi_control_res, but field naming is improved */  		union hpi_control_union_res cu; -		struct hpi_controlx_res cx;	/* extended mixer control; */  		struct hpi_nvmemory_res n;  		struct hpi_gpio_res l;	/* digital i/o */  		struct hpi_watchdog_res w; @@ -1297,7 +1092,7 @@ struct hpi_response {  };  #define HPI_RESPONSE_SIZE_BY_OBJECT { \ -	sizeof(struct hpi_response_header) ,/* default, no object type 0 */ \ +	sizeof(struct hpi_response_header) ,/* Default, no object type 0 */ \  	sizeof(struct hpi_response_header) + sizeof(struct hpi_subsys_res),\  	sizeof(struct hpi_response_header) + sizeof(union  hpi_adapterx_res),\  	sizeof(struct hpi_response_header) + sizeof(struct hpi_stream_res),\ @@ -1310,11 +1105,11 @@ struct hpi_response {  	sizeof(struct hpi_response_header) + sizeof(struct hpi_watchdog_res),\  	sizeof(struct hpi_response_header) + sizeof(struct hpi_clock_res),\  	sizeof(struct hpi_response_header) + sizeof(struct hpi_profile_res),\ -	sizeof(struct hpi_response_header) + sizeof(struct hpi_controlx_res),\ +	sizeof(struct hpi_response_header), /* controlx obj removed */ \  	sizeof(struct hpi_response_header) + sizeof(struct hpi_async_res) \  } -/*********************** version 1 message/response *****************************/ +/*********************** version 1 message/response **************************/  #define HPINET_ETHERNET_DATA_SIZE (1500)  #define HPINET_IP_HDR_SIZE (20)  #define HPINET_IP_DATA_SIZE (HPINET_ETHERNET_DATA_SIZE - HPINET_IP_HDR_SIZE) @@ -1335,63 +1130,33 @@ struct hpi_res_adapter_get_info {  	struct hpi_adapter_res p;  }; -/* padding is so these are same size as v0 hpi_message */ -struct hpi_msg_adapter_query_flash { -	struct hpi_message_header h; -	u32 offset; -	u8 pad_to_version0_size[sizeof(struct hpi_message) -	/* V0 res */ -		sizeof(struct hpi_message_header) - 1 * sizeof(u32)]; -}; - -/* padding is so these are same size as v0 hpi_response */ -struct hpi_res_adapter_query_flash { +struct hpi_res_adapter_debug_read {  	struct hpi_response_header h; -	u32 checksum; -	u32 length; -	u32 version; -	u8 pad_to_version0_size[sizeof(struct hpi_response) -	/* V0 res */ -		sizeof(struct hpi_response_header) - 3 * sizeof(u32)]; +	u8 bytes[1024];  }; -struct hpi_msg_adapter_start_flash { -	struct hpi_message_header h; -	u32 offset; -	u32 length; -	u32 key; -	u8 pad_to_version0_size[sizeof(struct hpi_message) -	/* V0 res */ -		sizeof(struct hpi_message_header) - 3 * sizeof(u32)]; -}; - -struct hpi_res_adapter_start_flash { -	struct hpi_response_header h; -	u8 pad_to_version0_size[sizeof(struct hpi_response) -	/* V0 res */ -		sizeof(struct hpi_response_header)]; +struct hpi_msg_cobranet_hmi { +	u16 attribute; +	u16 padding; +	u32 hmi_address; +	u32 byte_count;  }; -struct hpi_msg_adapter_program_flash_payload { -	u32 checksum; -	u16 sequence; -	u16 length; -	u16 offset; /**< offset from start of msg to data */ -	u16 unused; -	/* ensure sizeof(header + payload) == sizeof(hpi_message_V0) -	   because old firmware expects data after message of this size */ -	u8 pad_to_version0_size[sizeof(struct hpi_message) -	/* V0 message */ -		sizeof(struct hpi_message_header) - sizeof(u32) - -		4 * sizeof(u16)]; +struct hpi_msg_cobranet_hmiwrite { +	struct hpi_message_header h; +	struct hpi_msg_cobranet_hmi p; +	u8 bytes[256];  }; -struct hpi_msg_adapter_program_flash { +struct hpi_msg_cobranet_hmiread {  	struct hpi_message_header h; -	struct hpi_msg_adapter_program_flash_payload p; -	u32 data[256]; +	struct hpi_msg_cobranet_hmi p;  }; -struct hpi_res_adapter_program_flash { +struct hpi_res_cobranet_hmiread {  	struct hpi_response_header h; -	u16 sequence; -	u8 pad_to_version0_size[sizeof(struct hpi_response) -	/* V0 res */ -		sizeof(struct hpi_response_header) - sizeof(u16)]; +	u32 byte_count; +	u8 bytes[256];  };  #if 1 @@ -1414,30 +1179,16 @@ struct hpi_response_header_v1 {  };  #endif -/* STRV HPI Packet */ -struct hpi_msg_strv { -	struct hpi_message_header h; -	struct hpi_entity strv; -}; - -struct hpi_res_strv { -	struct hpi_response_header h; -	struct hpi_entity strv; -}; -#define MIN_STRV_PACKET_SIZE sizeof(struct hpi_res_strv) -  struct hpi_msg_payload_v0 {  	struct hpi_message_header h;  	union {  		struct hpi_subsys_msg s; -		struct hpi_adapter_msg a;  		union hpi_adapterx_msg ax;  		struct hpi_stream_msg d;  		struct hpi_mixer_msg m;  		union hpi_mixerx_msg mx;  		struct hpi_control_msg c;  		struct hpi_control_union_msg cu; -		struct hpi_controlx_msg cx;  		struct hpi_nvmemory_msg n;  		struct hpi_gpio_msg l;  		struct hpi_watchdog_msg w; @@ -1451,14 +1202,12 @@ struct hpi_res_payload_v0 {  	struct hpi_response_header h;  	union {  		struct hpi_subsys_res s; -		struct hpi_adapter_res a;  		union hpi_adapterx_res ax;  		struct hpi_stream_res d;  		struct hpi_mixer_res m;  		union hpi_mixerx_res mx;  		struct hpi_control_res c;  		union hpi_control_union_res cu; -		struct hpi_controlx_res cx;  		struct hpi_nvmemory_res n;  		struct hpi_gpio_res l;  		struct hpi_watchdog_res w; @@ -1471,13 +1220,13 @@ struct hpi_res_payload_v0 {  union hpi_message_buffer_v1 {  	struct hpi_message m0;	/* version 0 */  	struct hpi_message_header_v1 h; -	unsigned char buf[HPI_MAX_PAYLOAD_SIZE]; +	u8 buf[HPI_MAX_PAYLOAD_SIZE];  };  union hpi_response_buffer_v1 {  	struct hpi_response r0;	/* version 0 */  	struct hpi_response_header_v1 h; -	unsigned char buf[HPI_MAX_PAYLOAD_SIZE]; +	u8 buf[HPI_MAX_PAYLOAD_SIZE];  };  compile_time_assert((sizeof(union hpi_message_buffer_v1) <= @@ -1499,6 +1248,11 @@ struct hpi_control_defn {  /*////////////////////////////////////////////////////////////////////////// */  /* declarations for control caching (internal to HPI<->DSP interaction)      */ +/** indicates a cached u16 value is invalid. */ +#define HPI_CACHE_INVALID_UINT16 0xFFFF +/** indicates a cached short value is invalid. */ +#define HPI_CACHE_INVALID_SHORT -32768 +  /** A compact representation of (part of) a controls state.  Used for efficient transfer of the control state  between DSP and host or across a network @@ -1512,58 +1266,97 @@ struct hpi_control_cache_info {  	u16 control_index;  }; -struct hpi_control_cache_single { +struct hpi_control_cache_vol { +	struct hpi_control_cache_info i; +	short an_log[2]; +	unsigned short flags; +	char padding[2]; +}; + +struct hpi_control_cache_meter { +	struct hpi_control_cache_info i; +	short an_log_peak[2]; +	short an_logRMS[2]; +}; + +struct hpi_control_cache_channelmode { +	struct hpi_control_cache_info i; +	u16 mode; +	char temp_padding[6]; +}; + +struct hpi_control_cache_mux { +	struct hpi_control_cache_info i; +	u16 source_node_type; +	u16 source_node_index; +	char temp_padding[4]; +}; + +struct hpi_control_cache_level { +	struct hpi_control_cache_info i; +	short an_log[2]; +	char temp_padding[4]; +}; + +struct hpi_control_cache_tuner { +	struct hpi_control_cache_info i; +	u32 freq_ink_hz; +	u16 band; +	short s_level_avg; +}; + +struct hpi_control_cache_aes3rx { +	struct hpi_control_cache_info i; +	u32 error_status; +	u32 format; +}; + +struct hpi_control_cache_aes3tx { +	struct hpi_control_cache_info i; +	u32 format; +	char temp_padding[4]; +}; + +struct hpi_control_cache_tonedetector { +	struct hpi_control_cache_info i; +	u16 state; +	char temp_padding[6]; +}; + +struct hpi_control_cache_silencedetector { +	struct hpi_control_cache_info i; +	u32 state; +	char temp_padding[4]; +}; + +struct hpi_control_cache_sampleclock {  	struct hpi_control_cache_info i; +	u16 source; +	u16 source_index; +	u32 sample_rate; +}; + +struct hpi_control_cache_microphone { +	struct hpi_control_cache_info i; +	u16 phantom_state; +	char temp_padding[6]; +}; + +struct hpi_control_cache_single {  	union { -		struct {	/* volume */ -			short an_log[2]; -		} v; -		struct {	/* peak meter */ -			short an_log_peak[2]; -			short an_logRMS[2]; -		} p; -		struct {	/* channel mode */ -			u16 mode; -		} m; -		struct {	/* multiplexer */ -			u16 source_node_type; -			u16 source_node_index; -		} x; -		struct {	/* level/trim */ -			short an_log[2]; -		} l; -		struct {	/* tuner - partial caching. -				   some attributes go to the DSP. */ -			u32 freq_ink_hz; -			u16 band; -			u16 level; -		} t; -		struct {	/* AESEBU rx status */ -			u32 error_status; -			u32 source; -		} aes3rx; -		struct {	/* AESEBU tx */ -			u32 format; -		} aes3tx; -		struct {	/* tone detector */ -			u16 state; -		} tone; -		struct {	/* silence detector */ -			u32 state; -			u32 count; -		} silence; -		struct {	/* sample clock */ -			u16 source; -			u16 source_index; -			u32 sample_rate; -		} clk; -		struct {	/* microphone control */ -			u16 state; -		} phantom_power; -		struct {	/* generic control */ -			u32 dw1; -			u32 dw2; -		} g; +		struct hpi_control_cache_info i; +		struct hpi_control_cache_vol vol; +		struct hpi_control_cache_meter meter; +		struct hpi_control_cache_channelmode mode; +		struct hpi_control_cache_mux mux; +		struct hpi_control_cache_level level; +		struct hpi_control_cache_tuner tuner; +		struct hpi_control_cache_aes3rx aes3rx; +		struct hpi_control_cache_aes3tx aes3tx; +		struct hpi_control_cache_tonedetector tone; +		struct hpi_control_cache_silencedetector silence; +		struct hpi_control_cache_sampleclock clk; +		struct hpi_control_cache_microphone microphone;  	} u;  }; @@ -1580,11 +1373,10 @@ struct hpi_control_cache_pad {  	u32 traffic_anouncement;  }; -/*/////////////////////////////////////////////////////////////////////////// */ -/* declarations for 2^N sized FIFO buffer (internal to HPI<->DSP interaction) */ +/* 2^N sized FIFO buffer (internal to HPI<->DSP interaction) */  struct hpi_fifo_buffer {  	u32 size; -	u32 dSP_index; +	u32 dsp_index;  	u32 host_index;  }; @@ -1606,25 +1398,16 @@ u32 hpi_indexes_to_handle(const char c_object, const u16 adapter_index,  /*////////////////////////////////////////////////////////////////////////// */  /* main HPI entry point */ -hpi_handler_func hpi_send_recv; - -/* UDP message */ -void hpi_send_recvUDP(struct hpi_message *phm, struct hpi_response *phr, -	const unsigned int timeout); +void hpi_send_recv(struct hpi_message *phm, struct hpi_response *phr);  /* used in PnP OS/driver */ -u16 hpi_subsys_create_adapter(const struct hpi_hsubsys *ph_subsys, -	const struct hpi_resource *p_resource, u16 *pw_adapter_index); - -u16 hpi_subsys_delete_adapter(const struct hpi_hsubsys *ph_subsys, -	u16 adapter_index); +u16 hpi_subsys_create_adapter(const struct hpi_resource *p_resource, +	u16 *pw_adapter_index); -u16 hpi_outstream_host_buffer_get_info(const struct hpi_hsubsys *ph_subsys, -	u32 h_outstream, u8 **pp_buffer, +u16 hpi_outstream_host_buffer_get_info(u32 h_outstream, u8 **pp_buffer,  	struct hpi_hostbuffer_status **pp_status); -u16 hpi_instream_host_buffer_get_info(const struct hpi_hsubsys *ph_subsys, -	u32 h_instream, u8 **pp_buffer, +u16 hpi_instream_host_buffer_get_info(u32 h_instream, u8 **pp_buffer,  	struct hpi_hostbuffer_status **pp_status);  u16 hpi_adapter_restart(u16 adapter_index); @@ -1642,9 +1425,7 @@ void hpi_stream_response_to_legacy(struct hpi_stream_res *pSR);  /*////////////////////////////////////////////////////////////////////////// */  /* declarations for individual HPI entry points */ -hpi_handler_func HPI_1000;  hpi_handler_func HPI_6000;  hpi_handler_func HPI_6205; -hpi_handler_func HPI_COMMON;  #endif				/* _HPI_INTERNAL_H_ */  | 
