diff options
| author | Ariff Abdullah <ariff@FreeBSD.org> | 2007-11-30 15:12:06 +0000 |
|---|---|---|
| committer | Ariff Abdullah <ariff@FreeBSD.org> | 2007-11-30 15:12:06 +0000 |
| commit | 1983dff4e5840952dd8638b96eee44969c9bede4 (patch) | |
| tree | fb5e796e8760ae1d824d7c4b17c292169c8478e8 /sys/dev | |
| parent | f656099089e4fac40a5564dc238a7c68df9914ea (diff) | |
Notes
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/sound/pci/hda/hdac.c | 33 |
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); |
