• Russell King's avatar
    drm: bridge/dw_hdmi: introduce interfaces to enable and disable audio · b90120a9
    Russell King authored
    iMX6 devices suffer from an errata (ERR005174) where the audio FIFO can
    be emptied while it is partially full, resulting in misalignment of the
    audio samples.
    
    To prevent this, the errata workaround recommends writing N as zero
    until the audio FIFO has been loaded by DMA.  Writing N=0 prevents the
    HDMI bridge from reading from the audio FIFO, effectively disabling
    audio.
    
    This means we need to provide the audio driver with a pair of functions
    to enable/disable audio.  These are dw_hdmi_audio_enable() and
    dw_hdmi_audio_disable().
    
    A spinlock is introduced to ensure that setting the CTS/N values can't
    race, ensuring that the audio driver calling the enable/disable
    functions (which are called in an atomic context) can't race with a
    modeset.
    Tested-by: default avatarYakir Yang <ykk@rock-chips.com>
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    b90120a9
dw_hdmi.c 47.1 KB