Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
  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	/* Platform resource indexes in BAR / ACPI resources. */
 70	/* Must set to -1 if not used - add new items to end */
 71	int resindex_lpe_base;
 72	int resindex_pcicfg_base;
 73	int resindex_imr_base;
 74	int irqindex_host_ipc;
 75	int resindex_dma_base;
 76
 77	/* DMA only valid when resindex_dma_base != -1*/
 78	int dma_engine;
 79	int dma_size;
 80
 81	/* IPC timeouts in ms */
 82	int ipc_timeout;
 83	int boot_timeout;
 84
 85	/* chip information for dsp */
 86	const void *chip_info;
 87
 88	/* defaults for no codec mode */
 89	const char *nocodec_tplg_filename;
 90
 91	/* defaults paths for firmware and topology files */
 92	const char *default_fw_path;
 93	const char *default_tplg_path;
 94
 95	/* default firmware name */
 96	const char *default_fw_filename;
 97
 98	const struct snd_sof_dsp_ops *ops;
 99};
100
101int sof_nocodec_setup(struct device *dev,
102		      const struct snd_sof_dsp_ops *ops);
103#endif