blob: b24a3d9ea2e0ac1e2decc9f6a2441398c34ba794 [file] [log] [blame]
/* Copyright (c) 2012, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef _MACH_QDSP5_V2_ACDB_COMMANDS_H
#define _MACH_QDSP5_V2_ACDB_COMMANDS_H
#define ACDB_VOICE_NETWORK_ID_DEFAULT 0x00010037
#define ACDB_INITIALISING 0
#define ACDB_READY 1
/* 4KB */
#define ACDB_PAGE_SIZE 0x1000
#define ACDB_CDMA_NB 0x0108b153
#define ACDB_CDMA_WB 0x0108b154
#define ACDB_GSM_NB 0x0108b155
#define ACDB_GSM_WB 0x0108b156
#define ACDB_WCDMA_NB 0x0108b157
#define ACDB_WCDMA_WB 0x0108b158
/* ACDB commands */
/* struct acdb_cmd_install_device */
#define ACDB_INSTALL_DEVICE 0x0108d245
/* struct acdb_cmd_install_device */
#define ACDB_UNINSTALL_DEVICE 0x0108d246
/* struct acdb_cmd_device */
#define ACDB_GET_DEVICE 0x0108bb92
/* struct acdb_cmd_device */
#define ACDB_SET_DEVICE 0x0108bb93
/* struct acdb_cmd_get_device_table */
#define ACDB_GET_DEVICE_TABLE 0x0108bb97
/* struct acdb_cmd_get_device_capabilities */
#define ACDB_GET_DEVICE_CAPABILITIES 0x0108f5ca
/* struct acdb_cmd_get_device_info */
#define ACDB_GET_DEVICE_INFO 0x0108f5cb
/*command to intitialize ACDB based on codec type*/
#define ACDB_CMD_INITIALIZE_FOR_ADIE 0x00011283
/* ACDB Error codes */
#define ACDB_RES_SUCCESS 0
#define ACDB_RES_FAILURE -1
#define ACDB_RES_BADPARM -2
#define ACDB_RES_BADSTATE -3
#define TGTVERS_MSM7x30_BRING_UP 0x00010064
/* Algorithm Aspect IDs */
#define IID_ENABLE_FLAG 0x0108b6b9
#define IID_ENABLE_FLAG_SIZE 1
#define IID_ECHO_CANCELLER_VERSION_SIZE 2
#define IID_ECHO_CANCELLER_MODE_SIZE 2
#define IID_ECHO_CANCELLER_NOISE_SUPPRESSOR_ENABLE_SIZE 1
#define IID_ECHO_CANCELLER_PARAMETERS_SIZE 32
#define IID_ECHO_CANCELLER_NEXTGEN_NB_PARAMETERS_SIZE (38 * 2)
#define IID_ECHO_CANCELLER_NEXTGEN_WB_PARAMETERS_SIZE (38 * 2)
#define IID_FLUENCE_PARAMETERS_SIZE 486
#define IID_AFE_VOLUME_CONTROL_SIZE 6
#define IID_GAIN_SIZE 2
#define IID_VOICE_FIR_FILTER_SIZE 14
#define IID_VOICE_IIR_FILTER_SIZE 114
#define IID_RX_DBM_OFFSET_SIZE 2
#define IID_AGC_SIZE 36
#define IID_AVC_SIZE 80
#define IID_AUDIO_IIR_COEFF_SIZE 100
#define IID_MBADRC_PARAMETERS_SIZE 8
#define IID_MBADRC_EXT_BUFF_SIZE 392
#define IID_MBADRC_BAND_CONFIG_SIZE 100
#define IID_QAFX_PARAMETERS_SIZE 2
#define IID_QCONCERT_PARAMETERS_SIZE 2
#define IID_AUDIO_AGC_PARAMETERS_SIZE 42
#define IID_NS_PARAMETERS_SIZE 14
#define IID_ECHO_CANCELLER_VERSION 0x00010042
#define IID_ECHO_CANCELLER_MODE 0x00010043
#define IID_ECHO_CANCELLER_NOISE_SUPPRESSOR_ENABLE 0x00010044
#define IID_ECHO_CANCELLER_PARAMETERS 0x00010045
#define IID_ECHO_CANCELLER_NEXTGEN_NB_PARAMETERS 0x00010046
#define IID_ECHO_CANCELLER_NEXTGEN_WB_PARAMETERS 0x00010047
#define IID_FLUENCE_PARAMETERS 0x00010048
#define IID_AFE_VOLUME_CONTROL 0x00010049
#define IID_GAIN 0x0001004A
#define IID_VOICE_FIR_FILTER 0x0001004B
#define IID_VOICE_IIR_FILTER 0x0001004C
#define IID_AGC 0x0001004E
#define IID_AVC 0x0001004F
#define ABID_SIDETONE_GAIN 0x00010050
#define ABID_TX_VOICE_GAIN 0x00010051
#define ABID_TX_DTMF_GAIN 0x00010052
#define ABID_CODEC_TX_GAIN 0x00010053
#define ABID_HSSD 0x00010054
#define ABID_TX_AGC 0x00010055
#define ABID_TX_VOICE_FIR 0x00010056
#define ABID_TX_VOICE_IIR 0x00010057
#define ABID_ECHO_CANCELLER 0x00010058
#define ABID_ECHO_CANCELLER_NB_LVHF 0x00010059
#define ABID_ECHO_CANCELLER_WB_LVHF 0x0001005A
#define ABID_FLUENCE 0x0001005B
#define ABID_CODEC_RX_GAIN 0x0001005C
#define ABID_RX_DBM_OFFSET 0x0001005D
#define ABID_RX_AGC 0x0001005E
#define ABID_AVC 0x0001005F
#define ABID_RX_VOICE_FIR 0x00010060
#define ABID_RX_VOICE_IIR 0x00010061
#define ABID_AFE_VOL_CTRL 0x00010067
/* AUDIO IDs */
#define ABID_AUDIO_AGC_TX 0x00010068
#define ABID_AUDIO_NS_TX 0x00010069
#define ABID_VOICE_NS 0x0001006A
#define ABID_AUDIO_IIR_TX 0x0001006B
#define ABID_AUDIO_IIR_RX 0x0001006C
#define ABID_AUDIO_MBADRC_RX 0x0001006E
#define ABID_AUDIO_QAFX_RX 0x0001006F
#define ABID_AUDIO_QCONCERT_RX 0x00010070
#define ABID_AUDIO_STF_RX 0x00010071
#define ABID_AUDIO_CALIBRATION_GAIN_RX 0x00011162
#define ABID_AUDIO_CALIBRATION_GAIN_TX 0x00011149
#define ABID_AUDIO_PBE_RX 0x00011197
#define ABID_AUDIO_RMC_TX 0x00011226
#define ABID_AUDIO_FLUENCE_TX 0x00011244
#define IID_AUDIO_AGC_PARAMETERS 0x0001007E
#define IID_NS_PARAMETERS 0x00010072
#define IID_AUDIO_IIR_COEFF 0x00010073
#define IID_MBADRC_EXT_BUFF 0x00010075
#define IID_MBADRC_BAND_CONFIG 0x00010076
#define IID_MBADRC_PARAMETERS 0x00010077
#define IID_QAFX_PARAMETERS 0x00010079
#define IID_QCONCERT_PARAMETERS 0x0001007A
#define IID_STF_COEFF 0x0001007B
#define IID_AUDIO_CALIBRATION_GAIN_RX 0x00011163
#define IID_AUDIO_CALIBRATION_GAIN_TX 0x00011171
#define IID_PBE_CONFIG_PARAMETERS 0x00011198
#define IID_AUDIO_PBE_RX_ENABLE_FLAG 0x00011199
#define IID_AUDIO_RMC_PARAM 0x00011227
#define IID_AUDIO_FLUENCE_TX 0x00011245
#define TOPID_RX_TOPOLOGY_1 0x00010062
#define TOPID_TX_TOPOLOGY_1 0x00010063
#define AFERID_INT_SINK 0x00010065
#define AFERID_INT_SOURCE 0x00010066
#define AFERID_NO_SINK 0x00000000
#define AFERID_NULL_SINK 0x0108ea92
struct acdb_cmd_install_device {
u32 command_id;
u32 device_id;
u32 topology_id;
u32 afe_routing_id;
u32 cad_routing_id; /* see "Sample Rate Bit Mask" below */
u32 sample_rate_mask;
/* represents device direction: Tx, Rx (aux pga - loopback) */
u8 device_type;
u8 channel_config; /* Mono or Stereo */
u32 adie_codec_path_id;
};
struct acdb_cmd_get_device_capabilities {
u32 command_id;
u32 total_bytes; /* Length in bytes allocated for buffer */
u32 *phys_buf; /* Physical Address of data */
};
struct acdb_cmd_get_device_info {
u32 command_id;
u32 device_id;
u32 total_bytes; /* Length in bytes allocated for buffer */
u32 *phys_buf; /* Physical Address of data */
};
struct acdb_cmd_device {
u32 command_id;
u32 device_id;
u32 network_id;
u32 sample_rate_id; /* Actual sample rate value */
u32 interface_id; /* See interface id's above */
u32 algorithm_block_id; /* See enumerations above */
u32 total_bytes; /* Length in bytes used by buffer */
u32 *phys_buf; /* Physical Address of data */
};
struct acdb_cmd_get_device_table {
u32 command_id;
u32 device_id;
u32 network_id;
u32 sample_rate_id; /* Actual sample rate value */
u32 total_bytes; /* Length in bytes used by buffer */
u32 *phys_buf; /* Physical Address of data */
};
struct acdb_result {
/* This field is populated in response to the */
/* ACDB_GET_DEVICE_CAPABILITIES command and indicates the total */
/* devices whose capabilities are copied to the physical memory. */
u32 total_devices;
u32 *buf; /* Physical Address of data */
u32 used_bytes; /* The size in bytes of the data */
u32 result; /* See ACDB Error codes above */
};
struct acdb_device_capability {
u32 device_id;
u32 sample_rate_mask; /* See "Sample Rate Bit Mask" below */
};
struct acdb_dev_info {
u32 cad_routing_id;
u32 sample_rate_mask; /* See "Sample Rate Bit Mask" below */
u32 adsp_device_id; /* QDSP6 device ID */
u32 device_type; /* Tx, Rx (aux pga - loopback) */
u32 channel_config; /* Mono or Stereo */
s32 min_volume; /* Min volume (mB) */
s32 max_volume; /* Max volume (mB) */
};
/*structure is used to intialize ACDB software on modem
based on adie type detected*/
struct acdb_cmd_init_adie {
u32 command_id;
u32 adie_type;
};
#define ACDB_CURRENT_ADIE_MODE_UNKNOWN 0
#define ACDB_CURRENT_ADIE_MODE_TIMPANI 1
#define ACDB_CURRENT_ADIE_MODE_MARIMBA 2
/* Sample Rate Bit Mask */
/* AUX PGA devices will have a sample rate mask of 0xFFFFFFFF */
/* 8kHz 0x00000001 */
/* 11.025kHz 0x00000002 */
/* 12kHz 0x00000004 */
/* 16kHz 0x00000008 */
/* 22.5kHz 0x00000010 */
/* 24kHz 0x00000020 */
/* 32kHz 0x00000040 */
/* 44.1kHz 0x00000080 */
/* 48kHz 0x00000100 */
/* Device type enumeration */
enum {
RX_DEVICE = 1,
TX_DEVICE,
AUXPGA_DEVICE,
DEVICE_TYPE_MAX
};
#ifdef CONFIG_DEBUG_FS
/*These are ABID used for RTC*/
#define ABID_AUDIO_RTC_MBADRC_RX 0x0001118A
#define ABID_AUDIO_RTC_VOLUME_PAN_RX 0x0001118C
#define ABID_AUDIO_RTC_SPA 0x0001118E
#define ABID_AUDIO_RTC_EQUALIZER_PARAMETERS 0x0001119F
/*These are IID used for RTC*/
#define IID_AUDIO_RTC_MBADRC_PARAMETERS 0x0001118B
#define IID_AUDIO_RTC_VOLUME_PAN_PARAMETERS 0x0001118D
#define IID_AUDIO_RTC_SPA_PARAMETERS 0x0001118F
#define IID_AUDIO_RTC_EQUALIZER_PARAMETERS 0x0001119E
#define IID_AUDIO_RTC_AGC_PARAMETERS 0x000111A7
#define IID_AUDIO_RTC_TX_IIR_COEFF 0x000111A8
#endif
#endif