aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorAriff Abdullah <ariff@FreeBSD.org>2007-11-30 15:12:06 +0000
committerAriff Abdullah <ariff@FreeBSD.org>2007-11-30 15:12:06 +0000
commit1983dff4e5840952dd8638b96eee44969c9bede4 (patch)
treefb5e796e8760ae1d824d7c4b17c292169c8478e8 /sys/dev
parentf656099089e4fac40a5564dc238a7c68df9914ea (diff)
Notes
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/sound/pci/hda/hdac.c33
1 files changed, 29 insertions, 4 deletions
diff --git a/sys/dev/sound/pci/hda/hdac.c b/sys/dev/sound/pci/hda/hdac.c
index d9cdff981c5b..e695f8d1f520 100644
--- a/sys/dev/sound/pci/hda/hdac.c
+++ b/sys/dev/sound/pci/hda/hdac.c
@@ -81,7 +81,7 @@
#include "mixer_if.h"
-#define HDA_DRV_TEST_REV "20071122_0049"
+#define HDA_DRV_TEST_REV "20071129_0050"
#define HDA_WIDGET_PARSER_REV 1
SND_DECLARE_FILE("$FreeBSD$");
@@ -443,6 +443,7 @@ static const struct {
{ HDA_NVIDIA_MCP61_1, "NVidia MCP61" },
{ HDA_NVIDIA_MCP61_2, "NVidia MCP61" },
{ HDA_NVIDIA_MCP65_1, "NVidia MCP65" },
+ { HDA_NVIDIA_MCP65_2, "NVidia MCP65" },
{ HDA_NVIDIA_MCP67_1, "NVidia MCP67" },
{ HDA_NVIDIA_MCP67_2, "NVidia MCP67" },
{ HDA_ATI_SB450, "ATI SB450" },
@@ -539,6 +540,7 @@ static const struct {
#define ANALOGDEVICES_VENDORID 0x11d4
#define HDA_CODEC_AD1981HD HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1981)
#define HDA_CODEC_AD1983 HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1983)
+#define HDA_CODEC_AD1984 HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1984)
#define HDA_CODEC_AD1986A HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1986)
#define HDA_CODEC_AD1988 HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x1988)
#define HDA_CODEC_AD1988B HDA_CODEC_CONSTRUCT(ANALOGDEVICES, 0x198b)
@@ -608,6 +610,7 @@ static const struct {
{ HDA_CODEC_ALC888, "Realtek ALC888" },
{ HDA_CODEC_AD1981HD, "Analog Devices AD1981HD" },
{ HDA_CODEC_AD1983, "Analog Devices AD1983" },
+ { HDA_CODEC_AD1984, "Analog Devices AD1984" },
{ HDA_CODEC_AD1986A, "Analog Devices AD1986A" },
{ HDA_CODEC_AD1988, "Analog Devices AD1988" },
{ HDA_CODEC_AD1988B, "Analog Devices AD1988B" },
@@ -3183,9 +3186,15 @@ hdac_stream_setup(struct hdac_chan *ch)
);
hdac_command(sc,
HDA_CMD_SET_CONV_FMT(cad, ch->io[i], fmt), cad);
- hdac_command(sc,
- HDA_CMD_SET_CONV_STREAM_CHAN(cad, ch->io[i],
- (chn < totalchn) ? ((ch->sid << 4) | chn) : 0), cad);
+ if (ch->dir == PCMDIR_REC)
+ hdac_command(sc,
+ HDA_CMD_SET_CONV_STREAM_CHAN(cad, ch->io[i],
+ (chn < totalchn) ? ((ch->sid << 4) | chn) : 0),
+ cad);
+ else
+ hdac_command(sc,
+ HDA_CMD_SET_CONV_STREAM_CHAN(cad, ch->io[i],
+ ch->sid << 4), cad);
chn +=
HDA_PARAM_AUDIO_WIDGET_CAP_STEREO(w->param.widget_cap) ?
2 : 1;
@@ -4310,6 +4319,22 @@ hdac_vendor_patch_parse(struct hdac_devinfo *devinfo)
}
}
break;
+ case HDA_CODEC_ALC268:
+ if (HDA_DEV_MATCH(ACER_ALL_SUBVENDOR, subvendor)) {
+ w = hdac_widget_get(devinfo, 29);
+ if (w != NULL) {
+ w->enable = 1;
+ w->type =
+ HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_BEEP_WIDGET;
+ w->param.widget_cap &=
+ ~HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_MASK;
+ w->param.widget_cap |=
+ HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_BEEP_WIDGET <<
+ HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_SHIFT;
+ strlcpy(w->name, "beep widget", sizeof(w->name));
+ }
+ }
+ break;
case HDA_CODEC_ALC262:
if (subvendor == HP_DC7700_SUBVENDOR) {
ctl = hdac_audio_ctl_amp_get(devinfo, 22, 0, 1);