diff options
Diffstat (limited to 'chip/npcx/apm_chip.h')
-rw-r--r-- | chip/npcx/apm_chip.h | 461 |
1 files changed, 0 insertions, 461 deletions
diff --git a/chip/npcx/apm_chip.h b/chip/npcx/apm_chip.h deleted file mode 100644 index ad62538374..0000000000 --- a/chip/npcx/apm_chip.h +++ /dev/null @@ -1,461 +0,0 @@ -/* Copyright 2018 The Chromium OS Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef __CROS_EC_APM_CHIP_H -#define __CROS_EC_APM_CHIP_H - -#include "common.h" - -/* MIX indirect registers. */ -#define APM_INDIRECT_MIX_2_REG 0x02 - -/* ADC_AGC indirect registers. */ -#define APM_INDIRECT_ADC_AGC_0_REG 0x00 -#define APM_INDIRECT_ADC_AGC_1_REG 0x01 -#define APM_INDIRECT_ADC_AGC_2_REG 0x02 -#define APM_INDIRECT_ADC_AGC_3_REG 0x03 -#define APM_INDIRECT_ADC_AGC_4_REG 0x04 - -/* APM_VAD_REG indirect registers. */ -#define APM_INDIRECT_VAD_0_REG 0x00 -#define APM_INDIRECT_VAD_1_REG 0x01 - -/* APM macros. */ -#define APM_IS_IRQ_PENDING IS_BIT_SET(NPCX_APM_SR, NPCX_APM_SR_IRQ_PEND) -#define APM_IS_VOICE_ACTIVITY_DETECTED \ - IS_BIT_SET(NPCX_APM_IFR, NPCX_APM_IFR_VAD_DTC) -#define APM_CLEAR_VAD_INTERRUPT SET_BIT(NPCX_APM_IFR, NPCX_APM_IFR_VAD_DTC) - -/* Indirect registers. */ -enum apm_indirect_reg_offset { - APM_MIX_REG = 0, - APM_ADC_AGC_REG, - APM_VAD_REG -}; - -/* ADC wind noise filter modes. */ -enum apm_adc_wind_noise_filter_mode { - APM_ADC_WIND_NOISE_FILTER_INACTIVE = 0, - APM_ADC_WIND_NOISE_FILTER_MODE_1_ACTIVE, - APM_ADC_WIND_NOISE_FILTER_MODE_2_ACTIVE, - APM_ADC_WIND_NOISE_FILTER_MODE_3_ACTIVE, -}; - -/* ADC frequency. */ -enum apm_adc_frequency { - APM_ADC_FREQ_8_000_KHZ = 0x00, - APM_ADC_FREQ_11_025_KHZ, - APM_ADC_FREQ_12_000_KHZ, - APM_ADC_FREQ_16_000_KHZ, - APM_ADC_FREQ_22_050_KHZ, - APM_ADC_FREQ_24_000_KHZ, - APM_ADC_FREQ_32_000_KHZ, - APM_ADC_FREQ_44_100_KHZ, - APM_ADC_FREQ_48_000_KHZ, - APM_ADC_FREQ_UNSUPPORTED = 0x0F -}; - -/* DMIC source. */ -enum apm_dmic_src { - APM_CURRENT_DMIC_CHANNEL = 0x01, /* Current channel, left or rigth. */ - APM_AVERAGE_DMIC_CHANNEL = 0x02 /* Average between left & right. */ -}; - -/* ADC digital microphone rate. */ -enum apm_dmic_rate { - /* 3.0, 2.4 & 1.0 must be 0, 1 & 2 respectively */ - APM_DMIC_RATE_3_0 = 0, /* 3.0 -3.25 MHz (default). */ - APM_DMIC_RATE_2_4, /* 2.4 -2.6 MHz. */ - APM_DMIC_RATE_1_0, /* 1.0 -1.08 MHz. */ - APM_DMIC_RATE_1_2, /* 1.2 MHz. */ - APM_DMIC_RATE_0_75 /* 750 KHz. */ -}; - -/* Digitla mixer output. */ -enum apm_dig_mix { - APM_OUT_MIX_NORMAL_INPUT = 0, /* Default. */ - APM_OUT_MIX_CROSS_INPUT, - APM_OUT_MIX_MIXED_INPUT, - APM_OUT_MIX_NO_INPUT -}; - -/* VAD Input Channel Selection */ -enum apm_vad_in_channel_src { - APM_IN_LEFT = 0, - APM_IN_RIGHT, - APM_IN_AVERAGE_LEFT_RIGHT, - APM_IN_RESERVED -}; - -/* ADC digital gain coupling. */ -enum apm_adc_gain_coupling { - APM_ADC_CHAN_GAINS_INDEPENDENT = 0, - APM_ADC_RIGHT_CHAN_GAIN_TRACKS_LEFT -}; - -/* ADC target output level. */ -enum apm_adc_target_out_level { - APM_ADC_MAX_TARGET_LEVEL = 0, - APM_ADC_MAX_TARGET_LEVEL_1_5, - APM_ADC_MAX_TARGET_LEVEL_3_0, - APM_ADC_MAX_TARGET_LEVEL_4_5, - APM_ADC_MAX_TARGET_LEVEL_6_0, - APM_ADC_MAX_TARGET_LEVEL_7_5, - APM_ADC_MAX_TARGET_LEVEL_9_0, - APM_ADC_MAX_TARGET_LEVEL_10_5, - APM_ADC_MAX_TARGET_LEVEL_12_0, - APM_ADC_MAX_TARGET_LEVEL_13_5, - APM_ADC_MAX_TARGET_LEVEL_15_0, - APM_ADC_MAX_TARGET_LEVEL_16_5, - APM_ADC_MAX_TARGET_LEVEL_18_0, - APM_ADC_MAX_TARGET_LEVEL_19_5, /* Default. */ - APM_ADC_MAX_TARGET_LEVEL_21_0, - APM_ADC_MAX_TARGET_LEVEL_22_5 -}; - -/* Noise gate threshold values. */ -enum apm_noise_gate_threshold { - APM_MIN_NOISE_GET_THRESHOLD = 0, - APM_MIN_NOISE_GET_THRESHOLD_6, - APM_MIN_NOISE_GET_THRESHOLD_12, - APM_MIN_NOISE_GET_THRESHOLD_18, - APM_MIN_NOISE_GET_THRESHOLD_24, - APM_MIN_NOISE_GET_THRESHOLD_30, - APM_MIN_NOISE_GET_THRESHOLD_36, - APM_MIN_NOISE_GET_THRESHOLD_42 -}; - -/* Hold time in msec before starting AGC adjustment to the TARGET value. */ -enum apm_agc_adj_hold_time { - APM_HOLD_TIME_0 = 0, - APM_HOLD_TIME_2, - APM_HOLD_TIME_4, - APM_HOLD_TIME_8, - APM_HOLD_TIME_16, - APM_HOLD_TIME_32, - APM_HOLD_TIME_64, - APM_HOLD_TIME_128, /* Default. */ - APM_HOLD_TIME_256, - APM_HOLD_TIME_512, - APM_HOLD_TIME_1024, - APM_HOLD_TIME_2048, - APM_HOLD_TIME_4096, - APM_HOLD_TIME_8192, - APM_HOLD_TIME_16384, - APM_HOLD_TIME_32768 -}; - -/* Attack time in msec - gain ramp down. */ -enum apm_gain_ramp_time { - APM_GAIN_RAMP_TIME_32 = 0, - APM_GAIN_RAMP_TIME_64, - APM_GAIN_RAMP_TIME_96, - APM_GAIN_RAMP_TIME_128, - APM_GAIN_RAMP_TIME_160, /* Default. */ - APM_GAIN_RAMP_TIME_192, - APM_GAIN_RAMP_TIME_224, - APM_GAIN_RAMP_TIME_256, - APM_GAIN_RAMP_TIME_288, - APM_GAIN_RAMP_TIME_320, - APM_GAIN_RAMP_TIME_352, - APM_GAIN_RAMP_TIME_384, - APM_GAIN_RAMP_TIME_416, - APM_GAIN_RAMP_TIME_448, - APM_GAIN_RAMP_TIME_480, - APM_GAIN_RAMP_TIME_512 -}; - -/* Minimum and Maximum gain values. */ -enum apm_gain_values { - APM_GAIN_VALUE_0_0 = 0, - APM_GAIN_VALUE_1_5, - APM_GAIN_VALUE_3_0, - APM_GAIN_VALUE_4_5, - APM_GAIN_VALUE_6_0, - APM_GAIN_VALUE_7_5, - APM_GAIN_VALUE_9_0, - APM_GAIN_VALUE_10_5, - APM_GAIN_VALUE_12_0, - APM_GAIN_VALUE_13_5, - APM_GAIN_VALUE_15_0, - APM_GAIN_VALUE_16_5, - APM_GAIN_VALUE_18_0, - APM_GAIN_VALUE_19_5, - APM_GAIN_VALUE_21_0, - APM_GAIN_VALUE_22_5, - APM_GAIN_VALUE_23_0_1ST, - APM_GAIN_VALUE_23_0_2ND, - APM_GAIN_VALUE_23_0_3RD, - APM_GAIN_VALUE_24_5, - APM_GAIN_VALUE_26_0, - APM_GAIN_VALUE_27_5, - APM_GAIN_VALUE_29_0, - APM_GAIN_VALUE_30_5, - APM_GAIN_VALUE_32_0, - APM_GAIN_VALUE_33_5, - APM_GAIN_VALUE_35_0, - APM_GAIN_VALUE_36_5, - APM_GAIN_VALUE_38_0, - APM_GAIN_VALUE_39_5, - APM_GAIN_VALUE_41_0, - APM_GAIN_VALUE_42_5 -}; - -/* ADC Audio Data Word Length */ -enum apm_adc_data_length { - APM_ADC_DATA_LEN_16_BITS = 0x00, - APM_ADC_DATA_LEN_18_BITS, - APM_ADC_DATA_LEN_20_BITS, - APM_ADC_DATA_LEN_24_BITS -}; - -struct apm_config { - enum apm_dmic_rate vad_dmic_rate; - enum apm_dmic_rate adc_ram_dmic_rate; - enum apm_dmic_rate adc_i2s_dmic_rate; - enum apm_adc_gain_coupling gain_coupling; - uint8_t left_chan_gain; - uint8_t right_chan_gain; -}; -struct apm_auto_gain_config { - int stereo_enable; - enum apm_adc_target_out_level agc_target; - int nois_gate_en; - enum apm_noise_gate_threshold nois_gate_thold; - enum apm_agc_adj_hold_time hold_time; - enum apm_gain_ramp_time attack_time; - enum apm_gain_ramp_time decay_time; - enum apm_gain_values gain_max; - enum apm_gain_values gain_min; -}; - -/*****************************************************************************/ -/* IC specific low-level driver */ -enum wov_modes; -/** - * Sets the RAM ADC DMIC rate. - * - * @param rate - ADC digital microphone rate - * @return None - */ -void apm_set_adc_ram_dmic_config(enum apm_dmic_rate rate); - -/** - * Gets the RAM ADC DMIC rate. - * - * @param None - * @return ADC digital microphone rate code. - */ -enum apm_dmic_rate apm_get_adc_ram_dmic_rate(void); - -/** - * Sets the ADC I2S DMIC rate. - * - * @param rate - ADC digital microphone rate - * @return None - */ -void apm_set_adc_i2s_dmic_config(enum apm_dmic_rate rate); - -/** - * Gets the ADC I2S DMIC rate. - * - * @param None - * @return ADC digital microphone rate code. - */ -enum apm_dmic_rate apm_get_adc_i2s_dmic_rate(void); - -/** - * Sets VAD DMIC rate. - * - * @param rate - VAD DMIC rate - * - * @return None - */ -void apm_set_vad_dmic_rate(enum apm_dmic_rate rate); - -/** - * Gets VAD DMIC rate. - * - * @param None - * - * @return ADC digital microphone rate code. - */ -enum apm_dmic_rate apm_get_vad_dmic_rate(void); - -/** - * Gets the ADC DMIC rate. - * - * @param None - * @return ADC digital microphone rate code. - */ -enum apm_dmic_rate apm_get_adc_dmic_rate(void); - -/** - * Initiate APM module local parameters.. - * - * @param enable - enabled flag, 1 means enable - * @return None - */ -void apm_init(void); - -/** - * Enables/Disables APM module. - * - * @param enable - enabled flag, true means enable - * @return None - */ -void apm_enable(int enable); - -/** - * Enables/Disables voice activity detected interrupt. - * - * @param enable - enabled flag, true means enable - * @return APM interrupt mode. - */ -void apm_enable_vad_interrupt(int enable); - -/** - * Enables/Disables ADC. - * - * @param enable - enabled flag, true means enable - * @return None - */ -void apm_adc_enable(int enable); - -/** - * sets the ADC frequency. - * - * @param adc_freq - ADC frequency. - * @return None - */ -void apm_adc_set_freq(enum apm_adc_frequency adc_freq); - -/** - * Configures the ADC. - * - * @param hpf_enable - High pass filter enabled flag, true means enable - * @param filter_mode - ADC wind noise filter mode. - * @param adc_freq - ADC frequency. - * @return None - */ -void apm_adc_config(int hpf_enable, - enum apm_adc_wind_noise_filter_mode filter_mode, - enum apm_adc_frequency adc_freq); - -/** - * Enables/Disables Digital Microphone. - * - * @param enable - enabled flag, true means enable - * @return None - */ -void apm_dmic_enable(int enable); - -/** - * Configures Digital Microphone. - * - * @param mix_left - Mixer left channel output selection on ADC path. - * @param mix_right - Mixer right channel output selection on ADC path. - * @return None - */ -void apm_digital_mixer_config(enum apm_dig_mix mix_left, - enum apm_dig_mix mix_right); - -/** - * Enables/Disables the VAD functionality. - * - * @param enable - enabled flag, true means enable - * @return None - */ -void apm_vad_enable(int enable); - -/** - * Enables/Disables VAD ADC wakeup - * - * @param enable - true enable, false disable. - * - * @return None - */ -void apm_vad_adc_wakeup_enable(int enable); - -/** - * Sets VAD Input chanel. - * - * @param chan_src - Processed digital microphone channel - * selection. - * @return None - */ -void apm_set_vad_input_channel(enum apm_vad_in_channel_src chan_src); - -/** - * Sets VAD sensitivity. - * - * @param sensitivity_db - VAD sensitivity in db. - * @return None - */ -void apm_set_vad_sensitivity(uint8_t sensitivity_db); - -/** - * Gets VAD sensitivity. - * - * @param None. - * @return VAD sensitivity in db - */ -uint8_t apm_get_vad_sensitivity(void); - -/** - * Restarts VAD functionality. - * - * @param None - * @return None - */ -void apm_vad_restart(void); - -/** - * Restarts VAD functionality. - * - * @param gain_coupling - ADC digital gain coupling (independent or - * rigth tracks left). - * @param left_chan_gain - Left channel ADC digital gain programming value. - * @param right_chan_gain - Right channel ADC digital gain programming value. - * @return EC_ERROR_INVAL or EC_SUCCESS - */ -enum ec_error_list apm_adc_gain_config(enum apm_adc_gain_coupling gain_coupling, - uint8_t left_chan_gain, uint8_t right_chan_gain); - -/** - * Enables/Disables the automatic gain. - * - * @param enable - enabled flag, true means enable - * @return None - */ -void apm_auto_gain_cntrl_enable(int enable); - -/** - * Enables/Disables the automatic gain. - * - * @param gain_cfg - struct of apm auto gain config - * @return EC_ERROR_INVAL or EC_SUCCESS - */ -enum ec_error_list apm_adc_auto_gain_config( - struct apm_auto_gain_config *gain_cfg); - -/** - * Sets APM mode (enables & disables APN sub modules accordingly - * to the APM mode). - * - * @param apm_mode - APM mode, DEFAULT, DETECTION, RECORD or INDEPENDENT modes. - * @return None - */ -void apm_set_mode(enum wov_modes wov_mode); - -/** - * Clears VAD detected bit in IFR register. - * - * @param None - * @return None. - */ -void apm_clear_vad_detected_bit(void); - -#endif /* __CROS_EC_APM_CHIP_H */ |