mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-02-17 17:10:26 -05:00
Word 'component' is commonly used in ASoC when referring to any component, regardless if it is a platform-type or codec-type component. Reword all avs_xxx_platform_register() to match the scheme present in ASoC's core. In case of avs_soc_component_register(), the name is simplified. Summary: - avs_xxx_platform_register() -> avs_register_xxx_component() - avs_soc_component_register() -> avs_register_component() Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com> Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com> Link: https://patch.msgid.link/20250818104126.526442-5-cezary.rojewski@intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
92 lines
2.4 KiB
C
92 lines
2.4 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright(c) 2024-2025 Intel Corporation
|
|
*
|
|
* Authors: Cezary Rojewski <cezary.rojewski@intel.com>
|
|
* Amadeusz Slawinski <amadeuszx.slawinski@linux.intel.com>
|
|
*/
|
|
|
|
#ifndef __SOUND_SOC_INTEL_AVS_DEBUG_H
|
|
#define __SOUND_SOC_INTEL_AVS_DEBUG_H
|
|
|
|
#include "messages.h"
|
|
#include "registers.h"
|
|
|
|
struct avs_dev;
|
|
|
|
#define avs_log_buffer_size(adev) \
|
|
((adev)->fw_cfg.trace_log_bytes / (adev)->hw_cfg.dsp_cores)
|
|
|
|
#define avs_log_buffer_addr(adev, core) \
|
|
({ \
|
|
s32 __offset = avs_dsp_op(adev, log_buffer_offset, core); \
|
|
(__offset < 0) ? NULL : \
|
|
(avs_sram_addr(adev, AVS_DEBUG_WINDOW) + __offset); \
|
|
})
|
|
|
|
static inline int avs_log_buffer_status_locked(struct avs_dev *adev, union avs_notify_msg *msg)
|
|
{
|
|
unsigned long flags;
|
|
int ret;
|
|
|
|
spin_lock_irqsave(&adev->trace_lock, flags);
|
|
ret = avs_dsp_op(adev, log_buffer_status, msg);
|
|
spin_unlock_irqrestore(&adev->trace_lock, flags);
|
|
|
|
return ret;
|
|
}
|
|
|
|
struct avs_apl_log_buffer_layout {
|
|
u32 read_ptr;
|
|
u32 write_ptr;
|
|
u8 buffer[];
|
|
} __packed;
|
|
static_assert(sizeof(struct avs_apl_log_buffer_layout) == 8);
|
|
|
|
#define avs_apl_log_payload_size(adev) \
|
|
(avs_log_buffer_size(adev) - sizeof(struct avs_apl_log_buffer_layout))
|
|
|
|
#define avs_apl_log_payload_addr(addr) \
|
|
(addr + sizeof(struct avs_apl_log_buffer_layout))
|
|
|
|
#ifdef CONFIG_DEBUG_FS
|
|
int avs_register_probe_component(struct avs_dev *adev, const char *name);
|
|
|
|
#define AVS_SET_ENABLE_LOGS_OP(name) \
|
|
.enable_logs = avs_##name##_enable_logs
|
|
|
|
bool avs_logging_fw(struct avs_dev *adev);
|
|
void avs_dump_fw_log(struct avs_dev *adev, const void __iomem *src, unsigned int len);
|
|
void avs_dump_fw_log_wakeup(struct avs_dev *adev, const void __iomem *src, unsigned int len);
|
|
|
|
void avs_debugfs_init(struct avs_dev *adev);
|
|
void avs_debugfs_exit(struct avs_dev *adev);
|
|
|
|
#else
|
|
static inline int avs_register_probe_component(struct avs_dev *adev, const char *name)
|
|
{
|
|
return -EOPNOTSUPP;
|
|
}
|
|
|
|
#define AVS_SET_ENABLE_LOGS_OP(name)
|
|
|
|
static inline bool avs_logging_fw(struct avs_dev *adev)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
static inline void avs_dump_fw_log(struct avs_dev *adev, const void __iomem *src, unsigned int len)
|
|
{
|
|
}
|
|
|
|
static inline void avs_dump_fw_log_wakeup(struct avs_dev *adev, const void __iomem *src,
|
|
unsigned int len)
|
|
{
|
|
}
|
|
|
|
static inline void avs_debugfs_init(struct avs_dev *adev) { }
|
|
static inline void avs_debugfs_exit(struct avs_dev *adev) { }
|
|
#endif
|
|
|
|
#endif
|