ALSA: HDA - remove the custom implementation for the audio LED trigger
[sfrench/cifs-2.6.git] / sound / pci / hda / hda_codec.c
index 2026f1ccaf5a7c62e4ffb7e45aeddd2dcac9b2ca..e54e39b35709718afcdeba3976148f683bf38bc9 100644 (file)
@@ -1952,7 +1952,7 @@ static int add_follower(struct hda_codec *codec,
 int __snd_hda_add_vmaster(struct hda_codec *codec, char *name,
                          unsigned int *tlv, const char * const *followers,
                          const char *suffix, bool init_follower_vol,
-                         struct snd_kcontrol **ctl_ret)
+                         unsigned int access, struct snd_kcontrol **ctl_ret)
 {
        struct snd_kcontrol *kctl;
        int err;
@@ -1968,6 +1968,7 @@ int __snd_hda_add_vmaster(struct hda_codec *codec, char *name,
        kctl = snd_ctl_make_virtual_master(name, tlv);
        if (!kctl)
                return -ENOMEM;
+       kctl->vd[0].access |= access;
        err = snd_hda_ctl_add(codec, 0, kctl);
        if (err < 0)
                return err;
@@ -1994,87 +1995,29 @@ int __snd_hda_add_vmaster(struct hda_codec *codec, char *name,
 }
 EXPORT_SYMBOL_GPL(__snd_hda_add_vmaster);
 
-/*
- * mute-LED control using vmaster
- */
-static int vmaster_mute_mode_info(struct snd_kcontrol *kcontrol,
-                                 struct snd_ctl_elem_info *uinfo)
-{
-       static const char * const texts[] = {
-               "On", "Off", "Follow Master"
-       };
-
-       return snd_ctl_enum_info(uinfo, 1, 3, texts);
-}
-
-static int vmaster_mute_mode_get(struct snd_kcontrol *kcontrol,
-                                struct snd_ctl_elem_value *ucontrol)
-{
-       struct hda_vmaster_mute_hook *hook = snd_kcontrol_chip(kcontrol);
-       ucontrol->value.enumerated.item[0] = hook->mute_mode;
-       return 0;
-}
-
-static int vmaster_mute_mode_put(struct snd_kcontrol *kcontrol,
-                                struct snd_ctl_elem_value *ucontrol)
-{
-       struct hda_vmaster_mute_hook *hook = snd_kcontrol_chip(kcontrol);
-       unsigned int old_mode = hook->mute_mode;
-
-       hook->mute_mode = ucontrol->value.enumerated.item[0];
-       if (hook->mute_mode > HDA_VMUTE_FOLLOW_MASTER)
-               hook->mute_mode = HDA_VMUTE_FOLLOW_MASTER;
-       if (old_mode == hook->mute_mode)
-               return 0;
-       snd_hda_sync_vmaster_hook(hook);
-       return 1;
-}
-
-static const struct snd_kcontrol_new vmaster_mute_mode = {
-       .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
-       .name = "Mute-LED Mode",
-       .info = vmaster_mute_mode_info,
-       .get = vmaster_mute_mode_get,
-       .put = vmaster_mute_mode_put,
-};
-
 /* meta hook to call each driver's vmaster hook */
 static void vmaster_hook(void *private_data, int enabled)
 {
        struct hda_vmaster_mute_hook *hook = private_data;
 
-       if (hook->mute_mode != HDA_VMUTE_FOLLOW_MASTER)
-               enabled = hook->mute_mode;
        hook->hook(hook->codec, enabled);
 }
 
 /**
- * snd_hda_add_vmaster_hook - Add a vmaster hook for mute-LED
+ * snd_hda_add_vmaster_hook - Add a vmaster hw specific hook
  * @codec: the HDA codec
  * @hook: the vmaster hook object
- * @expose_enum_ctl: flag to create an enum ctl
  *
- * Add a mute-LED hook with the given vmaster switch kctl.
- * When @expose_enum_ctl is set, "Mute-LED Mode" control is automatically
- * created and associated with the given hook.
+ * Add a hw specific hook (like EAPD) with the given vmaster switch kctl.
  */
 int snd_hda_add_vmaster_hook(struct hda_codec *codec,
-                            struct hda_vmaster_mute_hook *hook,
-                            bool expose_enum_ctl)
+                            struct hda_vmaster_mute_hook *hook)
 {
-       struct snd_kcontrol *kctl;
-
        if (!hook->hook || !hook->sw_kctl)
                return 0;
        hook->codec = codec;
-       hook->mute_mode = HDA_VMUTE_FOLLOW_MASTER;
        snd_ctl_add_vmaster_hook(hook->sw_kctl, vmaster_hook, hook);
-       if (!expose_enum_ctl)
-               return 0;
-       kctl = snd_ctl_new1(&vmaster_mute_mode, hook);
-       if (!kctl)
-               return -ENOMEM;
-       return snd_hda_ctl_add(codec, 0, kctl);
+       return 0;
 }
 EXPORT_SYMBOL_GPL(snd_hda_add_vmaster_hook);