8 #ifndef HPM_PDMLITE_DRV_H
9 #define HPM_PDMLITE_DRV_H
12 #include "hpm_pdmlite_regs.h"
24 #define PDM_EVENT_OFIFO_OVERFLOW_ERROR (PDM_ST_OFIFO_OVFL_ERR_MASK)
25 #define PDM_EVENT_CIC_OVERLOAD_ERROR (PDM_ST_CIC_OVLD_ERR_MASK)
26 #define PDM_EVENT_CIC_SAT_ERROR (PDM_ST_CIC_SAT_ERR_MASK)
31 #define PDM_CIC_SIGMA_DELTA_ORDER_5 (2U)
32 #define PDM_CIC_SIGMA_DELTA_ORDER_6 (1U)
33 #define PDM_CIC_SIGMA_DELTA_ORDER_7 (0U)
91 uint16_t channel_disable_mask)
104 uint16_t capture_high_level_mask,
105 uint16_t channel_enable_mask)
140 uint8_t sigma_delta_order,
223 assert((div >= 1U) && (div <= 15U));
#define PDMLITE_CTRL_PDM_CLK_HFDIV_MASK
Definition: hpm_pdmlite_regs.h:96
#define PDMLITE_CIC_CFG_SGD_SET(x)
Definition: hpm_pdmlite_regs.h:197
#define PDMLITE_ST_CIC_SAT_ERR_SHIFT
Definition: hpm_pdmlite_regs.h:171
#define PDMLITE_CTRL_PDM_CLK_DIV_BYPASS_MASK
Definition: hpm_pdmlite_regs.h:106
#define PDMLITE_CTRL_PDM_CLK_DIV_BYPASS_SET(x)
Definition: hpm_pdmlite_regs.h:108
#define PDMLITE_CH_CTRL_CH_EN_SET(x)
Definition: hpm_pdmlite_regs.h:141
#define PDMLITE_CTRL_PDM_CLK_OE_MASK
Definition: hpm_pdmlite_regs.h:116
#define PDMLITE_CIC_CFG_POST_SCALE_SET(x)
Definition: hpm_pdmlite_regs.h:183
#define PDMLITE_RUN_PDM_EN_MASK
Definition: hpm_pdmlite_regs.h:216
#define PDMLITE_CIC_CFG_CIC_DEC_RATIO_SET(x)
Definition: hpm_pdmlite_regs.h:207
#define PDMLITE_CTRL_PDM_CLK_HFDIV_SET(x)
Definition: hpm_pdmlite_regs.h:98
#define PDMLITE_CTRL_CIC_SAT_ERR_IE_SHIFT
Definition: hpm_pdmlite_regs.h:73
#define PDMLITE_CH_CTRL_CH_POL_SET(x)
Definition: hpm_pdmlite_regs.h:129
#define PDMLITE_CTRL_SFTRST_MASK
Definition: hpm_pdmlite_regs.h:29
uint32_t hpm_stat_t
Definition: hpm_common.h:135
static void pdm_disable_pdm_clock_out(PDMLITE_Type *ptr)
disable pdm clock out
Definition: hpm_pdmlite_drv.h:116
static void pdm_config_divider(PDMLITE_Type *ptr, uint8_t div, bool bypass)
pdm config clock divider
Definition: hpm_pdmlite_drv.h:221
static void pdm_disable_channel(PDMLITE_Type *ptr, uint16_t channel_disable_mask)
disable channel
Definition: hpm_pdmlite_drv.h:90
static void pdm_enable_irq(PDMLITE_Type *ptr, uint8_t mask)
pdm enable irq
Definition: hpm_pdmlite_drv.h:166
static void pdm_start(PDMLITE_Type *ptr)
start pdm
Definition: hpm_pdmlite_drv.h:79
hpm_stat_t pdm_config_sample_rate(PDMLITE_Type *ptr, uint32_t mclk_in_hz, uint32_t sample_rate_hz)
pdm config sample rate
Definition: hpm_pdmlite_drv.c:82
static void pdm_enable_pdm_clock_out(PDMLITE_Type *ptr)
enable pdm clock out
Definition: hpm_pdmlite_drv.h:126
struct pdm_config pdm_config_t
PDM config.
hpm_stat_t pdm_init(PDMLITE_Type *ptr, pdm_config_t *config)
pdm initialization
Definition: hpm_pdmlite_drv.c:31
static bool pdm_is_running(PDMLITE_Type *ptr)
check whether PDM is running
Definition: hpm_pdmlite_drv.h:59
static void pdm_disable_irq(PDMLITE_Type *ptr, uint8_t mask)
pdm disable irq
Definition: hpm_pdmlite_drv.h:177
static void pdm_stop(PDMLITE_Type *ptr)
stop pdm
Definition: hpm_pdmlite_drv.h:69
static void pdm_config_cic(PDMLITE_Type *ptr, uint8_t sigma_delta_order, uint8_t dec_ratio, uint8_t post_scale)
pdm config cic
Definition: hpm_pdmlite_drv.h:139
static void pdm_enable_channel(PDMLITE_Type *ptr, uint16_t capture_high_level_mask, uint16_t channel_enable_mask)
enable channel
Definition: hpm_pdmlite_drv.h:103
void pdm_get_default_config(PDMLITE_Type *ptr, pdm_config_t *config)
pdm get default config
Definition: hpm_pdmlite_drv.c:18
static void pdm_software_reset(PDMLITE_Type *ptr)
pdm software reset
Definition: hpm_pdmlite_drv.h:154
Definition: hpm_pdmlite_regs.h:12
__RW uint32_t CIC_CFG
Definition: hpm_pdmlite_regs.h:17
__RW uint32_t CH_CTRL
Definition: hpm_pdmlite_regs.h:14
__RW uint32_t CTRL
Definition: hpm_pdmlite_regs.h:13
__RW uint32_t RUN
Definition: hpm_pdmlite_regs.h:19
PDM config.
Definition: hpm_pdm_drv.h:39
bool enable_pdm_clk_out
Definition: hpm_pdm_drv.h:42
bool bypass_pdm_clk_div
Definition: hpm_pdm_drv.h:41
uint8_t sigma_delta_order
Definition: hpm_pdm_drv.h:48
uint8_t cic_dec_ratio
Definition: hpm_pdm_drv.h:49
uint8_t post_scale
Definition: hpm_pdm_drv.h:47
uint8_t pdm_clk_div
Definition: hpm_pdm_drv.h:44
uint8_t capture_delay
Definition: hpm_pdm_drv.h:45
bool sof_at_ref_clk_falling_edge
Definition: hpm_pdm_drv.h:40