Lines Matching refs:scontrol
15 static int sof_ipc4_set_get_kcontrol_data(struct snd_sof_control *scontrol, in sof_ipc4_set_get_kcontrol_data() argument
18 struct sof_ipc4_control_data *cdata = scontrol->ipc_control_data; in sof_ipc4_set_get_kcontrol_data()
19 struct snd_soc_component *scomp = scontrol->scomp; in sof_ipc4_set_get_kcontrol_data()
29 if (swidget->comp_id == scontrol->comp_id) { in sof_ipc4_set_get_kcontrol_data()
36 dev_err(scomp->dev, "Failed to find widget for kcontrol %s\n", scontrol->name); in sof_ipc4_set_get_kcontrol_data()
62 if (!scontrol->old_ipc_control_data) in sof_ipc4_set_get_kcontrol_data()
68 memcpy(scontrol->ipc_control_data, scontrol->old_ipc_control_data, in sof_ipc4_set_get_kcontrol_data()
69 scontrol->max_size); in sof_ipc4_set_get_kcontrol_data()
70 kfree(scontrol->old_ipc_control_data); in sof_ipc4_set_get_kcontrol_data()
71 scontrol->old_ipc_control_data = NULL; in sof_ipc4_set_get_kcontrol_data()
87 struct snd_sof_control *scontrol, bool lock) in sof_ipc4_set_volume_data() argument
89 struct sof_ipc4_control_data *cdata = scontrol->ipc_control_data; in sof_ipc4_set_volume_data()
99 for (i = 1; i < scontrol->num_channels; i++) { in sof_ipc4_set_volume_data()
110 for (i = 0; i < scontrol->num_channels; i++) { in sof_ipc4_set_volume_data()
127 ret = sof_ipc4_set_get_kcontrol_data(scontrol, true, lock); in sof_ipc4_set_volume_data()
132 scontrol->name); in sof_ipc4_set_volume_data()
143 static bool sof_ipc4_volume_put(struct snd_sof_control *scontrol, in sof_ipc4_volume_put() argument
146 struct sof_ipc4_control_data *cdata = scontrol->ipc_control_data; in sof_ipc4_volume_put()
147 struct snd_soc_component *scomp = scontrol->scomp; in sof_ipc4_volume_put()
149 unsigned int channels = scontrol->num_channels; in sof_ipc4_volume_put()
159 scontrol->volume_table, scontrol->max + 1); in sof_ipc4_volume_put()
171 if (swidget->comp_id == scontrol->comp_id) { in sof_ipc4_volume_put()
178 dev_err(scomp->dev, "Failed to find widget for kcontrol %s\n", scontrol->name); in sof_ipc4_volume_put()
182 ret = sof_ipc4_set_volume_data(sdev, swidget, scontrol, true); in sof_ipc4_volume_put()
189 static int sof_ipc4_volume_get(struct snd_sof_control *scontrol, in sof_ipc4_volume_get() argument
192 struct sof_ipc4_control_data *cdata = scontrol->ipc_control_data; in sof_ipc4_volume_get()
193 unsigned int channels = scontrol->num_channels; in sof_ipc4_volume_get()
198 scontrol->volume_table, in sof_ipc4_volume_get()
199 scontrol->max + 1); in sof_ipc4_volume_get()
205 struct snd_sof_control *scontrol, in sof_ipc4_set_get_bytes_data() argument
208 struct sof_ipc4_control_data *cdata = scontrol->ipc_control_data; in sof_ipc4_set_get_bytes_data()
222 ret = sof_ipc4_set_get_kcontrol_data(scontrol, set, lock); in sof_ipc4_set_get_bytes_data()
226 scontrol->name); in sof_ipc4_set_get_bytes_data()
234 static int sof_ipc4_bytes_put(struct snd_sof_control *scontrol, in sof_ipc4_bytes_put() argument
237 struct sof_ipc4_control_data *cdata = scontrol->ipc_control_data; in sof_ipc4_bytes_put()
238 struct snd_soc_component *scomp = scontrol->scomp; in sof_ipc4_bytes_put()
243 if (scontrol->max_size > sizeof(ucontrol->value.bytes.data)) { in sof_ipc4_bytes_put()
246 scontrol->max_size); in sof_ipc4_bytes_put()
251 if (data->size > scontrol->max_size - sizeof(*data)) { in sof_ipc4_bytes_put()
254 data->size, scontrol->max_size - sizeof(*data)); in sof_ipc4_bytes_put()
263 sof_ipc4_set_get_bytes_data(sdev, scontrol, true, true); in sof_ipc4_bytes_put()
268 static int sof_ipc4_bytes_get(struct snd_sof_control *scontrol, in sof_ipc4_bytes_get() argument
271 struct sof_ipc4_control_data *cdata = scontrol->ipc_control_data; in sof_ipc4_bytes_get()
272 struct snd_soc_component *scomp = scontrol->scomp; in sof_ipc4_bytes_get()
276 if (scontrol->max_size > sizeof(ucontrol->value.bytes.data)) { in sof_ipc4_bytes_get()
278 scontrol->max_size); in sof_ipc4_bytes_get()
282 if (data->size > scontrol->max_size - sizeof(*data)) { in sof_ipc4_bytes_get()
285 data->size, scontrol->max_size - sizeof(*data)); in sof_ipc4_bytes_get()
297 static int sof_ipc4_bytes_ext_put(struct snd_sof_control *scontrol, in sof_ipc4_bytes_ext_put() argument
302 struct sof_ipc4_control_data *cdata = scontrol->ipc_control_data; in sof_ipc4_bytes_ext_put()
303 struct snd_soc_component *scomp = scontrol->scomp; in sof_ipc4_bytes_ext_put()
326 if (header.length > scontrol->max_size) { in sof_ipc4_bytes_ext_put()
329 header.length, scontrol->max_size); in sof_ipc4_bytes_ext_put()
343 if (abi_hdr.size > scontrol->max_size - sizeof(abi_hdr)) { in sof_ipc4_bytes_ext_put()
346 abi_hdr.size, scontrol->max_size - sizeof(abi_hdr)); in sof_ipc4_bytes_ext_put()
350 if (!scontrol->old_ipc_control_data) { in sof_ipc4_bytes_ext_put()
352 scontrol->old_ipc_control_data = kmemdup(scontrol->ipc_control_data, in sof_ipc4_bytes_ext_put()
353 scontrol->max_size, GFP_KERNEL); in sof_ipc4_bytes_ext_put()
354 if (!scontrol->old_ipc_control_data) in sof_ipc4_bytes_ext_put()
360 memcpy(scontrol->ipc_control_data, scontrol->old_ipc_control_data, in sof_ipc4_bytes_ext_put()
361 scontrol->max_size); in sof_ipc4_bytes_ext_put()
362 kfree(scontrol->old_ipc_control_data); in sof_ipc4_bytes_ext_put()
363 scontrol->old_ipc_control_data = NULL; in sof_ipc4_bytes_ext_put()
367 return sof_ipc4_set_get_bytes_data(sdev, scontrol, true, true); in sof_ipc4_bytes_ext_put()
370 static int _sof_ipc4_bytes_ext_get(struct snd_sof_control *scontrol, in _sof_ipc4_bytes_ext_get() argument
375 struct sof_ipc4_control_data *cdata = scontrol->ipc_control_data; in _sof_ipc4_bytes_ext_get()
376 struct snd_soc_component *scomp = scontrol->scomp; in _sof_ipc4_bytes_ext_get()
393 int ret = sof_ipc4_set_get_bytes_data(sdev, scontrol, false, true); in _sof_ipc4_bytes_ext_get()
402 if (data->size > scontrol->max_size - sizeof(*data)) { in _sof_ipc4_bytes_ext_get()
405 data->size, scontrol->max_size - sizeof(*data)); in _sof_ipc4_bytes_ext_get()
415 header.numid = scontrol->comp_id; in _sof_ipc4_bytes_ext_get()
427 static int sof_ipc4_bytes_ext_get(struct snd_sof_control *scontrol, in sof_ipc4_bytes_ext_get() argument
431 return _sof_ipc4_bytes_ext_get(scontrol, binary_data, size, false); in sof_ipc4_bytes_ext_get()
434 static int sof_ipc4_bytes_ext_volatile_get(struct snd_sof_control *scontrol, in sof_ipc4_bytes_ext_volatile_get() argument
438 return _sof_ipc4_bytes_ext_get(scontrol, binary_data, size, true); in sof_ipc4_bytes_ext_volatile_get()
444 struct snd_sof_control *scontrol; in sof_ipc4_widget_kcontrol_setup() local
447 list_for_each_entry(scontrol, &sdev->kcontrol_list, list) { in sof_ipc4_widget_kcontrol_setup()
448 if (scontrol->comp_id == swidget->comp_id) { in sof_ipc4_widget_kcontrol_setup()
449 switch (scontrol->info_type) { in sof_ipc4_widget_kcontrol_setup()
454 scontrol, false); in sof_ipc4_widget_kcontrol_setup()
457 ret = sof_ipc4_set_get_bytes_data(sdev, scontrol, in sof_ipc4_widget_kcontrol_setup()
467 scontrol->comp_id, swidget->widget->name); in sof_ipc4_widget_kcontrol_setup()
477 sof_ipc4_set_up_volume_table(struct snd_sof_control *scontrol, int tlv[SOF_TLV_ITEMS], int size) in sof_ipc4_set_up_volume_table() argument
482 scontrol->volume_table = kcalloc(size, sizeof(u32), GFP_KERNEL); in sof_ipc4_set_up_volume_table()
483 if (!scontrol->volume_table) in sof_ipc4_set_up_volume_table()
491 scontrol->volume_table[i] = q31val > SOF_IPC4_VOL_ZERO_DB ? in sof_ipc4_set_up_volume_table()