]> git.alsa-project.org Git - alsa-utils.git/commitdiff
alsactl init: added support for Lenovo T61
authorJaroslav Kysela <perex@t61.perex-int.cz>
Thu, 31 Jul 2008 14:40:06 +0000 (16:40 +0200)
committerJaroslav Kysela <perex@t61.perex-int.cz>
Thu, 31 Jul 2008 14:40:06 +0000 (16:40 +0200)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
alsactl/init/hda
alsactl/init_parse.c

index 7621c67b0111c544a245f03b77e18a057c1d0580..49051955b1d2f7e39d1f6913ffbfbe2ec7a4b7a5 100644 (file)
@@ -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"
index 542ee749f4852703e9561122e54912c3bdd27931..a99362dbf688e440189e5e6099356231374ae160 100644 (file)
@@ -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);