@@ -120,7 +120,6 @@ static int rt715_sdca_update_status(struct sdw_slave *slave,
120120 enum sdw_slave_status status )
121121{
122122 struct rt715_sdca_priv * rt715 = dev_get_drvdata (& slave -> dev );
123- int ret ;
124123
125124 /*
126125 * Perform initialization only if slave status is present and
@@ -130,29 +129,7 @@ static int rt715_sdca_update_status(struct sdw_slave *slave,
130129 return 0 ;
131130
132131 /* perform I/O transfers required for Slave initialization */
133- ret = rt715_sdca_io_init (& slave -> dev , slave );
134- if (ret < 0 ) {
135- dev_err (& slave -> dev , "IO init failed: %d\n" , ret );
136- return ret ;
137- }
138-
139- if (slave -> unattach_request ) {
140- regcache_cache_only (rt715 -> regmap , false);
141- regcache_sync_region (rt715 -> regmap ,
142- SDW_SDCA_CTL (FUN_JACK_CODEC , RT715_SDCA_ST_EN , RT715_SDCA_ST_CTRL ,
143- CH_00 ),
144- SDW_SDCA_CTL (FUN_MIC_ARRAY , RT715_SDCA_SMPU_TRIG_ST_EN ,
145- RT715_SDCA_SMPU_TRIG_ST_CTRL , CH_00 ));
146- regcache_cache_only (rt715 -> mbq_regmap , false);
147- regcache_sync_region (rt715 -> mbq_regmap , 0x2000000 , 0x61020ff );
148- regcache_sync_region (rt715 -> mbq_regmap ,
149- SDW_SDCA_CTL (FUN_JACK_CODEC , RT715_SDCA_ST_EN , RT715_SDCA_ST_CTRL ,
150- CH_00 ),
151- SDW_SDCA_CTL (FUN_MIC_ARRAY , RT715_SDCA_SMPU_TRIG_ST_EN ,
152- RT715_SDCA_SMPU_TRIG_ST_CTRL , CH_00 ));
153- }
154-
155- return ret ;
132+ return rt715_sdca_io_init (& slave -> dev , slave );
156133}
157134
158135static int rt715_sdca_read_prop (struct sdw_slave * slave )
@@ -243,18 +220,28 @@ static int rt715_dev_suspend(struct device *dev)
243220 return 0 ;
244221}
245222
223+ #define RT715_PROBE_TIMEOUT 5000
224+
246225static int rt715_dev_resume (struct device * dev )
247226{
248227 struct sdw_slave * slave = dev_to_sdw_dev (dev );
249228 struct rt715_sdca_priv * rt715 = dev_get_drvdata (dev );
229+ unsigned long time ;
250230
251231 if (!rt715 -> first_hw_init )
252232 return 0 ;
253233
254234 if (!slave -> unattach_request )
255235 goto regmap_sync ;
256236
257- return 0 ;
237+ time = wait_for_completion_timeout (& slave -> initialization_complete ,
238+ msecs_to_jiffies (RT715_PROBE_TIMEOUT ));
239+ if (!time ) {
240+ dev_err (& slave -> dev , "%s: Initialization not complete, timed out\n" , __func__ );
241+ sdw_show_ping_status (slave -> bus , true);
242+
243+ return - ETIMEDOUT ;
244+ }
258245
259246regmap_sync :
260247 slave -> unattach_request = 0 ;
0 commit comments