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: Cheers, Fengguang --- [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@xxxxxxxxxxxxxxx> Signed-off-by: Ma Ling <ling.ma@xxxxxxxxx> --- 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; _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel