diff options
author | Mark Brown <broonie@kernel.org> | 2021-08-13 17:49:06 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2021-08-13 17:49:06 +0100 |
commit | 31e53e137c5a1e48cd21b45089ca232d355d064c (patch) | |
tree | aa5c17eaf55cbf809126e4915e7156784e9ee167 /sound/soc/intel/boards/sof_sdw.c | |
parent | f84f6ee0366fe89d1673e3597b308538886e66d3 (diff) | |
parent | 0bd3c071e6e7e140c8b39caab99b3b6f05cb5290 (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.c | 20 |
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", |