linux/include/sound/sof.h
<<
>>
Prefs
   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        int resindex_dma_base;
  78
  79        /* DMA only valid when resindex_dma_base != -1*/
  80        int dma_engine;
  81        int dma_size;
  82
  83        /* IPC timeouts in ms */
  84        int ipc_timeout;
  85        int boot_timeout;
  86
  87        /* chip information for dsp */
  88        const void *chip_info;
  89
  90        /* defaults for no codec mode */
  91        const char *nocodec_tplg_filename;
  92
  93        /* defaults paths for firmware and topology files */
  94        const char *default_fw_path;
  95        const char *default_tplg_path;
  96
  97        /* default firmware name */
  98        const char *default_fw_filename;
  99
 100        const struct snd_sof_dsp_ops *ops;
 101};
 102
 103int sof_dai_get_mclk(struct snd_soc_pcm_runtime *rtd);
 104int sof_dai_get_bclk(struct snd_soc_pcm_runtime *rtd);
 105
 106#endif
 107