drm/bridge: synopsys: dw-hdmi: audio software reset after setup

When playing NLPCM audio, such as AC3, HDMI is pluged in, it's
better to reset audio fifo and sync audio clock by reselect
audio input interface. Or sink may not recognize NLPCM format.

Change-Id: I9112bc9aa1f57041e15b5be563ecb96c44644807
Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
This commit is contained in:
Zheng Yang 2019-01-10 09:22:49 +08:00 committed by Tao Huang
parent 2c300d471c
commit e514e77bdc
2 changed files with 14 additions and 0 deletions

View File

@ -2171,6 +2171,19 @@ static void dw_hdmi_clear_overflow(struct dw_hdmi *hdmi)
val = hdmi_readb(hdmi, HDMI_FC_INVIDCONF);
for (i = 0; i < count; i++)
hdmi_writeb(hdmi, val, HDMI_FC_INVIDCONF);
/* Audio software reset */
if (hdmi->sink_has_audio) {
val = hdmi_readb(hdmi, HDMI_AUD_CONF0);
val &= HDMI_AUD_CONF0_I2S_SELECT_MASK;
hdmi_modb(hdmi, ~val, HDMI_AUD_CONF0_I2S_SELECT_MASK,
HDMI_AUD_CONF0);
udelay(10);
hdmi_modb(hdmi, val | HDMI_AUD_CONF0_SW_RESET,
HDMI_AUD_CONF0_SW_RESET |
HDMI_AUD_CONF0_I2S_SELECT_MASK,
HDMI_AUD_CONF0);
}
}
static void hdmi_enable_overflow_interrupts(struct dw_hdmi *hdmi)

View File

@ -976,6 +976,7 @@ enum {
/* AUD_CONF0 field values */
HDMI_AUD_CONF0_SW_RESET = 0x80,
HDMI_AUD_CONF0_I2S_SELECT_MASK = 0x20,
HDMI_AUD_CONF0_I2S_2CHANNEL_ENABLE = 0x21,
HDMI_AUD_CONF0_I2S_4CHANNEL_ENABLE = 0x23,
HDMI_AUD_CONF0_I2S_6CHANNEL_ENABLE = 0x27,