12
12
13
13
#include <linux/pm_runtime.h>
14
14
#include "sof-priv.h"
15
+ #include "sof-audio.h"
15
16
16
17
static inline u32 mixer_to_ipc (unsigned int value , u32 * volume_map , int size )
17
18
{
@@ -57,7 +58,7 @@ int snd_sof_volume_put(struct snd_kcontrol *kcontrol,
57
58
struct soc_mixer_control * sm =
58
59
(struct soc_mixer_control * )kcontrol -> private_value ;
59
60
struct snd_sof_control * scontrol = sm -> dobj .private ;
60
- struct snd_sof_dev * sdev = scontrol -> sdev ;
61
+ struct snd_soc_component * scomp = scontrol -> scomp ;
61
62
struct sof_ipc_ctrl_data * cdata = scontrol -> control_data ;
62
63
unsigned int i , channels = scontrol -> num_channels ;
63
64
@@ -70,12 +71,10 @@ int snd_sof_volume_put(struct snd_kcontrol *kcontrol,
70
71
}
71
72
72
73
/* notify DSP of mixer updates */
73
- if (pm_runtime_active (sdev -> dev ))
74
- snd_sof_ipc_set_get_comp_data (sdev -> ipc , scontrol ,
75
- SOF_IPC_COMP_SET_VALUE ,
76
- SOF_CTRL_TYPE_VALUE_CHAN_GET ,
77
- SOF_CTRL_CMD_VOLUME ,
78
- true);
74
+ snd_sof_ipc_set_get_comp_data (scomp , scontrol ,
75
+ SOF_IPC_COMP_SET_VALUE ,
76
+ SOF_CTRL_TYPE_VALUE_CHAN_GET ,
77
+ SOF_CTRL_CMD_VOLUME , true);
79
78
80
79
return 0 ;
81
80
}
@@ -102,7 +101,7 @@ int snd_sof_switch_put(struct snd_kcontrol *kcontrol,
102
101
struct soc_mixer_control * sm =
103
102
(struct soc_mixer_control * )kcontrol -> private_value ;
104
103
struct snd_sof_control * scontrol = sm -> dobj .private ;
105
- struct snd_sof_dev * sdev = scontrol -> sdev ;
104
+ struct snd_soc_component * scomp = scontrol -> scomp ;
106
105
struct sof_ipc_ctrl_data * cdata = scontrol -> control_data ;
107
106
unsigned int i , channels = scontrol -> num_channels ;
108
107
@@ -113,12 +112,10 @@ int snd_sof_switch_put(struct snd_kcontrol *kcontrol,
113
112
}
114
113
115
114
/* notify DSP of mixer updates */
116
- if (pm_runtime_active (sdev -> dev ))
117
- snd_sof_ipc_set_get_comp_data (sdev -> ipc , scontrol ,
118
- SOF_IPC_COMP_SET_VALUE ,
119
- SOF_CTRL_TYPE_VALUE_CHAN_GET ,
120
- SOF_CTRL_CMD_SWITCH ,
121
- true);
115
+ snd_sof_ipc_set_get_comp_data (scomp , scontrol ,
116
+ SOF_IPC_COMP_SET_VALUE ,
117
+ SOF_CTRL_TYPE_VALUE_CHAN_GET ,
118
+ SOF_CTRL_CMD_SWITCH , true);
122
119
123
120
return 0 ;
124
121
}
@@ -145,7 +142,7 @@ int snd_sof_enum_put(struct snd_kcontrol *kcontrol,
145
142
struct soc_enum * se =
146
143
(struct soc_enum * )kcontrol -> private_value ;
147
144
struct snd_sof_control * scontrol = se -> dobj .private ;
148
- struct snd_sof_dev * sdev = scontrol -> sdev ;
145
+ struct snd_soc_component * scomp = scontrol -> scomp ;
149
146
struct sof_ipc_ctrl_data * cdata = scontrol -> control_data ;
150
147
unsigned int i , channels = scontrol -> num_channels ;
151
148
@@ -156,12 +153,10 @@ int snd_sof_enum_put(struct snd_kcontrol *kcontrol,
156
153
}
157
154
158
155
/* notify DSP of enum updates */
159
- if (pm_runtime_active (sdev -> dev ))
160
- snd_sof_ipc_set_get_comp_data (sdev -> ipc , scontrol ,
161
- SOF_IPC_COMP_SET_VALUE ,
162
- SOF_CTRL_TYPE_VALUE_CHAN_GET ,
163
- SOF_CTRL_CMD_ENUM ,
164
- true);
156
+ snd_sof_ipc_set_get_comp_data (scomp , scontrol ,
157
+ SOF_IPC_COMP_SET_VALUE ,
158
+ SOF_CTRL_TYPE_VALUE_CHAN_GET ,
159
+ SOF_CTRL_CMD_ENUM , true);
165
160
166
161
return 0 ;
167
162
}
@@ -172,22 +167,22 @@ int snd_sof_bytes_get(struct snd_kcontrol *kcontrol,
172
167
struct soc_bytes_ext * be =
173
168
(struct soc_bytes_ext * )kcontrol -> private_value ;
174
169
struct snd_sof_control * scontrol = be -> dobj .private ;
175
- struct snd_sof_dev * sdev = scontrol -> sdev ;
170
+ struct snd_soc_component * scomp = scontrol -> scomp ;
176
171
struct sof_ipc_ctrl_data * cdata = scontrol -> control_data ;
177
172
struct sof_abi_hdr * data = cdata -> data ;
178
173
size_t size ;
179
174
int ret = 0 ;
180
175
181
176
if (be -> max > sizeof (ucontrol -> value .bytes .data )) {
182
- dev_err_ratelimited (sdev -> dev ,
177
+ dev_err_ratelimited (scomp -> dev ,
183
178
"error: data max %d exceeds ucontrol data array size\n" ,
184
179
be -> max );
185
180
return - EINVAL ;
186
181
}
187
182
188
183
size = data -> size + sizeof (* data );
189
184
if (size > be -> max ) {
190
- dev_err_ratelimited (sdev -> dev ,
185
+ dev_err_ratelimited (scomp -> dev ,
191
186
"error: DSP sent %zu bytes max is %d\n" ,
192
187
size , be -> max );
193
188
ret = - EINVAL ;
@@ -207,20 +202,20 @@ int snd_sof_bytes_put(struct snd_kcontrol *kcontrol,
207
202
struct soc_bytes_ext * be =
208
203
(struct soc_bytes_ext * )kcontrol -> private_value ;
209
204
struct snd_sof_control * scontrol = be -> dobj .private ;
210
- struct snd_sof_dev * sdev = scontrol -> sdev ;
205
+ struct snd_soc_component * scomp = scontrol -> scomp ;
211
206
struct sof_ipc_ctrl_data * cdata = scontrol -> control_data ;
212
207
struct sof_abi_hdr * data = cdata -> data ;
213
208
size_t size = data -> size + sizeof (* data );
214
209
215
210
if (be -> max > sizeof (ucontrol -> value .bytes .data )) {
216
- dev_err_ratelimited (sdev -> dev ,
211
+ dev_err_ratelimited (scomp -> dev ,
217
212
"error: data max %d exceeds ucontrol data array size\n" ,
218
213
be -> max );
219
214
return - EINVAL ;
220
215
}
221
216
222
217
if (size > be -> max ) {
223
- dev_err_ratelimited (sdev -> dev ,
218
+ dev_err_ratelimited (scomp -> dev ,
224
219
"error: size too big %zu bytes max is %d\n" ,
225
220
size , be -> max );
226
221
return - EINVAL ;
@@ -230,12 +225,10 @@ int snd_sof_bytes_put(struct snd_kcontrol *kcontrol,
230
225
memcpy (data , ucontrol -> value .bytes .data , size );
231
226
232
227
/* notify DSP of byte control updates */
233
- if (pm_runtime_active (sdev -> dev ))
234
- snd_sof_ipc_set_get_comp_data (sdev -> ipc , scontrol ,
235
- SOF_IPC_COMP_SET_DATA ,
236
- SOF_CTRL_TYPE_DATA_SET ,
237
- scontrol -> cmd ,
238
- true);
228
+ snd_sof_ipc_set_get_comp_data (scomp , scontrol ,
229
+ SOF_IPC_COMP_SET_DATA ,
230
+ SOF_CTRL_TYPE_DATA_SET ,
231
+ scontrol -> cmd , true);
239
232
240
233
return 0 ;
241
234
}
@@ -247,7 +240,7 @@ int snd_sof_bytes_ext_put(struct snd_kcontrol *kcontrol,
247
240
struct soc_bytes_ext * be =
248
241
(struct soc_bytes_ext * )kcontrol -> private_value ;
249
242
struct snd_sof_control * scontrol = be -> dobj .private ;
250
- struct snd_sof_dev * sdev = scontrol -> sdev ;
243
+ struct snd_soc_component * scomp = scontrol -> scomp ;
251
244
struct sof_ipc_ctrl_data * cdata = scontrol -> control_data ;
252
245
struct snd_ctl_tlv header ;
253
246
const struct snd_ctl_tlv __user * tlvd =
@@ -263,14 +256,14 @@ int snd_sof_bytes_ext_put(struct snd_kcontrol *kcontrol,
263
256
264
257
/* be->max is coming from topology */
265
258
if (header .length > be -> max ) {
266
- dev_err_ratelimited (sdev -> dev , "error: Bytes data size %d exceeds max %d.\n" ,
259
+ dev_err_ratelimited (scomp -> dev , "error: Bytes data size %d exceeds max %d.\n" ,
267
260
header .length , be -> max );
268
261
return - EINVAL ;
269
262
}
270
263
271
264
/* Check that header id matches the command */
272
265
if (header .numid != scontrol -> cmd ) {
273
- dev_err_ratelimited (sdev -> dev ,
266
+ dev_err_ratelimited (scomp -> dev ,
274
267
"error: incorrect numid %d\n" ,
275
268
header .numid );
276
269
return - EINVAL ;
@@ -280,30 +273,28 @@ int snd_sof_bytes_ext_put(struct snd_kcontrol *kcontrol,
280
273
return - EFAULT ;
281
274
282
275
if (cdata -> data -> magic != SOF_ABI_MAGIC ) {
283
- dev_err_ratelimited (sdev -> dev ,
276
+ dev_err_ratelimited (scomp -> dev ,
284
277
"error: Wrong ABI magic 0x%08x.\n" ,
285
278
cdata -> data -> magic );
286
279
return - EINVAL ;
287
280
}
288
281
289
282
if (SOF_ABI_VERSION_INCOMPATIBLE (SOF_ABI_VERSION , cdata -> data -> abi )) {
290
- dev_err_ratelimited (sdev -> dev , "error: Incompatible ABI version 0x%08x.\n" ,
283
+ dev_err_ratelimited (scomp -> dev , "error: Incompatible ABI version 0x%08x.\n" ,
291
284
cdata -> data -> abi );
292
285
return - EINVAL ;
293
286
}
294
287
295
288
if (cdata -> data -> size + sizeof (const struct sof_abi_hdr ) > be -> max ) {
296
- dev_err_ratelimited (sdev -> dev , "error: Mismatch in ABI data size (truncated?).\n" );
289
+ dev_err_ratelimited (scomp -> dev , "error: Mismatch in ABI data size (truncated?).\n" );
297
290
return - EINVAL ;
298
291
}
299
292
300
293
/* notify DSP of byte control updates */
301
- if (pm_runtime_active (sdev -> dev ))
302
- snd_sof_ipc_set_get_comp_data (sdev -> ipc , scontrol ,
303
- SOF_IPC_COMP_SET_DATA ,
304
- SOF_CTRL_TYPE_DATA_SET ,
305
- scontrol -> cmd ,
306
- true);
294
+ snd_sof_ipc_set_get_comp_data (scomp , scontrol ,
295
+ SOF_IPC_COMP_SET_DATA ,
296
+ SOF_CTRL_TYPE_DATA_SET ,
297
+ scontrol -> cmd , true);
307
298
308
299
return 0 ;
309
300
}
@@ -315,7 +306,7 @@ int snd_sof_bytes_ext_get(struct snd_kcontrol *kcontrol,
315
306
struct soc_bytes_ext * be =
316
307
(struct soc_bytes_ext * )kcontrol -> private_value ;
317
308
struct snd_sof_control * scontrol = be -> dobj .private ;
318
- struct snd_sof_dev * sdev = scontrol -> sdev ;
309
+ struct snd_soc_component * scomp = scontrol -> scomp ;
319
310
struct sof_ipc_ctrl_data * cdata = scontrol -> control_data ;
320
311
struct snd_ctl_tlv header ;
321
312
struct snd_ctl_tlv __user * tlvd =
@@ -338,7 +329,7 @@ int snd_sof_bytes_ext_get(struct snd_kcontrol *kcontrol,
338
329
339
330
/* check data size doesn't exceed max coming from topology */
340
331
if (data_size > be -> max ) {
341
- dev_err_ratelimited (sdev -> dev , "error: user data size %d exceeds max size %d.\n" ,
332
+ dev_err_ratelimited (scomp -> dev , "error: user data size %d exceeds max size %d.\n" ,
342
333
data_size , be -> max );
343
334
ret = - EINVAL ;
344
335
goto out ;
0 commit comments