Skip to content

Commit 87c15c1

Browse files
committed
ASoC/soundwire: intel: simplify callbacks for params/hw_free
We don't really need to pass a substream to the callback, we only need the direction. No functionality change, only simplification to enable improve suspend with paused streams. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
1 parent bbf7116 commit 87c15c1

3 files changed

Lines changed: 11 additions & 13 deletions

File tree

drivers/soundwire/intel.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -693,15 +693,15 @@ intel_pdi_alh_configure(struct sdw_intel *sdw, struct sdw_cdns_pdi *pdi)
693693
}
694694

695695
static int intel_params_stream(struct sdw_intel *sdw,
696-
struct snd_pcm_substream *substream,
696+
int stream,
697697
struct snd_soc_dai *dai,
698698
struct snd_pcm_hw_params *hw_params,
699699
int link_id, int alh_stream_id)
700700
{
701701
struct sdw_intel_link_res *res = sdw->link_res;
702702
struct sdw_intel_stream_params_data params_data;
703703

704-
params_data.substream = substream;
704+
params_data.stream = stream; /* direction */
705705
params_data.dai = dai;
706706
params_data.hw_params = hw_params;
707707
params_data.link_id = link_id;
@@ -714,14 +714,14 @@ static int intel_params_stream(struct sdw_intel *sdw,
714714
}
715715

716716
static int intel_free_stream(struct sdw_intel *sdw,
717-
struct snd_pcm_substream *substream,
717+
int stream,
718718
struct snd_soc_dai *dai,
719719
int link_id)
720720
{
721721
struct sdw_intel_link_res *res = sdw->link_res;
722722
struct sdw_intel_stream_free_data free_data;
723723

724-
free_data.substream = substream;
724+
free_data.stream = stream; /* direction */
725725
free_data.dai = dai;
726726
free_data.link_id = link_id;
727727

@@ -851,7 +851,7 @@ static int intel_hw_params(struct snd_pcm_substream *substream,
851851
dma->hw_params = params;
852852

853853
/* Inform DSP about PDI stream number */
854-
ret = intel_params_stream(sdw, substream, dai, params,
854+
ret = intel_params_stream(sdw, substream->stream, dai, params,
855855
sdw->instance,
856856
pdi->intel_alh_id);
857857
if (ret)
@@ -923,7 +923,7 @@ static int intel_prepare(struct snd_pcm_substream *substream,
923923
sdw_cdns_config_stream(cdns, ch, dir, dma->pdi);
924924

925925
/* Inform DSP about PDI stream number */
926-
ret = intel_params_stream(sdw, substream, dai,
926+
ret = intel_params_stream(sdw, substream->stream, dai,
927927
dma->hw_params,
928928
sdw->instance,
929929
dma->pdi->intel_alh_id);
@@ -957,7 +957,7 @@ intel_hw_free(struct snd_pcm_substream *substream, struct snd_soc_dai *dai)
957957
return ret;
958958
}
959959

960-
ret = intel_free_stream(sdw, substream, dai, sdw->instance);
960+
ret = intel_free_stream(sdw, substream->stream, dai, sdw->instance);
961961
if (ret < 0) {
962962
dev_err(dai->dev, "intel_free_stream: failed %d\n", ret);
963963
return ret;

include/linux/soundwire/sdw_intel.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@
9292
* firmware.
9393
*/
9494
struct sdw_intel_stream_params_data {
95-
struct snd_pcm_substream *substream;
95+
int stream;
9696
struct snd_soc_dai *dai;
9797
struct snd_pcm_hw_params *hw_params;
9898
int link_id;
@@ -105,7 +105,7 @@ struct sdw_intel_stream_params_data {
105105
* firmware.
106106
*/
107107
struct sdw_intel_stream_free_data {
108-
struct snd_pcm_substream *substream;
108+
int stream;
109109
struct snd_soc_dai *dai;
110110
int link_id;
111111
};

sound/soc/sof/intel/hda.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -184,12 +184,11 @@ static int sdw_dai_config_ipc(struct snd_sof_dev *sdev,
184184
static int sdw_params_stream(struct device *dev,
185185
struct sdw_intel_stream_params_data *params_data)
186186
{
187-
struct snd_pcm_substream *substream = params_data->substream;
188187
struct snd_sof_dev *sdev = dev_get_drvdata(dev);
189188
struct snd_soc_dai *d = params_data->dai;
190189
struct snd_soc_dapm_widget *w;
191190

192-
w = snd_soc_dai_get_widget(d, substream->stream);
191+
w = snd_soc_dai_get_widget(d, params_data->stream);
193192

194193
return sdw_dai_config_ipc(sdev, w, params_data->link_id, params_data->alh_stream_id,
195194
d->id, true);
@@ -198,12 +197,11 @@ static int sdw_params_stream(struct device *dev,
198197
static int sdw_free_stream(struct device *dev,
199198
struct sdw_intel_stream_free_data *free_data)
200199
{
201-
struct snd_pcm_substream *substream = free_data->substream;
202200
struct snd_sof_dev *sdev = dev_get_drvdata(dev);
203201
struct snd_soc_dai *d = free_data->dai;
204202
struct snd_soc_dapm_widget *w;
205203

206-
w = snd_soc_dai_get_widget(d, substream->stream);
204+
w = snd_soc_dai_get_widget(d, free_data->stream);
207205

208206
/* send invalid stream_id */
209207
return sdw_dai_config_ipc(sdev, w, free_data->link_id, 0xFFFF, d->id, false);

0 commit comments

Comments
 (0)