xref: /linux/include/sound/sof.h (revision bc619cfc6278c87b4e310f9db9f45abc263220e8)
1e149ca29SPierre-Louis Bossart /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
2c16211d6SLiam Girdwood /*
3c16211d6SLiam Girdwood  * This file is provided under a dual BSD/GPLv2 license.  When using or
4c16211d6SLiam Girdwood  * redistributing this file, you may do so under either license.
5c16211d6SLiam Girdwood  *
6c16211d6SLiam Girdwood  * Copyright(c) 2018 Intel Corporation. All rights reserved.
7c16211d6SLiam Girdwood  *
8c16211d6SLiam Girdwood  * Author: Liam Girdwood <liam.r.girdwood@linux.intel.com>
9c16211d6SLiam Girdwood  */
10c16211d6SLiam Girdwood 
11c16211d6SLiam Girdwood #ifndef __INCLUDE_SOUND_SOF_H
12c16211d6SLiam Girdwood #define __INCLUDE_SOUND_SOF_H
13c16211d6SLiam Girdwood 
14c16211d6SLiam Girdwood #include <linux/pci.h>
158017b8fdSLiam Girdwood #include <sound/soc.h>
16c16211d6SLiam Girdwood #include <sound/soc-acpi.h>
17c16211d6SLiam Girdwood 
18c16211d6SLiam Girdwood struct snd_sof_dsp_ops;
19c16211d6SLiam Girdwood 
20c16211d6SLiam Girdwood /*
21c16211d6SLiam Girdwood  * SOF Platform data.
22c16211d6SLiam Girdwood  */
23c16211d6SLiam Girdwood struct snd_sof_pdata {
24c16211d6SLiam Girdwood 	const struct firmware *fw;
25c16211d6SLiam Girdwood 	const char *name;
26c16211d6SLiam Girdwood 	const char *platform;
27c16211d6SLiam Girdwood 
28c16211d6SLiam Girdwood 	struct device *dev;
29c16211d6SLiam Girdwood 
3092be17a5SKarol Trzcinski 	/* indicate how many first bytes shouldn't be loaded into DSP memory. */
3192be17a5SKarol Trzcinski 	size_t fw_offset;
3292be17a5SKarol Trzcinski 
33c16211d6SLiam Girdwood 	/*
34c16211d6SLiam Girdwood 	 * notification callback used if the hardware initialization
35c16211d6SLiam Girdwood 	 * can take time or is handled in a workqueue. This callback
36c16211d6SLiam Girdwood 	 * can be used by the caller to e.g. enable runtime_pm
37c16211d6SLiam Girdwood 	 * or limit functionality until all low-level inits are
38c16211d6SLiam Girdwood 	 * complete.
39c16211d6SLiam Girdwood 	 */
40c16211d6SLiam Girdwood 	void (*sof_probe_complete)(struct device *dev);
41c16211d6SLiam Girdwood 
42c16211d6SLiam Girdwood 	/* descriptor */
43c16211d6SLiam Girdwood 	const struct sof_dev_desc *desc;
44c16211d6SLiam Girdwood 
45c16211d6SLiam Girdwood 	/* firmware and topology filenames */
46c16211d6SLiam Girdwood 	const char *fw_filename_prefix;
47c16211d6SLiam Girdwood 	const char *fw_filename;
48c16211d6SLiam Girdwood 	const char *tplg_filename_prefix;
49c16211d6SLiam Girdwood 	const char *tplg_filename;
50c16211d6SLiam Girdwood 
51c16211d6SLiam Girdwood 	/* machine */
52c16211d6SLiam Girdwood 	struct platform_device *pdev_mach;
53c16211d6SLiam Girdwood 	const struct snd_soc_acpi_mach *machine;
54c16211d6SLiam Girdwood 
55c16211d6SLiam Girdwood 	void *hw_pdata;
56c16211d6SLiam Girdwood };
57c16211d6SLiam Girdwood 
58c16211d6SLiam Girdwood /*
59c16211d6SLiam Girdwood  * Descriptor used for setting up SOF platform data. This is used when
60c16211d6SLiam Girdwood  * ACPI/PCI data is missing or mapped differently.
61c16211d6SLiam Girdwood  */
62c16211d6SLiam Girdwood struct sof_dev_desc {
63c16211d6SLiam Girdwood 	/* list of machines using this configuration */
64c16211d6SLiam Girdwood 	struct snd_soc_acpi_mach *machines;
65c16211d6SLiam Girdwood 
661466327eSPierre-Louis Bossart 	/* alternate list of machines using this configuration */
671466327eSPierre-Louis Bossart 	struct snd_soc_acpi_mach *alt_machines;
681466327eSPierre-Louis Bossart 
6943437d04SDaniel Baluta 	bool use_acpi_target_states;
7043437d04SDaniel Baluta 
71c16211d6SLiam Girdwood 	/* Platform resource indexes in BAR / ACPI resources. */
72c16211d6SLiam Girdwood 	/* Must set to -1 if not used - add new items to end */
73c16211d6SLiam Girdwood 	int resindex_lpe_base;
74c16211d6SLiam Girdwood 	int resindex_pcicfg_base;
75c16211d6SLiam Girdwood 	int resindex_imr_base;
76c16211d6SLiam Girdwood 	int irqindex_host_ipc;
77c16211d6SLiam Girdwood 	int resindex_dma_base;
78c16211d6SLiam Girdwood 
79c16211d6SLiam Girdwood 	/* DMA only valid when resindex_dma_base != -1*/
80c16211d6SLiam Girdwood 	int dma_engine;
81c16211d6SLiam Girdwood 	int dma_size;
82c16211d6SLiam Girdwood 
83c16211d6SLiam Girdwood 	/* IPC timeouts in ms */
84c16211d6SLiam Girdwood 	int ipc_timeout;
85c16211d6SLiam Girdwood 	int boot_timeout;
86c16211d6SLiam Girdwood 
87c16211d6SLiam Girdwood 	/* chip information for dsp */
88c16211d6SLiam Girdwood 	const void *chip_info;
89c16211d6SLiam Girdwood 
90c16211d6SLiam Girdwood 	/* defaults for no codec mode */
91c16211d6SLiam Girdwood 	const char *nocodec_tplg_filename;
92c16211d6SLiam Girdwood 
93c16211d6SLiam Girdwood 	/* defaults paths for firmware and topology files */
94c16211d6SLiam Girdwood 	const char *default_fw_path;
95c16211d6SLiam Girdwood 	const char *default_tplg_path;
96c16211d6SLiam Girdwood 
9703eec9b4SRanjani Sridharan 	/* default firmware name */
9803eec9b4SRanjani Sridharan 	const char *default_fw_filename;
9903eec9b4SRanjani Sridharan 
100c16211d6SLiam Girdwood 	const struct snd_sof_dsp_ops *ops;
101c16211d6SLiam Girdwood };
102c16211d6SLiam Girdwood 
103b951b51eSKeyon Jie int sof_dai_get_mclk(struct snd_soc_pcm_runtime *rtd);
104*bc619cfcSBrent Lu int sof_dai_get_bclk(struct snd_soc_pcm_runtime *rtd);
105f805e7e0SRanjani Sridharan 
106c16211d6SLiam Girdwood #endif
107