1/* SPDX-License-Identifier: (GPL-2.0-only 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 18struct snd_sof_dsp_ops; 19 20/* 21 * SOF Platform data. 22 */ 23struct snd_sof_pdata { 24 const struct firmware *fw; 25 const char *name; 26 const char *platform; 27 28 struct device *dev; 29 30 /* indicate how many first bytes shouldn't be loaded into DSP memory. */ 31 size_t fw_offset; 32 33 /* 34 * notification callback used if the hardware initialization 35 * can take time or is handled in a workqueue. This callback 36 * can be used by the caller to e.g. enable runtime_pm 37 * or limit functionality until all low-level inits are 38 * complete. 39 */ 40 void (*sof_probe_complete)(struct device *dev); 41 42 /* descriptor */ 43 const struct sof_dev_desc *desc; 44 45 /* firmware and topology filenames */ 46 const char *fw_filename_prefix; 47 const char *fw_filename; 48 const char *tplg_filename_prefix; 49 const char *tplg_filename; 50 51 /* machine */ 52 struct platform_device *pdev_mach; 53 const struct snd_soc_acpi_mach *machine; 54 55 void *hw_pdata; 56}; 57 58/* 59 * Descriptor used for setting up SOF platform data. This is used when 60 * ACPI/PCI data is missing or mapped differently. 61 */ 62struct sof_dev_desc { 63 /* list of machines using this configuration */ 64 struct snd_soc_acpi_mach *machines; 65 66 /* alternate list of machines using this configuration */ 67 struct snd_soc_acpi_mach *alt_machines; 68 69 bool use_acpi_target_states; 70 71 /* Platform resource indexes in BAR / ACPI resources. */ 72 /* Must set to -1 if not used - add new items to end */ 73 int resindex_lpe_base; 74 int resindex_pcicfg_base; 75 int resindex_imr_base; 76 int irqindex_host_ipc; 77 78 /* IPC timeouts in ms */ 79 int ipc_timeout; 80 int boot_timeout; 81 82 /* chip information for dsp */ 83 const void *chip_info; 84 85 /* defaults for no codec mode */ 86 const char *nocodec_tplg_filename; 87 88 /* defaults paths for firmware and topology files */ 89 const char *default_fw_path; 90 const char *default_tplg_path; 91 92 /* default firmware name */ 93 const char *default_fw_filename; 94 95 const struct snd_sof_dsp_ops *ops; 96}; 97 98int sof_dai_get_mclk(struct snd_soc_pcm_runtime *rtd); 99int sof_dai_get_bclk(struct snd_soc_pcm_runtime *rtd); 100 101#endif 102