/* SPDX-License-Identifier: GPL-2.0 */ /* * mtk-soundcard-driver.h -- MediaTek soundcard driver common definition * * Copyright (c) 2022 MediaTek Inc. * Author: Trevor Wu */ #ifndef _MTK_SOUNDCARD_DRIVER_H_ #define _MTK_SOUNDCARD_DRIVER_H_ struct mtk_sof_priv; struct mtk_soc_card_data; struct snd_pcm_hw_constraint_list; enum mtk_pcm_constraint_type { MTK_CONSTRAINT_PLAYBACK, MTK_CONSTRAINT_CAPTURE, MTK_CONSTRAINT_HDMIDP, MTK_CONSTRAINT_MAX }; struct mtk_pcm_constraints_data { const struct snd_pcm_hw_constraint_list *channels; const struct snd_pcm_hw_constraint_list *rates; }; struct mtk_platform_card_data { struct snd_soc_card *card; struct snd_soc_jack *jacks; const struct mtk_pcm_constraints_data *pcm_constraints; u8 num_jacks; u8 num_pcm_constraints; u8 flags; }; struct mtk_soundcard_pdata { const char *card_name; struct mtk_platform_card_data *card_data; const struct mtk_sof_priv *sof_priv; int (*soc_probe)(struct mtk_soc_card_data *card_data, bool legacy); }; /* Common playback/capture card startup ops */ extern const struct snd_soc_ops mtk_soundcard_common_playback_ops; extern const struct snd_soc_ops mtk_soundcard_common_capture_ops; /* Exported for custom/extended soundcard startup ops */ int mtk_soundcard_startup(struct snd_pcm_substream *substream, enum mtk_pcm_constraint_type ctype); int parse_dai_link_info(struct snd_soc_card *card); void clean_card_reference(struct snd_soc_card *card); int mtk_soundcard_common_probe(struct platform_device *pdev); #endif