Skip to content

Commit fefa736

Browse files
committed
Revert "ASoC: rt712: wait codec init in hw_params"
This reverts commit 78bcf2c. We should ensure the device is fully operational when it is resumed. Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
1 parent 92806b6 commit fefa736

2 files changed

Lines changed: 12 additions & 22 deletions

File tree

sound/soc/codecs/rt712-sdca-sdw.c

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,6 @@ static int rt712_sdca_update_status(struct sdw_slave *slave,
157157
enum sdw_slave_status status)
158158
{
159159
struct rt712_sdca_priv *rt712 = dev_get_drvdata(&slave->dev);
160-
int ret;
161160

162161
if (status == SDW_SLAVE_UNATTACHED)
163162
rt712->hw_init = false;
@@ -185,20 +184,7 @@ static int rt712_sdca_update_status(struct sdw_slave *slave,
185184
return 0;
186185

187186
/* perform I/O transfers required for Slave initialization */
188-
ret = rt712_sdca_io_init(&slave->dev, slave);
189-
if (ret < 0) {
190-
dev_err(&slave->dev, "IO init failed: %d\n", ret);
191-
return ret;
192-
}
193-
194-
if (slave->unattach_request) {
195-
regcache_cache_only(rt712->regmap, false);
196-
regcache_sync(rt712->regmap);
197-
regcache_cache_only(rt712->mbq_regmap, false);
198-
regcache_sync(rt712->mbq_regmap);
199-
}
200-
201-
return ret;
187+
return rt712_sdca_io_init(&slave->dev, slave);
202188
}
203189

204190
static int rt712_sdca_read_prop(struct sdw_slave *slave)
@@ -460,10 +446,13 @@ static int rt712_sdca_dev_system_suspend(struct device *dev)
460446
return rt712_sdca_dev_suspend(dev);
461447
}
462448

449+
#define RT712_PROBE_TIMEOUT 5000
450+
463451
static int rt712_sdca_dev_resume(struct device *dev)
464452
{
465453
struct sdw_slave *slave = dev_to_sdw_dev(dev);
466454
struct rt712_sdca_priv *rt712 = dev_get_drvdata(dev);
455+
unsigned long time;
467456

468457
if (!rt712->first_hw_init)
469458
return 0;
@@ -480,7 +469,14 @@ static int rt712_sdca_dev_resume(struct device *dev)
480469
goto regmap_sync;
481470
}
482471

483-
return 0;
472+
time = wait_for_completion_timeout(&slave->initialization_complete,
473+
msecs_to_jiffies(RT712_PROBE_TIMEOUT));
474+
if (!time) {
475+
dev_err(&slave->dev, "%s: Initialization not complete, timed out\n", __func__);
476+
sdw_show_ping_status(slave->bus, true);
477+
478+
return -ETIMEDOUT;
479+
}
484480

485481
regmap_sync:
486482
slave->unattach_request = 0;

sound/soc/codecs/rt712-sdca.c

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1451,8 +1451,6 @@ static void rt712_sdca_shutdown(struct snd_pcm_substream *substream,
14511451
snd_soc_dai_set_dma_data(dai, substream, NULL);
14521452
}
14531453

1454-
#define RT712_PROBE_TIMEOUT 5000
1455-
14561454
static int rt712_sdca_pcm_hw_params(struct snd_pcm_substream *substream,
14571455
struct snd_pcm_hw_params *params,
14581456
struct snd_soc_dai *dai)
@@ -1507,10 +1505,6 @@ static int rt712_sdca_pcm_hw_params(struct snd_pcm_substream *substream,
15071505
port_config.ch_mask = GENMASK(num_channels - 1, 0);
15081506
port_config.num = port;
15091507

1510-
retval = sdw_slave_wait_for_initialization(rt712->slave, RT712_PROBE_TIMEOUT);
1511-
if (retval < 0)
1512-
return retval;
1513-
15141508
retval = sdw_stream_add_slave(rt712->slave, &stream_config,
15151509
&port_config, 1, sdw_stream);
15161510
if (retval) {

0 commit comments

Comments
 (0)