#include <linux/regmap.h>
#include <sound/pcm_params.h>
#include "mt8186-afe-common.h"
#include "mt8186-afe-gpio.h"
#include "mt8186-interconnection.h"
struct mtk_afe_pcm_priv { … };
enum aud_tx_lch_rpt { … };
enum aud_vbt_16k_mode { … };
enum aud_ext_modem { … };
enum aud_pcm_sync_type { … };
enum aud_bt_mode { … };
enum aud_pcm_afifo_src { … };
enum aud_pcm_clock_source { … };
enum aud_pcm_wlen { … };
enum aud_pcm_24bit { … };
enum aud_pcm_mode { … };
enum aud_pcm_fmt { … };
enum aud_bclk_out_inv { … };
enum aud_lrclk_out_inv { … };
enum aud_pcm_en { … };
static const struct snd_kcontrol_new mtk_pcm_1_playback_ch1_mix[] = …;
static const struct snd_kcontrol_new mtk_pcm_1_playback_ch2_mix[] = …;
static int mtk_pcm_en_event(struct snd_soc_dapm_widget *w,
struct snd_kcontrol *kcontrol,
int event)
{ … }
static const char * const pcm_lpbk_mux_map[] = …;
static int pcm_lpbk_mux_map_value[] = …;
static SOC_VALUE_ENUM_SINGLE_AUTODISABLE_DECL(pcm_in_lpbk_mux_map_enum,
PCM_INTF_CON1,
PCM_I2S_PCM_LOOPBACK_SFT,
1,
pcm_lpbk_mux_map,
pcm_lpbk_mux_map_value);
static const struct snd_kcontrol_new pcm_in_lpbk_mux_control = …;
static SOC_VALUE_ENUM_SINGLE_AUTODISABLE_DECL(pcm_out_lpbk_mux_map_enum,
PCM_INTF_CON1,
PCM_I2S_PCM_LOOPBACK_SFT,
1,
pcm_lpbk_mux_map,
pcm_lpbk_mux_map_value);
static const struct snd_kcontrol_new pcm_out_lpbk_mux_control = …;
static const struct snd_soc_dapm_widget mtk_dai_pcm_widgets[] = …;
static const struct snd_soc_dapm_route mtk_dai_pcm_routes[] = …;
static int mtk_dai_pcm_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params,
struct snd_soc_dai *dai)
{ … }
static int mtk_dai_pcm_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
{ … }
static const struct snd_soc_dai_ops mtk_dai_pcm_ops = …;
#define MTK_PCM_RATES …
#define MTK_PCM_FORMATS …
static struct snd_soc_dai_driver mtk_dai_pcm_driver[] = …;
static struct mtk_afe_pcm_priv *init_pcm_priv_data(struct mtk_base_afe *afe)
{ … }
int mt8186_dai_pcm_register(struct mtk_base_afe *afe)
{ … }