diff options
author | mav <mav@FreeBSD.org> | 2012-01-24 17:31:27 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2012-01-24 17:31:27 +0000 |
commit | c44964e7d0b7676037c964221ecd6159e8da2ece (patch) | |
tree | 8e84e2ae4205e85f2e33f7109162a81033b0ba66 | |
parent | 417a8b2daa34522c4330e589966ae4bd37b4bca2 (diff) | |
download | FreeBSD-src-c44964e7d0b7676037c964221ecd6159e8da2ece.zip FreeBSD-src-c44964e7d0b7676037c964221ecd6159e8da2ece.tar.gz |
Enable High Bit Rate (HBR) Encoded Packet Type (EPT), if supported
(HDMI and HBR bits set) and needed (AC3 format used with 8 channels).
This should allow DTS-HD/TrueHD pass-through with rates above 6.144Mbps.
MFC after: 2 months
Sponsored by: iXsystems, Inc.
-rw-r--r-- | sys/dev/sound/pci/hda/hdaa.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/sys/dev/sound/pci/hda/hdaa.c b/sys/dev/sound/pci/hda/hdaa.c index 0e63f8f..46f4704 100644 --- a/sys/dev/sound/pci/hda/hdaa.c +++ b/sys/dev/sound/pci/hda/hdaa.c @@ -1506,6 +1506,21 @@ hdaa_audio_setup(struct hdaa_chan *ch) >> (k * 4)) & 0xf) << 4) | k)); } + /* + * Enable High Bit Rate (HBR) Encoded Packet Type + * (EPT), if supported and needed (8ch data). + */ + if (HDA_PARAM_PIN_CAP_HDMI(wp->wclass.pin.cap) && + HDA_PARAM_PIN_CAP_HBR(wp->wclass.pin.cap)) { + wp->wclass.pin.ctrl &= + ~HDA_CMD_SET_PIN_WIDGET_CTRL_VREF_ENABLE_MASK; + if ((ch->fmt & AFMT_AC3) && (cchn == 8)) + wp->wclass.pin.ctrl |= 0x03; + hda_command(ch->devinfo->dev, + HDA_CMD_SET_PIN_WIDGET_CTRL(0, nid, + wp->wclass.pin.ctrl)); + } + /* Stop audio infoframe transmission. */ hda_command(ch->devinfo->dev, HDA_CMD_SET_HDMI_DIP_INDEX(0, nid, 0x00)); |