553 lines
14 KiB
C
553 lines
14 KiB
C
/*
|
|
* Copyright 2011-2015 Maxim Integrated Products
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation; either version 2 of the License, or (at your
|
|
* option) any later version.
|
|
*/
|
|
|
|
#ifndef __SOUND_MAXIM_DSM_H__
|
|
#define __SOUND_MAXIM_DSM_H__
|
|
|
|
#define DSM_RX_PORT_ID 0x4000
|
|
#define DSM_TX_PORT_ID (DSM_RX_PORT_ID + 1)
|
|
|
|
#define AFE_MODULE_ID_DSM_RX 0x10001062
|
|
#define AFE_MODULE_ID_DSM_TX 0x0FF1020B
|
|
|
|
#define AFE_PARAM_ID_ENABLE_DSM_RX_ENABLE 0x10001063
|
|
#define AFE_PARAM_ID_ENABLE_DSM_RX_ALL 0x10001064
|
|
#define AFE_PARAM_ID_ENABLE_DSM_RX_ALL_R 0x10001065
|
|
#define AFE_PARAM_ID_ENABLE_DSM_TX_ENABLE 0x10001063
|
|
#define AFE_PARAM_ID_ENABLE_DSM_TX_ALL 0x10001064
|
|
#define AFE_PARAM_ID_ENABLE_DSM_TX_ALL_R 0x10001065
|
|
|
|
#define DSM_ID_FILTER_GET_AFE_PARAMS 0x00000000
|
|
#define DSM_ID_FILTER_SET_AFE_CNTRLS 0x00000001
|
|
#define DSM_ID_FILTER_GET_LOG_AFE_PARAMS 0x00000002
|
|
|
|
#define FLAG_WRITE_ALL 0xabefcdab
|
|
#define FLAG_WRITE_CAL_FROM_FILE 0xffff0000
|
|
#define FLAG_WRITE_ONOFF_ONLY 0xcdababef
|
|
#define FLAG_WRITE_RDC_CAL_ONLY 0xca00ca00
|
|
#define FLAG_WRITE_FEATURE_ONLY 0xfea0fea0
|
|
|
|
#define RESERVED_ADDR_COUNT 0xFF
|
|
#define START_ADDR_FOR_LSI 0x2A004C
|
|
#define END_ADDR_FOR_LSI 0x2A0380
|
|
|
|
#define AFE_PORT_ID_START 0x1000
|
|
#define AFE_PORT_ID_END 0x400d
|
|
|
|
#define PARAM_DSM_5_0_MAX 185
|
|
#define PARAM_DSM_5_0_ABOX_WRITE_CB 0xDAAD
|
|
#define PARAM_DSM_5_0_ABOX_GET_LOGGING 1000
|
|
|
|
#define DSM_4_0_LSI_STEREO_OFFSET 410
|
|
|
|
#define DSM_API_SETGET_ENABLE 1
|
|
#define DSM_API_SETGET_COILTEMP_THRESHOLD 2
|
|
#define DSM_API_SETGET_XCL_THRESHOLD 3
|
|
#define DSM_API_SETGET_LIMITERS_RELTIME 4
|
|
#define DSM_API_SETGET_MAKEUP_GAIN 5
|
|
#define DSM_API_SETGET_RDC_AT_ROOMTEMP 6
|
|
#define DSM_API_SETGET_COLDTEMP 8
|
|
#define DSM_API_SETGET_PITONE_GAIN 9
|
|
#define DSM_API_SETGET_LFX_GAIN 12
|
|
#define DSM_API_GET_ADAPTIVE_DC_RES 18
|
|
#define DSM_API_SETGET_ENABLE_RDC_CAL 25
|
|
#define DSM_API_SETGET_PILOT_ENABLE 28
|
|
#define DSM_API_SETGET_WRITE_FLAG 63
|
|
#define DSM_API_SETGET_ENABLE_SMART_PT 104
|
|
#define DSM_API_SETGET_POWER_MEASUREMENT 136
|
|
|
|
enum maxdsm_version {
|
|
VERSION_3_0 = 30,
|
|
VERSION_3_5_A = 35,
|
|
VERSION_3_5_B,
|
|
VERSION_4_0_A = 40,
|
|
VERSION_4_0_B = 41,
|
|
VERSION_5_0_C,
|
|
VERSION_4_0_A_S = 50,
|
|
VERSION_MAX,
|
|
};
|
|
|
|
enum maxdsm_platform_type {
|
|
PLATFORM_TYPE_A = 0,
|
|
PLATFORM_TYPE_B = 1,
|
|
PLATFORM_TYPE_C,
|
|
PLATFORM_TYPE_MAX,
|
|
};
|
|
|
|
enum maxdsm_ioctl_cmds {
|
|
MAXDSM_IOCTL_GET_VERSION = 1000,
|
|
MAXDSM_IOCTL_SET_VERSION,
|
|
MAXDSM_IOCTL_GET_PARAM,
|
|
MAXDSM_IOCTL_SET_PARAM,
|
|
MAXDSM_IOCTL_GET_ALL_PARAMS,
|
|
MAXDSM_IOCTL_SET_ALL_PARAMS,
|
|
MAXDSM_IOCTL_GET_CAL_DATA,
|
|
MAXDSM_IOCTL_SET_CAL_DATA,
|
|
MAXDSM_IOCTL_GET_PLATFORM_TYPE,
|
|
MAXDSM_IOCTL_SET_PLATFORM_TYPE,
|
|
MAXDSM_IOCTL_GET_RX_PORT_ID,
|
|
MAXDSM_IOCTL_SET_RX_PORT_ID,
|
|
MAXDSM_IOCTL_GET_TX_PORT_ID,
|
|
MAXDSM_IOCTL_SET_TX_PORT_ID,
|
|
};
|
|
|
|
enum maxdsm_ignore_param {
|
|
MAXDSM_IGNORE_MASK_VOICE_COIL = 1U << 0,
|
|
MAXDSM_IGNORE_MASK_AMBIENT_TEMP = 1U << 1,
|
|
MAXDSM_IGNORE_MASK_ALL = 1U << 16,
|
|
};
|
|
|
|
enum maxdsm_offset {
|
|
PARAM_OFFSET_PLATFORM,
|
|
PARAM_OFFSET_PORT_ID,
|
|
PARAM_OFFSET_RX_MOD_ID,
|
|
PARAM_OFFSET_TX_MOD_ID,
|
|
PARAM_OFFSET_FILTER_SET,
|
|
PARAM_OFFSET_VERSION,
|
|
PARAM_OFFSET_MAX,
|
|
};
|
|
|
|
enum maxdsm_3_0_params {
|
|
PARAM_RDC,
|
|
PARAM_RDC_SZ,
|
|
PARAM_VOICE_COIL_TEMP,
|
|
PARAM_VOICE_COIL_TEMP_SZ,
|
|
PARAM_Q,
|
|
PARAM_Q_SZ,
|
|
PARAM_FRES,
|
|
PARAM_FRES_SZ,
|
|
PARAM_EXCURSION,
|
|
PARAM_EXCURSION_SZ,
|
|
PARAM_VOICE_COIL,
|
|
PARAM_VOICE_COIL_SZ,
|
|
PARAM_RELEASE_TIME,
|
|
PARAM_RELEASE_TIME_SZ,
|
|
PARAM_THERMAL_LIMIT,
|
|
PARAM_THERMAL_LIMIT_SZ,
|
|
PARAM_EXCUR_LIMIT,
|
|
PARAM_EXCUR_LIMIT_SZ,
|
|
PARAM_ONOFF,
|
|
PARAM_ONOFF_SZ,
|
|
PARAM_STATIC_GAIN,
|
|
PARAM_STATIC_GAIN_SZ,
|
|
PARAM_LFX_GAIN,
|
|
PARAM_LFX_GAIN_SZ,
|
|
PARAM_PILOT_GAIN,
|
|
PARAM_PILOT_GAIN_SZ,
|
|
PARAM_WRITE_FLAG,
|
|
PARAM_WRITE_FLAG_SZ,
|
|
PARAM_FEATURE_SET,
|
|
PARAM_FEATURE_SET_SZ,
|
|
PARAM_SMOOTH_VOLT,
|
|
PARAM_SMOOTH_VOLT_SZ,
|
|
PARAM_HPF_CUTOFF,
|
|
PARAM_HPF_CUTOFF_SZ,
|
|
PARAM_LEAD_R,
|
|
PARAM_LEAD_R_SZ,
|
|
PARAM_RMS_SMOO_FAC,
|
|
PARAM_RMS_SMOO_FAC_SZ,
|
|
PARAM_CLIP_LIMIT,
|
|
PARAM_CLIP_LIMIT_SZ,
|
|
PARAM_THERMAL_COEF,
|
|
PARAM_THERMAL_COEF_SZ,
|
|
PARAM_QSPK,
|
|
PARAM_QSPK_SZ,
|
|
PARAM_EXCUR_LOG_THRESH,
|
|
PARAM_EXCUR_LOG_THRESH_SZ,
|
|
PARAM_TEMP_LOG_THRESH,
|
|
PARAM_TEMP_LOG_THRESH_SZ,
|
|
PARAM_RES_FREQ,
|
|
PARAM_RES_FREQ_SZ,
|
|
PARAM_RES_FREQ_GUARD_BAND,
|
|
PARAM_RES_FREQ_GUARD_BAND_SZ,
|
|
PARAM_DSM_3_0_MAX,
|
|
};
|
|
|
|
enum maxdsm_3_5_params {
|
|
PARAM_AMBIENT_TEMP = PARAM_DSM_3_0_MAX,
|
|
PARAM_AMBIENT_TEMP_SZ,
|
|
PARAM_STL_ATTACK_TIME,
|
|
PARAM_STL_ATTACK_TIME_SZ,
|
|
PARAM_STL_RELEASE_TIME,
|
|
PARAM_STL_RELEASE_TIME_SZ,
|
|
PARAM_ADMITTANCE_A1,
|
|
PARAM_ADMITTANCE_A1_SZ,
|
|
PARAM_ADMITTANCE_A2,
|
|
PARAM_ADMITTANCE_A2_SZ,
|
|
PARAM_ADMITTANCE_B0,
|
|
PARAM_ADMITTANCE_B0_SZ,
|
|
PARAM_ADMITTANCE_B1,
|
|
PARAM_ADMITTANCE_B1_SZ,
|
|
PARAM_ADMITTANCE_B2,
|
|
PARAM_ADMITTANCE_B2_SZ,
|
|
PARAM_TCH1,
|
|
PARAM_TCH1_SZ,
|
|
PARAM_RTH1,
|
|
PARAM_RTH1_SZ,
|
|
PARAM_TCH2,
|
|
PARAM_TCH2_SZ,
|
|
PARAM_RTH2,
|
|
PARAM_RTH2_SZ,
|
|
PARAM_STL_ATTENUATION_GAIN,
|
|
PARAM_STL_ATTENUATION_GAIN_SZ,
|
|
PARAM_SPT_RAMP_DOWN_FRAMES,
|
|
PARAM_SPT_RAMP_DOWN_FRAMES_SZ,
|
|
PARAM_SPT_THRESHOLD,
|
|
PARAM_SPT_THRESHOLD_SZ,
|
|
PARAM_T_HORIZON,
|
|
PARAM_T_HORIZON_SZ,
|
|
PARAM_LFX_ADMITTANCE_A1,
|
|
PARAM_LFX_ADMITTANCE_A1_SZ,
|
|
PARAM_LFX_ADMITTANCE_A2,
|
|
PARAM_LFX_ADMITTANCE_A2_SZ,
|
|
PARAM_LFX_ADMITTANCE_B0,
|
|
PARAM_LFX_ADMITTANCE_B0_SZ,
|
|
PARAM_LFX_ADMITTANCE_B1,
|
|
PARAM_LFX_ADMITTANCE_B1_SZ,
|
|
PARAM_LFX_ADMITTANCE_B2,
|
|
PARAM_LFX_ADMITTANCE_B2_SZ,
|
|
PARAM_DSM_3_5_MAX,
|
|
};
|
|
|
|
enum maxdsm_4_0_params {
|
|
PARAM_X_MAX = PARAM_DSM_3_5_MAX,
|
|
PARAM_X_MAX_SZ,
|
|
PARAM_SPK_FS,
|
|
PARAM_SPK_FS_SZ,
|
|
PARAM_Q_GUARD_BAND,
|
|
PARAM_Q_GUARD_BAND_SZ,
|
|
PARAM_STIMPEDMODEL_COEFFS_A1,
|
|
PARAM_STIMPEDMODEL_COEFFS_A1_SZ,
|
|
PARAM_STIMPEDMODEL_COEFFS_A2,
|
|
PARAM_STIMPEDMODEL_COEFFS_A2_SZ,
|
|
PARAM_STIMPEDMODEL_COEFFS_B0,
|
|
PARAM_STIMPEDMODEL_COEFFS_B0_SZ,
|
|
PARAM_STIMPEDMODEL_COEFFS_B1,
|
|
PARAM_STIMPEDMODEL_COEFFS_B1_SZ,
|
|
PARAM_STIMPEDMODEL_COEFFS_B2,
|
|
PARAM_STIMPEDMODEL_COEFFS_B2_SZ,
|
|
PARAM_STIMPEDMODEL_FLAG,
|
|
PARAM_STIMPEDMODEL_FLAG_SZ,
|
|
PARAM_Q_NOTCH,
|
|
PARAM_Q_NOTCH_SZ,
|
|
PARAM_POWER_MEASUREMENT,
|
|
PARAM_POWER_MEASUREMENT_SZ,
|
|
PARAM_DSM_4_0_MAX,
|
|
};
|
|
|
|
enum maxdsm_3_0_params_a {
|
|
PARAM_A_VOICE_COIL_TEMP,
|
|
PARAM_A_VOICE_COIL_TEMP_SZ,
|
|
PARAM_A_EXCURSION,
|
|
PARAM_A_EXCURSION_SZ,
|
|
PARAM_A_RDC,
|
|
PARAM_A_RDC_SZ,
|
|
PARAM_A_Q_LO,
|
|
PARAM_A_Q_LO_SZ,
|
|
PARAM_A_Q_HI,
|
|
PARAM_A_Q_HI_SZ,
|
|
PARAM_A_FRES_LO,
|
|
PARAM_A_FRES_LO_SZ,
|
|
PARAM_A_FRES_HI,
|
|
PARAM_A_FRES_HI_SZ,
|
|
PARAM_A_EXCUR_LIMIT,
|
|
PARAM_A_EXCUR_LIMIT_SZ,
|
|
PARAM_A_VOICE_COIL,
|
|
PARAM_A_VOICE_COIL_SZ,
|
|
PARAM_A_THERMAL_LIMIT,
|
|
PARAM_A_THERMAL_LIMIT_SZ,
|
|
PARAM_A_RELEASE_TIME,
|
|
PARAM_A_RELEASE_TIME_SZ,
|
|
PARAM_A_ONOFF,
|
|
PARAM_A_ONOFF_SZ,
|
|
PARAM_A_STATIC_GAIN,
|
|
PARAM_A_STATIC_GAIN_SZ,
|
|
PARAM_A_LFX_GAIN,
|
|
PARAM_A_LFX_GAIN_SZ,
|
|
PARAM_A_PILOT_GAIN,
|
|
PARAM_A_PILOT_GAIN_SZ,
|
|
PARAM_A_FEATURE_SET,
|
|
PARAM_A_FEATURE_SET_SZ,
|
|
PARAM_A_SMOOTH_VOLT,
|
|
PARAM_A_SMOOTH_VOLT_SZ,
|
|
PARAM_A_HPF_CUTOFF,
|
|
PARAM_A_HPF_CUTOFF_SZ,
|
|
PARAM_A_LEAD_R,
|
|
PARAM_A_LEAD_R_SZ,
|
|
PARAM_A_RMS_SMOO_FAC,
|
|
PARAM_A_RMS_SMOO_FAC_SZ,
|
|
PARAM_A_CLIP_LIMIT,
|
|
PARAM_A_CLIP_LIMIT_SZ,
|
|
PARAM_A_THERMAL_COEF,
|
|
PARAM_A_THERMAL_COEF_SZ,
|
|
PARAM_A_QSPK,
|
|
PARAM_A_QSPK_SZ,
|
|
PARAM_A_EXCUR_LOG_THRESH,
|
|
PARAM_A_EXCUR_LOG_THRESH_SZ,
|
|
PARAM_A_TEMP_LOG_THRESH,
|
|
PARAM_A_TEMP_LOG_THRESH_SZ,
|
|
PARAM_A_RES_FREQ,
|
|
PARAM_A_RES_FREQ_SZ,
|
|
PARAM_A_RES_FREQ_GUARD_BAND,
|
|
PARAM_A_RES_FREQ_GUARD_BAND_SZ,
|
|
PARAM_A_DSM_3_0_MAX,
|
|
};
|
|
|
|
enum maxdsm_3_5_params_a {
|
|
PARAM_A_AMBIENT_TEMP = PARAM_A_DSM_3_0_MAX,
|
|
PARAM_A_AMBIENT_TEMP_SZ,
|
|
PARAM_A_ADMITTANCE_A1,
|
|
PARAM_A_ADMITTANCE_A1_SZ,
|
|
PARAM_A_ADMITTANCE_A2,
|
|
PARAM_A_ADMITTANCE_A2_SZ,
|
|
PARAM_A_ADMITTANCE_B0,
|
|
PARAM_A_ADMITTANCE_B0_SZ,
|
|
PARAM_A_ADMITTANCE_B1,
|
|
PARAM_A_ADMITTANCE_B1_SZ,
|
|
PARAM_A_ADMITTANCE_B2,
|
|
PARAM_A_ADMITTANCE_B2_SZ,
|
|
PARAM_A_RTH1_HI,
|
|
PARAM_A_RTH1_HI_SZ,
|
|
PARAM_A_RTH1_LO,
|
|
PARAM_A_RTH1_LO_SZ,
|
|
PARAM_A_RTH2_HI,
|
|
PARAM_A_RTH2_HI_SZ,
|
|
PARAM_A_RTH2_LO,
|
|
PARAM_A_RTH2_LO_SZ,
|
|
PARAM_A_STL_ATENGAIN_HI,
|
|
PARAM_A_STL_ATENGAIN_HI_SZ,
|
|
PARAM_A_STL_ATENGAIN_LO,
|
|
PARAM_A_STL_ATENGAIN_LO_SZ,
|
|
PARAM_A_SPT_RAMP_DOWN_FRAMES,
|
|
PARAM_A_SPT_RAMP_DOWN_FRAMES_SZ,
|
|
PARAM_A_SPT_THRESHOLD_HI,
|
|
PARAM_A_SPT_THRESHOLD_HI_SZ,
|
|
PARAM_A_SPT_THRESHOLD_LO,
|
|
PARAM_A_SPT_THRESHOLD_LO_SZ,
|
|
PARAM_A_T_HORIZON,
|
|
PARAM_A_T_HORIZON_SZ,
|
|
PARAM_A_LFX_ADMITTANCE_A1,
|
|
PARAM_A_LFX_ADMITTANCE_A1_SZ,
|
|
PARAM_A_LFX_ADMITTANCE_A2,
|
|
PARAM_A_LFX_ADMITTANCE_A2_SZ,
|
|
PARAM_A_LFX_ADMITTANCE_B0,
|
|
PARAM_A_LFX_ADMITTANCE_B0_SZ,
|
|
PARAM_A_LFX_ADMITTANCE_B1,
|
|
PARAM_A_LFX_ADMITTANCE_B1_SZ,
|
|
PARAM_A_LFX_ADMITTANCE_B2,
|
|
PARAM_A_LFX_ADMITTANCE_B2_SZ,
|
|
PARAM_A_ALGORITHM_X_MAX,
|
|
PARAM_A_ALGORITHM_X_MAX_SZ,
|
|
PARAM_A_DSM_3_5_MAX,
|
|
};
|
|
|
|
enum maxdsm_4_0_params_a {
|
|
PARAM_A_STL_TCTH1_HI = PARAM_A_DSM_3_5_MAX,
|
|
PARAM_A_STL_TCTH1_HI_SZ,
|
|
PARAM_A_STL_TCTH1_LO,
|
|
PARAM_A_STL_TCTH1_LO_SZ,
|
|
PARAM_A_STL_TCTH2_HI,
|
|
PARAM_A_STL_TCTH2_HI_SZ,
|
|
PARAM_A_STL_TCTH2_LO,
|
|
PARAM_A_STL_TCTH2_LO_SZ,
|
|
PARAM_A_STL_ATTACK_HI,
|
|
PARAM_A_STL_ATTACK_HI_SZ,
|
|
PARAM_A_STL_ATTACK_LO,
|
|
PARAM_A_STL_ATTACK_LO_SZ,
|
|
PARAM_A_STL_RELEASE_HI,
|
|
PARAM_A_STL_RELEASE_HI_SZ,
|
|
PARAM_A_STL_RELEASE_LO,
|
|
PARAM_A_STL_RELEASE_LO_SZ,
|
|
PARAM_A_STL_SPK_FS,
|
|
PARAM_A_STL_SPK_FS_SZ,
|
|
PARAM_A_Q_GUARD_BAND_HI,
|
|
PARAM_A_Q_GUARD_BAND_HI_SZ,
|
|
PARAM_A_Q_GUARD_BAND_LO,
|
|
PARAM_A_Q_GUARD_BAND_LO_SZ,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_A1_HI,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_A1_HI_SZ,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_A1_LO,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_A1_LO_SZ,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_A2_HI,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_A2_HI_SZ,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_A2_LO,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_A2_LO_SZ,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_B0_HI,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_B0_HI_SZ,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_B0_LO,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_B0_LO_SZ,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_B1_HI,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_B1_HI_SZ,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_B1_LO,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_B1_LO_SZ,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_B2_HI,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_B2_HI_SZ,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_B2_LO,
|
|
PARAM_A_STIMPEDMODEL_COEFFS_B2_LO_SZ,
|
|
PARAM_A_STIMPEDMODEL_FLAG,
|
|
PARAM_A_STIMPEDMODEL_FLAG_SZ,
|
|
PARAM_A_Q_NOTCH_HI,
|
|
PARAM_A_Q_NOTCH_HI_SZ,
|
|
PARAM_A_Q_NOTCH_LO,
|
|
PARAM_A_Q_NOTCH_LO_SZ,
|
|
PARAM_A_POWER_MEASUREMENT,
|
|
PARAM_A_POWER_MEASUREMENT_SZ,
|
|
PARAM_A_MAINSPKHFCOMP,
|
|
PARAM_A_MAINSPKHFCOMP_SZ,
|
|
PARAM_A_EARPIECELEVEL,
|
|
PARAM_A_EARPIECELEVEL_SZ,
|
|
PARAM_A_XOVER_FREQ,
|
|
PARAM_A_XOVER_FREQ_SZ,
|
|
PARAM_A_STEREO_MODE_CONF,
|
|
PARAM_A_STEREO_MODE_CONF_SZ,
|
|
PARAM_A_DSM_4_0_MAX,
|
|
};
|
|
|
|
enum {
|
|
WRITE_PROTECT,
|
|
LOG_AVAILABLE,
|
|
VERSION_INFO,
|
|
LAST_2_SEC_TEMP,
|
|
LAST_2_SEC_EXCUR,
|
|
RESERVED_1,
|
|
SEQUENCE_OF_TEMP,
|
|
SEQUENCE_OF_EXCUR,
|
|
LAST_2_SEC_RDC,
|
|
LAST_2_SEC_FREQ,
|
|
RESERVED_2,
|
|
RESERVED_3,
|
|
AFTER_2_SEC_TEMP_TEMP,
|
|
AFTER_2_SEC_EXCUR_TEMP,
|
|
AFTER_2_SEC_TEMP_EXCUR,
|
|
AFTER_2_SEC_EXCUR_EXCUR,
|
|
AFTER_2_SEC_RDC_TEMP,
|
|
AFTER_2_SEC_FREQ_TEMP,
|
|
AFTER_2_SEC_RDC_EXCUR,
|
|
AFTER_2_SEC_FREQ_EXCUR,
|
|
MAX_LOG_BUFFER_POS,
|
|
};
|
|
|
|
struct param_info {
|
|
int id;
|
|
uint32_t addr;
|
|
int size;
|
|
int type;
|
|
int val;
|
|
};
|
|
|
|
struct param_set_data {
|
|
int name;
|
|
uint32_t addr;
|
|
uint32_t value;
|
|
uint32_t wflag;
|
|
};
|
|
|
|
struct maxim_dsm {
|
|
struct regmap *regmap;
|
|
uint32_t *param;
|
|
uint32_t param_size;
|
|
uint32_t platform_type;
|
|
uint32_t rx_port_id;
|
|
uint32_t tx_port_id;
|
|
uint32_t rx_mod_id;
|
|
uint32_t tx_mod_id;
|
|
uint32_t filter_set;
|
|
uint32_t version;
|
|
uint32_t *binfo;
|
|
uint32_t registered;
|
|
uint32_t update_cal;
|
|
uint32_t ignore_mask;
|
|
uint32_t spk_state;
|
|
uint32_t sub_reg;
|
|
};
|
|
|
|
#ifdef CONFIG_SND_SOC_MAXIM_DSM
|
|
#define USE_DSM_UPDATE_CAL
|
|
#define USE_DSM_LOG
|
|
#define USE_DSM_DEBUG
|
|
#endif /* CONFIG_SND_SOC_MAXIM_DSM */
|
|
|
|
int maxdsm_init(void);
|
|
void maxdsm_deinit(void);
|
|
|
|
uint32_t maxdsm_get_platform_type(void);
|
|
uint32_t maxdsm_get_version(void);
|
|
uint32_t maxdsm_is_stereo(void);
|
|
int maxdsm_set_feature_en(int on);
|
|
int maxdsm_set_rdc_temp(int rdc, int temp);
|
|
int maxdsm_set_dsm_onoff_status(int on);
|
|
uint32_t maxdsm_get_dcresistance(void);
|
|
int maxdsm_set_cal_mode(int on);
|
|
|
|
int maxdsm_update_info(uint32_t *pinfo);
|
|
void maxdsm_update_sub_reg(uint32_t sub_reg);
|
|
int maxdsm_get_rx_port_id(void);
|
|
int maxdsm_get_tx_port_id(void);
|
|
int maxdsm_get_rx_mod_id(void);
|
|
int maxdsm_get_tx_mod_id(void);
|
|
void maxdsm_set_regmap(struct regmap *regmap);
|
|
|
|
int maxdsm_update_feature_en_adc(int apply);
|
|
|
|
int maxdsm_get_spk_state(void);
|
|
void maxdsm_set_spk_state(int state);
|
|
int maxdsm_set_pilot_signal_state(int on);
|
|
uint32_t maxdsm_get_power_measurement(void);
|
|
void maxdsm_set_stereo_mode_configuration(unsigned int);
|
|
|
|
#ifdef USE_DSM_LOG
|
|
struct maxim_dsm_log_max_values {
|
|
int excursion_max;
|
|
int coil_temp_max;
|
|
int excursion_overcnt;
|
|
int coil_temp_overcnt;
|
|
char dsm_timestamp[32];
|
|
};
|
|
|
|
#define LOG_BUFFER_ARRAY_SIZE 10
|
|
|
|
/* BUFSIZE must be 4 bytes allignment*/
|
|
#define BEFORE_BUFSIZE (4+(LOG_BUFFER_ARRAY_SIZE*2))
|
|
#define AFTER_BUFSIZE (LOG_BUFFER_ARRAY_SIZE*4)
|
|
#define LOGMAX_BUFSIZE 4
|
|
|
|
int maxdsm_get_dump_status(void);
|
|
void maxdsm_update_param(void);
|
|
void maxdsm_log_update(const void *byte_log_array,
|
|
const void *int_log_array,
|
|
const void *after_prob_byte_log_array,
|
|
const void *after_prob_int_log_array,
|
|
const void *int_log_max_array);
|
|
ssize_t maxdsm_log_prepare(char *buf);
|
|
void maxdsm_log_max_prepare(struct maxim_dsm_log_max_values *values);
|
|
void maxdsm_cal_update(const void *byte_log_array,
|
|
const void *int_log_array,
|
|
const void *after_prob_byte_log_array,
|
|
const void *after_prob_int_log_array,
|
|
const void *int_log_max_array);
|
|
#else
|
|
static inline void maxdsm_log_update(const void *byte_log_array,
|
|
const void *int_log_array,
|
|
const void *after_prob_byte_log_array,
|
|
const void *after_prob_int_log_array,
|
|
const void *int_log_max_array) {}
|
|
/* BUFSIZE must be 4 bytes allignment*/
|
|
#define BEFORE_BUFSIZE 0
|
|
#define AFTER_BUFSIZE 0
|
|
#define LOGMAX_BUFSIZE 0
|
|
#endif /* USE_DSM_LOG */
|
|
|
|
#ifdef USE_DSM_UPDATE_CAL
|
|
int maxdsm_cal_avail(void);
|
|
int maxdsm_update_caldata(int on);
|
|
ssize_t maxdsm_cal_prepare(char *buf);
|
|
#endif
|
|
|
|
#endif /* __SOUND_MAXIM_DSM_H__ */
|