Linux Audio

Check our new training course

Loading...
Note: File does not exist in v4.17.
  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
 18struct snd_sof_dsp_ops;
 19
 20/*
 21 * SOF Platform data.
 22 */
 23struct 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 */
 60struct 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
 95int 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