| /* |
| * Copyright 2017-2019 NXP |
| * All rights reserved. |
| * |
| * SPDX-License-Identifier: BSD-3-Clause |
| */ |
| |
| #ifndef _FSL_WM8524_H_ |
| #define _FSL_WM8524_H_ |
| |
| #include "fsl_common.h" |
| |
| /*! |
| * @addtogroup wm8524 |
| * @{ |
| */ |
| |
| /******************************************************************************* |
| * Definitions |
| ******************************************************************************/ |
| /*! @name Driver version */ |
| /*@{*/ |
| /*! @brief WM8524 driver version 2.1.0. */ |
| #define FSL_WM8524_DRIVER_VERSION (MAKE_VERSION(2, 1, 0)) |
| /*@}*/ |
| |
| /*!< mute control io function pointer */ |
| typedef void (*wm8524_setMuteIO)(uint32_t output); |
| /*!< format control io function pointer */ |
| typedef void (*wm8524_setProtocolIO)(uint32_t output); |
| |
| /*! @brief The audio data transfer protocol. */ |
| typedef enum _wm8524_protocol |
| { |
| kWM8524_ProtocolLeftJustified = 0x0, /*!< Left justified mode */ |
| kWM8524_ProtocolI2S = 0x1, /*!< I2S mode */ |
| kWM8524_ProtocolRightJustified = 0x2, /*!< Right justified mode */ |
| } wm8524_protocol_t; |
| |
| /*! @brief wm8524 mute operation */ |
| enum _wm8524_mute_control |
| { |
| kWM8524_Mute = 0U, /*!< mute left and right channel DAC */ |
| kWM8524_Unmute = 1U, /*!< unmute left and right channel DAC */ |
| }; |
| |
| /*!< @brief WM8524 configurations */ |
| typedef struct _wm8524_config |
| { |
| wm8524_setMuteIO setMute; /*!< mute io control function pointer */ |
| wm8524_setProtocolIO setProtocol; /*!< format io control function pointer */ |
| wm8524_protocol_t protocol; /*!< Protocol of the codec */ |
| } wm8524_config_t; |
| |
| /*!@brief WM8524 handler */ |
| typedef struct _wm8524_handle_t |
| { |
| wm8524_config_t *config; /*!< wm8524 config pointer */ |
| } wm8524_handle_t; |
| /******************************************************************************* |
| * API |
| ******************************************************************************/ |
| #if defined(__cplusplus) |
| extern "C" { |
| #endif |
| |
| /*! |
| * @brief Initializes WM8524. |
| * |
| * @param handle WM8524 handle structure. |
| * @param config WM8524 configure structure. |
| * @return kStatus_Success. |
| */ |
| status_t WM8524_Init(wm8524_handle_t *handle, wm8524_config_t *config); |
| |
| /*! |
| * @brief Configure WM8524 audio protocol. |
| * |
| * @param handle WM8524 handle structure. |
| * @param protocol WM8524 configuration structure. |
| */ |
| void WM8524_ConfigFormat(wm8524_handle_t *handle, wm8524_protocol_t protocol); |
| |
| /*! |
| * @brief Sets the codec mute state. |
| * |
| * @param handle WM8524 handle structure. |
| * @param isMute true means mute, false means normal. |
| */ |
| void WM8524_SetMute(wm8524_handle_t *handle, bool isMute); |
| |
| #if defined(__cplusplus) |
| } |
| #endif |
| |
| /*! @} */ |
| #endif /* _FSL_WM8524_H_ */ |