Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 4 additions & 0 deletions sound/soc/sof/pcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,10 @@ static int sof_restore_hw_params(struct snd_pcm_substream *substream,
return 0;
}

/*
* FE dai link trigger actions are always executed in non-atomic context because
* they involve IPC's.
*/
static int sof_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
{
struct snd_soc_pcm_runtime *rtd = substream->private_data;
Expand Down
13 changes: 10 additions & 3 deletions sound/soc/sof/topology.c
Original file line number Diff line number Diff line change
Expand Up @@ -2346,11 +2346,17 @@ static int sof_link_load(struct snd_soc_component *scomp, int index,
int ret = 0;

link->platform_name = "sof-audio";
link->nonatomic = true;

/* send BE configurations to DSP */
if (!link->no_pcm)
/*
* Set nonatomic property for FE dai links as their trigger action
* involves IPC's.
*/
if (!link->no_pcm) {
link->nonatomic = true;

/* nothing more to do for FE dai links */
return 0;
}

/* usually we use 1 config, but for HDA it may be 0 ATM */
if (le32_to_cpu(cfg->num_hw_configs) != 1)
Expand All @@ -2363,6 +2369,7 @@ static int sof_link_load(struct snd_soc_component *scomp, int index,
return -EINVAL;
}

/* Send BE DAI link configurations to DSP */
memset(&config, 0, sizeof(config));

/* get any common DAI tokens */
Expand Down