• Aaron Plattner's avatar
    ALSA: hda - HDMI: Fix MCP7x audio infoframe checksums · 1f348522
    Aaron Plattner authored
    The MCP7x hardware computes the audio infoframe channel count
    automatically, but requires the audio driver to set the audio
    infoframe checksum manually via the Nv_VERB_SET_Info_Frame_Checksum
    control verb.
    
    When audio starts playing, nvhdmi_8ch_7x_pcm_prepare sets the checksum
    to (0x71 - chan - chanmask).  For example, for 2ch audio, chan == 1
    and chanmask == 0 so the checksum is set to 0x70.  When audio playback
    finishes and the device is closed, nvhdmi_8ch_7x_pcm_close resets the
    channel formats, causing the channel count to revert to 8ch.  Since
    the checksum is not reset, the hardware starts generating audio
    infoframes with invalid checksums.  This causes some displays to blank
    the video.
    
    Fix this by updating the checksum and channel mask when the device is
    closed and also when it is first initialized.  In addition, make sure
    that the channel mask is appropriate for an 8ch infoframe by setting
    it to 0x13 (FL FR LFE FC RL RR RLC RRC).
    Signed-off-by: default avatarAaron Plattner <aplattner@nvidia.com>
    Acked-by: default avatarStephen Warren <swarren@nvidia.com>
    Cc: <stable@kernel.org>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    1f348522
patch_hdmi.c 48.4 KB