| /* |
| * Copyright 2019 NXP |
| * All rights reserved. |
| * |
| * |
| * SPDX-License-Identifier: BSD-3-Clause |
| */ |
| |
| #include "fsl_codec_adapter.h" |
| #include "fsl_codec_common.h" |
| |
| /******************************************************************************* |
| * Definitions |
| ******************************************************************************/ |
| |
| /******************************************************************************* |
| * Prototypes |
| ******************************************************************************/ |
| |
| /******************************************************************************* |
| * Variables |
| ******************************************************************************/ |
| |
| /******************************************************************************* |
| * Code |
| ******************************************************************************/ |
| /*! |
| * brief Codec initilization. |
| * |
| * param handle codec handle. |
| * param config codec configuration. |
| * return kStatus_Success is success, else initial failed. |
| */ |
| status_t HAL_CODEC_Init(void *handle, void *config) |
| { |
| assert((config != NULL) && (handle != NULL)); |
| |
| codec_config_t *codecConfig = (codec_config_t *)config; |
| status_t retVal = kStatus_Success; |
| |
| switch (codecConfig->codecDevType) |
| { |
| #ifdef CODEC_WM8904_ENABLE |
| case kCODEC_WM8904: |
| retVal = HAL_CODEC_WM8904_Init(handle, config); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8960_ENABLE |
| case kCODEC_WM8960: |
| retVal = HAL_CODEC_WM8960_Init(handle, config); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8524_ENABLE |
| case kCODEC_WM8524: |
| retVal = HAL_CODEC_WM8524_Init(handle, config); |
| break; |
| #endif |
| |
| #ifdef CODEC_SGTL5000_ENABLE |
| case kCODEC_SGTL5000: |
| retVal = HAL_CODEC_SGTL5000_Init(handle, config); |
| break; |
| #endif |
| |
| #ifdef CODEC_DA7212_ENABLE |
| case kCODEC_DA7212: |
| retVal = HAL_CODEC_DA7212_Init(handle, config); |
| break; |
| #endif |
| |
| #ifdef CODEC_CS42888_ENABLE |
| case kCODEC_CS42888: |
| retVal = HAL_CODEC_CS42888_Init(handle, config); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4497_ENABLE |
| case kCODEC_AK4497: |
| retVal = HAL_CODEC_AK4497_Init(handle, config); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4458_ENABLE |
| case kCODEC_AK4458: |
| retVal = HAL_CODEC_AK4458_Init(handle, config); |
| break; |
| #endif |
| |
| #ifdef CODEC_TFA9XXX_ENABLE |
| case kCODEC_TFA9XXX: |
| retVal = HAL_CODEC_TFA9XXX_Init(handle, config); |
| break; |
| #endif |
| |
| #ifdef CODEC_TFA9896_ENABLE |
| case kCODEC_TFA9896: |
| retVal = HAL_CODEC_TFA9896_Init(handle, config); |
| break; |
| #endif |
| default: |
| return kStatus_InvalidArgument; |
| } |
| |
| return retVal; |
| } |
| |
| /*! |
| * brief Codec de-initilization. |
| * |
| * param handle codec handle. |
| * return kStatus_Success is success, else de-initial failed. |
| */ |
| status_t HAL_CODEC_Deinit(void *handle) |
| { |
| assert(handle != NULL); |
| status_t retVal = kStatus_Success; |
| |
| switch (((codec_handle_t *)handle)->codecConfig->codecDevType) |
| { |
| #ifdef CODEC_WM8904_ENABLE |
| case kCODEC_WM8904: |
| retVal = HAL_CODEC_WM8904_Deinit(handle); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8960_ENABLE |
| case kCODEC_WM8960: |
| retVal = HAL_CODEC_WM8960_Deinit(handle); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8524_ENABLE |
| case kCODEC_WM8524: |
| retVal = HAL_CODEC_WM8524_Deinit(handle); |
| break; |
| #endif |
| |
| #ifdef CODEC_SGTL5000_ENABLE |
| case kCODEC_SGTL5000: |
| retVal = HAL_CODEC_SGTL5000_Deinit(handle); |
| break; |
| #endif |
| |
| #ifdef CODEC_DA7212_ENABLE |
| case kCODEC_DA7212: |
| retVal = HAL_CODEC_DA7212_Deinit(handle); |
| break; |
| #endif |
| |
| #ifdef CODEC_CS42888_ENABLE |
| case kCODEC_CS42888: |
| retVal = HAL_CODEC_CS42888_Deinit(handle); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4497_ENABLE |
| case kCODEC_AK4497: |
| retVal = HAL_CODEC_AK4497_Deinit(handle); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4458_ENABLE |
| case kCODEC_AK4458: |
| retVal = HAL_CODEC_AK4458_Deinit(handle); |
| break; |
| #endif |
| |
| #ifdef CODEC_TFA9XXX_ENABLE |
| case kCODEC_TFA9XXX: |
| retVal = HAL_CODEC_TFA9XXX_Deinit(handle); |
| break; |
| #endif |
| default: |
| return kStatus_InvalidArgument; |
| } |
| |
| return retVal; |
| } |
| |
| /*! |
| * brief set audio data format. |
| * |
| * param handle codec handle. |
| * param mclk master clock frequency in HZ. |
| * param sampleRate sample rate in HZ. |
| * param bitWidth bit width. |
| * return kStatus_Success is success, else configure failed. |
| */ |
| status_t HAL_CODEC_SetFormat(void *handle, uint32_t mclk, uint32_t sampleRate, uint32_t bitWidth) |
| { |
| assert(handle != NULL); |
| status_t retVal = kStatus_Success; |
| |
| switch (((codec_handle_t *)handle)->codecConfig->codecDevType) |
| { |
| #ifdef CODEC_WM8904_ENABLE |
| case kCODEC_WM8904: |
| retVal = HAL_CODEC_WM8904_SetFormat(handle, mclk, sampleRate, bitWidth); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8960_ENABLE |
| case kCODEC_WM8960: |
| retVal = HAL_CODEC_WM8960_SetFormat(handle, mclk, sampleRate, bitWidth); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8524_ENABLE |
| case kCODEC_WM8524: |
| retVal = HAL_CODEC_WM8524_SetFormat(handle, mclk, sampleRate, bitWidth); |
| break; |
| #endif |
| |
| #ifdef CODEC_SGTL5000_ENABLE |
| case kCODEC_SGTL5000: |
| retVal = HAL_CODEC_SGTL5000_SetFormat(handle, mclk, sampleRate, bitWidth); |
| break; |
| #endif |
| |
| #ifdef CODEC_DA7212_ENABLE |
| case kCODEC_DA7212: |
| retVal = HAL_CODEC_DA7212_SetFormat(handle, mclk, sampleRate, bitWidth); |
| break; |
| #endif |
| |
| #ifdef CODEC_CS42888_ENABLE |
| case kCODEC_CS42888: |
| retVal = HAL_CODEC_CS42888_SetFormat(handle, mclk, sampleRate, bitWidth); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4497_ENABLE |
| case kCODEC_AK4497: |
| retVal = HAL_CODEC_AK4497_SetFormat(handle, mclk, sampleRate, bitWidth); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4458_ENABLE |
| case kCODEC_AK4458: |
| retVal = HAL_CODEC_AK4458_SetFormat(handle, mclk, sampleRate, bitWidth); |
| break; |
| #endif |
| |
| #ifdef CODEC_TFA9XXX_ENABLE |
| case kCODEC_TFA9XXX: |
| retVal = HAL_CODEC_TFA9XXX_SetFormat(handle, mclk, sampleRate, bitWidth); |
| break; |
| #endif |
| default: |
| return kStatus_InvalidArgument; |
| } |
| |
| return retVal; |
| } |
| |
| /*! |
| * brief set audio codec module volume. |
| * |
| * param handle codec handle. |
| * param channel audio codec play channel, can be a value or combine value of _codec_play_channel. |
| * param volume volume value, support 0 ~ 100, 0 is mute, 100 is the maximum volume value. |
| * return kStatus_Success is success, else configure failed. |
| */ |
| status_t HAL_CODEC_SetVolume(void *handle, uint32_t playChannel, uint32_t volume) |
| { |
| assert(handle != NULL); |
| status_t retVal = kStatus_Success; |
| |
| switch (((codec_handle_t *)handle)->codecConfig->codecDevType) |
| { |
| #ifdef CODEC_WM8904_ENABLE |
| case kCODEC_WM8904: |
| retVal = HAL_CODEC_WM8904_SetVolume(handle, playChannel, volume); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8960_ENABLE |
| case kCODEC_WM8960: |
| retVal = HAL_CODEC_WM8960_SetVolume(handle, playChannel, volume); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8524_ENABLE |
| case kCODEC_WM8524: |
| retVal = HAL_CODEC_WM8524_SetVolume(handle, playChannel, volume); |
| break; |
| #endif |
| |
| #ifdef CODEC_SGTL5000_ENABLE |
| case kCODEC_SGTL5000: |
| retVal = HAL_CODEC_SGTL5000_SetVolume(handle, playChannel, volume); |
| break; |
| #endif |
| |
| #ifdef CODEC_DA7212_ENABLE |
| case kCODEC_DA7212: |
| retVal = HAL_CODEC_DA7212_SetVolume(handle, playChannel, volume); |
| break; |
| #endif |
| |
| #ifdef CODEC_CS42888_ENABLE |
| case kCODEC_CS42888: |
| retVal = HAL_CODEC_CS42888_SetVolume(handle, playChannel, volume); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4497_ENABLE |
| case kCODEC_AK4497: |
| retVal = HAL_CODEC_AK4497_SetVolume(handle, playChannel, volume); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4458_ENABLE |
| case kCODEC_AK4458: |
| retVal = HAL_CODEC_AK4458_SetVolume(handle, playChannel, volume); |
| break; |
| #endif |
| |
| #ifdef CODEC_TFA9XXX_ENABLE |
| case kCODEC_TFA9XXX: |
| retVal = HAL_CODEC_TFA9XXX_SetVolume(handle, playChannel, volume); |
| break; |
| #endif |
| default: |
| return kStatus_InvalidArgument; |
| } |
| |
| return retVal; |
| } |
| |
| /*! |
| * brief set audio codec module mute. |
| * |
| * param handle codec handle. |
| * param channel audio codec play channel, can be a value or combine value of _codec_play_channel. |
| * param isMute true is mute, false is unmute. |
| * return kStatus_Success is success, else configure failed. |
| */ |
| status_t HAL_CODEC_SetMute(void *handle, uint32_t playChannel, bool isMute) |
| { |
| assert(handle != NULL); |
| status_t retVal = kStatus_Success; |
| |
| switch (((codec_handle_t *)handle)->codecConfig->codecDevType) |
| { |
| #ifdef CODEC_WM8904_ENABLE |
| case kCODEC_WM8904: |
| retVal = HAL_CODEC_WM8904_SetMute(handle, playChannel, isMute); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8960_ENABLE |
| case kCODEC_WM8960: |
| retVal = HAL_CODEC_WM8960_SetMute(handle, playChannel, isMute); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8524_ENABLE |
| case kCODEC_WM8524: |
| retVal = HAL_CODEC_WM8524_SetMute(handle, playChannel, isMute); |
| break; |
| #endif |
| |
| #ifdef CODEC_SGTL5000_ENABLE |
| case kCODEC_SGTL5000: |
| retVal = HAL_CODEC_SGTL5000_SetMute(handle, playChannel, isMute); |
| break; |
| #endif |
| |
| #ifdef CODEC_DA7212_ENABLE |
| case kCODEC_DA7212: |
| retVal = HAL_CODEC_DA7212_SetMute(handle, playChannel, isMute); |
| break; |
| #endif |
| |
| #ifdef CODEC_CS42888_ENABLE |
| case kCODEC_CS42888: |
| retVal = HAL_CODEC_CS42888_SetMute(handle, playChannel, isMute); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4497_ENABLE |
| case kCODEC_AK4497: |
| retVal = HAL_CODEC_AK4497_SetMute(handle, playChannel, isMute); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4458_ENABLE |
| case kCODEC_AK4458: |
| retVal = HAL_CODEC_AK4458_SetMute(handle, playChannel, isMute); |
| break; |
| #endif |
| |
| #ifdef CODEC_TFA9XXX_ENABLE |
| case kCODEC_TFA9XXX: |
| retVal = HAL_CODEC_TFA9XXX_SetMute(handle, playChannel, isMute); |
| break; |
| #endif |
| default: |
| return kStatus_InvalidArgument; |
| } |
| |
| return retVal; |
| } |
| |
| /*! |
| * brief set audio codec module power. |
| * |
| * param handle codec handle. |
| * param module audio codec module. |
| * param powerOn true is power on, false is power down. |
| * return kStatus_Success is success, else configure failed. |
| */ |
| status_t HAL_CODEC_SetPower(void *handle, uint32_t module, bool powerOn) |
| { |
| assert(handle != NULL); |
| status_t retVal = kStatus_Success; |
| |
| switch (((codec_handle_t *)handle)->codecConfig->codecDevType) |
| { |
| #ifdef CODEC_WM8904_ENABLE |
| case kCODEC_WM8904: |
| retVal = HAL_CODEC_WM8904_SetPower(handle, module, powerOn); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8960_ENABLE |
| case kCODEC_WM8960: |
| retVal = HAL_CODEC_WM8960_SetPower(handle, module, powerOn); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8524_ENABLE |
| case kCODEC_WM8524: |
| retVal = HAL_CODEC_WM8524_SetPower(handle, module, powerOn); |
| break; |
| #endif |
| |
| #ifdef CODEC_SGTL5000_ENABLE |
| case kCODEC_SGTL5000: |
| retVal = HAL_CODEC_SGTL5000_SetPower(handle, module, powerOn); |
| break; |
| #endif |
| |
| #ifdef CODEC_DA7212_ENABLE |
| case kCODEC_DA7212: |
| retVal = HAL_CODEC_DA7212_SetPower(handle, module, powerOn); |
| break; |
| #endif |
| |
| #ifdef CODEC_CS42888_ENABLE |
| case kCODEC_CS42888: |
| retVal = HAL_CODEC_CS42888_SetPower(handle, module, powerOn); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4497_ENABLE |
| case kCODEC_AK4497: |
| retVal = HAL_CODEC_AK4497_SetPower(handle, module, powerOn); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4458_ENABLE |
| case kCODEC_AK4458: |
| retVal = HAL_CODEC_AK4458_SetPower(handle, module, powerOn); |
| break; |
| #endif |
| |
| #ifdef CODEC_TFA9XXX_ENABLE |
| case kCODEC_TFA9XXX: |
| retVal = HAL_CODEC_TFA9XXX_SetPower(handle, module, powerOn); |
| break; |
| #endif |
| default: |
| return kStatus_InvalidArgument; |
| } |
| |
| return retVal; |
| } |
| |
| /*! |
| * brief codec set record source. |
| * |
| * param handle codec handle. |
| * param source audio codec record source, can be a value or combine value of _codec_record_source. |
| * |
| * return kStatus_Success is success, else configure failed. |
| */ |
| status_t HAL_CODEC_SetRecord(void *handle, uint32_t recordSource) |
| { |
| assert(handle != NULL); |
| status_t retVal = kStatus_Success; |
| |
| switch (((codec_handle_t *)handle)->codecConfig->codecDevType) |
| { |
| #ifdef CODEC_WM8904_ENABLE |
| case kCODEC_WM8904: |
| retVal = HAL_CODEC_WM8904_SetRecord(handle, recordSource); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8960_ENABLE |
| case kCODEC_WM8960: |
| retVal = HAL_CODEC_WM8960_SetRecord(handle, recordSource); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8524_ENABLE |
| case kCODEC_WM8524: |
| retVal = HAL_CODEC_WM8524_SetRecord(handle, recordSource); |
| break; |
| #endif |
| |
| #ifdef CODEC_SGTL5000_ENABLE |
| case kCODEC_SGTL5000: |
| retVal = HAL_CODEC_SGTL5000_SetRecord(handle, recordSource); |
| break; |
| #endif |
| |
| #ifdef CODEC_DA7212_ENABLE |
| case kCODEC_DA7212: |
| retVal = HAL_CODEC_DA7212_SetRecord(handle, recordSource); |
| break; |
| #endif |
| |
| #ifdef CODEC_CS42888_ENABLE |
| case kCODEC_CS42888: |
| retVal = HAL_CODEC_CS42888_SetRecord(handle, recordSource); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4497_ENABLE |
| case kCODEC_AK4497: |
| retVal = HAL_CODEC_AK4497_SetRecord(handle, recordSource); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4458_ENABLE |
| case kCODEC_AK4458: |
| retVal = HAL_CODEC_AK4458_SetRecord(handle, recordSource); |
| break; |
| #endif |
| |
| #ifdef CODEC_TFA9XXX_ENABLE |
| case kCODEC_TFA9XXX: |
| retVal = HAL_CODEC_TFA9XXX_SetRecord(handle, recordSource); |
| break; |
| #endif |
| default: |
| return kStatus_InvalidArgument; |
| } |
| |
| return retVal; |
| } |
| |
| /*! |
| * brief codec set record channel. |
| * |
| * param handle codec handle. |
| * param leftRecordChannel audio codec record channel, reference _codec_record_channel, can be a value or combine value |
| of member in _codec_record_channel. |
| * param rightRecordChannel audio codec record channel, reference _codec_record_channel, can be a value combine of |
| member in _codec_record_channel. |
| |
| * return kStatus_Success is success, else configure failed. |
| */ |
| status_t HAL_CODEC_SetRecordChannel(void *handle, uint32_t leftRecordChannel, uint32_t rightRecordChannel) |
| { |
| assert(handle != NULL); |
| status_t retVal = kStatus_Success; |
| |
| switch (((codec_handle_t *)handle)->codecConfig->codecDevType) |
| { |
| #ifdef CODEC_WM8904_ENABLE |
| case kCODEC_WM8904: |
| retVal = HAL_CODEC_WM8904_SetRecordChannel(handle, leftRecordChannel, rightRecordChannel); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8960_ENABLE |
| case kCODEC_WM8960: |
| retVal = HAL_CODEC_WM8960_SetRecordChannel(handle, leftRecordChannel, rightRecordChannel); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8524_ENABLE |
| case kCODEC_WM8524: |
| retVal = HAL_CODEC_WM8524_SetRecordChannel(handle, leftRecordChannel, rightRecordChannel); |
| break; |
| #endif |
| |
| #ifdef CODEC_SGTL5000_ENABLE |
| case kCODEC_SGTL5000: |
| retVal = HAL_CODEC_SGTL5000_SetRecordChannel(handle, leftRecordChannel, rightRecordChannel); |
| break; |
| #endif |
| |
| #ifdef CODEC_DA7212_ENABLE |
| case kCODEC_DA7212: |
| retVal = HAL_CODEC_DA7212_SetRecordChannel(handle, leftRecordChannel, rightRecordChannel); |
| break; |
| #endif |
| |
| #ifdef CODEC_CS42888_ENABLE |
| case kCODEC_CS42888: |
| retVal = HAL_CODEC_CS42888_SetRecordChannel(handle, leftRecordChannel, rightRecordChannel); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4497_ENABLE |
| case kCODEC_AK4497: |
| retVal = HAL_CODEC_AK4497_SetRecordChannel(handle, leftRecordChannel, rightRecordChannel); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4458_ENABLE |
| case kCODEC_AK4458: |
| retVal = HAL_CODEC_AK4458_SetRecordChannel(handle, leftRecordChannel, rightRecordChannel); |
| break; |
| #endif |
| |
| #ifdef CODEC_TFA9XXX_ENABLE |
| case kCODEC_TFA9XXX: |
| retVal = HAL_CODEC_TFA9XXX_SetRecordChannel(handle, leftRecordChannel, rightRecordChannel); |
| break; |
| #endif |
| default: |
| return kStatus_InvalidArgument; |
| } |
| |
| return retVal; |
| } |
| |
| /*! |
| * brief codec set play source. |
| * |
| * param handle codec handle. |
| * param playSource audio codec play source, can be a value or combine value of _codec_play_source. |
| * |
| * return kStatus_Success is success, else configure failed. |
| */ |
| status_t HAL_CODEC_SetPlay(void *handle, uint32_t playSource) |
| { |
| assert(handle != NULL); |
| status_t retVal = kStatus_Success; |
| |
| switch (((codec_handle_t *)handle)->codecConfig->codecDevType) |
| { |
| #ifdef CODEC_WM8904_ENABLE |
| case kCODEC_WM8904: |
| retVal = HAL_CODEC_WM8904_SetPlay(handle, playSource); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8960_ENABLE |
| case kCODEC_WM8960: |
| retVal = HAL_CODEC_WM8960_SetPlay(handle, playSource); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8524_ENABLE |
| case kCODEC_WM8524: |
| retVal = HAL_CODEC_WM8524_SetPlay(handle, playSource); |
| break; |
| #endif |
| |
| #ifdef CODEC_SGTL5000_ENABLE |
| case kCODEC_SGTL5000: |
| retVal = HAL_CODEC_SGTL5000_SetPlay(handle, playSource); |
| break; |
| #endif |
| |
| #ifdef CODEC_DA7212_ENABLE |
| case kCODEC_DA7212: |
| retVal = HAL_CODEC_DA7212_SetPlay(handle, playSource); |
| break; |
| #endif |
| |
| #ifdef CODEC_CS42888_ENABLE |
| case kCODEC_CS42888: |
| retVal = HAL_CODEC_CS42888_SetPlay(handle, playSource); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4497_ENABLE |
| case kCODEC_AK4497: |
| retVal = HAL_CODEC_AK4497_SetPlay(handle, playSource); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4458_ENABLE |
| case kCODEC_AK4458: |
| retVal = HAL_CODEC_AK4458_SetPlay(handle, playSource); |
| break; |
| #endif |
| |
| #ifdef CODEC_TFA9XXX_ENABLE |
| case kCODEC_TFA9XXX: |
| retVal = HAL_CODEC_TFA9XXX_SetPlay(handle, playSource); |
| break; |
| #endif |
| default: |
| return kStatus_InvalidArgument; |
| } |
| |
| return retVal; |
| } |
| |
| /*! |
| * brief codec module control. |
| * |
| * This function is used for codec module control, support switch digital interface cmd, can be expand to support codec |
| * module specific feature |
| * |
| * param handle codec handle. |
| * param cmd module control cmd, reference _codec_module_ctrl_cmd. |
| * param data value to write, when cmd is kCODEC_ModuleRecordSourceChannel, the data should be a value combine |
| * of channel and source, please reference macro CODEC_MODULE_RECORD_SOURCE_CHANNEL(source, LP, LN, RP, RN), reference |
| * codec specific driver for detail configurations. |
| * return kStatus_Success is success, else configure failed. |
| */ |
| status_t HAL_CODEC_ModuleControl(void *handle, uint32_t cmd, uint32_t data) |
| { |
| assert(handle != NULL); |
| status_t retVal = kStatus_Success; |
| |
| switch (((codec_handle_t *)handle)->codecConfig->codecDevType) |
| { |
| #ifdef CODEC_WM8904_ENABLE |
| case kCODEC_WM8904: |
| retVal = HAL_CODEC_WM8904_ModuleControl(handle, cmd, data); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8960_ENABLE |
| case kCODEC_WM8960: |
| retVal = HAL_CODEC_WM8960_ModuleControl(handle, cmd, data); |
| break; |
| #endif |
| |
| #ifdef CODEC_WM8524_ENABLE |
| case kCODEC_WM8524: |
| retVal = HAL_CODEC_WM8524_ModuleControl(handle, cmd, data); |
| break; |
| #endif |
| |
| #ifdef CODEC_SGTL5000_ENABLE |
| case kCODEC_SGTL5000: |
| retVal = HAL_CODEC_SGTL5000_ModuleControl(handle, cmd, data); |
| break; |
| #endif |
| |
| #ifdef CODEC_DA7212_ENABLE |
| case kCODEC_DA7212: |
| retVal = HAL_CODEC_DA7212_ModuleControl(handle, cmd, data); |
| break; |
| #endif |
| |
| #ifdef CODEC_CS42888_ENABLE |
| case kCODEC_CS42888: |
| retVal = HAL_CODEC_CS42888_ModuleControl(handle, cmd, data); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4497_ENABLE |
| case kCODEC_AK4497: |
| retVal = HAL_CODEC_AK4497_ModuleControl(handle, cmd, data); |
| break; |
| #endif |
| |
| #ifdef CODEC_AK4458_ENABLE |
| case kCODEC_AK4458: |
| retVal = HAL_CODEC_AK4458_ModuleControl(handle, cmd, data); |
| break; |
| #endif |
| |
| default: |
| return kStatus_InvalidArgument; |
| } |
| |
| return retVal; |
| } |