{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, \
   .name = xname, \
   .index = xindex, \
-  .access = SNDRV_CTL_ELEM_ACCESS_READ, \
+  .access = SNDRV_CTL_ELEM_ACCESS_READWRITE |\
+       SNDRV_CTL_ELEM_ACCESS_VOLATILE, \
   .info = snd_hdspm_info_system_sample_rate, \
+  .put = snd_hdspm_put_system_sample_rate, \
   .get = snd_hdspm_get_system_sample_rate \
 }
 
        return 0;
 }
 
+static int snd_hdspm_put_system_sample_rate(struct snd_kcontrol *kcontrol,
+                                           struct snd_ctl_elem_value *
+                                           ucontrol)
+{
+       struct hdspm *hdspm = snd_kcontrol_chip(kcontrol);
+
+       hdspm_set_dds_value(hdspm, ucontrol->value.enumerated.item[0]);
+       return 0;
+}
+
 
 /**
  * Returns the WordClock sample rate class for the given card.