1 /* SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) */ 2 /* 3 * This file is provided under a dual BSD/GPLv2 license. When using or 4 * redistributing this file, you may do so under either license. 5 * 6 * Copyright(c) 2018 Intel Corporation. All rights reserved. 7 * 8 * Author: Liam Girdwood <liam.r.girdwood@linux.intel.com> 9 */ 10 11 #ifndef __INCLUDE_SOUND_SOF_H 12 #define __INCLUDE_SOUND_SOF_H 13 14 #include <linux/pci.h> 15 #include <sound/soc.h> 16 #include <sound/soc-acpi.h> 17 18 struct snd_sof_dsp_ops; 19 20 /* 21 * SOF Platform data. 22 */ 23 struct snd_sof_pdata { 24 const struct firmware *fw; 25 const char *drv_name; 26 const char *name; 27 const char *platform; 28 29 struct device *dev; 30 31 /* 32 * notification callback used if the hardware initialization 33 * can take time or is handled in a workqueue. This callback 34 * can be used by the caller to e.g. enable runtime_pm 35 * or limit functionality until all low-level inits are 36 * complete. 37 */ 38 void (*sof_probe_complete)(struct device *dev); 39 40 /* descriptor */ 41 const struct sof_dev_desc *desc; 42 43 /* firmware and topology filenames */ 44 const char *fw_filename_prefix; 45 const char *fw_filename; 46 const char *tplg_filename_prefix; 47 const char *tplg_filename; 48 49 /* machine */ 50 struct platform_device *pdev_mach; 51 const struct snd_soc_acpi_mach *machine; 52 53 void *hw_pdata; 54 }; 55 56 /* 57 * Descriptor used for setting up SOF platform data. This is used when 58 * ACPI/PCI data is missing or mapped differently. 59 */ 60 struct sof_dev_desc { 61 /* list of machines using this configuration */ 62 struct snd_soc_acpi_mach *machines; 63 64 /* Platform resource indexes in BAR / ACPI resources. */ 65 /* Must set to -1 if not used - add new items to end */ 66 int resindex_lpe_base; 67 int resindex_pcicfg_base; 68 int resindex_imr_base; 69 int irqindex_host_ipc; 70 int resindex_dma_base; 71 72 /* DMA only valid when resindex_dma_base != -1*/ 73 int dma_engine; 74 int dma_size; 75 76 /* IPC timeouts in ms */ 77 int ipc_timeout; 78 int boot_timeout; 79 80 /* chip information for dsp */ 81 const void *chip_info; 82 83 /* defaults for no codec mode */ 84 const char *nocodec_fw_filename; 85 const char *nocodec_tplg_filename; 86 87 /* defaults paths for firmware and topology files */ 88 const char *default_fw_path; 89 const char *default_tplg_path; 90 91 const struct snd_sof_dsp_ops *ops; 92 const struct sof_arch_ops *arch_ops; 93 }; 94 95 int sof_nocodec_setup(struct device *dev, 96 struct snd_sof_pdata *sof_pdata, 97 struct snd_soc_acpi_mach *mach, 98 const struct sof_dev_desc *desc, 99 const struct snd_sof_dsp_ops *ops); 100 #endif 101