Files
E3-20260112-pitch/e3_176_ref-buding/components/codec/ak4619/sdrv_codec_ak4619.h
2026-01-12 18:46:01 +08:00

100 lines
2.8 KiB
C

/**
* @file ak4619.h
* @brief codec ak4619 driver
*
* @copyright Copyright (c) 2022
*
*/
#ifndef _SDRV_CODEC_AK4619_H_
#define _SDRV_CODEC_AK4619_H_
#include <sdrv_gpio.h>
#include <sdrv_i2c.h>
#include "sdrv_codec.h"
/**
* @brief codec device specific configuration , it is defined by specific codec
*
*/
typedef struct sdrv_codec_ak4619_cfg {
/*!< codec i2c control module. */
sdrv_i2c_t i2c_ctrl;
/*!< codec i2c device address. */
uint16_t slave_addr;
/*!< codec power down pin index . */
uint32_t gpio_pdn;
/*!< codec mclk rate which is defined in clock config. */
uint32_t clk_rate;
} sdrv_codec_ak4619_cfg_t;
/**
* @brief initializes codec module
*
* This function is used to initialize codec module.
*
* @param [in] codec sdrv codec device
* @param [in] cfg sdrv codec device configurations
* @return sdrv_codec_status_t
*
*/
sdrv_codec_status_t sdrv_codec_ak4619_init(sdrv_codec_t *codec,
sdrv_codec_cfg_t *cfg);
/**
* @brief set audio codec module params.
*
* This function is used to set codec params
*
* @param [in] codec sdrv codec device
* @param [in] params sdrv codec params
* @param [in] type playback or capture type
* @ return sdrv_codec_status_t
*
*
*/
sdrv_codec_status_t sdrv_codec_ak4619_set_params(sdrv_codec_t *codec,
sdrv_codec_params_t *params,
sdrv_codec_stream_type_t type);
/**
* @brief start or stop audio codec module
*
* This fuction is used to start or stop audio codec module
*
* @param [in] codec sdrv codec device
* @param [in] cmd start or stop cmd
* @param [in] type playback or capture type
* @ return sdrv_codec_status_t
*
*
*/
sdrv_codec_status_t sdrv_codec_ak4619_trigger(sdrv_codec_t *codec,
sdrv_codec_trigger_op_t cmd,
sdrv_codec_stream_type_t type);
/**
* @brief set audio codec volume.
*
* @param codec sdrv codec device
* @param volume volume value, support 0 ~ 100, 0 is mute, 100 is the maximum
* volume value.
*
* @return sdrv_codec_status_t is success, else configure failed.
*/
sdrv_codec_status_t sdrv_codec_ak4619_set_volume(sdrv_codec_t *codec,
uint8_t volume,
sdrv_codec_stream_type_t type);
/**
* @brief set audio codec mute.
*
* @param codec sdrv codec device
* @param mute true is mute, false is unmute
* @param type playback or capture type
* @return sdrv_codec_status_t
*/
sdrv_codec_status_t sdrv_codec_ak4619_set_mute(sdrv_codec_t *codec, bool mute,
sdrv_codec_stream_type_t type);
#endif /* _SDRV_CODEC_AK4619_H_ */