| b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
| 2 | /* |
| 3 | * Copyright (c) 2020 BayLibre, SAS. |
| 4 | * Author: Jerome Brunet <jbrunet@baylibre.com> |
| 5 | */ |
| 6 | |
| 7 | #ifndef _MESON_SND_CARD_H |
| 8 | #define _MESON_SND_CARD_H |
| 9 | |
| 10 | struct device_node; |
| 11 | struct platform_device; |
| 12 | |
| 13 | struct snd_soc_card; |
| 14 | struct snd_pcm_substream; |
| 15 | struct snd_pcm_hw_params; |
| 16 | |
| 17 | #define DT_PREFIX "amlogic," |
| 18 | |
| 19 | struct meson_card_match_data { |
| 20 | int (*add_link)(struct snd_soc_card *card, |
| 21 | struct device_node *node, |
| 22 | int *index); |
| 23 | }; |
| 24 | |
| 25 | struct meson_card { |
| 26 | const struct meson_card_match_data *match_data; |
| 27 | struct snd_soc_card card; |
| 28 | void **link_data; |
| 29 | }; |
| 30 | |
| 31 | unsigned int meson_card_parse_daifmt(struct device_node *node, |
| 32 | struct device_node *cpu_node); |
| 33 | |
| 34 | int meson_card_i2s_set_sysclk(struct snd_pcm_substream *substream, |
| 35 | struct snd_pcm_hw_params *params, |
| 36 | unsigned int mclk_fs); |
| 37 | |
| 38 | int meson_card_reallocate_links(struct snd_soc_card *card, |
| 39 | unsigned int num_links); |
| 40 | int meson_card_parse_dai(struct snd_soc_card *card, |
| 41 | struct device_node *node, |
| 42 | struct device_node **dai_of_node, |
| 43 | const char **dai_name); |
| 44 | int meson_card_set_be_link(struct snd_soc_card *card, |
| 45 | struct snd_soc_dai_link *link, |
| 46 | struct device_node *node); |
| 47 | int meson_card_set_fe_link(struct snd_soc_card *card, |
| 48 | struct snd_soc_dai_link *link, |
| 49 | struct device_node *node, |
| 50 | bool is_playback); |
| 51 | |
| 52 | int meson_card_probe(struct platform_device *pdev); |
| 53 | int meson_card_remove(struct platform_device *pdev); |
| 54 | |
| 55 | #endif /* _MESON_SND_CARD_H */ |