Lines Matching defs:scontrol
723 struct snd_sof_control *scontrol;
754 list_for_each_entry(scontrol, &sdev->kcontrol_list, list) {
755 if (scontrol->comp_id == swidget->comp_id &&
756 scontrol->volume_table) {
757 min_step = scontrol->min_volume_step;
758 max_step = scontrol->max_volume_step;
759 volume->min_value = scontrol->volume_table[min_step];
760 volume->max_value = scontrol->volume_table[max_step];
761 volume->channels = scontrol->num_channels;
810 dev_err(scomp->dev, "No scontrol for widget %s\n", widget->name);
1652 static int sof_ipc3_control_load_bytes(struct snd_sof_dev *sdev, struct snd_sof_control *scontrol)
1658 if (scontrol->max_size < (sizeof(*cdata) + sizeof(struct sof_abi_hdr))) {
1660 __func__, scontrol->max_size);
1664 if (scontrol->priv_size > scontrol->max_size - sizeof(*cdata)) {
1667 scontrol->priv_size, scontrol->max_size - sizeof(*cdata));
1671 scontrol->ipc_control_data = kzalloc(scontrol->max_size, GFP_KERNEL);
1672 if (!scontrol->ipc_control_data)
1675 scontrol->size = sizeof(struct sof_ipc_ctrl_data) + scontrol->priv_size;
1677 cdata = scontrol->ipc_control_data;
1679 cdata->index = scontrol->index;
1681 if (scontrol->priv_size > 0) {
1682 memcpy(cdata->data, scontrol->priv, scontrol->priv_size);
1683 kfree(scontrol->priv);
1684 scontrol->priv = NULL;
1700 if (priv_size_check != scontrol->priv_size) {
1702 priv_size_check, scontrol->priv_size);
1710 kfree(scontrol->ipc_control_data);
1711 scontrol->ipc_control_data = NULL;
1715 static int sof_ipc3_control_load_volume(struct snd_sof_dev *sdev, struct snd_sof_control *scontrol)
1721 scontrol->size = struct_size(cdata, chanv, scontrol->num_channels);
1723 scontrol->ipc_control_data = kzalloc(scontrol->size, GFP_KERNEL);
1724 if (!scontrol->ipc_control_data)
1727 cdata = scontrol->ipc_control_data;
1728 cdata->index = scontrol->index;
1731 if (scontrol->max == 1) {
1739 for (i = 0; i < scontrol->num_channels; i++) {
1747 static int sof_ipc3_control_load_enum(struct snd_sof_dev *sdev, struct snd_sof_control *scontrol)
1752 scontrol->size = struct_size(cdata, chanv, scontrol->num_channels);
1754 scontrol->ipc_control_data = kzalloc(scontrol->size, GFP_KERNEL);
1755 if (!scontrol->ipc_control_data)
1758 cdata = scontrol->ipc_control_data;
1759 cdata->index = scontrol->index;
1765 static int sof_ipc3_control_setup(struct snd_sof_dev *sdev, struct snd_sof_control *scontrol)
1767 switch (scontrol->info_type) {
1771 return sof_ipc3_control_load_volume(sdev, scontrol);
1773 return sof_ipc3_control_load_bytes(sdev, scontrol);
1776 return sof_ipc3_control_load_enum(sdev, scontrol);
1784 static int sof_ipc3_control_free(struct snd_sof_dev *sdev, struct snd_sof_control *scontrol)
1790 fcomp.id = scontrol->comp_id;