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