Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
9cbb30c
ASoC: SOF: sof-client: Use event-handler mutex consistently
ujfalusi Jun 8, 2026
a0e18c7
ASoC: SOF: ipc4-topology: Propagate change caused by NHLT data for SSP
ujfalusi Apr 29, 2025
abadd7b
ASoC: SOF: ipc4-topology: Improve playback dai copier in/out format s…
ujfalusi Apr 29, 2025
150822c
ASoC: SOF: ipc4-topology: Add debug print to sof_ipc4_host_config
ujfalusi May 6, 2026
57a3678
ASoC: SOF: ipc3-control: Reject ABI data size larger than the TLV pay…
ujfalusi May 12, 2026
80f11aa
ASoC: SOF: Intel: Fix pipeline state transitions for aggregate DAIs
ujfalusi May 7, 2026
d18646a
-- SOF multi-component from here --
ujfalusi Jun 1, 2026
055bf08
ASoC: SOF: sof-client: dispatch events via per-client ops
ujfalusi Jul 23, 2026
cd58027
ASoC: SOF: ipc4: Call sof_client_ipc_rx_dispatcher() for notifications
ujfalusi Jul 17, 2026
a609540
ASoC: SOF: rename snd_sof_dsp_only_d0i3_compatible_stream_active()
ujfalusi Jul 24, 2026
3f3ae85
ASoC: SOF: sof-client: add D0i3 compatibility vote
ujfalusi Jul 24, 2026
d888aa2
ASoC: SOF: Move snd_sof_mailbox to the public SOF header
ujfalusi Jul 24, 2026
cf32b43
ASoC: SOF: sof-client: add sof_client_get_mailbox() accessor
ujfalusi Jul 24, 2026
df0990e
ASoC: SOF: sof-client: add dspless mode and num_cores accessors
ujfalusi Jun 3, 2026
ad4c6c5
ASoC: SOF: sof-client: add sof_client_get_ipc4_fw_data() accessor
ujfalusi Jul 24, 2026
99c5073
ASoC: SOF: topology: assign kcontrol comp_id from its widget
ujfalusi Jul 24, 2026
91b9f8b
ASoC: SOF: make next_comp_id atomic
ujfalusi Jul 24, 2026
d03ecdc
ASoC: SOF: sof-client: add sof_client_get_new_comp_id() accessor
ujfalusi Jul 24, 2026
48e6fe4
ASoC: SOF: sof-client: add sof_client_is_suspend_target_s0ix() accessor
ujfalusi Jul 27, 2026
a058979
ASoC: SOF: sof-client: add sof_client_get_topology_name() accessor
ujfalusi Jul 27, 2026
11f16d5
ASoC: SOF: sof-client: add sof_client_get_topology_prefix() accessor
ujfalusi Jul 27, 2026
604a7e5
ASoC: SOF: sof-client: add function topology disable accessor
ujfalusi Jul 27, 2026
1f473cd
ASoC: SOF: sof-client: add sof_client_get_machine() accessor
ujfalusi Jul 27, 2026
8a64a4c
ASoC: SOF: sof-client: add SSP MCLK ID quirk accessor
ujfalusi Jul 27, 2026
de610cf
ASoC: SOF: switch to snd_sof_component_get_sdev()
ujfalusi May 28, 2026
7d67797
ASoC: SOF: pass component to PCM DSP callbacks
ujfalusi May 28, 2026
27aabb4
ASoC: SOF: pass component to compress DSP callbacks
ujfalusi May 28, 2026
ae21487
ASoC: SOF: use component/widget device for component-scoped log messages
ujfalusi Jun 12, 2026
bd331e6
ASoC: SOF: ipc4: pass component to pipeline state helper
ujfalusi Jul 17, 2026
d9eb6a4
ASoC: SOF: remove unused component pointer from sdev
ujfalusi May 29, 2026
8e0b4ae
ASoC: SOF: add audio instance bookkeeping
ujfalusi May 29, 2026
aa5f0d3
ASoC: SOF: move pipeline_list to audio instance
ujfalusi May 29, 2026
bd0ae30
ASoC: SOF: move dai_list to audio instance
ujfalusi May 29, 2026
a7d9d1a
ASoC: SOF: move dai_link_list to audio instance
ujfalusi May 29, 2026
6bc47b1
ASoC: SOF: move route_list to audio instance
ujfalusi May 29, 2026
b2a6ec0
ASoC: SOF: move pcm_list to audio instance
ujfalusi May 29, 2026
fa03f09
ASoC: SOF: move kcontrol_list to audio instance
ujfalusi May 29, 2026
a617c9d
ASoC: SOF: move widget_list to audio instance
ujfalusi May 29, 2026
2f5323f
ASoC: SOF: move led_present to audio instance
ujfalusi Jul 27, 2026
b1b4c8d
ASoC: SOF: pass component to widget list management
ujfalusi Jul 24, 2026
01c7733
ASoC: SOF: introduce struct sof_audio_ops
ujfalusi Jun 2, 2026
0f0235a
ASoC: SOF: audio: move PCM/tplg ops to audio instance
ujfalusi Jul 17, 2026
58384fd
ASoC: SOF: topology: drop unused sdev from sof_set_widget_pipeline()
ujfalusi Jul 24, 2026
c826248
ASoC: SOF: ipc4-topology: use component device and drop sdev passing
ujfalusi Jul 24, 2026
fb9abd4
ASoC: SOF: Intel: populate sof_audio_ops per platform
ujfalusi Jun 2, 2026
891d1f7
ASoC: SOF: AMD: populate sof_audio_ops per platform
ujfalusi Jun 2, 2026
0521d45
ASoC: SOF: i.MX: populate sof_audio_ops per platform
ujfalusi Jun 2, 2026
5163ebe
ASoC: SOF: MediaTek: populate sof_audio_ops per platform
ujfalusi Jun 2, 2026
e243ea7
ASoC: SOF: switch audio dispatch to sof_audio_ops
ujfalusi Jun 2, 2026
dd6494c
ASoC: SOF: Intel: remove audio ops from snd_sof_dsp_ops instances
ujfalusi Jun 2, 2026
e08d312
ASoC: SOF: AMD: remove audio ops from snd_sof_dsp_ops instances
ujfalusi Jun 2, 2026
f132027
ASoC: SOF: i.MX: remove audio ops from snd_sof_dsp_ops instances
ujfalusi Jun 2, 2026
ba66fb2
ASoC: SOF: MediaTek: remove audio ops from snd_sof_dsp_ops instances
ujfalusi Jun 2, 2026
8a0d909
ASoC: SOF: remove audio ops from struct snd_sof_dsp_ops
ujfalusi Jun 2, 2026
04b83ea
ASoC: SOF: pass component_driver to snd_sof_new_platform_drv()
ujfalusi Jun 3, 2026
65f3382
ASoC: SOF: sof-client: add machine register/unregister API
ujfalusi Jun 3, 2026
74e86dc
ASoC: SOF: register audio as a sof-client auxiliary device
ujfalusi Jun 3, 2026
df68683
ASoC: SOF: move audio client registration to vendor ops
ujfalusi Jun 3, 2026
12e87a2
ASoC: soc-acpi: add card_name to snd_soc_acpi_mach_params
ujfalusi Jul 27, 2026
70cc9e0
ASoC: SOF: Register audio component on the auxiliary device
ujfalusi Jun 3, 2026
4272beb
ASoC: SOF: topology: use sof_client IPC wrappers
ujfalusi Jul 16, 2026
8aa474c
ASoC: SOF: pcm: use sof_client IPC wrappers
ujfalusi Jul 17, 2026
9aa0e13
ASoC: SOF: ipc3-compress: use sof_client IPC wrappers
ujfalusi Jul 17, 2026
2282421
ASoC: SOF: ipc3-topology: use sof_client_get_ssp_mclk_id_quirk()
ujfalusi Jul 27, 2026
c807112
ASoC: SOF: pcm: use sof_client_is_suspend_target_s0ix()
ujfalusi Jul 27, 2026
a5c6fae
ASoC: SOF: Set up the topology pipelines per audio instance
ujfalusi Jul 28, 2026
1a1401d
ASoC: SOF: Tear down the topology pipelines from the audio client
ujfalusi Jul 28, 2026
bae2813
ASoC: SOF: Restore the topology pipelines from the audio client resume
ujfalusi Jul 28, 2026
dfef606
ASoC: SOF: Move the IPC4 module notification handling to the audio cl…
ujfalusi Jul 28, 2026
03d247e
ASoC: SOF: Move the IPC3 component notification handling to the audio…
ujfalusi Jul 28, 2026
fab8e30
ASoC: SOF: Move the IPC3 stream notification handling to the audio cl…
ujfalusi Jul 28, 2026
0d6c027
ASoC: SOF: Scope the control update and drain done notifications
ujfalusi Jul 29, 2026
da08d6e
ASoC: SOF: move the stream counter callbacks to sof_audio_ops
ujfalusi Jul 31, 2026
2fa2878
ASoC: SOF: Move the audio instance PM handling to the audio client
ujfalusi Aug 3, 2026
30a7983
ASoC: SOF: Build the ASoC component driver in the audio client
ujfalusi Aug 3, 2026
c152f92
ASoC: SOF: Look up IPC4 module names via a client callback
ujfalusi Aug 3, 2026
62f768d
ASoC: SOF: Protect the client ops list with SRCU
ujfalusi Aug 3, 2026
bd69fc0
ASoC: SOF: Restore the audio instance pipelines from the audio client
ujfalusi Aug 3, 2026
a23a12f
ASoC: SOF: Let the clients ask for the DSP to be kept in D0
ujfalusi Aug 4, 2026
c479cb6
ASoC: SOF: audio: Remove the unused sdev level ops getters
ujfalusi Aug 4, 2026
a0f6054
ASoC: SOF: Pass the SOF PCM to the platform pcm_pointer callback
ujfalusi Aug 4, 2026
62d3f94
ASoC: SOF: Intel: hda: Drop the unused PCM lookup in hda_dsp_compr_op…
ujfalusi Aug 4, 2026
c082522
ASoC: SOF: Pass the SOF PCM to the platform pcm_open callback
ujfalusi Aug 4, 2026
c7794e7
ASoC: SOF: ipc4: Move sof_ipc4_set_pipeline_state() to ipc4.c
ujfalusi Aug 4, 2026
8bf51fd
ASoC: SOF: Turn the D0i3 compatibility check into a client vote
ujfalusi Aug 4, 2026
2e71e4c
ASoC: SOF: Notify the clients about elapsed periods
ujfalusi Aug 4, 2026
5b4d478
ASoC: SOF: Reach the audio instance directly from the component
ujfalusi Aug 6, 2026
4c2040d
ASoC: SOF: Drop the audio instance list of the SOF device
ujfalusi Aug 6, 2026
2c1b3c5
ASoC: SOF: Build the audio objects into the snd-sof-audio module
ujfalusi Aug 6, 2026
83694e8
ASoC: SOF: Move the audio tracepoints to a trace header of their own
ujfalusi Aug 6, 2026
496ae8d
ASoC: SOF: Drop the exports which became module internal
ujfalusi Aug 6, 2026
b75b901
-- multi-card from here --
ujfalusi Aug 7, 2026
d55dd08
ASoC: core: scope CPU DAI override to component-owned DAIs
ujfalusi Jun 3, 2026
d6ef747
ASoC: Intel: sof-function-topology-lib: skip unsupported DAI links
ujfalusi Jun 3, 2026
2bce5a4
ASoC: SOF: topology: skip feature topologies without matching BE DAI …
ujfalusi Jun 5, 2026
7521f10
ASoC: Intel: sof_sdw: add multi-card support
ujfalusi Jun 9, 2026
7836b44
ASoC: sdw_utils: add dai_type_mask filtering for multi-card support
ujfalusi Jun 4, 2026
0ebd3ce
ASoC: SOF: Intel: HDA: add multi-card audio client registration
ujfalusi Jun 3, 2026
fe4752b
ASoC: Intel: skl_hda_dsp_generic: use mach params for card setup
ujfalusi Jun 9, 2026
22fc861
ASoC: SOF: Intel: hda: add split_hdmi audio-client mode
ujfalusi Jun 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions include/sound/soc-acpi.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,9 @@ static inline struct snd_soc_acpi_mach *snd_soc_acpi_codec_list(void *arg)
* @subsystem_id_set: true if a value has been written to
* subsystem_vendor and subsystem_device.
* @bt_link_mask: BT offload link enabled on the board
* @card_name: optional card name to be used by the machine driver
* @dai_type_mask: optional mask of the DAI types the machine driver is
* restricted to, all DAI types are used when it is not set
*/
struct snd_soc_acpi_mach_params {
u32 acpi_ipc_irq_index;
Expand All @@ -90,6 +93,8 @@ struct snd_soc_acpi_mach_params {
unsigned short subsystem_rev;
bool subsystem_id_set;
u32 bt_link_mask;
const char *card_name;
u32 dai_type_mask;
};

/**
Expand Down
18 changes: 18 additions & 0 deletions include/sound/sof.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

struct snd_sof_dsp_ops;
struct snd_sof_dev;
struct sof_audio_ops;

/**
* enum sof_fw_state - DSP firmware state definitions
Expand Down Expand Up @@ -57,6 +58,22 @@ enum sof_ipc_type {
SOF_IPC_TYPE_COUNT
};

/* mailbox descriptor, used for host <-> DSP IPC */
struct snd_sof_mailbox {
size_t size;
u32 offset;
};

/* DSP mailbox types */
enum snd_sof_mailbox_type {
SOF_MAILBOX_FW_INFO,
SOF_MAILBOX_DSP,
SOF_MAILBOX_HOST,
SOF_MAILBOX_STREAM,
SOF_MAILBOX_DEBUG,
SOF_MAILBOX_COUNT
};

struct sof_loadable_file_profile {
enum sof_ipc_type ipc_type;

Expand Down Expand Up @@ -171,6 +188,7 @@ struct sof_dev_desc {
const char *default_fw_filename[SOF_IPC_TYPE_COUNT];

const struct snd_sof_dsp_ops *ops;
const struct sof_audio_ops *audio_ops;
int (*ops_init)(struct snd_sof_dev *sdev);
void (*ops_free)(struct snd_sof_dev *sdev);
};
Expand Down
74 changes: 1 addition & 73 deletions include/trace/events/sof.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,79 +12,7 @@
#define _TRACE_SOF_H
#include <linux/tracepoint.h>
#include <linux/types.h>
#include <sound/sof/stream.h>
#include "../../../sound/soc/sof/sof-audio.h"

DECLARE_EVENT_CLASS(sof_widget_template,
TP_PROTO(struct snd_sof_widget *swidget),
TP_ARGS(swidget),
TP_STRUCT__entry(
__string(name, swidget->widget->name)
__field(int, use_count)
),
TP_fast_assign(
__assign_str(name);
__entry->use_count = swidget->use_count;
),
TP_printk("name=%s use_count=%d", __get_str(name), __entry->use_count)
);

DEFINE_EVENT(sof_widget_template, sof_widget_setup,
TP_PROTO(struct snd_sof_widget *swidget),
TP_ARGS(swidget)
);

DEFINE_EVENT(sof_widget_template, sof_widget_free,
TP_PROTO(struct snd_sof_widget *swidget),
TP_ARGS(swidget)
);

TRACE_EVENT(sof_ipc3_period_elapsed_position,
TP_PROTO(struct snd_sof_dev *sdev, struct sof_ipc_stream_posn *posn),
TP_ARGS(sdev, posn),
TP_STRUCT__entry(
__string(device_name, dev_name(sdev->dev))
__field(u64, host_posn)
__field(u64, dai_posn)
__field(u64, wallclock)
),
TP_fast_assign(
__assign_str(device_name);
__entry->host_posn = posn->host_posn;
__entry->dai_posn = posn->dai_posn;
__entry->wallclock = posn->wallclock;
),
TP_printk("device_name=%s host_posn=%#llx dai_posn=%#llx wallclock=%#llx",
__get_str(device_name), __entry->host_posn, __entry->dai_posn,
__entry->wallclock)
);

TRACE_EVENT(sof_pcm_pointer_position,
TP_PROTO(struct snd_sof_dev *sdev,
struct snd_sof_pcm *spcm,
struct snd_pcm_substream *substream,
snd_pcm_uframes_t dma_posn,
snd_pcm_uframes_t dai_posn
),
TP_ARGS(sdev, spcm, substream, dma_posn, dai_posn),
TP_STRUCT__entry(
__string(device_name, dev_name(sdev->dev))
__field(u32, pcm_id)
__field(int, stream)
__field(unsigned long, dma_posn)
__field(unsigned long, dai_posn)
),
TP_fast_assign(
__assign_str(device_name);
__entry->pcm_id = le32_to_cpu(spcm->pcm.pcm_id);
__entry->stream = substream->stream;
__entry->dma_posn = dma_posn;
__entry->dai_posn = dai_posn;
),
TP_printk("device_name=%s pcm_id=%d stream=%d dma_posn=%lu dai_posn=%lu",
__get_str(device_name), __entry->pcm_id, __entry->stream,
__entry->dma_posn, __entry->dai_posn)
);
#include "../../../sound/soc/sof/sof-priv.h"

TRACE_EVENT(sof_stream_position_ipc_rx,
TP_PROTO(struct device *dev),
Expand Down
94 changes: 94 additions & 0 deletions include/trace/events/sof_audio.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright(c) 2022 Intel Corporation
*
* Author: Noah Klayman <noah.klayman@intel.com>
*/

#undef TRACE_SYSTEM
#define TRACE_SYSTEM sof

#if !defined(_TRACE_SOF_AUDIO_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_SOF_AUDIO_H
#include <linux/tracepoint.h>
#include <linux/types.h>
#include <sound/sof/stream.h>
#include "../../../sound/soc/sof/sof-audio.h"

DECLARE_EVENT_CLASS(sof_widget_template,
TP_PROTO(struct snd_sof_widget *swidget),
TP_ARGS(swidget),
TP_STRUCT__entry(
__string(name, swidget->widget->name)
__field(int, use_count)
),
TP_fast_assign(
__assign_str(name);
__entry->use_count = swidget->use_count;
),
TP_printk("name=%s use_count=%d", __get_str(name), __entry->use_count)
);

DEFINE_EVENT(sof_widget_template, sof_widget_setup,
TP_PROTO(struct snd_sof_widget *swidget),
TP_ARGS(swidget)
);

DEFINE_EVENT(sof_widget_template, sof_widget_free,
TP_PROTO(struct snd_sof_widget *swidget),
TP_ARGS(swidget)
);

TRACE_EVENT(sof_ipc3_period_elapsed_position,
TP_PROTO(struct snd_sof_dev *sdev, struct sof_ipc_stream_posn *posn),
TP_ARGS(sdev, posn),
TP_STRUCT__entry(
__string(device_name, dev_name(sdev->dev))
__field(u64, host_posn)
__field(u64, dai_posn)
__field(u64, wallclock)
),
TP_fast_assign(
__assign_str(device_name);
__entry->host_posn = posn->host_posn;
__entry->dai_posn = posn->dai_posn;
__entry->wallclock = posn->wallclock;
),
TP_printk("device_name=%s host_posn=%#llx dai_posn=%#llx wallclock=%#llx",
__get_str(device_name), __entry->host_posn, __entry->dai_posn,
__entry->wallclock)
);

TRACE_EVENT(sof_pcm_pointer_position,
TP_PROTO(struct snd_sof_dev *sdev,
struct snd_sof_pcm *spcm,
struct snd_pcm_substream *substream,
snd_pcm_uframes_t dma_posn,
snd_pcm_uframes_t dai_posn
),
TP_ARGS(sdev, spcm, substream, dma_posn, dai_posn),
TP_STRUCT__entry(
__string(device_name, dev_name(sdev->dev))
__field(u32, pcm_id)
__field(int, stream)
__field(unsigned long, dma_posn)
__field(unsigned long, dai_posn)
),
TP_fast_assign(
__assign_str(device_name);
__entry->pcm_id = le32_to_cpu(spcm->pcm.pcm_id);
__entry->stream = substream->stream;
__entry->dma_posn = dma_posn;
__entry->dai_posn = dai_posn;
),
TP_printk("device_name=%s pcm_id=%d stream=%d dma_posn=%lu dai_posn=%lu",
__get_str(device_name), __entry->pcm_id, __entry->stream,
__entry->dma_posn, __entry->dai_posn)
);

#endif /* _TRACE_SOF_AUDIO_H */

/* This part must be outside protection */
#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_FILE sof_audio
#include <trace/define_trace.h>
5 changes: 4 additions & 1 deletion sound/soc/intel/boards/skl_hda_dsp_generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,8 @@ static int skl_hda_audio_probe(struct platform_device *pdev)
if (!card)
return -ENOMEM;

card->name = "hda-dsp";
card->name = mach->mach_params.card_name ?
mach->mach_params.card_name : "hda-dsp";
card->owner = THIS_MODULE;
card->fully_routed = true;
card->late_probe = skl_hda_card_late_probe;
Expand All @@ -128,6 +129,8 @@ static int skl_hda_audio_probe(struct platform_device *pdev)
if (mach->mach_params.codec_mask & IDISP_CODEC_MASK)
ctx->hdmi.idisp_codec = true;

ctx->dmic_be_num = mach->mach_params.dmic_num;

ctx->link_order_overwrite = HDA_LINK_ORDER;
ctx->link_id_overwrite = HDA_LINK_IDS;

Expand Down
3 changes: 2 additions & 1 deletion sound/soc/intel/boards/sof_sdw.c
Original file line number Diff line number Diff line change
Expand Up @@ -1485,7 +1485,8 @@ static int mc_probe(struct platform_device *pdev)
ctx->codec_info_list_count = asoc_sdw_get_codec_info_list_count();
card = &ctx->card;
card->dev = &pdev->dev;
card->name = "soundwire";
card->name = mach->mach_params.card_name ?
mach->mach_params.card_name : "soundwire";
card->owner = THIS_MODULE;
card->late_probe = sof_sdw_card_late_probe;
card->add_dai_link = sof_sdw_add_dai_link;
Expand Down
10 changes: 6 additions & 4 deletions sound/soc/intel/common/sof-function-topology-lib.c
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,11 @@ int sof_sdw_get_tplg_files(struct snd_soc_card *card, const struct snd_soc_acpi_
int ret;
int i;

if (!mach || !mach->sof_tplg_filename) {
dev_err(card->dev, "Missing base topology filename for function topology\n");
return -EINVAL;
}

ret = get_platform_name(card, mach, platform);
if (ret < 0)
return ret;
Expand Down Expand Up @@ -228,10 +233,7 @@ int sof_sdw_get_tplg_files(struct snd_soc_card *card, const struct snd_soc_acpi_
dev_dbg(card->dev,
"dai_link %s is not supported by separated tplg yet\n",
dai_link->name);
if (best_effort)
continue;

return 0;
continue;
}
if (tplg_mask & BIT(tplg_dev))
continue;
Expand Down
Loading
Loading