hc
2025-02-14 bbb9540dc49f70f6b703d1c8d1b85fa5f602d86e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
/*
 * This file is provided under a dual BSD/GPLv2 license.  When using or
 * redistributing this file, you may do so under either license.
 *
 * Copyright(c) 2018 Intel Corporation. All rights reserved.
 *
 * Author: Liam Girdwood <liam.r.girdwood@linux.intel.com>
 */
 
#ifndef __INCLUDE_SOUND_SOF_H
#define __INCLUDE_SOUND_SOF_H
 
#include <linux/pci.h>
#include <sound/soc.h>
#include <sound/soc-acpi.h>
 
struct snd_sof_dsp_ops;
 
/*
 * SOF Platform data.
 */
struct snd_sof_pdata {
   const struct firmware *fw;
   const char *name;
   const char *platform;
 
   struct device *dev;
 
   /* indicate how many first bytes shouldn't be loaded into DSP memory. */
   size_t fw_offset;
 
   /*
    * notification callback used if the hardware initialization
    * can take time or is handled in a workqueue. This callback
    * can be used by the caller to e.g. enable runtime_pm
    * or limit functionality until all low-level inits are
    * complete.
    */
   void (*sof_probe_complete)(struct device *dev);
 
   /* descriptor */
   const struct sof_dev_desc *desc;
 
   /* firmware and topology filenames */
   const char *fw_filename_prefix;
   const char *fw_filename;
   const char *tplg_filename_prefix;
   const char *tplg_filename;
 
   /* machine */
   struct platform_device *pdev_mach;
   const struct snd_soc_acpi_mach *machine;
 
   void *hw_pdata;
};
 
/*
 * Descriptor used for setting up SOF platform data. This is used when
 * ACPI/PCI data is missing or mapped differently.
 */
struct sof_dev_desc {
   /* list of machines using this configuration */
   struct snd_soc_acpi_mach *machines;
 
   /* alternate list of machines using this configuration */
   struct snd_soc_acpi_mach *alt_machines;
 
   bool use_acpi_target_states;
 
   /* Platform resource indexes in BAR / ACPI resources. */
   /* Must set to -1 if not used - add new items to end */
   int resindex_lpe_base;
   int resindex_pcicfg_base;
   int resindex_imr_base;
   int irqindex_host_ipc;
   int resindex_dma_base;
 
   /* DMA only valid when resindex_dma_base != -1*/
   int dma_engine;
   int dma_size;
 
   /* IPC timeouts in ms */
   int ipc_timeout;
   int boot_timeout;
 
   /* chip information for dsp */
   const void *chip_info;
 
   /* defaults for no codec mode */
   const char *nocodec_tplg_filename;
 
   /* defaults paths for firmware and topology files */
   const char *default_fw_path;
   const char *default_tplg_path;
 
   /* default firmware name */
   const char *default_fw_filename;
 
   const struct snd_sof_dsp_ops *ops;
};
 
int sof_nocodec_setup(struct device *dev,
             const struct snd_sof_dsp_ops *ops);
#endif