diff options
-rw-r--r-- | include/sound/ak4xxx-adda.h | 3 | ||||
-rw-r--r-- | sound/i2c/other/ak4xxx-adda.c | 25 |
2 files changed, 27 insertions, 1 deletions
diff --git a/include/sound/ak4xxx-adda.h b/include/sound/ak4xxx-adda.h index 3d9888492026..65ddfa3cac1f 100644 --- a/include/sound/ak4xxx-adda.h +++ b/include/sound/ak4xxx-adda.h | |||
@@ -53,7 +53,8 @@ struct snd_akm4xxx { | |||
53 | unsigned int idx_offset; /* control index offset */ | 53 | unsigned int idx_offset; /* control index offset */ |
54 | enum { | 54 | enum { |
55 | SND_AK4524, SND_AK4528, SND_AK4529, | 55 | SND_AK4524, SND_AK4528, SND_AK4529, |
56 | SND_AK4355, SND_AK4358, SND_AK4381 | 56 | SND_AK4355, SND_AK4358, SND_AK4381, |
57 | SND_AK5365 | ||
57 | } type; | 58 | } type; |
58 | unsigned int *num_stereo; /* array of combined counts | 59 | unsigned int *num_stereo; /* array of combined counts |
59 | * for the mixer | 60 | * for the mixer |
diff --git a/sound/i2c/other/ak4xxx-adda.c b/sound/i2c/other/ak4xxx-adda.c index dc7cc2001b74..7d562f084207 100644 --- a/sound/i2c/other/ak4xxx-adda.c +++ b/sound/i2c/other/ak4xxx-adda.c | |||
@@ -598,6 +598,31 @@ int snd_akm4xxx_build_controls(struct snd_akm4xxx *ak) | |||
598 | if (err < 0) | 598 | if (err < 0) |
599 | goto __error; | 599 | goto __error; |
600 | } | 600 | } |
601 | |||
602 | if (ak->type == SND_AK5365) { | ||
603 | memset(ctl, 0, sizeof(*ctl)); | ||
604 | if (ak->channel_names == NULL) | ||
605 | strcpy(ctl->id.name, "Capture Volume"); | ||
606 | else | ||
607 | strcpy(ctl->id.name, ak->channel_names[0]); | ||
608 | ctl->id.index = ak->idx_offset * 2; | ||
609 | ctl->id.iface = SNDRV_CTL_ELEM_IFACE_MIXER; | ||
610 | ctl->count = 1; | ||
611 | ctl->info = snd_akm4xxx_stereo_volume_info; | ||
612 | ctl->get = snd_akm4xxx_stereo_volume_get; | ||
613 | ctl->put = snd_akm4xxx_stereo_volume_put; | ||
614 | /* Registers 4 & 5 (see AK5365 data sheet, pages 34 and 35): | ||
615 | * valid values are from 0x00 (mute) to 0x98 (+12dB). */ | ||
616 | ctl->private_value = | ||
617 | AK_COMPOSE(0, 4, 0, 0x98); | ||
618 | ctl->private_data = ak; | ||
619 | err = snd_ctl_add(ak->card, | ||
620 | snd_ctl_new(ctl, SNDRV_CTL_ELEM_ACCESS_READ| | ||
621 | SNDRV_CTL_ELEM_ACCESS_WRITE)); | ||
622 | if (err < 0) | ||
623 | goto __error; | ||
624 | } | ||
625 | |||
601 | if (ak->type == SND_AK4355 || ak->type == SND_AK4358) | 626 | if (ak->type == SND_AK4355 || ak->type == SND_AK4358) |
602 | num_emphs = 1; | 627 | num_emphs = 1; |
603 | else | 628 | else |