Commit 2cae8e02 authored by Russell King's avatar Russell King

drm/i2c: tda998x: avoid race when programming audio

Avoid a race between programming audio and an in-progress mode set.
A mode set is complex, and disables the ability to send infoframes
to the sink, and is disruptive to audio - we have to mute the audio
FIFO while doing a mode set.

If an attempt is made to start up the audio side, we will undo the
audio FIFO mute before the mode set has completed.

Move the lock so that we prevent audio interfering with an in-progress
mode set.
Tested-by: default avatarJon Medhurst <tixy@linaro.org>
Acked-by: default avatarJon Medhurst <tixy@linaro.org>
Tested-by: default avatarJyri Sarha <jsarha@ti.com>
Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
parent 319e658c
......@@ -971,6 +971,8 @@ tda998x_encoder_mode_set(struct drm_encoder *encoder,
div = 3;
}
mutex_lock(&priv->audio_mutex);
/* mute the audio FIFO: */
reg_set(priv, REG_AIP_CNTRL_0, AIP_CNTRL_0_RST_FIFO);
......@@ -1064,8 +1066,6 @@ tda998x_encoder_mode_set(struct drm_encoder *encoder,
/* must be last register set: */
reg_write(priv, REG_TBG_CNTRL_0, 0);
mutex_lock(&priv->audio_mutex);
priv->tmds_clock = adjusted_mode->clock;
/* Only setup the info frames if the sink is HDMI */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment