1 /* 2 * Copyright 2019 NXP 3 * All rights reserved. 4 * 5 * SPDX-License-Identifier: BSD-3-Clause 6 */ 7 #ifndef TFA_HAPTIC_FW_DEFS_H_ 8 #define TFA_HAPTIC_FW_DEFS_H_ 9 10 /* base version */ 11 #define FW_VERSION 0x0b0000 /* patch version in hex */ 12 #define FW_VERSION_MASK 0xff0000 /* version check mask */ 13 #define FW_XMEM_VERSION 0x11ff /* TFA9894 xmem version offset */ 14 15 /* firmware constants */ 16 #define FW_XMEM_NR_OBJECTS1 6 /* nr of objects in table1 */ 17 #define FW_XMEM_NR_OBJECTS2 5 /* nr of objects in table2 */ 18 #define FW_XMEM_OBJECTSIZE 8 19 #define FW_XMEM_OBJECTSTATESIZE 8 20 21 #define FW_CMDOBJSEL_TABLE2_OFFFSET 64 22 23 #define FW_XMEM_CMDOBJSEL0 4102 /* pObjState */ 24 #define FW_XMEM_CMDOBJSEL1 (FW_XMEM_CMDOBJSEL0 + FW_XMEM_OBJECTSTATESIZE) 25 #define FW_XMEM_SAMPCNT0 (FW_XMEM_CMDOBJSEL0 + 2) /* ->timeCnt */ 26 #define FW_XMEM_SAMPCNT1 (FW_XMEM_CMDOBJSEL1 + 2) 27 #define FW_XMEM_F0 4052 /* fResOut */ 28 #define FW_XMEM_R0 4053 /* Rf0Out */ 29 #define FW_XMEM_GENOBJECTS1 4054 /* objectArray */ 30 #define FW_XMEM_GENOBJECTS2 3152 /* objectArray2 */ 31 #define FW_XMEM_F0_R0_RANGES 4134 /* ZfresMax */ 32 #define FW_XMEM_DISF0TRC 4359 /* disF0Trc */ 33 #define FW_XMEM_DELAY_ATTACK_SMP 4361 /* duckLraPar->delayAttackSmp */ 34 #define FW_XMEM_RECALCSEL 4363 /* recalcSelector */ 35 36 /* note: obj offsets is a table index, the interface index starts at 1 */ 37 #define FW_HB_CAL_OBJ (FW_XMEM_NR_OBJECTS1 - 2) /* calibration object */ 38 #define FW_HB_STOP_OBJ (FW_XMEM_NR_OBJECTS1 - 1) /* silence object */ 39 #define FW_HB_SILENCE_OBJ FW_HB_STOP_OBJ /* same as stop */ 40 #define FW_HB_RECALC_OBJ 3 /* default recalc object */ 41 #define FW_HB_MAX_OBJ (FW_XMEM_NR_OBJECTS1 + FW_XMEM_NR_OBJECTS2) 42 #define FW_HB_SEQ_OBJ FW_HB_MAX_OBJ /* sequencer virtual objects base */ 43 44 #define FW_XMEM_R0_SHIFT 11 /* Q13.11 */ 45 #define FW_XMEM_F0_SHIFT 11 /* Q13.11 */ 46 47 enum tfa_haptic_object_type 48 { 49 object_wave = 0, 50 object_tone = 1, 51 object_silence = 2 52 }; 53 54 /* Tone Generator object definition */ 55 struct haptic_tone_object 56 { 57 int32_t type; 58 int32_t freq; 59 int32_t level; 60 int32_t durationCntMax; 61 int32_t boostBrakeOn; 62 int32_t trackerOn; 63 int32_t boostLength; 64 int32_t reserved; 65 }; 66 67 /* Wave table object definition */ 68 struct haptic_wave_object 69 { 70 int32_t type; 71 int32_t offset; 72 int32_t level; 73 int32_t durationCntMax; 74 int32_t upSampSel; 75 int32_t reserved[3]; 76 }; 77 78 #endif /* TFA_HAPTIC_FW_DEFS_H_ */ 79