linux/sound/soc/mediatek/mt8365/mt8365-afe-common.h

/* SPDX-License-Identifier: GPL-2.0
 *
 * MediaTek 8365 audio driver common definitions
 *
 * Copyright (c) 2024 MediaTek Inc.
 * Authors: Jia Zeng <[email protected]>
 *          Alexandre Mergnat <[email protected]>
 */

#ifndef _MT8365_AFE_COMMON_H_
#define _MT8365_AFE_COMMON_H_

#include <linux/clk.h>
#include <linux/list.h>
#include <linux/regmap.h>
#include <sound/soc.h>
#include <sound/asound.h>
#include "../common/mtk-base-afe.h"
#include "mt8365-reg.h"

enum {};

enum {};

enum {};

enum {};

enum {};

enum {};

enum {};

enum {};

enum mt8365_afe_tdm_ch_start {};

enum {};

enum {};

enum {};

enum {};

enum {};

/* MCLK */
enum {};

struct mt8365_fe_dai_data {};

struct mt8365_be_dai_data {};

#define MT8365_CLK_26M
#define MT8365_CLK_24M
#define MT8365_CLK_22M
#define MT8365_CM_UPDATA_CNT_SET

enum mt8365_cm_num {};

enum mt8365_cm2_mux_in {};

enum cm2_mux_conn_in {};

struct mt8365_cm_ctrl_reg {};

struct mt8365_control_data {};

enum dmic_input_mode {};

enum iir_mode {};

enum {};

struct mt8365_gasrc_ctrl_reg {};

struct mt8365_gasrc_data {};

struct mt8365_afe_private {};

static inline u32 rx_frequency_palette(unsigned int fs)
{}

static inline u32 AutoRstThHi(unsigned int fs)
{}

static inline u32 AutoRstThLo(unsigned int fs)
{}

bool mt8365_afe_rate_supported(unsigned int rate, unsigned int id);
bool mt8365_afe_channel_supported(unsigned int channel, unsigned int id);

int mt8365_dai_i2s_register(struct mtk_base_afe *afe);
int mt8365_dai_set_priv(struct mtk_base_afe *afe,
			int id,
			int priv_size,
			const void *priv_data);

int mt8365_afe_fs_timing(unsigned int rate);

void mt8365_afe_set_i2s_out_enable(struct mtk_base_afe *afe, bool enable);
int mt8365_afe_set_i2s_out(struct mtk_base_afe *afe, unsigned int rate,	int bit_width);

int mt8365_dai_adda_register(struct mtk_base_afe *afe);
int mt8365_dai_enable_adda_on(struct mtk_base_afe *afe);
int mt8365_dai_disable_adda_on(struct mtk_base_afe *afe);

int mt8365_dai_dmic_register(struct mtk_base_afe *afe);

int mt8365_dai_pcm_register(struct mtk_base_afe *afe);

int mt8365_dai_tdm_register(struct mtk_base_afe *afe);

#endif