Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
b520023
-- old sof-dev --
ujfalusi Nov 18, 2022
6130b7e
ASoC: SOF: sof-audio: Fix error path in sof_widget_setup_unlocked()
ujfalusi Jun 2, 2026
617da5e
ASoC: SOF: sof-client: Use event-handler mutex consistently
ujfalusi Jun 8, 2026
6c88f4d
ASoC: SOF: IPC4: fix reversed pipeline trigger priority order
ujfalusi Jun 11, 2026
d2b1e18
ASoC: SOF: ipc4-topology: Propagate change caused by NHLT data for SSP
ujfalusi Apr 29, 2025
45fce8f
ASoC: SOF: ipc4-topology: Improve playback dai copier in/out format s…
ujfalusi Apr 29, 2025
3138446
ASoC: SOF: Intel: Make sure that link and host DMA is coupled after use
ujfalusi Aug 26, 2025
f18cc6d
soundwire: stream: wait initialization_complete in sdw_stream_add_slave
bardliao May 27, 2025
7954677
ASoC: SOF: ipc4-topology: Store the params change between input/outpu…
ujfalusi Jun 3, 2025
82f6014
ASoC: SOF: ipc4-topology: Correct the process module's output lookup
ujfalusi Jun 3, 2025
e5a7f61
ASoC: SOF: add ops for msg_timeout_handler to drop failed delayed
ujfalusi Jun 23, 2025
bf56eaa
ASoC: SOF: ipc4-topology: Update the pipeline_params of prepared modules
ujfalusi Jun 30, 2025
5fec61f
ASoC: SOF: ipc4-topology: Always validate the input audio format on f…
ujfalusi May 30, 2025
d24c509
ASoC: SOF: ipc4-topology: Add debug print to sof_ipc4_host_config
ujfalusi May 6, 2026
6c43c16
ASoC: SOF: Intel: hda: Power down DSP if it is left enabled in pre_fw…
ujfalusi May 4, 2026
f7fe55a
ASoC: SOF: Intel: mtl: Power down DSP if it is left enabled in pre_fw…
ujfalusi May 7, 2026
35f7ee0
ASoC: SOF: ipc3-control: Fix heap overflow in bytes_ext put/get
ujfalusi May 12, 2026
0d4bbaf
soundwire: bus: serialize BPT/BRA transfers per bus
ujfalusi May 11, 2026
35fddcf
ASoC: SOF: Intel: Fix pipeline state transitions for aggregate DAIs
ujfalusi May 7, 2026
735afb5
-- pending patches --
ujfalusi Jun 12, 2026
3e94f31
ALSA: compress: pin card module while stream is open
ujfalusi Apr 24, 2026
f41478a
ALSA: compress: stop active streams on disconnect
ujfalusi Apr 24, 2026
8b03933
ASoC: soc-pcm: Allocate be_substream->runtime for compressed streams
ujfalusi Jan 13, 2026
7094864
ASoC: soc-compress: Implement trigger FE-BE sequencing as with normal…
ujfalusi Jan 27, 2026
a7be430
ASoC: soc-compress: Stop running dpcm on free
ujfalusi Feb 3, 2026
251300b
ASoC: SOF: compress: Rename compress ops with ipc3 prefix
ranj063 Dec 9, 2025
727ac1c
ASoC: SOF: ipc4-pcm: harden pipeline teardown races
ujfalusi Apr 24, 2026
b86c143
ASoC: SOF: sof-audio: harden recursive widget free walk
ujfalusi Apr 24, 2026
d053a71
ASoC: SOF: sof-audio: Expose a couple of functions
ranj063 Dec 9, 2025
c3550ac
ASoC: SOF: pcm: Modify the signature of a couple of PCM IPC ops
ranj063 Dec 9, 2025
fac3f54
ASoC: SOF: intel: hda-stream: Clear the current position when releasi…
ranj063 Dec 9, 2025
68aaa22
ASoC: SOF: ops: Add new platform-specific ops for compress
ranj063 Dec 9, 2025
d31ad10
ASoC: SOF: ipc4: Add definition of module data in init_ext object type
ujfalusi Jan 12, 2026
cd504c5
ASoC: SOF: ipc4-topology: Support init_ext_module_data for process mo…
ujfalusi Jan 13, 2026
ddf5014
ASoC: SOF: ipc4-pcm: Make the timestamp info usable outside of ipc4-p…
ujfalusi Jan 13, 2026
2e62e1c
ASoC: SOF: ipc4/ipc4-loader: Add SOF_INFO and CODEC_INFO to fw_config…
ujfalusi Jan 14, 2026
c383d22
ASoC: SOF: ipc4-pcm: Handle COMPR DRAIN triggers as EOS pipeline state
ujfalusi Jan 30, 2026
1044b89
ASoC: SOF: ipc4-topology: Set FAST_MODE for host copier in compr mode
ujfalusi Jan 30, 2026
1a18add
ASoC: SOF: Add support for IPC4 compressed
ujfalusi Dec 9, 2025
8ae246d
ASoC: SOF: ipc4: Handle compressed drain done notification from firmware
ujfalusi Jan 30, 2026
4d3ecb6
ASoC: SOF: Intel: Kconfig: Remove redundant IPC version selects
ujfalusi Dec 31, 2025
3b62d89
ASoC: SOF: Intel: Kconfig: Select compress support for TGL+ platforms
ujfalusi Dec 31, 2025
ed84cf0
ASoC: SOF: topology: Add support for decoder and encoder widgets
ranj063 Dec 12, 2025
276f9b7
-- compress up to this point --
ujfalusi Apr 24, 2026
7341428
-- SOF multi-component from here --
ujfalusi Jun 1, 2026
f36f7ca
ASoC: SOF: switch to snd_sof_component_get_sdev()
ujfalusi May 28, 2026
e126258
ASoC: SOF: pass component to PCM DSP callbacks
ujfalusi May 28, 2026
42629d3
ASoC: SOF: pass component to compress DSP callbacks
ujfalusi May 28, 2026
73237a7
ASoC: SOF: remove unused component pointer from sdev
ujfalusi May 29, 2026
a7d7817
ASoC: SOF: add audio instance bookkeeping
ujfalusi May 29, 2026
21acafb
ASoC: SOF: move pipeline_list to audio instance
ujfalusi May 29, 2026
76f0812
ASoC: SOF: move dai_list to audio instance
ujfalusi May 29, 2026
143ac82
ASoC: SOF: move dai_link_list to audio instance
ujfalusi May 29, 2026
ddceac4
ASoC: SOF: move route_list to audio instance
ujfalusi May 29, 2026
304ab24
ASoC: SOF: move pcm_list to audio instance
ujfalusi May 29, 2026
a207717
ASoC: SOF: move kcontrol_list to audio instance
ujfalusi May 29, 2026
34f330d
ASoC: SOF: move widget_list to audio instance
ujfalusi May 29, 2026
17f197e
ASoC: SOF: introduce struct sof_audio_ops
ujfalusi Jun 2, 2026
8f14ad9
ASoC: SOF: Intel: populate sof_audio_ops per platform
ujfalusi Jun 2, 2026
9c407a9
ASoC: SOF: AMD: populate sof_audio_ops per platform
ujfalusi Jun 2, 2026
b5a69c7
ASoC: SOF: i.MX: populate sof_audio_ops per platform
ujfalusi Jun 2, 2026
dabf361
ASoC: SOF: MediaTek: populate sof_audio_ops per platform
ujfalusi Jun 2, 2026
dfc93b5
ASoC: SOF: switch audio dispatch to sof_audio_ops
ujfalusi Jun 2, 2026
1f236f8
ASoC: SOF: Intel: remove audio ops from snd_sof_dsp_ops instances
ujfalusi Jun 2, 2026
3785ef4
ASoC: SOF: AMD: remove audio ops from snd_sof_dsp_ops instances
ujfalusi Jun 2, 2026
22ca17e
ASoC: SOF: i.MX: remove audio ops from snd_sof_dsp_ops instances
ujfalusi Jun 2, 2026
a83b361
ASoC: SOF: MediaTek: remove audio ops from snd_sof_dsp_ops instances
ujfalusi Jun 2, 2026
bdc480c
ASoC: SOF: remove audio ops from struct snd_sof_dsp_ops
ujfalusi Jun 2, 2026
922503e
ASoC: SOF: sof-client: add dspless mode and num_cores accessors
ujfalusi Jun 3, 2026
55757af
ASoC: SOF: pass component_driver to snd_sof_new_platform_drv()
ujfalusi Jun 3, 2026
cdd7cd6
ASoC: SOF: sof-client: add machine register/unregister API
ujfalusi Jun 3, 2026
79ec121
ASoC: SOF: use component/widget device for component-scoped log messages
ujfalusi Jun 12, 2026
63c0c08
ASoC: SOF: register audio as a sof-client auxiliary device
ujfalusi Jun 3, 2026
80c6665
ASoC: SOF: move audio client registration to vendor ops
ujfalusi Jun 3, 2026
bdb8287
ASoC: SOF: Register audio component on the auxiliary device
ujfalusi Jun 3, 2026
e49e233
ASoC: Intel: sof-function-topology-lib: skip unsupported DAI links
ujfalusi Jun 3, 2026
6186cb5
ASoC: core: scope CPU DAI override to component-owned DAIs
ujfalusi Jun 3, 2026
cc75c5e
ASoC: Intel: sof_sdw: add multi-card support
ujfalusi Jun 9, 2026
3ef4c73
ASoC: sdw_utils: add dai_type_mask filtering for multi-card support
ujfalusi Jun 4, 2026
3e74fdd
ASoC: SOF: topology: skip feature topologies without matching BE DAI …
ujfalusi Jun 5, 2026
95a3072
ASoC: SOF: Intel: HDA: add multi-card audio client registration
ujfalusi Jun 3, 2026
ac06cdf
ASoC: Intel: skl_hda_dsp_generic: use mach params for card setup
ujfalusi Jun 9, 2026
4d87433
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
20 changes: 18 additions & 2 deletions drivers/soundwire/bus.c
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,8 @@ int sdw_bus_master_add(struct sdw_bus *bus, struct device *parent,
lockdep_register_key(&bus->bus_lock_key);
__mutex_init(&bus->bus_lock, "bus_lock", &bus->bus_lock_key);

mutex_init(&bus->bpt_lock);

INIT_LIST_HEAD(&bus->slaves);
INIT_LIST_HEAD(&bus->m_rt_list);

Expand Down Expand Up @@ -2094,6 +2096,7 @@ EXPORT_SYMBOL(sdw_clear_slave_status);
int sdw_bpt_send_async(struct sdw_bus *bus, struct sdw_slave *slave, struct sdw_bpt_msg *msg)
{
int len = 0;
int ret;
int i;

for (i = 0; i < msg->sections; i++)
Expand All @@ -2118,13 +2121,26 @@ int sdw_bpt_send_async(struct sdw_bus *bus, struct sdw_slave *slave, struct sdw_
return -EOPNOTSUPP;
}

return bus->ops->bpt_send_async(bus, slave, msg);
/* Serialize BPT/BRA transfers per bus: PDIs and DMA resources are shared */
mutex_lock(&bus->bpt_lock);

ret = bus->ops->bpt_send_async(bus, slave, msg);
if (ret < 0)
mutex_unlock(&bus->bpt_lock);

/* on success the lock is held until sdw_bpt_wait() */
return ret;
}
EXPORT_SYMBOL(sdw_bpt_send_async);

int sdw_bpt_wait(struct sdw_bus *bus, struct sdw_slave *slave, struct sdw_bpt_msg *msg)
{
return bus->ops->bpt_wait(bus, slave, msg);
int ret;

ret = bus->ops->bpt_wait(bus, slave, msg);
mutex_unlock(&bus->bpt_lock);

return ret;
}
EXPORT_SYMBOL(sdw_bpt_wait);

Expand Down
12 changes: 12 additions & 0 deletions drivers/soundwire/stream.c
Original file line number Diff line number Diff line change
Expand Up @@ -2124,6 +2124,8 @@ int sdw_stream_remove_master(struct sdw_bus *bus,
}
EXPORT_SYMBOL(sdw_stream_remove_master);

#define CODEC_INIT_TIMEOUT 500

/**
* sdw_stream_add_slave() - Allocate and add master/slave runtime to a stream
*
Expand All @@ -2147,9 +2149,19 @@ int sdw_stream_add_slave(struct sdw_slave *slave,
struct sdw_master_runtime *m_rt;
bool alloc_master_rt = false;
bool alloc_slave_rt = false;
unsigned long time;

int ret;

time = wait_for_completion_timeout(&slave->initialization_complete,
msecs_to_jiffies(CODEC_INIT_TIMEOUT));
if (!time) {
dev_err(&slave->dev, "%s: Initialization not complete, timed out\n", __func__);
sdw_show_ping_status(slave->bus, true);

return -ETIMEDOUT;
}

mutex_lock(&slave->bus->bus_lock);

/*
Expand Down
1 change: 1 addition & 0 deletions include/linux/soundwire/sdw.h
Original file line number Diff line number Diff line change
Expand Up @@ -1044,6 +1044,7 @@ struct sdw_bus {
int stream_refcount;
int bpt_stream_refcount;
struct sdw_stream_runtime *bpt_stream;
struct mutex bpt_lock; /* serialize BPT/BRA transfers per bus */
const struct sdw_master_ops *ops;
const struct sdw_master_port_ops *port_ops;
struct sdw_master_prop prop;
Expand Down
2 changes: 2 additions & 0 deletions include/sound/compress_driver.h
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@ struct snd_compr_ops {
* @card: sound card pointer
* @direction: Playback or capture direction
* @lock: device lock
* @open_list: list of open compress files
* @device: device id
* @use_pause_in_draining: allow pause in draining, true when set
*/
Expand All @@ -199,6 +200,7 @@ struct snd_compr {
struct snd_card *card;
unsigned int direction;
struct mutex lock;
struct list_head open_list;
int device;
bool use_pause_in_draining;
#ifdef CONFIG_SND_VERBOSE_PROCFS
Expand Down
2 changes: 2 additions & 0 deletions include/sound/soc-acpi.h
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,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
2 changes: 2 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 @@ -171,6 +172,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
24 changes: 16 additions & 8 deletions include/sound/sof/ipc4/header.h
Original file line number Diff line number Diff line change
Expand Up @@ -433,12 +433,10 @@ enum sof_ipc4_fw_config_params {
SOF_IPC4_FW_CFG_RESERVED,
SOF_IPC4_FW_CFG_POWER_GATING_POLICY,
SOF_IPC4_FW_CFG_ASSERT_MODE,
SOF_IPC4_FW_RESERVED1,
SOF_IPC4_FW_RESERVED2,
SOF_IPC4_FW_RESERVED3,
SOF_IPC4_FW_RESERVED4,
SOF_IPC4_FW_RESERVED5,
SOF_IPC4_FW_CONTEXT_SAVE
/* Reserved: 24 - 28 */
SOF_IPC4_FW_CONTEXT_SAVE = 29,
/* Reserved: 30 - 34 */
SOF_IPC4_FW_CFG_SOF_INFO = 35,
};

struct sof_ipc4_fw_version {
Expand All @@ -448,6 +446,14 @@ struct sof_ipc4_fw_version {
uint16_t build;
} __packed;

/*
* tuple based array for SOF specific information under SOF_IPC4_FW_CFG_SOF_INFO
* tuple of fw_config
*/
enum ipc4_fw_sof_info_params {
SOF_IPC4_SOF_CODEC_INFO,
};

/* Payload data for SOF_IPC4_MOD_SET_DX */
struct sof_ipc4_dx_state_info {
/* core(s) to apply the change */
Expand Down Expand Up @@ -616,9 +622,10 @@ struct sof_ipc4_notify_module_data {
* The event_data contains the struct sof_ipc4_control_msg_payload of the control
* which sent the notification.
*/
#define SOF_IPC4_NOTIFY_MODULE_EVENTID_ALSA_MAGIC_MASK GENMASK(31, 16)
#define SOF_IPC4_NOTIFY_MODULE_EVENTID_SOF_MAGIC_MASK GENMASK(31, 16)
#define SOF_IPC4_NOTIFY_MODULE_EVENTID_ALSA_MAGIC_VAL 0xA15A0000
#define SOF_IPC4_NOTIFY_MODULE_EVENTID_ALSA_PARAMID_MASK GENMASK(15, 0)
#define SOF_IPC4_NOTIFY_MODULE_EVENTID_COMPR_MAGIC_VAL 0xC0C00000

/*
* Macros for creating struct sof_ipc4_module_init_ext_init payload
Expand Down Expand Up @@ -681,7 +688,8 @@ struct sof_ipc4_module_init_ext_object {
enum sof_ipc4_mod_init_ext_obj_id {
SOF_IPC4_MOD_INIT_DATA_ID_INVALID = 0,
SOF_IPC4_MOD_INIT_DATA_ID_DP_DATA,
SOF_IPC4_MOD_INIT_DATA_ID_MAX = SOF_IPC4_MOD_INIT_DATA_ID_DP_DATA,
SOF_IPC4_MOD_INIT_DATA_ID_MODULE_DATA,
SOF_IPC4_MOD_INIT_DATA_ID_MAX = SOF_IPC4_MOD_INIT_DATA_ID_MODULE_DATA,
};

/* DP module memory configuration data object for ext_init object array */
Expand Down
77 changes: 58 additions & 19 deletions sound/core/compress_offload.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
#endif

struct snd_compr_file {
struct list_head list;
unsigned long caps;
struct snd_compr_stream stream;
};
Expand Down Expand Up @@ -75,11 +76,11 @@ static inline void snd_compr_task_free_all(struct snd_compr_stream *stream) { }
static int snd_compr_open(struct inode *inode, struct file *f)
{
struct snd_compr *compr;
struct snd_compr_file *data;
struct snd_compr_runtime *runtime;
struct snd_compr_file *data = NULL;
struct snd_compr_runtime *runtime = NULL;
enum snd_compr_direction dirn;
int maj = imajor(inode);
int ret;
int ret = 0;

if ((f->f_flags & O_ACCMODE) == O_WRONLY)
dirn = SND_COMPRESS_PLAYBACK;
Expand All @@ -101,17 +102,23 @@ static int snd_compr_open(struct inode *inode, struct file *f)
return -ENODEV;
}

if (!try_module_get(compr->card->module)) {
snd_card_unref(compr->card);
return -EFAULT;
}

if (dirn != compr->direction) {
pr_err("this device doesn't support this direction\n");
snd_card_unref(compr->card);
return -EINVAL;
ret = -EINVAL;
goto __error;
}

data = kzalloc(sizeof(*data), GFP_KERNEL);
if (!data) {
snd_card_unref(compr->card);
return -ENOMEM;
ret = -ENOMEM;
goto __error;
}
INIT_LIST_HEAD(&data->list);

INIT_DELAYED_WORK(&data->stream.error_work, error_delayed_work);

Expand All @@ -121,9 +128,8 @@ static int snd_compr_open(struct inode *inode, struct file *f)
data->stream.device = compr;
runtime = kzalloc(sizeof(*runtime), GFP_KERNEL);
if (!runtime) {
kfree(data);
snd_card_unref(compr->card);
return -ENOMEM;
ret = -ENOMEM;
goto __error;
}
runtime->state = SNDRV_PCM_STATE_OPEN;
init_waitqueue_head(&runtime->sleep);
Expand All @@ -132,11 +138,17 @@ static int snd_compr_open(struct inode *inode, struct file *f)
#endif
data->stream.runtime = runtime;
f->private_data = (void *)data;
scoped_guard(mutex, &compr->lock)
scoped_guard(mutex, &compr->lock) {
ret = compr->ops->open(&data->stream);
if (!ret)
list_add_tail(&data->list, &compr->open_list);
}

__error:
if (ret) {
kfree(runtime);
kfree(data);
module_put(compr->card->module);
}
snd_card_unref(compr->card);
return ret;
Expand All @@ -146,24 +158,31 @@ static int snd_compr_free(struct inode *inode, struct file *f)
{
struct snd_compr_file *data = f->private_data;
struct snd_compr_runtime *runtime = data->stream.runtime;
struct snd_compr *compr = data->stream.device;

cancel_delayed_work_sync(&data->stream.error_work);

switch (runtime->state) {
case SNDRV_PCM_STATE_RUNNING:
case SNDRV_PCM_STATE_DRAINING:
case SNDRV_PCM_STATE_PAUSED:
data->stream.ops->trigger(&data->stream, SNDRV_PCM_TRIGGER_STOP);
break;
default:
break;
scoped_guard(mutex, &compr->lock) {
if (!list_empty(&data->list))
list_del_init(&data->list);

switch (runtime->state) {
case SNDRV_PCM_STATE_RUNNING:
case SNDRV_PCM_STATE_DRAINING:
case SNDRV_PCM_STATE_PAUSED:
data->stream.ops->trigger(&data->stream, SNDRV_PCM_TRIGGER_STOP);
break;
default:
break;
}
}

snd_compr_task_free_all(&data->stream);

data->stream.ops->free(&data->stream);
if (!data->stream.runtime->dma_buffer_p)
kfree(data->stream.runtime->buffer);
module_put(data->stream.device->card->module);
kfree(data->stream.runtime);
kfree(data);
return 0;
Expand Down Expand Up @@ -1427,8 +1446,27 @@ static int snd_compress_dev_register(struct snd_device *device)
static int snd_compress_dev_disconnect(struct snd_device *device)
{
struct snd_compr *compr;
struct snd_compr_file *data;

compr = device->device_data;
scoped_guard(mutex, &compr->lock) {
list_for_each_entry(data, &compr->open_list, list) {
switch (data->stream.runtime->state) {
case SNDRV_PCM_STATE_RUNNING:
case SNDRV_PCM_STATE_DRAINING:
case SNDRV_PCM_STATE_PAUSED:
data->stream.ops->trigger(&data->stream,
SNDRV_PCM_TRIGGER_STOP);
break;
default:
break;
}

data->stream.runtime->state = SNDRV_PCM_STATE_DISCONNECTED;
wake_up(&data->stream.runtime->sleep);
}
}

snd_unregister_device(compr->dev);
return 0;
}
Expand Down Expand Up @@ -1536,6 +1574,7 @@ int snd_compress_new(struct snd_card *card, int device,
compr->device = device;
compr->direction = dirn;
mutex_init(&compr->lock);
INIT_LIST_HEAD(&compr->open_list);

snd_compress_set_id(compr, id);

Expand Down
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 @@ -1482,7 +1482,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 @@ -46,6 +46,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 = sscanf(mach->sof_tplg_filename, "sof-%3s-*.tplg", platform);
if (ret != 1) {
dev_err(card->dev, "Invalid platform name %s of tplg %s\n",
Expand Down Expand Up @@ -101,10 +106,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