Commit 8a8f944f authored by Mark Brown's avatar Mark Brown

ASoC: SoundWire codecs: simplify/fix set_stream

Merge series from Bard Liao <yung-chuan.liao@linux.intel.com>:

Simplify set_stream in SoundWire codecs.
parents 24e9e57f b3a2e00e
...@@ -152,9 +152,6 @@ static int cs42l42_sdw_port_prep(struct sdw_slave *slave, ...@@ -152,9 +152,6 @@ static int cs42l42_sdw_port_prep(struct sdw_slave *slave,
static int cs42l42_sdw_dai_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, static int cs42l42_sdw_dai_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
int direction) int direction)
{ {
if (!sdw_stream)
return 0;
snd_soc_dai_dma_data_set(dai, direction, sdw_stream); snd_soc_dai_dma_data_set(dai, direction, sdw_stream);
return 0; return 0;
......
...@@ -20,10 +20,6 @@ ...@@ -20,10 +20,6 @@
#include "max98373.h" #include "max98373.h"
#include "max98373-sdw.h" #include "max98373-sdw.h"
struct sdw_stream_data {
struct sdw_stream_runtime *sdw_stream;
};
static const u32 max98373_sdw_cache_reg[] = { static const u32 max98373_sdw_cache_reg[] = {
MAX98373_R2054_MEAS_ADC_PVDD_CH_READBACK, MAX98373_R2054_MEAS_ADC_PVDD_CH_READBACK,
MAX98373_R2055_MEAS_ADC_THERM_CH_READBACK, MAX98373_R2055_MEAS_ADC_THERM_CH_READBACK,
...@@ -536,12 +532,12 @@ static int max98373_sdw_dai_hw_params(struct snd_pcm_substream *substream, ...@@ -536,12 +532,12 @@ static int max98373_sdw_dai_hw_params(struct snd_pcm_substream *substream,
snd_soc_component_get_drvdata(component); snd_soc_component_get_drvdata(component);
struct sdw_stream_config stream_config = {0}; struct sdw_stream_config stream_config = {0};
struct sdw_port_config port_config = {0}; struct sdw_port_config port_config = {0};
struct sdw_stream_data *stream; struct sdw_stream_runtime *sdw_stream;
int ret, chan_sz, sampling_rate; int ret, chan_sz, sampling_rate;
stream = snd_soc_dai_get_dma_data(dai, substream); sdw_stream = snd_soc_dai_get_dma_data(dai, substream);
if (!stream) if (!sdw_stream)
return -EINVAL; return -EINVAL;
if (!max98373->slave) if (!max98373->slave)
...@@ -565,7 +561,7 @@ static int max98373_sdw_dai_hw_params(struct snd_pcm_substream *substream, ...@@ -565,7 +561,7 @@ static int max98373_sdw_dai_hw_params(struct snd_pcm_substream *substream,
} }
ret = sdw_stream_add_slave(max98373->slave, &stream_config, ret = sdw_stream_add_slave(max98373->slave, &stream_config,
&port_config, 1, stream->sdw_stream); &port_config, 1, sdw_stream);
if (ret) { if (ret) {
dev_err(dai->dev, "Unable to configure port\n"); dev_err(dai->dev, "Unable to configure port\n");
return ret; return ret;
...@@ -664,32 +660,20 @@ static int max98373_pcm_hw_free(struct snd_pcm_substream *substream, ...@@ -664,32 +660,20 @@ static int max98373_pcm_hw_free(struct snd_pcm_substream *substream,
struct snd_soc_component *component = dai->component; struct snd_soc_component *component = dai->component;
struct max98373_priv *max98373 = struct max98373_priv *max98373 =
snd_soc_component_get_drvdata(component); snd_soc_component_get_drvdata(component);
struct sdw_stream_data *stream = struct sdw_stream_runtime *sdw_stream =
snd_soc_dai_get_dma_data(dai, substream); snd_soc_dai_get_dma_data(dai, substream);
if (!max98373->slave) if (!max98373->slave)
return -EINVAL; return -EINVAL;
sdw_stream_remove_slave(max98373->slave, stream->sdw_stream); sdw_stream_remove_slave(max98373->slave, sdw_stream);
return 0; return 0;
} }
static int max98373_set_sdw_stream(struct snd_soc_dai *dai, static int max98373_set_sdw_stream(struct snd_soc_dai *dai,
void *sdw_stream, int direction) void *sdw_stream, int direction)
{ {
struct sdw_stream_data *stream; snd_soc_dai_dma_data_set(dai, direction, sdw_stream);
if (!sdw_stream)
return 0;
stream = kzalloc(sizeof(*stream), GFP_KERNEL);
if (!stream)
return -ENOMEM;
stream->sdw_stream = sdw_stream;
/* Use tx_mask or rx_mask to configure stream tag and set dma_data */
snd_soc_dai_dma_data_set(dai, direction, stream);
return 0; return 0;
} }
...@@ -697,11 +681,7 @@ static int max98373_set_sdw_stream(struct snd_soc_dai *dai, ...@@ -697,11 +681,7 @@ static int max98373_set_sdw_stream(struct snd_soc_dai *dai,
static void max98373_shutdown(struct snd_pcm_substream *substream, static void max98373_shutdown(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai) struct snd_soc_dai *dai)
{ {
struct sdw_stream_data *stream;
stream = snd_soc_dai_get_dma_data(dai, substream);
snd_soc_dai_set_dma_data(dai, substream, NULL); snd_soc_dai_set_dma_data(dai, substream, NULL);
kfree(stream);
} }
static int max98373_sdw_set_tdm_slot(struct snd_soc_dai *dai, static int max98373_sdw_set_tdm_slot(struct snd_soc_dai *dai,
......
...@@ -496,19 +496,7 @@ static const struct snd_soc_dapm_route rt1308_dapm_routes[] = { ...@@ -496,19 +496,7 @@ static const struct snd_soc_dapm_route rt1308_dapm_routes[] = {
static int rt1308_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, static int rt1308_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
int direction) int direction)
{ {
struct sdw_stream_data *stream; snd_soc_dai_dma_data_set(dai, direction, sdw_stream);
if (!sdw_stream)
return 0;
stream = kzalloc(sizeof(*stream), GFP_KERNEL);
if (!stream)
return -ENOMEM;
stream->sdw_stream = sdw_stream;
/* Use tx_mask or rx_mask to configure stream tag and set dma_data */
snd_soc_dai_dma_data_set(dai, direction, stream);
return 0; return 0;
} }
...@@ -516,11 +504,7 @@ static int rt1308_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, ...@@ -516,11 +504,7 @@ static int rt1308_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
static void rt1308_sdw_shutdown(struct snd_pcm_substream *substream, static void rt1308_sdw_shutdown(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai) struct snd_soc_dai *dai)
{ {
struct sdw_stream_data *stream;
stream = snd_soc_dai_get_dma_data(dai, substream);
snd_soc_dai_set_dma_data(dai, substream, NULL); snd_soc_dai_set_dma_data(dai, substream, NULL);
kfree(stream);
} }
static int rt1308_sdw_set_tdm_slot(struct snd_soc_dai *dai, static int rt1308_sdw_set_tdm_slot(struct snd_soc_dai *dai,
...@@ -553,13 +537,13 @@ static int rt1308_sdw_hw_params(struct snd_pcm_substream *substream, ...@@ -553,13 +537,13 @@ static int rt1308_sdw_hw_params(struct snd_pcm_substream *substream,
snd_soc_component_get_drvdata(component); snd_soc_component_get_drvdata(component);
struct sdw_stream_config stream_config = {0}; struct sdw_stream_config stream_config = {0};
struct sdw_port_config port_config = {0}; struct sdw_port_config port_config = {0};
struct sdw_stream_data *stream; struct sdw_stream_runtime *sdw_stream;
int retval; int retval;
dev_dbg(dai->dev, "%s %s", __func__, dai->name); dev_dbg(dai->dev, "%s %s", __func__, dai->name);
stream = snd_soc_dai_get_dma_data(dai, substream); sdw_stream = snd_soc_dai_get_dma_data(dai, substream);
if (!stream) if (!sdw_stream)
return -EINVAL; return -EINVAL;
if (!rt1308->sdw_slave) if (!rt1308->sdw_slave)
...@@ -580,7 +564,7 @@ static int rt1308_sdw_hw_params(struct snd_pcm_substream *substream, ...@@ -580,7 +564,7 @@ static int rt1308_sdw_hw_params(struct snd_pcm_substream *substream,
} }
retval = sdw_stream_add_slave(rt1308->sdw_slave, &stream_config, retval = sdw_stream_add_slave(rt1308->sdw_slave, &stream_config,
&port_config, 1, stream->sdw_stream); &port_config, 1, sdw_stream);
if (retval) { if (retval) {
dev_err(dai->dev, "Unable to configure port\n"); dev_err(dai->dev, "Unable to configure port\n");
return retval; return retval;
...@@ -595,13 +579,13 @@ static int rt1308_sdw_pcm_hw_free(struct snd_pcm_substream *substream, ...@@ -595,13 +579,13 @@ static int rt1308_sdw_pcm_hw_free(struct snd_pcm_substream *substream,
struct snd_soc_component *component = dai->component; struct snd_soc_component *component = dai->component;
struct rt1308_sdw_priv *rt1308 = struct rt1308_sdw_priv *rt1308 =
snd_soc_component_get_drvdata(component); snd_soc_component_get_drvdata(component);
struct sdw_stream_data *stream = struct sdw_stream_runtime *sdw_stream =
snd_soc_dai_get_dma_data(dai, substream); snd_soc_dai_get_dma_data(dai, substream);
if (!rt1308->sdw_slave) if (!rt1308->sdw_slave)
return -EINVAL; return -EINVAL;
sdw_stream_remove_slave(rt1308->sdw_slave, stream->sdw_stream); sdw_stream_remove_slave(rt1308->sdw_slave, sdw_stream);
return 0; return 0;
} }
......
...@@ -170,8 +170,4 @@ struct rt1308_sdw_priv { ...@@ -170,8 +170,4 @@ struct rt1308_sdw_priv {
unsigned int bq_params_cnt; unsigned int bq_params_cnt;
}; };
struct sdw_stream_data {
struct sdw_stream_runtime *sdw_stream;
};
#endif /* __RT1308_SDW_H__ */ #endif /* __RT1308_SDW_H__ */
...@@ -494,19 +494,7 @@ static const struct snd_soc_dapm_route rt1316_dapm_routes[] = { ...@@ -494,19 +494,7 @@ static const struct snd_soc_dapm_route rt1316_dapm_routes[] = {
static int rt1316_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, static int rt1316_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
int direction) int direction)
{ {
struct sdw_stream_data *stream; snd_soc_dai_dma_data_set(dai, direction, sdw_stream);
if (!sdw_stream)
return 0;
stream = kzalloc(sizeof(*stream), GFP_KERNEL);
if (!stream)
return -ENOMEM;
stream->sdw_stream = sdw_stream;
/* Use tx_mask or rx_mask to configure stream tag and set dma_data */
snd_soc_dai_dma_data_set(dai, direction, stream);
return 0; return 0;
} }
...@@ -514,11 +502,7 @@ static int rt1316_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, ...@@ -514,11 +502,7 @@ static int rt1316_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
static void rt1316_sdw_shutdown(struct snd_pcm_substream *substream, static void rt1316_sdw_shutdown(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai) struct snd_soc_dai *dai)
{ {
struct sdw_stream_data *stream;
stream = snd_soc_dai_get_dma_data(dai, substream);
snd_soc_dai_set_dma_data(dai, substream, NULL); snd_soc_dai_set_dma_data(dai, substream, NULL);
kfree(stream);
} }
static int rt1316_sdw_hw_params(struct snd_pcm_substream *substream, static int rt1316_sdw_hw_params(struct snd_pcm_substream *substream,
...@@ -529,13 +513,13 @@ static int rt1316_sdw_hw_params(struct snd_pcm_substream *substream, ...@@ -529,13 +513,13 @@ static int rt1316_sdw_hw_params(struct snd_pcm_substream *substream,
snd_soc_component_get_drvdata(component); snd_soc_component_get_drvdata(component);
struct sdw_stream_config stream_config = {0}; struct sdw_stream_config stream_config = {0};
struct sdw_port_config port_config = {0}; struct sdw_port_config port_config = {0};
struct sdw_stream_data *stream; struct sdw_stream_runtime *sdw_stream;
int retval; int retval;
dev_dbg(dai->dev, "%s %s", __func__, dai->name); dev_dbg(dai->dev, "%s %s", __func__, dai->name);
stream = snd_soc_dai_get_dma_data(dai, substream); sdw_stream = snd_soc_dai_get_dma_data(dai, substream);
if (!stream) if (!sdw_stream)
return -EINVAL; return -EINVAL;
if (!rt1316->sdw_slave) if (!rt1316->sdw_slave)
...@@ -551,7 +535,7 @@ static int rt1316_sdw_hw_params(struct snd_pcm_substream *substream, ...@@ -551,7 +535,7 @@ static int rt1316_sdw_hw_params(struct snd_pcm_substream *substream,
port_config.num = 2; port_config.num = 2;
retval = sdw_stream_add_slave(rt1316->sdw_slave, &stream_config, retval = sdw_stream_add_slave(rt1316->sdw_slave, &stream_config,
&port_config, 1, stream->sdw_stream); &port_config, 1, sdw_stream);
if (retval) { if (retval) {
dev_err(dai->dev, "Unable to configure port\n"); dev_err(dai->dev, "Unable to configure port\n");
return retval; return retval;
...@@ -566,13 +550,13 @@ static int rt1316_sdw_pcm_hw_free(struct snd_pcm_substream *substream, ...@@ -566,13 +550,13 @@ static int rt1316_sdw_pcm_hw_free(struct snd_pcm_substream *substream,
struct snd_soc_component *component = dai->component; struct snd_soc_component *component = dai->component;
struct rt1316_sdw_priv *rt1316 = struct rt1316_sdw_priv *rt1316 =
snd_soc_component_get_drvdata(component); snd_soc_component_get_drvdata(component);
struct sdw_stream_data *stream = struct sdw_stream_runtime *sdw_stream =
snd_soc_dai_get_dma_data(dai, substream); snd_soc_dai_get_dma_data(dai, substream);
if (!rt1316->sdw_slave) if (!rt1316->sdw_slave)
return -EINVAL; return -EINVAL;
sdw_stream_remove_slave(rt1316->sdw_slave, stream->sdw_stream); sdw_stream_remove_slave(rt1316->sdw_slave, sdw_stream);
return 0; return 0;
} }
......
...@@ -50,8 +50,4 @@ struct rt1316_sdw_priv { ...@@ -50,8 +50,4 @@ struct rt1316_sdw_priv {
unsigned int bq_params_cnt; unsigned int bq_params_cnt;
}; };
struct sdw_stream_data {
struct sdw_stream_runtime *sdw_stream;
};
#endif /* __RT1316_SDW_H__ */ #endif /* __RT1316_SDW_H__ */
...@@ -562,19 +562,7 @@ static const struct snd_soc_dapm_route rt1318_dapm_routes[] = { ...@@ -562,19 +562,7 @@ static const struct snd_soc_dapm_route rt1318_dapm_routes[] = {
static int rt1318_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, static int rt1318_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
int direction) int direction)
{ {
struct sdw_stream_data *stream; snd_soc_dai_dma_data_set(dai, direction, sdw_stream);
if (!sdw_stream)
return 0;
stream = kzalloc(sizeof(*stream), GFP_KERNEL);
if (!stream)
return -ENOMEM;
stream->sdw_stream = sdw_stream;
/* Use tx_mask or rx_mask to configure stream tag and set dma_data */
snd_soc_dai_dma_data_set(dai, direction, stream);
return 0; return 0;
} }
...@@ -582,11 +570,7 @@ static int rt1318_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, ...@@ -582,11 +570,7 @@ static int rt1318_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
static void rt1318_sdw_shutdown(struct snd_pcm_substream *substream, static void rt1318_sdw_shutdown(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai) struct snd_soc_dai *dai)
{ {
struct sdw_stream_data *stream;
stream = snd_soc_dai_get_dma_data(dai, substream);
snd_soc_dai_set_dma_data(dai, substream, NULL); snd_soc_dai_set_dma_data(dai, substream, NULL);
kfree(stream);
} }
static int rt1318_sdw_hw_params(struct snd_pcm_substream *substream, static int rt1318_sdw_hw_params(struct snd_pcm_substream *substream,
...@@ -598,14 +582,14 @@ static int rt1318_sdw_hw_params(struct snd_pcm_substream *substream, ...@@ -598,14 +582,14 @@ static int rt1318_sdw_hw_params(struct snd_pcm_substream *substream,
struct sdw_stream_config stream_config; struct sdw_stream_config stream_config;
struct sdw_port_config port_config; struct sdw_port_config port_config;
enum sdw_data_direction direction; enum sdw_data_direction direction;
struct sdw_stream_data *stream; struct sdw_stream_runtime *sdw_stream;
int retval, port, num_channels, ch_mask; int retval, port, num_channels, ch_mask;
unsigned int sampling_rate; unsigned int sampling_rate;
dev_dbg(dai->dev, "%s %s", __func__, dai->name); dev_dbg(dai->dev, "%s %s", __func__, dai->name);
stream = snd_soc_dai_get_dma_data(dai, substream); sdw_stream = snd_soc_dai_get_dma_data(dai, substream);
if (!stream) if (!sdw_stream)
return -EINVAL; return -EINVAL;
if (!rt1318->sdw_slave) if (!rt1318->sdw_slave)
...@@ -633,7 +617,7 @@ static int rt1318_sdw_hw_params(struct snd_pcm_substream *substream, ...@@ -633,7 +617,7 @@ static int rt1318_sdw_hw_params(struct snd_pcm_substream *substream,
port_config.num = port; port_config.num = port;
retval = sdw_stream_add_slave(rt1318->sdw_slave, &stream_config, retval = sdw_stream_add_slave(rt1318->sdw_slave, &stream_config,
&port_config, 1, stream->sdw_stream); &port_config, 1, sdw_stream);
if (retval) { if (retval) {
dev_err(dai->dev, "Unable to configure port\n"); dev_err(dai->dev, "Unable to configure port\n");
return retval; return retval;
...@@ -679,13 +663,13 @@ static int rt1318_sdw_pcm_hw_free(struct snd_pcm_substream *substream, ...@@ -679,13 +663,13 @@ static int rt1318_sdw_pcm_hw_free(struct snd_pcm_substream *substream,
struct snd_soc_component *component = dai->component; struct snd_soc_component *component = dai->component;
struct rt1318_sdw_priv *rt1318 = struct rt1318_sdw_priv *rt1318 =
snd_soc_component_get_drvdata(component); snd_soc_component_get_drvdata(component);
struct sdw_stream_data *stream = struct sdw_stream_runtime *sdw_stream =
snd_soc_dai_get_dma_data(dai, substream); snd_soc_dai_get_dma_data(dai, substream);
if (!rt1318->sdw_slave) if (!rt1318->sdw_slave)
return -EINVAL; return -EINVAL;
sdw_stream_remove_slave(rt1318->sdw_slave, stream->sdw_stream); sdw_stream_remove_slave(rt1318->sdw_slave, sdw_stream);
return 0; return 0;
} }
......
...@@ -94,8 +94,4 @@ struct rt1318_sdw_priv { ...@@ -94,8 +94,4 @@ struct rt1318_sdw_priv {
bool first_hw_init; bool first_hw_init;
}; };
struct sdw_stream_data {
struct sdw_stream_runtime *sdw_stream;
};
#endif /* __RT1318_SDW_H__ */ #endif /* __RT1318_SDW_H__ */
...@@ -88,26 +88,10 @@ static const struct regmap_config rt5682_sdw_indirect_regmap = { ...@@ -88,26 +88,10 @@ static const struct regmap_config rt5682_sdw_indirect_regmap = {
.reg_write = rt5682_sdw_write, .reg_write = rt5682_sdw_write,
}; };
struct sdw_stream_data {
struct sdw_stream_runtime *sdw_stream;
};
static int rt5682_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, static int rt5682_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
int direction) int direction)
{ {
struct sdw_stream_data *stream; snd_soc_dai_dma_data_set(dai, direction, sdw_stream);
if (!sdw_stream)
return 0;
stream = kzalloc(sizeof(*stream), GFP_KERNEL);
if (!stream)
return -ENOMEM;
stream->sdw_stream = sdw_stream;
/* Use tx_mask or rx_mask to configure stream tag and set dma_data */
snd_soc_dai_dma_data_set(dai, direction, stream);
return 0; return 0;
} }
...@@ -115,11 +99,7 @@ static int rt5682_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, ...@@ -115,11 +99,7 @@ static int rt5682_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
static void rt5682_sdw_shutdown(struct snd_pcm_substream *substream, static void rt5682_sdw_shutdown(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai) struct snd_soc_dai *dai)
{ {
struct sdw_stream_data *stream;
stream = snd_soc_dai_get_dma_data(dai, substream);
snd_soc_dai_set_dma_data(dai, substream, NULL); snd_soc_dai_set_dma_data(dai, substream, NULL);
kfree(stream);
} }
static int rt5682_sdw_hw_params(struct snd_pcm_substream *substream, static int rt5682_sdw_hw_params(struct snd_pcm_substream *substream,
...@@ -130,14 +110,14 @@ static int rt5682_sdw_hw_params(struct snd_pcm_substream *substream, ...@@ -130,14 +110,14 @@ static int rt5682_sdw_hw_params(struct snd_pcm_substream *substream,
struct rt5682_priv *rt5682 = snd_soc_component_get_drvdata(component); struct rt5682_priv *rt5682 = snd_soc_component_get_drvdata(component);
struct sdw_stream_config stream_config = {0}; struct sdw_stream_config stream_config = {0};
struct sdw_port_config port_config = {0}; struct sdw_port_config port_config = {0};
struct sdw_stream_data *stream; struct sdw_stream_runtime *sdw_stream;
int retval; int retval;
unsigned int val_p = 0, val_c = 0, osr_p = 0, osr_c = 0; unsigned int val_p = 0, val_c = 0, osr_p = 0, osr_c = 0;
dev_dbg(dai->dev, "%s %s", __func__, dai->name); dev_dbg(dai->dev, "%s %s", __func__, dai->name);
stream = snd_soc_dai_get_dma_data(dai, substream); sdw_stream = snd_soc_dai_get_dma_data(dai, substream);
if (!stream) if (!sdw_stream)
return -ENOMEM; return -ENOMEM;
if (!rt5682->slave) if (!rt5682->slave)
...@@ -152,7 +132,7 @@ static int rt5682_sdw_hw_params(struct snd_pcm_substream *substream, ...@@ -152,7 +132,7 @@ static int rt5682_sdw_hw_params(struct snd_pcm_substream *substream,
port_config.num = 2; port_config.num = 2;
retval = sdw_stream_add_slave(rt5682->slave, &stream_config, retval = sdw_stream_add_slave(rt5682->slave, &stream_config,
&port_config, 1, stream->sdw_stream); &port_config, 1, sdw_stream);
if (retval) { if (retval) {
dev_err(dai->dev, "Unable to configure port\n"); dev_err(dai->dev, "Unable to configure port\n");
return retval; return retval;
...@@ -246,13 +226,13 @@ static int rt5682_sdw_hw_free(struct snd_pcm_substream *substream, ...@@ -246,13 +226,13 @@ static int rt5682_sdw_hw_free(struct snd_pcm_substream *substream,
{ {
struct snd_soc_component *component = dai->component; struct snd_soc_component *component = dai->component;
struct rt5682_priv *rt5682 = snd_soc_component_get_drvdata(component); struct rt5682_priv *rt5682 = snd_soc_component_get_drvdata(component);
struct sdw_stream_data *stream = struct sdw_stream_runtime *sdw_stream =
snd_soc_dai_get_dma_data(dai, substream); snd_soc_dai_get_dma_data(dai, substream);
if (!rt5682->slave) if (!rt5682->slave)
return -EINVAL; return -EINVAL;
sdw_stream_remove_slave(rt5682->slave, stream->sdw_stream); sdw_stream_remove_slave(rt5682->slave, sdw_stream);
return 0; return 0;
} }
......
...@@ -875,19 +875,7 @@ static const struct snd_soc_component_driver soc_codec_dev_rt700 = { ...@@ -875,19 +875,7 @@ static const struct snd_soc_component_driver soc_codec_dev_rt700 = {
static int rt700_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, static int rt700_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
int direction) int direction)
{ {
struct sdw_stream_data *stream; snd_soc_dai_dma_data_set(dai, direction, sdw_stream);
if (!sdw_stream)
return 0;
stream = kzalloc(sizeof(*stream), GFP_KERNEL);
if (!stream)
return -ENOMEM;
stream->sdw_stream = sdw_stream;
/* Use tx_mask or rx_mask to configure stream tag and set dma_data */
snd_soc_dai_dma_data_set(dai, direction, stream);
return 0; return 0;
} }
...@@ -895,11 +883,7 @@ static int rt700_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, ...@@ -895,11 +883,7 @@ static int rt700_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
static void rt700_shutdown(struct snd_pcm_substream *substream, static void rt700_shutdown(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai) struct snd_soc_dai *dai)
{ {
struct sdw_stream_data *stream;
stream = snd_soc_dai_get_dma_data(dai, substream);
snd_soc_dai_set_dma_data(dai, substream, NULL); snd_soc_dai_set_dma_data(dai, substream, NULL);
kfree(stream);
} }
static int rt700_pcm_hw_params(struct snd_pcm_substream *substream, static int rt700_pcm_hw_params(struct snd_pcm_substream *substream,
...@@ -910,14 +894,14 @@ static int rt700_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -910,14 +894,14 @@ static int rt700_pcm_hw_params(struct snd_pcm_substream *substream,
struct rt700_priv *rt700 = snd_soc_component_get_drvdata(component); struct rt700_priv *rt700 = snd_soc_component_get_drvdata(component);
struct sdw_stream_config stream_config = {0}; struct sdw_stream_config stream_config = {0};
struct sdw_port_config port_config = {0}; struct sdw_port_config port_config = {0};
struct sdw_stream_data *stream; struct sdw_stream_runtime *sdw_stream;
int retval; int retval;
unsigned int val = 0; unsigned int val = 0;
dev_dbg(dai->dev, "%s %s", __func__, dai->name); dev_dbg(dai->dev, "%s %s", __func__, dai->name);
stream = snd_soc_dai_get_dma_data(dai, substream); sdw_stream = snd_soc_dai_get_dma_data(dai, substream);
if (!stream) if (!sdw_stream)
return -EINVAL; return -EINVAL;
if (!rt700->slave) if (!rt700->slave)
...@@ -944,7 +928,7 @@ static int rt700_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -944,7 +928,7 @@ static int rt700_pcm_hw_params(struct snd_pcm_substream *substream,
} }
retval = sdw_stream_add_slave(rt700->slave, &stream_config, retval = sdw_stream_add_slave(rt700->slave, &stream_config,
&port_config, 1, stream->sdw_stream); &port_config, 1, sdw_stream);
if (retval) { if (retval) {
dev_err(dai->dev, "Unable to configure port\n"); dev_err(dai->dev, "Unable to configure port\n");
return retval; return retval;
...@@ -991,13 +975,13 @@ static int rt700_pcm_hw_free(struct snd_pcm_substream *substream, ...@@ -991,13 +975,13 @@ static int rt700_pcm_hw_free(struct snd_pcm_substream *substream,
{ {
struct snd_soc_component *component = dai->component; struct snd_soc_component *component = dai->component;
struct rt700_priv *rt700 = snd_soc_component_get_drvdata(component); struct rt700_priv *rt700 = snd_soc_component_get_drvdata(component);
struct sdw_stream_data *stream = struct sdw_stream_runtime *sdw_stream =
snd_soc_dai_get_dma_data(dai, substream); snd_soc_dai_get_dma_data(dai, substream);
if (!rt700->slave) if (!rt700->slave)
return -EINVAL; return -EINVAL;
sdw_stream_remove_slave(rt700->slave, stream->sdw_stream); sdw_stream_remove_slave(rt700->slave, sdw_stream);
return 0; return 0;
} }
......
...@@ -27,10 +27,6 @@ struct rt700_priv { ...@@ -27,10 +27,6 @@ struct rt700_priv {
bool disable_irq; bool disable_irq;
}; };
struct sdw_stream_data {
struct sdw_stream_runtime *sdw_stream;
};
/* NID */ /* NID */
#define RT700_AUDIO_FUNCTION_GROUP 0x01 #define RT700_AUDIO_FUNCTION_GROUP 0x01
#define RT700_DAC_OUT1 0x02 #define RT700_DAC_OUT1 0x02
......
...@@ -1237,19 +1237,7 @@ static const struct snd_soc_component_driver soc_sdca_dev_rt711 = { ...@@ -1237,19 +1237,7 @@ static const struct snd_soc_component_driver soc_sdca_dev_rt711 = {
static int rt711_sdca_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, static int rt711_sdca_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
int direction) int direction)
{ {
struct sdw_stream_data *stream; snd_soc_dai_dma_data_set(dai, direction, sdw_stream);
if (!sdw_stream)
return 0;
stream = kzalloc(sizeof(*stream), GFP_KERNEL);
if (!stream)
return -ENOMEM;
stream->sdw_stream = sdw_stream;
/* Use tx_mask or rx_mask to configure stream tag and set dma_data */
snd_soc_dai_dma_data_set(dai, direction, stream);
return 0; return 0;
} }
...@@ -1257,11 +1245,7 @@ static int rt711_sdca_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, ...@@ -1257,11 +1245,7 @@ static int rt711_sdca_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
static void rt711_sdca_shutdown(struct snd_pcm_substream *substream, static void rt711_sdca_shutdown(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai) struct snd_soc_dai *dai)
{ {
struct sdw_stream_data *stream;
stream = snd_soc_dai_get_dma_data(dai, substream);
snd_soc_dai_set_dma_data(dai, substream, NULL); snd_soc_dai_set_dma_data(dai, substream, NULL);
kfree(stream);
} }
static int rt711_sdca_pcm_hw_params(struct snd_pcm_substream *substream, static int rt711_sdca_pcm_hw_params(struct snd_pcm_substream *substream,
...@@ -1272,14 +1256,14 @@ static int rt711_sdca_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -1272,14 +1256,14 @@ static int rt711_sdca_pcm_hw_params(struct snd_pcm_substream *substream,
struct rt711_sdca_priv *rt711 = snd_soc_component_get_drvdata(component); struct rt711_sdca_priv *rt711 = snd_soc_component_get_drvdata(component);
struct sdw_stream_config stream_config = {0}; struct sdw_stream_config stream_config = {0};
struct sdw_port_config port_config = {0}; struct sdw_port_config port_config = {0};
struct sdw_stream_data *stream; struct sdw_stream_runtime *sdw_stream;
int retval; int retval;
unsigned int sampling_rate; unsigned int sampling_rate;
dev_dbg(dai->dev, "%s %s", __func__, dai->name); dev_dbg(dai->dev, "%s %s", __func__, dai->name);
stream = snd_soc_dai_get_dma_data(dai, substream); sdw_stream = snd_soc_dai_get_dma_data(dai, substream);
if (!stream) if (!sdw_stream)
return -EINVAL; return -EINVAL;
if (!rt711->slave) if (!rt711->slave)
...@@ -1300,7 +1284,7 @@ static int rt711_sdca_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -1300,7 +1284,7 @@ static int rt711_sdca_pcm_hw_params(struct snd_pcm_substream *substream,
} }
retval = sdw_stream_add_slave(rt711->slave, &stream_config, retval = sdw_stream_add_slave(rt711->slave, &stream_config,
&port_config, 1, stream->sdw_stream); &port_config, 1, sdw_stream);
if (retval) { if (retval) {
dev_err(dai->dev, "Unable to configure port\n"); dev_err(dai->dev, "Unable to configure port\n");
return retval; return retval;
...@@ -1351,13 +1335,13 @@ static int rt711_sdca_pcm_hw_free(struct snd_pcm_substream *substream, ...@@ -1351,13 +1335,13 @@ static int rt711_sdca_pcm_hw_free(struct snd_pcm_substream *substream,
{ {
struct snd_soc_component *component = dai->component; struct snd_soc_component *component = dai->component;
struct rt711_sdca_priv *rt711 = snd_soc_component_get_drvdata(component); struct rt711_sdca_priv *rt711 = snd_soc_component_get_drvdata(component);
struct sdw_stream_data *stream = struct sdw_stream_runtime *sdw_stream =
snd_soc_dai_get_dma_data(dai, substream); snd_soc_dai_get_dma_data(dai, substream);
if (!rt711->slave) if (!rt711->slave)
return -EINVAL; return -EINVAL;
sdw_stream_remove_slave(rt711->slave, stream->sdw_stream); sdw_stream_remove_slave(rt711->slave, sdw_stream);
return 0; return 0;
} }
......
...@@ -36,10 +36,6 @@ struct rt711_sdca_priv { ...@@ -36,10 +36,6 @@ struct rt711_sdca_priv {
bool fu1e_dapm_mute, fu1e_mixer_l_mute, fu1e_mixer_r_mute; bool fu1e_dapm_mute, fu1e_mixer_l_mute, fu1e_mixer_r_mute;
}; };
struct sdw_stream_data {
struct sdw_stream_runtime *sdw_stream;
};
/* NID */ /* NID */
#define RT711_AUDIO_FUNCTION_GROUP 0x01 #define RT711_AUDIO_FUNCTION_GROUP 0x01
#define RT711_DAC_OUT2 0x03 #define RT711_DAC_OUT2 0x03
......
...@@ -964,19 +964,7 @@ static const struct snd_soc_component_driver soc_codec_dev_rt711 = { ...@@ -964,19 +964,7 @@ static const struct snd_soc_component_driver soc_codec_dev_rt711 = {
static int rt711_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, static int rt711_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
int direction) int direction)
{ {
struct sdw_stream_data *stream; snd_soc_dai_dma_data_set(dai, direction, sdw_stream);
if (!sdw_stream)
return 0;
stream = kzalloc(sizeof(*stream), GFP_KERNEL);
if (!stream)
return -ENOMEM;
stream->sdw_stream = sdw_stream;
/* Use tx_mask or rx_mask to configure stream tag and set dma_data */
snd_soc_dai_dma_data_set(dai, direction, stream);
return 0; return 0;
} }
...@@ -984,11 +972,7 @@ static int rt711_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, ...@@ -984,11 +972,7 @@ static int rt711_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
static void rt711_shutdown(struct snd_pcm_substream *substream, static void rt711_shutdown(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai) struct snd_soc_dai *dai)
{ {
struct sdw_stream_data *stream;
stream = snd_soc_dai_get_dma_data(dai, substream);
snd_soc_dai_set_dma_data(dai, substream, NULL); snd_soc_dai_set_dma_data(dai, substream, NULL);
kfree(stream);
} }
static int rt711_pcm_hw_params(struct snd_pcm_substream *substream, static int rt711_pcm_hw_params(struct snd_pcm_substream *substream,
...@@ -999,14 +983,14 @@ static int rt711_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -999,14 +983,14 @@ static int rt711_pcm_hw_params(struct snd_pcm_substream *substream,
struct rt711_priv *rt711 = snd_soc_component_get_drvdata(component); struct rt711_priv *rt711 = snd_soc_component_get_drvdata(component);
struct sdw_stream_config stream_config = {0}; struct sdw_stream_config stream_config = {0};
struct sdw_port_config port_config = {0}; struct sdw_port_config port_config = {0};
struct sdw_stream_data *stream; struct sdw_stream_runtime *sdw_stream;
int retval; int retval;
unsigned int val = 0; unsigned int val = 0;
dev_dbg(dai->dev, "%s %s", __func__, dai->name); dev_dbg(dai->dev, "%s %s", __func__, dai->name);
stream = snd_soc_dai_get_dma_data(dai, substream); sdw_stream = snd_soc_dai_get_dma_data(dai, substream);
if (!stream) if (!sdw_stream)
return -EINVAL; return -EINVAL;
if (!rt711->slave) if (!rt711->slave)
...@@ -1027,7 +1011,7 @@ static int rt711_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -1027,7 +1011,7 @@ static int rt711_pcm_hw_params(struct snd_pcm_substream *substream,
} }
retval = sdw_stream_add_slave(rt711->slave, &stream_config, retval = sdw_stream_add_slave(rt711->slave, &stream_config,
&port_config, 1, stream->sdw_stream); &port_config, 1, sdw_stream);
if (retval) { if (retval) {
dev_err(dai->dev, "Unable to configure port\n"); dev_err(dai->dev, "Unable to configure port\n");
return retval; return retval;
...@@ -1075,13 +1059,13 @@ static int rt711_pcm_hw_free(struct snd_pcm_substream *substream, ...@@ -1075,13 +1059,13 @@ static int rt711_pcm_hw_free(struct snd_pcm_substream *substream,
{ {
struct snd_soc_component *component = dai->component; struct snd_soc_component *component = dai->component;
struct rt711_priv *rt711 = snd_soc_component_get_drvdata(component); struct rt711_priv *rt711 = snd_soc_component_get_drvdata(component);
struct sdw_stream_data *stream = struct sdw_stream_runtime *sdw_stream =
snd_soc_dai_get_dma_data(dai, substream); snd_soc_dai_get_dma_data(dai, substream);
if (!rt711->slave) if (!rt711->slave)
return -EINVAL; return -EINVAL;
sdw_stream_remove_slave(rt711->slave, stream->sdw_stream); sdw_stream_remove_slave(rt711->slave, sdw_stream);
return 0; return 0;
} }
......
...@@ -29,10 +29,6 @@ struct rt711_priv { ...@@ -29,10 +29,6 @@ struct rt711_priv {
bool disable_irq; bool disable_irq;
}; };
struct sdw_stream_data {
struct sdw_stream_runtime *sdw_stream;
};
/* NID */ /* NID */
#define RT711_AUDIO_FUNCTION_GROUP 0x01 #define RT711_AUDIO_FUNCTION_GROUP 0x01
#define RT711_DAC_OUT2 0x03 #define RT711_DAC_OUT2 0x03
......
...@@ -992,19 +992,7 @@ static const struct snd_soc_component_driver soc_sdca_dev_rt712 = { ...@@ -992,19 +992,7 @@ static const struct snd_soc_component_driver soc_sdca_dev_rt712 = {
static int rt712_sdca_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, static int rt712_sdca_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
int direction) int direction)
{ {
struct sdw_stream_data *stream; snd_soc_dai_dma_data_set(dai, direction, sdw_stream);
if (!sdw_stream)
return 0;
stream = kzalloc(sizeof(*stream), GFP_KERNEL);
if (!stream)
return -ENOMEM;
stream->sdw_stream = sdw_stream;
/* Use tx_mask or rx_mask to configure stream tag and set dma_data */
snd_soc_dai_dma_data_set(dai, direction, stream);
return 0; return 0;
} }
...@@ -1012,11 +1000,7 @@ static int rt712_sdca_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, ...@@ -1012,11 +1000,7 @@ static int rt712_sdca_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
static void rt712_sdca_shutdown(struct snd_pcm_substream *substream, static void rt712_sdca_shutdown(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai) struct snd_soc_dai *dai)
{ {
struct sdw_stream_data *stream;
stream = snd_soc_dai_get_dma_data(dai, substream);
snd_soc_dai_set_dma_data(dai, substream, NULL); snd_soc_dai_set_dma_data(dai, substream, NULL);
kfree(stream);
} }
static int rt712_sdca_pcm_hw_params(struct snd_pcm_substream *substream, static int rt712_sdca_pcm_hw_params(struct snd_pcm_substream *substream,
...@@ -1028,14 +1012,14 @@ static int rt712_sdca_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -1028,14 +1012,14 @@ static int rt712_sdca_pcm_hw_params(struct snd_pcm_substream *substream,
struct sdw_stream_config stream_config; struct sdw_stream_config stream_config;
struct sdw_port_config port_config; struct sdw_port_config port_config;
enum sdw_data_direction direction; enum sdw_data_direction direction;
struct sdw_stream_data *stream; struct sdw_stream_runtime *sdw_stream;
int retval, port, num_channels; int retval, port, num_channels;
unsigned int sampling_rate; unsigned int sampling_rate;
dev_dbg(dai->dev, "%s %s", __func__, dai->name); dev_dbg(dai->dev, "%s %s", __func__, dai->name);
stream = snd_soc_dai_get_dma_data(dai, substream); sdw_stream = snd_soc_dai_get_dma_data(dai, substream);
if (!stream) if (!sdw_stream)
return -EINVAL; return -EINVAL;
if (!rt712->slave) if (!rt712->slave)
...@@ -1068,7 +1052,7 @@ static int rt712_sdca_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -1068,7 +1052,7 @@ static int rt712_sdca_pcm_hw_params(struct snd_pcm_substream *substream,
port_config.num = port; port_config.num = port;
retval = sdw_stream_add_slave(rt712->slave, &stream_config, retval = sdw_stream_add_slave(rt712->slave, &stream_config,
&port_config, 1, stream->sdw_stream); &port_config, 1, sdw_stream);
if (retval) { if (retval) {
dev_err(dai->dev, "Unable to configure port\n"); dev_err(dai->dev, "Unable to configure port\n");
return retval; return retval;
...@@ -1128,13 +1112,13 @@ static int rt712_sdca_pcm_hw_free(struct snd_pcm_substream *substream, ...@@ -1128,13 +1112,13 @@ static int rt712_sdca_pcm_hw_free(struct snd_pcm_substream *substream,
{ {
struct snd_soc_component *component = dai->component; struct snd_soc_component *component = dai->component;
struct rt712_sdca_priv *rt712 = snd_soc_component_get_drvdata(component); struct rt712_sdca_priv *rt712 = snd_soc_component_get_drvdata(component);
struct sdw_stream_data *stream = struct sdw_stream_runtime *sdw_stream =
snd_soc_dai_get_dma_data(dai, substream); snd_soc_dai_get_dma_data(dai, substream);
if (!rt712->slave) if (!rt712->slave)
return -EINVAL; return -EINVAL;
sdw_stream_remove_slave(rt712->slave, stream->sdw_stream); sdw_stream_remove_slave(rt712->slave, sdw_stream);
return 0; return 0;
} }
......
...@@ -40,10 +40,6 @@ struct rt712_sdca_priv { ...@@ -40,10 +40,6 @@ struct rt712_sdca_priv {
bool fu0f_mixer_r_mute; bool fu0f_mixer_r_mute;
}; };
struct sdw_stream_data {
struct sdw_stream_runtime *sdw_stream;
};
/* NID */ /* NID */
#define RT712_VENDOR_REG 0x20 #define RT712_VENDOR_REG 0x20
#define RT712_VENDOR_CALI 0x58 #define RT712_VENDOR_CALI 0x58
......
...@@ -784,16 +784,7 @@ static const struct snd_soc_component_driver soc_codec_dev_rt715_sdca = { ...@@ -784,16 +784,7 @@ static const struct snd_soc_component_driver soc_codec_dev_rt715_sdca = {
static int rt715_sdca_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, static int rt715_sdca_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
int direction) int direction)
{ {
struct rt715_sdw_stream_data *stream; snd_soc_dai_dma_data_set(dai, direction, sdw_stream);
stream = kzalloc(sizeof(*stream), GFP_KERNEL);
if (!stream)
return -ENOMEM;
stream->sdw_stream = sdw_stream;
/* Use tx_mask or rx_mask to configure stream tag and set dma_data */
snd_soc_dai_dma_data_set(dai, direction, stream);
return 0; return 0;
} }
...@@ -802,14 +793,7 @@ static void rt715_sdca_shutdown(struct snd_pcm_substream *substream, ...@@ -802,14 +793,7 @@ static void rt715_sdca_shutdown(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai) struct snd_soc_dai *dai)
{ {
struct rt715_sdw_stream_data *stream;
stream = snd_soc_dai_get_dma_data(dai, substream);
if (!stream)
return;
snd_soc_dai_set_dma_data(dai, substream, NULL); snd_soc_dai_set_dma_data(dai, substream, NULL);
kfree(stream);
} }
static int rt715_sdca_pcm_hw_params(struct snd_pcm_substream *substream, static int rt715_sdca_pcm_hw_params(struct snd_pcm_substream *substream,
...@@ -820,13 +804,13 @@ static int rt715_sdca_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -820,13 +804,13 @@ static int rt715_sdca_pcm_hw_params(struct snd_pcm_substream *substream,
struct rt715_sdca_priv *rt715 = snd_soc_component_get_drvdata(component); struct rt715_sdca_priv *rt715 = snd_soc_component_get_drvdata(component);
struct sdw_stream_config stream_config = {0}; struct sdw_stream_config stream_config = {0};
struct sdw_port_config port_config = {0}; struct sdw_port_config port_config = {0};
struct rt715_sdw_stream_data *stream; struct sdw_stream_runtime *sdw_stream;
int retval; int retval;
unsigned int val; unsigned int val;
stream = snd_soc_dai_get_dma_data(dai, substream); sdw_stream = snd_soc_dai_get_dma_data(dai, substream);
if (!stream) if (!sdw_stream)
return -EINVAL; return -EINVAL;
if (!rt715->slave) if (!rt715->slave)
...@@ -851,7 +835,7 @@ static int rt715_sdca_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -851,7 +835,7 @@ static int rt715_sdca_pcm_hw_params(struct snd_pcm_substream *substream,
} }
retval = sdw_stream_add_slave(rt715->slave, &stream_config, retval = sdw_stream_add_slave(rt715->slave, &stream_config,
&port_config, 1, stream->sdw_stream); &port_config, 1, sdw_stream);
if (retval) { if (retval) {
dev_err(component->dev, "Unable to configure port, retval:%d\n", dev_err(component->dev, "Unable to configure port, retval:%d\n",
retval); retval);
...@@ -922,13 +906,13 @@ static int rt715_sdca_pcm_hw_free(struct snd_pcm_substream *substream, ...@@ -922,13 +906,13 @@ static int rt715_sdca_pcm_hw_free(struct snd_pcm_substream *substream,
{ {
struct snd_soc_component *component = dai->component; struct snd_soc_component *component = dai->component;
struct rt715_sdca_priv *rt715 = snd_soc_component_get_drvdata(component); struct rt715_sdca_priv *rt715 = snd_soc_component_get_drvdata(component);
struct rt715_sdw_stream_data *stream = struct sdw_stream_runtime *sdw_stream =
snd_soc_dai_get_dma_data(dai, substream); snd_soc_dai_get_dma_data(dai, substream);
if (!rt715->slave) if (!rt715->slave)
return -EINVAL; return -EINVAL;
sdw_stream_remove_slave(rt715->slave, stream->sdw_stream); sdw_stream_remove_slave(rt715->slave, sdw_stream);
return 0; return 0;
} }
......
...@@ -37,10 +37,6 @@ struct rt715_sdca_priv { ...@@ -37,10 +37,6 @@ struct rt715_sdca_priv {
int kctl_8ch_orig[8]; int kctl_8ch_orig[8];
}; };
struct rt715_sdw_stream_data {
struct sdw_stream_runtime *sdw_stream;
};
struct rt715_sdca_kcontrol_private { struct rt715_sdca_kcontrol_private {
unsigned int reg_base; unsigned int reg_base;
unsigned int count; unsigned int count;
......
...@@ -765,19 +765,7 @@ static int rt715_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, ...@@ -765,19 +765,7 @@ static int rt715_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
int direction) int direction)
{ {
struct sdw_stream_data *stream; snd_soc_dai_dma_data_set(dai, direction, sdw_stream);
if (!sdw_stream)
return 0;
stream = kzalloc(sizeof(*stream), GFP_KERNEL);
if (!stream)
return -ENOMEM;
stream->sdw_stream = sdw_stream;
/* Use tx_mask or rx_mask to configure stream tag and set dma_data */
snd_soc_dai_dma_data_set(dai, direction, stream);
return 0; return 0;
} }
...@@ -786,11 +774,7 @@ static void rt715_shutdown(struct snd_pcm_substream *substream, ...@@ -786,11 +774,7 @@ static void rt715_shutdown(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai) struct snd_soc_dai *dai)
{ {
struct sdw_stream_data *stream;
stream = snd_soc_dai_get_dma_data(dai, substream);
snd_soc_dai_set_dma_data(dai, substream, NULL); snd_soc_dai_set_dma_data(dai, substream, NULL);
kfree(stream);
} }
static int rt715_pcm_hw_params(struct snd_pcm_substream *substream, static int rt715_pcm_hw_params(struct snd_pcm_substream *substream,
...@@ -801,13 +785,13 @@ static int rt715_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -801,13 +785,13 @@ static int rt715_pcm_hw_params(struct snd_pcm_substream *substream,
struct rt715_priv *rt715 = snd_soc_component_get_drvdata(component); struct rt715_priv *rt715 = snd_soc_component_get_drvdata(component);
struct sdw_stream_config stream_config = {0}; struct sdw_stream_config stream_config = {0};
struct sdw_port_config port_config = {0}; struct sdw_port_config port_config = {0};
struct sdw_stream_data *stream; struct sdw_stream_runtime *sdw_stream;
int retval; int retval;
unsigned int val = 0; unsigned int val = 0;
stream = snd_soc_dai_get_dma_data(dai, substream); sdw_stream = snd_soc_dai_get_dma_data(dai, substream);
if (!stream) if (!sdw_stream)
return -EINVAL; return -EINVAL;
if (!rt715->slave) if (!rt715->slave)
...@@ -830,7 +814,7 @@ static int rt715_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -830,7 +814,7 @@ static int rt715_pcm_hw_params(struct snd_pcm_substream *substream,
} }
retval = sdw_stream_add_slave(rt715->slave, &stream_config, retval = sdw_stream_add_slave(rt715->slave, &stream_config,
&port_config, 1, stream->sdw_stream); &port_config, 1, sdw_stream);
if (retval) { if (retval) {
dev_err(dai->dev, "Unable to configure port\n"); dev_err(dai->dev, "Unable to configure port\n");
return retval; return retval;
...@@ -893,13 +877,13 @@ static int rt715_pcm_hw_free(struct snd_pcm_substream *substream, ...@@ -893,13 +877,13 @@ static int rt715_pcm_hw_free(struct snd_pcm_substream *substream,
{ {
struct snd_soc_component *component = dai->component; struct snd_soc_component *component = dai->component;
struct rt715_priv *rt715 = snd_soc_component_get_drvdata(component); struct rt715_priv *rt715 = snd_soc_component_get_drvdata(component);
struct sdw_stream_data *stream = struct sdw_stream_runtime *sdw_stream =
snd_soc_dai_get_dma_data(dai, substream); snd_soc_dai_get_dma_data(dai, substream);
if (!rt715->slave) if (!rt715->slave)
return -EINVAL; return -EINVAL;
sdw_stream_remove_slave(rt715->slave, stream->sdw_stream); sdw_stream_remove_slave(rt715->slave, sdw_stream);
return 0; return 0;
} }
......
...@@ -27,10 +27,6 @@ struct rt715_priv { ...@@ -27,10 +27,6 @@ struct rt715_priv {
unsigned int kctl_8ch_vol_ori[8]; unsigned int kctl_8ch_vol_ori[8];
}; };
struct sdw_stream_data {
struct sdw_stream_runtime *sdw_stream;
};
/* NID */ /* NID */
#define RT715_AUDIO_FUNCTION_GROUP 0x01 #define RT715_AUDIO_FUNCTION_GROUP 0x01
#define RT715_MIC_ADC 0x07 #define RT715_MIC_ADC 0x07
......
...@@ -23,10 +23,6 @@ struct sdw_mockup_priv { ...@@ -23,10 +23,6 @@ struct sdw_mockup_priv {
struct sdw_slave *slave; struct sdw_slave *slave;
}; };
struct sdw_stream_data {
struct sdw_stream_runtime *sdw_stream;
};
static int sdw_mockup_component_probe(struct snd_soc_component *component) static int sdw_mockup_component_probe(struct snd_soc_component *component)
{ {
return 0; return 0;
...@@ -45,19 +41,7 @@ static const struct snd_soc_component_driver snd_soc_sdw_mockup_component = { ...@@ -45,19 +41,7 @@ static const struct snd_soc_component_driver snd_soc_sdw_mockup_component = {
static int sdw_mockup_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, static int sdw_mockup_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
int direction) int direction)
{ {
struct sdw_stream_data *stream; snd_soc_dai_dma_data_set(dai, direction, sdw_stream);
if (!sdw_stream)
return 0;
stream = kzalloc(sizeof(*stream), GFP_KERNEL);
if (!stream)
return -ENOMEM;
stream->sdw_stream = sdw_stream;
/* Use tx_mask or rx_mask to configure stream tag and set dma_data */
snd_soc_dai_dma_data_set(dai, direction, stream);
return 0; return 0;
} }
...@@ -65,11 +49,7 @@ static int sdw_mockup_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream, ...@@ -65,11 +49,7 @@ static int sdw_mockup_set_sdw_stream(struct snd_soc_dai *dai, void *sdw_stream,
static void sdw_mockup_shutdown(struct snd_pcm_substream *substream, static void sdw_mockup_shutdown(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai) struct snd_soc_dai *dai)
{ {
struct sdw_stream_data *stream;
stream = snd_soc_dai_get_dma_data(dai, substream);
snd_soc_dai_set_dma_data(dai, substream, NULL); snd_soc_dai_set_dma_data(dai, substream, NULL);
kfree(stream);
} }
static int sdw_mockup_pcm_hw_params(struct snd_pcm_substream *substream, static int sdw_mockup_pcm_hw_params(struct snd_pcm_substream *substream,
...@@ -80,11 +60,10 @@ static int sdw_mockup_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -80,11 +60,10 @@ static int sdw_mockup_pcm_hw_params(struct snd_pcm_substream *substream,
struct sdw_mockup_priv *sdw_mockup = snd_soc_component_get_drvdata(component); struct sdw_mockup_priv *sdw_mockup = snd_soc_component_get_drvdata(component);
struct sdw_stream_config stream_config = {0}; struct sdw_stream_config stream_config = {0};
struct sdw_port_config port_config = {0}; struct sdw_port_config port_config = {0};
struct sdw_stream_data *stream; struct sdw_stream_runtime *sdw_stream = snd_soc_dai_get_dma_data(dai, substream);
int ret; int ret;
stream = snd_soc_dai_get_dma_data(dai, substream); if (!sdw_stream)
if (!stream)
return -EINVAL; return -EINVAL;
if (!sdw_mockup->slave) if (!sdw_mockup->slave)
...@@ -99,7 +78,7 @@ static int sdw_mockup_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -99,7 +78,7 @@ static int sdw_mockup_pcm_hw_params(struct snd_pcm_substream *substream,
port_config.num = 8; port_config.num = 8;
ret = sdw_stream_add_slave(sdw_mockup->slave, &stream_config, ret = sdw_stream_add_slave(sdw_mockup->slave, &stream_config,
&port_config, 1, stream->sdw_stream); &port_config, 1, sdw_stream);
if (ret) if (ret)
dev_err(dai->dev, "Unable to configure port\n"); dev_err(dai->dev, "Unable to configure port\n");
...@@ -111,13 +90,12 @@ static int sdw_mockup_pcm_hw_free(struct snd_pcm_substream *substream, ...@@ -111,13 +90,12 @@ static int sdw_mockup_pcm_hw_free(struct snd_pcm_substream *substream,
{ {
struct snd_soc_component *component = dai->component; struct snd_soc_component *component = dai->component;
struct sdw_mockup_priv *sdw_mockup = snd_soc_component_get_drvdata(component); struct sdw_mockup_priv *sdw_mockup = snd_soc_component_get_drvdata(component);
struct sdw_stream_data *stream = struct sdw_stream_runtime *sdw_stream = snd_soc_dai_get_dma_data(dai, substream);
snd_soc_dai_get_dma_data(dai, substream);
if (!sdw_mockup->slave) if (!sdw_mockup->slave)
return -EINVAL; return -EINVAL;
sdw_stream_remove_slave(sdw_mockup->slave, stream->sdw_stream); sdw_stream_remove_slave(sdw_mockup->slave, sdw_stream);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment