18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (c) 2020 BayLibre, SAS. 48c2ecf20Sopenharmony_ci * Author: Jerome Brunet <jbrunet@baylibre.com> 58c2ecf20Sopenharmony_ci */ 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#ifndef _MESON_SND_CARD_H 88c2ecf20Sopenharmony_ci#define _MESON_SND_CARD_H 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_cistruct device_node; 118c2ecf20Sopenharmony_cistruct platform_device; 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_cistruct snd_soc_card; 148c2ecf20Sopenharmony_cistruct snd_pcm_substream; 158c2ecf20Sopenharmony_cistruct snd_pcm_hw_params; 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci#define DT_PREFIX "amlogic," 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_cistruct meson_card_match_data { 208c2ecf20Sopenharmony_ci int (*add_link)(struct snd_soc_card *card, 218c2ecf20Sopenharmony_ci struct device_node *node, 228c2ecf20Sopenharmony_ci int *index); 238c2ecf20Sopenharmony_ci}; 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_cistruct meson_card { 268c2ecf20Sopenharmony_ci const struct meson_card_match_data *match_data; 278c2ecf20Sopenharmony_ci struct snd_soc_card card; 288c2ecf20Sopenharmony_ci void **link_data; 298c2ecf20Sopenharmony_ci}; 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ciunsigned int meson_card_parse_daifmt(struct device_node *node, 328c2ecf20Sopenharmony_ci struct device_node *cpu_node); 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ciint meson_card_i2s_set_sysclk(struct snd_pcm_substream *substream, 358c2ecf20Sopenharmony_ci struct snd_pcm_hw_params *params, 368c2ecf20Sopenharmony_ci unsigned int mclk_fs); 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ciint meson_card_reallocate_links(struct snd_soc_card *card, 398c2ecf20Sopenharmony_ci unsigned int num_links); 408c2ecf20Sopenharmony_ciint meson_card_parse_dai(struct snd_soc_card *card, 418c2ecf20Sopenharmony_ci struct device_node *node, 428c2ecf20Sopenharmony_ci struct device_node **dai_of_node, 438c2ecf20Sopenharmony_ci const char **dai_name); 448c2ecf20Sopenharmony_ciint meson_card_set_be_link(struct snd_soc_card *card, 458c2ecf20Sopenharmony_ci struct snd_soc_dai_link *link, 468c2ecf20Sopenharmony_ci struct device_node *node); 478c2ecf20Sopenharmony_ciint meson_card_set_fe_link(struct snd_soc_card *card, 488c2ecf20Sopenharmony_ci struct snd_soc_dai_link *link, 498c2ecf20Sopenharmony_ci struct device_node *node, 508c2ecf20Sopenharmony_ci bool is_playback); 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ciint meson_card_probe(struct platform_device *pdev); 538c2ecf20Sopenharmony_ciint meson_card_remove(struct platform_device *pdev); 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ci#endif /* _MESON_SND_CARD_H */ 56