Skip to content

Commit

Permalink
ALSA: hda - use dell_micmute_led_set() instead of dell_app_wmi_led_set()
Browse files Browse the repository at this point in the history
The dell_app_wmi_led_set() method introduced in commit db6d8cc
("dell-led: add mic mute led interface") was implemented as an easily
extensible entry point for other modules to set the state of various
LEDs.  However, almost three years later it is still only used to
control the mic mute LED, so it will be replaced with direct calls to
dell_micmute_led_set().

Signed-off-by: Michał Kępień <kernel@kempniu.pl>
Tested-by: Alex Hung <alex.hung@canonical.com>
Reviewed-by: Pali Rohár <pali.rohar@gmail.com>
Acked-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
  • Loading branch information
Michał Kępień authored and Jacek Anaszewski committed Mar 6, 2017
1 parent 6dbea85 commit fa5923c
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 29 deletions.
20 changes: 2 additions & 18 deletions drivers/leds/dell-led.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ MODULE_ALIAS("wmi:" DELL_LED_BIOS_GUID);
#define GLOBAL_MIC_MUTE_ENABLE 0x364
#define GLOBAL_MIC_MUTE_DISABLE 0x365

static int dell_micmute_led_set(int state)
int dell_micmute_led_set(int state)
{
struct calling_interface_buffer *buffer;
struct calling_interface_token *token;
Expand All @@ -69,23 +69,7 @@ static int dell_micmute_led_set(int state)

return state;
}

int dell_app_wmi_led_set(int whichled, int on)
{
int state = 0;

switch (whichled) {
case DELL_LED_MICMUTE:
state = dell_micmute_led_set(on);
break;
default:
pr_warn("led type %x is not supported\n", whichled);
break;
}

return state;
}
EXPORT_SYMBOL_GPL(dell_app_wmi_led_set);
EXPORT_SYMBOL_GPL(dell_micmute_led_set);

struct bios_args {
unsigned char length;
Expand Down
6 changes: 1 addition & 5 deletions include/linux/dell-led.h
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
#ifndef __DELL_LED_H__
#define __DELL_LED_H__

enum {
DELL_LED_MICMUTE,
};

int dell_app_wmi_led_set(int whichled, int on);
int dell_micmute_led_set(int on);

#endif
12 changes: 6 additions & 6 deletions sound/pci/hda/dell_wmi_helper.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#include <linux/dell-led.h>

static int dell_led_value;
static int (*dell_led_set_func)(int, int);
static int (*dell_led_set_func)(int);
static void (*dell_old_cap_hook)(struct hda_codec *,
struct snd_kcontrol *,
struct snd_ctl_elem_value *);
Expand All @@ -27,7 +27,7 @@ static void update_dell_wmi_micmute_led(struct hda_codec *codec,
return;
dell_led_value = val;
if (dell_led_set_func)
dell_led_set_func(DELL_LED_MICMUTE, dell_led_value);
dell_led_set_func(dell_led_value);
}
}

Expand All @@ -40,14 +40,14 @@ static void alc_fixup_dell_wmi(struct hda_codec *codec,

if (action == HDA_FIXUP_ACT_PROBE) {
if (!dell_led_set_func)
dell_led_set_func = symbol_request(dell_app_wmi_led_set);
dell_led_set_func = symbol_request(dell_micmute_led_set);
if (!dell_led_set_func) {
codec_warn(codec, "Failed to find dell wmi symbol dell_app_wmi_led_set\n");
codec_warn(codec, "Failed to find dell wmi symbol dell_micmute_led_set\n");
return;
}

removefunc = true;
if (dell_led_set_func(DELL_LED_MICMUTE, false) >= 0) {
if (dell_led_set_func(false) >= 0) {
dell_led_value = 0;
if (spec->gen.num_adc_nids > 1 && !spec->gen.dyn_adc_switch)
codec_dbg(codec, "Skipping micmute LED control due to several ADCs");
Expand All @@ -61,7 +61,7 @@ static void alc_fixup_dell_wmi(struct hda_codec *codec,
}

if (dell_led_set_func && (action == HDA_FIXUP_ACT_FREE || removefunc)) {
symbol_put(dell_app_wmi_led_set);
symbol_put(dell_micmute_led_set);
dell_led_set_func = NULL;
dell_old_cap_hook = NULL;
}
Expand Down

0 comments on commit fa5923c

Please sign in to comment.