cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

sof.h (3741B)


      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;
     19struct snd_sof_dev;
     20
     21/**
     22 * enum sof_fw_state - DSP firmware state definitions
     23 * @SOF_FW_BOOT_NOT_STARTED:	firmware boot is not yet started
     24 * @SOF_FW_BOOT_PREPARE:	preparing for boot (firmware loading for exaqmple)
     25 * @SOF_FW_BOOT_IN_PROGRESS:	firmware boot is in progress
     26 * @SOF_FW_BOOT_FAILED:		firmware boot failed
     27 * @SOF_FW_BOOT_READY_FAILED:	firmware booted but fw_ready op failed
     28 * @SOF_FW_BOOT_READY_OK:	firmware booted and fw_ready op passed
     29 * @SOF_FW_BOOT_COMPLETE:	firmware is booted up and functional
     30 * @SOF_FW_CRASHED:		firmware crashed after successful boot
     31 */
     32enum sof_fw_state {
     33	SOF_FW_BOOT_NOT_STARTED = 0,
     34	SOF_FW_BOOT_PREPARE,
     35	SOF_FW_BOOT_IN_PROGRESS,
     36	SOF_FW_BOOT_FAILED,
     37	SOF_FW_BOOT_READY_FAILED,
     38	SOF_FW_BOOT_READY_OK,
     39	SOF_FW_BOOT_COMPLETE,
     40	SOF_FW_CRASHED,
     41};
     42
     43/* DSP power states */
     44enum sof_dsp_power_states {
     45	SOF_DSP_PM_D0,
     46	SOF_DSP_PM_D1,
     47	SOF_DSP_PM_D2,
     48	SOF_DSP_PM_D3,
     49};
     50
     51/* Definitions for multiple IPCs */
     52enum sof_ipc_type {
     53	SOF_IPC,
     54	SOF_INTEL_IPC4,
     55	SOF_IPC_TYPE_COUNT
     56};
     57
     58/*
     59 * SOF Platform data.
     60 */
     61struct snd_sof_pdata {
     62	const struct firmware *fw;
     63	const char *name;
     64	const char *platform;
     65
     66	struct device *dev;
     67
     68	/* indicate how many first bytes shouldn't be loaded into DSP memory. */
     69	size_t fw_offset;
     70
     71	/*
     72	 * notification callback used if the hardware initialization
     73	 * can take time or is handled in a workqueue. This callback
     74	 * can be used by the caller to e.g. enable runtime_pm
     75	 * or limit functionality until all low-level inits are
     76	 * complete.
     77	 */
     78	void (*sof_probe_complete)(struct device *dev);
     79
     80	/* descriptor */
     81	const struct sof_dev_desc *desc;
     82
     83	/* firmware and topology filenames */
     84	const char *fw_filename_prefix;
     85	const char *fw_filename;
     86	const char *tplg_filename_prefix;
     87	const char *tplg_filename;
     88
     89	/* machine */
     90	struct platform_device *pdev_mach;
     91	const struct snd_soc_acpi_mach *machine;
     92
     93	void *hw_pdata;
     94
     95	enum sof_ipc_type ipc_type;
     96};
     97
     98/*
     99 * Descriptor used for setting up SOF platform data. This is used when
    100 * ACPI/PCI data is missing or mapped differently.
    101 */
    102struct sof_dev_desc {
    103	/* list of machines using this configuration */
    104	struct snd_soc_acpi_mach *machines;
    105
    106	/* alternate list of machines using this configuration */
    107	struct snd_soc_acpi_mach *alt_machines;
    108
    109	bool use_acpi_target_states;
    110
    111	/* Platform resource indexes in BAR / ACPI resources. */
    112	/* Must set to -1 if not used - add new items to end */
    113	int resindex_lpe_base;
    114	int resindex_pcicfg_base;
    115	int resindex_imr_base;
    116	int irqindex_host_ipc;
    117
    118	/* IPC timeouts in ms */
    119	int ipc_timeout;
    120	int boot_timeout;
    121
    122	/* chip information for dsp */
    123	const void *chip_info;
    124
    125	/* defaults for no codec mode */
    126	const char *nocodec_tplg_filename;
    127
    128	/* information on supported IPCs */
    129	unsigned int ipc_supported_mask;
    130	enum sof_ipc_type ipc_default;
    131
    132	/* defaults paths for firmware and topology files */
    133	const char *default_fw_path[SOF_IPC_TYPE_COUNT];
    134	const char *default_tplg_path[SOF_IPC_TYPE_COUNT];
    135
    136	/* default firmware name */
    137	const char *default_fw_filename[SOF_IPC_TYPE_COUNT];
    138
    139	struct snd_sof_dsp_ops *ops;
    140	int (*ops_init)(struct snd_sof_dev *sdev);
    141};
    142
    143int sof_dai_get_mclk(struct snd_soc_pcm_runtime *rtd);
    144int sof_dai_get_bclk(struct snd_soc_pcm_runtime *rtd);
    145
    146#endif