[alsa-devel] Intel G45 8-Channel LPCM over HDMI
Wang, Zhenyu Z
zhenyu.z.wang at intel.com
Wed Nov 5 06:16:30 CET 2008
On 2008.11.05 12:46:25 +0800, Wu, Fengguang wrote:
> On Tue, Nov 04, 2008 at 10:36:35PM +0800, Alexander Werner wrote:
> > > It's ready now!
> > >
> > > We did a lot of code refactor, testing and bug fixes in the last ten
> > > days, and now it's ready for release :-)
> > >
> > > Note that X.org intel video patches are also necessary for HDMI
> > > sound output.
> > >
> > > However our 3 HDMI monitors have only 2-channel audio support, so
> > > 8-channel LPCM audio may not work for now.
> > >
> > > Thank you,
> > > Fengguang
> > >
> > That's great news! I'll test the patch as soon as my replacement board
> > arrives.
>
> Thank you. The G45 HDMI audio can be enabled by the submitted ALSA
> kernel patch together with this X.org intel driver patch:
>
Looks mostly fine to me. But we can only enable HDMI audio
to one port at one time, so should we handle that case in two HDMI
ports case? And note that as DVI is compatible with HDMI, we've seen
many boards that using HDMI port for DVI output. So we might also check
in that case to not enable audio (recent added xserver xf86MonitorIsHDMI()
API might help here).
> ---
>
> [PATCH] enable HDMI audio output
>
> Set the SDVO_AUDIO_ENABLE bit to enable audio output for
> - integrated HDMI (e.g. G45)
> - SDVO HDMI (e.g. G35)
>
> Signed-off-by: Wu Fengguang <wfg at linux.intel.com>
> Signed-off-by: Ma Ling <ling.ma at intel.com>
> ---
> src/i810_reg.h | 1 +
> src/i830_hdmi.c | 1 +
> src/i830_sdvo.c | 10 ++++++----
> 3 files changed, 8 insertions(+), 4 deletions(-)
>
> --- xf86-video-intel.orig/src/i810_reg.h
> +++ xf86-video-intel/src/i810_reg.h
> @@ -1281,6 +1281,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN
> /** Requird for HDMI operation */
> #define SDVO_NULL_PACKETS_DURING_VSYNC (1 << 9)
> #define SDVO_BORDER_ENABLE (1 << 7)
> +#define SDVO_AUDIO_ENABLE (1 << 6)
> /** New with 965, default is to be set */
> #define SDVO_VSYNC_ACTIVE_HIGH (1 << 4)
> /** New with 965, default is to be set */
> --- xf86-video-intel.orig/src/i830_hdmi.c
> +++ xf86-video-intel/src/i830_hdmi.c
> @@ -75,6 +75,7 @@ i830_hdmi_mode_set(xf86OutputPtr output,
> uint32_t sdvox;
>
> sdvox = SDVO_ENCODING_HDMI |
> + SDVO_AUDIO_ENABLE |
> SDVO_BORDER_ENABLE |
> SDVO_VSYNC_ACTIVE_HIGH |
> SDVO_HSYNC_ACTIVE_HIGH;
> --- xf86-video-intel.orig/src/i830_sdvo.c
> +++ xf86-video-intel/src/i830_sdvo.c
> @@ -1017,7 +1017,7 @@ i830_sdvo_mode_set(xf86OutputPtr output,
> struct i830_sdvo_priv *dev_priv = intel_output->dev_priv;
> xf86CrtcPtr crtc = output->crtc;
> I830CrtcPrivatePtr intel_crtc = crtc->driver_private;
> - uint32_t sdvox;
> + uint32_t sdvox = 0;
> int sdvo_pixel_multiply;
> struct i830_sdvo_in_out_map in_out;
> struct i830_sdvo_dtd input_dtd;
> @@ -1039,8 +1039,10 @@ i830_sdvo_mode_set(xf86OutputPtr output,
> &in_out, sizeof(in_out));
> status = i830_sdvo_read_response(output, NULL, 0);
>
> - if (dev_priv->is_hdmi)
> + if (dev_priv->is_hdmi){
> i830_sdvo_set_avi_infoframe(output, mode);
> + sdvox |= SDVO_AUDIO_ENABLE;
> + }
>
> i830_sdvo_get_dtd_from_mode(&input_dtd, mode);
>
> @@ -1088,11 +1090,11 @@ i830_sdvo_mode_set(xf86OutputPtr output,
>
> /* Set the SDVO control regs. */
> if (IS_I965G(pI830)) {
> - sdvox = SDVO_BORDER_ENABLE |
> + sdvox |= SDVO_BORDER_ENABLE |
> SDVO_VSYNC_ACTIVE_HIGH |
> SDVO_HSYNC_ACTIVE_HIGH;
> } else {
> - sdvox = INREG(dev_priv->output_device);
> + sdvox |= INREG(dev_priv->output_device);
> switch (dev_priv->output_device) {
> case SDVOB:
> sdvox &= SDVOB_PRESERVE_MASK;
--
Open Source Technology Center, Intel ltd.
$gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
Url : http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20081105/f1b7a5a5/attachment.sig
More information about the Alsa-devel
mailing list