14302187dSTrevor Wu /* SPDX-License-Identifier: GPL-2.0 */ 24302187dSTrevor Wu /* 34302187dSTrevor Wu * mtk-soundcard-driver.h -- MediaTek soundcard driver common definition 44302187dSTrevor Wu * 54302187dSTrevor Wu * Copyright (c) 2022 MediaTek Inc. 64302187dSTrevor Wu * Author: Trevor Wu <trevor.wu@mediatek.com> 74302187dSTrevor Wu */ 84302187dSTrevor Wu 94302187dSTrevor Wu #ifndef _MTK_SOUNDCARD_DRIVER_H_ 104302187dSTrevor Wu #define _MTK_SOUNDCARD_DRIVER_H_ 114302187dSTrevor Wu 12bce93a16SAngeloGioacchino Del Regno struct mtk_sof_priv; 13bce93a16SAngeloGioacchino Del Regno struct mtk_soc_card_data; 14*fe071237SAngeloGioacchino Del Regno struct snd_pcm_hw_constraint_list; 15*fe071237SAngeloGioacchino Del Regno 16*fe071237SAngeloGioacchino Del Regno enum mtk_pcm_constraint_type { 17*fe071237SAngeloGioacchino Del Regno MTK_CONSTRAINT_PLAYBACK, 18*fe071237SAngeloGioacchino Del Regno MTK_CONSTRAINT_CAPTURE, 19*fe071237SAngeloGioacchino Del Regno MTK_CONSTRAINT_HDMIDP, 20*fe071237SAngeloGioacchino Del Regno MTK_CONSTRAINT_MAX 21*fe071237SAngeloGioacchino Del Regno }; 22*fe071237SAngeloGioacchino Del Regno 23*fe071237SAngeloGioacchino Del Regno struct mtk_pcm_constraints_data { 24*fe071237SAngeloGioacchino Del Regno const struct snd_pcm_hw_constraint_list *channels; 25*fe071237SAngeloGioacchino Del Regno const struct snd_pcm_hw_constraint_list *rates; 26*fe071237SAngeloGioacchino Del Regno }; 27bce93a16SAngeloGioacchino Del Regno 28bce93a16SAngeloGioacchino Del Regno struct mtk_platform_card_data { 29bce93a16SAngeloGioacchino Del Regno struct snd_soc_card *card; 30bce93a16SAngeloGioacchino Del Regno struct snd_soc_jack *jacks; 31*fe071237SAngeloGioacchino Del Regno const struct mtk_pcm_constraints_data *pcm_constraints; 32bce93a16SAngeloGioacchino Del Regno u8 num_jacks; 33*fe071237SAngeloGioacchino Del Regno u8 num_pcm_constraints; 34bce93a16SAngeloGioacchino Del Regno u8 flags; 35bce93a16SAngeloGioacchino Del Regno }; 36bce93a16SAngeloGioacchino Del Regno 37bce93a16SAngeloGioacchino Del Regno struct mtk_soundcard_pdata { 38bce93a16SAngeloGioacchino Del Regno const char *card_name; 39bce93a16SAngeloGioacchino Del Regno struct mtk_platform_card_data *card_data; 40f8782f77SAngeloGioacchino Del Regno const struct mtk_sof_priv *sof_priv; 41*fe071237SAngeloGioacchino Del Regno 42bce93a16SAngeloGioacchino Del Regno int (*soc_probe)(struct mtk_soc_card_data *card_data, bool legacy); 43bce93a16SAngeloGioacchino Del Regno }; 44bce93a16SAngeloGioacchino Del Regno 45*fe071237SAngeloGioacchino Del Regno /* Common playback/capture card startup ops */ 46*fe071237SAngeloGioacchino Del Regno extern const struct snd_soc_ops mtk_soundcard_common_playback_ops; 47*fe071237SAngeloGioacchino Del Regno extern const struct snd_soc_ops mtk_soundcard_common_capture_ops; 48*fe071237SAngeloGioacchino Del Regno 49*fe071237SAngeloGioacchino Del Regno /* Exported for custom/extended soundcard startup ops */ 50*fe071237SAngeloGioacchino Del Regno int mtk_soundcard_startup(struct snd_pcm_substream *substream, 51*fe071237SAngeloGioacchino Del Regno enum mtk_pcm_constraint_type ctype); 52*fe071237SAngeloGioacchino Del Regno 534302187dSTrevor Wu int parse_dai_link_info(struct snd_soc_card *card); 544302187dSTrevor Wu void clean_card_reference(struct snd_soc_card *card); 55bce93a16SAngeloGioacchino Del Regno int mtk_soundcard_common_probe(struct platform_device *pdev); 564302187dSTrevor Wu #endif 57