| /* |
| * Copyright (C) 2014 NXP Semiconductors, 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 as |
| * published by the Free Software Foundation. |
| * |
| */ |
| |
| #ifndef TFA98XX_INTERNALS_H |
| #define TFA98XX_INTERNALS_H |
| |
| #include "config.h" |
| |
| #include "tfa_service.h" //TODO cleanup for enum Tfa98xx_Status_ID |
| |
| /** |
| * Return a text version of the firmware status ID code |
| * @param status the given status ID code |
| * @return the firmware status ID string |
| */ |
| const char *tfadsp_fw_status_string(enum Tfa98xx_Status_ID status); |
| int tfadsp_fw_start(struct tfa_device *tfa, int prof_idx, int vstep_idx); |
| int tfadsp_fw_get_api_version(struct tfa_device *tfa, uint8_t *buffer); |
| #define FW_MAXTAG 150 |
| int tfadsp_fw_get_tag(struct tfa_device *tfa, uint8_t *buffer); |
| int tfadsp_fw_get_status_change(struct tfa_device *tfa, uint8_t *buffer); |
| int tfadsp_fw_set_re25(struct tfa_device *tfa, int prim, int sec); |
| int tfadsp_fw_get_re25(struct tfa_device *tfa, uint8_t *buffer); |
| |
| /* |
| * the order matches the ACK bits order in TFA98XX_CF_STATUS |
| */ |
| enum tfa_fw_event { /* not all available on each device */ |
| tfa_fw_i2c_cmd_ack, |
| tfa_fw_reset_start, |
| tfa_fw_short_on_mips, |
| tfa_fw_soft_mute_ready, |
| tfa_fw_volume_ready, |
| tfa_fw_error_damage, |
| tfa_fw_calibrate_done, |
| tfa_fw_max |
| }; |
| |
| /* the following type mappings are compiler specific */ |
| #define subaddress_t unsigned char |
| |
| /* module Ids */ |
| #define MODULE_FRAMEWORK 0 |
| #define MODULE_SPEAKERBOOST 1 |
| #define MODULE_BIQUADFILTERBANK 2 |
| #define MODULE_TAPTRIGGER 5 |
| #define MODULE_SETRE 9 |
| |
| /* RPC commands */ |
| /* SET */ |
| #define FW_PAR_ID_SET_MEMORY 0x03 |
| #define FW_PAR_ID_SET_SENSES_DELAY 0x04 |
| #define FW_PAR_ID_SETSENSESCAL 0x05 |
| #define FW_PAR_ID_SET_INPUT_SELECTOR 0x06 |
| #define FW_PAR_ID_SET_OUTPUT_SELECTOR 0x08 |
| #define FW_PAR_ID_SET_PROGRAM_CONFIG 0x09 |
| #define FW_PAR_ID_SET_GAINS 0x0A |
| #define FW_PAR_ID_SET_MEMTRACK 0x0B |
| #define FW_PAR_ID_SET_FWKUSECASE 0x11 |
| #define TFA1_FW_PAR_ID_SET_CURRENT_DELAY 0x03 |
| #define TFA1_FW_PAR_ID_SET_CURFRAC_DELAY 0x06 |
| /* GET */ |
| #define FW_PAR_ID_GET_MEMORY 0x83 |
| #define FW_PAR_ID_GLOBAL_GET_INFO 0x84 |
| #define FW_PAR_ID_GET_FEATURE_INFO 0x85 |
| #define FW_PAR_ID_GET_MEMTRACK 0x8B |
| #define FW_PAR_ID_GET_TAG 0xFF |
| #define FW_PAR_ID_GET_API_VERSION 0xFE |
| #define FW_PAR_ID_GET_STATUS_CHANGE 0x8D |
| |
| /* Load a full model into SpeakerBoost. */ |
| /* SET */ |
| #define SB_PARAM_SET_ALGO_PARAMS 0x00 |
| #define SB_PARAM_SET_LAGW 0x01 |
| #define SB_PARAM_SET_ALGO_PARAMS_WITHOUT_RESET 0x02 |
| #define SB_PARAM_SET_RE25C 0x05 |
| #define SB_PARAM_SET_LSMODEL 0x06 |
| #define SB_PARAM_SET_MBDRC 0x07 |
| #define SB_PARAM_SET_MBDRC_WITHOUT_RESET 0x08 |
| #define SB_PARAM_SET_EXCURSION_FILTERS 0x0A |
| #define SB_PARAM_SET_DRC 0x0F |
| /* GET */ |
| #define SB_PARAM_GET_ALGO_PARAMS 0x80 |
| #define SB_PARAM_GET_LAGW 0x81 |
| #define SB_PARAM_GET_RE25C 0x85 |
| #define SB_PARAM_GET_LSMODEL 0x86 |
| #define SB_PARAM_GET_MBDRC 0x87 |
| #define SB_PARAM_GET_MBDRC_DYNAMICS 0x89 |
| #define SB_PARAM_GET_EXCURSION_FILTERS 0x8A |
| #define SB_PARAM_GET_TAG 0xFF |
| |
| #define SB_PARAM_SET_EQ 0x0A /* 2 Equaliser Filters. */ |
| #define SB_PARAM_SET_PRESET 0x0D /* Load a preset */ |
| #define SB_PARAM_SET_CONFIG 0x0E /* Load a config */ |
| #define SB_PARAM_SET_AGCINS 0x10 |
| #define SB_PARAM_SET_CURRENT_DELAY 0x03 |
| #define SB_PARAM_GET_STATE 0xC0 |
| #define SB_PARAM_GET_XMODEL 0xC1 /* Gets current Excursion Model. */ |
| #define SB_PARAM_GET_XMODEL_COEFFS 0x8C /* Get coefficients for XModel */ |
| #define SB_PARAM_GET_EXCURSION_FILTERS 0x8A /* Get excursion filters */ |
| #define SB_PARAM_SET_EXCURSION_FILTERS 0x0A /* Set excursion filters */ |
| |
| /* SET: TAPTRIGGER */ |
| #define TAP_PARAM_SET_ALGO_PARAMS 0x01 |
| #define TAP_PARAM_SET_DECIMATION_PARAMS 0x02 |
| |
| /* GET: TAPTRIGGER*/ |
| #define TAP_PARAM_GET_ALGO_PARAMS 0x81 |
| #define TAP_PARAM_GET_TAP_RESULTS 0x84 |
| |
| /* sets the speaker calibration impedance (@25 degrees celsius) */ |
| #define SB_PARAM_SET_RE0 0x89 |
| |
| #define BFB_PAR_ID_SET_COEFS 0x00 |
| #define BFB_PAR_ID_GET_COEFS 0x80 |
| #define BFB_PAR_ID_GET_CONFIG 0x81 |
| |
| /* for compatibility */ |
| #define FW_PARAM_GET_STATE FW_PAR_ID_GLOBAL_GET_INFO |
| #define FW_PARAM_GET_FEATURE_BITS FW_PAR_ID_GET_FEATURE_BITS |
| |
| /* RPC Status results */ |
| #define STATUS_OK 0 |
| #define STATUS_INVALID_MODULE_ID 2 |
| #define STATUS_INVALID_PARAM_ID 3 |
| #define STATUS_INVALID_INFO_ID 4 |
| |
| /* the maximum message length in the communication with the DSP */ |
| #define TFA2_MAX_PARAM_SIZE (507*3) /* TFA2 */ |
| #define TFA1_MAX_PARAM_SIZE (145*3) /* TFA1 */ |
| |
| #define ROUND_DOWN(a, n) (((a)/(n))*(n)) |
| |
| /* feature bits */ |
| #define FEATURE1_TCOEF 0x100 /* bit8 set means tCoefA expected */ |
| #define FEATURE1_DRC 0x200 /* bit9 NOT set means DRC expected */ |
| |
| /* DSP firmware xmem defines */ |
| #define TFA1_FW_XMEM_CALIBRATION_DONE 231 |
| #define TFA2_FW_XMEM_CALIBRATION_DONE 516 |
| #define TFA1_FW_XMEM_COUNT_BOOT 0xa1 |
| #define TFA2_FW_XMEM_COUNT_BOOT 512 |
| #define TFA2_FW_XMEM_CMD_COUNT 520 |
| |
| /* note that the following defs rely on the handle variable */ |
| #define TFA_FW_XMEM_CALIBRATION_DONE TFA_FAM_FW(tfa, XMEM_CALIBRATION_DONE) |
| #define TFA_FW_XMEM_COUNT_BOOT TFA_FAM_FW(tfa, XMEM_COUNT_BOOT) |
| #define TFA_FW_XMEM_CMD_COUNT TFA_FAM_FW(tfa, XMEM_CMD_COUNT) |
| |
| #define TFA2_FW_ReZ_SCALE 65536 |
| #define TFA1_FW_ReZ_SCALE 16384 |
| |
| #endif /* TFA98XX_INTERNALS_H */ |