diff --git a/posix/include/rtos/cache.h b/posix/include/rtos/cache.h index d8650efed9da..9ec4091bb5a1 100644 --- a/posix/include/rtos/cache.h +++ b/posix/include/rtos/cache.h @@ -22,4 +22,12 @@ /* invalidate data */ #define CACHE_INVALIDATE 1 +/* + * The host has a single address space, so the cached and uncached aliases + * of an address are the same. + */ +#define uncache_to_cache(address) address +#define cache_to_uncache(address) address +#define is_uncached(address) 1 + #endif /* __SOF_LIB_CACHE_H__ */ diff --git a/posix/include/sof/lib/memory.h b/posix/include/sof/lib/memory.h index 8e218b9ab9aa..7a96c91d2507 100644 --- a/posix/include/sof/lib/memory.h +++ b/posix/include/sof/lib/memory.h @@ -9,6 +9,7 @@ #define __SOF_LIB_MEMORY_H__ #include +#include #include #endif /* __SOF_LIB_MEMORY_H__ */ diff --git a/src/audio/aria/aria.h b/src/audio/aria/aria.h index 28846723004e..cc29ea28af3b 100644 --- a/src/audio/aria/aria.h +++ b/src/audio/aria/aria.h @@ -14,7 +14,6 @@ #ifndef __SOF_AUDIO_ARIA_H__ #define __SOF_AUDIO_ARIA_H__ -#include #include #include #include diff --git a/src/audio/chain_dma.c b/src/audio/chain_dma.c index 4718f3d5c284..6dc962b38387 100644 --- a/src/audio/chain_dma.c +++ b/src/audio/chain_dma.c @@ -7,7 +7,6 @@ #include #include -#include #include #include #include @@ -15,7 +14,6 @@ #include #include #include -#include #include #include #include diff --git a/src/audio/copier/copier.c b/src/audio/copier/copier.c index 04962492f090..41893484fd1c 100644 --- a/src/audio/copier/copier.c +++ b/src/audio/copier/copier.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -15,13 +16,13 @@ #include #include #include -#include +#include #include #include #include #include #include -#include +#include #include #include #include diff --git a/src/audio/copier/copier_dai.c b/src/audio/copier/copier_dai.c index 231c54ab572c..94c83b99cfff 100644 --- a/src/audio/copier/copier_dai.c +++ b/src/audio/copier/copier_dai.c @@ -4,11 +4,11 @@ // // Author: Baofeng Tian -#include +#include /* ACE_VERSION, see the ALH case below */ #include #include -#include +#include #include #include #include "copier.h" diff --git a/src/audio/copier/copier_gain.c b/src/audio/copier/copier_gain.c index 842f92997108..3c31ac53f546 100644 --- a/src/audio/copier/copier_gain.c +++ b/src/audio/copier/copier_gain.c @@ -4,10 +4,11 @@ // // Author: Ievgen Ganakov -#include +#include #include #include -#include +#include +#include #include #include #include diff --git a/src/audio/copier/copier_generic.c b/src/audio/copier/copier_generic.c index bb5918819e5b..721424dac202 100644 --- a/src/audio/copier/copier_generic.c +++ b/src/audio/copier/copier_generic.c @@ -5,8 +5,7 @@ // Author: Andrula Song #include -#include -#include +#include #include #include #include diff --git a/src/audio/copier/copier_hifi.c b/src/audio/copier/copier_hifi.c index 14c91b632f5b..a45b7d74c166 100644 --- a/src/audio/copier/copier_hifi.c +++ b/src/audio/copier/copier_hifi.c @@ -9,11 +9,10 @@ #if SOF_USE_HIFI(3, COPIER) || SOF_USE_HIFI(4, COPIER) || SOF_USE_HIFI(5, COPIER) #include -#include #include #include #include -#include +#include #include #include #include diff --git a/src/audio/copier/copier_host.c b/src/audio/copier/copier_host.c index 1d8960dee199..35c33383d12a 100644 --- a/src/audio/copier/copier_host.c +++ b/src/audio/copier/copier_host.c @@ -4,8 +4,7 @@ // // Author: Baofeng Tian -#include -#include +#include #include #include #include diff --git a/src/audio/copier/copier_ipcgtw.c b/src/audio/copier/copier_ipcgtw.c index 7b53e9aba0d6..0bd5412a5b56 100644 --- a/src/audio/copier/copier_ipcgtw.c +++ b/src/audio/copier/copier_ipcgtw.c @@ -3,7 +3,6 @@ // Copyright 2023 Intel Corporation. All rights reserved. #include -#include #include #include #include diff --git a/src/audio/copier/host_copier.h b/src/audio/copier/host_copier.h index 2dbdd7f2ed8f..309ddaeae24b 100644 --- a/src/audio/copier/host_copier.h +++ b/src/audio/copier/host_copier.h @@ -14,7 +14,6 @@ #ifndef __SOF_HOST_COPIER_H__ #define __SOF_HOST_COPIER_H__ -#include #include #include #include diff --git a/src/audio/copier/ipcgtw_copier.h b/src/audio/copier/ipcgtw_copier.h index a9ea82914d4e..e32c6a556bcb 100644 --- a/src/audio/copier/ipcgtw_copier.h +++ b/src/audio/copier/ipcgtw_copier.h @@ -14,7 +14,6 @@ #ifndef __SOF_IPCGTW_COPIER_H__ #define __SOF_IPCGTW_COPIER_H__ -#include #include #include #include diff --git a/src/audio/intel_uaol.c b/src/audio/intel_uaol.c index baeb4a217103..bfe232b58e5d 100644 --- a/src/audio/intel_uaol.c +++ b/src/audio/intel_uaol.c @@ -4,9 +4,9 @@ */ #include +#include #include #include -#include #include LOG_MODULE_REGISTER(uaol, CONFIG_SOF_LOG_LEVEL); diff --git a/src/audio/mixer/mixer.c b/src/audio/mixer/mixer.c index 64e14947eacd..d947ac980da7 100644 --- a/src/audio/mixer/mixer.c +++ b/src/audio/mixer/mixer.c @@ -19,7 +19,6 @@ #include #include #include -#include #include #include #include @@ -77,8 +76,8 @@ static int mixer_process(struct processing_module *mod, { struct mixer_data *md = module_get_private_data(mod); struct comp_dev *dev = mod->dev; - struct sof_source *active_sources[PLATFORM_MAX_STREAMS]; - struct cir_buf_source source_bufs[PLATFORM_MAX_STREAMS]; + struct sof_source *active_sources[CONFIG_PLATFORM_MAX_STREAMS]; + struct cir_buf_source source_bufs[CONFIG_PLATFORM_MAX_STREAMS]; struct cir_buf_sink sink_buf; size_t bytes, samples, source_bytes, sink_bytes; size_t frames = SIZE_MAX; @@ -88,7 +87,7 @@ static int mixer_process(struct processing_module *mod, comp_dbg(dev, "%d", num_of_sources); /* too many sources ? */ - if (num_of_sources >= PLATFORM_MAX_STREAMS) + if (num_of_sources >= CONFIG_PLATFORM_MAX_STREAMS) return -EINVAL; /* find active sources and compute frame count */ diff --git a/src/audio/module_adapter/module/cadence_ipc4.c b/src/audio/module_adapter/module/cadence_ipc4.c index ac11e1a76d69..d47c15e0550e 100644 --- a/src/audio/module_adapter/module/cadence_ipc4.c +++ b/src/audio/module_adapter/module/cadence_ipc4.c @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/audio/module_adapter/module_adapter.c b/src/audio/module_adapter/module_adapter.c index 3ccae18cbe09..924d754ad913 100644 --- a/src/audio/module_adapter/module_adapter.c +++ b/src/audio/module_adapter/module_adapter.c @@ -20,9 +20,8 @@ #include #include #include -#include +#include #include -#include #include #include #if CONFIG_IPC_MAJOR_4 @@ -1118,8 +1117,8 @@ static int module_adapter_audio_stream_copy_1to1(struct comp_dev *dev) static int module_adapter_audio_stream_type_copy(struct comp_dev *dev) { - struct comp_buffer *sources[PLATFORM_MAX_STREAMS]; - struct comp_buffer *sinks[PLATFORM_MAX_STREAMS]; + struct comp_buffer *sources[CONFIG_PLATFORM_MAX_STREAMS]; + struct comp_buffer *sinks[CONFIG_PLATFORM_MAX_STREAMS]; struct comp_buffer *sink; struct comp_buffer *source; struct processing_module *mod = comp_mod(dev); diff --git a/src/audio/mux/mux.h b/src/audio/mux/mux.h index 4fadbb03e11a..9f97bd2f62a8 100644 --- a/src/audio/mux/mux.h +++ b/src/audio/mux/mux.h @@ -16,7 +16,6 @@ #include #include -#include #include #include #include @@ -41,7 +40,7 @@ struct cir_buf_sink; #endif #define BASE_CFG_QUEUED_ID 0 /** guard against invalid amount of streams defined */ -STATIC_ASSERT(MUX_MAX_STREAMS < PLATFORM_MAX_STREAMS, +STATIC_ASSERT(MUX_MAX_STREAMS < CONFIG_PLATFORM_MAX_STREAMS, unsupported_amount_of_streams_for_mux); struct mux_copy_elem { diff --git a/src/audio/pipeline/pipeline-graph.c b/src/audio/pipeline/pipeline-graph.c index 84dbc528f524..ed8bb7eac0a2 100644 --- a/src/audio/pipeline/pipeline-graph.c +++ b/src/audio/pipeline/pipeline-graph.c @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/audio/pipeline/pipeline-schedule.c b/src/audio/pipeline/pipeline-schedule.c index fc8daad6e378..3b14ec4d2ea6 100644 --- a/src/audio/pipeline/pipeline-schedule.c +++ b/src/audio/pipeline/pipeline-schedule.c @@ -13,7 +13,6 @@ #include #include #include -#include #include #include #include diff --git a/src/audio/pipeline/pipeline-stream.c b/src/audio/pipeline/pipeline-stream.c index 4bdd0c93b9c9..b339e70aaf81 100644 --- a/src/audio/pipeline/pipeline-stream.c +++ b/src/audio/pipeline/pipeline-stream.c @@ -21,7 +21,7 @@ #include #include #include -#include +#include #ifdef CONFIG_IPC_MAJOR_4 #include diff --git a/src/audio/pipeline/pipeline-xrun.c b/src/audio/pipeline/pipeline-xrun.c index af6d9a4062c1..fde01cbe699e 100644 --- a/src/audio/pipeline/pipeline-xrun.c +++ b/src/audio/pipeline/pipeline-xrun.c @@ -6,7 +6,6 @@ // Keyon Jie #include -#include #include #include #include diff --git a/src/audio/pipeline/static_pipeline_loader.c b/src/audio/pipeline/static_pipeline_loader.c index ace6eef3cb9a..dcd7ae88eb0f 100644 --- a/src/audio/pipeline/static_pipeline_loader.c +++ b/src/audio/pipeline/static_pipeline_loader.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include diff --git a/src/audio/pipeline/static_pipeline_modules.c b/src/audio/pipeline/static_pipeline_modules.c index e280614782b4..d527b91112e0 100644 --- a/src/audio/pipeline/static_pipeline_modules.c +++ b/src/audio/pipeline/static_pipeline_modules.c @@ -14,7 +14,6 @@ */ #include -#include #include #include #include diff --git a/src/audio/src/src_ipc4.c b/src/audio/src/src_ipc4.c index 7d8905c21a95..87826919a0df 100644 --- a/src/audio/src/src_ipc4.c +++ b/src/audio/src/src_ipc4.c @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/audio/up_down_mixer/up_down_mixer.h b/src/audio/up_down_mixer/up_down_mixer.h index 52a5f1e34daa..7a0ad0c14029 100644 --- a/src/audio/up_down_mixer/up_down_mixer.h +++ b/src/audio/up_down_mixer/up_down_mixer.h @@ -8,7 +8,6 @@ #ifndef __SOF_AUDIO_UP_DOWN_MIXER_H__ #define __SOF_AUDIO_UP_DOWN_MIXER_H__ -#include #include #include #include diff --git a/src/audio/up_down_mixer/up_down_mixer_hifi3.c b/src/audio/up_down_mixer/up_down_mixer_hifi3.c index 87540d02e8e3..c173b504236a 100644 --- a/src/audio/up_down_mixer/up_down_mixer_hifi3.c +++ b/src/audio/up_down_mixer/up_down_mixer_hifi3.c @@ -1917,6 +1917,8 @@ void upmix32bit_quatro_to_5_1(struct up_down_mixer_data *cd, const uint8_t * con #else /* !XCHAL_HAVE_HIFI3 */ +#include + /* TODO: replace with generic ANSI C version */ void upmix32bit_1_to_5_1(struct up_down_mixer_data *cd, const uint8_t * const in_data, diff --git a/src/audio/volume/volume.c b/src/audio/volume/volume.c index 401970b60ebf..a449190c60ad 100644 --- a/src/audio/volume/volume.c +++ b/src/audio/volume/volume.c @@ -15,7 +15,6 @@ */ #include -#include #include #include #include diff --git a/src/audio/volume/volume_ipc3.c b/src/audio/volume/volume_ipc3.c index c6e49a3cdffb..42bc65fca8fe 100644 --- a/src/audio/volume/volume_ipc3.c +++ b/src/audio/volume/volume_ipc3.c @@ -5,7 +5,6 @@ // Author: Baofeng Tian #include -#include #include #include #include diff --git a/src/audio/volume/volume_ipc4.c b/src/audio/volume/volume_ipc4.c index 95e8a4749671..78043a834c8a 100644 --- a/src/audio/volume/volume_ipc4.c +++ b/src/audio/volume/volume_ipc4.c @@ -5,7 +5,6 @@ // Author: Baofeng Tian #include -#include #include #include #include diff --git a/src/include/sof/audio/component.h b/src/include/sof/audio/component.h index 3b0c59a2635c..e8e549913906 100644 --- a/src/include/sof/audio/component.h +++ b/src/include/sof/audio/component.h @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include diff --git a/src/include/sof/audio/component_dai.h b/src/include/sof/audio/component_dai.h new file mode 100644 index 000000000000..04f48c3d56a7 --- /dev/null +++ b/src/include/sof/audio/component_dai.h @@ -0,0 +1,56 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright(c) 2016 Intel Corporation. All rights reserved. + */ + +/** + * \file include/sof/audio/component_dai.h + * \brief DAI configuration helper for components + * + * Kept separate from sof/audio/component_ext.h because it needs the DAI + * driver API, which most components do not use. + */ + +#ifndef __SOF_AUDIO_COMPONENT_DAI_H__ +#define __SOF_AUDIO_COMPONENT_DAI_H__ + +#include +#include + +#if CONFIG_IPC_MAJOR_3 +/** + * \brief Configure DAI component. + * \param[in,out] dev Component device. + * \param[in] config IPC DAI configuration. + * \param[in] spec_config Spec-specific configuration data. + * \return 0 on success, negative error code on failure. + */ +static inline int comp_dai_config(struct comp_dev *dev, struct ipc_config_dai *config, + const void *spec_config) +{ + struct dai_data *dd = comp_get_drvdata(dev); + + if (dev->drv->ops.dai_config) + return dev->drv->ops.dai_config(dd, dev, config, spec_config); + + return 0; +} +#elif CONFIG_IPC_MAJOR_4 +/** + * \brief Configure DAI component (IPC4). + * \param[in,out] dd DAI driver data. + * \param[in,out] dev Component device. + * \param[in] config IPC DAI configuration. + * \param[in] spec_config Spec-specific configuration data. + * \return 0 on success, negative error code on failure. + */ +static inline int comp_dai_config(struct dai_data *dd, struct comp_dev *dev, + struct ipc_config_dai *config, const void *spec_config) +{ + return dai_config(dd, dev, config, spec_config); +} +#else +#error Unknown IPC major version +#endif + +#endif /* __SOF_AUDIO_COMPONENT_DAI_H__ */ diff --git a/src/include/sof/audio/component_ext.h b/src/include/sof/audio/component_ext.h index 691173f1c27a..3a4c3ce8826e 100644 --- a/src/include/sof/audio/component_ext.h +++ b/src/include/sof/audio/component_ext.h @@ -20,7 +20,6 @@ #include /* TODO: the cross-core helpers below send IDC messages, which is kernel only */ #include -#include #include /** \addtogroup component_infra_api @@ -386,42 +385,6 @@ static inline int comp_reset(struct comp_dev *dev) return 0; } -#if CONFIG_IPC_MAJOR_3 -/** - * \brief Configure DAI component. - * \param[in,out] dev Component device. - * \param[in] config IPC DAI configuration. - * \param[in] spec_config Spec-specific configuration data. - * \return 0 on success, negative error code on failure. - */ -static inline int comp_dai_config(struct comp_dev *dev, struct ipc_config_dai *config, - const void *spec_config) -{ - struct dai_data *dd = comp_get_drvdata(dev); - - if (dev->drv->ops.dai_config) - return dev->drv->ops.dai_config(dd, dev, config, spec_config); - - return 0; -} -#elif CONFIG_IPC_MAJOR_4 -/** - * \brief Configure DAI component (IPC4). - * \param[in,out] dd DAI driver data. - * \param[in,out] dev Component device. - * \param[in] config IPC DAI configuration. - * \param[in] spec_config Spec-specific configuration data. - * \return 0 on success, negative error code on failure. - */ -static inline int comp_dai_config(struct dai_data *dd, struct comp_dev *dev, - struct ipc_config_dai *config, const void *spec_config) -{ - return dai_config(dd, dev, config, spec_config); -} -#else -#error Unknown IPC major version -#endif - /** * \brief Retrieve stream position from component. * \param[in,out] dev Component device. diff --git a/src/include/sof/coherent.h b/src/include/sof/coherent.h index 8b4e49142f3c..d0b60a95f73a 100644 --- a/src/include/sof/coherent.h +++ b/src/include/sof/coherent.h @@ -20,7 +20,7 @@ #include #include -#include +#include #include /** \addtogroup memory_api diff --git a/src/include/sof/schedule/ll_schedule.h b/src/include/sof/schedule/ll_schedule.h index 41e8f9f42558..c49bf9f0f131 100644 --- a/src/include/sof/schedule/ll_schedule.h +++ b/src/include/sof/schedule/ll_schedule.h @@ -29,6 +29,46 @@ struct ll_schedule_domain; +#if defined(CONFIG_AMD) +/** @brief Low-Latency timer scheduling period in microseconds (500us for AMD ACP platforms). */ +#define LL_TIMER_PERIOD_US 500ULL +#else +/** @brief Default Low-Latency timer scheduling period in microseconds (1000us / 1ms). */ +#define LL_TIMER_PERIOD_US 1000ULL +#endif + +/** + * @brief Default Low-Latency watchdog timeout in microseconds. + * + * Configured as two periods to provide a safe margin between watchdog start + * and initial task feeding. + */ +#define LL_WATCHDOG_TIMEOUT_US (2 * LL_TIMER_PERIOD_US) + +#ifdef CONFIG_SOF_USERSPACE_LL +/** + * @brief Acquire per-core user Low-Latency scheduling lock. + * @param[in] core Target core ID. + */ +void user_ll_lock_sched(int core); + +/** + * @brief Release per-core user Low-Latency scheduling lock. + * @param[in] core Target core ID. + */ +void user_ll_unlock_sched(int core); + +#ifdef CONFIG_ASSERT +/** + * @brief Assert that the calling context holds the user Low-Latency lock for a core. + * @param[in] core Target core ID. + */ +void user_ll_assert_locked(int core); +#else +static inline void user_ll_assert_locked(int core) { ARG_UNUSED(core); } +#endif +#endif /* CONFIG_SOF_USERSPACE_LL */ + /* ll tracing */ extern struct tr_ctx ll_tr; diff --git a/src/include/sof/schedule/ll_schedule_domain.h b/src/include/sof/schedule/ll_schedule_domain.h index 6858929d97b3..c369242640af 100644 --- a/src/include/sof/schedule/ll_schedule_domain.h +++ b/src/include/sof/schedule/ll_schedule_domain.h @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -32,22 +33,6 @@ * @{ */ -#if defined(CONFIG_AMD) -/** @brief Low-Latency timer scheduling period in microseconds (500us for AMD ACP platforms). */ -#define LL_TIMER_PERIOD_US 500ULL -#else -/** @brief Default Low-Latency timer scheduling period in microseconds (1000us / 1ms). */ -#define LL_TIMER_PERIOD_US 1000ULL -#endif - -/** - * @brief Default Low-Latency watchdog timeout in microseconds. - * - * Configured as two periods to provide a safe margin between watchdog start - * and initial task feeding. - */ -#define LL_WATCHDOG_TIMEOUT_US (2 * LL_TIMER_PERIOD_US) - struct dma; struct ll_schedule_domain; struct task; @@ -249,27 +234,6 @@ void zephyr_ll_user_resources_init(void); */ void user_ll_grant_access(struct k_thread *thread, int core); -/** - * @brief Acquire per-core user Low-Latency scheduling lock. - * @param[in] core Target core ID. - */ -void user_ll_lock_sched(int core); - -/** - * @brief Release per-core user Low-Latency scheduling lock. - * @param[in] core Target core ID. - */ -void user_ll_unlock_sched(int core); - -#ifdef CONFIG_ASSERT -/** - * @brief Assert that the calling context holds the user Low-Latency lock for a core. - * @param[in] core Target core ID. - */ -void user_ll_assert_locked(int core); -#else -static inline void user_ll_assert_locked(int core) { ARG_UNUSED(core); } -#endif #endif /* CONFIG_SOF_USERSPACE_LL */ /** diff --git a/src/include/sof/tlv.h b/src/include/sof/tlv.h index 442c03a5fc69..03e9c86ae339 100644 --- a/src/include/sof/tlv.h +++ b/src/include/sof/tlv.h @@ -10,6 +10,7 @@ #include #include +#include #include /** diff --git a/src/ipc/ipc3/dai.c b/src/ipc/ipc3/dai.c index fcb6a7062939..067aaf8579a6 100644 --- a/src/ipc/ipc3/dai.c +++ b/src/ipc/ipc3/dai.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include diff --git a/src/ipc/ipc3/handler.c b/src/ipc/ipc3/handler.c index e1b8df9eca9e..38694e10984d 100644 --- a/src/ipc/ipc3/handler.c +++ b/src/ipc/ipc3/handler.c @@ -14,6 +14,7 @@ #include #include +#include #include #include #include diff --git a/src/library_manager/lib_manager.c b/src/library_manager/lib_manager.c index 8841fe4d58c8..0c20782652a4 100644 --- a/src/library_manager/lib_manager.c +++ b/src/library_manager/lib_manager.c @@ -12,6 +12,7 @@ #include #include +#include #include #include #include diff --git a/src/platform/Kconfig b/src/platform/Kconfig index b38911fae762..33b4a33a13bb 100644 --- a/src/platform/Kconfig +++ b/src/platform/Kconfig @@ -250,6 +250,17 @@ config PLATFORM_MAX_CHANNELS configurable: some component state is sized for at most eight channels. +config PLATFORM_MAX_STREAMS + int + default 5 if ZEPHYR_SOF_MODULE && (IMX8 || IMX8X || IMX8ULP || IMX8M_CM7 || IMX93_A55 || IMX95 || MTK || AMD) + default 8 if ZEPHYR_SOF_MODULE && (IMX8M || BOARD_QEMU_XTENSA) + default 16 + help + Maximum number of input or output streams of a processing + component, e.g. the number of mixer inputs. Components size their + per-stream state with it. Host builds (testbench, unit tests) + use 16. + config MAX_CORE_COUNT int default MP_MAX_NUM_CPUS diff --git a/src/platform/ace30/include/platform/platform.h b/src/platform/ace30/include/platform/platform.h index d3913a2e28e5..9bf720bb84d9 100644 --- a/src/platform/ace30/include/platform/platform.h +++ b/src/platform/ace30/include/platform/platform.h @@ -27,9 +27,6 @@ /* Host page size */ #define HOST_PAGE_SIZE 4096 -/* Platform stream capabilities */ -#define PLATFORM_MAX_STREAMS 16 - /* local buffer size of DMA tracing */ #define DMA_TRACE_LOCAL_SIZE (HOST_PAGE_SIZE * 2) diff --git a/src/platform/amd/acp_7_0/include/platform/lib/memory.h b/src/platform/amd/acp_7_0/include/platform/lib/memory.h index 76ef92b091ae..5b59b0aa1bbf 100644 --- a/src/platform/amd/acp_7_0/include/platform/lib/memory.h +++ b/src/platform/amd/acp_7_0/include/platform/lib/memory.h @@ -158,10 +158,6 @@ #define SOF_MEM_RO_SIZE 0x8 -#define uncache_to_cache(address) address -#define cache_to_uncache(address) address -#define is_uncached(address) 0 - #define HEAP_BUF_ALIGNMENT PLATFORM_DCACHE_ALIGN /* brief EDF task's default stack size in bytes */ diff --git a/src/platform/amd/acp_7_0/include/platform/platform.h b/src/platform/amd/acp_7_0/include/platform/platform.h index 4f92145df7e6..67a718b80610 100644 --- a/src/platform/amd/acp_7_0/include/platform/platform.h +++ b/src/platform/amd/acp_7_0/include/platform/platform.h @@ -37,9 +37,6 @@ struct timer; #define PLATFORM_SCHEDULE_IRQ IRQ_NUM_SOFTWARE0 #define PLATFORM_SCHEDULE_IRQ_NAME NULL -/* Platform stream capabilities */ -#define PLATFORM_MAX_STREAMS 5 - /* local buffer size of DMA tracing */ #define DMA_TRACE_LOCAL_SIZE (16384 + 8192) //8192 diff --git a/src/platform/amd/acp_7_x/include/platform/lib/memory.h b/src/platform/amd/acp_7_x/include/platform/lib/memory.h index 34591c574a59..bad056fed445 100644 --- a/src/platform/amd/acp_7_x/include/platform/lib/memory.h +++ b/src/platform/amd/acp_7_x/include/platform/lib/memory.h @@ -207,10 +207,6 @@ #define SOF_MEM_RO_SIZE 0x8 -#define uncache_to_cache(address) address -#define cache_to_uncache(address) address -#define is_uncached(address) 0 - #define HEAP_BUF_ALIGNMENT PLATFORM_DCACHE_ALIGN /* brief EDF task's default stack size in bytes */ diff --git a/src/platform/amd/acp_7_x/include/platform/platform.h b/src/platform/amd/acp_7_x/include/platform/platform.h index 158b22439c3f..29aac5567bd3 100644 --- a/src/platform/amd/acp_7_x/include/platform/platform.h +++ b/src/platform/amd/acp_7_x/include/platform/platform.h @@ -37,9 +37,6 @@ struct timer; #define PLATFORM_SCHEDULE_IRQ IRQ_NUM_SOFTWARE0 #define PLATFORM_SCHEDULE_IRQ_NAME NULL -/* Platform stream capabilities */ -#define PLATFORM_MAX_STREAMS 5 - /* local buffer size of DMA tracing */ #define DMA_TRACE_LOCAL_SIZE 8192 diff --git a/src/platform/amd/rembrandt/include/platform/lib/memory.h b/src/platform/amd/rembrandt/include/platform/lib/memory.h index ea41e7634f41..ff2b263c33f4 100644 --- a/src/platform/amd/rembrandt/include/platform/lib/memory.h +++ b/src/platform/amd/rembrandt/include/platform/lib/memory.h @@ -137,10 +137,6 @@ #define SOF_MEM_RO_SIZE 0x8 -#define uncache_to_cache(address) address -#define cache_to_uncache(address) address -#define is_uncached(address) 0 - #define HEAP_BUF_ALIGNMENT PLATFORM_DCACHE_ALIGN /* brief EDF task's default stack size in bytes */ diff --git a/src/platform/amd/rembrandt/include/platform/platform.h b/src/platform/amd/rembrandt/include/platform/platform.h index 9f5ece29db86..c1544cee6b6f 100644 --- a/src/platform/amd/rembrandt/include/platform/platform.h +++ b/src/platform/amd/rembrandt/include/platform/platform.h @@ -36,9 +36,6 @@ struct timer; #define PLATFORM_SCHEDULE_IRQ IRQ_NUM_SOFTWARE0 #define PLATFORM_SCHEDULE_IRQ_NAME NULL -/* Platform stream capabilities */ -#define PLATFORM_MAX_STREAMS 5 - /* local buffer size of DMA tracing */ #define DMA_TRACE_LOCAL_SIZE 8192 diff --git a/src/platform/imx8/include/platform/lib/memory.h b/src/platform/imx8/include/platform/lib/memory.h index e43ee03c6478..0388e2481c6b 100644 --- a/src/platform/imx8/include/platform/lib/memory.h +++ b/src/platform/imx8/include/platform/lib/memory.h @@ -178,10 +178,7 @@ struct sof; void platform_init_memmap(struct sof *sof); -#define uncache_to_cache(address) address -#define cache_to_uncache(address) address #define cache_to_uncache_init(address) address -#define is_uncached(address) 0 /** * \brief Function for keeping shared data synchronized. diff --git a/src/platform/imx8/include/platform/platform.h b/src/platform/imx8/include/platform/platform.h index 36cee0eb4aad..8bc1cbdff495 100644 --- a/src/platform/imx8/include/platform/platform.h +++ b/src/platform/imx8/include/platform/platform.h @@ -35,9 +35,6 @@ struct timer; #define PLATFORM_SCHEDULE_IRQ IRQ_NUM_SOFTWARE0 #define PLATFORM_SCHEDULE_IRQ_NAME NULL -/* Platform stream capabilities */ -#define PLATFORM_MAX_STREAMS 5 - /* local buffer size of DMA tracing */ #define DMA_TRACE_LOCAL_SIZE HOST_PAGE_SIZE diff --git a/src/platform/imx8m/include/platform/lib/memory.h b/src/platform/imx8m/include/platform/lib/memory.h index f2b7261235b5..fd0034a7fba3 100644 --- a/src/platform/imx8m/include/platform/lib/memory.h +++ b/src/platform/imx8m/include/platform/lib/memory.h @@ -197,10 +197,7 @@ struct sof; void platform_init_memmap(struct sof *sof); -#define uncache_to_cache(address) address -#define cache_to_uncache(address) address #define cache_to_uncache_init(address) address -#define is_uncached(address) 0 /** * \brief Function for keeping shared data synchronized. diff --git a/src/platform/imx8m/include/platform/platform.h b/src/platform/imx8m/include/platform/platform.h index 23e680a9eff3..fa462cd7ba71 100644 --- a/src/platform/imx8m/include/platform/platform.h +++ b/src/platform/imx8m/include/platform/platform.h @@ -35,13 +35,6 @@ struct timer; #define PLATFORM_SCHEDULE_IRQ IRQ_NUM_SOFTWARE0 #define PLATFORM_SCHEDULE_IRQ_NAME NULL -/* - * Platform stream capabilities - * MAX_CHANNELS only affects 'components' so it is, for example, - * still possible to have multiple SAI peripherals output 8 channels each. - */ -#define PLATFORM_MAX_STREAMS 8 - /* local buffer size of DMA tracing */ #define DMA_TRACE_LOCAL_SIZE HOST_PAGE_SIZE diff --git a/src/platform/imx8m_cm7/include/platform/lib/memory.h b/src/platform/imx8m_cm7/include/platform/lib/memory.h index 6c2241626ab8..1f8919aad161 100644 --- a/src/platform/imx8m_cm7/include/platform/lib/memory.h +++ b/src/platform/imx8m_cm7/include/platform/lib/memory.h @@ -10,10 +10,7 @@ #include -#define uncache_to_cache(address) address -#define cache_to_uncache(address) address #define cache_to_uncache_init(address) address -#define is_uncached(address) 0 /* no address translation required */ #define host_to_local(addr) (addr) diff --git a/src/platform/imx8m_cm7/include/platform/platform.h b/src/platform/imx8m_cm7/include/platform/platform.h index f492c1f43369..36818ee3a5aa 100644 --- a/src/platform/imx8m_cm7/include/platform/platform.h +++ b/src/platform/imx8m_cm7/include/platform/platform.h @@ -15,12 +15,6 @@ #define PLATFORM_PAGE_TABLE_SIZE 256 -/* TODO: generous (SOF is usually used with 2 channels at most on i.MX - * platforms) and (potentially) not true. Can be adjusted later on if - * need be. - */ -#define PLATFORM_MAX_STREAMS 5 - /* WAKEUP domain MU7 side B */ #define PLATFORM_IPC_INTERRUPT 97 diff --git a/src/platform/imx8ulp/include/platform/lib/memory.h b/src/platform/imx8ulp/include/platform/lib/memory.h index 2b3ddb057b0d..e8c18b00c58c 100644 --- a/src/platform/imx8ulp/include/platform/lib/memory.h +++ b/src/platform/imx8ulp/include/platform/lib/memory.h @@ -180,10 +180,7 @@ struct sof; void platform_init_memmap(struct sof *sof); -#define uncache_to_cache(address) address -#define cache_to_uncache(address) address #define cache_to_uncache_init(address) address -#define is_uncached(address) 0 /** * \brief Function for keeping shared data synchronized. diff --git a/src/platform/imx8ulp/include/platform/platform.h b/src/platform/imx8ulp/include/platform/platform.h index 345ec7e854b4..f2f89a5632d8 100644 --- a/src/platform/imx8ulp/include/platform/platform.h +++ b/src/platform/imx8ulp/include/platform/platform.h @@ -35,9 +35,6 @@ struct timer; #define PLATFORM_SCHEDULE_IRQ IRQ_NUM_SOFTWARE0 #define PLATFORM_SCHEDULE_IRQ_NAME NULL -/* Platform stream capabilities */ -#define PLATFORM_MAX_STREAMS 5 - /* local buffer size of DMA tracing */ #define DMA_TRACE_LOCAL_SIZE HOST_PAGE_SIZE diff --git a/src/platform/imx93_a55/include/platform/lib/memory.h b/src/platform/imx93_a55/include/platform/lib/memory.h index 8a10da3b3a5e..89a98929ed0d 100644 --- a/src/platform/imx93_a55/include/platform/lib/memory.h +++ b/src/platform/imx93_a55/include/platform/lib/memory.h @@ -18,10 +18,7 @@ * thing so all the below cache/shared data "management" * functions aren't necessary. */ -#define uncache_to_cache(address) address -#define cache_to_uncache(address) address #define cache_to_uncache_init(address) address -#define is_uncached(address) 0 /* number of heaps to be used. * diff --git a/src/platform/imx93_a55/include/platform/platform.h b/src/platform/imx93_a55/include/platform/platform.h index 1da10b011a94..99782e8d796f 100644 --- a/src/platform/imx93_a55/include/platform/platform.h +++ b/src/platform/imx93_a55/include/platform/platform.h @@ -15,9 +15,6 @@ #define PLATFORM_PAGE_TABLE_SIZE 256 -/* TODO: these values are taken from i.MX8 platform */ -#define PLATFORM_MAX_STREAMS 5 - /* SOF uses A side of the WAKEUPMIX MU. * We need to add 32 (SPI_BASE) to the * INTID found in the TRM since all the diff --git a/src/platform/imx95/include/platform/lib/memory.h b/src/platform/imx95/include/platform/lib/memory.h index 074359a3048a..2bf667d15a64 100644 --- a/src/platform/imx95/include/platform/lib/memory.h +++ b/src/platform/imx95/include/platform/lib/memory.h @@ -10,10 +10,7 @@ #include -#define uncache_to_cache(address) address -#define cache_to_uncache(address) address #define cache_to_uncache_init(address) address -#define is_uncached(address) 0 /* no address translation required */ #define host_to_local(addr) (addr) diff --git a/src/platform/imx95/include/platform/platform.h b/src/platform/imx95/include/platform/platform.h index 296b73113bf0..91c4f00cd3fd 100644 --- a/src/platform/imx95/include/platform/platform.h +++ b/src/platform/imx95/include/platform/platform.h @@ -15,12 +15,6 @@ #define PLATFORM_PAGE_TABLE_SIZE 256 -/* TODO: generous (SOF is usually used with 2 channels at most on i.MX - * platforms) and (potentially) not true. Can be adjusted later on if - * need be. - */ -#define PLATFORM_MAX_STREAMS 5 - /* WAKEUP domain MU7 side B */ #define PLATFORM_IPC_INTERRUPT 207 diff --git a/src/platform/intel/ace/include/ace/lib/memory.h b/src/platform/intel/ace/include/ace/lib/memory.h index 3b5bfaac5492..b6d67b451feb 100644 --- a/src/platform/intel/ace/include/ace/lib/memory.h +++ b/src/platform/intel/ace/include/ace/lib/memory.h @@ -18,10 +18,6 @@ #include -#define uncache_to_cache(address) sys_cache_cached_ptr_get(address) -#define cache_to_uncache(address) sys_cache_uncached_ptr_get(address) -#define is_uncached(address) (!sys_cache_is_ptr_cached(address)) - #endif /* __ACE_LIB_MEMORY_H__ */ #else diff --git a/src/platform/intel/cavs/include/cavs/lib/memory.h b/src/platform/intel/cavs/include/cavs/lib/memory.h index 1546720af69b..1c2fd9a0b754 100644 --- a/src/platform/intel/cavs/include/cavs/lib/memory.h +++ b/src/platform/intel/cavs/include/cavs/lib/memory.h @@ -30,29 +30,6 @@ struct sof; -#define SRAM_ALIAS_BASE 0x9E000000 -#define SRAM_ALIAS_MASK 0xFF000000 -#define SRAM_ALIAS_OFFSET SRAM_UNCACHED_ALIAS - -#if !defined UNIT_TEST -static inline void __sparse_cache *uncache_to_cache(void *address) -{ - return (void __sparse_cache *)((uintptr_t)(address) | SRAM_ALIAS_OFFSET); -} - -static inline void *cache_to_uncache(void __sparse_cache *address) -{ - return (void *)((uintptr_t)(address) & ~SRAM_ALIAS_OFFSET); -} - -#define is_uncached(address) \ - (((uint32_t)(address) & SRAM_ALIAS_MASK) == SRAM_ALIAS_BASE) -#else -#define uncache_to_cache(address) address -#define cache_to_uncache(address) address -#define is_uncached(address) 0 -#endif - #if !defined UNIT_TEST && !defined __ZEPHYR__ #define cache_to_uncache_init(address) \ ((__typeof__((address)))((uint32_t)((address)) - SRAM_ALIAS_OFFSET)) diff --git a/src/platform/library/include/platform/lib/memory.h b/src/platform/library/include/platform/lib/memory.h index 4fe40783573c..512aa643e952 100644 --- a/src/platform/library/include/platform/lib/memory.h +++ b/src/platform/library/include/platform/lib/memory.h @@ -42,9 +42,6 @@ static inline void *platform_rfree_prepare(void *ptr) return ptr; } -#define uncache_to_cache(address) address -#define cache_to_uncache(address) address -#define is_uncached(address) 1 #define cache_to_uncache_init(address) address #define ARCH_OOPS_SIZE 0 diff --git a/src/platform/library/include/platform/platform.h b/src/platform/library/include/platform/platform.h index 139ca7f8ae01..3aa66b93fc13 100644 --- a/src/platform/library/include/platform/platform.h +++ b/src/platform/library/include/platform/platform.h @@ -31,9 +31,6 @@ struct timer; /* Host page size */ #define HOST_PAGE_SIZE 4096 -/* Platform stream capabilities */ -#define PLATFORM_MAX_STREAMS 16 - /* IPC page data copy timeout */ #define PLATFORM_IPC_DMA_TIMEOUT 2000 diff --git a/src/platform/lunarlake/include/platform/platform.h b/src/platform/lunarlake/include/platform/platform.h index 8ad479ebcfbb..19de9027aeb5 100644 --- a/src/platform/lunarlake/include/platform/platform.h +++ b/src/platform/lunarlake/include/platform/platform.h @@ -27,9 +27,6 @@ /* Host page size */ #define HOST_PAGE_SIZE 4096 -/* Platform stream capabilities */ -#define PLATFORM_MAX_STREAMS 16 - /* local buffer size of DMA tracing */ #define DMA_TRACE_LOCAL_SIZE (HOST_PAGE_SIZE * 2) diff --git a/src/platform/meteorlake/include/platform/platform.h b/src/platform/meteorlake/include/platform/platform.h index fc1857ac426b..b40ae2a7ef81 100644 --- a/src/platform/meteorlake/include/platform/platform.h +++ b/src/platform/meteorlake/include/platform/platform.h @@ -27,9 +27,6 @@ /* Host page size */ #define HOST_PAGE_SIZE 4096 -/* Platform stream capabilities */ -#define PLATFORM_MAX_STREAMS 16 - /* local buffer size of DMA tracing */ #define DMA_TRACE_LOCAL_SIZE (HOST_PAGE_SIZE * 2) diff --git a/src/platform/mtk/include/platform/lib/memory.h b/src/platform/mtk/include/platform/lib/memory.h index 9eb837544b94..2126af2fc0dc 100644 --- a/src/platform/mtk/include/platform/lib/memory.h +++ b/src/platform/mtk/include/platform/lib/memory.h @@ -12,9 +12,6 @@ /* Sigh, too many ways to get this wrong... */ BUILD_ASSERT(PLATFORM_DCACHE_ALIGN == XCHAL_DCACHE_LINESIZE); -#define uncache_to_cache(addr) (addr) -#define cache_to_uncache(addr) (addr) - #define host_to_local(addr) (addr) #define PLATFORM_HEAP_SYSTEM 1 diff --git a/src/platform/mtk/include/platform/platform.h b/src/platform/mtk/include/platform/platform.h index 0860281584b1..470ffca24171 100644 --- a/src/platform/mtk/include/platform/platform.h +++ b/src/platform/mtk/include/platform/platform.h @@ -7,8 +7,6 @@ #include -#define PLATFORM_MAX_STREAMS 5 - #define HOST_PAGE_SIZE 4096 #define PLATFORM_DEFAULT_CLOCK CLK_CPU(0) diff --git a/src/platform/novalake/include/platform/platform.h b/src/platform/novalake/include/platform/platform.h index d3913a2e28e5..9bf720bb84d9 100644 --- a/src/platform/novalake/include/platform/platform.h +++ b/src/platform/novalake/include/platform/platform.h @@ -27,9 +27,6 @@ /* Host page size */ #define HOST_PAGE_SIZE 4096 -/* Platform stream capabilities */ -#define PLATFORM_MAX_STREAMS 16 - /* local buffer size of DMA tracing */ #define DMA_TRACE_LOCAL_SIZE (HOST_PAGE_SIZE * 2) diff --git a/src/platform/posix/include/platform/lib/memory.h b/src/platform/posix/include/platform/lib/memory.h index 1f523f8bbe40..398eeca822c7 100644 --- a/src/platform/posix/include/platform/lib/memory.h +++ b/src/platform/posix/include/platform/lib/memory.h @@ -8,9 +8,6 @@ #include #include -#define uncache_to_cache(addr) (addr) -#define cache_to_uncache(addr) (addr) - /* * Mailbox base macros must yield byte-pointer arithmetic so that the * generic mailbox API in `sof/src/include/sof/lib/mailbox.h` diff --git a/src/platform/posix/include/platform/platform.h b/src/platform/posix/include/platform/platform.h index 9979c99535b5..896cf6140ef8 100644 --- a/src/platform/posix/include/platform/platform.h +++ b/src/platform/posix/include/platform/platform.h @@ -12,8 +12,6 @@ #define HOST_PAGE_SIZE 4096 -#define PLATFORM_MAX_STREAMS 16 - #define DMA_TRACE_PERIOD 500000 #define DMA_TRACE_RESCHEDULE_TIME 500000 diff --git a/src/platform/qemu_xtensa/include/platform/platform.h b/src/platform/qemu_xtensa/include/platform/platform.h index d7c84992bca1..08764aa47cd6 100644 --- a/src/platform/qemu_xtensa/include/platform/platform.h +++ b/src/platform/qemu_xtensa/include/platform/platform.h @@ -8,8 +8,6 @@ /* Dummy platform header for qemu_xtensa */ #define PLATFORM_CORE_COUNT 1 -#define PLATFORM_MAX_STREAMS 8 - #define HW_CFG_VERSION 0x010000 #define DMA_TRACE_LOCAL_SIZE HOST_PAGE_SIZE diff --git a/src/platform/tigerlake/include/platform/platform.h b/src/platform/tigerlake/include/platform/platform.h index f1c337b5c24e..64082d4386f2 100644 --- a/src/platform/tigerlake/include/platform/platform.h +++ b/src/platform/tigerlake/include/platform/platform.h @@ -27,9 +27,6 @@ struct timer; /* Host page size */ #define HOST_PAGE_SIZE 4096 -/* Platform stream capabilities */ -#define PLATFORM_MAX_STREAMS 16 - /* local buffer size of DMA tracing */ #define DMA_TRACE_LOCAL_SIZE (HOST_PAGE_SIZE * 2) diff --git a/src/probe/probe.c b/src/probe/probe.c index 22dafba75ac7..1b48d6d459b2 100644 --- a/src/probe/probe.c +++ b/src/probe/probe.c @@ -26,7 +26,6 @@ #include #include #include -#include #include SOF_DEFINE_REG_UUID(probe4); diff --git a/test/cmocka/src/audio/mixer/mixer_test.c b/test/cmocka/src/audio/mixer/mixer_test.c index 064997946bab..26ed18ba2c16 100644 --- a/test/cmocka/src/audio/mixer/mixer_test.c +++ b/test/cmocka/src/audio/mixer/mixer_test.c @@ -110,7 +110,7 @@ static void test_audio_mixer_copy(void **state) struct processing_module_test_data *tc = *state; struct processing_module *mod = tc->mod; struct mixer_data *md = module_get_private_data(tc->mod); - struct cir_buf_source sources_buf[PLATFORM_MAX_STREAMS]; + struct cir_buf_source sources_buf[CONFIG_PLATFORM_MAX_STREAMS]; struct cir_buf_sink sink_buf; for (src_idx = 0; src_idx < tc->num_sources; ++src_idx) { diff --git a/zephyr/include/rtos/cache.h b/zephyr/include/rtos/cache.h index a05740632563..c67279655cbb 100644 --- a/zephyr/include/rtos/cache.h +++ b/zephyr/include/rtos/cache.h @@ -44,6 +44,44 @@ /** Alignment that keeps a buffer on data cache lines of its own */ #define PLATFORM_DCACHE_ALIGN DCACHE_LINE_SIZE +/* + * Conversion between the cached and uncached aliases of an address, for + * platforms whose memory is mapped twice. Platforms without such aliases + * use the same address for both. + */ +#if defined(CONFIG_ACE) + +#define uncache_to_cache(address) sys_cache_cached_ptr_get(address) +#define cache_to_uncache(address) sys_cache_uncached_ptr_get(address) +#define is_uncached(address) (!sys_cache_is_ptr_cached(address)) + +#elif defined(CONFIG_CAVS) + +#define SRAM_ALIAS_BASE 0x9E000000 +#define SRAM_ALIAS_MASK 0xFF000000 +#define SRAM_ALIAS_OFFSET SRAM_UNCACHED_ALIAS + +static inline void __sparse_cache *uncache_to_cache(void *address) +{ + return (void __sparse_cache *)((uintptr_t)(address) | SRAM_ALIAS_OFFSET); +} + +static inline void *cache_to_uncache(void __sparse_cache *address) +{ + return (void *)((uintptr_t)(address) & ~SRAM_ALIAS_OFFSET); +} + +#define is_uncached(address) \ + (((uint32_t)(address) & SRAM_ALIAS_MASK) == SRAM_ALIAS_BASE) + +#else + +#define uncache_to_cache(address) address +#define cache_to_uncache(address) address +#define is_uncached(address) 0 + +#endif + /** * @brief Write back (flush) modified data cache lines to memory. * @param addr Starting address of the memory region to flush.