Skip to content

Commit

Permalink
ASoC: rt715-sdca-sdw: use first_hw_init flag on resume
Browse files Browse the repository at this point in the history
[ Upstream commit d34d089 ]

The intent of the status check on resume was to verify if a SoundWire
peripheral reported ATTACHED before waiting for the initialization to
complete. This is required to avoid timeouts that will happen with
'ghost' devices that are exposed in the platform firmware but are not
populated in hardware.

Unfortunately we used 'hw_init' instead of 'first_hw_init'. Due to
another error, the resume operation never timed out, but the volume
settings were not properly restored.

This patch renames the status flag to 'first_hw_init' for consistency
with other drivers (was 'first_init')

BugLink: thesofproject/linux#2908
BugLink: thesofproject/linux#2637
Fixes: 20d1705 ('ASoC: rt715-sdca: Add RT715 sdca vendor-specific driver')
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Reviewed-by: Bard Liao <bard.liao@intel.com>
Link: https://lore.kernel.org/r/20210607222239.582139-10-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
  • Loading branch information
plbossart authored and gregkh committed Jul 14, 2021
1 parent 7b87d47 commit ea62150
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 5 deletions.
2 changes: 1 addition & 1 deletion sound/soc/codecs/rt715-sdca-sdw.c
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ static int __maybe_unused rt715_dev_resume(struct device *dev)
struct rt715_sdca_priv *rt715 = dev_get_drvdata(dev);
unsigned long time;

if (!rt715->hw_init)
if (!rt715->first_hw_init)
return 0;

if (!slave->unattach_request)
Expand Down
6 changes: 3 additions & 3 deletions sound/soc/codecs/rt715-sdca.c
Original file line number Diff line number Diff line change
Expand Up @@ -997,7 +997,7 @@ int rt715_sdca_init(struct device *dev, struct regmap *mbq_regmap,
* HW init will be performed when device reports present
*/
rt715->hw_init = false;
rt715->first_init = false;
rt715->first_hw_init = false;

ret = devm_snd_soc_register_component(dev,
&soc_codec_dev_rt715_sdca,
Expand All @@ -1018,7 +1018,7 @@ int rt715_sdca_io_init(struct device *dev, struct sdw_slave *slave)
/*
* PM runtime is only enabled when a Slave reports as Attached
*/
if (!rt715->first_init) {
if (!rt715->first_hw_init) {
/* set autosuspend parameters */
pm_runtime_set_autosuspend_delay(&slave->dev, 3000);
pm_runtime_use_autosuspend(&slave->dev);
Expand All @@ -1031,7 +1031,7 @@ int rt715_sdca_io_init(struct device *dev, struct sdw_slave *slave)

pm_runtime_enable(&slave->dev);

rt715->first_init = true;
rt715->first_hw_init = true;
}

pm_runtime_get_noresume(&slave->dev);
Expand Down
2 changes: 1 addition & 1 deletion sound/soc/codecs/rt715-sdca.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ struct rt715_sdca_priv {
enum sdw_slave_status status;
struct sdw_bus_params params;
bool hw_init;
bool first_init;
bool first_hw_init;
int l_is_unmute;
int r_is_unmute;
int hw_sdw_ver;
Expand Down

0 comments on commit ea62150

Please sign in to comment.