--- a/Audio HW Control/audio_hw_control_chipset_api.h Sat Oct 10 12:43:55 2009 +0100
+++ b/Audio HW Control/audio_hw_control_chipset_api.h Sat Oct 10 12:57:00 2009 +0100
@@ -1,7 +1,7 @@
/*
- audio_hw_control_chipset_api.h
+ audio_hwctrl_chipset_api.h
- Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+ Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
All rights reserved.
This program and the accompanying materials are made available
@@ -13,7 +13,7 @@
Nokia Corporation - initial contribution.
Contributors:
-*/
+*/
#ifndef AUDIO_HWCTRL_CHIPSET_API_H
#define AUDIO_HWCTRL_CHIPSET_API_H
@@ -22,7 +22,6 @@
extern "C" {
#endif /* __cplusplus */
-
/* Each OMX header must include all required header files to allow the
* header to compile without errors. The includes below are required
* for this header file to compile successfully
@@ -31,177 +30,168 @@
#include <OMX_Audio.h>
-/* structures and enums used by OMX interface */
-
- typedef enum OMX_AUDIO_HWREGISTERTYPE {
- OMX_AUDIO_IO = 0,
- OMX_AUDIO_I2C,
- OMX_AUDIO_SLIMBUS,
- OMX_AUDIO_CBUS = 0xFFFF
- } OMX_AUDIO_HWREGISTERTYPE;
-
- typedef struct OMX_AUDIO_REGBANKDESCRIPTORTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nRegBankIndex;
- OMX_U32 nLogicalStartAddr;
- OMX_U32 nLogicalEndAddr;
- OMX_AUDIO_HWREGISTERTYPE eRegBankType;
-
- } OMX_AUDIO_REGBANKDESCRIPTORTYPE;
-
- typedef enum OMX_AUDIO_HWLOOPSTYPE {
- OMX_AUDIO_NOLOOP = 0,
- OMX_AUDIO_SIDETONE_LOOP = 0xFFFF
- /* rest of HW loops are to be defined on a vendor specific basis */
-
- } OMX_AUDIO_HWLOOPSTYPE;
+/** Audio power control.
+*/
+typedef struct OMX_AUDIO_CONFIG_POWERTYPE {
+ OMX_U32 nSize;
+ OMX_VERSIONTYPE nVersion;
+ OMX_U32 nPortIndex;
+ OMX_U32 nChannel;
+ OMX_BOOL bPower;
+} OMX_AUDIO_CONFIG_POWERTYPE;
- typedef enum OMX_AUDIO_HWOPERATIONTYPE {
- OMX_AUDIO_NOOP = 0,
- OMX_AUDIO_16BIT_SINGLE_READ,
- OMX_AUDIO_16BIT_SINGLE_WRITE,
- OMX_AUDIO_32BIT_SINGLE_READ,
- OMX_AUDIO_32BIT_SINGLE_WRITE,
- OMX_AUDIO_16BIT_MULTI_READ,
- OMX_AUDIO_16BIT_MULTI_WRITE,
- OMX_AUDIO_32BIT_MULTI_READ,
- OMX_AUDIO_32BIT_MULTI_WRITE,
- OMX_AUDIO_16BIT_BURST_MULTI_READ,
- OMX_AUDIO_16BIT_BURST_MULTI_WRITE,
- OMX_AUDIO_32BIT_BURST_MULTI_READ,
- OMX_AUDIO_32BIT_BURST_MULTI_WRITE = 0xFFFF
- } OMX_AUDIO_HWOPERATIONTYPE;
+/** Audio volume ramp control.
+*/
+typedef struct OMX_AUDIO_CONFIG_VOLUMERAMPTYPE {
+ OMX_U32 nSize;
+ OMX_VERSIONTYPE nVersion;
+ OMX_U32 nPortIndex;
+ OMX_U32 nChannel;
+ OMX_BOOL bLinear;
+ OMX_BS32 sStartVolume;
+ OMX_BS32 sEndVolume;
+ OMX_TICKS nRampDuration;
+ OMX_BOOL bRampTerminate;
+ OMX_BS32 sCurrentVolume;
+ OMX_TICKS nRampCurrentTime;
+ OMX_TICKS nRampMinDuration;
+ OMX_TICKS nRampMaxDuration;
+ OMX_U32 nVolumeStep;
+} OMX_AUDIO_CONFIG_VOLUMERAMPTYPE;
-
- typedef enum OMX_AUDIO_HWCTRL_STATUSTYPE {
- OMX_AUDIO_OK = 0,
- OMX_AUDIO_FAIL,
- /* if callback facility is somehow solved in OpenMAX IL for
- getconfig/setconfig parameter calls, it is expected */
- /* to have here extra status information that can be returned
- for e.g. multi-read/write commands */
- OMX_AUDIO_NOT_SUPPORTED = 0xFFFF
- } OMX_AUDIO_HWCTRL_STATUSTYPE;
+/** Settings burst control.
+*/
+typedef struct OMX_AUDIO_CONFIG_BURSTCONTROLTYPE {
+ OMX_U32 nSize;
+ OMX_VERSIONTYPE nVersion;
+ OMX_U32 nPortIndex;
+ OMX_BOOL bBurstControl;
+ OMX_BOOL bStatus;
+} OMX_AUDIO_CONFIG_BURSTCONTROLTYPE;
+
+/** Audio register bank query.
+*/
+typedef struct OMX_AUDIO_CONFIG_REGISTERBANKQUERYTYPE {
+ OMX_U32 nSize;
+ OMX_VERSIONTYPE nVersion;
+ OMX_U32 nPortIndex;
+ OMX_U16 nNumRegisterBanks;
+} OMX_AUDIO_CONFIG_REGISTERBANKQUERYTYPE;
-
-/* Configuration parameters */
-
-typedef struct OMX_AUDIO_CONFIG_POWERTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nChannel;
- OMX_BOOL bPower;
-} OMX_AUDIO_CONFIG_POWERTYPE;
-
+typedef enum OMX_AUDIO_HWREGISTERTYPE {
+ OMX_AUDIO_IO = 0,
+ OMX_AUDIO_I2C,
+ OMX_AUDIO_SLIMBUS,
+ OMX_AUDIO_CBUS = 0xFFFF
+} OMX_AUDIO_HWREGISTERTYPE;
+
+typedef struct OMX_AUDIO_REGBANKDESCRIPTORTYPE {
+ OMX_U32 nSize;
+ OMX_VERSIONTYPE nVersion;
+ OMX_U32 nRegBankIndex;
+ OMX_U32 nLogicalStartAddr;
+ OMX_U32 nLogicalEndAddr;
+ OMX_AUDIO_HWREGISTERTYPE eRegBankType;
+} OMX_AUDIO_REGBANKDESCRIPTORTYPE;
-typedef struct OMX_AUDIO_CONFIG_VOLUMERAMPTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nChannel;
- OMX_BOOL bLinear;
- OMX_BS32 sStartVolume;
- OMX_BS32 sEndVolume;
- OMX_TICKS nRampDuration;
- OMX_BOOL bRampTerminate;
- OMX_BS32 sCurrentVolume;
- OMX_TICKS nRampCurrentTime;
- OMX_TICKS nRampMinDuration;
- OMX_TICKS nRampMaxDuration;
- OMX_U32 nVolumeStep;
- } OMX_AUDIO_CONFIG_VOLUMERAMPTYPE;
+/** Audio register bank table control.
+*/
+typedef struct OMX_AUDIO_CONFIG_REGISTERBANKTABLETYPE {
+ OMX_U32 nSize;
+ OMX_VERSIONTYPE nVersion;
+ OMX_U32 nPortIndex;
+ OMX_U16 nNumRegisterBanks;
+ OMX_AUDIO_REGBANKDESCRIPTORTYPE RegBankDescriptorTable;
+} OMX_AUDIO_CONFIG_REGISTERBANKTABLETYPE;
- typedef struct OMX_AUDIO_CONFIG_BURSTCONTROLTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_BOOL bBurstControl;
- OMX_BOOL bStatus;
- } OMX_AUDIO_CONFIG_BURSTCONTROLTYPE;
-
- typedef struct OMX_AUDIO_CONFIG_REGISTERBANKQUERYTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U16 nNumRegisterBanks;
- } OMX_AUDIO_CONFIG_REGISTERBANKQUERYTYPE;
-
+typedef enum OMX_AUDIO_HWCTRL_STATUSTYPE {
+ OMX_AUDIO_OK = 0,
+ OMX_AUDIO_FAIL,
+ /* if callback facility is somehow solved in OpenMAX IL for getconfig/setconfig parameter calls, it is expected */
+ /* to have here extra status information that can be returned for e.g. multi-read/write commands */
+ OMX_AUDIO_NOT_SUPPORTED = 0xFFFF
+} OMX_AUDIO_HWCTRL_STATUSTYPE;
- typedef enum OMX_AUDIO_HWREGISTERTYPE {
- OMX_AUDIO_IO = 0,
- OMX_AUDIO_I2C,
- OMX_AUDIO_SLIMBUS,
- OMX_AUDIO_CBUS = 0xFFFF
- } OMX_AUDIO_HWREGISTERTYPE;
-
-
- typedef struct OMX_AUDIO_REGBANKDESCRIPTORTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nRegBankIndex;
- OMX_U32 nLogicalStartAddr;
- OMX_U32 nLogicalEndAddr;
- OMX_AUDIO_HWREGISTERTYPE eRegBankType;
-
- } OMX_AUDIO_REGBANKDESCRIPTORTYPE;
+typedef enum OMX_AUDIO_HWOPERATIONTYPE {
+ OMX_AUDIO_NOOP = 0,
+ OMX_AUDIO_16BIT_SINGLE_READ,
+ OMX_AUDIO_16BIT_SINGLE_WRITE,
+ OMX_AUDIO_32BIT_SINGLE_READ,
+ OMX_AUDIO_32BIT_SINGLE_WRITE,
+ OMX_AUDIO_16BIT_MULTI_READ,
+ OMX_AUDIO_16BIT_MULTI_WRITE,
+ OMX_AUDIO_32BIT_MULTI_READ,
+ OMX_AUDIO_32BIT_MULTI_WRITE,
+ OMX_AUDIO_16BIT_BURST_MULTI_READ,
+ OMX_AUDIO_16BIT_BURST_MULTI_WRITE,
+ OMX_AUDIO_32BIT_BURST_MULTI_READ,
+ OMX_AUDIO_32BIT_BURST_MULTI_WRITE = 0xFFFF
+} OMX_AUDIO_HWOPERATIONTYPE;
- typedef struct OMX_AUDIO_CONFIG_REGISTERBANKTABLETYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U16 nNumRegisterBanks;
- OMX_AUDIO_REGBANKDESCRIPTORTYPE RegBankDescriptorTable;
- } OMX_AUDIO_CONFIG_REGISTERBANKTABLETYPE;
+/** Custom audio HW control.
+*/
+typedef struct OMX_AUDIO_CONFIG_CUSTOMHWCONTROLTYPE {
+ OMX_U32 nSize;
+ OMX_VERSIONTYPE nVersion;
+ OMX_U32 nPortIndex;
+ OMX_AUDIO_HWCTRL_STATUSTYPE eStatus;
+ OMX_AUDIO_HWOPERATIONTYPE eHwOperation;
+ OMX_AUDIO_HWREGISTERTYPE eRegisterType;
+ OMX_U16 nDataCount;
+ OMX_U32 nLogicalAddress;
+ OMX_U16 nData;
+} OMX_AUDIO_CONFIG_CUSTOMHWCONTROLTYPE;
- typedef struct OMX_AUDIO_CONFIG_CUSTOMHWCONTROLTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_AUDIO_HWCTRL_STATUSTYPE eStatus;
- OMX_AUDIO_HWOPERATIONTYPE eHwOperation;
- OMX_AUDIO_HWREGISTERTYPE eRegisterType;
- OMX_U16 nDataCount;
- OMX_U32 nLogicalAddress;
- OMX_U16 nData;
- } OMX_AUDIO_CONFIG_CUSTOMHWCONTROLTYPE;
+typedef enum OMX_AUDIO_HWLOOPSTYPE {
+ OMX_AUDIO_NOLOOP = 0,
+ OMX_AUDIO_SIDETONE_LOOP = 0xFFFF
+ /* rest of HW loops are to be defined on a vendor specific basis */
+} OMX_AUDIO_HWLOOPSTYPE;
+/** Audio HW loop support query.
+*/
typedef struct OMX_AUDIO_CONFIG_HWLOOPSUPPORTTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_U32 nSupportedLoops;
- OMX_AUDIO_HWLOOPSTYPE eLoopIndex;
-
- } OMX_AUDIO_CONFIG_HWLOOPSUPPORTTYPE;
+ OMX_U32 nSize;
+ OMX_VERSIONTYPE nVersion;
+ OMX_U32 nPortIndex;
+ OMX_U32 nSupportedLoops;
+ OMX_AUDIO_HWLOOPSTYPE eLoopIndex;
+} OMX_AUDIO_CONFIG_HWLOOPSUPPORTTYPE;
+/** Audio HW loop control.
+*/
typedef struct OMX_AUDIO_CONFIG_HWLOOPCONTROLTYPE {
- OMX_U32 nSize;
- OMX_VERSIONTYPE nVersion;
- OMX_U32 nPortIndex;
- OMX_AUDIO_HWLOOPSTYPE eLoopIndex;
- OMX_U32 nChannel;
- OMX_BOOL bControlSwitch;
- OMX_BOOL bLinear;
- OMX_BS32 sLoopVolume;
-
- } OMX_AUDIO_CONFIG_HWLOOPCONTROLTYPE;
+ OMX_U32 nSize;
+ OMX_VERSIONTYPE nVersion;
+ OMX_U32 nPortIndex;
+ OMX_AUDIO_HWLOOPSTYPE eLoopIndex;
+ OMX_U32 nChannel;
+ OMX_BOOL bControlSwitch;
+ OMX_BOOL bLinear;
+ OMX_BS32 sLoopVolume;
+} OMX_AUDIO_CONFIG_HWLOOPCONTROLTYPE;
+/** Non-OpenMAX API layers */
+/***************************/
-/* End of OMX part */
+/* channel ID denoting special case of all channels being selected where possible */
+#define AUDIO_COMMON_CHANNEL_ALL 0x7FFFFFFF
-/************ non-OMX interface definition **************/
+/** 16 bit unsigned quantity that is 16 bit word aligned */
+typedef unsigned short uint16;
-/* types and constants used by non-OMX APIs */
+/** 16 bit signed quantity that is 16 bit word aligned */
+typedef signed short int16;
-/* channel ID denoting special case of all channels being selected
- where possible */
-#define AUDIO_COMMON_CHANNEL_ALL 0x7FFFFFFF
+/** 32 bit unsigned quantity that is 32 bit word aligned */
+typedef unsigned long uint32;
+
+/** signed quantity that is 32 bit word aligned */
+typedef signed long int32;
typedef enum AUDIO_COMMON_SWITCH {
AUDIO_COMMON_OFF = 0,
@@ -213,7 +203,7 @@
typedef enum AUDIO_COMMON_STATUS {
AUDIO_COMMON_OK = 0,
AUDIO_COMMON_FAIL,
- AUDIO_COMMON_UNSUPPORTED = 0xFFFF
+ AUDIO_COMMON_ALLCHANNELS_UNSUPPORTED = 0xFFFF
} AUDIO_COMMON_STATUS;
typedef enum AUDIO_HAL_HW_LOOPS {
@@ -240,25 +230,12 @@
} AUDIO_HAL_HW_OPERATION;
typedef enum AUDIO_HAL_HW_REGISTER_TYPE {
- OMX_AUDIO_IO = 0,
- OMX_AUDIO_I2C,
- OMX_AUDIO_SLIMBUS,
- OMX_AUDIO_CBUS = 0xFFFF
+ AUDIO_HAL_IO = 0,
+ AUDIO_HAL_I2C,
+ AUDIO_HAL_SLIMBUS,
+ AUDIO_HAL_CBUS = 0xFFFF
} AUDIO_HAL_HW_REGISTER_TYPE;
-
-/** 16 bit unsigned quantity that is 16 bit word aligned */
-typedef unsigned short uint16;
-
-/** 16 bit signed quantity that is 16 bit word aligned */
-typedef signed short int16;
-
-/** 32 bit unsigned quantity that is 32 bit word aligned */
-typedef unsigned long uint32;
-
-/** signed quantity that is 32 bit word aligned */
-typedef signed long int32;
-
typedef struct AUDIO_HAL_REGBANK_DESCRIPTOR{
uint32 reg_bank_index;
uint32 logical_start_addr;
@@ -279,7 +256,7 @@
typedef struct AUDIO_TIMED_RAMP_INFO {
- uint32 linear,
+ uint32 linear;
int32 ramp_start_volume;
int32 ramp_end_volume;
int32 current_volume;
@@ -295,21 +272,17 @@
} AUDIO_TIMED_RAMP_INFO;
-
-/* API functions */
-
-/* The convention for the functions will be: */
-/* <supplier>_<component>_<API function name(...)> */
+// Function prototypes
/* HAL layer */
-void audio_hal_mute_control (void (*call_back_fn_ptr)(AUDIO_COMMON_STATUS status),
+void audio_hal_mute_control (void (*call_back_fn_ptr)(AUDIO_COMMON_STATUS status, uint32 channel_index, uint32 extra_status_info),
uint32 channel_index,
AUDIO_COMMON_SWITCH mute_control);
AUDIO_COMMON_SWITCH audio_hal_mute_status (uint32 channel_index);
-void audio_hal_power_control (void (*call_back_fn_ptr)(AUDIO_COMMON_STATUS status),
+void audio_hal_power_control (void (*call_back_fn_ptr)(AUDIO_COMMON_STATUS status, uint32 channel_index, uint32 extra_status_info),
uint32 channel_index, AUDIO_COMMON_SWITCH power_control);
AUDIO_COMMON_SWITCH audio_hal_power_status(uint32 channel_index);
@@ -318,20 +291,23 @@
void audio_hal_gains_descriptor_query(AUDIO_HAL_GAIN_DESCRIPTOR* gain_descriptor_table);
-void audio_hal_loop_gain_capabilities_query(AUDIO_HAL_HW_LOOPS* num_loops, uint16* max_num_gains);
+void audio_hal_loop_gain_capabilities_query(uint16* num_loops, uint16* max_num_gains);
void audio_hal_supported_loops_query (uint16* supported_loop_indexes);
void audio_hal_loop_gains_descriptor_query (AUDIO_HAL_HW_LOOPS loop_index,
AUDIO_HAL_GAIN_DESCRIPTOR* gain_descriptor_table);
-AUDIO_COMMON_STATUS audio_hal_gain_control (uint32 channel_index, uint16 gain_index,
+AUDIO_COMMON_STATUS audio_hal_gain_control (void (*call_back_fn_ptr)(AUDIO_COMMON_STATUS status, uint32 channel_index, uint32 extra_status_info),
+ uint32 channel_index, uint16 gain_index,
uint32 linear, int32 gain_value);
AUDIO_COMMON_STATUS audio_hal_gain_query (uint32 channel_index, uint16 gain_index,
uint32 linear, int32* gain_value);
-AUDIO_COMMON_STATUS audio_hal_loop_control(AUDIO_HAL_HW_LOOPS loop_index, AUDIO_COMMON_SWITCH loop_switch,
+AUDIO_COMMON_STATUS audio_hal_loop_control(void (*call_back_fn_ptr)(AUDIO_COMMON_STATUS status, uint32 channel_index,
+ AUDIO_HAL_HW_LOOPS loop_index, uint32 extra_status_info),
+ AUDIO_HAL_HW_LOOPS loop_index, AUDIO_COMMON_SWITCH loop_switch,
uint16 channel_index, uint16 gain_index, uint32 linear,
int32 loop_gain_value);
@@ -346,26 +322,25 @@
/* Sequencer layer */
-void audio_sequencer_mute_control(void (*call_back_fn_ptr)(AUDIO_COMMON_STATUS status),
+void audio_sequencer_mute_control(void (*call_back_fn_ptr)(AUDIO_COMMON_STATUS status, uint32 channel_index, uint32 extra_status_info),
uint32 channel_index, AUDIO_COMMON_SWITCH mute_control);
-void audio_sequencer_power_control(void (*call_back_fn_ptr)(AUDIO_COMMON_STATUS status),
+void audio_sequencer_power_control(void (*call_back_fn_ptr)(AUDIO_COMMON_STATUS status, uint32 channel_index, uint32 extra_status_info),
uint32 channel_index, AUDIO_COMMON_SWITCH power_control);
-AUDIO_COMMON_STATUS audio_sequencer_burst_control(void (*call_back_fn_ptr)(AUDIO_COMMON_STATUS status),
+AUDIO_COMMON_STATUS audio_sequencer_burst_control(void (*call_back_fn_ptr)(AUDIO_COMMON_STATUS status, uint32 extra_status_info),
AUDIO_COMMON_SWITCH burst_control);
-void audio_sequencer_volume_control(void (*call_back_fn_ptr)(AUDIO_COMMON_STATUS status),
+void audio_sequencer_volume_control(void (*call_back_fn_ptr)(AUDIO_COMMON_STATUS status, uint32 channel_index, uint32 extra_status_info),
uint32 channel_index, uint32 linear, int32 volume);
-void audio_sequencer_volume_query(uint32 channel_index, uint32 linear, int32* min_volume,
- int32* max_volume, int32* current_volume);
+void audio_sequencer_volume_query(uint32 channel_index, uint32 linear, int32* min_volume, int32* max_volume, int32* current_volume);
/* Timing critical layer */
-void audio_timed_mute_control(void (*call_back_fn_ptr)(AUDIO_COMMON_STATUS status),
+void audio_timed_mute_control(void (*call_back_fn_ptr)(AUDIO_COMMON_STATUS status, uint32 channel_index, uint32 extra_status_info),
uint32 channel_index, AUDIO_COMMON_SWITCH mute_control);
-void audio_timed_volume_ramp_control (void (*call_back_fn_ptr)(AUDIO_COMMON_STATUS status),
+void audio_timed_volume_ramp_control (void (*call_back_fn_ptr)(AUDIO_COMMON_STATUS status, uint32 channel_index, uint32 extra_status_info),
uint32 channel_index, uint32 linear, int32 start_volume,
int32 end_volume, uint32 ramp_duration_hi, uint32 ram_duration_lo,
AUDIO_COMMON_SWITCH ramp_terminate);
@@ -373,10 +348,8 @@
void audio_timed_volume_ramp_query (uint32 channel_index, AUDIO_TIMED_RAMP_INFO* volume_ramp_info);
-
-
#ifdef __cplusplus
}
#endif /* __cplusplus */
-#endif
\ No newline at end of file
+#endif /* OMX_Nokia_AudioExt_h */