Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.2.
 1/* SPDX-License-Identifier: GPL-2.0-only */
 2/*
 3 * Copyright(c) 2023 Intel Corporation.
 4 */
 5
 6#ifndef __SOF_INTEL_BOARD_HELPERS_H
 7#define __SOF_INTEL_BOARD_HELPERS_H
 8
 9#include <sound/soc.h>
10#include "sof_hdmi_common.h"
11#include "sof_ssp_common.h"
12
13/*
14 * sof_rt5682_private: private data for rt5682 machine driver
15 *
16 * @mclk: mclk clock data
17 * @is_legacy_cpu: true for BYT/CHT boards
18 */
19struct sof_rt5682_private {
20	struct clk *mclk;
21	bool is_legacy_cpu;
22};
23
24/*
25 * sof_card_private: common data for machine drivers
26 *
27 * @headset_jack: headset jack data
28 * @hdmi: init data for hdmi dai link
29 * @codec_type: type of headset codec
30 * @amp_type: type of speaker amplifier
31 * @dmic_be_num: number of Intel PCH DMIC BE link
32 * @hdmi_num: number of Intel HDMI BE link
33 * @ssp_codec: ssp port number of headphone BE link
34 * @ssp_amp: ssp port number of speaker BE link
35 * @ssp_bt: ssp port number of BT offload BE link
36 * @ssp_mask_hdmi_in: ssp port mask of HDMI-IN BE link
37 * @bt_offload_present: true to create BT offload BE link
38 * @codec_link: pointer to headset codec dai link
39 * @amp_link: pointer to speaker amplifier dai link
40 * @rt5682: private data for rt5682 machine driver
41 */
42struct sof_card_private {
43	struct snd_soc_jack headset_jack;
44	struct sof_hdmi_private hdmi;
45
46	enum sof_ssp_codec codec_type;
47	enum sof_ssp_codec amp_type;
48
49	int dmic_be_num;
50	int hdmi_num;
51
52	int ssp_codec;
53	int ssp_amp;
54	int ssp_bt;
55	unsigned long ssp_mask_hdmi_in;
56
57	bool bt_offload_present;
58
59	struct snd_soc_dai_link *codec_link;
60	struct snd_soc_dai_link *amp_link;
61
62	union {
63		struct sof_rt5682_private rt5682;
64	};
65};
66
67enum sof_dmic_be_type {
68	SOF_DMIC_01,
69	SOF_DMIC_16K,
70};
71
72int sof_intel_board_card_late_probe(struct snd_soc_card *card);
73int sof_intel_board_set_dai_link(struct device *dev, struct snd_soc_card *card,
74				 struct sof_card_private *ctx);
75
76int sof_intel_board_set_codec_link(struct device *dev,
77				   struct snd_soc_dai_link *link, int be_id,
78				   enum sof_ssp_codec codec_type, int ssp_codec);
79int sof_intel_board_set_dmic_link(struct device *dev,
80				  struct snd_soc_dai_link *link, int be_id,
81				  enum sof_dmic_be_type be_type);
82int sof_intel_board_set_intel_hdmi_link(struct device *dev,
83					struct snd_soc_dai_link *link, int be_id,
84					int hdmi_id, bool idisp_codec);
85int sof_intel_board_set_ssp_amp_link(struct device *dev,
86				     struct snd_soc_dai_link *link, int be_id,
87				     enum sof_ssp_codec amp_type, int ssp_amp);
88int sof_intel_board_set_bt_link(struct device *dev,
89				struct snd_soc_dai_link *link, int be_id,
90				int ssp_bt);
91int sof_intel_board_set_hdmi_in_link(struct device *dev,
92				     struct snd_soc_dai_link *link, int be_id,
93				     int ssp_hdmi);
94
95#endif /* __SOF_INTEL_BOARD_HELPERS_H */