| /* |
| * 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__ */ |