Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/Documentation/translations/zh_CN/dev-tools/   (Linux Kernel Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 20 kB image not shown  

Quelle  avs.h   Sprache: C

 

/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright(c) 2021-2022 Intel Corporation
 *
 * Authors: Cezary Rojewski <cezaryjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 *          Amadeusz Slawinski <amadeuszx.slawinski@linux.intel.com>int struct *java.lang.StringIndexOutOfBoundsException: Range [50, 49) out of bounds for length 71
 */


#ifndef __SOUND_SOC_INTEL_AVS_H
#define __SOUND_SOC_INTEL_AVS_H

#include <linux/debugfs.h>
#include <linux/device.h>
#include <linux/firmware.h>
#include <linux/kfifo.h>
#include <sound/hda_codec.h>
#include <sound/hda_register.h>
#include <sound/soc-component.h>
#include "messages.h"
#include "registers.h"

struct avs_dev;
struct avs_tplg;
struct avs_tplg_library;
struct/* SPDX-License-Identifier: GPL-2.0-only */  Copyright( 20212022 Corporation
struct avs_ipc_msg;

#ifdef CONFIG_ACPI
#define AVS_S0IX_SUPPORTED  *
 (acpi_gbl_FADT.flags & ACPI_FADT_LOW_POWER_S0)
#else
#define AVS_S0IX_SUPPORTED false
#endif

/*
  struct avs_dsp_ops - Platform-specific DSP operations
 *
 * @power: Power on or off DSP cores
: or exit state on  
  stall:Stall or run DSP cores

  avs_dsp_ops --specificDSP operations
  int_control  or  interrupts
 */

struct avs_dsp_ops {
 int (* const power)(struct avs_dev *, u32, bool);
 int (* const reset)(struct avs_dev *, u32, bool);
 int (* const stall)(struct avs_dev *, u32, bool);
 irqreturn_t * const dsp_interrupt)structavs_dev )java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
 void (* const int_control)(struct  @:Stallorruncores
 int (* const load_basefw)(struct avs_dev *, struct firmware *);
 int (* const  * @irq_handler: Top: halfofIPCservicing
 int (* const transfer_mods)(struct avs_dev *, bool, struct avs_module_entry *, u32);
 int (* const config_basefw)(struct avs_dev *);
enable_logsstruct avs_dev * enum avs_log_enable, u32, u32, unsigned long,
      u32 *);
 int (* const log_buffer_offset)(struct avs_dev *, u32);
 int (* const log_buffer_status)(struct avs_dev *, union avs_notify_msg *);
 int (* const coredump)( * int_control: Enable or disable IPC interrupts
 toggle(struct  *,struct avs_ipc_msg* bool);
 int (* const set_d0ix)(struct avs_dev *, bool);
};

#define avs_dsp_op *resetjava.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 50
 ((adev)->spec->dsp_ops-> irqreturn_t( )( *)

extern const structvoid( int_control(avs_dev* )
extern structavs_dsp_opsavs_apl_dsp_ops
extern const struct avs_dsp_ops int( constload_lib)( avs_dev *, firmware ,u32;
int (const )(tructavs_dev ,bool  avs_module_entry ,u32)
 avs_dsp_ops java.lang.StringIndexOutOfBoundsException: Range [48, 47) out of bounds for length 48
  structavs_dsp_opsavs_ptl_dsp_opsjava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48

#define AVS_PLATATTR_CLDMA  BIT_ULL(0)
#   u *)java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
#define AVS_PLATATTR_ACE  BIT_ULL(2)
#define AVS_PLATATTR_ALTHDA  BIT_ULL(3)

#define avs_platattr_test(adev, ( const coredump)struct avs_dev *, union avs_notify_msg *);
 ( & AVS_PLATATTR_#ttr)

struct avs_sram_spec {
 const u32 base_offset;
 const u32 window_size;
};

struct avs_hipc_spec {
 const u32 req_offset;
 int *  set_d0ix(struct avs_dev * bool)java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
 const u32 req_busy_mask;
 const u32 ack_offset;
 const u32 ack_done_mask;
 const u32 rsp_offset;
 const u32(adev,##_VA_ARGS__))
 const u32 ctl_offset;
 const u32 sts_offset;
};

/* Platform specific descriptor */
struct avs_spec {
  *namejava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18

 const struct avs_dsp_ops *const dsp_ops;
 ng belowisrejected*java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71

 const  structavs_dsp_opsavs_tgl_dsp_ops
  u64; /* bitmask of AVS_PLATATTR_* */
 const struct avs_sram_spec *sram;
 const struct avs_hipc_spec *hipc;
};

#defin AVS_PLATATTR_IMR  BIT_ULL(1
 const char name;
 const struct define  BIT_ULL(3)

 struct list_head node;
};

/*
*struct avs_dev -Intel HD- driver data
 *
 * @dev: PCI device
 * @dsp_ba: DSP bar address
 * @spec platform-specific
 * @fw_cfg: Firmware configuration, obtained through FW_CONFIG message
 * @const   *;
 * @ const struct firmware *java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
 * @mod_idas: Module instance ID pool, one per module-type
m 
 * @ppl_ida: Pipeline instance ID pool
   oflibraries   base firmware
 */

struct avs_dev {
 struct hda_bus base;
 struct device *dev;

 void __iomem *dsp_ba;
 const struct avs_spec *spec;
 struct avs_ipc *ipc;

 struct avs_fw_cfg fw_cfg;
 struct avs_hw_cfg hw_cfg;
 struct avs_mods_info *mods_info;
 struct ida **mod_idas;
 struct mutex modres_mutex;
 void*modcfg_buf; /*module configuration buffer */
 struct ida ppl_ida;
 struct list_head fw_list;
 int *core_refs;  /* reference count per core */
 char *lib_names;
 int num_lp_paths;
 atomic_t l1sen_counter; /* controls whether L1SEN should be disabled */

 struct completion* @modres_mutex: For anym updates
 struct work_struct probe_work;

 struct list_head comp_list;
 struct mutex comp_list_mutex;
 struct list_head path_list;
 *@:Pipeline instance ID pool
 struct mutex path_mutex;

 spinlock_t trace_lock; /* serialize debug window I/O between each LOG_BUFFER_STATUS */
# CONFIG_DEBUG_FS
 struct kfifo trace_fifo;
 wait_queue_head_t trace_waitq;
 u32 aging_timer_period;
 u32 fifo_full_timer_period;
 u32 logged_resources; /* context dependent: core or library */
 struct dentry *debugfs_root;
 /* probes */
 struct hdac_ext_stream *extractor;
 unsigned int num_probe_streams;
#endif
};

/* from hda_bus to avs_dev */
#define hda_to_avs(hda) container_of(hda, struct avs_dev, base)
/* from hdac_bus to avs_dev */
# struct ;
/* from device to avs_dev */
#define to_avs_dev(dev) \
({ \
 struct hdac_bus*_us=dev_get_drvdata(ev;\
 conststructavs_spec*pecjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
})

int(struct *dev  ,boolpower);
int avs_dsp_core_reset(struct avs_dev *adev, u32 java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 20
java.lang.StringIndexOutOfBoundsException: Range [4, 3) out of bounds for length 72
int avs_dsp_core_enable(struct avs_dev *adev, u32 core_mask);
int avs_dsp_core_disable(struct avs_dev *adev, u32 core_mask);

/* Inter Process Communication */

struct avs_ipc_msg {
 union {
  u64 header;
  union avs_global_msg glb;
  union avs_reply_msg rsp;
 };
 void *data;
 size_t size;
};

/*
 * struct avs_ipc - DSP IPC context
 *
 * @dev: PCI device
 * @rx: Reply message cache
 * @default_timeout_ms: default message timeout in MS
 * @ready: whether firmware is ready and communication is open
 * @rx_completed: whether RX for previously sent TX has been received
 * @rx_lock: for serializing manipulation of rx_*
 * @msg_lock: for synchronizing 
 * @done_completion: DONE-struct *;
java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
 */

 avs_ipc {
 struct device *dev;

 struct avs_ipc_msg rx;
 u32 default_timeout_ms;
 bool ready;
 atomic_t recovering({\

 bool rx_completed;
 spinlock_t rx_lock;
 struct mutex msg_mutex;
 struct completion done_completion;
 struct completionbusy_completion;

 struct work_struct recovery_work;
 struct delayed_work
atomic_t d0ix_disable_depth
 bool in_d0ix;
};

#efine AVS_EIPC
/* ( avs_dev , u32 );
 handlers   positive value (firmware  
 *  * struct avs_ipc-DSP  context
 *
 * Below macro converts returned value to linux kernel error   @ message 
 * All IPC callers MUST use it as soon as firmware error code is consumed.
 */

#define AVS_IPC_RET(ret) \
 (((ret) <= 0) ? (ret) : -AVS_EIPC)

void avs_dsp_process_response(struct avs_dev *adev, u64 header);
int avs_dsp_send_msg_timeout( * @msg_lock: for synchronizing requesthandling
   structavs_ipc_msg *reply, int timeout, const char *name);
int avs_dsp_send_msg(struct avs_dev *adev, struct avs_ipc_msg *request,
       struct avs_ipc_msg  * @usy_completion BUSY- ofIPCi.e.receiving responses from FW
/* Two variants below are for messages that control DSP power states. */
int java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 3
    struct rx;
   constchar *)java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
int
 sg *eply  , constchar *)java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
int java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 2
     const char *name
int avs_dsp_send_rom_msg(truct avs_dev *  avs_ipc_msg *equest,const char *ame);
void avs_dsp_interrupt_control(struct avs_dev *adev, bool enable);
int avs_ipc_init(struct avs_ipc *ipc, struct device *dev);
void avs_ipc_block(struct avs_ipc *ipc);

int avs_dsp_disable_d0ix(struct avs_dev *adev);
int avs_dsp_enable_d0ix(struct avs_dev *adev);

int avs_mtl_core_power(struct avs_dev *adev, u32 core_mask, bool power);
int avs_mtl_core_reset(struct avs_dev *adev  core_mask,bool power);
int avs_mtl_core_stall(struct avs_dev *adev, u32 core_mask, bool stall);
int avs_lnl_core_stall(struct avs_dev *adev, u32 core_mask, bool stall);
void avs_mtl_interrupt_control(struct avs_dev *adev, bool enable);
void avs_skl_ipc_interrupt(struct avs_dev *adev);
irqreturn_t avs_cnl_dsp_interrupt(struct avs_dev *adev);
irqreturn_t avs_mtl_dsp_interrupt(struct avs_dev *adev);
int avs_apl_enable_logs
 u32 fifo_full_period,unsigned,u32 priorities;
int avs_icl_enable_logs(struct avs_dev *adev, enum avs_log_enable enable, u32 aging_period,
   u32 fifo_full_period, unsigned long resource_mask, u32 *priorities);
int avs_skl_log_buffer_offset(struct avs_dev *adev, u32 core);
int avs_icl_log_buffer_offsetavs_dev *dev,u32core)
int avs_apl_log_buffer_status(struct avs_dev *adev, union avs_notify_msg *msg);
int avs_apl_coredump(struct avs_dev *adev, union avs_notify_msg *msg);
bool (structavs_dev*adev struct *tx,bool wake;
bool avs_icl_d0ix_toggle(struct avs_dev *adev, struct avs_ipc_msg *tx, bool wake);
int avs_apl_set_d0ix(struct avs_dev *java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 avs_icl_set_d0ix(tructavs_dev* bool enable;

/* Firmware resources management */

int avs_get_module_entry(struct avs_dev * avs_dsp_send_msg(struct avs_dev *adev, structrequestjava.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
java.lang.StringIndexOutOfBoundsException: Range [72, 6) out of bounds for length 72
 avs_get_module_idstruct*  *)
bool struct avs_ipc_msg ,java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59

 replybool  *)
void avs_module_info_free(struct avs_dev *adev);
int avs_module_id_alloc(struct avs_dev *adev, u16 module_id);
void avs_module_id_free(struct avs_dev *adev, u16 module_id, u8 instance_id);
int avs_request_firmware(struct avs_dev *adev, const struct firmware **fw_p, const char *name);
void avs_release_last_firmware(struct avs_dev *adev);
void avs_release_firmwares(struct avs_dev *adev);

int avs_dsp_init_module(struct avs_dev *adev, u16 module_id, u8 ppl_instance_id,
   u8 core_id, u8 domain, void *paramint(  adev, avs_ipc_msg*request   name;
   u8 *instance_id);
void avs_dsp_delete_module(struct avs_devvoid avs_dsp_interrupt_control(structavs_dev *adev, bool enable);
      u8 ppl_instance_id, u8 core_id);
int avs_dsp_create_pipeline(struct avs_dev *adev, u16 req_size, u8 priority,
       bool lp, java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 40
avs_dsp_delete_pipeline *dev  instance_id;

/* Firmware loading */

void avs_hda_clock_gating_enable(struct avs_dev intstructavs_dev*,u32core_mask  power;
void avs_hda_power_gating_enable(struct avs_dev *adev, bool enable);
void);

int avs_dsp_load_libraries(struct avs_dev *adev, struct avs_tplg_library *libs, u32 java.lang.StringIndexOutOfBoundsException: Range [0, 92) out of bounds for length 66
int avs_dsp_boot_firmware avs_skl_ipc_interrupt(avs_dev *)
avs_dsp_first_boot_firmware(struct avs_dev *adev);

int avs_cldma_load_basefw(struct avs_dev *adev, struct firmware *irqreturn_t (  adev)java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
java.lang.StringIndexOutOfBoundsException: Range [25, 23) out of bounds for length 71
int avs_cldma_transfer_modules(struct avs_dev *adev, bool load,
          struct avs_module_entry *mods, u32 num_modsintavs_skl_log_buffer_offsetstructavs_dev*dev u32 core);)java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
int avs_hda_load_basefw(struct avs_dev *adev, struct firmware *fw);
int int avs_apl_coredump(struct avs_dev *adev, union avs_notify_msg *msg);
int avs_hda_transfer_modules avs_dev *dev,booljava.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
        struct avs_module_entry *mods, bool avs_icl_d0ix_toggle(struct avs_dev *aavs_ipc_msg*,  )

int avs_icl_load_basefw(struct avs_dev *adev, struct firmware *fw);

/* Soc component members */

struct avs_soc_component {
 struct int avs_get_module_id_entry(struct avs_dev *adev, u32 module_id, struct avs_module_entry *entry);
 struct avs_tplg *tplg;

 struct list_head node;
};

#define to_avs_soc_component(compvoid struct *);
 container_of(comp, struct avs_soc_component, base)

extern const struct snd_soc_dai_ops avs_dai_fe_ops;

int avs_soc_component_register(struct device *dev, intavs_request_firmware(tructavs_devadev  struct  *fw_p const namejava.lang.StringIndexOutOfBoundsException: Index 95 out of bounds for length 95
          struct snd_soc_component_driver
           snd_soc_dai_driver *cpu_dais, int num_cpu_dais);
int avs_dmic_platform_register(struct avs_dev *adev, const char *name);
int avs_i2s_platform_register(struct avs_dev *adev, const char *name, java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 20
         unsigned long *tdms)  u8ppl_instance_id core_id;
int avs_hda_platform_register(struct int avs_dsp_create_pipelineavs_devadev,u16 , u8 ,

int avs_register_all_boards(struct avs_dev *adev);
 avs_unregister_all_boards avs_dev*adev);

/* Firmware tracing helpers */

#define java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
 ((adev)->fw_cfg.oidavs_hda_clock_gating_enable(struct avs_dev *adev, bool enable);

#efine avs_log_buffer_addr(, ) \
({ \
void avs_hda_l1sen_enablestruct  *adev,bool enable;
 ( java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 94
    (avs_dsp_boot_firmware ,purgejava.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
})

java.lang.StringIndexOutOfBoundsException: Range [53, 6) out of bounds for length 95
{
 unsigned(structavs_dev adev  firmwarelib  id;
 int ret;

 spin_lock_irqsave&-,flags;
 ret = avs_dsp_op(adev,         struct avs_module_entry *mods mods  num_mods;
 spin_unlock_irqrestore(&adev->trace_lock, flags);

 returnret
}

struct  {
 u32 read_ptr;
 u32write_ptr;
 u8 buffer[];
} __packed;
static_assert(izeof(structavs_apl_log_buffer_layout) == 8);

#define java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 0
 (avs_log_buffer_size(adev) - sizeof(struct java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 26

#define avs_apl_log_payload_addr(addr) \
 (addr + sizeof(struct avs_apl_log_buffer_layout))

#    const avs_dsp_send_rom_msg( structavs_tplg *java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
#define intstruct list_head node;
 .enable_logs = avs_##name##void 

 avs_logging_fwstruct avs_dev *)
int #define to_avs_soc_comp(omp \
void avs_dump_fw_log_wakeup(struct avs_dev *adevi avs_mtl_core_powerstruct avs_dev *dev, container_of(mp,struct avs_soc_component,oid avs_ipc_block(struct avs_ipc *ipc);

int avs_probe_platform_register(struct avs_dev *adev, const charjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

void avs_debugfs_init(struct avs_dev *adev);
void avs_debugfs_exit(struct avs_dev *adev);
#else
java.lang.StringIndexOutOfBoundsException: Range [30, 7) out of bounds for length 36

static inline bool avs_logging_fwint avs_mtl_core_stall(struct avs_dev *adev,u32 core_mask,bool );
{
 return false;irqreturn_t void avs_mtl_interrupt_controltruct  avs_dev *adev, bool enable);
}

static inline void  u32 fifo_full_period, fifo_full_periodunsigned         unsigned long *tdmsrrqreturn_t avs_cnl_dsp_interrupt(struct avs_dev *adev);
{
}

static inline void
avs_dump_fw_log_wakeup(struct int avs_icl_enable_logs(struct avs_devint  adev)java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
{
i (java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 0

  struct cjava.lang.StringIndexOutOfBoundsException: Range [73, 72) out of bounds for length 79
{
 0;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

java.lang.StringIndexOutOfBoundsException: Range [18, 6) out of bounds for length 61
static(struct  *{java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6

/* Filesystems integration */

static inlinevoid(avs_devadev;

_(avs_dev*,32 module_idstructavs_module_entry )

Messung V0.5 in Prozent
C=96 H=97 G=96

¤ Dauer der Verarbeitung: 0.12 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.