/* * load speaker parameters and verify readback * * note: this function can be called from other tests it uses the global handle */ int tfa98xxDiagLoadSpeaker(int slave) { int result = 1; // 1 is failure int gbl=0; Tfa98xx_SpeakerParameters_t spkr; TRACEIN; if ( gHandle<0 ) { lastApiError = Tfa98xx_Open(slave << 1, &gHandle); if (lastApiError != Tfa98xx_Error_Ok) return 2; } else gbl = 1; coldStartup(gHandle); lastApiError = Tfa98xx_DspWriteSpeakerParameters(gHandle, TFA98XX_SPEAKERPARAMETER_LENGTH, settings_KS_13X18_DUMBO_speaker); assert(lastApiError == Tfa98xx_Error_Ok); lastApiError = Tfa98xx_DspGetParam(gHandle, 1 /*MODULE_SPEAKERBOOST */ , 0x86, sizeof(spkr), spkr); assert(lastApiError == Tfa98xx_Error_Ok); result = 0 != memcmp(settings_KS_13X18_DUMBO_speaker, spkr, sizeof(Tfa98xx_SpeakerParameters_t)); if (result) sprintf(lastErrorString, "DSP parameters mismatch"); stop: if ( !gbl ) { Tfa98xx_Close(gHandle); lastError = result; gHandle=-1; } TRACEOUT; return result; }
/* load a speaker model from a file, as generated by the GUI, or saved from a previous execution */ static void setSpeaker(int handle_cnt, Tfa98xx_handle_t handles[], struct tfa98xx_param_data *speaker) { enum Tfa98xx_Error err; if (speaker == NULL || speaker->data == NULL) { pr_info("%s: not use speaker data\n", __func__); return; } pr_debug("%s: start\n", __func__); if (handle_cnt >= 2) err = Tfa98xx_DspWriteSpeakerParametersMultiple(handle_cnt, handles, speaker->size, speaker->data); else err = Tfa98xx_DspWriteSpeakerParameters(handles[0], speaker->size, speaker->data); if (err != Tfa98xx_Error_Ok) pr_err("%s: Tfa98xx_DspWriteSpeakerParameters failed\n", __func__); }