linux/include/sound/sof.h
<<
>>
Prefs
   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
 101