}
 EXPORT_SYMBOL_GPL(snd_hda_mixer_amp_switch_put);
 
-/*
- * bound volume controls
- *
- * bind multiple volumes (# indices, from 0)
- */
-
-#define AMP_VAL_IDX_SHIFT      19
-#define AMP_VAL_IDX_MASK       (0x0f<<19)
-
-/**
- * snd_hda_mixer_bind_switch_get - Get callback for a bound volume control
- * @kcontrol: ctl element
- * @ucontrol: pointer to get/store the data
- *
- * The control element is supposed to have the private_value field
- * set up via HDA_BIND_MUTE*() macros.
- */
-int snd_hda_mixer_bind_switch_get(struct snd_kcontrol *kcontrol,
-                                 struct snd_ctl_elem_value *ucontrol)
-{
-       struct hda_codec *codec = snd_kcontrol_chip(kcontrol);
-       unsigned long pval;
-       int err;
-
-       mutex_lock(&codec->control_mutex);
-       pval = kcontrol->private_value;
-       kcontrol->private_value = pval & ~AMP_VAL_IDX_MASK; /* index 0 */
-       err = snd_hda_mixer_amp_switch_get(kcontrol, ucontrol);
-       kcontrol->private_value = pval;
-       mutex_unlock(&codec->control_mutex);
-       return err;
-}
-EXPORT_SYMBOL_GPL(snd_hda_mixer_bind_switch_get);
-
-/**
- * snd_hda_mixer_bind_switch_put - Put callback for a bound volume control
- * @kcontrol: ctl element
- * @ucontrol: pointer to get/store the data
- *
- * The control element is supposed to have the private_value field
- * set up via HDA_BIND_MUTE*() macros.
- */
-int snd_hda_mixer_bind_switch_put(struct snd_kcontrol *kcontrol,
-                                 struct snd_ctl_elem_value *ucontrol)
-{
-       struct hda_codec *codec = snd_kcontrol_chip(kcontrol);
-       unsigned long pval;
-       int i, indices, err = 0, change = 0;
-
-       mutex_lock(&codec->control_mutex);
-       pval = kcontrol->private_value;
-       indices = (pval & AMP_VAL_IDX_MASK) >> AMP_VAL_IDX_SHIFT;
-       for (i = 0; i < indices; i++) {
-               kcontrol->private_value = (pval & ~AMP_VAL_IDX_MASK) |
-                       (i << AMP_VAL_IDX_SHIFT);
-               err = snd_hda_mixer_amp_switch_put(kcontrol, ucontrol);
-               if (err < 0)
-                       break;
-               change |= err;
-       }
-       kcontrol->private_value = pval;
-       mutex_unlock(&codec->control_mutex);
-       return err < 0 ? err : change;
-}
-EXPORT_SYMBOL_GPL(snd_hda_mixer_bind_switch_put);
-
 /**
  * snd_hda_mixer_bind_ctls_info - Info callback for a generic bound control
  * @kcontrol: referred ctl element
 
 
 static int hda_gen_mixer_mute_put(struct snd_kcontrol *kcontrol,
                                  struct snd_ctl_elem_value *ucontrol);
+static int hda_gen_bind_mute_get(struct snd_kcontrol *kcontrol,
+                                struct snd_ctl_elem_value *ucontrol);
 static int hda_gen_bind_mute_put(struct snd_kcontrol *kcontrol,
                                 struct snd_ctl_elem_value *ucontrol);
 
        {
                .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
                .info = snd_hda_mixer_amp_switch_info,
-               .get = snd_hda_mixer_bind_switch_get,
+               .get = hda_gen_bind_mute_get,
                .put = hda_gen_bind_mute_put, /* replaced */
                .private_value = HDA_COMPOSE_AMP_VAL(0, 3, 0, 0),
        },
        return snd_hda_mixer_amp_switch_put(kcontrol, ucontrol);
 }
 
+/*
+ * Bound mute controls
+ */
+#define AMP_VAL_IDX_SHIFT      19
+#define AMP_VAL_IDX_MASK       (0x0f<<19)
+
+static int hda_gen_bind_mute_get(struct snd_kcontrol *kcontrol,
+                                struct snd_ctl_elem_value *ucontrol)
+{
+       struct hda_codec *codec = snd_kcontrol_chip(kcontrol);
+       unsigned long pval;
+       int err;
+
+       mutex_lock(&codec->control_mutex);
+       pval = kcontrol->private_value;
+       kcontrol->private_value = pval & ~AMP_VAL_IDX_MASK; /* index 0 */
+       err = snd_hda_mixer_amp_switch_get(kcontrol, ucontrol);
+       kcontrol->private_value = pval;
+       mutex_unlock(&codec->control_mutex);
+       return err;
+}
+
 static int hda_gen_bind_mute_put(struct snd_kcontrol *kcontrol,
                                 struct snd_ctl_elem_value *ucontrol)
 {
+       struct hda_codec *codec = snd_kcontrol_chip(kcontrol);
+       unsigned long pval;
+       int i, indices, err = 0, change = 0;
+
        sync_auto_mute_bits(kcontrol, ucontrol);
-       return snd_hda_mixer_bind_switch_put(kcontrol, ucontrol);
+
+       mutex_lock(&codec->control_mutex);
+       pval = kcontrol->private_value;
+       indices = (pval & AMP_VAL_IDX_MASK) >> AMP_VAL_IDX_SHIFT;
+       for (i = 0; i < indices; i++) {
+               kcontrol->private_value = (pval & ~AMP_VAL_IDX_MASK) |
+                       (i << AMP_VAL_IDX_SHIFT);
+               err = snd_hda_mixer_amp_switch_put(kcontrol, ucontrol);
+               if (err < 0)
+                       break;
+               change |= err;
+       }
+       kcontrol->private_value = pval;
+       mutex_unlock(&codec->control_mutex);
+       return err < 0 ? err : change;
 }
 
 /* any ctl assigned to the path with the given index? */
 
 #define HDA_AMP_UNMUTE 0x00
 #define HDA_AMP_VOLMASK        0x7f
 
-/* mono switch binding multiple inputs */
-#define HDA_BIND_MUTE_MONO(xname, nid, channel, indices, direction) \
-       { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, .index = 0,  \
-         .info = snd_hda_mixer_amp_switch_info, \
-         .get = snd_hda_mixer_bind_switch_get, \
-         .put = snd_hda_mixer_bind_switch_put, \
-         .private_value = HDA_COMPOSE_AMP_VAL(nid, channel, indices, direction) }
-
-/* stereo switch binding multiple inputs */
-#define HDA_BIND_MUTE(xname,nid,indices,dir) \
-       HDA_BIND_MUTE_MONO(xname,nid,3,indices,dir)
-
-int snd_hda_mixer_bind_switch_get(struct snd_kcontrol *kcontrol,
-                                 struct snd_ctl_elem_value *ucontrol);
-int snd_hda_mixer_bind_switch_put(struct snd_kcontrol *kcontrol,
-                                 struct snd_ctl_elem_value *ucontrol);
-
 /* more generic bound controls */
 struct hda_ctl_ops {
        snd_kcontrol_info_t *info;