Update of /cvsroot/alsa/alsa-kernel/ppc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11932/ppc
Modified Files: tumbler.c Log Message: added input source switch to select mic/line-in. Index: tumbler.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/ppc/tumbler.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- tumbler.c 4 Mar 2004 17:53:06 -0000 1.27 +++ tumbler.c 9 Mar 2004 13:21:44 -0000 1.28 @@ -94,6 +94,7 @@ unsigned int mix_vol[VOL_IDX_LAST_MIX][2]; /* stereo volumes for tas3004 */ int drc_range; int drc_enable; + int capture_source; } pmac_tumbler_t; @@ -135,8 +136,8 @@ TAS_REG_MCS, (1<<6)|(2<<4)|0, /* normal operation, all-pass mode */ TAS_REG_MCS2, (1<<1), - /* normal output, no deemphasis, A input, power-up */ - TAS_REG_ACS, 2, + /* normal output, no deemphasis, A input, power-up, line-in */ + TAS_REG_ACS, 0, 0, /* terminator */ }; return send_init_client(i2c, regs); @@ -681,6 +682,52 @@ return 0; } +static int snapper_set_capture_source(pmac_tumbler_t *mix) +{ + return snd_pmac_keywest_write_byte(&mix->i2c, TAS_REG_ACS, + mix->capture_source ? 2 : 0); +} + +static int snapper_info_capture_source(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo) +{ + static char *texts[2] = { + "Line", "Mic" + }; + uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; + uinfo->count = 1; + uinfo->value.integer.min = 0; + uinfo->value.integer.max = 1; + if (uinfo->value.enumerated.item > 1) + uinfo->value.enumerated.item = 1; + strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]); + return 0; +} + +static int snapper_get_capture_source(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol) +{ + pmac_t *chip = snd_kcontrol_chip(kcontrol); + pmac_tumbler_t *mix = chip->mixer_data; + + snd_assert(mix, return -ENODEV); + ucontrol->value.integer.value[0] = mix->capture_source; + return 0; +} + +static int snapper_put_capture_source(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol) +{ + pmac_t *chip = snd_kcontrol_chip(kcontrol); + pmac_tumbler_t *mix = chip->mixer_data; + int change; + + snd_assert(mix, return -ENODEV); + change = ucontrol->value.integer.value[0] != mix->capture_source; + if (change) { + mix->capture_source = !!ucontrol->value.integer.value[0]; + snapper_set_capture_source(mix); + } + return change; +} + #define DEFINE_SNAPPER_MIX(xname,idx,ofs) { \ .iface = SNDRV_CTL_ELEM_IFACE_MIXER,\ .name = xname, \ @@ -754,6 +801,12 @@ .get = tumbler_get_drc_value, .put = tumbler_put_drc_value }, + { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "Input Source", /* FIXME: "Capture Source" doesn't work properly */ + .info = snapper_info_capture_source, + .get = snapper_get_capture_source, + .put = snapper_put_capture_source + }, }; static snd_kcontrol_new_t tumbler_hp_sw __initdata = { @@ -932,6 +985,7 @@ tumbler_set_mono_volume(mix, &snapper_bass_vol_info); tumbler_set_mono_volume(mix, &snapper_treble_vol_info); snapper_set_drc(mix); + snapper_set_capture_source(mix); } tumbler_set_master_volume(mix); if (chip->update_automute) ------------------------------------------------------- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click _______________________________________________ Alsa-cvslog mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-cvslog