blob: a1d117bab8f674b2c48d0d7cf5544483fa4ee32d [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __AML_PDM_HW_H__
#define __AML_PDM_HW_H__
#include "audio_io.h"
#define PDM_CHANNELS_MAX 8 /* 8ch pdm in */
#define PDM_LANE_MAX 4 /* 4 data pins, for 8ch maxs*/
struct pdm_info {
int bitdepth;
int channels;
int lane_masks;
int dclk_idx; /* mapping for dclk value */
int bypass; /* bypass all filter, capture raw data */
int sample_count;
};
extern void aml_pdm_ctrl(struct pdm_info *info);
void pdm_force_sysclk_to_oscin(bool force, bool vad_top);
extern void pdm_set_channel_ctrl(int sample_count);
extern void aml_pdm_arb_config(struct aml_audio_controller *actrl);
extern int aml_pmd_set_HPF_filter_parameters(void *array);
extern void aml_pdm_filter_ctrl(int osr, int set);
extern void pdm_enable(int is_enable);
extern void pdm_fifo_reset(void);
extern int pdm_get_mute_value(void);
extern void pdm_set_mute_value(int val);
extern int pdm_get_mute_channel(void);
extern void pdm_set_mute_channel(int mute_chmask);
extern void pdm_set_bypass_data(bool bypass);
extern void pdm_init_truncate_data(int freq);
extern void pdm_train_en(bool en);
extern void pdm_train_clr(void);
extern int pdm_train_sts(void);
extern int pdm_dclkidx2rate(int idx);
extern int pdm_get_sample_count(int isLowPower, int dclk_idx);
extern int pdm_get_ors(int dclk_idx, int sample_rate);
extern int pdm_hcic_shift_gain;
#endif /*__AML_PDM_HW_H__*/