struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
        struct snd_soc_tplg_private *private = &tw->priv;
        struct sof_ipc_comp_volume *volume;
+       struct snd_sof_control *scontrol;
+       int min_step;
+       int max_step;
        int ret;
 
        volume = kzalloc(sizeof(*volume), GFP_KERNEL);
 
        swidget->private = volume;
 
+       list_for_each_entry(scontrol, &sdev->kcontrol_list, list) {
+               if (scontrol->comp_id == swidget->comp_id) {
+                       min_step = scontrol->min_volume_step;
+                       max_step = scontrol->max_volume_step;
+                       volume->min_value = scontrol->volume_table[min_step];
+                       volume->max_value = scontrol->volume_table[max_step];
+                       volume->channels = scontrol->num_channels;
+                       break;
+               }
+       }
+
        ret = sof_ipc_tx_message(sdev->ipc, volume->comp.hdr.cmd, volume,
                                 sizeof(*volume), r, sizeof(*r));
        if (ret >= 0)