summaryrefslogtreecommitdiff
path: root/sound/soc/intel/boards/sof_sdw.c
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2021-08-13 17:49:06 +0100
committerMark Brown <broonie@kernel.org>2021-08-13 17:49:06 +0100
commit31e53e137c5a1e48cd21b45089ca232d355d064c (patch)
treeaa5c17eaf55cbf809126e4915e7156784e9ee167 /sound/soc/intel/boards/sof_sdw.c
parentf84f6ee0366fe89d1673e3597b308538886e66d3 (diff)
parent0bd3c071e6e7e140c8b39caab99b3b6f05cb5290 (diff)
Merge series "ASoC: Intel: boards: use software node API" from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>:
This is an update on an earlier contribution from Heikki Krogerus The function device_add_properties() is going to be removed. Replacing it with software node API equivalents. Thanks for Hans de Goede and Andy Shevchenko for their comments, suggestions and Reviewed-by tags on GitHub. The review thread can be found at https://github.com/thesofproject/linux/pull/3041) v3 changes: Fixed nit-picks from Andy: label, return value, missing commas/periods. Added Andy's Reviewed-by tag v2 changes: feedback from Andy and Hans Better error handling Codec reference is kept until the .remove callback Remove bus search to find device v1 changes from Heikki's patches: Avoid the use of devm_ routines for Baytrail machine drivers. Heikki Krogerus (1): ASoC: Intel: boards: use software node API in Atom boards Pierre-Louis Bossart (7): ASoC: Intel: boards: harden codec property handling ASoC: Intel: boards: handle errors with acpi_dev_get_first_match_dev() ASoC: Intel: boards: get codec device with ACPI instead of bus search ASoC: Intel: sof_sdw: pass card information to init/exit functions ASoC: Intel: sof_sdw_rt711*: keep codec device reference until remove ASoC: Intel: use software node API in SoundWire machines ASoC: Intel: remove device_properties for Atom boards sound/soc/intel/boards/bytcht_es8316.c | 31 ++++++++-- sound/soc/intel/boards/bytcr_rt5640.c | 60 +++++++++++++++----- sound/soc/intel/boards/bytcr_rt5651.c | 63 ++++++++++++++------- sound/soc/intel/boards/sof_sdw.c | 20 ++++--- sound/soc/intel/boards/sof_sdw_common.h | 37 +++++++----- sound/soc/intel/boards/sof_sdw_max98373.c | 3 +- sound/soc/intel/boards/sof_sdw_rt1308.c | 3 +- sound/soc/intel/boards/sof_sdw_rt1316.c | 3 +- sound/soc/intel/boards/sof_sdw_rt5682.c | 3 +- sound/soc/intel/boards/sof_sdw_rt700.c | 3 +- sound/soc/intel/boards/sof_sdw_rt711.c | 51 +++++++++-------- sound/soc/intel/boards/sof_sdw_rt711_sdca.c | 52 +++++++++-------- sound/soc/intel/boards/sof_sdw_rt715.c | 3 +- sound/soc/intel/boards/sof_sdw_rt715_sdca.c | 3 +- 14 files changed, 223 insertions(+), 112 deletions(-) -- 2.25.1
Diffstat (limited to 'sound/soc/intel/boards/sof_sdw.c')
-rw-r--r--sound/soc/intel/boards/sof_sdw.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/sound/soc/intel/boards/sof_sdw.c b/sound/soc/intel/boards/sof_sdw.c
index 6c946d7ee0a6..6602eda89e8e 100644
--- a/sound/soc/intel/boards/sof_sdw.c
+++ b/sound/soc/intel/boards/sof_sdw.c
@@ -352,7 +352,8 @@ static const struct snd_soc_ops sdw_ops = {
.shutdown = sdw_shutdown,
};
-static int sof_sdw_mic_codec_mockup_init(const struct snd_soc_acpi_link_adr *link,
+static int sof_sdw_mic_codec_mockup_init(struct snd_soc_card *card,
+ const struct snd_soc_acpi_link_adr *link,
struct snd_soc_dai_link *dai_links,
struct sof_sdw_codec_info *info,
bool playback)
@@ -697,7 +698,8 @@ static int create_codec_dai_name(struct device *dev,
return 0;
}
-static int set_codec_init_func(const struct snd_soc_acpi_link_adr *link,
+static int set_codec_init_func(struct snd_soc_card *card,
+ const struct snd_soc_acpi_link_adr *link,
struct snd_soc_dai_link *dai_links,
bool playback, int group_id)
{
@@ -720,7 +722,8 @@ static int set_codec_init_func(const struct snd_soc_acpi_link_adr *link,
if (link->adr_d[i].endpoints->group_id != group_id)
continue;
if (codec_info_list[codec_index].init)
- codec_info_list[codec_index].init(link,
+ codec_info_list[codec_index].init(card,
+ link,
dai_links,
&codec_info_list[codec_index],
playback);
@@ -805,7 +808,8 @@ static int get_slave_info(const struct snd_soc_acpi_link_adr *adr_link,
return 0;
}
-static int create_sdw_dailink(struct device *dev, int *be_index,
+static int create_sdw_dailink(struct snd_soc_card *card,
+ struct device *dev, int *be_index,
struct snd_soc_dai_link *dai_links,
int sdw_be_num, int sdw_cpu_dai_num,
struct snd_soc_dai_link_component *cpus,
@@ -926,7 +930,7 @@ static int create_sdw_dailink(struct device *dev, int *be_index,
codecs, codec_num,
NULL, &sdw_ops);
- ret = set_codec_init_func(link, dai_links + (*be_index)++,
+ ret = set_codec_init_func(card, link, dai_links + (*be_index)++,
playback, group_id);
if (ret < 0) {
dev_err(dev, "failed to init codec %d", codec_index);
@@ -1107,7 +1111,7 @@ static int sof_card_dai_links_create(struct device *dev,
group_generated[endpoint->group_id])
continue;
- ret = create_sdw_dailink(dev, &be_id, links, sdw_be_num,
+ ret = create_sdw_dailink(card, dev, &be_id, links, sdw_be_num,
sdw_cpu_dai_num, cpus, adr_link,
&cpu_id, group_generated,
codec_conf, codec_conf_count,
@@ -1170,7 +1174,7 @@ SSP:
ssp_components, 1,
NULL, info->ops);
- ret = info->init(NULL, links + link_id, info, 0);
+ ret = info->init(card, NULL, links + link_id, info, 0);
if (ret < 0)
return ret;
@@ -1393,7 +1397,7 @@ static int mc_remove(struct platform_device *pdev)
for_each_card_prelinks(card, j, link) {
if (!strcmp(link->codecs[0].dai_name,
codec_info_list[i].dai_name)) {
- ret = codec_info_list[i].exit(&pdev->dev, link);
+ ret = codec_info_list[i].exit(card, link);
if (ret)
dev_warn(&pdev->dev,
"codec exit failed %d\n",