@@ -199,11 +199,14 @@ EXPORT_SYMBOL_NS_GPL(hda_cs_dsp_control_remove, SND_HDA_CS_DSP_CONTROLS);
199
199
int hda_cs_dsp_write_ctl (struct cs_dsp * dsp , const char * name , int type ,
200
200
unsigned int alg , const void * buf , size_t len )
201
201
{
202
- struct cs_dsp_coeff_ctl * cs_ctl = cs_dsp_get_ctl ( dsp , name , type , alg ) ;
202
+ struct cs_dsp_coeff_ctl * cs_ctl ;
203
203
struct hda_cs_dsp_coeff_ctl * ctl ;
204
204
int ret ;
205
205
206
+ mutex_lock (& dsp -> pwr_lock );
207
+ cs_ctl = cs_dsp_get_ctl (dsp , name , type , alg );
206
208
ret = cs_dsp_coeff_write_ctrl (cs_ctl , 0 , buf , len );
209
+ mutex_unlock (& dsp -> pwr_lock );
207
210
if (ret )
208
211
return ret ;
209
212
@@ -221,7 +224,13 @@ EXPORT_SYMBOL_NS_GPL(hda_cs_dsp_write_ctl, SND_HDA_CS_DSP_CONTROLS);
221
224
int hda_cs_dsp_read_ctl (struct cs_dsp * dsp , const char * name , int type ,
222
225
unsigned int alg , void * buf , size_t len )
223
226
{
224
- return cs_dsp_coeff_read_ctrl (cs_dsp_get_ctl (dsp , name , type , alg ), 0 , buf , len );
227
+ int ret ;
228
+
229
+ mutex_lock (& dsp -> pwr_lock );
230
+ ret = cs_dsp_coeff_read_ctrl (cs_dsp_get_ctl (dsp , name , type , alg ), 0 , buf , len );
231
+ mutex_unlock (& dsp -> pwr_lock );
232
+
233
+ return ret ;
225
234
226
235
}
227
236
EXPORT_SYMBOL_NS_GPL (hda_cs_dsp_read_ctl , SND_HDA_CS_DSP_CONTROLS );
0 commit comments