From 7b3c488e4edaa722314d6527948a663e46867a0c Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Thu, 31 Jul 2008 16:40:06 +0200 Subject: [PATCH] alsactl init: added support for Lenovo T61 Signed-off-by: Jaroslav Kysela --- alsactl/init/hda | 20 ++++++++++++++++++-- alsactl/init_parse.c | 11 ++++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/alsactl/init/hda b/alsactl/init/hda index 7621c67..4905195 100644 --- a/alsactl/init/hda +++ b/alsactl/init/hda @@ -3,8 +3,12 @@ CARDINFO{mixername}=="Realtek ALC880", \ CARDINFO{components}=="*HDA:10ec0880 HDA:11c13026*", \ GOTO="Acer Travelmate 8100" -ERROR="Unknown hardware: \"$cardinfo{mixername}\" \"$cardinfo{components}\"\n" -ERROR="Hardware is left uninitialized" +CARDINFO{mixername}=="Analog Devices AD1984", \ + ATTR{subsystem_vendor}=="0x17aa", ATTR{subsystem_device}=="0x20ac", \ + GOTO="Lenovo T61" + +ERROR="Unknown hardware: \"$cardinfo{mixername}\" \"$cardinfo{components}\" \"$attr{subsystem_vendor}" \"$attr{subsystem_device}\"\n" +ERROR="Hardware is left uninitialized\n" EXIT="99" LABEL="Acer Travelmate 8100" @@ -19,3 +23,15 @@ CTL{name}="Input Source", CTL{value}="0" CTL{name}="Capture Volume", CTL{value}="65,65" CTL{name}="Capture Switch", CTL{value}="on,on" EXIT="0" + +LABEL="Lenovo T61" +# playback +CTL{reset}="mixer" +CTL{name}="Headphone Playback Switch", CTL{value}="on,on" +CTL{name}="PCM Playback Volume", CTL{value}="150,550" +# capture (Internal Mic) +CTL{name}="Input Source", CTL{value}="1" +CTL{name}="Internal Mic Boost", CTL{value}="1" +CTL{name}="Capture Volume", CTL{value}="45,45" +CTL{name}="Capture Switch", CTL{value}="on,on" +EXIT="0" diff --git a/alsactl/init_parse.c b/alsactl/init_parse.c index 542ee74..a99362d 100644 --- a/alsactl/init_parse.c +++ b/alsactl/init_parse.c @@ -602,8 +602,10 @@ static int elemid_set(struct space *space, const char *attr, const char *value) } if (strncasecmp(attr, "value", 5) == 0) { err = check_id_changed(space, 1); - if (err < 0) + if (err < 0) { + Perror(space, "control element not found"); return err; + } err = set_ctl_value(space, value); if (err < 0) { space->ctl_id_changed |= 2; @@ -1184,8 +1186,9 @@ static int parse_line(struct space *space, char *line, size_t linesize) goto invalid; } if (op == KEY_OP_ASSIGN) { + strlcpy(result, value, sizeof(result)); + apply_format(space, result, sizeof(result)); dbg("ctl assign: '%s' '%s'", value, attr); - apply_format(result, value, sizeof(result)); err = elemid_set(space, attr, result); if (space->program_result) { free(space->program_result); @@ -1193,8 +1196,10 @@ static int parse_line(struct space *space, char *line, size_t linesize) } snprintf(string, sizeof(string), "%i", err); space->program_result = strdup(string); - if (err < 0 || space->program_result == NULL) + if (err < 0 || space->program_result == NULL) { + err = 0; break; + } } else if (op == KEY_OP_MATCH || op == KEY_OP_NOMATCH) { dbg("ctl match: '%s' '%s'", value, attr); temp = (char *)elemid_get(space, attr); -- 2.47.1